From f575c8697ff6ebee247af475c52b31bc4b1cc993 Mon Sep 17 00:00:00 2001
From: unknown <rdramesh2009@gmail.com>
Date: Thu, 7 Jul 2022 16:01:38 -0400
Subject: [PATCH 01/23] env updated

---
 .prettierrc.json                     |   7 +
 .vscode/settings.json                |   4 +
 src/app/login/login.component.html   |  36 +++--
 src/app/login/login.component.ts     | 229 +++++++++------------------
 src/config/Config.ts                 |  24 ---
 src/environments/environment.prod.ts |  12 +-
 src/environments/environment.ts      |  26 ++-
 src/services/cpcq.service.ts         | 171 ++++++++++++--------
 src/services/firstForm.service.ts    |  30 ++--
 src/services/login.sevice.ts         |  93 ++++++-----
 src/services/mainGame.service.ts     |  15 +-
 src/services/preSurvey.service.ts    | 107 +++++++------
 tsconfig.json                        |  39 +++--
 13 files changed, 389 insertions(+), 404 deletions(-)
 create mode 100644 .prettierrc.json
 create mode 100644 .vscode/settings.json
 delete mode 100644 src/config/Config.ts

diff --git a/.prettierrc.json b/.prettierrc.json
new file mode 100644
index 0000000..08d6bb8
--- /dev/null
+++ b/.prettierrc.json
@@ -0,0 +1,7 @@
+{
+  "trailingComma": "es5",
+  "tabWidth": 4,
+  "semi": true,
+  "singleQuote": false,
+  "printWidth": 120
+}
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..409f404
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,4 @@
+{
+    "files.autoSave": "afterDelay",
+    "editor.defaultFormatter": "esbenp.prettier-vscode"
+}
diff --git a/src/app/login/login.component.html b/src/app/login/login.component.html
index 96282d8..ed23c50 100644
--- a/src/app/login/login.component.html
+++ b/src/app/login/login.component.html
@@ -3,32 +3,44 @@
     <div class="container">
         <mat-card class="example-card">
             <div class="mb-4">
-                <h3 style="text-align: center;">Login</h3>
+                <h3 style="text-align: center">Login</h3>
             </div>
             <form [formGroup]="loginForm">
                 <mat-form-field appearance="outline" class="col-lg-12">
                     <mat-label>Enter Username </mat-label>
-                    <input type="email" matInput placeholder="John" formControlName="username" required>
-                    <mat-error *ngIf="loginForm.controls.username.invalid">{{getEmailError()}}</mat-error>
+                    <input type="email" matInput placeholder="John" formControlName="username" required />
+                    <mat-error *ngIf="loginForm.controls.username.invalid">{{ getEmailError() }}</mat-error>
                 </mat-form-field>
                 <mat-form-field appearance="outline" class="col-lg-12">
                     <mat-label>Enter your password</mat-label>
-                    <input matInput formControlName="password" [type]="hide ? 'password' : 'text'" required>
-                    <button mat-icon-button matSuffix (click)="hide = !hide" [attr.aria-label]="'Hide password'" [attr.aria-pressed]="hide">
-                <mat-icon>{{hide ? 'visibility_off' : 'visibility'}}</mat-icon>
-                </button>
-                    <mat-error *ngIf="loginForm.controls.password.invalid">{{getPasswordError()}}</mat-error>
+                    <input matInput formControlName="password" [type]="hide ? 'password' : 'text'" required />
+                    <button
+                        mat-icon-button
+                        matSuffix
+                        (click)="hide = !hide"
+                        [attr.aria-label]="'Hide password'"
+                        [attr.aria-pressed]="hide"
+                    >
+                        <mat-icon>{{ hide ? "visibility_off" : "visibility" }}</mat-icon>
+                    </button>
+                    <mat-error *ngIf="loginForm.controls.password.invalid">{{ getPasswordError() }}</mat-error>
                 </mat-form-field>
 
-                <input type="submit" value="Login" class="btn text-white btn-block btn-primary" style="background-color: #29ABE2; font-size: 20px;" (click)="login()">
+                <input
+                    type="submit"
+                    value="Login"
+                    class="btn text-white btn-block btn-primary"
+                    style="background-color: #29abe2; font-size: 20px"
+                    (click)="login()"
+                />
             </form>
             <small>Don't have an account?<a routerLink="/register">Click here</a></small>
-            <br/>
+            <br />
             <small>Forgot password?<a routerLink="/forgotPassword">Click here</a></small>
-            <br/>
+            <br />
             <small>Login as admin?<a href="https://cpcdpvcu.bhoomee.org/admin">Click here</a></small>
         </mat-card>
     </div>
 </div>
 
-<app-footer></app-footer>
\ No newline at end of file
+<app-footer></app-footer>
diff --git a/src/app/login/login.component.ts b/src/app/login/login.component.ts
index ab98bc0..13975a1 100644
--- a/src/app/login/login.component.ts
+++ b/src/app/login/login.component.ts
@@ -1,167 +1,86 @@
-import { Component, OnInit } from '@angular/core';
-import { FormBuilder, FormGroup, Validators } from '@angular/forms';
-import { MatDialog, MatDialogRef } from '@angular/material/dialog';
-import { Router } from '@angular/router';
-import { map } from 'rxjs/operators';
-import Swal from 'sweetalert2';
-import { Login } from '../../services/login.sevice';
+import { Component, OnInit } from "@angular/core";
+import { FormBuilder, FormGroup, Validators } from "@angular/forms";
+import { Router } from "@angular/router";
+import Swal from "sweetalert2";
+
+import { Login } from "../../services/login.sevice";
+
 @Component({
-  selector: 'app-login',
-  templateUrl: './login.component.html',
-  styleUrls: ['./login.component.css']
+    selector: "app-login",
+    templateUrl: "./login.component.html",
+    styleUrls: ["./login.component.css"],
 })
 export class LoginComponent implements OnInit {
-  loginForm: FormGroup;
-  hide = true;
-  constructor(private fb: FormBuilder, private router: Router, private loginService : Login) { }
+    loginForm: FormGroup;
+    hide = true;
+    constructor(private fb: FormBuilder, private router: Router, private loginService: Login) {}
 
-  ngOnInit(): void {
-    this.loginForm = this.fb.group({
-      username:["",[Validators.required]],
-      password:["",[Validators.required]]
-    })
-    
-  }
-
-  getEmailError(){
-    if(this.loginForm.controls.username.hasError('required')){
-      return 'Required'
-    }else{
-      return ''
+    ngOnInit(): void {
+        this.loginForm = this.fb.group({
+            username: ["", [Validators.required]],
+            password: ["", [Validators.required]],
+        });
     }
-  }
 
-  getPasswordError(){
-    if(this.loginForm.controls.password.hasError('required')){
-      return 'Required'
-    }else{
-      return ''
+    getEmailError() {
+        if (this.loginForm.controls.username.hasError("required")) {
+            return "Required";
+        } else {
+            return "";
+        }
     }
-  }
-
-  
-  login(){ 
-    if(!this.loginForm.valid){
 
-      Swal.fire({
-        text: "Please enter all the fields in the right format.",
-        icon: "error"
-      }).then((res) => {
-      }) 
+    getPasswordError() {
+        if (this.loginForm.controls.password.hasError("required")) {
+            return "Required";
+        } else {
+            return "";
+        }
     }
-    else{
-        this.loginService.login(this.loginForm.value).subscribe((res) => {
-          
-          localStorage.setItem("user",res["token"]);
-          localStorage.setItem("study",res["user"]["study_id"])
-          Swal.fire({
-            text: "Login Successful",
-            icon: "success"
-          }).then((res) => {
-            this.loginService.checkStatus().subscribe((res) => {
 
-              if(res[0] == undefined){
-                this.router.navigateByUrl("/preSurvey")
-              }
-              else{
-                if(res[0]["postsurveystatus"] == true){
-                  this.router.navigateByUrl("/final")
-                }
-                else if(res[0]["scoresstatus"] == true){
-                  this.router.navigateByUrl("/score")
-                }
-                else if(res[0]["finalfeedbackstatus"] == true){
-                  this.router.navigateByUrl("/result")
-                }
-                else if(res[0]["cpcqstatus"] == true){
-                  this.router.navigateByUrl("/finalFeedback")
+    login() {
+        if (this.loginForm.invalid) {
+            Swal.fire({
+                text: "Please enter all the fields in the right format.",
+                icon: "error",
+            }).then((res) => {});
+        } else {
+            this.loginService.login(this.loginForm.value).subscribe(
+                (res) => {
+                    localStorage.setItem("user", res["token"]);
+                    localStorage.setItem("study", res["user"]["study_id"]);
+                    Swal.fire({
+                        text: "Login Successful",
+                        icon: "success",
+                    }).then((res) => {
+                        this.loginService.checkStatus().subscribe((res) => {
+                            if (res[0] == undefined) {
+                                this.router.navigateByUrl("/preSurvey");
+                            } else {
+                                if (res[0]["postsurveystatus"] == true) {
+                                    this.router.navigateByUrl("/final");
+                                } else if (res[0]["scoresstatus"] == true) {
+                                    this.router.navigateByUrl("/score");
+                                } else if (res[0]["finalfeedbackstatus"] == true) {
+                                    this.router.navigateByUrl("/result");
+                                } else if (res[0]["cpcqstatus"] == true) {
+                                    this.router.navigateByUrl("/finalFeedback");
+                                } else if (res[0]["responsesstatus"] == true) {
+                                    this.router.navigateByUrl("/unpacking");
+                                } else if (res[0]["presurveystatus"] == true) {
+                                    this.router.navigateByUrl("/dashboard");
+                                }
+                            }
+                        });
+                    });
+                },
+                (err) => {
+                    Swal.fire({
+                        text: "Wrong credentials",
+                        icon: "error",
+                    }).then((res) => {});
                 }
-                else if(res[0]["responsesstatus"] == true){
-                  this.router.navigateByUrl("/unpacking")
-                }
-                else if(res[0]["presurveystatus"] == true){
-                  this.router.navigateByUrl("/dashboard")
-                }
-              }
-            })
-          }) 
-        },(err) => {
-          
-          Swal.fire({
-            text: "Wrong credentials",
-            icon: "error"
-          }).then((res) => {
-          }) 
-        })
-
-      // this.loginService.login(this.loginForm.value).subscribe((res) => {
-      //   
-      //   var arr = [];
-      //   var flag = false;
-      //   Object.keys(res).map(function(key){
-      //     arr.push({[key]:res[key]})
-      //   }) 
-      //   
-      //   for(var i = 0 ; i<arr.length;i++){
-      //     
-      //     if((this.loginForm.value["username"] == arr[i][i]["email"]) && (this.loginForm.value["password"] == arr[i][i]["password"])){
-      //       flag = true;
-      //       Swal.fire({
-      //         text: "Login Successful",
-      //         icon: "success"
-      //       }).then((res) => {
-      //         localStorage.setItem("user","test1");
-      //         this.router.navigateByUrl("/preSurvey")
-      //       }) 
-      //     }
-      //   }
-      //   if(!flag){
-      //     Swal.fire({
-      //       text: "Wrong credentials",
-      //       icon: "error"
-      //     }).then((res) => {
-      //     }) 
-      //   }
-      // },(err) =>{
-
-      // })
-  }
-    // this.loginService.login(this.loginForm.value).subscribe((res) => {
-      // var arr = [];
-      // Object.keys(res).map(function(key){
-      //   arr.push({[key]:res[key]})
-      //   return arr
-      // }) 
-    //   var flag = true;
-    //   for(var i = 0; i<arr.length;i++){
-    //     
-    //     if((this.loginForm.value["username"] == arr[i][`${i}`]['username']) && (this.loginForm.value["password"] == arr[i][`${i}`]['password'])){
-    //       flag = false;
-    //       Swal.fire({
-    //         text: "Login Successful",
-    //         icon: "success"
-    //       }).then((res) => {
-    //         localStorage.setItem("user","test1");
-    //         this.router.navigateByUrl("/preSurvey")
-    //       }) 
-    //     }
-    //   }
-    //   if(flag){
-    //     Swal.fire({
-    //       text: "Wrong credentials",
-    //       icon: "error"
-    //     });
-    //   }
-    //   // this.router.navigateByUrl("/consent");
-    //   // localStorage.setItem("user", res["token"]);
-    //   // localStorage.setItem("exID",res["user"]["id"])
-    // },(err) => {
-    //   
-    //   Swal.fire({
-    //     text: err.error["message"],
-    //     icon: "error"
-    //   });
-    // })
-  }
-
+            );
+        }
+    }
 }
diff --git a/src/config/Config.ts b/src/config/Config.ts
deleted file mode 100644
index bf4328b..0000000
--- a/src/config/Config.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-export const Config = {
-    // apiUrl: "http://127.0.0.1:8000/api/",
-    // registerUrl: "http://127.0.0.1:8000/api/register",
-    // loginUrl: "http://127.0.0.1:8000/api/login",
-    // logoutUrl :"http://127.0.0.1:8000/api/logout",
-    // userUrl: "http://127.0.0.1:8000/api/user",
-    // cqcqUrl : "http://127.0.0.1:8000/api/cpcq",
-    // profileUrl: "http://127.0.0.1:8000/api/profile/",
-    // preSurveyUrl: "http://127.0.0.1:8000/api/preSurvey/",
-    // postSurveyUrl: "http://127.0.0.1:8000/api/postSurvey/",
-
-
-    apiUrl: "https://cpcdpvcu.bhoomee.org/api/",
-    registerUrl: "https://cpcdpvcu.bhoomee.org/api/register",
-    loginUrl: "https://cpcdpvcu.bhoomee.org/api/login",
-    logoutUrl :"https://cpcdpvcu.bhoomee.org/api/logout",
-    userUrl: "https://cpcdpvcu.bhoomee.org/api/user",
-    cqcqUrl : "https://cpcdpvcu.bhoomee.org/api/cpcq",
-    profileUrl: "https://cpcdpvcu.bhoomee.org/api/profile/",
-    preSurveyUrl: "https://cpcdpvcu.bhoomee.org/api/preSurvey/",
-    postSurveyUrl: "https://cpcdpvcu.bhoomee.org/api/postSurvey/",
-
-}
-
diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts
index 3612073..51e36f9 100644
--- a/src/environments/environment.prod.ts
+++ b/src/environments/environment.prod.ts
@@ -1,3 +1,13 @@
+const backendBaseUrl = "https://cpcdpvcu.bhoomee.org";
+const apiUrl = `${backendBaseUrl}/api`;
 export const environment = {
-  production: true
+    production: true,
+    registerUrl: `${apiUrl}/register`,
+    loginUrl: `${apiUrl}/login`,
+    logoutUrl: `${apiUrl}/logout`,
+    userUrl: `${apiUrl}/user`,
+    cqcqUrl: `${apiUrl}/cpcq`,
+    profileUrl: `${apiUrl}/profile`,
+    preSurveyUrl: `${apiUrl}/preSurvey`,
+    postSurveyUrl: `${apiUrl}/postSurvey`,
 };
diff --git a/src/environments/environment.ts b/src/environments/environment.ts
index 7b4f817..fb5e27f 100644
--- a/src/environments/environment.ts
+++ b/src/environments/environment.ts
@@ -1,16 +1,14 @@
-// This file can be replaced during build by using the `fileReplacements` array.
-// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.
-// The list of file replacements can be found in `angular.json`.
-
+const backendBaseUrl = "http://127.0.0.1:8000";
+const apiUrl = `${backendBaseUrl}/api`;
 export const environment = {
-  production: false
+    production: false,
+    apiUrl: apiUrl,
+    registerUrl: `${apiUrl}/register`,
+    loginUrl: `${apiUrl}/login`,
+    logoutUrl: `${apiUrl}/logout`,
+    userUrl: `${apiUrl}/user`,
+    cqcqUrl: `${apiUrl}/cpcq`,
+    profileUrl: `${apiUrl}/profile`,
+    preSurveyUrl: `${apiUrl}/preSurvey`,
+    postSurveyUrl: `${apiUrl}/postSurvey`,
 };
-
-/*
- * For easier debugging in development mode, you can import the following file
- * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.
- *
- * This import should be commented out in production mode because it will have a negative impact
- * on performance if an error is thrown.
- */
-// import 'zone.js/dist/zone-error';  // Included with Angular CLI.
diff --git a/src/services/cpcq.service.ts b/src/services/cpcq.service.ts
index c8a9016..98d8d4d 100644
--- a/src/services/cpcq.service.ts
+++ b/src/services/cpcq.service.ts
@@ -1,108 +1,141 @@
-import { Injectable } from '@angular/core';
-import { HttpClient, HttpErrorResponse } from '@angular/common/http'
-import {Config} from '../config/Config';
+import { Injectable } from "@angular/core";
+import { HttpClient } from "@angular/common/http";
+import { environment } from "src/environments/environment";
 
 @Injectable({
-    providedIn: 'root'
+    providedIn: "root",
 })
 export class CPCQService {
-    baseUri = Config.apiUrl;
-    cpcqUrl = Config.cqcqUrl;
+    baseUri = environment.apiUrl;
+    cpcqUrl = environment.cqcqUrl;
 
     constructor(private http: HttpClient) {}
 
-    attitudeData(){
-        return this.http.get(`${this.baseUri}`+'attitude/',{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }})
+    attitudeData() {
+        return this.http.get(`${this.baseUri}/attitude`, {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
 
-    empathyData(){
-        return this.http.get(`${this.baseUri}`+'empathy/',{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }})
+    empathyData() {
+        return this.http.get(`${this.baseUri}/empathy`, {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
 
-    policyData(){
-        return this.http.get(`${this.baseUri}`+'policy/',{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }})
+    policyData() {
+        return this.http.get(`${this.baseUri}/policy`, {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
 
-    professionalismData(){
-        return this.http.get(`${this.baseUri}`+'professionalism/',{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }})
+    professionalismData() {
+        return this.http.get(`${this.baseUri}/professionalism`, {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
 
-    teachingData(){
-        return this.http.get(`${this.baseUri}`+'teaching/',{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }})
+    teachingData() {
+        return this.http.get(`${this.baseUri}/teaching`, {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
 
-    changeCPCQStatus(){
-        return this.http.post(`${this.cpcqUrl}`+'/',{"choices" : "Finished All Forms"},{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }});
+    changeCPCQStatus() {
+        return this.http.post(
+            `${this.cpcqUrl}`,
+            { choices: "Finished All Forms" },
+            {
+                headers: {
+                    Authorization: "Token " + localStorage.getItem("user"),
+                },
+            }
+        );
     }
 
-    getCPCQStatus(){
-        return this.http.get(`${this.cpcqUrl}`,{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }});
+    getCPCQStatus() {
+        return this.http.get(`${this.cpcqUrl}`, {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
 
-    postFormData(data){
-        return this.http.post(`${this.baseUri}`+'responses/',data,{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }});
+    postFormData(data) {
+        return this.http.post(`${this.baseUri}/responses`, data, {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
 
-    postFeedbackForm(data){
-        return this.http.post(`${this.baseUri}`+'finalFeedback/',data,{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }});
+    postFeedbackForm(data) {
+        return this.http.post(`${this.baseUri}/finalFeedback`, data, {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
 
-    getFormData(){
-        return this.http.get(`${this.baseUri}`+'responses/',{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }})
+    getFormData() {
+        return this.http.get(`${this.baseUri}/responses`, {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
 
-    getResponsesData(){
-        return this.http.get(`${this.baseUri}`+'responses_all/',{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }})
-
+    getResponsesData() {
+        return this.http.get(`${this.baseUri}/responses_all/`, {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
 
-    postUnpacking(data){
-        return this.http.post(`${this.baseUri}`+'cpcq_response/',data,{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }});
+    postUnpacking(data) {
+        return this.http.post(`${this.baseUri}/cpcq_response`, data, {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
 
     getScoreInfo() {
-        
-        
-        return this.http.get(`${this.baseUri}`+'cpcq_response/',{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }})
+        return this.http.get(`${this.baseUri}/cpcq_response`, {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
 
     getScoreVisualization() {
-        return this.http.get(`${this.baseUri}`+'graphs/',{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }})
+        return this.http.get(`${this.baseUri}/graphs`, {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
 
-    patchStatus(data){
-        
-        return this.http.patch(`${this.baseUri}status/?value=${data}`,{},{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }})
+    patchStatus(data) {
+        return this.http.patch(
+            `${this.baseUri}/status/?value=${data}`,
+            {},
+            {
+                headers: {
+                    Authorization: "Token " + localStorage.getItem("user"),
+                },
+            }
+        );
     }
-    
 }
diff --git a/src/services/firstForm.service.ts b/src/services/firstForm.service.ts
index ebeea8c..fed7de9 100644
--- a/src/services/firstForm.service.ts
+++ b/src/services/firstForm.service.ts
@@ -1,31 +1,31 @@
-import { Injectable } from '@angular/core';
-import { HttpClient, HttpErrorResponse } from '@angular/common/http'
-import {Config} from '../config/Config';
+import { Injectable } from "@angular/core";
+import { HttpClient } from "@angular/common/http";
+import { environment } from "src/environments/environment";
 
 @Injectable({
-    providedIn: 'root'
+    providedIn: "root",
 })
 export class FirstForm {
-    baseUri = Config.loginUrl;
-    responseUrl = Config.loginUrl;
+    baseUri = environment.loginUrl;
+    responseUrl = environment.loginUrl;
 
     constructor(private http: HttpClient) {}
 
-    firstForm(){
-        return this.http.get(`${this.baseUri}`, { 
+    firstForm() {
+        return this.http.get(`${this.baseUri}`, {
             headers: {
                 "Content-Type": "application/json",
-                "authorization": 'Token ' + localStorage.getItem("user")
-            }
-        })
+                authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
 
-    submitResponse(data){
-        return this.http.post(`${this.responseUrl}`,data,{
+    submitResponse(data) {
+        return this.http.post(`${this.responseUrl}`, data, {
             headers: {
                 "Content-Type": "application/json",
-                "authorization": 'Token ' + localStorage.getItem("user")
-            }
+                authorization: "Token " + localStorage.getItem("user"),
+            },
         });
     }
 }
diff --git a/src/services/login.sevice.ts b/src/services/login.sevice.ts
index f64a0f5..0aa8f2d 100644
--- a/src/services/login.sevice.ts
+++ b/src/services/login.sevice.ts
@@ -1,61 +1,76 @@
-import { Injectable } from '@angular/core';
-import { HttpClient, HttpErrorResponse } from '@angular/common/http'
-import {Config} from '../config/Config';
+import { HttpClient } from "@angular/common/http";
+import { Injectable } from "@angular/core";
+import { environment } from "src/environments/environment";
 
 @Injectable({
-    providedIn: 'root'
+    providedIn: "root",
 })
 export class Login {
-    loginUrl = Config.loginUrl;
-    registerUrl = Config.registerUrl;
-    logoutUrl = Config.logoutUrl;
-    baseUrl = Config.apiUrl;
+    loginUrl = environment.loginUrl;
+    registerUrl = environment.registerUrl;
+    logoutUrl = environment.logoutUrl;
+    baseUrl = environment.apiUrl;
 
     constructor(private http: HttpClient) {}
 
-    login(data){
-        return this.http.post(`${this.loginUrl}`,data,{headers: {
-            "Content-Type": "application/json"
-        }})
+    login(data: any) {
+        return this.http.post(`${this.loginUrl}`, data, {
+            headers: {
+                "Content-Type": "application/json",
+            },
+        });
     }
 
-    forgotpassword(data){
-        return this.http.patch(`${this.baseUrl}`+'password_change/',data,{headers: {
-            "Content-Type": "application/json"
-        }})
+    forgotpassword(data) {
+        return this.http.patch(`${this.baseUrl}/password_change`, data, {
+            headers: {
+                "Content-Type": "application/json",
+            },
+        });
     }
 
-    register(data){
-        
-        return this.http.post(`${this.registerUrl}`,data,{headers: {
-            "Content-Type": "application/json"
-        }})
+    register(data) {
+        return this.http.post(`${this.registerUrl}`, data, {
+            headers: {
+                "Content-Type": "application/json",
+            },
+        });
     }
 
-    changePassword(data){
-        
-        return this.http.patch(`${this.baseUrl}`+"password_change/",data,{headers: {
-            "Content-Type": "application/json",
-            "Authorization":"Token " + localStorage.getItem("user")
-        }})
+    changePassword(data) {
+        return this.http.patch(`${this.baseUrl}/password_change/`, data, {
+            headers: {
+                "Content-Type": "application/json",
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
 
-    logout(){
-        return this.http.post(`${this.logoutUrl}`,{},{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }})
+    logout() {
+        return this.http.post(
+            `${this.logoutUrl}`,
+            {},
+            {
+                headers: {
+                    Authorization: "Token " + localStorage.getItem("user"),
+                },
+            }
+        );
     }
 
     checkStatus() {
-        return this.http.get(`${this.baseUrl}`+'status/',{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }})
+        return this.http.get(`${this.baseUrl}/status`, {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
 
-    patchStatus(data){
-        return this.http.patch(`${this.baseUrl}` +'status/',data,{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }})
+    patchStatus(data) {
+        return this.http.patch(`${this.baseUrl}/status`, data, {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
-    
 }
diff --git a/src/services/mainGame.service.ts b/src/services/mainGame.service.ts
index 65d1675..1fcb43e 100644
--- a/src/services/mainGame.service.ts
+++ b/src/services/mainGame.service.ts
@@ -1,17 +1,16 @@
-import { Injectable } from '@angular/core';
-import { HttpClient, HttpErrorResponse } from '@angular/common/http'
-import {Config} from '../config/Config';
+import { Injectable } from "@angular/core";
+import { HttpClient } from "@angular/common/http";
+import { environment } from "src/environments/environment";
 
 @Injectable({
-    providedIn: 'root'
+    providedIn: "root",
 })
 export class MainGame {
-    baseUri = Config.loginUrl;
+    baseUri = environment.loginUrl;
 
     constructor(private http: HttpClient) {}
 
-    mainGame(data){
-        return this.http.post(`${this.baseUri}`, data)
+    mainGame(data) {
+        return this.http.post(`${this.baseUri}`, data);
     }
-    
 }
diff --git a/src/services/preSurvey.service.ts b/src/services/preSurvey.service.ts
index ffc3558..0ca2111 100644
--- a/src/services/preSurvey.service.ts
+++ b/src/services/preSurvey.service.ts
@@ -1,71 +1,86 @@
-import { Injectable } from '@angular/core';
-import { HttpClient, HttpErrorResponse } from '@angular/common/http'
-import {Config} from '../config/Config';
+import { Injectable } from "@angular/core";
+import { HttpClient } from "@angular/common/http";
+import { environment } from "src/environments/environment";
 
 @Injectable({
-    providedIn: 'root'
+    providedIn: "root",
 })
 export class PreSurveyService {
-    baseUrl = Config.apiUrl;
-    preSurveys = Config.preSurveyUrl;
-    profileUrl = Config.profileUrl;
-    userUrl = Config.userUrl;
-    postSurveyUrl = Config.postSurveyUrl
+    baseUrl = environment.apiUrl;
+    preSurveys = environment.preSurveyUrl;
+    profileUrl = environment.profileUrl;
+    userUrl = environment.userUrl;
+    postSurveyUrl = environment.postSurveyUrl;
 
     constructor(private http: HttpClient) {}
-    submitForm(data){
-        return this.http.post(`${this.preSurveys}`,data,{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }})
+    submitForm(data) {
+        return this.http.post(`${this.preSurveys}`, data, {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
-    postProfile(data){
-        return this.http.patch(`${this.profileUrl}`,data,{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }})
+    postProfile(data) {
+        return this.http.patch(`${this.profileUrl}`, data, {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
 
-    getPreSurveyAnswer(){
-        return this.http.get(`${this.preSurveys}`,{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }})
+    getPreSurveyAnswer() {
+        return this.http.get(`${this.preSurveys}`, {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
 
-    profileData(){
-        return this.http.get(`${this.profileUrl}`,{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }})
-    }
-    
-    userData(){
-        return this.http.get(`${this.userUrl}`,{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }})
+    profileData() {
+        return this.http.get(`${this.profileUrl}`, {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
 
-    submitPostSurvey(data){
-        return this.http.post(`${this.postSurveyUrl}`,data,{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }})
+    userData() {
+        return this.http.get(`${this.userUrl}`, {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
+    }
 
+    submitPostSurvey(data) {
+        return this.http.post(`${this.postSurveyUrl}`, data, {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
 
     getFormData() {
-        return this.http.get(`${this.userUrl}`,{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }})
+        return this.http.get(`${this.userUrl}`, {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
 
     getFormQuestions() {
-        return this.http.get(`${this.baseUrl}`+'presurvey_questions/',{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }})
+        return this.http.get(`${this.baseUrl}` + "presurvey_questions/", {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
 
     getPostSurveyFormQuestions() {
-        return this.http.get(`${this.baseUrl}`+'postsurvey_questions/',{headers: {
-            "Authorization":"Token " + localStorage.getItem("user")
-        }})
+        return this.http.get(`${this.baseUrl}` + "postsurvey_questions/", {
+            headers: {
+                Authorization: "Token " + localStorage.getItem("user"),
+            },
+        });
     }
-
-    
 }
diff --git a/tsconfig.json b/tsconfig.json
index 8c4ef3b..253b335 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,23 +1,20 @@
 {
-  "compileOnSave": false,
-  "compilerOptions": {
-    "baseUrl": "./",
-    "outDir": "./dist/out-tsc",
-    "sourceMap": true,
-    "declaration": false,
-    "downlevelIteration": true,
-    "experimentalDecorators": true,
-    "module": "esnext",
-    "moduleResolution": "node",
-    "importHelpers": true,
-    "target": "es2015",
-    "lib": [
-      "es2018",
-      "dom"
-    ]
-  },
-  "angularCompilerOptions": {
-    "fullTemplateTypeCheck": true,
-    "strictInjectionParameters": true
-  }
+    "compileOnSave": false,
+    "compilerOptions": {
+        "baseUrl": "./",
+        "outDir": "./dist/out-tsc",
+        "sourceMap": true,
+        "declaration": false,
+        "downlevelIteration": true,
+        "experimentalDecorators": true,
+        "module": "esnext",
+        "moduleResolution": "node",
+        "importHelpers": true,
+        "target": "es2015",
+        "lib": ["es2018", "dom"]
+    },
+    "angularCompilerOptions": {
+        "fullTemplateTypeCheck": true,
+        "strictInjectionParameters": true
+    }
 }
-- 
GitLab


From fac26e0a019fe55f0b596bb571d766adaa2dede2 Mon Sep 17 00:00:00 2001
From: ramesh <rdramesh2009@gmail.com>
Date: Thu, 7 Jul 2022 17:14:49 -0400
Subject: [PATCH 02/23] environment file refactored

---
 .../dashboard-dialo.component.ts              | 65 ++++++++++---------
 src/environments/environment.ts               |  3 +-
 2 files changed, 37 insertions(+), 31 deletions(-)

diff --git a/src/app/dashboard/dashboard-dialo/dashboard-dialo.component.ts b/src/app/dashboard/dashboard-dialo/dashboard-dialo.component.ts
index dd2c11d..90feb2b 100644
--- a/src/app/dashboard/dashboard-dialo/dashboard-dialo.component.ts
+++ b/src/app/dashboard/dashboard-dialo/dashboard-dialo.component.ts
@@ -1,39 +1,44 @@
-import { Component, OnInit,Inject} from '@angular/core';
-import {MatDialog,MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';
-import Swal from 'sweetalert2';
-import {PreSurveyService} from '../../../services/preSurvey.service';
+import { Component, OnInit, Inject } from "@angular/core";
+import { MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dialog";
+import Swal from "sweetalert2";
+import { PreSurveyService } from "../../../services/preSurvey.service";
 
 export interface DialogData {
-  animal;
+    animal;
 }
 @Component({
-  selector: 'app-dashboard-dialo',
-  templateUrl: './dashboard-dialo.component.html',
-  styleUrls: ['./dashboard-dialo.component.css']
+    selector: "app-dashboard-dialo",
+    templateUrl: "./dashboard-dialo.component.html",
+    styleUrls: ["./dashboard-dialo.component.css"],
 })
 export class DashboardDialoComponent implements OnInit {
+    arr1 = [
+        "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar1.png?alt=media&token=43a091f7-a828-4f7b-9478-991de35a5f5c",
+        "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar2.png?alt=media&token=f2020833-12c5-4597-9b1c-b723c988d4d5",
+        "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar3.png?alt=media&token=66de0c48-1d0c-4511-ba34-94e6d6fdcf9a",
+        "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar4.jpeg?alt=media&token=2c1f1544-d5ee-4f2b-9bd8-c08b5cb7a1b6",
+        "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar5.png?alt=media&token=4ccb76eb-871b-4c6c-9390-f89023c88bde",
+        "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar6.png?alt=media&token=809414a2-fba6-4815-aae6-775bcb5c7a83",
+        "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar7.png?alt=media&token=405e6677-93d5-4f3b-9c84-fe65a4ddb0a7",
+        "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/dog.png?alt=media&token=4bf29ae2-7ddd-4eab-bb0e-749f885bda0b",
+    ];
+    constructor(
+        public dialogRef: MatDialogRef<DashboardDialoComponent>,
+        public profileService: PreSurveyService,
+        @Inject(MAT_DIALOG_DATA) public data: DialogData
+    ) {}
 
-  arr1 = ['https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar1.png?alt=media&token=43a091f7-a828-4f7b-9478-991de35a5f5c','https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar2.png?alt=media&token=f2020833-12c5-4597-9b1c-b723c988d4d5','https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar3.png?alt=media&token=66de0c48-1d0c-4511-ba34-94e6d6fdcf9a','https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar4.jpeg?alt=media&token=2c1f1544-d5ee-4f2b-9bd8-c08b5cb7a1b6','https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar5.png?alt=media&token=4ccb76eb-871b-4c6c-9390-f89023c88bde','https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar6.png?alt=media&token=809414a2-fba6-4815-aae6-775bcb5c7a83','https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar7.png?alt=media&token=405e6677-93d5-4f3b-9c84-fe65a4ddb0a7','https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/dog.png?alt=media&token=4bf29ae2-7ddd-4eab-bb0e-749f885bda0b'];
-  constructor(
-    public dialogRef: MatDialogRef<DashboardDialoComponent>,
-    public profileService: PreSurveyService,
-    @Inject(MAT_DIALOG_DATA) public data: DialogData) {
-      
-    }
-
-  avatarClick(avatar){
-    // 
-    this.data.animal = avatar;
-    this.profileService.postProfile({"photo_profile" : avatar, "id": this.data["userID"]}).subscribe((res) => {
-      Swal.fire({
-        text: "Profile Picture Changed",
-        icon: "success"
-      }).then((res) => {})
-    })
-    
-    this.dialogRef.close(avatar);
-  }
-  ngOnInit(): void {
-  }
+    avatarClick(avatar) {
+        //
+        this.data.animal = avatar;
+        this.profileService.postProfile({ photo_profile: avatar, id: this.data["userID"] }).subscribe((res) => {
+            Swal.fire({
+                text: "Profile Picture Changed",
+                icon: "success",
+            }).then((res) => {});
+        });
 
+        this.dialogRef.close(avatar);
+    }
+    ngOnInit(): void {}
 }
diff --git a/src/environments/environment.ts b/src/environments/environment.ts
index fb5e27f..741274e 100644
--- a/src/environments/environment.ts
+++ b/src/environments/environment.ts
@@ -1,4 +1,5 @@
-const backendBaseUrl = "http://127.0.0.1:8000";
+// const backendBaseUrl = "http://127.0.0.1:8000";
+const backendBaseUrl = "https://cpcdpvcu.bhoomee.org";
 const apiUrl = `${backendBaseUrl}/api`;
 export const environment = {
     production: false,
-- 
GitLab


From 95080791f3d58d9ce88b896ca1218193280866ff Mon Sep 17 00:00:00 2001
From: ramesh <rdramesh2009@gmail.com>
Date: Thu, 7 Jul 2022 18:42:52 -0400
Subject: [PATCH 03/23] profile picture update

---
 package-lock.json                             | 19935 +---------------
 package.json                                  |     1 +
 src/app/app.module.ts                         |   293 +-
 src/app/header/header.component.css           |    23 +-
 src/app/header/header.component.html          |   114 +-
 src/app/header/header.component.spec.ts       |    37 +-
 src/app/header/header.component.ts            |   119 +-
 src/app/home-page/home-page.component.css     |    75 +-
 src/app/home-page/home-page.component.html    |    26 +-
 src/app/home-page/home-page.component.spec.ts |    37 +-
 src/app/home-page/home-page.component.ts      |    36 +-
 src/environments/environment.ts               |     8 +-
 12 files changed, 508 insertions(+), 20196 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 8087ef1..3324953 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,19806 +1,8 @@
 {
   "name": "i-matt-fe",
   "version": "0.0.0",
-  "lockfileVersion": 2,
+  "lockfileVersion": 1,
   "requires": true,
-  "packages": {
-    "": {
-      "name": "i-matt-fe",
-      "version": "0.0.0",
-      "dependencies": {
-        "@angular/animations": "~9.0.7",
-        "@angular/cdk": "^11.1.0",
-        "@angular/common": "~9.0.7",
-        "@angular/compiler": "~9.0.7",
-        "@angular/core": "~9.0.7",
-        "@angular/fire": "^6.1.4",
-        "@angular/forms": "~9.0.7",
-        "@angular/material": "^11.1.0",
-        "@angular/platform-browser": "~9.0.7",
-        "@angular/platform-browser-dynamic": "~9.0.7",
-        "@angular/router": "~9.0.7",
-        "angular-walkthrough": "^0.8.2",
-        "apexcharts": "^3.24.0",
-        "bootstrap": "^4.6.0",
-        "firebase": "^7.0 || ^8.0",
-        "lottie-web": "^5.7.6",
-        "ng-apexcharts": "^1.5.7",
-        "ng-waveform": "^0.2.1",
-        "ng2-pdf-viewer": "^6.4.1",
-        "ngx-countdown": "^11.0.1",
-        "ngx-lottie": "^6.4.0",
-        "ngx-walkthrough": "^0.3.2",
-        "recordrtc": "^5.6.1",
-        "rxjs": "~6.5.4",
-        "sweetalert2": "^10.13.3",
-        "tslib": "^1.14.1",
-        "wavesurfer": "^1.3.4",
-        "zone.js": "~0.10.2"
-      },
-      "devDependencies": {
-        "@angular-devkit/architect": ">= 0.900 < 0.1200",
-        "@angular-devkit/build-angular": "~0.900.7",
-        "@angular/cli": "~9.0.7",
-        "@angular/compiler-cli": "~9.0.7",
-        "@angular/language-service": "~9.0.7",
-        "@types/jasmine": "~3.5.0",
-        "@types/jasminewd2": "~2.0.3",
-        "@types/node": "^12.11.1",
-        "codelyzer": "^5.1.2",
-        "firebase-tools": "^8.0.0",
-        "fuzzy": "^0.1.3",
-        "inquirer": "^6.2.2",
-        "inquirer-autocomplete-prompt": "^1.0.1",
-        "jasmine-core": "~3.5.0",
-        "jasmine-spec-reporter": "~4.2.1",
-        "karma": "~4.3.0",
-        "karma-chrome-launcher": "~3.1.0",
-        "karma-coverage-istanbul-reporter": "~2.1.0",
-        "karma-jasmine": "~2.0.1",
-        "karma-jasmine-html-reporter": "^1.4.2",
-        "open": "^7.0.3",
-        "protractor": "~5.4.3",
-        "ts-node": "~8.3.0",
-        "tslint": "~5.18.0",
-        "typescript": "~3.7.5"
-      }
-    },
-    "node_modules/@angular-devkit/architect": {
-      "version": "0.900.7",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.7.tgz",
-      "integrity": "sha512-hfiTVYc72kzbXrzK4tea6jnTDnSKpE1D+vEptBXN2tdXEVNEAQI5Qm5L1zVDtt16UdqoUTUypIgUc9jcNH1mUQ==",
-      "dev": true,
-      "dependencies": {
-        "@angular-devkit/core": "9.0.7",
-        "rxjs": "6.5.3"
-      },
-      "engines": {
-        "node": ">= 10.13.0",
-        "npm": ">= 6.11.0",
-        "yarn": ">= 1.13.0"
-      }
-    },
-    "node_modules/@angular-devkit/architect/node_modules/rxjs": {
-      "version": "6.5.3",
-      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
-      "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
-      "dev": true,
-      "dependencies": {
-        "tslib": "^1.9.0"
-      },
-      "engines": {
-        "npm": ">=2.0.0"
-      }
-    },
-    "node_modules/@angular-devkit/build-angular": {
-      "version": "0.900.7",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.900.7.tgz",
-      "integrity": "sha512-Yv2y3OEaYEd0fE0pKvtqBpmkQYs9xJws7thHnJYCwIfYO55RfolYsXkJgAXke/4NPLrD3EsIDqoPxF7l+uw2/Q==",
-      "dev": true,
-      "dependencies": {
-        "@angular-devkit/architect": "0.900.7",
-        "@angular-devkit/build-optimizer": "0.900.7",
-        "@angular-devkit/build-webpack": "0.900.7",
-        "@angular-devkit/core": "9.0.7",
-        "@babel/core": "7.7.7",
-        "@babel/generator": "7.7.7",
-        "@babel/preset-env": "7.7.7",
-        "@ngtools/webpack": "9.0.7",
-        "ajv": "6.10.2",
-        "autoprefixer": "9.7.1",
-        "babel-loader": "8.0.6",
-        "browserslist": "^4.9.1",
-        "cacache": "13.0.1",
-        "caniuse-lite": "^1.0.30001032",
-        "circular-dependency-plugin": "5.2.0",
-        "copy-webpack-plugin": "5.1.1",
-        "core-js": "3.6.4",
-        "coverage-istanbul-loader": "2.0.3",
-        "cssnano": "4.1.10",
-        "file-loader": "4.2.0",
-        "find-cache-dir": "3.0.0",
-        "glob": "7.1.5",
-        "jest-worker": "24.9.0",
-        "karma-source-map-support": "1.4.0",
-        "less": "3.10.3",
-        "less-loader": "5.0.0",
-        "license-webpack-plugin": "2.1.3",
-        "loader-utils": "1.2.3",
-        "magic-string": "0.25.4",
-        "mini-css-extract-plugin": "0.8.0",
-        "minimatch": "3.0.4",
-        "open": "7.0.0",
-        "parse5": "4.0.0",
-        "postcss": "7.0.21",
-        "postcss-import": "12.0.1",
-        "postcss-loader": "3.0.0",
-        "raw-loader": "3.1.0",
-        "regenerator-runtime": "0.13.3",
-        "rimraf": "3.0.0",
-        "rollup": "1.25.2",
-        "rxjs": "6.5.3",
-        "sass": "1.23.3",
-        "sass-loader": "8.0.0",
-        "semver": "6.3.0",
-        "source-map": "0.7.3",
-        "source-map-loader": "0.2.4",
-        "source-map-support": "0.5.16",
-        "speed-measure-webpack-plugin": "1.3.1",
-        "style-loader": "1.0.0",
-        "stylus": "0.54.7",
-        "stylus-loader": "3.0.2",
-        "terser": "4.5.1",
-        "terser-webpack-plugin": "2.3.3",
-        "tree-kill": "1.2.2",
-        "webpack": "4.41.2",
-        "webpack-dev-middleware": "3.7.2",
-        "webpack-dev-server": "3.9.0",
-        "webpack-merge": "4.2.2",
-        "webpack-sources": "1.4.3",
-        "webpack-subresource-integrity": "1.3.4",
-        "worker-plugin": "3.2.0"
-      },
-      "engines": {
-        "node": ">= 10.13.0",
-        "npm": ">= 6.11.0",
-        "yarn": ">= 1.13.0"
-      }
-    },
-    "node_modules/@angular-devkit/build-angular/node_modules/open": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/open/-/open-7.0.0.tgz",
-      "integrity": "sha512-K6EKzYqnwQzk+/dzJAQSBORub3xlBTxMz+ntpZpH/LyCa1o6KjXhuN+2npAaI9jaSmU3R1Q8NWf4KUWcyytGsQ==",
-      "dev": true,
-      "dependencies": {
-        "is-wsl": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/@angular-devkit/build-angular/node_modules/rxjs": {
-      "version": "6.5.3",
-      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
-      "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
-      "dev": true,
-      "dependencies": {
-        "tslib": "^1.9.0"
-      },
-      "engines": {
-        "npm": ">=2.0.0"
-      }
-    },
-    "node_modules/@angular-devkit/build-optimizer": {
-      "version": "0.900.7",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.900.7.tgz",
-      "integrity": "sha512-gxin2oPNMN+PYo82At2JP1Q+uxnvwyDFWA1Wl+Ufuc5zHGhjKqxdQjkdMF7OT0ihtmkllN+t/NTB7rcx/Sx9Wg==",
-      "dev": true,
-      "dependencies": {
-        "loader-utils": "1.2.3",
-        "source-map": "0.7.3",
-        "tslib": "1.10.0",
-        "typescript": "3.6.4",
-        "webpack-sources": "1.4.3"
-      },
-      "bin": {
-        "build-optimizer": "src/build-optimizer/cli.js"
-      },
-      "engines": {
-        "node": ">= 10.13.0",
-        "npm": ">= 6.11.0",
-        "yarn": ">= 1.13.0"
-      }
-    },
-    "node_modules/@angular-devkit/build-optimizer/node_modules/tslib": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
-      "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
-      "dev": true
-    },
-    "node_modules/@angular-devkit/build-optimizer/node_modules/typescript": {
-      "version": "3.6.4",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.4.tgz",
-      "integrity": "sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg==",
-      "dev": true,
-      "bin": {
-        "tsc": "bin/tsc",
-        "tsserver": "bin/tsserver"
-      },
-      "engines": {
-        "node": ">=4.2.0"
-      }
-    },
-    "node_modules/@angular-devkit/build-webpack": {
-      "version": "0.900.7",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.900.7.tgz",
-      "integrity": "sha512-Nwwqjo1ZpHFLavN+nXOmuBgGjhoMBZGelDCvHtiQlQ9N6i7k9cKnP7eU5pY7jbalBguS+gWg5wJIGnbqk1K9Rg==",
-      "dev": true,
-      "dependencies": {
-        "@angular-devkit/architect": "0.900.7",
-        "@angular-devkit/core": "9.0.7",
-        "rxjs": "6.5.3"
-      },
-      "engines": {
-        "node": ">= 10.13.0",
-        "npm": ">= 6.11.0",
-        "yarn": ">= 1.13.0"
-      }
-    },
-    "node_modules/@angular-devkit/build-webpack/node_modules/rxjs": {
-      "version": "6.5.3",
-      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
-      "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
-      "dev": true,
-      "dependencies": {
-        "tslib": "^1.9.0"
-      },
-      "engines": {
-        "npm": ">=2.0.0"
-      }
-    },
-    "node_modules/@angular-devkit/core": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.7.tgz",
-      "integrity": "sha512-tMrz36sM1xrwvFf9Qm59GwALscVlMP7rQBjtd0fIR/QbsiOAIX4AQbV+vN6Vtwnzo5NIRZY1IXJUhesWms+h5w==",
-      "dev": true,
-      "dependencies": {
-        "ajv": "6.10.2",
-        "fast-json-stable-stringify": "2.0.0",
-        "magic-string": "0.25.4",
-        "rxjs": "6.5.3",
-        "source-map": "0.7.3"
-      },
-      "engines": {
-        "node": ">= 10.13.0",
-        "npm": ">= 6.11.0",
-        "yarn": ">= 1.13.0"
-      }
-    },
-    "node_modules/@angular-devkit/core/node_modules/rxjs": {
-      "version": "6.5.3",
-      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
-      "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
-      "dev": true,
-      "dependencies": {
-        "tslib": "^1.9.0"
-      },
-      "engines": {
-        "npm": ">=2.0.0"
-      }
-    },
-    "node_modules/@angular-devkit/schematics": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.0.7.tgz",
-      "integrity": "sha512-ryPC+l24f3gX5DFMTLkDM/q2Kp6LPzBn6400k7j4qVdb1cIrZx+JUQd7F4iAksTTkX15EQPanptQXeztUrl9Ng==",
-      "dev": true,
-      "dependencies": {
-        "@angular-devkit/core": "9.0.7",
-        "ora": "4.0.2",
-        "rxjs": "6.5.3"
-      },
-      "engines": {
-        "node": ">= 10.13.0",
-        "npm": ">= 6.11.0",
-        "yarn": ">= 1.13.0"
-      }
-    },
-    "node_modules/@angular-devkit/schematics/node_modules/rxjs": {
-      "version": "6.5.3",
-      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
-      "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
-      "dev": true,
-      "dependencies": {
-        "tslib": "^1.9.0"
-      },
-      "engines": {
-        "npm": ">=2.0.0"
-      }
-    },
-    "node_modules/@angular/animations": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-9.0.7.tgz",
-      "integrity": "sha512-74gY7onajmmnksy5E0/32bFv3B9NuWxV64kqD15YjGrh8AWe1BHt5enQI+rJ2tO8m2DKnwZsctis6k0Kcy+YKQ=="
-    },
-    "node_modules/@angular/cdk": {
-      "version": "11.1.0",
-      "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-11.1.0.tgz",
-      "integrity": "sha512-yFEHtdp0o/xGnYebrU/PQqWVIlB7SaP3cSviq/LTv/h2EINn3PzU/Zhdhg0k0fk09BrKoS+o8AVIddduIdDpYw==",
-      "dependencies": {
-        "tslib": "^2.0.0"
-      },
-      "optionalDependencies": {
-        "parse5": "^5.0.0"
-      }
-    },
-    "node_modules/@angular/cdk/node_modules/parse5": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz",
-      "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==",
-      "optional": true
-    },
-    "node_modules/@angular/cdk/node_modules/tslib": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
-      "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
-    },
-    "node_modules/@angular/cli": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.0.7.tgz",
-      "integrity": "sha512-/9CUNSSVyTtTNUADZ/VXJDEdhineMN/rfd35w6VsHiob49tKkeOTggaoiSne3RY4VCTqlo7GGf4KhhVXEMGnDQ==",
-      "dev": true,
-      "dependencies": {
-        "@angular-devkit/architect": "0.900.7",
-        "@angular-devkit/core": "9.0.7",
-        "@angular-devkit/schematics": "9.0.7",
-        "@schematics/angular": "9.0.7",
-        "@schematics/update": "0.900.7",
-        "@yarnpkg/lockfile": "1.1.0",
-        "ansi-colors": "4.1.1",
-        "debug": "^4.1.1",
-        "ini": "1.3.5",
-        "inquirer": "7.0.0",
-        "npm-package-arg": "6.1.1",
-        "npm-pick-manifest": "3.0.2",
-        "open": "7.0.0",
-        "pacote": "9.5.8",
-        "read-package-tree": "5.3.1",
-        "rimraf": "3.0.0",
-        "semver": "6.3.0",
-        "symbol-observable": "1.2.0",
-        "universal-analytics": "^0.4.20",
-        "uuid": "^3.3.2"
-      },
-      "bin": {
-        "ng": "bin/ng"
-      },
-      "engines": {
-        "node": ">= 10.13.0",
-        "npm": ">= 6.11.0",
-        "yarn": ">= 1.13.0"
-      }
-    },
-    "node_modules/@angular/cli/node_modules/ansi-colors": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
-      "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@angular/cli/node_modules/ansi-escapes": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz",
-      "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==",
-      "dev": true,
-      "dependencies": {
-        "type-fest": "^0.11.0"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/@angular/cli/node_modules/ansi-regex": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-      "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@angular/cli/node_modules/figures": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
-      "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
-      "dev": true,
-      "dependencies": {
-        "escape-string-regexp": "^1.0.5"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/@angular/cli/node_modules/inquirer": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz",
-      "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==",
-      "dev": true,
-      "dependencies": {
-        "ansi-escapes": "^4.2.1",
-        "chalk": "^2.4.2",
-        "cli-cursor": "^3.1.0",
-        "cli-width": "^2.0.0",
-        "external-editor": "^3.0.3",
-        "figures": "^3.0.0",
-        "lodash": "^4.17.15",
-        "mute-stream": "0.0.8",
-        "run-async": "^2.2.0",
-        "rxjs": "^6.4.0",
-        "string-width": "^4.1.0",
-        "strip-ansi": "^5.1.0",
-        "through": "^2.3.6"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@angular/cli/node_modules/is-fullwidth-code-point": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/@angular/cli/node_modules/mute-stream": {
-      "version": "0.0.8",
-      "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
-      "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
-      "dev": true
-    },
-    "node_modules/@angular/cli/node_modules/open": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/open/-/open-7.0.0.tgz",
-      "integrity": "sha512-K6EKzYqnwQzk+/dzJAQSBORub3xlBTxMz+ntpZpH/LyCa1o6KjXhuN+2npAaI9jaSmU3R1Q8NWf4KUWcyytGsQ==",
-      "dev": true,
-      "dependencies": {
-        "is-wsl": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/@angular/cli/node_modules/string-width": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
-      "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
-      "dev": true,
-      "dependencies": {
-        "emoji-regex": "^8.0.0",
-        "is-fullwidth-code-point": "^3.0.0",
-        "strip-ansi": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/@angular/cli/node_modules/string-width/node_modules/ansi-regex": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-      "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/@angular/cli/node_modules/string-width/node_modules/strip-ansi": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-      "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/@angular/cli/node_modules/strip-ansi": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-      "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@angular/cli/node_modules/type-fest": {
-      "version": "0.11.0",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz",
-      "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/@angular/common": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/common/-/common-9.0.7.tgz",
-      "integrity": "sha512-B58YgxZva1DBaeayOBsaUOOkoyR+GRibuNC3gfOMm2vXeW9eCNX+jvDtw767GnKm2yGzIq8wB3x6GHojN00dPw=="
-    },
-    "node_modules/@angular/compiler": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.7.tgz",
-      "integrity": "sha512-hFpkuGpzxpK5h59LHHAjTFWsY6DCXZwgJFqvCuTPxWi/srvLGZRXrpC6Z1SlgHI9xxXaPfoa4uWw2VfA3BnqEg=="
-    },
-    "node_modules/@angular/compiler-cli": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-9.0.7.tgz",
-      "integrity": "sha512-+RXghex63v0Vi8vpQtDpWiqpAAnrTaN3bHT5fntRenq5+Ok5vL1MJ1mzbTmBXs2tuwTqNlwMm2AlZB7G/xcDMQ==",
-      "dev": true,
-      "dependencies": {
-        "canonical-path": "1.0.0",
-        "chokidar": "^3.0.0",
-        "convert-source-map": "^1.5.1",
-        "dependency-graph": "^0.7.2",
-        "fs-extra": "4.0.2",
-        "magic-string": "^0.25.0",
-        "minimist": "^1.2.0",
-        "reflect-metadata": "^0.1.2",
-        "semver": "^6.3.0",
-        "source-map": "^0.6.1",
-        "sourcemap-codec": "^1.4.8",
-        "yargs": "13.1.0"
-      },
-      "bin": {
-        "ivy-ngcc": "ngcc/main-ivy-ngcc.js",
-        "ng-xi18n": "src/extract_i18n.js",
-        "ngc": "src/main.js",
-        "ngcc": "ngcc/main-ngcc.js"
-      },
-      "engines": {
-        "node": ">=10.0"
-      }
-    },
-    "node_modules/@angular/compiler-cli/node_modules/ansi-regex": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-      "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@angular/compiler-cli/node_modules/emoji-regex": {
-      "version": "7.0.3",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-      "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
-      "dev": true
-    },
-    "node_modules/@angular/compiler-cli/node_modules/get-caller-file": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
-      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
-      "dev": true,
-      "engines": {
-        "node": "6.* || 8.* || >= 10.*"
-      }
-    },
-    "node_modules/@angular/compiler-cli/node_modules/require-main-filename": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
-      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
-      "dev": true
-    },
-    "node_modules/@angular/compiler-cli/node_modules/source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@angular/compiler-cli/node_modules/string-width": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-      "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-      "dev": true,
-      "dependencies": {
-        "emoji-regex": "^7.0.1",
-        "is-fullwidth-code-point": "^2.0.0",
-        "strip-ansi": "^5.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@angular/compiler-cli/node_modules/strip-ansi": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-      "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@angular/compiler-cli/node_modules/yargs": {
-      "version": "13.1.0",
-      "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.1.0.tgz",
-      "integrity": "sha512-1UhJbXfzHiPqkfXNHYhiz79qM/kZqjTE8yGlEjZa85Q+3+OwcV6NRkV7XOV1W2Eom2bzILeUn55pQYffjVOLAg==",
-      "dev": true,
-      "dependencies": {
-        "cliui": "^4.0.0",
-        "find-up": "^3.0.0",
-        "get-caller-file": "^2.0.1",
-        "os-locale": "^3.1.0",
-        "require-directory": "^2.1.1",
-        "require-main-filename": "^2.0.0",
-        "set-blocking": "^2.0.0",
-        "string-width": "^3.0.0",
-        "which-module": "^2.0.0",
-        "y18n": "^4.0.0",
-        "yargs-parser": "^13.0.0"
-      }
-    },
-    "node_modules/@angular/compiler-cli/node_modules/yargs-parser": {
-      "version": "13.1.2",
-      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
-      "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
-      "dev": true,
-      "dependencies": {
-        "camelcase": "^5.0.0",
-        "decamelize": "^1.2.0"
-      }
-    },
-    "node_modules/@angular/core": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.7.tgz",
-      "integrity": "sha512-E9XZH5Dl+9MWG3MDC6wrKllhA8Rljpz66HOIeqKv2fHPed8kzuJZU3WJWLtbhDAXFwtGTyTZ4c82ZLSmqwTorg=="
-    },
-    "node_modules/@angular/fire": {
-      "version": "6.1.4",
-      "resolved": "https://registry.npmjs.org/@angular/fire/-/fire-6.1.4.tgz",
-      "integrity": "sha512-5u305XnBC041JMrAtczLa0bdprxw7RkXy4kgcRCisPI8maGuiN4XzlwNYX+plCHZCo4R0motxQom//tPTA2edQ==",
-      "dependencies": {
-        "tslib": "^2.0.0"
-      },
-      "peerDependencies": {
-        "@angular/common": "^9.0.0 || ^10.0.0 || ^11.0.0",
-        "@angular/core": "^9.0.0 || ^10.0.0 || ^11.0.0",
-        "@angular/platform-browser": "^9.0.0 || ^10.0.0 || ^11.0.0",
-        "@angular/platform-browser-dynamic": "^9.0.0 || ^10.0.0 || ^11.0.0",
-        "firebase": "^7.0 || ^8.0",
-        "rxjs": "^6.5.3"
-      }
-    },
-    "node_modules/@angular/fire/node_modules/tslib": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
-      "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
-    },
-    "node_modules/@angular/forms": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-9.0.7.tgz",
-      "integrity": "sha512-PaHAmjMJDtg/3aGCPuq5BCRC1eZ/DBCpva9f7NrA1kqk0LcLdebm0v2uHwTOBtiz/VEgPvxiS4tXC4rjvUtfEg=="
-    },
-    "node_modules/@angular/language-service": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-9.0.7.tgz",
-      "integrity": "sha512-IZG1kvw48JyFRy7bfMHqBixWrEHZmXmkP5DWsi5Tw6KusaczkMghI20BevCkodPcajXWHAUHNKyp1tlE3OnH0w==",
-      "dev": true
-    },
-    "node_modules/@angular/material": {
-      "version": "11.1.0",
-      "resolved": "https://registry.npmjs.org/@angular/material/-/material-11.1.0.tgz",
-      "integrity": "sha512-k7KpU8T32mmi1vaU27SSZ/gwO2YpxEUCTSzAOZNK8YugAXC+A5xPYLcNU8dlzBP4EW7XBkeSSnUacpI199YcyQ==",
-      "dependencies": {
-        "tslib": "^2.0.0"
-      }
-    },
-    "node_modules/@angular/material/node_modules/tslib": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
-      "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
-    },
-    "node_modules/@angular/platform-browser": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-9.0.7.tgz",
-      "integrity": "sha512-Por8omrEiSV2U/K2mm/Kuv+2R2rJkbAZ3ctEM6CWj9Y4Gz2akjOCxmEgWhhBeqdigcC3T1v707f52osf9jWBkg=="
-    },
-    "node_modules/@angular/platform-browser-dynamic": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.0.7.tgz",
-      "integrity": "sha512-jwpyd93ofcRtchbayKD5v4GN4Lc7vbPe6dMUiwfnVnVAql0bOD/3YRI7w5qJ0Xx0sgQT+9Xo6jTXYnyUsZpEww=="
-    },
-    "node_modules/@angular/router": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/router/-/router-9.0.7.tgz",
-      "integrity": "sha512-uKru9F/Zju//gg6INl54abnlpLdEUUO/GpCfMk4zqu8LCZGNFta6OY7VT+9DK9Vdrh/XUD70oE9WoelcRwwTYA=="
-    },
-    "node_modules/@apidevtools/json-schema-ref-parser": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.7.tgz",
-      "integrity": "sha512-QdwOGF1+eeyFh+17v2Tz626WX0nucd1iKOm6JUTUvCZdbolblCOOQCxGrQPY0f7jEhn36PiAWqZnsC2r5vmUWg==",
-      "dev": true,
-      "dependencies": {
-        "@jsdevtools/ono": "^7.1.3",
-        "call-me-maybe": "^1.0.1",
-        "js-yaml": "^3.13.1"
-      }
-    },
-    "node_modules/@babel/code-frame": {
-      "version": "7.12.11",
-      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
-      "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/highlight": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/core": {
-      "version": "7.7.7",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.7.tgz",
-      "integrity": "sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/code-frame": "^7.5.5",
-        "@babel/generator": "^7.7.7",
-        "@babel/helpers": "^7.7.4",
-        "@babel/parser": "^7.7.7",
-        "@babel/template": "^7.7.4",
-        "@babel/traverse": "^7.7.4",
-        "@babel/types": "^7.7.4",
-        "convert-source-map": "^1.7.0",
-        "debug": "^4.1.0",
-        "json5": "^2.1.0",
-        "lodash": "^4.17.13",
-        "resolve": "^1.3.2",
-        "semver": "^5.4.1",
-        "source-map": "^0.5.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/core/node_modules/json5": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
-      "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
-      "dev": true,
-      "dependencies": {
-        "minimist": "^1.2.5"
-      },
-      "bin": {
-        "json5": "lib/cli.js"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@babel/core/node_modules/semver": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/@babel/core/node_modules/source-map": {
-      "version": "0.5.7",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@babel/generator": {
-      "version": "7.7.7",
-      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz",
-      "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.7.4",
-        "jsesc": "^2.5.1",
-        "lodash": "^4.17.13",
-        "source-map": "^0.5.0"
-      }
-    },
-    "node_modules/@babel/generator/node_modules/source-map": {
-      "version": "0.5.7",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@babel/helper-annotate-as-pure": {
-      "version": "7.12.10",
-      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz",
-      "integrity": "sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.12.10"
-      }
-    },
-    "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
-      "version": "7.10.4",
-      "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz",
-      "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-explode-assignable-expression": "^7.10.4",
-        "@babel/types": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/helper-create-regexp-features-plugin": {
-      "version": "7.12.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz",
-      "integrity": "sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.10.4",
-        "regexpu-core": "^4.7.1"
-      }
-    },
-    "node_modules/@babel/helper-define-map": {
-      "version": "7.10.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz",
-      "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-function-name": "^7.10.4",
-        "@babel/types": "^7.10.5",
-        "lodash": "^4.17.19"
-      }
-    },
-    "node_modules/@babel/helper-explode-assignable-expression": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz",
-      "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.12.1"
-      }
-    },
-    "node_modules/@babel/helper-function-name": {
-      "version": "7.12.11",
-      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz",
-      "integrity": "sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-get-function-arity": "^7.12.10",
-        "@babel/template": "^7.12.7",
-        "@babel/types": "^7.12.11"
-      }
-    },
-    "node_modules/@babel/helper-get-function-arity": {
-      "version": "7.12.10",
-      "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz",
-      "integrity": "sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.12.10"
-      }
-    },
-    "node_modules/@babel/helper-hoist-variables": {
-      "version": "7.10.4",
-      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz",
-      "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/helper-member-expression-to-functions": {
-      "version": "7.12.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz",
-      "integrity": "sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.12.7"
-      }
-    },
-    "node_modules/@babel/helper-module-imports": {
-      "version": "7.12.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz",
-      "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.12.5"
-      }
-    },
-    "node_modules/@babel/helper-module-transforms": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz",
-      "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-module-imports": "^7.12.1",
-        "@babel/helper-replace-supers": "^7.12.1",
-        "@babel/helper-simple-access": "^7.12.1",
-        "@babel/helper-split-export-declaration": "^7.11.0",
-        "@babel/helper-validator-identifier": "^7.10.4",
-        "@babel/template": "^7.10.4",
-        "@babel/traverse": "^7.12.1",
-        "@babel/types": "^7.12.1",
-        "lodash": "^4.17.19"
-      }
-    },
-    "node_modules/@babel/helper-optimise-call-expression": {
-      "version": "7.12.10",
-      "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz",
-      "integrity": "sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.12.10"
-      }
-    },
-    "node_modules/@babel/helper-plugin-utils": {
-      "version": "7.10.4",
-      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz",
-      "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==",
-      "dev": true
-    },
-    "node_modules/@babel/helper-remap-async-to-generator": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz",
-      "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.10.4",
-        "@babel/helper-wrap-function": "^7.10.4",
-        "@babel/types": "^7.12.1"
-      }
-    },
-    "node_modules/@babel/helper-replace-supers": {
-      "version": "7.12.11",
-      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz",
-      "integrity": "sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-member-expression-to-functions": "^7.12.7",
-        "@babel/helper-optimise-call-expression": "^7.12.10",
-        "@babel/traverse": "^7.12.10",
-        "@babel/types": "^7.12.11"
-      }
-    },
-    "node_modules/@babel/helper-simple-access": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz",
-      "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.12.1"
-      }
-    },
-    "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz",
-      "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.12.1"
-      }
-    },
-    "node_modules/@babel/helper-split-export-declaration": {
-      "version": "7.12.11",
-      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz",
-      "integrity": "sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.12.11"
-      }
-    },
-    "node_modules/@babel/helper-validator-identifier": {
-      "version": "7.12.11",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz",
-      "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==",
-      "dev": true
-    },
-    "node_modules/@babel/helper-wrap-function": {
-      "version": "7.12.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz",
-      "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-function-name": "^7.10.4",
-        "@babel/template": "^7.10.4",
-        "@babel/traverse": "^7.10.4",
-        "@babel/types": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/helpers": {
-      "version": "7.12.5",
-      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz",
-      "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/template": "^7.10.4",
-        "@babel/traverse": "^7.12.5",
-        "@babel/types": "^7.12.5"
-      }
-    },
-    "node_modules/@babel/highlight": {
-      "version": "7.10.4",
-      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
-      "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-validator-identifier": "^7.10.4",
-        "chalk": "^2.0.0",
-        "js-tokens": "^4.0.0"
-      }
-    },
-    "node_modules/@babel/parser": {
-      "version": "7.12.11",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz",
-      "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==",
-      "dev": true,
-      "bin": {
-        "parser": "bin/babel-parser.js"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@babel/plugin-proposal-async-generator-functions": {
-      "version": "7.12.12",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz",
-      "integrity": "sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/helper-remap-async-to-generator": "^7.12.1",
-        "@babel/plugin-syntax-async-generators": "^7.8.0"
-      }
-    },
-    "node_modules/@babel/plugin-proposal-dynamic-import": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz",
-      "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/plugin-syntax-dynamic-import": "^7.8.0"
-      }
-    },
-    "node_modules/@babel/plugin-proposal-json-strings": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz",
-      "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/plugin-syntax-json-strings": "^7.8.0"
-      }
-    },
-    "node_modules/@babel/plugin-proposal-object-rest-spread": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz",
-      "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
-        "@babel/plugin-transform-parameters": "^7.12.1"
-      }
-    },
-    "node_modules/@babel/plugin-proposal-optional-catch-binding": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz",
-      "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/plugin-syntax-optional-catch-binding": "^7.8.0"
-      }
-    },
-    "node_modules/@babel/plugin-proposal-unicode-property-regex": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz",
-      "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.12.1",
-        "@babel/helper-plugin-utils": "^7.10.4"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-async-generators": {
-      "version": "7.8.4",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
-      "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-dynamic-import": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
-      "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-json-strings": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
-      "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-object-rest-spread": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
-      "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-optional-catch-binding": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
-      "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "node_modules/@babel/plugin-syntax-top-level-await": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz",
-      "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/plugin-transform-arrow-functions": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz",
-      "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/plugin-transform-async-to-generator": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz",
-      "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-module-imports": "^7.12.1",
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/helper-remap-async-to-generator": "^7.12.1"
-      }
-    },
-    "node_modules/@babel/plugin-transform-block-scoped-functions": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz",
-      "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/plugin-transform-block-scoping": {
-      "version": "7.12.12",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz",
-      "integrity": "sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/plugin-transform-classes": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz",
-      "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.10.4",
-        "@babel/helper-define-map": "^7.10.4",
-        "@babel/helper-function-name": "^7.10.4",
-        "@babel/helper-optimise-call-expression": "^7.10.4",
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/helper-replace-supers": "^7.12.1",
-        "@babel/helper-split-export-declaration": "^7.10.4",
-        "globals": "^11.1.0"
-      }
-    },
-    "node_modules/@babel/plugin-transform-computed-properties": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz",
-      "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/plugin-transform-destructuring": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz",
-      "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/plugin-transform-dotall-regex": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz",
-      "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.12.1",
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/plugin-transform-duplicate-keys": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz",
-      "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/plugin-transform-exponentiation-operator": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz",
-      "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4",
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/plugin-transform-for-of": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz",
-      "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/plugin-transform-function-name": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz",
-      "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-function-name": "^7.10.4",
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/plugin-transform-literals": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz",
-      "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/plugin-transform-member-expression-literals": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz",
-      "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/plugin-transform-modules-amd": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz",
-      "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-module-transforms": "^7.12.1",
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "babel-plugin-dynamic-import-node": "^2.3.3"
-      }
-    },
-    "node_modules/@babel/plugin-transform-modules-commonjs": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz",
-      "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-module-transforms": "^7.12.1",
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/helper-simple-access": "^7.12.1",
-        "babel-plugin-dynamic-import-node": "^2.3.3"
-      }
-    },
-    "node_modules/@babel/plugin-transform-modules-systemjs": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz",
-      "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-hoist-variables": "^7.10.4",
-        "@babel/helper-module-transforms": "^7.12.1",
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/helper-validator-identifier": "^7.10.4",
-        "babel-plugin-dynamic-import-node": "^2.3.3"
-      }
-    },
-    "node_modules/@babel/plugin-transform-modules-umd": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz",
-      "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-module-transforms": "^7.12.1",
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz",
-      "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.12.1"
-      }
-    },
-    "node_modules/@babel/plugin-transform-new-target": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz",
-      "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/plugin-transform-object-super": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz",
-      "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/helper-replace-supers": "^7.12.1"
-      }
-    },
-    "node_modules/@babel/plugin-transform-parameters": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz",
-      "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/plugin-transform-property-literals": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz",
-      "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/plugin-transform-regenerator": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz",
-      "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==",
-      "dev": true,
-      "dependencies": {
-        "regenerator-transform": "^0.14.2"
-      }
-    },
-    "node_modules/@babel/plugin-transform-reserved-words": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz",
-      "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/plugin-transform-shorthand-properties": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz",
-      "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/plugin-transform-spread": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz",
-      "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1"
-      }
-    },
-    "node_modules/@babel/plugin-transform-sticky-regex": {
-      "version": "7.12.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz",
-      "integrity": "sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/plugin-transform-template-literals": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz",
-      "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/plugin-transform-typeof-symbol": {
-      "version": "7.12.10",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz",
-      "integrity": "sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/plugin-transform-unicode-regex": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz",
-      "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.12.1",
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "node_modules/@babel/preset-env": {
-      "version": "7.7.7",
-      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.7.7.tgz",
-      "integrity": "sha512-pCu0hrSSDVI7kCVUOdcMNQEbOPJ52E+LrQ14sN8uL2ALfSqePZQlKrOy+tM4uhEdYlCHi4imr8Zz2cZe9oSdIg==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-module-imports": "^7.7.4",
-        "@babel/helper-plugin-utils": "^7.0.0",
-        "@babel/plugin-proposal-async-generator-functions": "^7.7.4",
-        "@babel/plugin-proposal-dynamic-import": "^7.7.4",
-        "@babel/plugin-proposal-json-strings": "^7.7.4",
-        "@babel/plugin-proposal-object-rest-spread": "^7.7.7",
-        "@babel/plugin-proposal-optional-catch-binding": "^7.7.4",
-        "@babel/plugin-proposal-unicode-property-regex": "^7.7.7",
-        "@babel/plugin-syntax-async-generators": "^7.7.4",
-        "@babel/plugin-syntax-dynamic-import": "^7.7.4",
-        "@babel/plugin-syntax-json-strings": "^7.7.4",
-        "@babel/plugin-syntax-object-rest-spread": "^7.7.4",
-        "@babel/plugin-syntax-optional-catch-binding": "^7.7.4",
-        "@babel/plugin-syntax-top-level-await": "^7.7.4",
-        "@babel/plugin-transform-arrow-functions": "^7.7.4",
-        "@babel/plugin-transform-async-to-generator": "^7.7.4",
-        "@babel/plugin-transform-block-scoped-functions": "^7.7.4",
-        "@babel/plugin-transform-block-scoping": "^7.7.4",
-        "@babel/plugin-transform-classes": "^7.7.4",
-        "@babel/plugin-transform-computed-properties": "^7.7.4",
-        "@babel/plugin-transform-destructuring": "^7.7.4",
-        "@babel/plugin-transform-dotall-regex": "^7.7.7",
-        "@babel/plugin-transform-duplicate-keys": "^7.7.4",
-        "@babel/plugin-transform-exponentiation-operator": "^7.7.4",
-        "@babel/plugin-transform-for-of": "^7.7.4",
-        "@babel/plugin-transform-function-name": "^7.7.4",
-        "@babel/plugin-transform-literals": "^7.7.4",
-        "@babel/plugin-transform-member-expression-literals": "^7.7.4",
-        "@babel/plugin-transform-modules-amd": "^7.7.5",
-        "@babel/plugin-transform-modules-commonjs": "^7.7.5",
-        "@babel/plugin-transform-modules-systemjs": "^7.7.4",
-        "@babel/plugin-transform-modules-umd": "^7.7.4",
-        "@babel/plugin-transform-named-capturing-groups-regex": "^7.7.4",
-        "@babel/plugin-transform-new-target": "^7.7.4",
-        "@babel/plugin-transform-object-super": "^7.7.4",
-        "@babel/plugin-transform-parameters": "^7.7.7",
-        "@babel/plugin-transform-property-literals": "^7.7.4",
-        "@babel/plugin-transform-regenerator": "^7.7.5",
-        "@babel/plugin-transform-reserved-words": "^7.7.4",
-        "@babel/plugin-transform-shorthand-properties": "^7.7.4",
-        "@babel/plugin-transform-spread": "^7.7.4",
-        "@babel/plugin-transform-sticky-regex": "^7.7.4",
-        "@babel/plugin-transform-template-literals": "^7.7.4",
-        "@babel/plugin-transform-typeof-symbol": "^7.7.4",
-        "@babel/plugin-transform-unicode-regex": "^7.7.4",
-        "@babel/types": "^7.7.4",
-        "browserslist": "^4.6.0",
-        "core-js-compat": "^3.6.0",
-        "invariant": "^2.2.2",
-        "js-levenshtein": "^1.1.3",
-        "semver": "^5.5.0"
-      }
-    },
-    "node_modules/@babel/preset-env/node_modules/semver": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/@babel/runtime": {
-      "version": "7.12.5",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz",
-      "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==",
-      "dev": true,
-      "dependencies": {
-        "regenerator-runtime": "^0.13.4"
-      }
-    },
-    "node_modules/@babel/runtime/node_modules/regenerator-runtime": {
-      "version": "0.13.7",
-      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
-      "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==",
-      "dev": true
-    },
-    "node_modules/@babel/template": {
-      "version": "7.12.7",
-      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz",
-      "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==",
-      "dev": true,
-      "dependencies": {
-        "@babel/code-frame": "^7.10.4",
-        "@babel/parser": "^7.12.7",
-        "@babel/types": "^7.12.7"
-      }
-    },
-    "node_modules/@babel/traverse": {
-      "version": "7.12.12",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.12.tgz",
-      "integrity": "sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w==",
-      "dev": true,
-      "dependencies": {
-        "@babel/code-frame": "^7.12.11",
-        "@babel/generator": "^7.12.11",
-        "@babel/helper-function-name": "^7.12.11",
-        "@babel/helper-split-export-declaration": "^7.12.11",
-        "@babel/parser": "^7.12.11",
-        "@babel/types": "^7.12.12",
-        "debug": "^4.1.0",
-        "globals": "^11.1.0",
-        "lodash": "^4.17.19"
-      }
-    },
-    "node_modules/@babel/traverse/node_modules/@babel/generator": {
-      "version": "7.12.11",
-      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz",
-      "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/types": "^7.12.11",
-        "jsesc": "^2.5.1",
-        "source-map": "^0.5.0"
-      }
-    },
-    "node_modules/@babel/traverse/node_modules/source-map": {
-      "version": "0.5.7",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@babel/types": {
-      "version": "7.12.12",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.12.tgz",
-      "integrity": "sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/helper-validator-identifier": "^7.12.11",
-        "lodash": "^4.17.19",
-        "to-fast-properties": "^2.0.0"
-      }
-    },
-    "node_modules/@dabh/diagnostics": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz",
-      "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==",
-      "dev": true,
-      "dependencies": {
-        "colorspace": "1.1.x",
-        "enabled": "2.0.x",
-        "kuler": "^2.0.0"
-      }
-    },
-    "node_modules/@firebase/analytics": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.6.2.tgz",
-      "integrity": "sha512-4Ceov+rPfOEPIdbjlpTim/wbcUUneIesHag4UOzvmFsRRXqbxLwQpyZQWEbTSriUeU8uTKj9yOW32hsskV9Klg==",
-      "dependencies": {
-        "@firebase/analytics-types": "0.4.0",
-        "@firebase/component": "0.1.21",
-        "@firebase/installations": "0.4.19",
-        "@firebase/logger": "0.2.6",
-        "@firebase/util": "0.3.4",
-        "tslib": "^1.11.1"
-      },
-      "peerDependencies": {
-        "@firebase/app": "0.x",
-        "@firebase/app-types": "0.x"
-      }
-    },
-    "node_modules/@firebase/analytics-types": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.4.0.tgz",
-      "integrity": "sha512-Jj2xW+8+8XPfWGkv9HPv/uR+Qrmq37NPYT352wf7MvE9LrstpLVmFg3LqG6MCRr5miLAom5sen2gZ+iOhVDeRA=="
-    },
-    "node_modules/@firebase/app": {
-      "version": "0.6.14",
-      "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.6.14.tgz",
-      "integrity": "sha512-ZQKuiJ+fzr4tULgWoXbW+AZVTGsejOkSrlQ+zx78WiGKIubpFJLklnP3S0oYr/1nHzr4vaKuM4G8IL1Wv/+MpQ==",
-      "dependencies": {
-        "@firebase/app-types": "0.6.1",
-        "@firebase/component": "0.1.21",
-        "@firebase/logger": "0.2.6",
-        "@firebase/util": "0.3.4",
-        "dom-storage": "2.1.0",
-        "tslib": "^1.11.1",
-        "xmlhttprequest": "1.8.0"
-      }
-    },
-    "node_modules/@firebase/app-types": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.6.1.tgz",
-      "integrity": "sha512-L/ZnJRAq7F++utfuoTKX4CLBG5YR7tFO3PLzG1/oXXKEezJ0kRL3CMRoueBEmTCzVb/6SIs2Qlaw++uDgi5Xyg=="
-    },
-    "node_modules/@firebase/auth": {
-      "version": "0.16.3",
-      "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.16.3.tgz",
-      "integrity": "sha512-0U+SJrh9K8vDv+lvWPYU9cAQBRPt8fpm3cK7yRZAwnN4jbcqfg+KBaddrDn28aIQYX+n4TrLiZ9TMJXPJfUYhQ==",
-      "dependencies": {
-        "@firebase/auth-types": "0.10.1"
-      },
-      "peerDependencies": {
-        "@firebase/app": "0.x"
-      }
-    },
-    "node_modules/@firebase/auth-interop-types": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.5.tgz",
-      "integrity": "sha512-88h74TMQ6wXChPA6h9Q3E1Jg6TkTHep2+k63OWg3s0ozyGVMeY+TTOti7PFPzq5RhszQPQOoCi59es4MaRvgCw==",
-      "peerDependencies": {
-        "@firebase/app-types": "0.x",
-        "@firebase/util": "0.x"
-      }
-    },
-    "node_modules/@firebase/auth-types": {
-      "version": "0.10.1",
-      "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.10.1.tgz",
-      "integrity": "sha512-/+gBHb1O9x/YlG7inXfxff/6X3BPZt4zgBv4kql6HEmdzNQCodIRlEYnI+/da+lN+dha7PjaFH7C7ewMmfV7rw==",
-      "peerDependencies": {
-        "@firebase/app-types": "0.x",
-        "@firebase/util": "0.x"
-      }
-    },
-    "node_modules/@firebase/component": {
-      "version": "0.1.21",
-      "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.21.tgz",
-      "integrity": "sha512-kd5sVmCLB95EK81Pj+yDTea8pzN2qo/1yr0ua9yVi6UgMzm6zAeih73iVUkaat96MAHy26yosMufkvd3zC4IKg==",
-      "dependencies": {
-        "@firebase/util": "0.3.4",
-        "tslib": "^1.11.1"
-      }
-    },
-    "node_modules/@firebase/database": {
-      "version": "0.9.2",
-      "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.9.2.tgz",
-      "integrity": "sha512-pNvgKUNCdKvZxTLBt8Mg1iFbDOkACUHvfXs1tqLYASa9AvBZA64W4qH/uv6nXWlt+iXmknAKcJ+s9AOQ/hDPCw==",
-      "dependencies": {
-        "@firebase/auth-interop-types": "0.1.5",
-        "@firebase/component": "0.1.21",
-        "@firebase/database-types": "0.6.1",
-        "@firebase/logger": "0.2.6",
-        "@firebase/util": "0.3.4",
-        "faye-websocket": "0.11.3",
-        "tslib": "^1.11.1"
-      }
-    },
-    "node_modules/@firebase/database-types": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.6.1.tgz",
-      "integrity": "sha512-JtL3FUbWG+bM59iYuphfx9WOu2Mzf0OZNaqWiQ7lJR8wBe7bS9rIm9jlBFtksB7xcya1lZSQPA/GAy2jIlMIkA==",
-      "dependencies": {
-        "@firebase/app-types": "0.6.1"
-      }
-    },
-    "node_modules/@firebase/database/node_modules/faye-websocket": {
-      "version": "0.11.3",
-      "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz",
-      "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==",
-      "dependencies": {
-        "websocket-driver": ">=0.5.1"
-      },
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/@firebase/firestore": {
-      "version": "2.1.5",
-      "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-2.1.5.tgz",
-      "integrity": "sha512-y680BvGOBw8MUvls5aVxTyougSedwHSDEoWZ4htZ9FJGnlI/jk5LhmmrJ4ELk0vmK9sbloHn2kFSkMaoUVDeZQ==",
-      "dependencies": {
-        "@firebase/component": "0.1.21",
-        "@firebase/firestore-types": "2.1.0",
-        "@firebase/logger": "0.2.6",
-        "@firebase/util": "0.3.4",
-        "@firebase/webchannel-wrapper": "0.4.1",
-        "@grpc/grpc-js": "^1.0.0",
-        "@grpc/proto-loader": "^0.5.0",
-        "node-fetch": "2.6.1",
-        "tslib": "^1.11.1"
-      },
-      "engines": {
-        "node": "^8.13.0 || >=10.10.0"
-      },
-      "peerDependencies": {
-        "@firebase/app": "0.x",
-        "@firebase/app-types": "0.x"
-      }
-    },
-    "node_modules/@firebase/firestore-types": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-2.1.0.tgz",
-      "integrity": "sha512-jietErBWihMvJkqqEquQy5GgoEwzHnMXXC/TsVoe9FPysXm1/AeJS12taS7ZYvenAtyvL/AEJyKrRKRh4adcJQ==",
-      "peerDependencies": {
-        "@firebase/app-types": "0.x"
-      }
-    },
-    "node_modules/@firebase/functions": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.6.1.tgz",
-      "integrity": "sha512-xNCAY3cLlVWE8Azf+/84OjnaXMoyUstJ3vwVRG0ie22QhsdQuPa1tXTiPX4Tmm+Hbbd/Aw0A/7dkEnuW+zYzaQ==",
-      "dependencies": {
-        "@firebase/component": "0.1.21",
-        "@firebase/functions-types": "0.4.0",
-        "@firebase/messaging-types": "0.5.0",
-        "node-fetch": "2.6.1",
-        "tslib": "^1.11.1"
-      },
-      "peerDependencies": {
-        "@firebase/app": "0.x",
-        "@firebase/app-types": "0.x"
-      }
-    },
-    "node_modules/@firebase/functions-types": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.4.0.tgz",
-      "integrity": "sha512-3KElyO3887HNxtxNF1ytGFrNmqD+hheqjwmT3sI09FaDCuaxGbOnsXAXH2eQ049XRXw9YQpHMgYws/aUNgXVyQ=="
-    },
-    "node_modules/@firebase/installations": {
-      "version": "0.4.19",
-      "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.4.19.tgz",
-      "integrity": "sha512-QqAQzosKVVqIx7oMt5ujF4NsIXgtlTnej4JXGJ8sQQuJoMnt3T+PFQRHbr7uOfVaBiHYhEaXCcmmhfKUHwKftw==",
-      "dependencies": {
-        "@firebase/component": "0.1.21",
-        "@firebase/installations-types": "0.3.4",
-        "@firebase/util": "0.3.4",
-        "idb": "3.0.2",
-        "tslib": "^1.11.1"
-      },
-      "peerDependencies": {
-        "@firebase/app": "0.x",
-        "@firebase/app-types": "0.x"
-      }
-    },
-    "node_modules/@firebase/installations-types": {
-      "version": "0.3.4",
-      "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.3.4.tgz",
-      "integrity": "sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q==",
-      "peerDependencies": {
-        "@firebase/app-types": "0.x"
-      }
-    },
-    "node_modules/@firebase/logger": {
-      "version": "0.2.6",
-      "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.2.6.tgz",
-      "integrity": "sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw=="
-    },
-    "node_modules/@firebase/messaging": {
-      "version": "0.7.3",
-      "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.7.3.tgz",
-      "integrity": "sha512-63nOP2SmQJrj9jrhV3K96L5MRKS6AqmFVLX1XbGk6K6lz38ZC4LIoCcHxzUBXY7fCAuZvNmh/YB3pE8B2mTs8A==",
-      "dependencies": {
-        "@firebase/component": "0.1.21",
-        "@firebase/installations": "0.4.19",
-        "@firebase/messaging-types": "0.5.0",
-        "@firebase/util": "0.3.4",
-        "idb": "3.0.2",
-        "tslib": "^1.11.1"
-      },
-      "peerDependencies": {
-        "@firebase/app": "0.x",
-        "@firebase/app-types": "0.x"
-      }
-    },
-    "node_modules/@firebase/messaging-types": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.5.0.tgz",
-      "integrity": "sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg==",
-      "peerDependencies": {
-        "@firebase/app-types": "0.x"
-      }
-    },
-    "node_modules/@firebase/performance": {
-      "version": "0.4.5",
-      "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.4.5.tgz",
-      "integrity": "sha512-oenEOaV/UzvV8XPi8afYQ71RzyrHoBesqOyXqb1TOg7dpU+i+UJ5PS8K64DytKUHTxQl+UJFcuxNpsoy9BpWzw==",
-      "dependencies": {
-        "@firebase/component": "0.1.21",
-        "@firebase/installations": "0.4.19",
-        "@firebase/logger": "0.2.6",
-        "@firebase/performance-types": "0.0.13",
-        "@firebase/util": "0.3.4",
-        "tslib": "^1.11.1"
-      },
-      "peerDependencies": {
-        "@firebase/app": "0.x",
-        "@firebase/app-types": "0.x"
-      }
-    },
-    "node_modules/@firebase/performance-types": {
-      "version": "0.0.13",
-      "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.0.13.tgz",
-      "integrity": "sha512-6fZfIGjQpwo9S5OzMpPyqgYAUZcFzZxHFqOyNtorDIgNXq33nlldTL/vtaUZA8iT9TT5cJlCrF/jthKU7X21EA=="
-    },
-    "node_modules/@firebase/polyfill": {
-      "version": "0.3.36",
-      "resolved": "https://registry.npmjs.org/@firebase/polyfill/-/polyfill-0.3.36.tgz",
-      "integrity": "sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg==",
-      "dependencies": {
-        "core-js": "3.6.5",
-        "promise-polyfill": "8.1.3",
-        "whatwg-fetch": "2.0.4"
-      }
-    },
-    "node_modules/@firebase/polyfill/node_modules/core-js": {
-      "version": "3.6.5",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz",
-      "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==",
-      "hasInstallScript": true,
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/core-js"
-      }
-    },
-    "node_modules/@firebase/remote-config": {
-      "version": "0.1.30",
-      "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.1.30.tgz",
-      "integrity": "sha512-LAfLDcp1AN0V/7AkxBuTKy+Qnq9fKYKxbA5clrXRNVzJbTVnF5eFGsaUOlkes0ESG6lbqKy5ZcDgdl73zBIhAA==",
-      "dependencies": {
-        "@firebase/component": "0.1.21",
-        "@firebase/installations": "0.4.19",
-        "@firebase/logger": "0.2.6",
-        "@firebase/remote-config-types": "0.1.9",
-        "@firebase/util": "0.3.4",
-        "tslib": "^1.11.1"
-      },
-      "peerDependencies": {
-        "@firebase/app": "0.x",
-        "@firebase/app-types": "0.x"
-      }
-    },
-    "node_modules/@firebase/remote-config-types": {
-      "version": "0.1.9",
-      "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz",
-      "integrity": "sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA=="
-    },
-    "node_modules/@firebase/storage": {
-      "version": "0.4.2",
-      "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.4.2.tgz",
-      "integrity": "sha512-87CrvKrf8kijVekRBmUs8htsNz7N5X/pDhv3BvJBqw8K65GsUolpyjx0f4QJRkCRUYmh3MSkpa5P08lpVbC6nQ==",
-      "dependencies": {
-        "@firebase/component": "0.1.21",
-        "@firebase/storage-types": "0.3.13",
-        "@firebase/util": "0.3.4",
-        "tslib": "^1.11.1"
-      },
-      "peerDependencies": {
-        "@firebase/app": "0.x",
-        "@firebase/app-types": "0.x"
-      }
-    },
-    "node_modules/@firebase/storage-types": {
-      "version": "0.3.13",
-      "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.3.13.tgz",
-      "integrity": "sha512-pL7b8d5kMNCCL0w9hF7pr16POyKkb3imOW7w0qYrhBnbyJTdVxMWZhb0HxCFyQWC0w3EiIFFmxoz8NTFZDEFog==",
-      "peerDependencies": {
-        "@firebase/app-types": "0.x",
-        "@firebase/util": "0.x"
-      }
-    },
-    "node_modules/@firebase/util": {
-      "version": "0.3.4",
-      "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.3.4.tgz",
-      "integrity": "sha512-VwjJUE2Vgr2UMfH63ZtIX9Hd7x+6gayi6RUXaTqEYxSbf/JmehLmAEYSuxS/NckfzAXWeGnKclvnXVibDgpjQQ==",
-      "dependencies": {
-        "tslib": "^1.11.1"
-      }
-    },
-    "node_modules/@firebase/webchannel-wrapper": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.4.1.tgz",
-      "integrity": "sha512-0yPjzuzGMkW1GkrC8yWsiN7vt1OzkMIi9HgxRmKREZl2wnNPOKo/yScTjXf/O57HM8dltqxPF6jlNLFVtc2qdw=="
-    },
-    "node_modules/@google-cloud/paginator": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-2.0.3.tgz",
-      "integrity": "sha512-kp/pkb2p/p0d8/SKUu4mOq8+HGwF8NPzHWkj+VKrIPQPyMRw8deZtrO/OcSiy9C/7bpfU5Txah5ltUNfPkgEXg==",
-      "dev": true,
-      "dependencies": {
-        "arrify": "^2.0.0",
-        "extend": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/@google-cloud/paginator/node_modules/arrify": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
-      "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/@google-cloud/precise-date": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/@google-cloud/precise-date/-/precise-date-1.0.3.tgz",
-      "integrity": "sha512-wWnDGh9y3cJHLuVEY8t6un78vizzMWsS7oIWKeFtPj+Ndy+dXvHW0HTx29ZUhen+tswSlQYlwFubvuRP5kKdzQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/@google-cloud/projectify": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-1.0.4.tgz",
-      "integrity": "sha512-ZdzQUN02eRsmTKfBj9FDL0KNDIFNjBn/d6tHQmA/+FImH5DO6ZV8E7FzxMgAUiVAUq41RFAkb25p1oHOZ8psfg==",
-      "dev": true,
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/@google-cloud/promisify": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-1.0.4.tgz",
-      "integrity": "sha512-VccZDcOql77obTnFh0TbNED/6ZbbmHDf8UMNnzO1d5g9V0Htfm4k5cllY8P1tJsRKC3zWYGRLaViiupcgVjBoQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/@google-cloud/pubsub": {
-      "version": "1.7.3",
-      "resolved": "https://registry.npmjs.org/@google-cloud/pubsub/-/pubsub-1.7.3.tgz",
-      "integrity": "sha512-v+KdeaOS17WtHnsDf2bPGxKDT9HIRPYo3n+WsAEmvAzDHnh8q65mFcuYoQxuy2iRhmN/1ql2a0UU2tAAL7XZ8Q==",
-      "dev": true,
-      "dependencies": {
-        "@google-cloud/paginator": "^2.0.0",
-        "@google-cloud/precise-date": "^1.0.0",
-        "@google-cloud/projectify": "^1.0.0",
-        "@google-cloud/promisify": "^1.0.0",
-        "@types/duplexify": "^3.6.0",
-        "@types/long": "^4.0.0",
-        "arrify": "^2.0.0",
-        "async-each": "^1.0.1",
-        "extend": "^3.0.2",
-        "google-auth-library": "^5.5.0",
-        "google-gax": "^1.14.2",
-        "is-stream-ended": "^0.1.4",
-        "lodash.snakecase": "^4.1.1",
-        "p-defer": "^3.0.0",
-        "protobufjs": "^6.8.1"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/@google-cloud/pubsub/node_modules/@grpc/grpc-js": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.0.5.tgz",
-      "integrity": "sha512-Hm+xOiqAhcpT9RYM8lc15dbQD7aQurM7ZU8ulmulepiPlN7iwBXXwP3vSBUimoFoApRqz7pSIisXU8pZaCB4og==",
-      "dev": true,
-      "dependencies": {
-        "semver": "^6.2.0"
-      },
-      "engines": {
-        "node": "^8.13.0 || >=10.10.0"
-      },
-      "peerDependencies": {
-        "google-auth-library": "5.x || 6.x"
-      }
-    },
-    "node_modules/@google-cloud/pubsub/node_modules/agent-base": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
-      "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
-      "dev": true,
-      "dependencies": {
-        "debug": "4"
-      },
-      "engines": {
-        "node": ">= 6.0.0"
-      }
-    },
-    "node_modules/@google-cloud/pubsub/node_modules/arrify": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
-      "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/@google-cloud/pubsub/node_modules/gaxios": {
-      "version": "2.3.4",
-      "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.3.4.tgz",
-      "integrity": "sha512-US8UMj8C5pRnao3Zykc4AAVr+cffoNKRTg9Rsf2GiuZCW69vgJj38VK2PzlPuQU73FZ/nTk9/Av6/JGcE1N9vA==",
-      "dev": true,
-      "dependencies": {
-        "abort-controller": "^3.0.0",
-        "extend": "^3.0.2",
-        "https-proxy-agent": "^5.0.0",
-        "is-stream": "^2.0.0",
-        "node-fetch": "^2.3.0"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/@google-cloud/pubsub/node_modules/gcp-metadata": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-3.5.0.tgz",
-      "integrity": "sha512-ZQf+DLZ5aKcRpLzYUyBS3yo3N0JSa82lNDO8rj3nMSlovLcz2riKFBsYgDzeXcv75oo5eqB2lx+B14UvPoCRnA==",
-      "dev": true,
-      "dependencies": {
-        "gaxios": "^2.1.0",
-        "json-bigint": "^0.3.0"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/@google-cloud/pubsub/node_modules/google-auth-library": {
-      "version": "5.10.1",
-      "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-5.10.1.tgz",
-      "integrity": "sha512-rOlaok5vlpV9rSiUu5EpR0vVpc+PhN62oF4RyX/6++DG1VsaulAFEMlDYBLjJDDPI6OcNOCGAKy9UVB/3NIDXg==",
-      "dev": true,
-      "dependencies": {
-        "arrify": "^2.0.0",
-        "base64-js": "^1.3.0",
-        "ecdsa-sig-formatter": "^1.0.11",
-        "fast-text-encoding": "^1.0.0",
-        "gaxios": "^2.1.0",
-        "gcp-metadata": "^3.4.0",
-        "gtoken": "^4.1.0",
-        "jws": "^4.0.0",
-        "lru-cache": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/@google-cloud/pubsub/node_modules/google-gax": {
-      "version": "1.15.3",
-      "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-1.15.3.tgz",
-      "integrity": "sha512-3JKJCRumNm3x2EksUTw4P1Rad43FTpqrtW9jzpf3xSMYXx+ogaqTM1vGo7VixHB4xkAyATXVIa3OcNSh8H9zsQ==",
-      "dev": true,
-      "dependencies": {
-        "@grpc/grpc-js": "~1.0.3",
-        "@grpc/proto-loader": "^0.5.1",
-        "@types/fs-extra": "^8.0.1",
-        "@types/long": "^4.0.0",
-        "abort-controller": "^3.0.0",
-        "duplexify": "^3.6.0",
-        "google-auth-library": "^5.0.0",
-        "is-stream-ended": "^0.1.4",
-        "lodash.at": "^4.6.0",
-        "lodash.has": "^4.5.2",
-        "node-fetch": "^2.6.0",
-        "protobufjs": "^6.8.9",
-        "retry-request": "^4.0.0",
-        "semver": "^6.0.0",
-        "walkdir": "^0.4.0"
-      },
-      "bin": {
-        "compileProtos": "build/tools/compileProtos.js"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/@google-cloud/pubsub/node_modules/google-p12-pem": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-2.0.4.tgz",
-      "integrity": "sha512-S4blHBQWZRnEW44OcR7TL9WR+QCqByRvhNDZ/uuQfpxywfupikf/miba8js1jZi6ZOGv5slgSuoshCWh6EMDzg==",
-      "dev": true,
-      "dependencies": {
-        "node-forge": "^0.9.0"
-      },
-      "bin": {
-        "gp12-pem": "build/src/bin/gp12-pem.js"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/@google-cloud/pubsub/node_modules/gtoken": {
-      "version": "4.1.4",
-      "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-4.1.4.tgz",
-      "integrity": "sha512-VxirzD0SWoFUo5p8RDP8Jt2AGyOmyYcT/pOUgDKJCK+iSw0TMqwrVfY37RXTNmoKwrzmDHSk0GMT9FsgVmnVSA==",
-      "dev": true,
-      "dependencies": {
-        "gaxios": "^2.1.0",
-        "google-p12-pem": "^2.0.0",
-        "jws": "^4.0.0",
-        "mime": "^2.2.0"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/@google-cloud/pubsub/node_modules/https-proxy-agent": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
-      "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
-      "dev": true,
-      "dependencies": {
-        "agent-base": "6",
-        "debug": "4"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/@google-cloud/pubsub/node_modules/is-stream": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
-      "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/@google-cloud/pubsub/node_modules/json-bigint": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-0.3.1.tgz",
-      "integrity": "sha512-DGWnSzmusIreWlEupsUelHrhwmPPE+FiQvg+drKfk2p+bdEYa5mp4PJ8JsCWqae0M2jQNb0HPvnwvf1qOTThzQ==",
-      "dev": true,
-      "dependencies": {
-        "bignumber.js": "^9.0.0"
-      }
-    },
-    "node_modules/@google-cloud/pubsub/node_modules/mime": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz",
-      "integrity": "sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==",
-      "dev": true,
-      "bin": {
-        "mime": "cli.js"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/@google-cloud/pubsub/node_modules/node-forge": {
-      "version": "0.9.2",
-      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.2.tgz",
-      "integrity": "sha512-naKSScof4Wn+aoHU6HBsifh92Zeicm1GDQKd1vp3Y/kOi8ub0DozCa9KpvYNCXslFHYRmLNiqRopGdTGwNLpNw==",
-      "dev": true,
-      "engines": {
-        "node": ">= 4.5.0"
-      }
-    },
-    "node_modules/@google-cloud/pubsub/node_modules/p-defer": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz",
-      "integrity": "sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/@grpc/grpc-js": {
-      "version": "1.2.6",
-      "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.2.6.tgz",
-      "integrity": "sha512-wfYwFy7CvVEmBKzeDX1kQQYrv5NBpe8Z+VwXipFvqof3lCXKch7k+4T3grKtptaH5GQ5KP9iKwPr9hMDSynIUw==",
-      "dependencies": {
-        "@types/node": ">=12.12.47",
-        "google-auth-library": "^6.1.1",
-        "semver": "^6.2.0"
-      },
-      "engines": {
-        "node": "^8.13.0 || >=10.10.0"
-      }
-    },
-    "node_modules/@grpc/proto-loader": {
-      "version": "0.5.6",
-      "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.6.tgz",
-      "integrity": "sha512-DT14xgw3PSzPxwS13auTEwxhMMOoz33DPUKNtmYK/QYbBSpLXJy78FGGs5yVoxVobEqPm4iW9MOIoz0A3bLTRQ==",
-      "dependencies": {
-        "lodash.camelcase": "^4.3.0",
-        "protobufjs": "^6.8.6"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@istanbuljs/schema": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz",
-      "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/@jsdevtools/ono": {
-      "version": "7.1.3",
-      "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz",
-      "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==",
-      "dev": true
-    },
-    "node_modules/@ngtools/webpack": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.0.7.tgz",
-      "integrity": "sha512-MvoMaErkjESefoIrbt8F2RpKDr9KavwvH4v3hwSAKooVNFdFKNsjJ7m3gCQehumEfsYFq2mrEK2sTW4/CpFlMQ==",
-      "dev": true,
-      "dependencies": {
-        "@angular-devkit/core": "9.0.7",
-        "enhanced-resolve": "4.1.1",
-        "rxjs": "6.5.3",
-        "webpack-sources": "1.4.3"
-      },
-      "engines": {
-        "node": ">= 10.13.0",
-        "npm": ">= 6.11.0",
-        "yarn": ">= 1.13.0"
-      }
-    },
-    "node_modules/@ngtools/webpack/node_modules/rxjs": {
-      "version": "6.5.3",
-      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
-      "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
-      "dev": true,
-      "dependencies": {
-        "tslib": "^1.9.0"
-      },
-      "engines": {
-        "npm": ">=2.0.0"
-      }
-    },
-    "node_modules/@protobufjs/aspromise": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
-      "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78="
-    },
-    "node_modules/@protobufjs/base64": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
-      "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
-    },
-    "node_modules/@protobufjs/codegen": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
-      "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
-    },
-    "node_modules/@protobufjs/eventemitter": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
-      "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A="
-    },
-    "node_modules/@protobufjs/fetch": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
-      "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=",
-      "dependencies": {
-        "@protobufjs/aspromise": "^1.1.1",
-        "@protobufjs/inquire": "^1.1.0"
-      }
-    },
-    "node_modules/@protobufjs/float": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
-      "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E="
-    },
-    "node_modules/@protobufjs/inquire": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
-      "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik="
-    },
-    "node_modules/@protobufjs/path": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
-      "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0="
-    },
-    "node_modules/@protobufjs/pool": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
-      "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q="
-    },
-    "node_modules/@protobufjs/utf8": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
-      "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="
-    },
-    "node_modules/@schematics/angular": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.0.7.tgz",
-      "integrity": "sha512-3UCeexYx/YVo3kboyPZ8KgqBTduMA18AAm3s2yrC0qj41fBFVVZAZLa74uouTf4RYVgy9kR7J3uv6VLxrJPOnQ==",
-      "dev": true,
-      "dependencies": {
-        "@angular-devkit/core": "9.0.7",
-        "@angular-devkit/schematics": "9.0.7"
-      },
-      "engines": {
-        "node": ">= 10.13.0",
-        "npm": ">= 6.11.0",
-        "yarn": ">= 1.13.0"
-      }
-    },
-    "node_modules/@schematics/update": {
-      "version": "0.900.7",
-      "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.900.7.tgz",
-      "integrity": "sha512-e9tX2DGNYfj/k9mVICpQt2bWIYyD92dlsip7LzPeZGt+R9zCp5w19uBLa8Z00OgEGzFR1krhRvkQE5OxkkAnVw==",
-      "dev": true,
-      "dependencies": {
-        "@angular-devkit/core": "9.0.7",
-        "@angular-devkit/schematics": "9.0.7",
-        "@yarnpkg/lockfile": "1.1.0",
-        "ini": "1.3.5",
-        "npm-package-arg": "^7.0.0",
-        "pacote": "9.5.8",
-        "rxjs": "6.5.3",
-        "semver": "6.3.0",
-        "semver-intersect": "1.4.0"
-      },
-      "engines": {
-        "node": ">= 10.13.0",
-        "npm": ">= 6.11.0",
-        "yarn": ">= 1.13.0"
-      }
-    },
-    "node_modules/@schematics/update/node_modules/npm-package-arg": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz",
-      "integrity": "sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==",
-      "dev": true,
-      "dependencies": {
-        "hosted-git-info": "^3.0.2",
-        "osenv": "^0.1.5",
-        "semver": "^5.6.0",
-        "validate-npm-package-name": "^3.0.0"
-      }
-    },
-    "node_modules/@schematics/update/node_modules/npm-package-arg/node_modules/semver": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/@schematics/update/node_modules/rxjs": {
-      "version": "6.5.3",
-      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
-      "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
-      "dev": true,
-      "dependencies": {
-        "tslib": "^1.9.0"
-      },
-      "engines": {
-        "npm": ">=2.0.0"
-      }
-    },
-    "node_modules/@sindresorhus/is": {
-      "version": "0.14.0",
-      "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
-      "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@szmarczak/http-timer": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
-      "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
-      "dev": true,
-      "dependencies": {
-        "defer-to-connect": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@types/duplexify": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@types/duplexify/-/duplexify-3.6.0.tgz",
-      "integrity": "sha512-5zOA53RUlzN74bvrSGwjudssD9F3a797sDZQkiYpUOxW+WHaXTCPz4/d5Dgi6FKnOqZ2CpaTo0DhgIfsXAOE/A==",
-      "dev": true,
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/estree": {
-      "version": "0.0.46",
-      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz",
-      "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==",
-      "dev": true
-    },
-    "node_modules/@types/fs-extra": {
-      "version": "8.1.1",
-      "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.1.tgz",
-      "integrity": "sha512-TcUlBem321DFQzBNuz8p0CLLKp0VvF/XH9E4KHNmgwyp4E3AfgI5cjiIVZWlbfThBop2qxFIh4+LeY6hVWWZ2w==",
-      "dev": true,
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/glob": {
-      "version": "7.1.3",
-      "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz",
-      "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==",
-      "dev": true,
-      "dependencies": {
-        "@types/minimatch": "*",
-        "@types/node": "*"
-      }
-    },
-    "node_modules/@types/jasmine": {
-      "version": "3.5.14",
-      "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.14.tgz",
-      "integrity": "sha512-Fkgk536sHPqcOtd+Ow+WiUNuk0TSo/BntKkF8wSvcd6M2FvPjeXcUE6Oz/bwDZiUZEaXLslAgw00Q94Pnx6T4w==",
-      "dev": true
-    },
-    "node_modules/@types/jasminewd2": {
-      "version": "2.0.8",
-      "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.8.tgz",
-      "integrity": "sha512-d9p31r7Nxk0ZH0U39PTH0hiDlJ+qNVGjlt1ucOoTUptxb2v+Y5VMnsxfwN+i3hK4yQnqBi3FMmoMFcd1JHDxdg==",
-      "dev": true,
-      "dependencies": {
-        "@types/jasmine": "*"
-      }
-    },
-    "node_modules/@types/json-schema": {
-      "version": "7.0.7",
-      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz",
-      "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==",
-      "dev": true
-    },
-    "node_modules/@types/long": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz",
-      "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w=="
-    },
-    "node_modules/@types/minimatch": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
-      "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
-      "dev": true
-    },
-    "node_modules/@types/node": {
-      "version": "12.19.15",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.15.tgz",
-      "integrity": "sha512-lowukE3GUI+VSYSu6VcBXl14d61Rp5hA1D+61r16qnwC0lYNSqdxcvRh0pswejorHfS+HgwBasM8jLXz0/aOsw=="
-    },
-    "node_modules/@types/pdfjs-dist": {
-      "version": "2.1.7",
-      "resolved": "https://registry.npmjs.org/@types/pdfjs-dist/-/pdfjs-dist-2.1.7.tgz",
-      "integrity": "sha512-nQIwcPUhkAIyn7x9NS0lR/qxYfd5unRtfGkMjvpgF4Sh28IXftRymaNmFKTTdejDNY25NDGSIyjwj/BRwAPexg=="
-    },
-    "node_modules/@types/q": {
-      "version": "1.5.4",
-      "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz",
-      "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==",
-      "dev": true
-    },
-    "node_modules/@types/selenium-webdriver": {
-      "version": "3.0.17",
-      "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz",
-      "integrity": "sha512-tGomyEuzSC1H28y2zlW6XPCaDaXFaD6soTdb4GNdmte2qfHtrKqhy0ZFs4r/1hpazCfEZqeTSRLvSasmEx89uw==",
-      "dev": true
-    },
-    "node_modules/@types/source-list-map": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz",
-      "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==",
-      "dev": true
-    },
-    "node_modules/@types/webpack-sources": {
-      "version": "0.1.8",
-      "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.8.tgz",
-      "integrity": "sha512-JHB2/xZlXOjzjBB6fMOpH1eQAfsrpqVVIbneE0Rok16WXwFaznaI5vfg75U5WgGJm7V9W1c4xeRQDjX/zwvghA==",
-      "dev": true,
-      "dependencies": {
-        "@types/node": "*",
-        "@types/source-list-map": "*",
-        "source-map": "^0.6.1"
-      }
-    },
-    "node_modules/@types/webpack-sources/node_modules/source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/@webassemblyjs/ast": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz",
-      "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==",
-      "dev": true,
-      "dependencies": {
-        "@webassemblyjs/helper-module-context": "1.8.5",
-        "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
-        "@webassemblyjs/wast-parser": "1.8.5"
-      }
-    },
-    "node_modules/@webassemblyjs/floating-point-hex-parser": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz",
-      "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==",
-      "dev": true
-    },
-    "node_modules/@webassemblyjs/helper-api-error": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz",
-      "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==",
-      "dev": true
-    },
-    "node_modules/@webassemblyjs/helper-buffer": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz",
-      "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==",
-      "dev": true
-    },
-    "node_modules/@webassemblyjs/helper-code-frame": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz",
-      "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==",
-      "dev": true,
-      "dependencies": {
-        "@webassemblyjs/wast-printer": "1.8.5"
-      }
-    },
-    "node_modules/@webassemblyjs/helper-fsm": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz",
-      "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==",
-      "dev": true
-    },
-    "node_modules/@webassemblyjs/helper-module-context": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz",
-      "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==",
-      "dev": true,
-      "dependencies": {
-        "@webassemblyjs/ast": "1.8.5",
-        "mamacro": "^0.0.3"
-      }
-    },
-    "node_modules/@webassemblyjs/helper-wasm-bytecode": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz",
-      "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==",
-      "dev": true
-    },
-    "node_modules/@webassemblyjs/helper-wasm-section": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz",
-      "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==",
-      "dev": true,
-      "dependencies": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/helper-buffer": "1.8.5",
-        "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
-        "@webassemblyjs/wasm-gen": "1.8.5"
-      }
-    },
-    "node_modules/@webassemblyjs/ieee754": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz",
-      "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==",
-      "dev": true,
-      "dependencies": {
-        "@xtuc/ieee754": "^1.2.0"
-      }
-    },
-    "node_modules/@webassemblyjs/leb128": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz",
-      "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==",
-      "dev": true,
-      "dependencies": {
-        "@xtuc/long": "4.2.2"
-      }
-    },
-    "node_modules/@webassemblyjs/utf8": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz",
-      "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==",
-      "dev": true
-    },
-    "node_modules/@webassemblyjs/wasm-edit": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz",
-      "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==",
-      "dev": true,
-      "dependencies": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/helper-buffer": "1.8.5",
-        "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
-        "@webassemblyjs/helper-wasm-section": "1.8.5",
-        "@webassemblyjs/wasm-gen": "1.8.5",
-        "@webassemblyjs/wasm-opt": "1.8.5",
-        "@webassemblyjs/wasm-parser": "1.8.5",
-        "@webassemblyjs/wast-printer": "1.8.5"
-      }
-    },
-    "node_modules/@webassemblyjs/wasm-gen": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz",
-      "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==",
-      "dev": true,
-      "dependencies": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
-        "@webassemblyjs/ieee754": "1.8.5",
-        "@webassemblyjs/leb128": "1.8.5",
-        "@webassemblyjs/utf8": "1.8.5"
-      }
-    },
-    "node_modules/@webassemblyjs/wasm-opt": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz",
-      "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==",
-      "dev": true,
-      "dependencies": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/helper-buffer": "1.8.5",
-        "@webassemblyjs/wasm-gen": "1.8.5",
-        "@webassemblyjs/wasm-parser": "1.8.5"
-      }
-    },
-    "node_modules/@webassemblyjs/wasm-parser": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz",
-      "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==",
-      "dev": true,
-      "dependencies": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/helper-api-error": "1.8.5",
-        "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
-        "@webassemblyjs/ieee754": "1.8.5",
-        "@webassemblyjs/leb128": "1.8.5",
-        "@webassemblyjs/utf8": "1.8.5"
-      }
-    },
-    "node_modules/@webassemblyjs/wast-parser": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz",
-      "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==",
-      "dev": true,
-      "dependencies": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/floating-point-hex-parser": "1.8.5",
-        "@webassemblyjs/helper-api-error": "1.8.5",
-        "@webassemblyjs/helper-code-frame": "1.8.5",
-        "@webassemblyjs/helper-fsm": "1.8.5",
-        "@xtuc/long": "4.2.2"
-      }
-    },
-    "node_modules/@webassemblyjs/wast-printer": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz",
-      "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==",
-      "dev": true,
-      "dependencies": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/wast-parser": "1.8.5",
-        "@xtuc/long": "4.2.2"
-      }
-    },
-    "node_modules/@xtuc/ieee754": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
-      "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
-      "dev": true
-    },
-    "node_modules/@xtuc/long": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
-      "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
-      "dev": true
-    },
-    "node_modules/@yarnpkg/lockfile": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz",
-      "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==",
-      "dev": true
-    },
-    "node_modules/abbrev": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
-      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
-      "dev": true,
-      "optional": true
-    },
-    "node_modules/abort-controller": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
-      "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
-      "dependencies": {
-        "event-target-shim": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=6.5"
-      }
-    },
-    "node_modules/accepts": {
-      "version": "1.3.7",
-      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
-      "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
-      "dev": true,
-      "dependencies": {
-        "mime-types": "~2.1.24",
-        "negotiator": "0.6.2"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/acorn": {
-      "version": "7.4.1",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
-      "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
-      "dev": true,
-      "bin": {
-        "acorn": "bin/acorn"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/adm-zip": {
-      "version": "0.4.16",
-      "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz",
-      "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.3.0"
-      }
-    },
-    "node_modules/after": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
-      "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
-      "dev": true
-    },
-    "node_modules/agent-base": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
-      "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
-      "dev": true,
-      "dependencies": {
-        "es6-promisify": "^5.0.0"
-      },
-      "engines": {
-        "node": ">= 4.0.0"
-      }
-    },
-    "node_modules/agentkeepalive": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz",
-      "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==",
-      "dev": true,
-      "dependencies": {
-        "humanize-ms": "^1.2.1"
-      },
-      "engines": {
-        "node": ">= 4.0.0"
-      }
-    },
-    "node_modules/aggregate-error": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
-      "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
-      "dev": true,
-      "dependencies": {
-        "clean-stack": "^2.0.0",
-        "indent-string": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/ajv": {
-      "version": "6.10.2",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
-      "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
-      "dev": true,
-      "dependencies": {
-        "fast-deep-equal": "^2.0.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      }
-    },
-    "node_modules/ajv-errors": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
-      "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
-      "dev": true
-    },
-    "node_modules/ajv-keywords": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
-      "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
-      "dev": true
-    },
-    "node_modules/alphanum-sort": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
-      "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
-      "dev": true
-    },
-    "node_modules/angular-walkthrough": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/angular-walkthrough/-/angular-walkthrough-0.8.2.tgz",
-      "integrity": "sha512-UoxFGFO1k99JP4LlS6aah0jD27389MmalGKKudM2b6cUl8ZLf6WK5oe+prsEBf/PNc3mnDSjHVVDLoH0V4cDtQ==",
-      "dependencies": {
-        "tslib": "^1.9.0"
-      }
-    },
-    "node_modules/ansi-align": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz",
-      "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==",
-      "dev": true,
-      "dependencies": {
-        "string-width": "^3.0.0"
-      }
-    },
-    "node_modules/ansi-align/node_modules/ansi-regex": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-      "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/ansi-align/node_modules/emoji-regex": {
-      "version": "7.0.3",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-      "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
-      "dev": true
-    },
-    "node_modules/ansi-align/node_modules/string-width": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-      "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-      "dev": true,
-      "dependencies": {
-        "emoji-regex": "^7.0.1",
-        "is-fullwidth-code-point": "^2.0.0",
-        "strip-ansi": "^5.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/ansi-align/node_modules/strip-ansi": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-      "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/ansi-colors": {
-      "version": "3.2.4",
-      "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
-      "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/ansi-escapes": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
-      "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/ansi-html": {
-      "version": "0.0.7",
-      "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
-      "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
-      "dev": true,
-      "engines": [
-        "node >= 0.8.0"
-      ],
-      "bin": {
-        "ansi-html": "bin/ansi-html"
-      }
-    },
-    "node_modules/ansi-regex": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/ansi-styles": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-      "dev": true,
-      "dependencies": {
-        "color-convert": "^1.9.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/ansicolors": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz",
-      "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=",
-      "dev": true
-    },
-    "node_modules/anymatch": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
-      "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
-      "dev": true,
-      "dependencies": {
-        "normalize-path": "^3.0.0",
-        "picomatch": "^2.0.4"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/apexcharts": {
-      "version": "3.24.0",
-      "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.24.0.tgz",
-      "integrity": "sha512-iT6czJCIVrmAtrcO90MZTQCvC+xi6R6Acf0jNH/d40FVTtCfcqECuKIh5iAMyOTtgUb7+fQ8rbadH2bm1kbL9Q==",
-      "dependencies": {
-        "svg.draggable.js": "^2.2.2",
-        "svg.easing.js": "^2.0.0",
-        "svg.filter.js": "^2.0.2",
-        "svg.pathmorphing.js": "^0.1.3",
-        "svg.resize.js": "^1.4.3",
-        "svg.select.js": "^3.0.1"
-      },
-      "funding": {
-        "url": "https://github.com/apexcharts/apexcharts.js?sponsor=1"
-      }
-    },
-    "node_modules/app-root-path": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.2.1.tgz",
-      "integrity": "sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 6.0.0"
-      }
-    },
-    "node_modules/append-transform": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz",
-      "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==",
-      "dev": true,
-      "dependencies": {
-        "default-require-extensions": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/aproba": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
-      "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
-      "dev": true
-    },
-    "node_modules/archiver": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.1.1.tgz",
-      "integrity": "sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==",
-      "dev": true,
-      "dependencies": {
-        "archiver-utils": "^2.1.0",
-        "async": "^2.6.3",
-        "buffer-crc32": "^0.2.1",
-        "glob": "^7.1.4",
-        "readable-stream": "^3.4.0",
-        "tar-stream": "^2.1.0",
-        "zip-stream": "^2.1.2"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/archiver-utils": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz",
-      "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==",
-      "dev": true,
-      "dependencies": {
-        "glob": "^7.1.4",
-        "graceful-fs": "^4.2.0",
-        "lazystream": "^1.0.0",
-        "lodash.defaults": "^4.2.0",
-        "lodash.difference": "^4.5.0",
-        "lodash.flatten": "^4.4.0",
-        "lodash.isplainobject": "^4.0.6",
-        "lodash.union": "^4.6.0",
-        "normalize-path": "^3.0.0",
-        "readable-stream": "^2.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/archiver/node_modules/readable-stream": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-      "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.3",
-        "string_decoder": "^1.1.1",
-        "util-deprecate": "^1.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/are-we-there-yet": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
-      "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "delegates": "^1.0.0",
-        "readable-stream": "^2.0.6"
-      }
-    },
-    "node_modules/arg": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
-      "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
-      "dev": true
-    },
-    "node_modules/argparse": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
-      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
-      "dev": true,
-      "dependencies": {
-        "sprintf-js": "~1.0.2"
-      }
-    },
-    "node_modules/aria-query": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz",
-      "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=",
-      "dev": true,
-      "dependencies": {
-        "ast-types-flow": "0.0.7",
-        "commander": "^2.11.0"
-      }
-    },
-    "node_modules/arr-diff": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
-      "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/arr-flatten": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
-      "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/arr-union": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
-      "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/array-flatten": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
-      "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==",
-      "dev": true
-    },
-    "node_modules/array-union": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
-      "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
-      "dev": true,
-      "dependencies": {
-        "array-uniq": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/array-uniq": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
-      "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/array-unique": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
-      "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/arraybuffer.slice": {
-      "version": "0.0.7",
-      "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
-      "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==",
-      "dev": true
-    },
-    "node_modules/arrify": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
-      "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/as-array": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/as-array/-/as-array-2.0.0.tgz",
-      "integrity": "sha1-TwSAXYf4/OjlEbwhCPjl46KH1Uc=",
-      "dev": true
-    },
-    "node_modules/asap": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
-      "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
-      "dev": true
-    },
-    "node_modules/asn1": {
-      "version": "0.2.4",
-      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
-      "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
-      "dev": true,
-      "dependencies": {
-        "safer-buffer": "~2.1.0"
-      }
-    },
-    "node_modules/asn1.js": {
-      "version": "5.4.1",
-      "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
-      "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
-      "dev": true,
-      "dependencies": {
-        "bn.js": "^4.0.0",
-        "inherits": "^2.0.1",
-        "minimalistic-assert": "^1.0.0",
-        "safer-buffer": "^2.1.0"
-      }
-    },
-    "node_modules/asn1.js/node_modules/bn.js": {
-      "version": "4.11.9",
-      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
-      "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
-      "dev": true
-    },
-    "node_modules/assert": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
-      "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
-      "dev": true,
-      "dependencies": {
-        "object-assign": "^4.1.1",
-        "util": "0.10.3"
-      }
-    },
-    "node_modules/assert-plus": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.8"
-      }
-    },
-    "node_modules/assert/node_modules/inherits": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
-      "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
-      "dev": true
-    },
-    "node_modules/assert/node_modules/util": {
-      "version": "0.10.3",
-      "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
-      "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
-      "dev": true,
-      "dependencies": {
-        "inherits": "2.0.1"
-      }
-    },
-    "node_modules/assign-symbols": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
-      "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/ast-types-flow": {
-      "version": "0.0.7",
-      "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
-      "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=",
-      "dev": true
-    },
-    "node_modules/async": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
-      "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
-      "dev": true,
-      "dependencies": {
-        "lodash": "^4.17.14"
-      }
-    },
-    "node_modules/async-each": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
-      "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
-      "dev": true
-    },
-    "node_modules/async-limiter": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
-      "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
-      "dev": true
-    },
-    "node_modules/asynckit": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
-      "dev": true
-    },
-    "node_modules/atob": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
-      "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
-      "dev": true,
-      "bin": {
-        "atob": "bin/atob.js"
-      },
-      "engines": {
-        "node": ">= 4.5.0"
-      }
-    },
-    "node_modules/autoprefixer": {
-      "version": "9.7.1",
-      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.1.tgz",
-      "integrity": "sha512-w3b5y1PXWlhYulevrTJ0lizkQ5CyqfeU6BIRDbuhsMupstHQOeb1Ur80tcB1zxSu7AwyY/qCQ7Vvqklh31ZBFw==",
-      "dev": true,
-      "dependencies": {
-        "browserslist": "^4.7.2",
-        "caniuse-lite": "^1.0.30001006",
-        "chalk": "^2.4.2",
-        "normalize-range": "^0.1.2",
-        "num2fraction": "^1.2.2",
-        "postcss": "^7.0.21",
-        "postcss-value-parser": "^4.0.2"
-      },
-      "bin": {
-        "autoprefixer": "bin/autoprefixer"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/aws-sign2": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
-      "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/aws4": {
-      "version": "1.11.0",
-      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
-      "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
-      "dev": true
-    },
-    "node_modules/axobject-query": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz",
-      "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==",
-      "dev": true,
-      "dependencies": {
-        "ast-types-flow": "0.0.7"
-      }
-    },
-    "node_modules/babel-loader": {
-      "version": "8.0.6",
-      "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz",
-      "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==",
-      "dev": true,
-      "dependencies": {
-        "find-cache-dir": "^2.0.0",
-        "loader-utils": "^1.0.2",
-        "mkdirp": "^0.5.1",
-        "pify": "^4.0.1"
-      },
-      "engines": {
-        "node": ">= 6.9"
-      }
-    },
-    "node_modules/babel-loader/node_modules/find-cache-dir": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
-      "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
-      "dev": true,
-      "dependencies": {
-        "commondir": "^1.0.1",
-        "make-dir": "^2.0.0",
-        "pkg-dir": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/babel-plugin-dynamic-import-node": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
-      "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
-      "dev": true,
-      "dependencies": {
-        "object.assign": "^4.1.0"
-      }
-    },
-    "node_modules/backo2": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
-      "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=",
-      "dev": true
-    },
-    "node_modules/balanced-match": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
-      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
-      "dev": true
-    },
-    "node_modules/base": {
-      "version": "0.11.2",
-      "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
-      "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
-      "dev": true,
-      "dependencies": {
-        "cache-base": "^1.0.1",
-        "class-utils": "^0.3.5",
-        "component-emitter": "^1.2.1",
-        "define-property": "^1.0.0",
-        "isobject": "^3.0.1",
-        "mixin-deep": "^1.2.0",
-        "pascalcase": "^0.1.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/base/node_modules/define-property": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-      "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-      "dev": true,
-      "dependencies": {
-        "is-descriptor": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/base/node_modules/is-accessor-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-      "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/base/node_modules/is-data-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-      "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/base/node_modules/is-descriptor": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-      "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-      "dev": true,
-      "dependencies": {
-        "is-accessor-descriptor": "^1.0.0",
-        "is-data-descriptor": "^1.0.0",
-        "kind-of": "^6.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/base64-arraybuffer": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
-      "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6.0"
-      }
-    },
-    "node_modules/base64-js": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
-      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
-    },
-    "node_modules/base64id": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
-      "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4.0"
-      }
-    },
-    "node_modules/basic-auth": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
-      "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
-      "dev": true,
-      "dependencies": {
-        "safe-buffer": "5.1.2"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/basic-auth-connect": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz",
-      "integrity": "sha1-/bC0OWLKe0BFanwrtI/hc9otISI=",
-      "dev": true
-    },
-    "node_modules/batch": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
-      "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
-      "dev": true
-    },
-    "node_modules/bcrypt-pbkdf": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
-      "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
-      "dev": true,
-      "dependencies": {
-        "tweetnacl": "^0.14.3"
-      }
-    },
-    "node_modules/better-assert": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
-      "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
-      "dev": true,
-      "dependencies": {
-        "callsite": "1.0.0"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/big-integer": {
-      "version": "1.6.48",
-      "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz",
-      "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.6"
-      }
-    },
-    "node_modules/big.js": {
-      "version": "5.2.2",
-      "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
-      "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/bignumber.js": {
-      "version": "9.0.1",
-      "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz",
-      "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==",
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/binary": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
-      "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=",
-      "dev": true,
-      "dependencies": {
-        "buffers": "~0.1.1",
-        "chainsaw": "~0.1.0"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/binary-extensions": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
-      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/bindings": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
-      "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "file-uri-to-path": "1.0.0"
-      }
-    },
-    "node_modules/bl": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
-      "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
-      "dev": true,
-      "dependencies": {
-        "buffer": "^5.5.0",
-        "inherits": "^2.0.4",
-        "readable-stream": "^3.4.0"
-      }
-    },
-    "node_modules/bl/node_modules/buffer": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
-      "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ],
-      "dependencies": {
-        "base64-js": "^1.3.1",
-        "ieee754": "^1.1.13"
-      }
-    },
-    "node_modules/bl/node_modules/readable-stream": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-      "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.3",
-        "string_decoder": "^1.1.1",
-        "util-deprecate": "^1.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/blakejs": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz",
-      "integrity": "sha1-ad+S75U6qIylGjLfarHFShVfx6U=",
-      "dev": true
-    },
-    "node_modules/blob": {
-      "version": "0.0.5",
-      "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz",
-      "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==",
-      "dev": true
-    },
-    "node_modules/blocking-proxy": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz",
-      "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==",
-      "dev": true,
-      "dependencies": {
-        "minimist": "^1.2.0"
-      },
-      "bin": {
-        "blocking-proxy": "built/lib/bin.js"
-      },
-      "engines": {
-        "node": ">=6.9.x"
-      }
-    },
-    "node_modules/bluebird": {
-      "version": "3.7.2",
-      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
-      "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
-      "dev": true
-    },
-    "node_modules/bn.js": {
-      "version": "5.1.3",
-      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz",
-      "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==",
-      "dev": true
-    },
-    "node_modules/body-parser": {
-      "version": "1.19.0",
-      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
-      "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
-      "dev": true,
-      "dependencies": {
-        "bytes": "3.1.0",
-        "content-type": "~1.0.4",
-        "debug": "2.6.9",
-        "depd": "~1.1.2",
-        "http-errors": "1.7.2",
-        "iconv-lite": "0.4.24",
-        "on-finished": "~2.3.0",
-        "qs": "6.7.0",
-        "raw-body": "2.4.0",
-        "type-is": "~1.6.17"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/body-parser/node_modules/bytes": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
-      "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/body-parser/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/body-parser/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
-    },
-    "node_modules/body-parser/node_modules/qs": {
-      "version": "6.7.0",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
-      "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.6"
-      }
-    },
-    "node_modules/bonjour": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
-      "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
-      "dev": true,
-      "dependencies": {
-        "array-flatten": "^2.1.0",
-        "deep-equal": "^1.0.1",
-        "dns-equal": "^1.0.0",
-        "dns-txt": "^2.0.2",
-        "multicast-dns": "^6.0.1",
-        "multicast-dns-service-types": "^1.1.0"
-      }
-    },
-    "node_modules/boolbase": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
-      "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
-      "dev": true
-    },
-    "node_modules/bootstrap": {
-      "version": "4.6.0",
-      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.0.tgz",
-      "integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw=="
-    },
-    "node_modules/boxen": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz",
-      "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==",
-      "dev": true,
-      "dependencies": {
-        "ansi-align": "^3.0.0",
-        "camelcase": "^5.3.1",
-        "chalk": "^3.0.0",
-        "cli-boxes": "^2.2.0",
-        "string-width": "^4.1.0",
-        "term-size": "^2.1.0",
-        "type-fest": "^0.8.1",
-        "widest-line": "^3.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/boxen/node_modules/ansi-regex": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-      "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/boxen/node_modules/ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "dev": true,
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/boxen/node_modules/chalk": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-      "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
-      "dev": true,
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/boxen/node_modules/color-convert": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "dev": true,
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/boxen/node_modules/color-name": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-      "dev": true
-    },
-    "node_modules/boxen/node_modules/has-flag": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/boxen/node_modules/is-fullwidth-code-point": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/boxen/node_modules/string-width": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
-      "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
-      "dev": true,
-      "dependencies": {
-        "emoji-regex": "^8.0.0",
-        "is-fullwidth-code-point": "^3.0.0",
-        "strip-ansi": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/boxen/node_modules/strip-ansi": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-      "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/boxen/node_modules/supports-color": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-      "dev": true,
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/brace-expansion": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-      "dev": true,
-      "dependencies": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "node_modules/braces": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
-      "dev": true,
-      "dependencies": {
-        "fill-range": "^7.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/brorand": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
-      "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
-      "dev": true
-    },
-    "node_modules/browserify-aes": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
-      "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
-      "dev": true,
-      "dependencies": {
-        "buffer-xor": "^1.0.3",
-        "cipher-base": "^1.0.0",
-        "create-hash": "^1.1.0",
-        "evp_bytestokey": "^1.0.3",
-        "inherits": "^2.0.1",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "node_modules/browserify-cipher": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
-      "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
-      "dev": true,
-      "dependencies": {
-        "browserify-aes": "^1.0.4",
-        "browserify-des": "^1.0.0",
-        "evp_bytestokey": "^1.0.0"
-      }
-    },
-    "node_modules/browserify-des": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
-      "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
-      "dev": true,
-      "dependencies": {
-        "cipher-base": "^1.0.1",
-        "des.js": "^1.0.0",
-        "inherits": "^2.0.1",
-        "safe-buffer": "^5.1.2"
-      }
-    },
-    "node_modules/browserify-rsa": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
-      "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
-      "dev": true,
-      "dependencies": {
-        "bn.js": "^5.0.0",
-        "randombytes": "^2.0.1"
-      }
-    },
-    "node_modules/browserify-sign": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz",
-      "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
-      "dev": true,
-      "dependencies": {
-        "bn.js": "^5.1.1",
-        "browserify-rsa": "^4.0.1",
-        "create-hash": "^1.2.0",
-        "create-hmac": "^1.1.7",
-        "elliptic": "^6.5.3",
-        "inherits": "^2.0.4",
-        "parse-asn1": "^5.1.5",
-        "readable-stream": "^3.6.0",
-        "safe-buffer": "^5.2.0"
-      }
-    },
-    "node_modules/browserify-sign/node_modules/readable-stream": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-      "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.3",
-        "string_decoder": "^1.1.1",
-        "util-deprecate": "^1.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/browserify-sign/node_modules/safe-buffer": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-      "dev": true
-    },
-    "node_modules/browserify-zlib": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
-      "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
-      "dev": true,
-      "dependencies": {
-        "pako": "~1.0.5"
-      }
-    },
-    "node_modules/browserslist": {
-      "version": "4.16.1",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.1.tgz",
-      "integrity": "sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==",
-      "dev": true,
-      "dependencies": {
-        "caniuse-lite": "^1.0.30001173",
-        "colorette": "^1.2.1",
-        "electron-to-chromium": "^1.3.634",
-        "escalade": "^3.1.1",
-        "node-releases": "^1.1.69"
-      },
-      "bin": {
-        "browserslist": "cli.js"
-      },
-      "engines": {
-        "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
-      }
-    },
-    "node_modules/browserstack": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.6.1.tgz",
-      "integrity": "sha512-GxtFjpIaKdbAyzHfFDKixKO8IBT7wR3NjbzrGc78nNs/Ciys9wU3/nBtsqsWv5nDSrdI5tz0peKuzCPuNXNUiw==",
-      "dev": true,
-      "dependencies": {
-        "https-proxy-agent": "^2.2.1"
-      }
-    },
-    "node_modules/buffer": {
-      "version": "4.9.2",
-      "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
-      "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
-      "dev": true,
-      "dependencies": {
-        "base64-js": "^1.0.2",
-        "ieee754": "^1.1.4",
-        "isarray": "^1.0.0"
-      }
-    },
-    "node_modules/buffer-alloc": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
-      "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
-      "dev": true,
-      "dependencies": {
-        "buffer-alloc-unsafe": "^1.1.0",
-        "buffer-fill": "^1.0.0"
-      }
-    },
-    "node_modules/buffer-alloc-unsafe": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
-      "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
-      "dev": true
-    },
-    "node_modules/buffer-crc32": {
-      "version": "0.2.13",
-      "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
-      "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/buffer-equal-constant-time": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
-      "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
-    },
-    "node_modules/buffer-fill": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
-      "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
-      "dev": true
-    },
-    "node_modules/buffer-from": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
-      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
-      "dev": true
-    },
-    "node_modules/buffer-indexof": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
-      "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
-      "dev": true
-    },
-    "node_modules/buffer-indexof-polyfill": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz",
-      "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10"
-      }
-    },
-    "node_modules/buffer-xor": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
-      "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
-      "dev": true
-    },
-    "node_modules/buffers": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
-      "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.2.0"
-      }
-    },
-    "node_modules/builtin-modules": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
-      "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/builtin-status-codes": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
-      "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
-      "dev": true
-    },
-    "node_modules/builtins": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
-      "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=",
-      "dev": true
-    },
-    "node_modules/bytes": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
-      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/cacache": {
-      "version": "13.0.1",
-      "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz",
-      "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==",
-      "dev": true,
-      "dependencies": {
-        "chownr": "^1.1.2",
-        "figgy-pudding": "^3.5.1",
-        "fs-minipass": "^2.0.0",
-        "glob": "^7.1.4",
-        "graceful-fs": "^4.2.2",
-        "infer-owner": "^1.0.4",
-        "lru-cache": "^5.1.1",
-        "minipass": "^3.0.0",
-        "minipass-collect": "^1.0.2",
-        "minipass-flush": "^1.0.5",
-        "minipass-pipeline": "^1.2.2",
-        "mkdirp": "^0.5.1",
-        "move-concurrently": "^1.0.1",
-        "p-map": "^3.0.0",
-        "promise-inflight": "^1.0.1",
-        "rimraf": "^2.7.1",
-        "ssri": "^7.0.0",
-        "unique-filename": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/cacache/node_modules/rimraf": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-      "dev": true,
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      }
-    },
-    "node_modules/cache-base": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
-      "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
-      "dev": true,
-      "dependencies": {
-        "collection-visit": "^1.0.0",
-        "component-emitter": "^1.2.1",
-        "get-value": "^2.0.6",
-        "has-value": "^1.0.0",
-        "isobject": "^3.0.1",
-        "set-value": "^2.0.0",
-        "to-object-path": "^0.3.0",
-        "union-value": "^1.0.0",
-        "unset-value": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/cacheable-request": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
-      "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
-      "dev": true,
-      "dependencies": {
-        "clone-response": "^1.0.2",
-        "get-stream": "^5.1.0",
-        "http-cache-semantics": "^4.0.0",
-        "keyv": "^3.0.0",
-        "lowercase-keys": "^2.0.0",
-        "normalize-url": "^4.1.0",
-        "responselike": "^1.0.2"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/cacheable-request/node_modules/get-stream": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
-      "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
-      "dev": true,
-      "dependencies": {
-        "pump": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/cacheable-request/node_modules/http-cache-semantics": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
-      "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
-      "dev": true
-    },
-    "node_modules/cacheable-request/node_modules/lowercase-keys": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
-      "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/cacheable-request/node_modules/normalize-url": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
-      "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/call-bind": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
-      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
-      "dev": true,
-      "dependencies": {
-        "function-bind": "^1.1.1",
-        "get-intrinsic": "^1.0.2"
-      }
-    },
-    "node_modules/call-me-maybe": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
-      "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=",
-      "dev": true
-    },
-    "node_modules/caller-callsite": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
-      "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
-      "dev": true,
-      "dependencies": {
-        "callsites": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/caller-path": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
-      "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
-      "dev": true,
-      "dependencies": {
-        "caller-callsite": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/callsite": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
-      "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/callsites": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
-      "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/camelcase": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/caniuse-api": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
-      "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
-      "dev": true,
-      "dependencies": {
-        "browserslist": "^4.0.0",
-        "caniuse-lite": "^1.0.0",
-        "lodash.memoize": "^4.1.2",
-        "lodash.uniq": "^4.5.0"
-      }
-    },
-    "node_modules/caniuse-lite": {
-      "version": "1.0.30001179",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001179.tgz",
-      "integrity": "sha512-blMmO0QQujuUWZKyVrD1msR4WNDAqb/UPO1Sw2WWsQ7deoM5bJiicKnWJ1Y0NS/aGINSnKPIWBMw5luX+NDUCA==",
-      "dev": true
-    },
-    "node_modules/canonical-path": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz",
-      "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==",
-      "dev": true
-    },
-    "node_modules/cardinal": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz",
-      "integrity": "sha1-fMEFXYItISlU0HsIXeolHMe8VQU=",
-      "dev": true,
-      "dependencies": {
-        "ansicolors": "~0.3.2",
-        "redeyed": "~2.1.0"
-      },
-      "bin": {
-        "cdl": "bin/cdl.js"
-      }
-    },
-    "node_modules/caseless": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
-      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
-      "dev": true
-    },
-    "node_modules/chainsaw": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
-      "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=",
-      "dev": true,
-      "dependencies": {
-        "traverse": ">=0.3.0 <0.4"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/chalk": {
-      "version": "2.4.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-      "dev": true,
-      "dependencies": {
-        "ansi-styles": "^3.2.1",
-        "escape-string-regexp": "^1.0.5",
-        "supports-color": "^5.3.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/chardet": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
-      "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
-      "dev": true
-    },
-    "node_modules/chokidar": {
-      "version": "3.5.1",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz",
-      "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==",
-      "dev": true,
-      "dependencies": {
-        "anymatch": "~3.1.1",
-        "braces": "~3.0.2",
-        "glob-parent": "~5.1.0",
-        "is-binary-path": "~2.1.0",
-        "is-glob": "~4.0.1",
-        "normalize-path": "~3.0.0",
-        "readdirp": "~3.5.0"
-      },
-      "engines": {
-        "node": ">= 8.10.0"
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.3.1"
-      }
-    },
-    "node_modules/chokidar/node_modules/glob-parent": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
-      "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
-      "dev": true,
-      "dependencies": {
-        "is-glob": "^4.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/chownr": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
-      "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
-      "dev": true
-    },
-    "node_modules/chrome-trace-event": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz",
-      "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==",
-      "dev": true,
-      "dependencies": {
-        "tslib": "^1.9.0"
-      },
-      "engines": {
-        "node": ">=6.0"
-      }
-    },
-    "node_modules/ci-info": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
-      "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
-      "dev": true
-    },
-    "node_modules/cipher-base": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
-      "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.1",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "node_modules/circular-dependency-plugin": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.0.tgz",
-      "integrity": "sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/cjson": {
-      "version": "0.3.3",
-      "resolved": "https://registry.npmjs.org/cjson/-/cjson-0.3.3.tgz",
-      "integrity": "sha1-qS2ceG5b+bkwgGMp7gXV0yYbSvo=",
-      "dev": true,
-      "dependencies": {
-        "json-parse-helpfulerror": "^1.0.3"
-      },
-      "engines": {
-        "node": ">= 0.3.0"
-      }
-    },
-    "node_modules/class-utils": {
-      "version": "0.3.6",
-      "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
-      "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
-      "dev": true,
-      "dependencies": {
-        "arr-union": "^3.1.0",
-        "define-property": "^0.2.5",
-        "isobject": "^3.0.0",
-        "static-extend": "^0.1.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/class-utils/node_modules/define-property": {
-      "version": "0.2.5",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-      "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-      "dev": true,
-      "dependencies": {
-        "is-descriptor": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/clean-stack": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
-      "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/cli-boxes": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
-      "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/cli-color": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz",
-      "integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^2.1.1",
-        "d": "1",
-        "es5-ext": "^0.10.46",
-        "es6-iterator": "^2.0.3",
-        "memoizee": "^0.4.14",
-        "timers-ext": "^0.1.5"
-      }
-    },
-    "node_modules/cli-cursor": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
-      "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
-      "dev": true,
-      "dependencies": {
-        "restore-cursor": "^3.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/cli-spinners": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz",
-      "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/cli-table": {
-      "version": "0.3.4",
-      "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.4.tgz",
-      "integrity": "sha512-1vinpnX/ZERcmE443i3SZTmU5DF0rPO9DrL4I2iVAllhxzCM9SzPlHnz19fsZB78htkKZvYBvj6SZ6vXnaxmTA==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^2.4.1",
-        "string-width": "^4.2.0"
-      },
-      "engines": {
-        "node": ">= 10.0.0"
-      }
-    },
-    "node_modules/cli-table/node_modules/ansi-regex": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-      "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/cli-table/node_modules/is-fullwidth-code-point": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/cli-table/node_modules/string-width": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
-      "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
-      "dev": true,
-      "dependencies": {
-        "emoji-regex": "^8.0.0",
-        "is-fullwidth-code-point": "^3.0.0",
-        "strip-ansi": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/cli-table/node_modules/strip-ansi": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-      "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/cli-width": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
-      "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
-      "dev": true
-    },
-    "node_modules/cliui": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
-      "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
-      "dev": true,
-      "dependencies": {
-        "string-width": "^2.1.1",
-        "strip-ansi": "^4.0.0",
-        "wrap-ansi": "^2.0.0"
-      }
-    },
-    "node_modules/cliui/node_modules/ansi-regex": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-      "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/cliui/node_modules/strip-ansi": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-      "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/clone": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
-      "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.8"
-      }
-    },
-    "node_modules/clone-deep": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
-      "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
-      "dev": true,
-      "dependencies": {
-        "is-plain-object": "^2.0.4",
-        "kind-of": "^6.0.2",
-        "shallow-clone": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/clone-response": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
-      "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
-      "dev": true,
-      "dependencies": {
-        "mimic-response": "^1.0.0"
-      }
-    },
-    "node_modules/coa": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz",
-      "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==",
-      "dev": true,
-      "dependencies": {
-        "@types/q": "^1.5.1",
-        "chalk": "^2.4.1",
-        "q": "^1.1.2"
-      },
-      "engines": {
-        "node": ">= 4.0"
-      }
-    },
-    "node_modules/code-point-at": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
-      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/codelyzer": {
-      "version": "5.2.2",
-      "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-5.2.2.tgz",
-      "integrity": "sha512-jB4FZ1Sx7kZhvZVdf+N2BaKTdrrNZOL0Bj10RRfrhHrb3zEvXjJvvq298JPMJAiyiCS/v4zs1QlGU0ip7xGqeA==",
-      "dev": true,
-      "dependencies": {
-        "app-root-path": "^2.2.1",
-        "aria-query": "^3.0.0",
-        "axobject-query": "2.0.2",
-        "css-selector-tokenizer": "^0.7.1",
-        "cssauron": "^1.4.0",
-        "damerau-levenshtein": "^1.0.4",
-        "semver-dsl": "^1.0.1",
-        "source-map": "^0.5.7",
-        "sprintf-js": "^1.1.2"
-      }
-    },
-    "node_modules/codelyzer/node_modules/source-map": {
-      "version": "0.5.7",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/codelyzer/node_modules/sprintf-js": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
-      "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
-      "dev": true
-    },
-    "node_modules/collection-visit": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
-      "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
-      "dev": true,
-      "dependencies": {
-        "map-visit": "^1.0.0",
-        "object-visit": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/color": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz",
-      "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==",
-      "dev": true,
-      "dependencies": {
-        "color-convert": "^1.9.1",
-        "color-string": "^1.5.4"
-      }
-    },
-    "node_modules/color-convert": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
-      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
-      "dev": true,
-      "dependencies": {
-        "color-name": "1.1.3"
-      }
-    },
-    "node_modules/color-name": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
-      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
-      "dev": true
-    },
-    "node_modules/color-string": {
-      "version": "1.5.4",
-      "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz",
-      "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==",
-      "dev": true,
-      "dependencies": {
-        "color-name": "^1.0.0",
-        "simple-swizzle": "^0.2.2"
-      }
-    },
-    "node_modules/colorette": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz",
-      "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==",
-      "dev": true
-    },
-    "node_modules/colors": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
-      "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.1.90"
-      }
-    },
-    "node_modules/colorspace": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz",
-      "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==",
-      "dev": true,
-      "dependencies": {
-        "color": "3.0.x",
-        "text-hex": "1.0.x"
-      }
-    },
-    "node_modules/colorspace/node_modules/color": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz",
-      "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==",
-      "dev": true,
-      "dependencies": {
-        "color-convert": "^1.9.1",
-        "color-string": "^1.5.2"
-      }
-    },
-    "node_modules/combined-stream": {
-      "version": "1.0.8",
-      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
-      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
-      "dev": true,
-      "dependencies": {
-        "delayed-stream": "~1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/commander": {
-      "version": "2.20.3",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
-      "dev": true
-    },
-    "node_modules/commondir": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
-      "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
-      "dev": true
-    },
-    "node_modules/compare-semver": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/compare-semver/-/compare-semver-1.1.0.tgz",
-      "integrity": "sha1-fAp5onu4C2xplERfgpWCWdPQIVM=",
-      "dev": true,
-      "dependencies": {
-        "semver": "^5.0.1"
-      }
-    },
-    "node_modules/compare-semver/node_modules/semver": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/compare-versions": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz",
-      "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==",
-      "dev": true
-    },
-    "node_modules/component-bind": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
-      "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=",
-      "dev": true
-    },
-    "node_modules/component-emitter": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
-      "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
-      "dev": true
-    },
-    "node_modules/component-inherit": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
-      "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=",
-      "dev": true
-    },
-    "node_modules/compress-commons": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-2.1.1.tgz",
-      "integrity": "sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==",
-      "dev": true,
-      "dependencies": {
-        "buffer-crc32": "^0.2.13",
-        "crc32-stream": "^3.0.1",
-        "normalize-path": "^3.0.0",
-        "readable-stream": "^2.3.6"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/compressible": {
-      "version": "2.0.18",
-      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
-      "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
-      "dev": true,
-      "dependencies": {
-        "mime-db": ">= 1.43.0 < 2"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/compression": {
-      "version": "1.7.4",
-      "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
-      "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
-      "dev": true,
-      "dependencies": {
-        "accepts": "~1.3.5",
-        "bytes": "3.0.0",
-        "compressible": "~2.0.16",
-        "debug": "2.6.9",
-        "on-headers": "~1.0.2",
-        "safe-buffer": "5.1.2",
-        "vary": "~1.1.2"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/compression/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/compression/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
-    },
-    "node_modules/concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
-      "dev": true
-    },
-    "node_modules/concat-stream": {
-      "version": "1.6.2",
-      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
-      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
-      "dev": true,
-      "engines": [
-        "node >= 0.8"
-      ],
-      "dependencies": {
-        "buffer-from": "^1.0.0",
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.2.2",
-        "typedarray": "^0.0.6"
-      }
-    },
-    "node_modules/configstore": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
-      "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
-      "dev": true,
-      "dependencies": {
-        "dot-prop": "^5.2.0",
-        "graceful-fs": "^4.1.2",
-        "make-dir": "^3.0.0",
-        "unique-string": "^2.0.0",
-        "write-file-atomic": "^3.0.0",
-        "xdg-basedir": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/configstore/node_modules/make-dir": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
-      "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
-      "dev": true,
-      "dependencies": {
-        "semver": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/connect": {
-      "version": "3.7.0",
-      "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
-      "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
-      "dev": true,
-      "dependencies": {
-        "debug": "2.6.9",
-        "finalhandler": "1.1.2",
-        "parseurl": "~1.3.3",
-        "utils-merge": "1.0.1"
-      },
-      "engines": {
-        "node": ">= 0.10.0"
-      }
-    },
-    "node_modules/connect-history-api-fallback": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
-      "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.8"
-      }
-    },
-    "node_modules/connect/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/connect/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
-    },
-    "node_modules/console-browserify": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
-      "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
-      "dev": true
-    },
-    "node_modules/console-control-strings": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
-      "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
-      "dev": true,
-      "optional": true
-    },
-    "node_modules/constants-browserify": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
-      "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
-      "dev": true
-    },
-    "node_modules/content-disposition": {
-      "version": "0.5.3",
-      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
-      "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
-      "dev": true,
-      "dependencies": {
-        "safe-buffer": "5.1.2"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/content-type": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
-      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/convert-source-map": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
-      "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
-      "dev": true,
-      "dependencies": {
-        "safe-buffer": "~5.1.1"
-      }
-    },
-    "node_modules/cookie": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
-      "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/cookie-signature": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
-      "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
-      "dev": true
-    },
-    "node_modules/copy-concurrently": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
-      "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
-      "dev": true,
-      "dependencies": {
-        "aproba": "^1.1.1",
-        "fs-write-stream-atomic": "^1.0.8",
-        "iferr": "^0.1.5",
-        "mkdirp": "^0.5.1",
-        "rimraf": "^2.5.4",
-        "run-queue": "^1.0.0"
-      }
-    },
-    "node_modules/copy-concurrently/node_modules/rimraf": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-      "dev": true,
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      }
-    },
-    "node_modules/copy-descriptor": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
-      "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/copy-webpack-plugin": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz",
-      "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==",
-      "dev": true,
-      "dependencies": {
-        "cacache": "^12.0.3",
-        "find-cache-dir": "^2.1.0",
-        "glob-parent": "^3.1.0",
-        "globby": "^7.1.1",
-        "is-glob": "^4.0.1",
-        "loader-utils": "^1.2.3",
-        "minimatch": "^3.0.4",
-        "normalize-path": "^3.0.0",
-        "p-limit": "^2.2.1",
-        "schema-utils": "^1.0.0",
-        "serialize-javascript": "^2.1.2",
-        "webpack-log": "^2.0.0"
-      },
-      "engines": {
-        "node": ">= 6.9.0"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/cacache": {
-      "version": "12.0.4",
-      "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
-      "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
-      "dev": true,
-      "dependencies": {
-        "bluebird": "^3.5.5",
-        "chownr": "^1.1.1",
-        "figgy-pudding": "^3.5.1",
-        "glob": "^7.1.4",
-        "graceful-fs": "^4.1.15",
-        "infer-owner": "^1.0.3",
-        "lru-cache": "^5.1.1",
-        "mississippi": "^3.0.0",
-        "mkdirp": "^0.5.1",
-        "move-concurrently": "^1.0.1",
-        "promise-inflight": "^1.0.1",
-        "rimraf": "^2.6.3",
-        "ssri": "^6.0.1",
-        "unique-filename": "^1.1.1",
-        "y18n": "^4.0.0"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/find-cache-dir": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
-      "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
-      "dev": true,
-      "dependencies": {
-        "commondir": "^1.0.1",
-        "make-dir": "^2.0.0",
-        "pkg-dir": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/rimraf": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-      "dev": true,
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      }
-    },
-    "node_modules/copy-webpack-plugin/node_modules/ssri": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
-      "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
-      "dev": true,
-      "dependencies": {
-        "figgy-pudding": "^3.5.1"
-      }
-    },
-    "node_modules/core-js": {
-      "version": "3.6.4",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz",
-      "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==",
-      "dev": true
-    },
-    "node_modules/core-js-compat": {
-      "version": "3.8.3",
-      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.3.tgz",
-      "integrity": "sha512-1sCb0wBXnBIL16pfFG1Gkvei6UzvKyTNYpiC41yrdjEv0UoJoq9E/abTMzyYJ6JpTkAj15dLjbqifIzEBDVvog==",
-      "dev": true,
-      "dependencies": {
-        "browserslist": "^4.16.1",
-        "semver": "7.0.0"
-      }
-    },
-    "node_modules/core-js-compat/node_modules/semver": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
-      "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/core-util-is": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
-      "dev": true
-    },
-    "node_modules/cosmiconfig": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
-      "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
-      "dev": true,
-      "dependencies": {
-        "import-fresh": "^2.0.0",
-        "is-directory": "^0.3.1",
-        "js-yaml": "^3.13.1",
-        "parse-json": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/coverage-istanbul-loader": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/coverage-istanbul-loader/-/coverage-istanbul-loader-2.0.3.tgz",
-      "integrity": "sha512-LiGRvyIuzVYs3M1ZYK1tF0HekjH0DJ8zFdUwAZq378EJzqOgToyb1690dp3TAUlP6Y+82uu42LRjuROVeJ54CA==",
-      "dev": true,
-      "dependencies": {
-        "convert-source-map": "^1.7.0",
-        "istanbul-lib-instrument": "^4.0.0",
-        "loader-utils": "^1.2.3",
-        "merge-source-map": "^1.1.0",
-        "schema-utils": "^2.6.1"
-      }
-    },
-    "node_modules/coverage-istanbul-loader/node_modules/ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "dev": true,
-      "dependencies": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      }
-    },
-    "node_modules/coverage-istanbul-loader/node_modules/fast-deep-equal": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-      "dev": true
-    },
-    "node_modules/coverage-istanbul-loader/node_modules/schema-utils": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
-      "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
-      "dev": true,
-      "dependencies": {
-        "@types/json-schema": "^7.0.5",
-        "ajv": "^6.12.4",
-        "ajv-keywords": "^3.5.2"
-      },
-      "engines": {
-        "node": ">= 8.9.0"
-      }
-    },
-    "node_modules/crc": {
-      "version": "3.8.0",
-      "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz",
-      "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==",
-      "dev": true,
-      "dependencies": {
-        "buffer": "^5.1.0"
-      }
-    },
-    "node_modules/crc/node_modules/buffer": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
-      "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
-      "dev": true,
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ],
-      "dependencies": {
-        "base64-js": "^1.3.1",
-        "ieee754": "^1.1.13"
-      }
-    },
-    "node_modules/crc32-stream": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz",
-      "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==",
-      "dev": true,
-      "dependencies": {
-        "crc": "^3.4.4",
-        "readable-stream": "^3.4.0"
-      },
-      "engines": {
-        "node": ">= 6.9.0"
-      }
-    },
-    "node_modules/crc32-stream/node_modules/readable-stream": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-      "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.3",
-        "string_decoder": "^1.1.1",
-        "util-deprecate": "^1.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/create-ecdh": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
-      "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
-      "dev": true,
-      "dependencies": {
-        "bn.js": "^4.1.0",
-        "elliptic": "^6.5.3"
-      }
-    },
-    "node_modules/create-ecdh/node_modules/bn.js": {
-      "version": "4.11.9",
-      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
-      "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
-      "dev": true
-    },
-    "node_modules/create-hash": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
-      "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
-      "dev": true,
-      "dependencies": {
-        "cipher-base": "^1.0.1",
-        "inherits": "^2.0.1",
-        "md5.js": "^1.3.4",
-        "ripemd160": "^2.0.1",
-        "sha.js": "^2.4.0"
-      }
-    },
-    "node_modules/create-hmac": {
-      "version": "1.1.7",
-      "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
-      "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
-      "dev": true,
-      "dependencies": {
-        "cipher-base": "^1.0.3",
-        "create-hash": "^1.1.0",
-        "inherits": "^2.0.1",
-        "ripemd160": "^2.0.0",
-        "safe-buffer": "^5.0.1",
-        "sha.js": "^2.4.8"
-      }
-    },
-    "node_modules/cross-env": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz",
-      "integrity": "sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==",
-      "dev": true,
-      "dependencies": {
-        "cross-spawn": "^6.0.5"
-      },
-      "bin": {
-        "cross-env": "dist/bin/cross-env.js",
-        "cross-env-shell": "dist/bin/cross-env-shell.js"
-      },
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/cross-spawn": {
-      "version": "6.0.5",
-      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-      "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
-      "dev": true,
-      "dependencies": {
-        "nice-try": "^1.0.4",
-        "path-key": "^2.0.1",
-        "semver": "^5.5.0",
-        "shebang-command": "^1.2.0",
-        "which": "^1.2.9"
-      },
-      "engines": {
-        "node": ">=4.8"
-      }
-    },
-    "node_modules/cross-spawn/node_modules/semver": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/crypto-browserify": {
-      "version": "3.12.0",
-      "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
-      "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
-      "dev": true,
-      "dependencies": {
-        "browserify-cipher": "^1.0.0",
-        "browserify-sign": "^4.0.0",
-        "create-ecdh": "^4.0.0",
-        "create-hash": "^1.1.0",
-        "create-hmac": "^1.1.0",
-        "diffie-hellman": "^5.0.0",
-        "inherits": "^2.0.1",
-        "pbkdf2": "^3.0.3",
-        "public-encrypt": "^4.0.0",
-        "randombytes": "^2.0.0",
-        "randomfill": "^1.0.3"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/crypto-random-string": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
-      "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/css": {
-      "version": "2.2.4",
-      "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz",
-      "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.3",
-        "source-map": "^0.6.1",
-        "source-map-resolve": "^0.5.2",
-        "urix": "^0.1.0"
-      }
-    },
-    "node_modules/css-color-names": {
-      "version": "0.0.4",
-      "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
-      "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/css-declaration-sorter": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz",
-      "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.1",
-        "timsort": "^0.3.0"
-      },
-      "engines": {
-        "node": ">4"
-      }
-    },
-    "node_modules/css-parse": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz",
-      "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=",
-      "dev": true,
-      "dependencies": {
-        "css": "^2.0.0"
-      }
-    },
-    "node_modules/css-select": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
-      "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
-      "dev": true,
-      "dependencies": {
-        "boolbase": "^1.0.0",
-        "css-what": "^3.2.1",
-        "domutils": "^1.7.0",
-        "nth-check": "^1.0.2"
-      }
-    },
-    "node_modules/css-select-base-adapter": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
-      "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==",
-      "dev": true
-    },
-    "node_modules/css-selector-tokenizer": {
-      "version": "0.7.3",
-      "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz",
-      "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==",
-      "dev": true,
-      "dependencies": {
-        "cssesc": "^3.0.0",
-        "fastparse": "^1.1.2"
-      }
-    },
-    "node_modules/css-tree": {
-      "version": "1.0.0-alpha.37",
-      "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
-      "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==",
-      "dev": true,
-      "dependencies": {
-        "mdn-data": "2.0.4",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
-    "node_modules/css-tree/node_modules/source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/css-what": {
-      "version": "3.4.2",
-      "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz",
-      "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==",
-      "dev": true,
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/css/node_modules/source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/cssauron": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz",
-      "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=",
-      "dev": true,
-      "dependencies": {
-        "through": "X.X.X"
-      }
-    },
-    "node_modules/cssesc": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
-      "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
-      "dev": true,
-      "bin": {
-        "cssesc": "bin/cssesc"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/cssnano": {
-      "version": "4.1.10",
-      "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz",
-      "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==",
-      "dev": true,
-      "dependencies": {
-        "cosmiconfig": "^5.0.0",
-        "cssnano-preset-default": "^4.0.7",
-        "is-resolvable": "^1.0.0",
-        "postcss": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/cssnano-preset-default": {
-      "version": "4.0.7",
-      "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz",
-      "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==",
-      "dev": true,
-      "dependencies": {
-        "css-declaration-sorter": "^4.0.1",
-        "cssnano-util-raw-cache": "^4.0.1",
-        "postcss": "^7.0.0",
-        "postcss-calc": "^7.0.1",
-        "postcss-colormin": "^4.0.3",
-        "postcss-convert-values": "^4.0.1",
-        "postcss-discard-comments": "^4.0.2",
-        "postcss-discard-duplicates": "^4.0.2",
-        "postcss-discard-empty": "^4.0.1",
-        "postcss-discard-overridden": "^4.0.1",
-        "postcss-merge-longhand": "^4.0.11",
-        "postcss-merge-rules": "^4.0.3",
-        "postcss-minify-font-values": "^4.0.2",
-        "postcss-minify-gradients": "^4.0.2",
-        "postcss-minify-params": "^4.0.2",
-        "postcss-minify-selectors": "^4.0.2",
-        "postcss-normalize-charset": "^4.0.1",
-        "postcss-normalize-display-values": "^4.0.2",
-        "postcss-normalize-positions": "^4.0.2",
-        "postcss-normalize-repeat-style": "^4.0.2",
-        "postcss-normalize-string": "^4.0.2",
-        "postcss-normalize-timing-functions": "^4.0.2",
-        "postcss-normalize-unicode": "^4.0.1",
-        "postcss-normalize-url": "^4.0.1",
-        "postcss-normalize-whitespace": "^4.0.2",
-        "postcss-ordered-values": "^4.1.2",
-        "postcss-reduce-initial": "^4.0.3",
-        "postcss-reduce-transforms": "^4.0.2",
-        "postcss-svgo": "^4.0.2",
-        "postcss-unique-selectors": "^4.0.1"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/cssnano-util-get-arguments": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz",
-      "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=",
-      "dev": true,
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/cssnano-util-get-match": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz",
-      "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=",
-      "dev": true,
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/cssnano-util-raw-cache": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz",
-      "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/cssnano-util-same-parent": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz",
-      "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/csso": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz",
-      "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
-      "dev": true,
-      "dependencies": {
-        "css-tree": "^1.1.2"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
-    "node_modules/csso/node_modules/css-tree": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz",
-      "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==",
-      "dev": true,
-      "dependencies": {
-        "mdn-data": "2.0.14",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
-    "node_modules/csso/node_modules/mdn-data": {
-      "version": "2.0.14",
-      "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
-      "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
-      "dev": true
-    },
-    "node_modules/csso/node_modules/source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/csv-streamify": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/csv-streamify/-/csv-streamify-3.0.4.tgz",
-      "integrity": "sha1-TLYUxX4/KZzKF7Y/3LStFnd39Ho=",
-      "dev": true,
-      "dependencies": {
-        "through2": "2.0.1"
-      },
-      "bin": {
-        "csv-streamify": "cli.js"
-      },
-      "engines": {
-        "node": ">=0.12.0"
-      }
-    },
-    "node_modules/csv-streamify/node_modules/process-nextick-args": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
-      "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
-      "dev": true
-    },
-    "node_modules/csv-streamify/node_modules/readable-stream": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
-      "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
-      "dev": true,
-      "dependencies": {
-        "core-util-is": "~1.0.0",
-        "inherits": "~2.0.1",
-        "isarray": "~1.0.0",
-        "process-nextick-args": "~1.0.6",
-        "string_decoder": "~0.10.x",
-        "util-deprecate": "~1.0.1"
-      }
-    },
-    "node_modules/csv-streamify/node_modules/string_decoder": {
-      "version": "0.10.31",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
-      "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
-      "dev": true
-    },
-    "node_modules/csv-streamify/node_modules/through2": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz",
-      "integrity": "sha1-OE51MU1J8y3hLuu4E2uOtrXVnak=",
-      "dev": true,
-      "dependencies": {
-        "readable-stream": "~2.0.0",
-        "xtend": "~4.0.0"
-      }
-    },
-    "node_modules/custom-event": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz",
-      "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=",
-      "dev": true
-    },
-    "node_modules/cyclist": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
-      "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=",
-      "dev": true
-    },
-    "node_modules/d": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
-      "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
-      "dev": true,
-      "dependencies": {
-        "es5-ext": "^0.10.50",
-        "type": "^1.0.1"
-      }
-    },
-    "node_modules/damerau-levenshtein": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz",
-      "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==",
-      "dev": true
-    },
-    "node_modules/dashdash": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
-      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
-      "dev": true,
-      "dependencies": {
-        "assert-plus": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10"
-      }
-    },
-    "node_modules/date-format": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz",
-      "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==",
-      "dev": true,
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/debug": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
-      "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
-      "dependencies": {
-        "ms": "2.1.2"
-      },
-      "engines": {
-        "node": ">=6.0"
-      }
-    },
-    "node_modules/debuglog": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz",
-      "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/decamelize": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/decode-uri-component": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
-      "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10"
-      }
-    },
-    "node_modules/decompress-response": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
-      "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
-      "dev": true,
-      "dependencies": {
-        "mimic-response": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/deep-equal": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
-      "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
-      "dev": true,
-      "dependencies": {
-        "is-arguments": "^1.0.4",
-        "is-date-object": "^1.0.1",
-        "is-regex": "^1.0.4",
-        "object-is": "^1.0.1",
-        "object-keys": "^1.1.1",
-        "regexp.prototype.flags": "^1.2.0"
-      }
-    },
-    "node_modules/deep-extend": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
-      "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
-      "dev": true,
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/deep-freeze": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz",
-      "integrity": "sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ=",
-      "dev": true
-    },
-    "node_modules/deep-is": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
-      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
-      "dev": true
-    },
-    "node_modules/default-gateway": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz",
-      "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==",
-      "dev": true,
-      "dependencies": {
-        "execa": "^1.0.0",
-        "ip-regex": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/default-require-extensions": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz",
-      "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=",
-      "dev": true,
-      "dependencies": {
-        "strip-bom": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/defaults": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
-      "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
-      "dev": true,
-      "dependencies": {
-        "clone": "^1.0.2"
-      }
-    },
-    "node_modules/defaults/node_modules/clone": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
-      "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.8"
-      }
-    },
-    "node_modules/defer-to-connect": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
-      "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
-      "dev": true
-    },
-    "node_modules/define-properties": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
-      "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
-      "dev": true,
-      "dependencies": {
-        "object-keys": "^1.0.12"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/define-property": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-      "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-      "dev": true,
-      "dependencies": {
-        "is-descriptor": "^1.0.2",
-        "isobject": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/define-property/node_modules/is-accessor-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-      "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/define-property/node_modules/is-data-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-      "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/define-property/node_modules/is-descriptor": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-      "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-      "dev": true,
-      "dependencies": {
-        "is-accessor-descriptor": "^1.0.0",
-        "is-data-descriptor": "^1.0.0",
-        "kind-of": "^6.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/del": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz",
-      "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
-      "dev": true,
-      "dependencies": {
-        "@types/glob": "^7.1.1",
-        "globby": "^6.1.0",
-        "is-path-cwd": "^2.0.0",
-        "is-path-in-cwd": "^2.0.0",
-        "p-map": "^2.0.0",
-        "pify": "^4.0.1",
-        "rimraf": "^2.6.3"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/del/node_modules/globby": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
-      "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
-      "dev": true,
-      "dependencies": {
-        "array-union": "^1.0.1",
-        "glob": "^7.0.3",
-        "object-assign": "^4.0.1",
-        "pify": "^2.0.0",
-        "pinkie-promise": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/del/node_modules/globby/node_modules/pify": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-      "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/del/node_modules/p-map": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
-      "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/del/node_modules/rimraf": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-      "dev": true,
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      }
-    },
-    "node_modules/delayed-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
-      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/delegates": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
-      "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
-      "dev": true,
-      "optional": true
-    },
-    "node_modules/depd": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
-      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/dependency-graph": {
-      "version": "0.7.2",
-      "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.7.2.tgz",
-      "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6.0"
-      }
-    },
-    "node_modules/des.js": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
-      "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.1",
-        "minimalistic-assert": "^1.0.0"
-      }
-    },
-    "node_modules/destroy": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
-      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
-      "dev": true
-    },
-    "node_modules/detect-node": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz",
-      "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==",
-      "dev": true
-    },
-    "node_modules/dezalgo": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz",
-      "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=",
-      "dev": true,
-      "dependencies": {
-        "asap": "^2.0.0",
-        "wrappy": "1"
-      }
-    },
-    "node_modules/di": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz",
-      "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=",
-      "dev": true
-    },
-    "node_modules/diff": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
-      "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.3.1"
-      }
-    },
-    "node_modules/diffie-hellman": {
-      "version": "5.0.3",
-      "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
-      "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
-      "dev": true,
-      "dependencies": {
-        "bn.js": "^4.1.0",
-        "miller-rabin": "^4.0.0",
-        "randombytes": "^2.0.0"
-      }
-    },
-    "node_modules/diffie-hellman/node_modules/bn.js": {
-      "version": "4.11.9",
-      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
-      "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
-      "dev": true
-    },
-    "node_modules/dir-glob": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
-      "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
-      "dev": true,
-      "dependencies": {
-        "path-type": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/dns-equal": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
-      "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
-      "dev": true
-    },
-    "node_modules/dns-packet": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz",
-      "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==",
-      "dev": true,
-      "dependencies": {
-        "ip": "^1.1.0",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "node_modules/dns-txt": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz",
-      "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
-      "dev": true,
-      "dependencies": {
-        "buffer-indexof": "^1.0.0"
-      }
-    },
-    "node_modules/dom-serialize": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz",
-      "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=",
-      "dev": true,
-      "dependencies": {
-        "custom-event": "~1.0.0",
-        "ent": "~2.2.0",
-        "extend": "^3.0.0",
-        "void-elements": "^2.0.0"
-      }
-    },
-    "node_modules/dom-serializer": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
-      "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
-      "dev": true,
-      "dependencies": {
-        "domelementtype": "^2.0.1",
-        "entities": "^2.0.0"
-      }
-    },
-    "node_modules/dom-serializer/node_modules/domelementtype": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz",
-      "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==",
-      "dev": true
-    },
-    "node_modules/dom-storage": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz",
-      "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q==",
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/domain-browser": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
-      "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.4",
-        "npm": ">=1.2"
-      }
-    },
-    "node_modules/domelementtype": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
-      "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
-      "dev": true
-    },
-    "node_modules/domutils": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
-      "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
-      "dev": true,
-      "dependencies": {
-        "dom-serializer": "0",
-        "domelementtype": "1"
-      }
-    },
-    "node_modules/dot-prop": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
-      "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
-      "dev": true,
-      "dependencies": {
-        "is-obj": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/dotenv": {
-      "version": "6.2.0",
-      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz",
-      "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/duplexer2": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
-      "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
-      "dev": true,
-      "dependencies": {
-        "readable-stream": "^2.0.2"
-      }
-    },
-    "node_modules/duplexer3": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
-      "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
-      "dev": true
-    },
-    "node_modules/duplexify": {
-      "version": "3.7.1",
-      "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
-      "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
-      "dev": true,
-      "dependencies": {
-        "end-of-stream": "^1.0.0",
-        "inherits": "^2.0.1",
-        "readable-stream": "^2.0.0",
-        "stream-shift": "^1.0.0"
-      }
-    },
-    "node_modules/ecc-jsbn": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
-      "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
-      "dev": true,
-      "dependencies": {
-        "jsbn": "~0.1.0",
-        "safer-buffer": "^2.1.0"
-      }
-    },
-    "node_modules/ecdsa-sig-formatter": {
-      "version": "1.0.11",
-      "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
-      "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
-      "dependencies": {
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "node_modules/ee-first": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
-      "dev": true
-    },
-    "node_modules/electron-to-chromium": {
-      "version": "1.3.644",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.644.tgz",
-      "integrity": "sha512-N7FLvjDPADxad+OXXBuYfcvDvCBG0aW8ZZGr7G91sZMviYbnQJFxdSvUus4SJ0K7Q8dzMxE+Wx1d/CrJIIJ0sw==",
-      "dev": true
-    },
-    "node_modules/elliptic": {
-      "version": "6.5.3",
-      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz",
-      "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==",
-      "dev": true,
-      "dependencies": {
-        "bn.js": "^4.4.0",
-        "brorand": "^1.0.1",
-        "hash.js": "^1.0.0",
-        "hmac-drbg": "^1.0.0",
-        "inherits": "^2.0.1",
-        "minimalistic-assert": "^1.0.0",
-        "minimalistic-crypto-utils": "^1.0.0"
-      }
-    },
-    "node_modules/elliptic/node_modules/bn.js": {
-      "version": "4.11.9",
-      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
-      "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
-      "dev": true
-    },
-    "node_modules/emoji-regex": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-      "dev": true
-    },
-    "node_modules/emojis-list": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
-      "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/enabled": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
-      "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==",
-      "dev": true
-    },
-    "node_modules/encodeurl": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
-      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/encoding": {
-      "version": "0.1.13",
-      "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
-      "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
-      "dev": true,
-      "dependencies": {
-        "iconv-lite": "^0.6.2"
-      }
-    },
-    "node_modules/encoding/node_modules/iconv-lite": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz",
-      "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==",
-      "dev": true,
-      "dependencies": {
-        "safer-buffer": ">= 2.1.2 < 3.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/end-of-stream": {
-      "version": "1.4.4",
-      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
-      "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
-      "dev": true,
-      "dependencies": {
-        "once": "^1.4.0"
-      }
-    },
-    "node_modules/engine.io": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz",
-      "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==",
-      "dev": true,
-      "dependencies": {
-        "accepts": "~1.3.4",
-        "base64id": "1.0.0",
-        "cookie": "0.3.1",
-        "debug": "~3.1.0",
-        "engine.io-parser": "~2.1.0",
-        "ws": "~3.3.1"
-      }
-    },
-    "node_modules/engine.io-client": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz",
-      "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==",
-      "dev": true,
-      "dependencies": {
-        "component-emitter": "1.2.1",
-        "component-inherit": "0.0.3",
-        "debug": "~3.1.0",
-        "engine.io-parser": "~2.1.1",
-        "has-cors": "1.1.0",
-        "indexof": "0.0.1",
-        "parseqs": "0.0.5",
-        "parseuri": "0.0.5",
-        "ws": "~3.3.1",
-        "xmlhttprequest-ssl": "~1.5.4",
-        "yeast": "0.1.2"
-      }
-    },
-    "node_modules/engine.io-client/node_modules/component-emitter": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
-      "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
-      "dev": true
-    },
-    "node_modules/engine.io-client/node_modules/debug": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-      "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/engine.io-client/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
-    },
-    "node_modules/engine.io-client/node_modules/ws": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
-      "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
-      "dev": true,
-      "dependencies": {
-        "async-limiter": "~1.0.0",
-        "safe-buffer": "~5.1.0",
-        "ultron": "~1.1.0"
-      }
-    },
-    "node_modules/engine.io-parser": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz",
-      "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==",
-      "dev": true,
-      "dependencies": {
-        "after": "0.8.2",
-        "arraybuffer.slice": "~0.0.7",
-        "base64-arraybuffer": "0.1.5",
-        "blob": "0.0.5",
-        "has-binary2": "~1.0.2"
-      }
-    },
-    "node_modules/engine.io/node_modules/cookie": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
-      "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/engine.io/node_modules/debug": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-      "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/engine.io/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
-    },
-    "node_modules/engine.io/node_modules/ws": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
-      "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
-      "dev": true,
-      "dependencies": {
-        "async-limiter": "~1.0.0",
-        "safe-buffer": "~5.1.0",
-        "ultron": "~1.1.0"
-      }
-    },
-    "node_modules/enhanced-resolve": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz",
-      "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==",
-      "dev": true,
-      "dependencies": {
-        "graceful-fs": "^4.1.2",
-        "memory-fs": "^0.5.0",
-        "tapable": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/ent": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz",
-      "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=",
-      "dev": true
-    },
-    "node_modules/entities": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
-      "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
-      "dev": true
-    },
-    "node_modules/env-paths": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz",
-      "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==",
-      "dev": true,
-      "optional": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/err-code": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz",
-      "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=",
-      "dev": true
-    },
-    "node_modules/errno": {
-      "version": "0.1.8",
-      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
-      "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
-      "dev": true,
-      "dependencies": {
-        "prr": "~1.0.1"
-      },
-      "bin": {
-        "errno": "cli.js"
-      }
-    },
-    "node_modules/error-ex": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
-      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
-      "dev": true,
-      "dependencies": {
-        "is-arrayish": "^0.2.1"
-      }
-    },
-    "node_modules/es-abstract": {
-      "version": "1.18.0-next.2",
-      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz",
-      "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "es-to-primitive": "^1.2.1",
-        "function-bind": "^1.1.1",
-        "get-intrinsic": "^1.0.2",
-        "has": "^1.0.3",
-        "has-symbols": "^1.0.1",
-        "is-callable": "^1.2.2",
-        "is-negative-zero": "^2.0.1",
-        "is-regex": "^1.1.1",
-        "object-inspect": "^1.9.0",
-        "object-keys": "^1.1.1",
-        "object.assign": "^4.1.2",
-        "string.prototype.trimend": "^1.0.3",
-        "string.prototype.trimstart": "^1.0.3"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/es-to-primitive": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
-      "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
-      "dev": true,
-      "dependencies": {
-        "is-callable": "^1.1.4",
-        "is-date-object": "^1.0.1",
-        "is-symbol": "^1.0.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/es5-ext": {
-      "version": "0.10.53",
-      "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz",
-      "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==",
-      "dev": true,
-      "dependencies": {
-        "es6-iterator": "~2.0.3",
-        "es6-symbol": "~3.1.3",
-        "next-tick": "~1.0.0"
-      }
-    },
-    "node_modules/es6-iterator": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
-      "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
-      "dev": true,
-      "dependencies": {
-        "d": "1",
-        "es5-ext": "^0.10.35",
-        "es6-symbol": "^3.1.1"
-      }
-    },
-    "node_modules/es6-promise": {
-      "version": "4.2.8",
-      "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
-      "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==",
-      "dev": true
-    },
-    "node_modules/es6-promisify": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
-      "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
-      "dev": true,
-      "dependencies": {
-        "es6-promise": "^4.0.3"
-      }
-    },
-    "node_modules/es6-symbol": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
-      "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
-      "dev": true,
-      "dependencies": {
-        "d": "^1.0.1",
-        "ext": "^1.1.2"
-      }
-    },
-    "node_modules/es6-weak-map": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
-      "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
-      "dev": true,
-      "dependencies": {
-        "d": "1",
-        "es5-ext": "^0.10.46",
-        "es6-iterator": "^2.0.3",
-        "es6-symbol": "^3.1.1"
-      }
-    },
-    "node_modules/escalade": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
-      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/escape-goat": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz",
-      "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/escape-html": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
-      "dev": true
-    },
-    "node_modules/escape-string-regexp": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
-      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/eslint-scope": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
-      "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
-      "dev": true,
-      "dependencies": {
-        "esrecurse": "^4.1.0",
-        "estraverse": "^4.1.1"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/esprima": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
-      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
-      "dev": true,
-      "bin": {
-        "esparse": "bin/esparse.js",
-        "esvalidate": "bin/esvalidate.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/esrecurse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
-      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
-      "dev": true,
-      "dependencies": {
-        "estraverse": "^5.2.0"
-      },
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/esrecurse/node_modules/estraverse": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
-      "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/estraverse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
-      "dev": true,
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/etag": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
-      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/event-emitter": {
-      "version": "0.3.5",
-      "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
-      "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
-      "dev": true,
-      "dependencies": {
-        "d": "1",
-        "es5-ext": "~0.10.14"
-      }
-    },
-    "node_modules/event-target-shim": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
-      "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/eventemitter3": {
-      "version": "4.0.7",
-      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
-      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
-      "dev": true
-    },
-    "node_modules/events": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz",
-      "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.8.x"
-      }
-    },
-    "node_modules/events-listener": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/events-listener/-/events-listener-1.1.0.tgz",
-      "integrity": "sha512-Kd3EgYfODHueq6GzVfs/VUolh2EgJsS8hkO3KpnDrxVjU3eq63eXM2ujXkhPP+OkeUOhL8CxdfZbQXzryb5C4g==",
-      "dev": true
-    },
-    "node_modules/eventsource": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz",
-      "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==",
-      "dev": true,
-      "dependencies": {
-        "original": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.12.0"
-      }
-    },
-    "node_modules/evp_bytestokey": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
-      "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
-      "dev": true,
-      "dependencies": {
-        "md5.js": "^1.3.4",
-        "safe-buffer": "^5.1.1"
-      }
-    },
-    "node_modules/execa": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
-      "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
-      "dev": true,
-      "dependencies": {
-        "cross-spawn": "^6.0.0",
-        "get-stream": "^4.0.0",
-        "is-stream": "^1.1.0",
-        "npm-run-path": "^2.0.0",
-        "p-finally": "^1.0.0",
-        "signal-exit": "^3.0.0",
-        "strip-eof": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/exegesis": {
-      "version": "2.5.6",
-      "resolved": "https://registry.npmjs.org/exegesis/-/exegesis-2.5.6.tgz",
-      "integrity": "sha512-e+YkH/zZTN2njiwrV8tY6tHGDsFu3LyR/YbrqdWvDZaAJ5YGWaBYyd3oX/Y26iGqQc+7jLEKLDTv2UPzjAYL8w==",
-      "dev": true,
-      "dependencies": {
-        "@apidevtools/json-schema-ref-parser": "^9.0.3",
-        "ajv": "^6.12.2",
-        "body-parser": "^1.18.3",
-        "content-type": "^1.0.4",
-        "deep-freeze": "0.0.1",
-        "events-listener": "^1.1.0",
-        "glob": "^7.1.3",
-        "json-ptr": "^1.3.1",
-        "json-schema-traverse": "^0.4.1",
-        "lodash": "^4.17.11",
-        "openapi3-ts": "^1.2.0",
-        "promise-breaker": "^5.0.0",
-        "pump": "^3.0.0",
-        "qs": "^6.6.0",
-        "raw-body": "^2.3.3",
-        "semver": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=6.0.0",
-        "npm": ">5.0.0"
-      }
-    },
-    "node_modules/exegesis-express": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/exegesis-express/-/exegesis-express-2.0.0.tgz",
-      "integrity": "sha512-NKvKBsBa2OvU+1BFpWbz3PzoRMhA9q7/wU2oMmQ9X8lPy/FRatADvhlkGO1zYOMgeo35k1ZLO9ZV0uIs9pPnXg==",
-      "dev": true,
-      "dependencies": {
-        "exegesis": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6.0.0",
-        "npm": ">5.0.0"
-      }
-    },
-    "node_modules/exegesis/node_modules/ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "dev": true,
-      "dependencies": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/epoberezkin"
-      }
-    },
-    "node_modules/exegesis/node_modules/fast-deep-equal": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-      "dev": true
-    },
-    "node_modules/exegesis/node_modules/lru-cache": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-      "dev": true,
-      "dependencies": {
-        "yallist": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/exegesis/node_modules/qs": {
-      "version": "6.9.6",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz",
-      "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
-    "node_modules/exegesis/node_modules/semver": {
-      "version": "7.3.4",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
-      "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
-      "dev": true,
-      "dependencies": {
-        "lru-cache": "^6.0.0"
-      },
-      "bin": {
-        "semver": "bin/semver.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/exit": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
-      "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/exit-code": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/exit-code/-/exit-code-1.0.2.tgz",
-      "integrity": "sha1-zhZYEcnxF69qX4gpQLlq5/muzDQ=",
-      "dev": true
-    },
-    "node_modules/expand-brackets": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
-      "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
-      "dev": true,
-      "dependencies": {
-        "debug": "^2.3.3",
-        "define-property": "^0.2.5",
-        "extend-shallow": "^2.0.1",
-        "posix-character-classes": "^0.1.0",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/expand-brackets/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/expand-brackets/node_modules/define-property": {
-      "version": "0.2.5",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-      "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-      "dev": true,
-      "dependencies": {
-        "is-descriptor": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/expand-brackets/node_modules/extend-shallow": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-      "dev": true,
-      "dependencies": {
-        "is-extendable": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/expand-brackets/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
-    },
-    "node_modules/express": {
-      "version": "4.17.1",
-      "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
-      "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
-      "dev": true,
-      "dependencies": {
-        "accepts": "~1.3.7",
-        "array-flatten": "1.1.1",
-        "body-parser": "1.19.0",
-        "content-disposition": "0.5.3",
-        "content-type": "~1.0.4",
-        "cookie": "0.4.0",
-        "cookie-signature": "1.0.6",
-        "debug": "2.6.9",
-        "depd": "~1.1.2",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "etag": "~1.8.1",
-        "finalhandler": "~1.1.2",
-        "fresh": "0.5.2",
-        "merge-descriptors": "1.0.1",
-        "methods": "~1.1.2",
-        "on-finished": "~2.3.0",
-        "parseurl": "~1.3.3",
-        "path-to-regexp": "0.1.7",
-        "proxy-addr": "~2.0.5",
-        "qs": "6.7.0",
-        "range-parser": "~1.2.1",
-        "safe-buffer": "5.1.2",
-        "send": "0.17.1",
-        "serve-static": "1.14.1",
-        "setprototypeof": "1.1.1",
-        "statuses": "~1.5.0",
-        "type-is": "~1.6.18",
-        "utils-merge": "1.0.1",
-        "vary": "~1.1.2"
-      },
-      "engines": {
-        "node": ">= 0.10.0"
-      }
-    },
-    "node_modules/express/node_modules/array-flatten": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
-      "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
-      "dev": true
-    },
-    "node_modules/express/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/express/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
-    },
-    "node_modules/express/node_modules/qs": {
-      "version": "6.7.0",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
-      "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.6"
-      }
-    },
-    "node_modules/ext": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz",
-      "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==",
-      "dev": true,
-      "dependencies": {
-        "type": "^2.0.0"
-      }
-    },
-    "node_modules/ext/node_modules/type": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz",
-      "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==",
-      "dev": true
-    },
-    "node_modules/extend": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
-      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
-    },
-    "node_modules/extend-shallow": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-      "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
-      "dev": true,
-      "dependencies": {
-        "assign-symbols": "^1.0.0",
-        "is-extendable": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/extend-shallow/node_modules/is-extendable": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-      "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-      "dev": true,
-      "dependencies": {
-        "is-plain-object": "^2.0.4"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/external-editor": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
-      "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
-      "dev": true,
-      "dependencies": {
-        "chardet": "^0.7.0",
-        "iconv-lite": "^0.4.24",
-        "tmp": "^0.0.33"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/extglob": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
-      "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
-      "dev": true,
-      "dependencies": {
-        "array-unique": "^0.3.2",
-        "define-property": "^1.0.0",
-        "expand-brackets": "^2.1.4",
-        "extend-shallow": "^2.0.1",
-        "fragment-cache": "^0.2.1",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/extglob/node_modules/define-property": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-      "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-      "dev": true,
-      "dependencies": {
-        "is-descriptor": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/extglob/node_modules/extend-shallow": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-      "dev": true,
-      "dependencies": {
-        "is-extendable": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/extglob/node_modules/is-accessor-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-      "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/extglob/node_modules/is-data-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-      "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/extglob/node_modules/is-descriptor": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-      "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-      "dev": true,
-      "dependencies": {
-        "is-accessor-descriptor": "^1.0.0",
-        "is-data-descriptor": "^1.0.0",
-        "kind-of": "^6.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/extsprintf": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
-      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
-      "dev": true,
-      "engines": [
-        "node >=0.6.0"
-      ]
-    },
-    "node_modules/fast-deep-equal": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
-      "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
-      "dev": true
-    },
-    "node_modules/fast-json-stable-stringify": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
-      "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
-      "dev": true
-    },
-    "node_modules/fast-safe-stringify": {
-      "version": "2.0.7",
-      "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
-      "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==",
-      "dev": true
-    },
-    "node_modules/fast-text-encoding": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz",
-      "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig=="
-    },
-    "node_modules/fast-url-parser": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz",
-      "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=",
-      "dev": true,
-      "dependencies": {
-        "punycode": "^1.3.2"
-      }
-    },
-    "node_modules/fast-url-parser/node_modules/punycode": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
-      "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
-      "dev": true
-    },
-    "node_modules/fastparse": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz",
-      "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==",
-      "dev": true
-    },
-    "node_modules/faye-websocket": {
-      "version": "0.10.0",
-      "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
-      "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
-      "dev": true,
-      "dependencies": {
-        "websocket-driver": ">=0.5.1"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/fecha": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz",
-      "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==",
-      "dev": true
-    },
-    "node_modules/figgy-pudding": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
-      "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==",
-      "dev": true
-    },
-    "node_modules/figures": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
-      "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
-      "dev": true,
-      "dependencies": {
-        "escape-string-regexp": "^1.0.5"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/file-loader": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.2.0.tgz",
-      "integrity": "sha512-+xZnaK5R8kBJrHK0/6HRlrKNamvVS5rjyuju+rnyxRGuwUJwpAMsVzUl5dz6rK8brkzjV6JpcFNjp6NqV0g1OQ==",
-      "dev": true,
-      "dependencies": {
-        "loader-utils": "^1.2.3",
-        "schema-utils": "^2.0.0"
-      },
-      "engines": {
-        "node": ">= 8.9.0"
-      }
-    },
-    "node_modules/file-loader/node_modules/ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "dev": true,
-      "dependencies": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      }
-    },
-    "node_modules/file-loader/node_modules/fast-deep-equal": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-      "dev": true
-    },
-    "node_modules/file-loader/node_modules/schema-utils": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
-      "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
-      "dev": true,
-      "dependencies": {
-        "@types/json-schema": "^7.0.5",
-        "ajv": "^6.12.4",
-        "ajv-keywords": "^3.5.2"
-      },
-      "engines": {
-        "node": ">= 8.9.0"
-      }
-    },
-    "node_modules/file-uri-to-path": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
-      "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
-      "dev": true,
-      "optional": true
-    },
-    "node_modules/fileset": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz",
-      "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=",
-      "dev": true,
-      "dependencies": {
-        "glob": "^7.0.3",
-        "minimatch": "^3.0.3"
-      }
-    },
-    "node_modules/filesize": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
-      "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4.0"
-      }
-    },
-    "node_modules/fill-range": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
-      "dev": true,
-      "dependencies": {
-        "to-regex-range": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/finalhandler": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
-      "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
-      "dev": true,
-      "dependencies": {
-        "debug": "2.6.9",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "on-finished": "~2.3.0",
-        "parseurl": "~1.3.3",
-        "statuses": "~1.5.0",
-        "unpipe": "~1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/finalhandler/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/finalhandler/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
-    },
-    "node_modules/find-cache-dir": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.0.0.tgz",
-      "integrity": "sha512-t7ulV1fmbxh5G9l/492O1p5+EBbr3uwpt6odhFTMc+nWyhmbloe+ja9BZ8pIBtqFWhOmCWVjx+pTW4zDkFoclw==",
-      "dev": true,
-      "dependencies": {
-        "commondir": "^1.0.1",
-        "make-dir": "^3.0.0",
-        "pkg-dir": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/find-cache-dir/node_modules/find-up": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-      "dev": true,
-      "dependencies": {
-        "locate-path": "^5.0.0",
-        "path-exists": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/find-cache-dir/node_modules/locate-path": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-      "dev": true,
-      "dependencies": {
-        "p-locate": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/find-cache-dir/node_modules/make-dir": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
-      "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
-      "dev": true,
-      "dependencies": {
-        "semver": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/find-cache-dir/node_modules/p-locate": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-      "dev": true,
-      "dependencies": {
-        "p-limit": "^2.2.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/find-cache-dir/node_modules/path-exists": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/find-cache-dir/node_modules/pkg-dir": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
-      "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
-      "dev": true,
-      "dependencies": {
-        "find-up": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/find-up": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-      "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-      "dev": true,
-      "dependencies": {
-        "locate-path": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/firebase": {
-      "version": "8.2.6",
-      "resolved": "https://registry.npmjs.org/firebase/-/firebase-8.2.6.tgz",
-      "integrity": "sha512-UHBAA8r7oIdbdafTGo3ED8wL9r/vdSgllN0yBzJMCyxk16DtL0oQnXRXwTU7FSc2c3JrvTUX9jtMFjtKjOUNMQ==",
-      "dependencies": {
-        "@firebase/analytics": "0.6.2",
-        "@firebase/app": "0.6.14",
-        "@firebase/app-types": "0.6.1",
-        "@firebase/auth": "0.16.3",
-        "@firebase/database": "0.9.2",
-        "@firebase/firestore": "2.1.5",
-        "@firebase/functions": "0.6.1",
-        "@firebase/installations": "0.4.19",
-        "@firebase/messaging": "0.7.3",
-        "@firebase/performance": "0.4.5",
-        "@firebase/polyfill": "0.3.36",
-        "@firebase/remote-config": "0.1.30",
-        "@firebase/storage": "0.4.2",
-        "@firebase/util": "0.3.4"
-      },
-      "engines": {
-        "node": "^8.13.0 || >=10.10.0"
-      }
-    },
-    "node_modules/firebase-tools": {
-      "version": "8.20.0",
-      "resolved": "https://registry.npmjs.org/firebase-tools/-/firebase-tools-8.20.0.tgz",
-      "integrity": "sha512-FovOHkPEvdT31EqxDzjJkaJIYLrc+0GZwQ3ixT1WI3yF3o4TG8MCVo+QidmcNqyX0XZnI3/5sF3dpxXQ/HzaVw==",
-      "dev": true,
-      "dependencies": {
-        "@google-cloud/pubsub": "^1.7.0",
-        "abort-controller": "^3.0.0",
-        "archiver": "^3.0.0",
-        "body-parser": "^1.19.0",
-        "chokidar": "^3.0.2",
-        "cjson": "^0.3.1",
-        "cli-color": "^1.2.0",
-        "cli-table": "^0.3.1",
-        "commander": "^4.0.1",
-        "configstore": "^5.0.1",
-        "cross-env": "^5.1.3",
-        "cross-spawn": "^7.0.1",
-        "csv-streamify": "^3.0.4",
-        "dotenv": "^6.1.0",
-        "exegesis-express": "^2.0.0",
-        "exit-code": "^1.0.2",
-        "express": "^4.16.4",
-        "filesize": "^3.1.3",
-        "fs-extra": "^0.23.1",
-        "glob": "^7.1.2",
-        "google-auth-library": "^5.5.0",
-        "google-gax": "~1.12.0",
-        "inquirer": "~6.3.1",
-        "js-yaml": "^3.13.1",
-        "jsonschema": "^1.0.2",
-        "JSONStream": "^1.2.1",
-        "jsonwebtoken": "^8.2.1",
-        "leven": "^3.1.0",
-        "lodash": "^4.17.19",
-        "marked": "^0.7.0",
-        "marked-terminal": "^3.3.0",
-        "minimatch": "^3.0.4",
-        "morgan": "^1.10.0",
-        "node-fetch": "^2.6.1",
-        "open": "^6.3.0",
-        "ora": "^3.4.0",
-        "plist": "^3.0.1",
-        "portfinder": "^1.0.23",
-        "progress": "^2.0.3",
-        "request": "^2.87.0",
-        "rimraf": "^3.0.0",
-        "semver": "^5.7.1",
-        "superstatic": "^7.1.0",
-        "tar": "^4.3.0",
-        "tcp-port-used": "^1.0.1",
-        "tmp": "0.0.33",
-        "triple-beam": "^1.3.0",
-        "tweetsodium": "0.0.5",
-        "universal-analytics": "^0.4.16",
-        "unzipper": "^0.10.10",
-        "update-notifier": "^4.1.0",
-        "uuid": "^3.0.0",
-        "winston": "^3.0.0",
-        "ws": "^7.2.3"
-      },
-      "bin": {
-        "firebase": "lib/bin/firebase.js"
-      },
-      "engines": {
-        "node": ">= 8.6.0"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/agent-base": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
-      "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
-      "dev": true,
-      "dependencies": {
-        "debug": "4"
-      },
-      "engines": {
-        "node": ">= 6.0.0"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/ansi-regex": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-      "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/arrify": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
-      "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/cli-cursor": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
-      "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
-      "dev": true,
-      "dependencies": {
-        "restore-cursor": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/commander": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
-      "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/cross-spawn": {
-      "version": "7.0.3",
-      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
-      "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
-      "dev": true,
-      "dependencies": {
-        "path-key": "^3.1.0",
-        "shebang-command": "^2.0.0",
-        "which": "^2.0.1"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/fs-extra": {
-      "version": "0.23.1",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.23.1.tgz",
-      "integrity": "sha1-ZhHbpq3yq43Jxp+rN83fiBgVfj0=",
-      "dev": true,
-      "dependencies": {
-        "graceful-fs": "^4.1.2",
-        "jsonfile": "^2.1.0",
-        "path-is-absolute": "^1.0.0",
-        "rimraf": "^2.2.8"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/fs-extra/node_modules/rimraf": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-      "dev": true,
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/gaxios": {
-      "version": "2.3.4",
-      "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.3.4.tgz",
-      "integrity": "sha512-US8UMj8C5pRnao3Zykc4AAVr+cffoNKRTg9Rsf2GiuZCW69vgJj38VK2PzlPuQU73FZ/nTk9/Av6/JGcE1N9vA==",
-      "dev": true,
-      "dependencies": {
-        "abort-controller": "^3.0.0",
-        "extend": "^3.0.2",
-        "https-proxy-agent": "^5.0.0",
-        "is-stream": "^2.0.0",
-        "node-fetch": "^2.3.0"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/gcp-metadata": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-3.5.0.tgz",
-      "integrity": "sha512-ZQf+DLZ5aKcRpLzYUyBS3yo3N0JSa82lNDO8rj3nMSlovLcz2riKFBsYgDzeXcv75oo5eqB2lx+B14UvPoCRnA==",
-      "dev": true,
-      "dependencies": {
-        "gaxios": "^2.1.0",
-        "json-bigint": "^0.3.0"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/google-auth-library": {
-      "version": "5.10.1",
-      "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-5.10.1.tgz",
-      "integrity": "sha512-rOlaok5vlpV9rSiUu5EpR0vVpc+PhN62oF4RyX/6++DG1VsaulAFEMlDYBLjJDDPI6OcNOCGAKy9UVB/3NIDXg==",
-      "dev": true,
-      "dependencies": {
-        "arrify": "^2.0.0",
-        "base64-js": "^1.3.0",
-        "ecdsa-sig-formatter": "^1.0.11",
-        "fast-text-encoding": "^1.0.0",
-        "gaxios": "^2.1.0",
-        "gcp-metadata": "^3.4.0",
-        "gtoken": "^4.1.0",
-        "jws": "^4.0.0",
-        "lru-cache": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/google-p12-pem": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-2.0.4.tgz",
-      "integrity": "sha512-S4blHBQWZRnEW44OcR7TL9WR+QCqByRvhNDZ/uuQfpxywfupikf/miba8js1jZi6ZOGv5slgSuoshCWh6EMDzg==",
-      "dev": true,
-      "dependencies": {
-        "node-forge": "^0.9.0"
-      },
-      "bin": {
-        "gp12-pem": "build/src/bin/gp12-pem.js"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/gtoken": {
-      "version": "4.1.4",
-      "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-4.1.4.tgz",
-      "integrity": "sha512-VxirzD0SWoFUo5p8RDP8Jt2AGyOmyYcT/pOUgDKJCK+iSw0TMqwrVfY37RXTNmoKwrzmDHSk0GMT9FsgVmnVSA==",
-      "dev": true,
-      "dependencies": {
-        "gaxios": "^2.1.0",
-        "google-p12-pem": "^2.0.0",
-        "jws": "^4.0.0",
-        "mime": "^2.2.0"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/https-proxy-agent": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
-      "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
-      "dev": true,
-      "dependencies": {
-        "agent-base": "6",
-        "debug": "4"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/inquirer": {
-      "version": "6.3.1",
-      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz",
-      "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==",
-      "dev": true,
-      "dependencies": {
-        "ansi-escapes": "^3.2.0",
-        "chalk": "^2.4.2",
-        "cli-cursor": "^2.1.0",
-        "cli-width": "^2.0.0",
-        "external-editor": "^3.0.3",
-        "figures": "^2.0.0",
-        "lodash": "^4.17.11",
-        "mute-stream": "0.0.7",
-        "run-async": "^2.2.0",
-        "rxjs": "^6.4.0",
-        "string-width": "^2.1.0",
-        "strip-ansi": "^5.1.0",
-        "through": "^2.3.6"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/is-stream": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
-      "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/is-wsl": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
-      "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/json-bigint": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-0.3.1.tgz",
-      "integrity": "sha512-DGWnSzmusIreWlEupsUelHrhwmPPE+FiQvg+drKfk2p+bdEYa5mp4PJ8JsCWqae0M2jQNb0HPvnwvf1qOTThzQ==",
-      "dev": true,
-      "dependencies": {
-        "bignumber.js": "^9.0.0"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/jsonfile": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
-      "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
-      "dev": true,
-      "optionalDependencies": {
-        "graceful-fs": "^4.1.6"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/log-symbols": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
-      "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/mime": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz",
-      "integrity": "sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==",
-      "dev": true,
-      "bin": {
-        "mime": "cli.js"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/mimic-fn": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
-      "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/node-forge": {
-      "version": "0.9.2",
-      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.2.tgz",
-      "integrity": "sha512-naKSScof4Wn+aoHU6HBsifh92Zeicm1GDQKd1vp3Y/kOi8ub0DozCa9KpvYNCXslFHYRmLNiqRopGdTGwNLpNw==",
-      "dev": true,
-      "engines": {
-        "node": ">= 4.5.0"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/onetime": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
-      "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
-      "dev": true,
-      "dependencies": {
-        "mimic-fn": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/open": {
-      "version": "6.4.0",
-      "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz",
-      "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==",
-      "dev": true,
-      "dependencies": {
-        "is-wsl": "^1.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/ora": {
-      "version": "3.4.0",
-      "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz",
-      "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^2.4.2",
-        "cli-cursor": "^2.1.0",
-        "cli-spinners": "^2.0.0",
-        "log-symbols": "^2.2.0",
-        "strip-ansi": "^5.2.0",
-        "wcwidth": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/path-key": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
-      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/restore-cursor": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
-      "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
-      "dev": true,
-      "dependencies": {
-        "onetime": "^2.0.0",
-        "signal-exit": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/semver": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/shebang-command": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
-      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
-      "dev": true,
-      "dependencies": {
-        "shebang-regex": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/shebang-regex": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
-      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/strip-ansi": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-      "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/which": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
-      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
-      "dev": true,
-      "dependencies": {
-        "isexe": "^2.0.0"
-      },
-      "bin": {
-        "node-which": "bin/node-which"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/firebase-tools/node_modules/ws": {
-      "version": "7.4.3",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.3.tgz",
-      "integrity": "sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA==",
-      "dev": true,
-      "engines": {
-        "node": ">=8.3.0"
-      },
-      "peerDependencies": {
-        "bufferutil": "^4.0.1",
-        "utf-8-validate": "^5.0.2"
-      },
-      "peerDependenciesMeta": {
-        "bufferutil": {
-          "optional": true
-        },
-        "utf-8-validate": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/flat-arguments": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/flat-arguments/-/flat-arguments-1.0.2.tgz",
-      "integrity": "sha1-m6p4Ct8FAfKC1ybJxqA426ROp28=",
-      "dev": true,
-      "dependencies": {
-        "array-flatten": "^1.0.0",
-        "as-array": "^1.0.0",
-        "lodash.isarguments": "^3.0.0",
-        "lodash.isobject": "^3.0.0"
-      }
-    },
-    "node_modules/flat-arguments/node_modules/array-flatten": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
-      "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
-      "dev": true
-    },
-    "node_modules/flat-arguments/node_modules/as-array": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/as-array/-/as-array-1.0.0.tgz",
-      "integrity": "sha1-KKbu6qVynx9OyiBH316d4avaDtE=",
-      "dev": true,
-      "dependencies": {
-        "lodash.isarguments": "2.4.x",
-        "lodash.isobject": "^2.4.1",
-        "lodash.values": "^2.4.1"
-      }
-    },
-    "node_modules/flat-arguments/node_modules/as-array/node_modules/lodash.isarguments": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-2.4.1.tgz",
-      "integrity": "sha1-STGpwIJTrfCRrnyhkiWKlzh27Mo=",
-      "dev": true
-    },
-    "node_modules/flat-arguments/node_modules/as-array/node_modules/lodash.isobject": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz",
-      "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=",
-      "dev": true,
-      "dependencies": {
-        "lodash._objecttypes": "~2.4.1"
-      }
-    },
-    "node_modules/flat-arguments/node_modules/lodash.isobject": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz",
-      "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=",
-      "dev": true
-    },
-    "node_modules/flatted": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
-      "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
-      "dev": true
-    },
-    "node_modules/flush-write-stream": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
-      "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.3.6"
-      }
-    },
-    "node_modules/fn.name": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
-      "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==",
-      "dev": true
-    },
-    "node_modules/follow-redirects": {
-      "version": "1.13.1",
-      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz",
-      "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==",
-      "dev": true,
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/for-in": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
-      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/forever-agent": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
-      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/form-data": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
-      "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
-      "dev": true,
-      "dependencies": {
-        "asynckit": "^0.4.0",
-        "combined-stream": "^1.0.6",
-        "mime-types": "^2.1.12"
-      },
-      "engines": {
-        "node": ">= 0.12"
-      }
-    },
-    "node_modules/forwarded": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
-      "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/fragment-cache": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
-      "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
-      "dev": true,
-      "dependencies": {
-        "map-cache": "^0.2.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/fresh": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
-      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/from2": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
-      "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.1",
-        "readable-stream": "^2.0.0"
-      }
-    },
-    "node_modules/fs-constants": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
-      "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
-      "dev": true
-    },
-    "node_modules/fs-extra": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz",
-      "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=",
-      "dev": true,
-      "dependencies": {
-        "graceful-fs": "^4.1.2",
-        "jsonfile": "^4.0.0",
-        "universalify": "^0.1.0"
-      }
-    },
-    "node_modules/fs-minipass": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
-      "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
-      "dev": true,
-      "dependencies": {
-        "minipass": "^3.0.0"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/fs-write-stream-atomic": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
-      "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
-      "dev": true,
-      "dependencies": {
-        "graceful-fs": "^4.1.2",
-        "iferr": "^0.1.5",
-        "imurmurhash": "^0.1.4",
-        "readable-stream": "1 || 2"
-      }
-    },
-    "node_modules/fs.realpath": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
-      "dev": true
-    },
-    "node_modules/fsevents": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.1.tgz",
-      "integrity": "sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==",
-      "dev": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
-      }
-    },
-    "node_modules/fstream": {
-      "version": "1.0.12",
-      "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
-      "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
-      "dev": true,
-      "dependencies": {
-        "graceful-fs": "^4.1.2",
-        "inherits": "~2.0.0",
-        "mkdirp": ">=0.5 0",
-        "rimraf": "2"
-      },
-      "engines": {
-        "node": ">=0.6"
-      }
-    },
-    "node_modules/fstream/node_modules/rimraf": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-      "dev": true,
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      }
-    },
-    "node_modules/function-bind": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-      "dev": true
-    },
-    "node_modules/fuzzy": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz",
-      "integrity": "sha1-THbsL/CsGjap3M+aAN+GIweNTtg=",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6.0"
-      }
-    },
-    "node_modules/gauge": {
-      "version": "2.7.4",
-      "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
-      "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "aproba": "^1.0.3",
-        "console-control-strings": "^1.0.0",
-        "has-unicode": "^2.0.0",
-        "object-assign": "^4.1.0",
-        "signal-exit": "^3.0.0",
-        "string-width": "^1.0.1",
-        "strip-ansi": "^3.0.1",
-        "wide-align": "^1.1.0"
-      }
-    },
-    "node_modules/gauge/node_modules/is-fullwidth-code-point": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
-      "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "number-is-nan": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/gauge/node_modules/string-width": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-      "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "code-point-at": "^1.0.0",
-        "is-fullwidth-code-point": "^1.0.0",
-        "strip-ansi": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/gaxios": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.1.0.tgz",
-      "integrity": "sha512-vb0to8xzGnA2qcgywAjtshOKKVDf2eQhJoiL6fHhgW5tVN7wNk7egnYIO9zotfn3lQ3De1VPdf7V5/BWfCtCmg==",
-      "dependencies": {
-        "abort-controller": "^3.0.0",
-        "extend": "^3.0.2",
-        "https-proxy-agent": "^5.0.0",
-        "is-stream": "^2.0.0",
-        "node-fetch": "^2.3.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/gaxios/node_modules/agent-base": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
-      "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
-      "dependencies": {
-        "debug": "4"
-      },
-      "engines": {
-        "node": ">= 6.0.0"
-      }
-    },
-    "node_modules/gaxios/node_modules/https-proxy-agent": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
-      "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
-      "dependencies": {
-        "agent-base": "6",
-        "debug": "4"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/gaxios/node_modules/is-stream": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
-      "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/gcp-metadata": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.2.1.tgz",
-      "integrity": "sha512-tSk+REe5iq/N+K+SK1XjZJUrFPuDqGZVzCy2vocIHIGmPlTGsa8owXMJwGkrXr73NO0AzhPW4MF2DEHz7P2AVw==",
-      "dependencies": {
-        "gaxios": "^4.0.0",
-        "json-bigint": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/genfun": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz",
-      "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==",
-      "dev": true
-    },
-    "node_modules/get-caller-file": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
-      "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
-      "dev": true
-    },
-    "node_modules/get-intrinsic": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz",
-      "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==",
-      "dev": true,
-      "dependencies": {
-        "function-bind": "^1.1.1",
-        "has": "^1.0.3",
-        "has-symbols": "^1.0.1"
-      }
-    },
-    "node_modules/get-stream": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
-      "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
-      "dev": true,
-      "dependencies": {
-        "pump": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/get-value": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
-      "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/getpass": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
-      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
-      "dev": true,
-      "dependencies": {
-        "assert-plus": "^1.0.0"
-      }
-    },
-    "node_modules/glob": {
-      "version": "7.1.5",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz",
-      "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==",
-      "dev": true,
-      "dependencies": {
-        "fs.realpath": "^1.0.0",
-        "inflight": "^1.0.4",
-        "inherits": "2",
-        "minimatch": "^3.0.4",
-        "once": "^1.3.0",
-        "path-is-absolute": "^1.0.0"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/glob-parent": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-      "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
-      "dev": true,
-      "dependencies": {
-        "is-glob": "^3.1.0",
-        "path-dirname": "^1.0.0"
-      }
-    },
-    "node_modules/glob-parent/node_modules/is-glob": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-      "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
-      "dev": true,
-      "dependencies": {
-        "is-extglob": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/glob-slash": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/glob-slash/-/glob-slash-1.0.0.tgz",
-      "integrity": "sha1-/lLvpDMjP3Si/mTHq7m8hIICq5U=",
-      "dev": true
-    },
-    "node_modules/glob-slasher": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/glob-slasher/-/glob-slasher-1.0.1.tgz",
-      "integrity": "sha1-dHoOW7IiZC7hDT4FRD4QlJPLD44=",
-      "dev": true,
-      "dependencies": {
-        "glob-slash": "^1.0.0",
-        "lodash.isobject": "^2.4.1",
-        "toxic": "^1.0.0"
-      }
-    },
-    "node_modules/global-dirs": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz",
-      "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==",
-      "dev": true,
-      "dependencies": {
-        "ini": "1.3.7"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/global-dirs/node_modules/ini": {
-      "version": "1.3.7",
-      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz",
-      "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==",
-      "dev": true
-    },
-    "node_modules/globals": {
-      "version": "11.12.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
-      "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/globby": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
-      "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
-      "dev": true,
-      "dependencies": {
-        "array-union": "^1.0.1",
-        "dir-glob": "^2.0.0",
-        "glob": "^7.1.2",
-        "ignore": "^3.3.5",
-        "pify": "^3.0.0",
-        "slash": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/globby/node_modules/pify": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-      "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/google-auth-library": {
-      "version": "6.1.6",
-      "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.1.6.tgz",
-      "integrity": "sha512-Q+ZjUEvLQj/lrVHF/IQwRo6p3s8Nc44Zk/DALsN+ac3T4HY/g/3rrufkgtl+nZ1TW7DNAw5cTChdVp4apUXVgQ==",
-      "dependencies": {
-        "arrify": "^2.0.0",
-        "base64-js": "^1.3.0",
-        "ecdsa-sig-formatter": "^1.0.11",
-        "fast-text-encoding": "^1.0.0",
-        "gaxios": "^4.0.0",
-        "gcp-metadata": "^4.2.0",
-        "gtoken": "^5.0.4",
-        "jws": "^4.0.0",
-        "lru-cache": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/google-auth-library/node_modules/arrify": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
-      "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/google-auth-library/node_modules/lru-cache": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-      "dependencies": {
-        "yallist": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/google-gax": {
-      "version": "1.12.0",
-      "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-1.12.0.tgz",
-      "integrity": "sha512-BeeoxVO6y9K20gUsexUwptutd0PfrTItrA02JWwwstlBIOAcvgFp86MHWufQsnrkPVhxBjHXq65aIkSejtJjDg==",
-      "dev": true,
-      "dependencies": {
-        "@grpc/grpc-js": "^0.6.12",
-        "@grpc/proto-loader": "^0.5.1",
-        "@types/long": "^4.0.0",
-        "abort-controller": "^3.0.0",
-        "duplexify": "^3.6.0",
-        "google-auth-library": "^5.0.0",
-        "is-stream-ended": "^0.1.4",
-        "lodash.at": "^4.6.0",
-        "lodash.has": "^4.5.2",
-        "node-fetch": "^2.6.0",
-        "protobufjs": "^6.8.8",
-        "retry-request": "^4.0.0",
-        "semver": "^6.0.0",
-        "walkdir": "^0.4.0"
-      },
-      "bin": {
-        "compileProtos": "build/tools/compileProtos.js"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/google-gax/node_modules/@grpc/grpc-js": {
-      "version": "0.6.18",
-      "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-0.6.18.tgz",
-      "integrity": "sha512-uAzv/tM8qpbf1vpx1xPMfcUMzbfdqJtdCYAqY/LsLeQQlnTb4vApylojr+wlCyr7bZeg3AFfHvtihnNOQQt/nA==",
-      "dev": true,
-      "dependencies": {
-        "semver": "^6.2.0"
-      },
-      "engines": {
-        "node": "^8.13.0 || >=10.10.0"
-      }
-    },
-    "node_modules/google-gax/node_modules/agent-base": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
-      "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
-      "dev": true,
-      "dependencies": {
-        "debug": "4"
-      },
-      "engines": {
-        "node": ">= 6.0.0"
-      }
-    },
-    "node_modules/google-gax/node_modules/arrify": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
-      "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/google-gax/node_modules/gaxios": {
-      "version": "2.3.4",
-      "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.3.4.tgz",
-      "integrity": "sha512-US8UMj8C5pRnao3Zykc4AAVr+cffoNKRTg9Rsf2GiuZCW69vgJj38VK2PzlPuQU73FZ/nTk9/Av6/JGcE1N9vA==",
-      "dev": true,
-      "dependencies": {
-        "abort-controller": "^3.0.0",
-        "extend": "^3.0.2",
-        "https-proxy-agent": "^5.0.0",
-        "is-stream": "^2.0.0",
-        "node-fetch": "^2.3.0"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/google-gax/node_modules/gcp-metadata": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-3.5.0.tgz",
-      "integrity": "sha512-ZQf+DLZ5aKcRpLzYUyBS3yo3N0JSa82lNDO8rj3nMSlovLcz2riKFBsYgDzeXcv75oo5eqB2lx+B14UvPoCRnA==",
-      "dev": true,
-      "dependencies": {
-        "gaxios": "^2.1.0",
-        "json-bigint": "^0.3.0"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/google-gax/node_modules/google-auth-library": {
-      "version": "5.10.1",
-      "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-5.10.1.tgz",
-      "integrity": "sha512-rOlaok5vlpV9rSiUu5EpR0vVpc+PhN62oF4RyX/6++DG1VsaulAFEMlDYBLjJDDPI6OcNOCGAKy9UVB/3NIDXg==",
-      "dev": true,
-      "dependencies": {
-        "arrify": "^2.0.0",
-        "base64-js": "^1.3.0",
-        "ecdsa-sig-formatter": "^1.0.11",
-        "fast-text-encoding": "^1.0.0",
-        "gaxios": "^2.1.0",
-        "gcp-metadata": "^3.4.0",
-        "gtoken": "^4.1.0",
-        "jws": "^4.0.0",
-        "lru-cache": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/google-gax/node_modules/google-p12-pem": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-2.0.4.tgz",
-      "integrity": "sha512-S4blHBQWZRnEW44OcR7TL9WR+QCqByRvhNDZ/uuQfpxywfupikf/miba8js1jZi6ZOGv5slgSuoshCWh6EMDzg==",
-      "dev": true,
-      "dependencies": {
-        "node-forge": "^0.9.0"
-      },
-      "bin": {
-        "gp12-pem": "build/src/bin/gp12-pem.js"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/google-gax/node_modules/gtoken": {
-      "version": "4.1.4",
-      "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-4.1.4.tgz",
-      "integrity": "sha512-VxirzD0SWoFUo5p8RDP8Jt2AGyOmyYcT/pOUgDKJCK+iSw0TMqwrVfY37RXTNmoKwrzmDHSk0GMT9FsgVmnVSA==",
-      "dev": true,
-      "dependencies": {
-        "gaxios": "^2.1.0",
-        "google-p12-pem": "^2.0.0",
-        "jws": "^4.0.0",
-        "mime": "^2.2.0"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/google-gax/node_modules/https-proxy-agent": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
-      "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
-      "dev": true,
-      "dependencies": {
-        "agent-base": "6",
-        "debug": "4"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/google-gax/node_modules/is-stream": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
-      "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/google-gax/node_modules/json-bigint": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-0.3.1.tgz",
-      "integrity": "sha512-DGWnSzmusIreWlEupsUelHrhwmPPE+FiQvg+drKfk2p+bdEYa5mp4PJ8JsCWqae0M2jQNb0HPvnwvf1qOTThzQ==",
-      "dev": true,
-      "dependencies": {
-        "bignumber.js": "^9.0.0"
-      }
-    },
-    "node_modules/google-gax/node_modules/mime": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz",
-      "integrity": "sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==",
-      "dev": true,
-      "bin": {
-        "mime": "cli.js"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/google-gax/node_modules/node-forge": {
-      "version": "0.9.2",
-      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.2.tgz",
-      "integrity": "sha512-naKSScof4Wn+aoHU6HBsifh92Zeicm1GDQKd1vp3Y/kOi8ub0DozCa9KpvYNCXslFHYRmLNiqRopGdTGwNLpNw==",
-      "dev": true,
-      "engines": {
-        "node": ">= 4.5.0"
-      }
-    },
-    "node_modules/google-p12-pem": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.0.3.tgz",
-      "integrity": "sha512-wS0ek4ZtFx/ACKYF3JhyGe5kzH7pgiQ7J5otlumqR9psmWMYc+U9cErKlCYVYHoUaidXHdZ2xbo34kB+S+24hA==",
-      "dependencies": {
-        "node-forge": "^0.10.0"
-      },
-      "bin": {
-        "gp12-pem": "build/src/bin/gp12-pem.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/got": {
-      "version": "9.6.0",
-      "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
-      "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
-      "dev": true,
-      "dependencies": {
-        "@sindresorhus/is": "^0.14.0",
-        "@szmarczak/http-timer": "^1.1.2",
-        "cacheable-request": "^6.0.0",
-        "decompress-response": "^3.3.0",
-        "duplexer3": "^0.1.4",
-        "get-stream": "^4.1.0",
-        "lowercase-keys": "^1.0.1",
-        "mimic-response": "^1.0.1",
-        "p-cancelable": "^1.0.0",
-        "to-readable-stream": "^1.0.0",
-        "url-parse-lax": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8.6"
-      }
-    },
-    "node_modules/graceful-fs": {
-      "version": "4.2.4",
-      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
-      "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
-      "dev": true
-    },
-    "node_modules/gtoken": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.2.1.tgz",
-      "integrity": "sha512-OY0BfPKe3QnMsY9MzTHTSKn+Vl2l1CcLe6BwDEQj00mbbkl5nyQ/7EUREstg4fQNZ8iYE7br4JJ7TdKeDOPWmw==",
-      "dependencies": {
-        "gaxios": "^4.0.0",
-        "google-p12-pem": "^3.0.3",
-        "jws": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/handle-thing": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz",
-      "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==",
-      "dev": true
-    },
-    "node_modules/har-schema": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
-      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/har-validator": {
-      "version": "5.1.5",
-      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
-      "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
-      "dev": true,
-      "dependencies": {
-        "ajv": "^6.12.3",
-        "har-schema": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/har-validator/node_modules/ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "dev": true,
-      "dependencies": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      }
-    },
-    "node_modules/har-validator/node_modules/fast-deep-equal": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-      "dev": true
-    },
-    "node_modules/has": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-      "dev": true,
-      "dependencies": {
-        "function-bind": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4.0"
-      }
-    },
-    "node_modules/has-ansi": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
-      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/has-binary2": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz",
-      "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==",
-      "dev": true,
-      "dependencies": {
-        "isarray": "2.0.1"
-      }
-    },
-    "node_modules/has-binary2/node_modules/isarray": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
-      "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=",
-      "dev": true
-    },
-    "node_modules/has-cors": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
-      "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=",
-      "dev": true
-    },
-    "node_modules/has-flag": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
-      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/has-symbols": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
-      "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/has-unicode": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
-      "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
-      "dev": true,
-      "optional": true
-    },
-    "node_modules/has-value": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
-      "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
-      "dev": true,
-      "dependencies": {
-        "get-value": "^2.0.6",
-        "has-values": "^1.0.0",
-        "isobject": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/has-values": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
-      "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
-      "dev": true,
-      "dependencies": {
-        "is-number": "^3.0.0",
-        "kind-of": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/has-values/node_modules/is-number": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-      "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/has-values/node_modules/is-number/node_modules/kind-of": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-      "dev": true,
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/has-values/node_modules/kind-of": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
-      "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
-      "dev": true,
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/has-yarn": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz",
-      "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/hash-base": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
-      "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.4",
-        "readable-stream": "^3.6.0",
-        "safe-buffer": "^5.2.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/hash-base/node_modules/readable-stream": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-      "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.3",
-        "string_decoder": "^1.1.1",
-        "util-deprecate": "^1.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/hash-base/node_modules/safe-buffer": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-      "dev": true
-    },
-    "node_modules/hash.js": {
-      "version": "1.1.7",
-      "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
-      "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.3",
-        "minimalistic-assert": "^1.0.1"
-      }
-    },
-    "node_modules/hex-color-regex": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
-      "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==",
-      "dev": true
-    },
-    "node_modules/hmac-drbg": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
-      "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
-      "dev": true,
-      "dependencies": {
-        "hash.js": "^1.0.3",
-        "minimalistic-assert": "^1.0.0",
-        "minimalistic-crypto-utils": "^1.0.1"
-      }
-    },
-    "node_modules/home-dir": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/home-dir/-/home-dir-1.0.0.tgz",
-      "integrity": "sha1-KRfrRL3JByztqUJXlUOEfjAX/k4=",
-      "dev": true
-    },
-    "node_modules/hosted-git-info": {
-      "version": "3.0.7",
-      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.7.tgz",
-      "integrity": "sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ==",
-      "dev": true,
-      "dependencies": {
-        "lru-cache": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/hosted-git-info/node_modules/lru-cache": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-      "dev": true,
-      "dependencies": {
-        "yallist": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/hpack.js": {
-      "version": "2.1.6",
-      "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
-      "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.1",
-        "obuf": "^1.0.0",
-        "readable-stream": "^2.0.1",
-        "wbuf": "^1.1.0"
-      }
-    },
-    "node_modules/hsl-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz",
-      "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=",
-      "dev": true
-    },
-    "node_modules/hsla-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz",
-      "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=",
-      "dev": true
-    },
-    "node_modules/html-comment-regex": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz",
-      "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==",
-      "dev": true
-    },
-    "node_modules/html-entities": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz",
-      "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==",
-      "dev": true
-    },
-    "node_modules/html-escaper": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
-      "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
-      "dev": true
-    },
-    "node_modules/http-cache-semantics": {
-      "version": "3.8.1",
-      "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz",
-      "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==",
-      "dev": true
-    },
-    "node_modules/http-deceiver": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
-      "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
-      "dev": true
-    },
-    "node_modules/http-errors": {
-      "version": "1.7.2",
-      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
-      "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
-      "dev": true,
-      "dependencies": {
-        "depd": "~1.1.2",
-        "inherits": "2.0.3",
-        "setprototypeof": "1.1.1",
-        "statuses": ">= 1.5.0 < 2",
-        "toidentifier": "1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/http-errors/node_modules/inherits": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
-      "dev": true
-    },
-    "node_modules/http-parser-js": {
-      "version": "0.5.3",
-      "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz",
-      "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg=="
-    },
-    "node_modules/http-proxy": {
-      "version": "1.18.1",
-      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
-      "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
-      "dev": true,
-      "dependencies": {
-        "eventemitter3": "^4.0.0",
-        "follow-redirects": "^1.0.0",
-        "requires-port": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
-    "node_modules/http-proxy-agent": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz",
-      "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==",
-      "dev": true,
-      "dependencies": {
-        "agent-base": "4",
-        "debug": "3.1.0"
-      },
-      "engines": {
-        "node": ">= 4.5.0"
-      }
-    },
-    "node_modules/http-proxy-agent/node_modules/debug": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-      "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/http-proxy-agent/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
-    },
-    "node_modules/http-proxy-middleware": {
-      "version": "0.19.1",
-      "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
-      "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
-      "dev": true,
-      "dependencies": {
-        "http-proxy": "^1.17.0",
-        "is-glob": "^4.0.0",
-        "lodash": "^4.17.11",
-        "micromatch": "^3.1.10"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/http-signature": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
-      "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
-      "dev": true,
-      "dependencies": {
-        "assert-plus": "^1.0.0",
-        "jsprim": "^1.2.2",
-        "sshpk": "^1.7.0"
-      },
-      "engines": {
-        "node": ">=0.8",
-        "npm": ">=1.3.7"
-      }
-    },
-    "node_modules/https-browserify": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
-      "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
-      "dev": true
-    },
-    "node_modules/https-proxy-agent": {
-      "version": "2.2.4",
-      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz",
-      "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==",
-      "dev": true,
-      "dependencies": {
-        "agent-base": "^4.3.0",
-        "debug": "^3.1.0"
-      },
-      "engines": {
-        "node": ">= 4.5.0"
-      }
-    },
-    "node_modules/https-proxy-agent/node_modules/debug": {
-      "version": "3.2.7",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-      "dev": true,
-      "dependencies": {
-        "ms": "^2.1.1"
-      }
-    },
-    "node_modules/humanize-ms": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
-      "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=",
-      "dev": true,
-      "dependencies": {
-        "ms": "^2.0.0"
-      }
-    },
-    "node_modules/iconv-lite": {
-      "version": "0.4.24",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
-      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
-      "dev": true,
-      "dependencies": {
-        "safer-buffer": ">= 2.1.2 < 3"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/idb": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz",
-      "integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw=="
-    },
-    "node_modules/ieee754": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
-      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
-      "dev": true
-    },
-    "node_modules/iferr": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
-      "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
-      "dev": true
-    },
-    "node_modules/ignore": {
-      "version": "3.3.10",
-      "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
-      "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
-      "dev": true
-    },
-    "node_modules/ignore-walk": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz",
-      "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==",
-      "dev": true,
-      "dependencies": {
-        "minimatch": "^3.0.4"
-      }
-    },
-    "node_modules/image-size": {
-      "version": "0.5.5",
-      "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
-      "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
-      "dev": true,
-      "optional": true,
-      "bin": {
-        "image-size": "bin/image-size.js"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/immediate": {
-      "version": "3.0.6",
-      "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
-      "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=",
-      "dev": true
-    },
-    "node_modules/import-cwd": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
-      "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=",
-      "dev": true,
-      "dependencies": {
-        "import-from": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/import-fresh": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
-      "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
-      "dev": true,
-      "dependencies": {
-        "caller-path": "^2.0.0",
-        "resolve-from": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/import-from": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz",
-      "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=",
-      "dev": true,
-      "dependencies": {
-        "resolve-from": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/import-lazy": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
-      "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/import-local": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
-      "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
-      "dev": true,
-      "dependencies": {
-        "pkg-dir": "^3.0.0",
-        "resolve-cwd": "^2.0.0"
-      },
-      "bin": {
-        "import-local-fixture": "fixtures/cli.js"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/imurmurhash": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
-      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.8.19"
-      }
-    },
-    "node_modules/indent-string": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
-      "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/indexes-of": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
-      "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
-      "dev": true
-    },
-    "node_modules/indexof": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
-      "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
-      "dev": true
-    },
-    "node_modules/infer-owner": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
-      "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
-      "dev": true
-    },
-    "node_modules/inflight": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-      "dev": true,
-      "dependencies": {
-        "once": "^1.3.0",
-        "wrappy": "1"
-      }
-    },
-    "node_modules/inherits": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-      "dev": true
-    },
-    "node_modules/ini": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
-      "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/inquirer": {
-      "version": "6.5.2",
-      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
-      "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==",
-      "dev": true,
-      "dependencies": {
-        "ansi-escapes": "^3.2.0",
-        "chalk": "^2.4.2",
-        "cli-cursor": "^2.1.0",
-        "cli-width": "^2.0.0",
-        "external-editor": "^3.0.3",
-        "figures": "^2.0.0",
-        "lodash": "^4.17.12",
-        "mute-stream": "0.0.7",
-        "run-async": "^2.2.0",
-        "rxjs": "^6.4.0",
-        "string-width": "^2.1.0",
-        "strip-ansi": "^5.1.0",
-        "through": "^2.3.6"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/inquirer-autocomplete-prompt": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-1.3.0.tgz",
-      "integrity": "sha512-zvAc+A6SZdcN+earG5SsBu1RnQdtBS4o8wZ/OqJiCfL34cfOx+twVRq7wumYix6Rkdjn1N2nVCcO3wHqKqgdGg==",
-      "dev": true,
-      "dependencies": {
-        "ansi-escapes": "^4.3.1",
-        "chalk": "^4.0.0",
-        "figures": "^3.2.0",
-        "run-async": "^2.4.0",
-        "rxjs": "^6.6.2"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "peerDependencies": {
-        "inquirer": "^5.0.0 || ^6.0.0 || ^7.0.0"
-      }
-    },
-    "node_modules/inquirer-autocomplete-prompt/node_modules/ansi-escapes": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz",
-      "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==",
-      "dev": true,
-      "dependencies": {
-        "type-fest": "^0.11.0"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/inquirer-autocomplete-prompt/node_modules/ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "dev": true,
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/inquirer-autocomplete-prompt/node_modules/chalk": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
-      "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
-      "dev": true,
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/inquirer-autocomplete-prompt/node_modules/color-convert": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "dev": true,
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/inquirer-autocomplete-prompt/node_modules/color-name": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-      "dev": true
-    },
-    "node_modules/inquirer-autocomplete-prompt/node_modules/figures": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
-      "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
-      "dev": true,
-      "dependencies": {
-        "escape-string-regexp": "^1.0.5"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/inquirer-autocomplete-prompt/node_modules/has-flag": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/inquirer-autocomplete-prompt/node_modules/rxjs": {
-      "version": "6.6.3",
-      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
-      "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
-      "dev": true,
-      "dependencies": {
-        "tslib": "^1.9.0"
-      },
-      "engines": {
-        "npm": ">=2.0.0"
-      }
-    },
-    "node_modules/inquirer-autocomplete-prompt/node_modules/supports-color": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-      "dev": true,
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/inquirer-autocomplete-prompt/node_modules/type-fest": {
-      "version": "0.11.0",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz",
-      "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/inquirer/node_modules/cli-cursor": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
-      "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
-      "dev": true,
-      "dependencies": {
-        "restore-cursor": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/inquirer/node_modules/mimic-fn": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
-      "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/inquirer/node_modules/onetime": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
-      "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
-      "dev": true,
-      "dependencies": {
-        "mimic-fn": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/inquirer/node_modules/restore-cursor": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
-      "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
-      "dev": true,
-      "dependencies": {
-        "onetime": "^2.0.0",
-        "signal-exit": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/inquirer/node_modules/strip-ansi": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-      "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-      "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/install-artifact-from-github": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/install-artifact-from-github/-/install-artifact-from-github-1.2.0.tgz",
-      "integrity": "sha512-3OxCPcY55XlVM3kkfIpeCgmoSKnMsz2A3Dbhsq0RXpIknKQmrX1YiznCeW9cD2ItFmDxziA3w6Eg8d80AoL3oA==",
-      "dev": true,
-      "optional": true,
-      "bin": {
-        "install-from-cache": "bin/install-from-cache.js",
-        "save-to-github-cache": "bin/save-to-github-cache.js"
-      }
-    },
-    "node_modules/internal-ip": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz",
-      "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==",
-      "dev": true,
-      "dependencies": {
-        "default-gateway": "^4.2.0",
-        "ipaddr.js": "^1.9.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/invariant": {
-      "version": "2.2.4",
-      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
-      "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
-      "dev": true,
-      "dependencies": {
-        "loose-envify": "^1.0.0"
-      }
-    },
-    "node_modules/invert-kv": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
-      "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/ip": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
-      "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
-      "dev": true
-    },
-    "node_modules/ip-regex": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
-      "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/ipaddr.js": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
-      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/is-absolute-url": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz",
-      "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-accessor-descriptor": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
-      "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-accessor-descriptor/node_modules/kind-of": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-      "dev": true,
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-arguments": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz",
-      "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/is-arrayish": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
-      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
-      "dev": true
-    },
-    "node_modules/is-binary-path": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
-      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-      "dev": true,
-      "dependencies": {
-        "binary-extensions": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-buffer": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-      "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
-      "dev": true
-    },
-    "node_modules/is-callable": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz",
-      "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/is-ci": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
-      "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
-      "dev": true,
-      "dependencies": {
-        "ci-info": "^2.0.0"
-      },
-      "bin": {
-        "is-ci": "bin.js"
-      }
-    },
-    "node_modules/is-color-stop": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz",
-      "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=",
-      "dev": true,
-      "dependencies": {
-        "css-color-names": "^0.0.4",
-        "hex-color-regex": "^1.1.0",
-        "hsl-regex": "^1.0.0",
-        "hsla-regex": "^1.0.0",
-        "rgb-regex": "^1.0.1",
-        "rgba-regex": "^1.0.0"
-      }
-    },
-    "node_modules/is-core-module": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz",
-      "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==",
-      "dev": true,
-      "dependencies": {
-        "has": "^1.0.3"
-      }
-    },
-    "node_modules/is-data-descriptor": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
-      "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-data-descriptor/node_modules/kind-of": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-      "dev": true,
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-date-object": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
-      "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/is-descriptor": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
-      "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
-      "dev": true,
-      "dependencies": {
-        "is-accessor-descriptor": "^0.1.6",
-        "is-data-descriptor": "^0.1.4",
-        "kind-of": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-descriptor/node_modules/kind-of": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
-      "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-directory": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
-      "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-docker": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz",
-      "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==",
-      "dev": true,
-      "bin": {
-        "is-docker": "cli.js"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-extendable": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
-      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-extglob": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-fullwidth-code-point": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-      "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/is-glob": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
-      "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
-      "dev": true,
-      "dependencies": {
-        "is-extglob": "^2.1.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-installed-globally": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz",
-      "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==",
-      "dev": true,
-      "dependencies": {
-        "global-dirs": "^2.0.1",
-        "is-path-inside": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/is-installed-globally/node_modules/is-path-inside": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz",
-      "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-interactive": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
-      "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-negative-zero": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
-      "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/is-npm": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz",
-      "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-number": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.12.0"
-      }
-    },
-    "node_modules/is-obj": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
-      "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-path-cwd": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
-      "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/is-path-in-cwd": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
-      "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==",
-      "dev": true,
-      "dependencies": {
-        "is-path-inside": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/is-path-inside": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz",
-      "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==",
-      "dev": true,
-      "dependencies": {
-        "path-is-inside": "^1.0.2"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/is-plain-obj": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
-      "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-plain-object": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
-      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
-      "dev": true,
-      "dependencies": {
-        "isobject": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-promise": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
-      "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==",
-      "dev": true
-    },
-    "node_modules/is-regex": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz",
-      "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==",
-      "dev": true,
-      "dependencies": {
-        "has-symbols": "^1.0.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/is-resolvable": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
-      "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
-      "dev": true
-    },
-    "node_modules/is-stream": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
-      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-stream-ended": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz",
-      "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==",
-      "dev": true
-    },
-    "node_modules/is-svg": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz",
-      "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==",
-      "dev": true,
-      "dependencies": {
-        "html-comment-regex": "^1.1.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/is-symbol": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
-      "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
-      "dev": true,
-      "dependencies": {
-        "has-symbols": "^1.0.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/is-typedarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
-      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
-      "dev": true
-    },
-    "node_modules/is-url": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
-      "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==",
-      "dev": true
-    },
-    "node_modules/is-windows": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
-      "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-wsl": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
-      "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
-      "dev": true,
-      "dependencies": {
-        "is-docker": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/is-yarn-global": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz",
-      "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==",
-      "dev": true
-    },
-    "node_modules/is2": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.6.tgz",
-      "integrity": "sha512-+Z62OHOjA6k2sUDOKXoZI3EXv7Fb1K52jpTBLbkfx62bcUeSsrTBLhEquCRDKTx0XE5XbHcG/S2vrtE3lnEDsQ==",
-      "dev": true,
-      "dependencies": {
-        "deep-is": "^0.1.3",
-        "ip-regex": "^4.1.0",
-        "is-url": "^1.2.4"
-      },
-      "engines": {
-        "node": ">=v0.10.0"
-      }
-    },
-    "node_modules/is2/node_modules/ip-regex": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz",
-      "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/isarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
-      "dev": true
-    },
-    "node_modules/isbinaryfile": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz",
-      "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==",
-      "dev": true,
-      "dependencies": {
-        "buffer-alloc": "^1.2.0"
-      },
-      "engines": {
-        "node": ">=0.6.0"
-      }
-    },
-    "node_modules/isexe": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
-      "dev": true
-    },
-    "node_modules/isobject": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/isstream": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
-      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
-      "dev": true
-    },
-    "node_modules/istanbul-api": {
-      "version": "2.1.7",
-      "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.7.tgz",
-      "integrity": "sha512-LYTOa2UrYFyJ/aSczZi/6lBykVMjCCvUmT64gOe+jPZFy4w6FYfPGqFT2IiQ2BxVHHDOvCD7qrIXb0EOh4uGWw==",
-      "dev": true,
-      "dependencies": {
-        "async": "^2.6.2",
-        "compare-versions": "^3.4.0",
-        "fileset": "^2.0.3",
-        "istanbul-lib-coverage": "^2.0.5",
-        "istanbul-lib-hook": "^2.0.7",
-        "istanbul-lib-instrument": "^3.3.0",
-        "istanbul-lib-report": "^2.0.8",
-        "istanbul-lib-source-maps": "^3.0.6",
-        "istanbul-reports": "^2.2.5",
-        "js-yaml": "^3.13.1",
-        "make-dir": "^2.1.0",
-        "minimatch": "^3.0.4",
-        "once": "^1.4.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/istanbul-api/node_modules/istanbul-lib-coverage": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz",
-      "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/istanbul-api/node_modules/istanbul-lib-instrument": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz",
-      "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==",
-      "dev": true,
-      "dependencies": {
-        "@babel/generator": "^7.4.0",
-        "@babel/parser": "^7.4.3",
-        "@babel/template": "^7.4.0",
-        "@babel/traverse": "^7.4.3",
-        "@babel/types": "^7.4.0",
-        "istanbul-lib-coverage": "^2.0.5",
-        "semver": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/istanbul-lib-coverage": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz",
-      "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/istanbul-lib-hook": {
-      "version": "2.0.7",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz",
-      "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==",
-      "dev": true,
-      "dependencies": {
-        "append-transform": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/istanbul-lib-instrument": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
-      "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
-      "dev": true,
-      "dependencies": {
-        "@babel/core": "^7.7.5",
-        "@istanbuljs/schema": "^0.1.2",
-        "istanbul-lib-coverage": "^3.0.0",
-        "semver": "^6.3.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/istanbul-lib-report": {
-      "version": "2.0.8",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz",
-      "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==",
-      "dev": true,
-      "dependencies": {
-        "istanbul-lib-coverage": "^2.0.5",
-        "make-dir": "^2.1.0",
-        "supports-color": "^6.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/istanbul-lib-report/node_modules/istanbul-lib-coverage": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz",
-      "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/istanbul-lib-report/node_modules/supports-color": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-      "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
-      "dev": true,
-      "dependencies": {
-        "has-flag": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/istanbul-lib-source-maps": {
-      "version": "3.0.6",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz",
-      "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==",
-      "dev": true,
-      "dependencies": {
-        "debug": "^4.1.1",
-        "istanbul-lib-coverage": "^2.0.5",
-        "make-dir": "^2.1.0",
-        "rimraf": "^2.6.3",
-        "source-map": "^0.6.1"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/istanbul-lib-source-maps/node_modules/istanbul-lib-coverage": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz",
-      "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/istanbul-lib-source-maps/node_modules/rimraf": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-      "dev": true,
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      }
-    },
-    "node_modules/istanbul-lib-source-maps/node_modules/source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/istanbul-reports": {
-      "version": "2.2.7",
-      "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz",
-      "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==",
-      "dev": true,
-      "dependencies": {
-        "html-escaper": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/jasmine": {
-      "version": "2.8.0",
-      "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz",
-      "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=",
-      "dev": true,
-      "dependencies": {
-        "exit": "^0.1.2",
-        "glob": "^7.0.6",
-        "jasmine-core": "~2.8.0"
-      },
-      "bin": {
-        "jasmine": "bin/jasmine.js"
-      }
-    },
-    "node_modules/jasmine-core": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.5.0.tgz",
-      "integrity": "sha512-nCeAiw37MIMA9w9IXso7bRaLl+c/ef3wnxsoSAlYrzS+Ot0zTG6nU8G/cIfGkqpkjX2wNaIW9RFG0TwIFnG6bA==",
-      "dev": true
-    },
-    "node_modules/jasmine-spec-reporter": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz",
-      "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==",
-      "dev": true,
-      "dependencies": {
-        "colors": "1.1.2"
-      }
-    },
-    "node_modules/jasmine/node_modules/jasmine-core": {
-      "version": "2.8.0",
-      "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz",
-      "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=",
-      "dev": true
-    },
-    "node_modules/jasminewd2": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz",
-      "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=",
-      "dev": true,
-      "engines": {
-        "node": ">= 6.9.x"
-      }
-    },
-    "node_modules/jest-worker": {
-      "version": "24.9.0",
-      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
-      "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
-      "dev": true,
-      "dependencies": {
-        "merge-stream": "^2.0.0",
-        "supports-color": "^6.1.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/jest-worker/node_modules/supports-color": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-      "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
-      "dev": true,
-      "dependencies": {
-        "has-flag": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/jju": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz",
-      "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=",
-      "dev": true
-    },
-    "node_modules/join-path": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/join-path/-/join-path-1.1.1.tgz",
-      "integrity": "sha1-EFNaEm0ky9Zff/zfFe8uYxB2tQU=",
-      "dev": true,
-      "dependencies": {
-        "as-array": "^2.0.0",
-        "url-join": "0.0.1",
-        "valid-url": "^1"
-      }
-    },
-    "node_modules/js-levenshtein": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
-      "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/js-tokens": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
-      "dev": true
-    },
-    "node_modules/js-yaml": {
-      "version": "3.14.1",
-      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
-      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
-      "dev": true,
-      "dependencies": {
-        "argparse": "^1.0.7",
-        "esprima": "^4.0.0"
-      },
-      "bin": {
-        "js-yaml": "bin/js-yaml.js"
-      }
-    },
-    "node_modules/jsbn": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
-      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
-      "dev": true
-    },
-    "node_modules/jsesc": {
-      "version": "2.5.2",
-      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
-      "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
-      "dev": true,
-      "bin": {
-        "jsesc": "bin/jsesc"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/json-bigint": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
-      "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
-      "dependencies": {
-        "bignumber.js": "^9.0.0"
-      }
-    },
-    "node_modules/json-buffer": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
-      "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
-      "dev": true
-    },
-    "node_modules/json-parse-better-errors": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
-      "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
-      "dev": true
-    },
-    "node_modules/json-parse-even-better-errors": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
-      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
-      "dev": true
-    },
-    "node_modules/json-parse-helpfulerror": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz",
-      "integrity": "sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w=",
-      "dev": true,
-      "dependencies": {
-        "jju": "^1.1.0"
-      }
-    },
-    "node_modules/json-ptr": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/json-ptr/-/json-ptr-1.3.2.tgz",
-      "integrity": "sha512-tFH40YQ+lG7mgYYM1kGZOhQngO4SbOEHZJlA4W+NtetWZ20EUU3BPU+30uWRKumuAJoSo5eqrsXD2h72ioS8ew==",
-      "dev": true,
-      "dependencies": {
-        "tslib": "^2.0.0"
-      }
-    },
-    "node_modules/json-ptr/node_modules/tslib": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
-      "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==",
-      "dev": true
-    },
-    "node_modules/json-schema": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
-      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
-      "dev": true
-    },
-    "node_modules/json-schema-traverse": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-      "dev": true
-    },
-    "node_modules/json-stringify-safe": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
-      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
-      "dev": true
-    },
-    "node_modules/json3": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz",
-      "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==",
-      "dev": true
-    },
-    "node_modules/json5": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
-      "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
-      "dev": true,
-      "dependencies": {
-        "minimist": "^1.2.0"
-      },
-      "bin": {
-        "json5": "lib/cli.js"
-      }
-    },
-    "node_modules/jsonfile": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
-      "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
-      "dev": true,
-      "dependencies": {
-        "graceful-fs": "^4.1.6"
-      }
-    },
-    "node_modules/jsonparse": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
-      "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
-      "dev": true,
-      "engines": [
-        "node >= 0.2.0"
-      ]
-    },
-    "node_modules/jsonschema": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.0.tgz",
-      "integrity": "sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw==",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/JSONStream": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
-      "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
-      "dev": true,
-      "dependencies": {
-        "jsonparse": "^1.2.0",
-        "through": ">=2.2.7 <3"
-      },
-      "bin": {
-        "JSONStream": "bin.js"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/jsonwebtoken": {
-      "version": "8.5.1",
-      "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
-      "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
-      "dev": true,
-      "dependencies": {
-        "jws": "^3.2.2",
-        "lodash.includes": "^4.3.0",
-        "lodash.isboolean": "^3.0.3",
-        "lodash.isinteger": "^4.0.4",
-        "lodash.isnumber": "^3.0.3",
-        "lodash.isplainobject": "^4.0.6",
-        "lodash.isstring": "^4.0.1",
-        "lodash.once": "^4.0.0",
-        "ms": "^2.1.1",
-        "semver": "^5.6.0"
-      },
-      "engines": {
-        "node": ">=4",
-        "npm": ">=1.4.28"
-      }
-    },
-    "node_modules/jsonwebtoken/node_modules/jwa": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
-      "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
-      "dev": true,
-      "dependencies": {
-        "buffer-equal-constant-time": "1.0.1",
-        "ecdsa-sig-formatter": "1.0.11",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "node_modules/jsonwebtoken/node_modules/jws": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
-      "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
-      "dev": true,
-      "dependencies": {
-        "jwa": "^1.4.1",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "node_modules/jsonwebtoken/node_modules/semver": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/jsprim": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
-      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
-      "dev": true,
-      "engines": [
-        "node >=0.6.0"
-      ],
-      "dependencies": {
-        "assert-plus": "1.0.0",
-        "extsprintf": "1.3.0",
-        "json-schema": "0.2.3",
-        "verror": "1.10.0"
-      }
-    },
-    "node_modules/jszip": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz",
-      "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==",
-      "dev": true,
-      "dependencies": {
-        "lie": "~3.3.0",
-        "pako": "~1.0.2",
-        "readable-stream": "~2.3.6",
-        "set-immediate-shim": "~1.0.1"
-      }
-    },
-    "node_modules/jwa": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
-      "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
-      "dependencies": {
-        "buffer-equal-constant-time": "1.0.1",
-        "ecdsa-sig-formatter": "1.0.11",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "node_modules/jws": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
-      "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
-      "dependencies": {
-        "jwa": "^2.0.0",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "node_modules/karma": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/karma/-/karma-4.3.0.tgz",
-      "integrity": "sha512-NSPViHOt+RW38oJklvYxQC4BSQsv737oQlr/r06pCM+slDOr4myuI1ivkRmp+3dVpJDfZt2DmaPJ2wkx+ZZuMQ==",
-      "dev": true,
-      "dependencies": {
-        "bluebird": "^3.3.0",
-        "body-parser": "^1.16.1",
-        "braces": "^3.0.2",
-        "chokidar": "^3.0.0",
-        "colors": "^1.1.0",
-        "connect": "^3.6.0",
-        "core-js": "^3.1.3",
-        "di": "^0.0.1",
-        "dom-serialize": "^2.2.0",
-        "flatted": "^2.0.0",
-        "glob": "^7.1.1",
-        "graceful-fs": "^4.1.2",
-        "http-proxy": "^1.13.0",
-        "isbinaryfile": "^3.0.0",
-        "lodash": "^4.17.14",
-        "log4js": "^4.0.0",
-        "mime": "^2.3.1",
-        "minimatch": "^3.0.2",
-        "optimist": "^0.6.1",
-        "qjobs": "^1.1.4",
-        "range-parser": "^1.2.0",
-        "rimraf": "^2.6.0",
-        "safe-buffer": "^5.0.1",
-        "socket.io": "2.1.1",
-        "source-map": "^0.6.1",
-        "tmp": "0.0.33",
-        "useragent": "2.3.0"
-      },
-      "bin": {
-        "karma": "bin/karma"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/karma-chrome-launcher": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz",
-      "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==",
-      "dev": true,
-      "dependencies": {
-        "which": "^1.2.1"
-      }
-    },
-    "node_modules/karma-coverage-istanbul-reporter": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.1.1.tgz",
-      "integrity": "sha512-CH8lTi8+kKXGvrhy94+EkEMldLCiUA0xMOiL31vvli9qK0T+qcXJAwWBRVJWnVWxYkTmyWar8lPz63dxX6/z1A==",
-      "dev": true,
-      "dependencies": {
-        "istanbul-api": "^2.1.6",
-        "minimatch": "^3.0.4"
-      }
-    },
-    "node_modules/karma-jasmine": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-2.0.1.tgz",
-      "integrity": "sha512-iuC0hmr9b+SNn1DaUD2QEYtUxkS1J+bSJSn7ejdEexs7P8EYvA1CWkEdrDQ+8jVH3AgWlCNwjYsT1chjcNW9lA==",
-      "dev": true,
-      "dependencies": {
-        "jasmine-core": "^3.3"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/karma-jasmine-html-reporter": {
-      "version": "1.5.4",
-      "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.4.tgz",
-      "integrity": "sha512-PtilRLno5O6wH3lDihRnz0Ba8oSn0YUJqKjjux1peoYGwo0AQqrWRbdWk/RLzcGlb+onTyXAnHl6M+Hu3UxG/Q==",
-      "dev": true
-    },
-    "node_modules/karma-source-map-support": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz",
-      "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==",
-      "dev": true,
-      "dependencies": {
-        "source-map-support": "^0.5.5"
-      }
-    },
-    "node_modules/karma/node_modules/mime": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz",
-      "integrity": "sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==",
-      "dev": true,
-      "bin": {
-        "mime": "cli.js"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/karma/node_modules/rimraf": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-      "dev": true,
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      }
-    },
-    "node_modules/karma/node_modules/source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/keyv": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
-      "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
-      "dev": true,
-      "dependencies": {
-        "json-buffer": "3.0.0"
-      }
-    },
-    "node_modules/killable": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
-      "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==",
-      "dev": true
-    },
-    "node_modules/kind-of": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
-      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/kuler": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz",
-      "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==",
-      "dev": true
-    },
-    "node_modules/latest-version": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz",
-      "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==",
-      "dev": true,
-      "dependencies": {
-        "package-json": "^6.3.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/lazystream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
-      "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
-      "dev": true,
-      "dependencies": {
-        "readable-stream": "^2.0.5"
-      },
-      "engines": {
-        "node": ">= 0.6.3"
-      }
-    },
-    "node_modules/lcid": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
-      "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
-      "dev": true,
-      "dependencies": {
-        "invert-kv": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/less": {
-      "version": "3.10.3",
-      "resolved": "https://registry.npmjs.org/less/-/less-3.10.3.tgz",
-      "integrity": "sha512-vz32vqfgmoxF1h3K4J+yKCtajH0PWmjkIFgbs5d78E/c/e+UQTnI+lWK+1eQRE95PXM2mC3rJlLSSP9VQHnaow==",
-      "dev": true,
-      "dependencies": {
-        "clone": "^2.1.2",
-        "errno": "^0.1.1",
-        "graceful-fs": "^4.1.2",
-        "mime": "^1.4.1",
-        "mkdirp": "^0.5.0",
-        "request": "^2.83.0"
-      },
-      "bin": {
-        "lessc": "bin/lessc"
-      },
-      "engines": {
-        "node": ">=6"
-      },
-      "optionalDependencies": {
-        "image-size": "~0.5.0",
-        "promise": "^7.1.1",
-        "source-map": "~0.6.0"
-      }
-    },
-    "node_modules/less-loader": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-5.0.0.tgz",
-      "integrity": "sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg==",
-      "dev": true,
-      "dependencies": {
-        "clone": "^2.1.1",
-        "loader-utils": "^1.1.0",
-        "pify": "^4.0.1"
-      },
-      "engines": {
-        "node": ">= 4.8.0"
-      }
-    },
-    "node_modules/less/node_modules/source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "dev": true,
-      "optional": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/leven": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
-      "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/license-webpack-plugin": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.3.tgz",
-      "integrity": "sha512-vTSY5r9HOq4sxR2BIxdIXWKI+9n3b+DoQkhKHedB3TdSxTfXUDRxKXdAj5iejR+qNXprXsxvEu9W+zOhgGIkAw==",
-      "dev": true,
-      "dependencies": {
-        "@types/webpack-sources": "^0.1.5",
-        "webpack-sources": "^1.2.0"
-      }
-    },
-    "node_modules/lie": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
-      "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
-      "dev": true,
-      "dependencies": {
-        "immediate": "~3.0.5"
-      }
-    },
-    "node_modules/listenercount": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz",
-      "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=",
-      "dev": true
-    },
-    "node_modules/loader-runner": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz",
-      "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==",
-      "dev": true,
-      "engines": {
-        "node": ">=4.3.0 <5.0.0 || >=5.10"
-      }
-    },
-    "node_modules/loader-utils": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
-      "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
-      "dev": true,
-      "dependencies": {
-        "big.js": "^5.2.2",
-        "emojis-list": "^2.0.0",
-        "json5": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/locate-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-      "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-      "dev": true,
-      "dependencies": {
-        "p-locate": "^3.0.0",
-        "path-exists": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/lodash": {
-      "version": "4.17.20",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
-      "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
-      "dev": true
-    },
-    "node_modules/lodash._isnative": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/lodash._isnative/-/lodash._isnative-2.4.1.tgz",
-      "integrity": "sha1-PqZAS3hKe+g2x7V1gOHN95sUgyw=",
-      "dev": true
-    },
-    "node_modules/lodash._objecttypes": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz",
-      "integrity": "sha1-fAt/admKH3ZSn4kLDNsbTf7BHBE=",
-      "dev": true
-    },
-    "node_modules/lodash._shimkeys": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz",
-      "integrity": "sha1-bpzJZm/wgfC1psl4uD4kLmlJ0gM=",
-      "dev": true,
-      "dependencies": {
-        "lodash._objecttypes": "~2.4.1"
-      }
-    },
-    "node_modules/lodash.at": {
-      "version": "4.6.0",
-      "resolved": "https://registry.npmjs.org/lodash.at/-/lodash.at-4.6.0.tgz",
-      "integrity": "sha1-k83OZk8KGZTqM9181A4jr9EbD/g=",
-      "dev": true
-    },
-    "node_modules/lodash.camelcase": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
-      "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY="
-    },
-    "node_modules/lodash.clonedeep": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
-      "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
-      "dev": true
-    },
-    "node_modules/lodash.defaults": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
-      "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=",
-      "dev": true
-    },
-    "node_modules/lodash.difference": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz",
-      "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=",
-      "dev": true
-    },
-    "node_modules/lodash.flatten": {
-      "version": "4.4.0",
-      "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
-      "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
-      "dev": true
-    },
-    "node_modules/lodash.has": {
-      "version": "4.5.2",
-      "resolved": "https://registry.npmjs.org/lodash.has/-/lodash.has-4.5.2.tgz",
-      "integrity": "sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI=",
-      "dev": true
-    },
-    "node_modules/lodash.includes": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
-      "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=",
-      "dev": true
-    },
-    "node_modules/lodash.isarguments": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
-      "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=",
-      "dev": true
-    },
-    "node_modules/lodash.isboolean": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
-      "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=",
-      "dev": true
-    },
-    "node_modules/lodash.isinteger": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
-      "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=",
-      "dev": true
-    },
-    "node_modules/lodash.isnumber": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
-      "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=",
-      "dev": true
-    },
-    "node_modules/lodash.isobject": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz",
-      "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=",
-      "dev": true,
-      "dependencies": {
-        "lodash._objecttypes": "~2.4.1"
-      }
-    },
-    "node_modules/lodash.isplainobject": {
-      "version": "4.0.6",
-      "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
-      "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=",
-      "dev": true
-    },
-    "node_modules/lodash.isstring": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
-      "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=",
-      "dev": true
-    },
-    "node_modules/lodash.keys": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz",
-      "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=",
-      "dev": true,
-      "dependencies": {
-        "lodash._isnative": "~2.4.1",
-        "lodash._shimkeys": "~2.4.1",
-        "lodash.isobject": "~2.4.1"
-      }
-    },
-    "node_modules/lodash.memoize": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
-      "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
-      "dev": true
-    },
-    "node_modules/lodash.once": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
-      "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=",
-      "dev": true
-    },
-    "node_modules/lodash.snakecase": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz",
-      "integrity": "sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40=",
-      "dev": true
-    },
-    "node_modules/lodash.toarray": {
-      "version": "4.4.0",
-      "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
-      "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=",
-      "dev": true
-    },
-    "node_modules/lodash.union": {
-      "version": "4.6.0",
-      "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
-      "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=",
-      "dev": true
-    },
-    "node_modules/lodash.uniq": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
-      "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
-      "dev": true
-    },
-    "node_modules/lodash.values": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-2.4.1.tgz",
-      "integrity": "sha1-q/UUQ2s8twUAFieXjLzzCxKA7qQ=",
-      "dev": true,
-      "dependencies": {
-        "lodash.keys": "~2.4.1"
-      }
-    },
-    "node_modules/log-symbols": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz",
-      "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^2.4.2"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/log4js": {
-      "version": "4.5.1",
-      "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.5.1.tgz",
-      "integrity": "sha512-EEEgFcE9bLgaYUKuozyFfytQM2wDHtXn4tAN41pkaxpNjAykv11GVdeI4tHtmPWW4Xrgh9R/2d7XYghDVjbKKw==",
-      "dev": true,
-      "dependencies": {
-        "date-format": "^2.0.0",
-        "debug": "^4.1.1",
-        "flatted": "^2.0.0",
-        "rfdc": "^1.1.4",
-        "streamroller": "^1.0.6"
-      },
-      "engines": {
-        "node": ">=6.0"
-      }
-    },
-    "node_modules/logform": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/logform/-/logform-2.2.0.tgz",
-      "integrity": "sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==",
-      "dev": true,
-      "dependencies": {
-        "colors": "^1.2.1",
-        "fast-safe-stringify": "^2.0.4",
-        "fecha": "^4.2.0",
-        "ms": "^2.1.1",
-        "triple-beam": "^1.3.0"
-      }
-    },
-    "node_modules/logform/node_modules/colors": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
-      "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.1.90"
-      }
-    },
-    "node_modules/loglevel": {
-      "version": "1.7.1",
-      "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz",
-      "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6.0"
-      }
-    },
-    "node_modules/long": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
-      "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
-    },
-    "node_modules/loose-envify": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
-      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
-      "dev": true,
-      "dependencies": {
-        "js-tokens": "^3.0.0 || ^4.0.0"
-      },
-      "bin": {
-        "loose-envify": "cli.js"
-      }
-    },
-    "node_modules/lottie-web": {
-      "version": "5.7.6",
-      "resolved": "https://registry.npmjs.org/lottie-web/-/lottie-web-5.7.6.tgz",
-      "integrity": "sha512-qn/KYMI4QQvFDhtoxs0RPkn9uZKhDB9keE5BKgbJlSRfNEZpRiDlwBE9ibYz4nPhbyE+NUlt8IRIVR7g5OSX3w=="
-    },
-    "node_modules/lowercase-keys": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
-      "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/lru-cache": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
-      "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
-      "dev": true,
-      "dependencies": {
-        "yallist": "^3.0.2"
-      }
-    },
-    "node_modules/lru-cache/node_modules/yallist": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-      "dev": true
-    },
-    "node_modules/lru-queue": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
-      "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=",
-      "dev": true,
-      "dependencies": {
-        "es5-ext": "~0.10.2"
-      }
-    },
-    "node_modules/magic-string": {
-      "version": "0.25.4",
-      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz",
-      "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==",
-      "dev": true,
-      "dependencies": {
-        "sourcemap-codec": "^1.4.4"
-      }
-    },
-    "node_modules/make-dir": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
-      "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
-      "dev": true,
-      "dependencies": {
-        "pify": "^4.0.1",
-        "semver": "^5.6.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/make-dir/node_modules/semver": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/make-error": {
-      "version": "1.3.6",
-      "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
-      "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
-      "dev": true
-    },
-    "node_modules/make-fetch-happen": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz",
-      "integrity": "sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==",
-      "dev": true,
-      "dependencies": {
-        "agentkeepalive": "^3.4.1",
-        "cacache": "^12.0.0",
-        "http-cache-semantics": "^3.8.1",
-        "http-proxy-agent": "^2.1.0",
-        "https-proxy-agent": "^2.2.3",
-        "lru-cache": "^5.1.1",
-        "mississippi": "^3.0.0",
-        "node-fetch-npm": "^2.0.2",
-        "promise-retry": "^1.1.1",
-        "socks-proxy-agent": "^4.0.0",
-        "ssri": "^6.0.0"
-      }
-    },
-    "node_modules/make-fetch-happen/node_modules/cacache": {
-      "version": "12.0.4",
-      "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
-      "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
-      "dev": true,
-      "dependencies": {
-        "bluebird": "^3.5.5",
-        "chownr": "^1.1.1",
-        "figgy-pudding": "^3.5.1",
-        "glob": "^7.1.4",
-        "graceful-fs": "^4.1.15",
-        "infer-owner": "^1.0.3",
-        "lru-cache": "^5.1.1",
-        "mississippi": "^3.0.0",
-        "mkdirp": "^0.5.1",
-        "move-concurrently": "^1.0.1",
-        "promise-inflight": "^1.0.1",
-        "rimraf": "^2.6.3",
-        "ssri": "^6.0.1",
-        "unique-filename": "^1.1.1",
-        "y18n": "^4.0.0"
-      }
-    },
-    "node_modules/make-fetch-happen/node_modules/rimraf": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-      "dev": true,
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      }
-    },
-    "node_modules/make-fetch-happen/node_modules/ssri": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
-      "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
-      "dev": true,
-      "dependencies": {
-        "figgy-pudding": "^3.5.1"
-      }
-    },
-    "node_modules/mamacro": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz",
-      "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==",
-      "dev": true
-    },
-    "node_modules/map-age-cleaner": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
-      "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
-      "dev": true,
-      "dependencies": {
-        "p-defer": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/map-cache": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
-      "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/map-visit": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
-      "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
-      "dev": true,
-      "dependencies": {
-        "object-visit": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/marked": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz",
-      "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==",
-      "dev": true,
-      "bin": {
-        "marked": "bin/marked"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/marked-terminal": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-3.3.0.tgz",
-      "integrity": "sha512-+IUQJ5VlZoAFsM5MHNT7g3RHSkA3eETqhRCdXv4niUMAKHQ7lb1yvAcuGPmm4soxhmtX13u4Li6ZToXtvSEH+A==",
-      "dev": true,
-      "dependencies": {
-        "ansi-escapes": "^3.1.0",
-        "cardinal": "^2.1.1",
-        "chalk": "^2.4.1",
-        "cli-table": "^0.3.1",
-        "node-emoji": "^1.4.1",
-        "supports-hyperlinks": "^1.0.1"
-      },
-      "peerDependencies": {
-        "marked": "^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0"
-      }
-    },
-    "node_modules/md5.js": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
-      "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
-      "dev": true,
-      "dependencies": {
-        "hash-base": "^3.0.0",
-        "inherits": "^2.0.1",
-        "safe-buffer": "^5.1.2"
-      }
-    },
-    "node_modules/mdn-data": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
-      "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==",
-      "dev": true
-    },
-    "node_modules/media-typer": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
-      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/mem": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
-      "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
-      "dev": true,
-      "dependencies": {
-        "map-age-cleaner": "^0.1.1",
-        "mimic-fn": "^2.0.0",
-        "p-is-promise": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/memoizee": {
-      "version": "0.4.15",
-      "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz",
-      "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==",
-      "dev": true,
-      "dependencies": {
-        "d": "^1.0.1",
-        "es5-ext": "^0.10.53",
-        "es6-weak-map": "^2.0.3",
-        "event-emitter": "^0.3.5",
-        "is-promise": "^2.2.2",
-        "lru-queue": "^0.1.0",
-        "next-tick": "^1.1.0",
-        "timers-ext": "^0.1.7"
-      }
-    },
-    "node_modules/memoizee/node_modules/next-tick": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
-      "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
-      "dev": true
-    },
-    "node_modules/memory-fs": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
-      "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
-      "dev": true,
-      "dependencies": {
-        "errno": "^0.1.3",
-        "readable-stream": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=4.3.0 <5.0.0 || >=5.10"
-      }
-    },
-    "node_modules/merge-descriptors": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
-      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
-      "dev": true
-    },
-    "node_modules/merge-source-map": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz",
-      "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==",
-      "dev": true,
-      "dependencies": {
-        "source-map": "^0.6.1"
-      }
-    },
-    "node_modules/merge-source-map/node_modules/source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/merge-stream": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
-      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
-      "dev": true
-    },
-    "node_modules/methods": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
-      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/micromatch": {
-      "version": "3.1.10",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-      "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-      "dev": true,
-      "dependencies": {
-        "arr-diff": "^4.0.0",
-        "array-unique": "^0.3.2",
-        "braces": "^2.3.1",
-        "define-property": "^2.0.2",
-        "extend-shallow": "^3.0.2",
-        "extglob": "^2.0.4",
-        "fragment-cache": "^0.2.1",
-        "kind-of": "^6.0.2",
-        "nanomatch": "^1.2.9",
-        "object.pick": "^1.3.0",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/micromatch/node_modules/braces": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-      "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-      "dev": true,
-      "dependencies": {
-        "arr-flatten": "^1.1.0",
-        "array-unique": "^0.3.2",
-        "extend-shallow": "^2.0.1",
-        "fill-range": "^4.0.0",
-        "isobject": "^3.0.1",
-        "repeat-element": "^1.1.2",
-        "snapdragon": "^0.8.1",
-        "snapdragon-node": "^2.0.1",
-        "split-string": "^3.0.2",
-        "to-regex": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/micromatch/node_modules/braces/node_modules/extend-shallow": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-      "dev": true,
-      "dependencies": {
-        "is-extendable": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/micromatch/node_modules/fill-range": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-      "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-      "dev": true,
-      "dependencies": {
-        "extend-shallow": "^2.0.1",
-        "is-number": "^3.0.0",
-        "repeat-string": "^1.6.1",
-        "to-regex-range": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/micromatch/node_modules/fill-range/node_modules/extend-shallow": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-      "dev": true,
-      "dependencies": {
-        "is-extendable": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/micromatch/node_modules/is-number": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-      "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/micromatch/node_modules/is-number/node_modules/kind-of": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-      "dev": true,
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/micromatch/node_modules/to-regex-range": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-      "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
-      "dev": true,
-      "dependencies": {
-        "is-number": "^3.0.0",
-        "repeat-string": "^1.6.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/miller-rabin": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
-      "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
-      "dev": true,
-      "dependencies": {
-        "bn.js": "^4.0.0",
-        "brorand": "^1.0.1"
-      },
-      "bin": {
-        "miller-rabin": "bin/miller-rabin"
-      }
-    },
-    "node_modules/miller-rabin/node_modules/bn.js": {
-      "version": "4.11.9",
-      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
-      "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
-      "dev": true
-    },
-    "node_modules/mime": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
-      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
-      "dev": true,
-      "bin": {
-        "mime": "cli.js"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/mime-db": {
-      "version": "1.45.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz",
-      "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/mime-types": {
-      "version": "2.1.28",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz",
-      "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==",
-      "dev": true,
-      "dependencies": {
-        "mime-db": "1.45.0"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/mimic-fn": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
-      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/mimic-response": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
-      "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/mini-css-extract-plugin": {
-      "version": "0.8.0",
-      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz",
-      "integrity": "sha512-MNpRGbNA52q6U92i0qbVpQNsgk7LExy41MdAlG84FeytfDOtRIf/mCHdEgG8rpTKOaNKiqUnZdlptF469hxqOw==",
-      "dev": true,
-      "dependencies": {
-        "loader-utils": "^1.1.0",
-        "normalize-url": "1.9.1",
-        "schema-utils": "^1.0.0",
-        "webpack-sources": "^1.1.0"
-      },
-      "engines": {
-        "node": ">= 6.9.0"
-      }
-    },
-    "node_modules/mini-css-extract-plugin/node_modules/normalize-url": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
-      "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
-      "dev": true,
-      "dependencies": {
-        "object-assign": "^4.0.1",
-        "prepend-http": "^1.0.0",
-        "query-string": "^4.1.0",
-        "sort-keys": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/minimalistic-assert": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
-      "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
-      "dev": true
-    },
-    "node_modules/minimalistic-crypto-utils": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
-      "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
-      "dev": true
-    },
-    "node_modules/minimatch": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-      "dev": true,
-      "dependencies": {
-        "brace-expansion": "^1.1.7"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/minimist": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
-      "dev": true
-    },
-    "node_modules/minipass": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz",
-      "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==",
-      "dev": true,
-      "dependencies": {
-        "yallist": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/minipass-collect": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
-      "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
-      "dev": true,
-      "dependencies": {
-        "minipass": "^3.0.0"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/minipass-flush": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
-      "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
-      "dev": true,
-      "dependencies": {
-        "minipass": "^3.0.0"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/minipass-pipeline": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
-      "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
-      "dev": true,
-      "dependencies": {
-        "minipass": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/minizlib": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
-      "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
-      "dev": true,
-      "dependencies": {
-        "minipass": "^2.9.0"
-      }
-    },
-    "node_modules/minizlib/node_modules/minipass": {
-      "version": "2.9.0",
-      "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
-      "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
-      "dev": true,
-      "dependencies": {
-        "safe-buffer": "^5.1.2",
-        "yallist": "^3.0.0"
-      }
-    },
-    "node_modules/minizlib/node_modules/yallist": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-      "dev": true
-    },
-    "node_modules/mississippi": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
-      "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
-      "dev": true,
-      "dependencies": {
-        "concat-stream": "^1.5.0",
-        "duplexify": "^3.4.2",
-        "end-of-stream": "^1.1.0",
-        "flush-write-stream": "^1.0.0",
-        "from2": "^2.1.0",
-        "parallel-transform": "^1.1.0",
-        "pump": "^3.0.0",
-        "pumpify": "^1.3.3",
-        "stream-each": "^1.1.0",
-        "through2": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/mixin-deep": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
-      "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
-      "dev": true,
-      "dependencies": {
-        "for-in": "^1.0.2",
-        "is-extendable": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/mixin-deep/node_modules/is-extendable": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-      "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-      "dev": true,
-      "dependencies": {
-        "is-plain-object": "^2.0.4"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/mkdirp": {
-      "version": "0.5.5",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-      "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
-      "dev": true,
-      "dependencies": {
-        "minimist": "^1.2.5"
-      },
-      "bin": {
-        "mkdirp": "bin/cmd.js"
-      }
-    },
-    "node_modules/morgan": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
-      "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==",
-      "dev": true,
-      "dependencies": {
-        "basic-auth": "~2.0.1",
-        "debug": "2.6.9",
-        "depd": "~2.0.0",
-        "on-finished": "~2.3.0",
-        "on-headers": "~1.0.2"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/morgan/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/morgan/node_modules/depd": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
-      "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/morgan/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
-    },
-    "node_modules/move-concurrently": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
-      "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
-      "dev": true,
-      "dependencies": {
-        "aproba": "^1.1.1",
-        "copy-concurrently": "^1.0.0",
-        "fs-write-stream-atomic": "^1.0.8",
-        "mkdirp": "^0.5.1",
-        "rimraf": "^2.5.4",
-        "run-queue": "^1.0.3"
-      }
-    },
-    "node_modules/move-concurrently/node_modules/rimraf": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-      "dev": true,
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      }
-    },
-    "node_modules/ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-    },
-    "node_modules/multicast-dns": {
-      "version": "6.2.3",
-      "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz",
-      "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
-      "dev": true,
-      "dependencies": {
-        "dns-packet": "^1.3.1",
-        "thunky": "^1.0.2"
-      },
-      "bin": {
-        "multicast-dns": "cli.js"
-      }
-    },
-    "node_modules/multicast-dns-service-types": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
-      "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
-      "dev": true
-    },
-    "node_modules/mute-stream": {
-      "version": "0.0.7",
-      "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
-      "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
-      "dev": true
-    },
-    "node_modules/nan": {
-      "version": "2.14.2",
-      "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz",
-      "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==",
-      "dev": true,
-      "optional": true
-    },
-    "node_modules/nanomatch": {
-      "version": "1.2.13",
-      "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
-      "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
-      "dev": true,
-      "dependencies": {
-        "arr-diff": "^4.0.0",
-        "array-unique": "^0.3.2",
-        "define-property": "^2.0.2",
-        "extend-shallow": "^3.0.2",
-        "fragment-cache": "^0.2.1",
-        "is-windows": "^1.0.2",
-        "kind-of": "^6.0.2",
-        "object.pick": "^1.3.0",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/nash": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/nash/-/nash-3.0.0.tgz",
-      "integrity": "sha512-M5SahEycXUmko3zOvsBkF6p94CWLhnyy9hfpQ9Qzp+rQkQ8D1OaTlfTl1OBWktq9Fak3oDXKU+ev7tiMaMu+1w==",
-      "dev": true,
-      "dependencies": {
-        "async": "^1.3.0",
-        "flat-arguments": "^1.0.0",
-        "lodash": "^4.17.5",
-        "minimist": "^1.1.0"
-      }
-    },
-    "node_modules/nash/node_modules/async": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
-      "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
-      "dev": true
-    },
-    "node_modules/negotiator": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
-      "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/neo-async": {
-      "version": "2.6.2",
-      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
-      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
-      "dev": true
-    },
-    "node_modules/next-tick": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
-      "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
-      "dev": true
-    },
-    "node_modules/ng-apexcharts": {
-      "version": "1.5.7",
-      "resolved": "https://registry.npmjs.org/ng-apexcharts/-/ng-apexcharts-1.5.7.tgz",
-      "integrity": "sha512-7swEdaoXIZ1E6zfUpFfIJYNerPGBz47XRCa0ReyFGbj785LJPAOlTeo7t8CRzMI/ACKhHD/Y1IQatlwQkI2shg==",
-      "dependencies": {
-        "tslib": "^1.10.0"
-      },
-      "peerDependencies": {
-        "@angular/common": ">=9.0.0 <11.0.0",
-        "@angular/core": ">=9.0.0 <11.0.0",
-        "apexcharts": "^3.19.2",
-        "rxjs": "^6.5.5"
-      }
-    },
-    "node_modules/ng-waveform": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/ng-waveform/-/ng-waveform-0.2.1.tgz",
-      "integrity": "sha512-pGaxEro60TrvnrKJYj8i8Mq4arY/kU8wl7XYUwX+LOzGjrwsWL/5jnQAnW1bHQzrs4LmoDRybjj77nQH0WdS8A==",
-      "dependencies": {
-        "tslib": "^1.9.0"
-      },
-      "peerDependencies": {
-        "@angular/common": "^8.2.14",
-        "@angular/core": "^8.2.14"
-      }
-    },
-    "node_modules/ng2-pdf-viewer": {
-      "version": "6.4.1",
-      "resolved": "https://registry.npmjs.org/ng2-pdf-viewer/-/ng2-pdf-viewer-6.4.1.tgz",
-      "integrity": "sha512-A8R9SGa2bu4n+mtagGX8DqBrVAbuROrEgcAOQwCdciYTLAq9EFGEB8TCQZpjvYVaFTNwjKWTMTjFQVEorjbLeQ==",
-      "dependencies": {
-        "@types/pdfjs-dist": "~2.1.7",
-        "pdfjs-dist": "~2.5.207",
-        "tslib": "^1.10.0"
-      }
-    },
-    "node_modules/ngx-countdown": {
-      "version": "11.0.1",
-      "resolved": "https://registry.npmjs.org/ngx-countdown/-/ngx-countdown-11.0.1.tgz",
-      "integrity": "sha512-0qGSM+GSj/vQBJNy0rwPIsLFhm6Ley3tDtJPo+qJO0LqHq3zW5cTi5Pcf2YqypnxywLraJ4DX3WzhWMCDsDZkA==",
-      "dependencies": {
-        "tslib": "^2.0.0"
-      }
-    },
-    "node_modules/ngx-countdown/node_modules/tslib": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
-      "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
-    },
-    "node_modules/ngx-lottie": {
-      "version": "6.4.0",
-      "resolved": "https://registry.npmjs.org/ngx-lottie/-/ngx-lottie-6.4.0.tgz",
-      "integrity": "sha512-RuXljkSOpZyt/NLL2X89gNMIxvGrj/D1rRN4qrOrAZHdREeGAIapqvrldJpQDeiThkHeNfyWfmnDavhJfP/DHA==",
-      "dependencies": {
-        "tslib": "^2.0.0"
-      },
-      "peerDependencies": {
-        "@angular/core": ">=8.0.0",
-        "lottie-web": ">=5.4.0",
-        "rxjs": ">=6.0.0"
-      }
-    },
-    "node_modules/ngx-lottie/node_modules/tslib": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
-      "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
-    },
-    "node_modules/ngx-walkthrough": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/ngx-walkthrough/-/ngx-walkthrough-0.3.2.tgz",
-      "integrity": "sha512-fRfMJEngKuPS9b+6qH0e3FylpJy/ejoG2whySZWzKGxhbPFs4cPje3J7QZHQDYSK725GR+Dw/s0z/U43c6ZJnw==",
-      "dependencies": {
-        "tslib": "^1.7.1"
-      }
-    },
-    "node_modules/nice-try": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
-      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
-      "dev": true
-    },
-    "node_modules/node-emoji": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz",
-      "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==",
-      "dev": true,
-      "dependencies": {
-        "lodash.toarray": "^4.4.0"
-      }
-    },
-    "node_modules/node-fetch": {
-      "version": "2.6.1",
-      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
-      "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
-      "engines": {
-        "node": "4.x || >=6.0.0"
-      }
-    },
-    "node_modules/node-fetch-npm": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz",
-      "integrity": "sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==",
-      "dev": true,
-      "dependencies": {
-        "encoding": "^0.1.11",
-        "json-parse-better-errors": "^1.0.0",
-        "safe-buffer": "^5.1.1"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/node-forge": {
-      "version": "0.10.0",
-      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
-      "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==",
-      "engines": {
-        "node": ">= 6.0.0"
-      }
-    },
-    "node_modules/node-gyp": {
-      "version": "7.1.2",
-      "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz",
-      "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "env-paths": "^2.2.0",
-        "glob": "^7.1.4",
-        "graceful-fs": "^4.2.3",
-        "nopt": "^5.0.0",
-        "npmlog": "^4.1.2",
-        "request": "^2.88.2",
-        "rimraf": "^3.0.2",
-        "semver": "^7.3.2",
-        "tar": "^6.0.2",
-        "which": "^2.0.2"
-      },
-      "bin": {
-        "node-gyp": "bin/node-gyp.js"
-      },
-      "engines": {
-        "node": ">= 10.12.0"
-      }
-    },
-    "node_modules/node-gyp/node_modules/chownr": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
-      "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
-      "dev": true,
-      "optional": true,
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/node-gyp/node_modules/lru-cache": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "yallist": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/node-gyp/node_modules/minizlib": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
-      "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "minipass": "^3.0.0",
-        "yallist": "^4.0.0"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/node-gyp/node_modules/mkdirp": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
-      "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
-      "dev": true,
-      "optional": true,
-      "bin": {
-        "mkdirp": "bin/cmd.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/node-gyp/node_modules/rimraf": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/node-gyp/node_modules/semver": {
-      "version": "7.3.4",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
-      "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "lru-cache": "^6.0.0"
-      },
-      "bin": {
-        "semver": "bin/semver.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/node-gyp/node_modules/tar": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz",
-      "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "chownr": "^2.0.0",
-        "fs-minipass": "^2.0.0",
-        "minipass": "^3.0.0",
-        "minizlib": "^2.1.1",
-        "mkdirp": "^1.0.3",
-        "yallist": "^4.0.0"
-      },
-      "engines": {
-        "node": ">= 10"
-      }
-    },
-    "node_modules/node-gyp/node_modules/which": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
-      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "isexe": "^2.0.0"
-      },
-      "bin": {
-        "node-which": "bin/node-which"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/node-libs-browser": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
-      "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
-      "dev": true,
-      "dependencies": {
-        "assert": "^1.1.1",
-        "browserify-zlib": "^0.2.0",
-        "buffer": "^4.3.0",
-        "console-browserify": "^1.1.0",
-        "constants-browserify": "^1.0.0",
-        "crypto-browserify": "^3.11.0",
-        "domain-browser": "^1.1.1",
-        "events": "^3.0.0",
-        "https-browserify": "^1.0.0",
-        "os-browserify": "^0.3.0",
-        "path-browserify": "0.0.1",
-        "process": "^0.11.10",
-        "punycode": "^1.2.4",
-        "querystring-es3": "^0.2.0",
-        "readable-stream": "^2.3.3",
-        "stream-browserify": "^2.0.1",
-        "stream-http": "^2.7.2",
-        "string_decoder": "^1.0.0",
-        "timers-browserify": "^2.0.4",
-        "tty-browserify": "0.0.0",
-        "url": "^0.11.0",
-        "util": "^0.11.0",
-        "vm-browserify": "^1.0.1"
-      }
-    },
-    "node_modules/node-libs-browser/node_modules/punycode": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
-      "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
-      "dev": true
-    },
-    "node_modules/node-releases": {
-      "version": "1.1.70",
-      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.70.tgz",
-      "integrity": "sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw==",
-      "dev": true
-    },
-    "node_modules/nopt": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
-      "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "abbrev": "1"
-      },
-      "bin": {
-        "nopt": "bin/nopt.js"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/normalize-package-data": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
-      "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
-      "dev": true,
-      "dependencies": {
-        "hosted-git-info": "^2.1.4",
-        "resolve": "^1.10.0",
-        "semver": "2 || 3 || 4 || 5",
-        "validate-npm-package-license": "^3.0.1"
-      }
-    },
-    "node_modules/normalize-package-data/node_modules/hosted-git-info": {
-      "version": "2.8.8",
-      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
-      "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==",
-      "dev": true
-    },
-    "node_modules/normalize-package-data/node_modules/semver": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/normalize-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/normalize-range": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
-      "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/normalize-url": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz",
-      "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/npm-bundled": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz",
-      "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==",
-      "dev": true,
-      "dependencies": {
-        "npm-normalize-package-bin": "^1.0.1"
-      }
-    },
-    "node_modules/npm-normalize-package-bin": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
-      "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==",
-      "dev": true
-    },
-    "node_modules/npm-package-arg": {
-      "version": "6.1.1",
-      "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz",
-      "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==",
-      "dev": true,
-      "dependencies": {
-        "hosted-git-info": "^2.7.1",
-        "osenv": "^0.1.5",
-        "semver": "^5.6.0",
-        "validate-npm-package-name": "^3.0.0"
-      }
-    },
-    "node_modules/npm-package-arg/node_modules/hosted-git-info": {
-      "version": "2.8.8",
-      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
-      "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==",
-      "dev": true
-    },
-    "node_modules/npm-package-arg/node_modules/semver": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/npm-packlist": {
-      "version": "1.4.8",
-      "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz",
-      "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==",
-      "dev": true,
-      "dependencies": {
-        "ignore-walk": "^3.0.1",
-        "npm-bundled": "^1.0.1",
-        "npm-normalize-package-bin": "^1.0.1"
-      }
-    },
-    "node_modules/npm-pick-manifest": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz",
-      "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==",
-      "dev": true,
-      "dependencies": {
-        "figgy-pudding": "^3.5.1",
-        "npm-package-arg": "^6.0.0",
-        "semver": "^5.4.1"
-      }
-    },
-    "node_modules/npm-pick-manifest/node_modules/semver": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/npm-registry-fetch": {
-      "version": "4.0.7",
-      "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.7.tgz",
-      "integrity": "sha512-cny9v0+Mq6Tjz+e0erFAB+RYJ/AVGzkjnISiobqP8OWj9c9FLoZZu8/SPSKJWE17F1tk4018wfjV+ZbIbqC7fQ==",
-      "dev": true,
-      "dependencies": {
-        "bluebird": "^3.5.1",
-        "figgy-pudding": "^3.4.1",
-        "JSONStream": "^1.3.4",
-        "lru-cache": "^5.1.1",
-        "make-fetch-happen": "^5.0.0",
-        "npm-package-arg": "^6.1.0",
-        "safe-buffer": "^5.2.0"
-      }
-    },
-    "node_modules/npm-registry-fetch/node_modules/safe-buffer": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-      "dev": true
-    },
-    "node_modules/npm-run-path": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
-      "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
-      "dev": true,
-      "dependencies": {
-        "path-key": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/npmlog": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
-      "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "are-we-there-yet": "~1.1.2",
-        "console-control-strings": "~1.1.0",
-        "gauge": "~2.7.3",
-        "set-blocking": "~2.0.0"
-      }
-    },
-    "node_modules/nth-check": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
-      "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
-      "dev": true,
-      "dependencies": {
-        "boolbase": "~1.0.0"
-      }
-    },
-    "node_modules/num2fraction": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
-      "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
-      "dev": true
-    },
-    "node_modules/number-is-nan": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
-      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/oauth-sign": {
-      "version": "0.9.0",
-      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
-      "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/object-assign": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/object-component": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
-      "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=",
-      "dev": true
-    },
-    "node_modules/object-copy": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
-      "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
-      "dev": true,
-      "dependencies": {
-        "copy-descriptor": "^0.1.0",
-        "define-property": "^0.2.5",
-        "kind-of": "^3.0.3"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/object-copy/node_modules/define-property": {
-      "version": "0.2.5",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-      "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-      "dev": true,
-      "dependencies": {
-        "is-descriptor": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/object-copy/node_modules/kind-of": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-      "dev": true,
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/object-inspect": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz",
-      "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==",
-      "dev": true
-    },
-    "node_modules/object-is": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz",
-      "integrity": "sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.0",
-        "define-properties": "^1.1.3"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/object-keys": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
-      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/object-visit": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
-      "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
-      "dev": true,
-      "dependencies": {
-        "isobject": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/object.assign": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
-      "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.0",
-        "define-properties": "^1.1.3",
-        "has-symbols": "^1.0.1",
-        "object-keys": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/object.getownpropertydescriptors": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz",
-      "integrity": "sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.0",
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.18.0-next.1"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/object.pick": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
-      "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
-      "dev": true,
-      "dependencies": {
-        "isobject": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/object.values": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz",
-      "integrity": "sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.0",
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.18.0-next.1",
-        "has": "^1.0.3"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/obuf": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
-      "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
-      "dev": true
-    },
-    "node_modules/on-finished": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
-      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
-      "dev": true,
-      "dependencies": {
-        "ee-first": "1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/on-headers": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
-      "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/once": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-      "dev": true,
-      "dependencies": {
-        "wrappy": "1"
-      }
-    },
-    "node_modules/one-time": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz",
-      "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==",
-      "dev": true,
-      "dependencies": {
-        "fn.name": "1.x.x"
-      }
-    },
-    "node_modules/onetime": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
-      "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
-      "dev": true,
-      "dependencies": {
-        "mimic-fn": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/open": {
-      "version": "7.4.0",
-      "resolved": "https://registry.npmjs.org/open/-/open-7.4.0.tgz",
-      "integrity": "sha512-PGoBCX/lclIWlpS/R2PQuIR4NJoXh6X5AwVzE7WXnWRGvHg7+4TBCgsujUgiPpm0K1y4qvQeWnCWVTpTKZBtvA==",
-      "dev": true,
-      "dependencies": {
-        "is-docker": "^2.0.0",
-        "is-wsl": "^2.1.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/openapi3-ts": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/openapi3-ts/-/openapi3-ts-1.4.0.tgz",
-      "integrity": "sha512-8DmE2oKayvSkIR3XSZ4+pRliBsx19bSNeIzkTPswY8r4wvjX86bMxsORdqwAwMxE8PefOcSAT2auvi/0TZe9yA==",
-      "dev": true
-    },
-    "node_modules/opn": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz",
-      "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==",
-      "dev": true,
-      "dependencies": {
-        "is-wsl": "^1.1.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/opn/node_modules/is-wsl": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
-      "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/optimist": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
-      "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
-      "dev": true,
-      "dependencies": {
-        "minimist": "~0.0.1",
-        "wordwrap": "~0.0.2"
-      }
-    },
-    "node_modules/optimist/node_modules/minimist": {
-      "version": "0.0.10",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
-      "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
-      "dev": true
-    },
-    "node_modules/ora": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.2.tgz",
-      "integrity": "sha512-YUOZbamht5mfLxPmk4M35CD/5DuOkAacxlEUbStVXpBAt4fyhBf+vZHI/HRkI++QUp3sNoeA2Gw4C+hi4eGSig==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^2.4.2",
-        "cli-cursor": "^3.1.0",
-        "cli-spinners": "^2.2.0",
-        "is-interactive": "^1.0.0",
-        "log-symbols": "^3.0.0",
-        "strip-ansi": "^5.2.0",
-        "wcwidth": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/ora/node_modules/ansi-regex": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-      "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/ora/node_modules/strip-ansi": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-      "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/original": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
-      "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
-      "dev": true,
-      "dependencies": {
-        "url-parse": "^1.4.3"
-      }
-    },
-    "node_modules/os-browserify": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
-      "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
-      "dev": true
-    },
-    "node_modules/os-homedir": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
-      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/os-locale": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
-      "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
-      "dev": true,
-      "dependencies": {
-        "execa": "^1.0.0",
-        "lcid": "^2.0.0",
-        "mem": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/os-tmpdir": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
-      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/osenv": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
-      "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
-      "dev": true,
-      "dependencies": {
-        "os-homedir": "^1.0.0",
-        "os-tmpdir": "^1.0.0"
-      }
-    },
-    "node_modules/p-cancelable": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
-      "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/p-defer": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
-      "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/p-finally": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
-      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/p-is-promise": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
-      "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/p-limit": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
-      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-      "dev": true,
-      "dependencies": {
-        "p-try": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/p-locate": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-      "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-      "dev": true,
-      "dependencies": {
-        "p-limit": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/p-map": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
-      "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
-      "dev": true,
-      "dependencies": {
-        "aggregate-error": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/p-retry": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz",
-      "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==",
-      "dev": true,
-      "dependencies": {
-        "retry": "^0.12.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/p-try": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/package-json": {
-      "version": "6.5.0",
-      "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz",
-      "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==",
-      "dev": true,
-      "dependencies": {
-        "got": "^9.6.0",
-        "registry-auth-token": "^4.0.0",
-        "registry-url": "^5.0.0",
-        "semver": "^6.2.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/pacote": {
-      "version": "9.5.8",
-      "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.8.tgz",
-      "integrity": "sha512-0Tl8Oi/K0Lo4MZmH0/6IsT3gpGf9eEAznLXEQPKgPq7FscnbUOyopnVpwXlnQdIbCUaojWy1Wd7VMyqfVsRrIw==",
-      "dev": true,
-      "dependencies": {
-        "bluebird": "^3.5.3",
-        "cacache": "^12.0.2",
-        "chownr": "^1.1.2",
-        "figgy-pudding": "^3.5.1",
-        "get-stream": "^4.1.0",
-        "glob": "^7.1.3",
-        "infer-owner": "^1.0.4",
-        "lru-cache": "^5.1.1",
-        "make-fetch-happen": "^5.0.0",
-        "minimatch": "^3.0.4",
-        "minipass": "^2.3.5",
-        "mississippi": "^3.0.0",
-        "mkdirp": "^0.5.1",
-        "normalize-package-data": "^2.4.0",
-        "npm-package-arg": "^6.1.0",
-        "npm-packlist": "^1.1.12",
-        "npm-pick-manifest": "^3.0.0",
-        "npm-registry-fetch": "^4.0.0",
-        "osenv": "^0.1.5",
-        "promise-inflight": "^1.0.1",
-        "promise-retry": "^1.1.1",
-        "protoduck": "^5.0.1",
-        "rimraf": "^2.6.2",
-        "safe-buffer": "^5.1.2",
-        "semver": "^5.6.0",
-        "ssri": "^6.0.1",
-        "tar": "^4.4.10",
-        "unique-filename": "^1.1.1",
-        "which": "^1.3.1"
-      }
-    },
-    "node_modules/pacote/node_modules/cacache": {
-      "version": "12.0.4",
-      "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
-      "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
-      "dev": true,
-      "dependencies": {
-        "bluebird": "^3.5.5",
-        "chownr": "^1.1.1",
-        "figgy-pudding": "^3.5.1",
-        "glob": "^7.1.4",
-        "graceful-fs": "^4.1.15",
-        "infer-owner": "^1.0.3",
-        "lru-cache": "^5.1.1",
-        "mississippi": "^3.0.0",
-        "mkdirp": "^0.5.1",
-        "move-concurrently": "^1.0.1",
-        "promise-inflight": "^1.0.1",
-        "rimraf": "^2.6.3",
-        "ssri": "^6.0.1",
-        "unique-filename": "^1.1.1",
-        "y18n": "^4.0.0"
-      }
-    },
-    "node_modules/pacote/node_modules/minipass": {
-      "version": "2.9.0",
-      "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
-      "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
-      "dev": true,
-      "dependencies": {
-        "safe-buffer": "^5.1.2",
-        "yallist": "^3.0.0"
-      }
-    },
-    "node_modules/pacote/node_modules/rimraf": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-      "dev": true,
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      }
-    },
-    "node_modules/pacote/node_modules/semver": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/pacote/node_modules/ssri": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
-      "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
-      "dev": true,
-      "dependencies": {
-        "figgy-pudding": "^3.5.1"
-      }
-    },
-    "node_modules/pacote/node_modules/yallist": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-      "dev": true
-    },
-    "node_modules/pako": {
-      "version": "1.0.11",
-      "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
-      "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
-      "dev": true
-    },
-    "node_modules/parallel-transform": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
-      "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
-      "dev": true,
-      "dependencies": {
-        "cyclist": "^1.0.1",
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.1.5"
-      }
-    },
-    "node_modules/parse-asn1": {
-      "version": "5.1.6",
-      "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
-      "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
-      "dev": true,
-      "dependencies": {
-        "asn1.js": "^5.2.0",
-        "browserify-aes": "^1.0.0",
-        "evp_bytestokey": "^1.0.0",
-        "pbkdf2": "^3.0.3",
-        "safe-buffer": "^5.1.1"
-      }
-    },
-    "node_modules/parse-json": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
-      "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
-      "dev": true,
-      "dependencies": {
-        "error-ex": "^1.3.1",
-        "json-parse-better-errors": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/parse5": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz",
-      "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==",
-      "dev": true
-    },
-    "node_modules/parseqs": {
-      "version": "0.0.5",
-      "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
-      "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
-      "dev": true,
-      "dependencies": {
-        "better-assert": "~1.0.0"
-      }
-    },
-    "node_modules/parseuri": {
-      "version": "0.0.5",
-      "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
-      "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
-      "dev": true,
-      "dependencies": {
-        "better-assert": "~1.0.0"
-      }
-    },
-    "node_modules/parseurl": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
-      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/pascalcase": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
-      "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/path-browserify": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
-      "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
-      "dev": true
-    },
-    "node_modules/path-dirname": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
-      "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
-      "dev": true
-    },
-    "node_modules/path-exists": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/path-is-absolute": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/path-is-inside": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
-      "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
-      "dev": true
-    },
-    "node_modules/path-key": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
-      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/path-parse": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
-      "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
-      "dev": true
-    },
-    "node_modules/path-to-regexp": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
-      "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
-      "dev": true
-    },
-    "node_modules/path-type": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
-      "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
-      "dev": true,
-      "dependencies": {
-        "pify": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/path-type/node_modules/pify": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-      "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/pbkdf2": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz",
-      "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==",
-      "dev": true,
-      "dependencies": {
-        "create-hash": "^1.1.2",
-        "create-hmac": "^1.1.4",
-        "ripemd160": "^2.0.1",
-        "safe-buffer": "^5.0.1",
-        "sha.js": "^2.4.8"
-      },
-      "engines": {
-        "node": ">=0.12"
-      }
-    },
-    "node_modules/pdfjs-dist": {
-      "version": "2.5.207",
-      "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.5.207.tgz",
-      "integrity": "sha512-xGDUhnCYPfHy+unMXCLCJtlpZaaZ17Ew3WIL0tnSgKFUZXHAPD49GO9xScyszSsQMoutNDgRb+rfBXIaX/lJbw=="
-    },
-    "node_modules/performance-now": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
-      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
-      "dev": true
-    },
-    "node_modules/picomatch": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
-      "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
-      "dev": true,
-      "engines": {
-        "node": ">=8.6"
-      }
-    },
-    "node_modules/pify": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
-      "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/pinkie": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
-      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/pinkie-promise": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
-      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
-      "dev": true,
-      "dependencies": {
-        "pinkie": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/pkg-dir": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
-      "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
-      "dev": true,
-      "dependencies": {
-        "find-up": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/plist": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz",
-      "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==",
-      "dev": true,
-      "dependencies": {
-        "base64-js": "^1.2.3",
-        "xmlbuilder": "^9.0.7",
-        "xmldom": "0.1.x"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/plist/node_modules/xmlbuilder": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
-      "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
-      "dev": true,
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/portfinder": {
-      "version": "1.0.28",
-      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz",
-      "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==",
-      "dev": true,
-      "dependencies": {
-        "async": "^2.6.2",
-        "debug": "^3.1.1",
-        "mkdirp": "^0.5.5"
-      },
-      "engines": {
-        "node": ">= 0.12.0"
-      }
-    },
-    "node_modules/portfinder/node_modules/debug": {
-      "version": "3.2.7",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-      "dev": true,
-      "dependencies": {
-        "ms": "^2.1.1"
-      }
-    },
-    "node_modules/posix-character-classes": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
-      "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/postcss": {
-      "version": "7.0.21",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz",
-      "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^2.4.2",
-        "source-map": "^0.6.1",
-        "supports-color": "^6.1.0"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/postcss-calc": {
-      "version": "7.0.5",
-      "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz",
-      "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.27",
-        "postcss-selector-parser": "^6.0.2",
-        "postcss-value-parser": "^4.0.2"
-      }
-    },
-    "node_modules/postcss-calc/node_modules/postcss": {
-      "version": "7.0.35",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
-      "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^2.4.2",
-        "source-map": "^0.6.1",
-        "supports-color": "^6.1.0"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/postcss-calc/node_modules/source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/postcss-calc/node_modules/supports-color": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-      "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
-      "dev": true,
-      "dependencies": {
-        "has-flag": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/postcss-colormin": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz",
-      "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==",
-      "dev": true,
-      "dependencies": {
-        "browserslist": "^4.0.0",
-        "color": "^3.0.0",
-        "has": "^1.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-colormin/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-convert-values": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz",
-      "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-convert-values/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-discard-comments": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz",
-      "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-discard-duplicates": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz",
-      "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-discard-empty": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz",
-      "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-discard-overridden": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz",
-      "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-import": {
-      "version": "12.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.1.tgz",
-      "integrity": "sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.1",
-        "postcss-value-parser": "^3.2.3",
-        "read-cache": "^1.0.0",
-        "resolve": "^1.1.7"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/postcss-import/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-load-config": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz",
-      "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==",
-      "dev": true,
-      "dependencies": {
-        "cosmiconfig": "^5.0.0",
-        "import-cwd": "^2.0.0"
-      },
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/postcss-loader": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz",
-      "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==",
-      "dev": true,
-      "dependencies": {
-        "loader-utils": "^1.1.0",
-        "postcss": "^7.0.0",
-        "postcss-load-config": "^2.0.0",
-        "schema-utils": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/postcss-merge-longhand": {
-      "version": "4.0.11",
-      "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz",
-      "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==",
-      "dev": true,
-      "dependencies": {
-        "css-color-names": "0.0.4",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0",
-        "stylehacks": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-merge-longhand/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-merge-rules": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz",
-      "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==",
-      "dev": true,
-      "dependencies": {
-        "browserslist": "^4.0.0",
-        "caniuse-api": "^3.0.0",
-        "cssnano-util-same-parent": "^4.0.0",
-        "postcss": "^7.0.0",
-        "postcss-selector-parser": "^3.0.0",
-        "vendors": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
-      "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
-      "dev": true,
-      "dependencies": {
-        "dot-prop": "^5.2.0",
-        "indexes-of": "^1.0.1",
-        "uniq": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/postcss-minify-font-values": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz",
-      "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-minify-font-values/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-minify-gradients": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz",
-      "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==",
-      "dev": true,
-      "dependencies": {
-        "cssnano-util-get-arguments": "^4.0.0",
-        "is-color-stop": "^1.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-minify-params": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz",
-      "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==",
-      "dev": true,
-      "dependencies": {
-        "alphanum-sort": "^1.0.0",
-        "browserslist": "^4.0.0",
-        "cssnano-util-get-arguments": "^4.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0",
-        "uniqs": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-minify-params/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-minify-selectors": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz",
-      "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==",
-      "dev": true,
-      "dependencies": {
-        "alphanum-sort": "^1.0.0",
-        "has": "^1.0.0",
-        "postcss": "^7.0.0",
-        "postcss-selector-parser": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
-      "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
-      "dev": true,
-      "dependencies": {
-        "dot-prop": "^5.2.0",
-        "indexes-of": "^1.0.1",
-        "uniq": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/postcss-normalize-charset": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz",
-      "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-normalize-display-values": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz",
-      "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==",
-      "dev": true,
-      "dependencies": {
-        "cssnano-util-get-match": "^4.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-normalize-display-values/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-normalize-positions": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz",
-      "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==",
-      "dev": true,
-      "dependencies": {
-        "cssnano-util-get-arguments": "^4.0.0",
-        "has": "^1.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-normalize-positions/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-normalize-repeat-style": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz",
-      "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==",
-      "dev": true,
-      "dependencies": {
-        "cssnano-util-get-arguments": "^4.0.0",
-        "cssnano-util-get-match": "^4.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-normalize-repeat-style/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-normalize-string": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz",
-      "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==",
-      "dev": true,
-      "dependencies": {
-        "has": "^1.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-normalize-string/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-normalize-timing-functions": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz",
-      "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==",
-      "dev": true,
-      "dependencies": {
-        "cssnano-util-get-match": "^4.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-normalize-timing-functions/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-normalize-unicode": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz",
-      "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==",
-      "dev": true,
-      "dependencies": {
-        "browserslist": "^4.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-normalize-unicode/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-normalize-url": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz",
-      "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==",
-      "dev": true,
-      "dependencies": {
-        "is-absolute-url": "^2.0.0",
-        "normalize-url": "^3.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-normalize-url/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-normalize-whitespace": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz",
-      "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==",
-      "dev": true,
-      "dependencies": {
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-normalize-whitespace/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-ordered-values": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz",
-      "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==",
-      "dev": true,
-      "dependencies": {
-        "cssnano-util-get-arguments": "^4.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-ordered-values/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-reduce-initial": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz",
-      "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==",
-      "dev": true,
-      "dependencies": {
-        "browserslist": "^4.0.0",
-        "caniuse-api": "^3.0.0",
-        "has": "^1.0.0",
-        "postcss": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-reduce-transforms": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz",
-      "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==",
-      "dev": true,
-      "dependencies": {
-        "cssnano-util-get-match": "^4.0.0",
-        "has": "^1.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-reduce-transforms/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-selector-parser": {
-      "version": "6.0.4",
-      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz",
-      "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==",
-      "dev": true,
-      "dependencies": {
-        "cssesc": "^3.0.0",
-        "indexes-of": "^1.0.1",
-        "uniq": "^1.0.1",
-        "util-deprecate": "^1.0.2"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/postcss-svgo": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz",
-      "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==",
-      "dev": true,
-      "dependencies": {
-        "is-svg": "^3.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0",
-        "svgo": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-svgo/node_modules/postcss-value-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-      "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-      "dev": true
-    },
-    "node_modules/postcss-unique-selectors": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz",
-      "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==",
-      "dev": true,
-      "dependencies": {
-        "alphanum-sort": "^1.0.0",
-        "postcss": "^7.0.0",
-        "uniqs": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/postcss-value-parser": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz",
-      "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==",
-      "dev": true
-    },
-    "node_modules/postcss/node_modules/source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/postcss/node_modules/supports-color": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-      "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
-      "dev": true,
-      "dependencies": {
-        "has-flag": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/prepend-http": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
-      "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/process": {
-      "version": "0.11.10",
-      "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
-      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6.0"
-      }
-    },
-    "node_modules/process-nextick-args": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
-      "dev": true
-    },
-    "node_modules/progress": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
-      "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/promise": {
-      "version": "7.3.1",
-      "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
-      "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "asap": "~2.0.3"
-      }
-    },
-    "node_modules/promise-breaker": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/promise-breaker/-/promise-breaker-5.0.0.tgz",
-      "integrity": "sha512-mgsWQuG4kJ1dtO6e/QlNDLFtMkMzzecsC69aI5hlLEjGHFNpHrvGhFi4LiK5jg2SMQj74/diH+wZliL9LpGsyA==",
-      "dev": true
-    },
-    "node_modules/promise-inflight": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
-      "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
-      "dev": true
-    },
-    "node_modules/promise-polyfill": {
-      "version": "8.1.3",
-      "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz",
-      "integrity": "sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g=="
-    },
-    "node_modules/promise-retry": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz",
-      "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=",
-      "dev": true,
-      "dependencies": {
-        "err-code": "^1.0.0",
-        "retry": "^0.10.0"
-      },
-      "engines": {
-        "node": ">=0.12"
-      }
-    },
-    "node_modules/promise-retry/node_modules/retry": {
-      "version": "0.10.1",
-      "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz",
-      "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/protobufjs": {
-      "version": "6.10.2",
-      "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.10.2.tgz",
-      "integrity": "sha512-27yj+04uF6ya9l+qfpH187aqEzfCF4+Uit0I9ZBQVqK09hk/SQzKa2MUqUpXaVa7LOFRg1TSSr3lVxGOk6c0SQ==",
-      "hasInstallScript": true,
-      "dependencies": {
-        "@protobufjs/aspromise": "^1.1.2",
-        "@protobufjs/base64": "^1.1.2",
-        "@protobufjs/codegen": "^2.0.4",
-        "@protobufjs/eventemitter": "^1.1.0",
-        "@protobufjs/fetch": "^1.1.0",
-        "@protobufjs/float": "^1.0.2",
-        "@protobufjs/inquire": "^1.1.0",
-        "@protobufjs/path": "^1.1.2",
-        "@protobufjs/pool": "^1.1.0",
-        "@protobufjs/utf8": "^1.1.0",
-        "@types/long": "^4.0.1",
-        "@types/node": "^13.7.0",
-        "long": "^4.0.0"
-      },
-      "bin": {
-        "pbjs": "bin/pbjs",
-        "pbts": "bin/pbts"
-      }
-    },
-    "node_modules/protobufjs/node_modules/@types/node": {
-      "version": "13.13.41",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.41.tgz",
-      "integrity": "sha512-qLT9IvHiXJfdrje9VmsLzun7cQ65obsBTmtU3EOnCSLFOoSHx1hpiRHoBnpdbyFqnzqdUUIv81JcEJQCB8un9g=="
-    },
-    "node_modules/protoduck": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz",
-      "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==",
-      "dev": true,
-      "dependencies": {
-        "genfun": "^5.0.0"
-      }
-    },
-    "node_modules/protractor": {
-      "version": "5.4.4",
-      "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.4.tgz",
-      "integrity": "sha512-BaL4vePgu3Vfa/whvTUAlgaCAId4uNSGxIFSCXMgj7LMYENPWLp85h5RBi9pdpX/bWQ8SF6flP7afmi2TC4eHw==",
-      "dev": true,
-      "dependencies": {
-        "@types/q": "^0.0.32",
-        "@types/selenium-webdriver": "^3.0.0",
-        "blocking-proxy": "^1.0.0",
-        "browserstack": "^1.5.1",
-        "chalk": "^1.1.3",
-        "glob": "^7.0.3",
-        "jasmine": "2.8.0",
-        "jasminewd2": "^2.1.0",
-        "q": "1.4.1",
-        "saucelabs": "^1.5.0",
-        "selenium-webdriver": "3.6.0",
-        "source-map-support": "~0.4.0",
-        "webdriver-js-extender": "2.1.0",
-        "webdriver-manager": "^12.0.6",
-        "yargs": "^12.0.5"
-      },
-      "bin": {
-        "protractor": "bin/protractor",
-        "webdriver-manager": "bin/webdriver-manager"
-      },
-      "engines": {
-        "node": ">=6.9.x"
-      }
-    },
-    "node_modules/protractor/node_modules/@types/q": {
-      "version": "0.0.32",
-      "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz",
-      "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=",
-      "dev": true
-    },
-    "node_modules/protractor/node_modules/ansi-styles": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-      "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/protractor/node_modules/chalk": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-      "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-      "dev": true,
-      "dependencies": {
-        "ansi-styles": "^2.2.1",
-        "escape-string-regexp": "^1.0.2",
-        "has-ansi": "^2.0.0",
-        "strip-ansi": "^3.0.0",
-        "supports-color": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/protractor/node_modules/del": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
-      "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
-      "dev": true,
-      "dependencies": {
-        "globby": "^5.0.0",
-        "is-path-cwd": "^1.0.0",
-        "is-path-in-cwd": "^1.0.0",
-        "object-assign": "^4.0.1",
-        "pify": "^2.0.0",
-        "pinkie-promise": "^2.0.0",
-        "rimraf": "^2.2.8"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/protractor/node_modules/globby": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
-      "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
-      "dev": true,
-      "dependencies": {
-        "array-union": "^1.0.1",
-        "arrify": "^1.0.0",
-        "glob": "^7.0.3",
-        "object-assign": "^4.0.1",
-        "pify": "^2.0.0",
-        "pinkie-promise": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/protractor/node_modules/is-path-cwd": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
-      "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/protractor/node_modules/is-path-in-cwd": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
-      "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
-      "dev": true,
-      "dependencies": {
-        "is-path-inside": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/protractor/node_modules/is-path-inside": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
-      "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
-      "dev": true,
-      "dependencies": {
-        "path-is-inside": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/protractor/node_modules/pify": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-      "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/protractor/node_modules/q": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
-      "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.6.0",
-        "teleport": ">=0.2.0"
-      }
-    },
-    "node_modules/protractor/node_modules/rimraf": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-      "dev": true,
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      }
-    },
-    "node_modules/protractor/node_modules/semver": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/protractor/node_modules/source-map": {
-      "version": "0.5.7",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/protractor/node_modules/source-map-support": {
-      "version": "0.4.18",
-      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
-      "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
-      "dev": true,
-      "dependencies": {
-        "source-map": "^0.5.6"
-      }
-    },
-    "node_modules/protractor/node_modules/supports-color": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-      "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/protractor/node_modules/webdriver-manager": {
-      "version": "12.1.8",
-      "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.8.tgz",
-      "integrity": "sha512-qJR36SXG2VwKugPcdwhaqcLQOD7r8P2Xiv9sfNbfZrKBnX243iAkOueX1yAmeNgIKhJ3YAT/F2gq6IiEZzahsg==",
-      "dev": true,
-      "dependencies": {
-        "adm-zip": "^0.4.9",
-        "chalk": "^1.1.1",
-        "del": "^2.2.0",
-        "glob": "^7.0.3",
-        "ini": "^1.3.4",
-        "minimist": "^1.2.0",
-        "q": "^1.4.1",
-        "request": "^2.87.0",
-        "rimraf": "^2.5.2",
-        "semver": "^5.3.0",
-        "xml2js": "^0.4.17"
-      },
-      "bin": {
-        "webdriver-manager": "bin/webdriver-manager"
-      },
-      "engines": {
-        "node": ">=6.9.x"
-      }
-    },
-    "node_modules/proxy-addr": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
-      "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
-      "dev": true,
-      "dependencies": {
-        "forwarded": "~0.1.2",
-        "ipaddr.js": "1.9.1"
-      },
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
-    "node_modules/prr": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
-      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
-      "dev": true
-    },
-    "node_modules/pseudomap": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
-      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
-      "dev": true
-    },
-    "node_modules/psl": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
-      "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
-      "dev": true
-    },
-    "node_modules/public-encrypt": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
-      "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
-      "dev": true,
-      "dependencies": {
-        "bn.js": "^4.1.0",
-        "browserify-rsa": "^4.0.0",
-        "create-hash": "^1.1.0",
-        "parse-asn1": "^5.0.0",
-        "randombytes": "^2.0.1",
-        "safe-buffer": "^5.1.2"
-      }
-    },
-    "node_modules/public-encrypt/node_modules/bn.js": {
-      "version": "4.11.9",
-      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
-      "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
-      "dev": true
-    },
-    "node_modules/pump": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
-      "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
-      "dev": true,
-      "dependencies": {
-        "end-of-stream": "^1.1.0",
-        "once": "^1.3.1"
-      }
-    },
-    "node_modules/pumpify": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
-      "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
-      "dev": true,
-      "dependencies": {
-        "duplexify": "^3.6.0",
-        "inherits": "^2.0.3",
-        "pump": "^2.0.0"
-      }
-    },
-    "node_modules/pumpify/node_modules/pump": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
-      "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
-      "dev": true,
-      "dependencies": {
-        "end-of-stream": "^1.1.0",
-        "once": "^1.3.1"
-      }
-    },
-    "node_modules/punycode": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/pupa": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz",
-      "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==",
-      "dev": true,
-      "dependencies": {
-        "escape-goat": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/q": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
-      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.6.0",
-        "teleport": ">=0.2.0"
-      }
-    },
-    "node_modules/qjobs": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz",
-      "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.9"
-      }
-    },
-    "node_modules/qs": {
-      "version": "6.5.2",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
-      "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.6"
-      }
-    },
-    "node_modules/query-string": {
-      "version": "4.3.4",
-      "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz",
-      "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=",
-      "dev": true,
-      "dependencies": {
-        "object-assign": "^4.1.0",
-        "strict-uri-encode": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/querystring": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
-      "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.4.x"
-      }
-    },
-    "node_modules/querystring-es3": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
-      "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.4.x"
-      }
-    },
-    "node_modules/querystringify": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
-      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
-      "dev": true
-    },
-    "node_modules/randombytes": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
-      "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
-      "dev": true,
-      "dependencies": {
-        "safe-buffer": "^5.1.0"
-      }
-    },
-    "node_modules/randomfill": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
-      "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
-      "dev": true,
-      "dependencies": {
-        "randombytes": "^2.0.5",
-        "safe-buffer": "^5.1.0"
-      }
-    },
-    "node_modules/range-parser": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
-      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/raw-body": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
-      "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
-      "dev": true,
-      "dependencies": {
-        "bytes": "3.1.0",
-        "http-errors": "1.7.2",
-        "iconv-lite": "0.4.24",
-        "unpipe": "1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/raw-body/node_modules/bytes": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
-      "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/raw-loader": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-3.1.0.tgz",
-      "integrity": "sha512-lzUVMuJ06HF4rYveaz9Tv0WRlUMxJ0Y1hgSkkgg+50iEdaI0TthyEDe08KIHb0XsF6rn8WYTqPCaGTZg3sX+qA==",
-      "dev": true,
-      "dependencies": {
-        "loader-utils": "^1.1.0",
-        "schema-utils": "^2.0.1"
-      },
-      "engines": {
-        "node": ">= 8.9.0"
-      }
-    },
-    "node_modules/raw-loader/node_modules/ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "dev": true,
-      "dependencies": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      }
-    },
-    "node_modules/raw-loader/node_modules/fast-deep-equal": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-      "dev": true
-    },
-    "node_modules/raw-loader/node_modules/schema-utils": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
-      "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
-      "dev": true,
-      "dependencies": {
-        "@types/json-schema": "^7.0.5",
-        "ajv": "^6.12.4",
-        "ajv-keywords": "^3.5.2"
-      },
-      "engines": {
-        "node": ">= 8.9.0"
-      }
-    },
-    "node_modules/rc": {
-      "version": "1.2.8",
-      "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
-      "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
-      "dev": true,
-      "dependencies": {
-        "deep-extend": "^0.6.0",
-        "ini": "~1.3.0",
-        "minimist": "^1.2.0",
-        "strip-json-comments": "~2.0.1"
-      },
-      "bin": {
-        "rc": "cli.js"
-      }
-    },
-    "node_modules/re2": {
-      "version": "1.15.9",
-      "resolved": "https://registry.npmjs.org/re2/-/re2-1.15.9.tgz",
-      "integrity": "sha512-AXWEhpMTBdC+3oqbjdU07dk0pBCvxh5vbOMLERL6Y8FYBSGn4vXlLe8cYszn64Yy7H8keVMrgPzoSvOd4mePpg==",
-      "dev": true,
-      "hasInstallScript": true,
-      "optional": true,
-      "dependencies": {
-        "install-artifact-from-github": "^1.2.0",
-        "nan": "^2.14.2",
-        "node-gyp": "^7.1.2"
-      }
-    },
-    "node_modules/read-cache": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
-      "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=",
-      "dev": true,
-      "dependencies": {
-        "pify": "^2.3.0"
-      }
-    },
-    "node_modules/read-cache/node_modules/pify": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-      "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/read-package-json": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz",
-      "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==",
-      "dev": true,
-      "dependencies": {
-        "glob": "^7.1.1",
-        "json-parse-even-better-errors": "^2.3.0",
-        "normalize-package-data": "^2.0.0",
-        "npm-normalize-package-bin": "^1.0.0"
-      }
-    },
-    "node_modules/read-package-tree": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz",
-      "integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==",
-      "dev": true,
-      "dependencies": {
-        "read-package-json": "^2.0.0",
-        "readdir-scoped-modules": "^1.0.0",
-        "util-promisify": "^2.1.0"
-      }
-    },
-    "node_modules/readable-stream": {
-      "version": "2.3.7",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
-      "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-      "dev": true,
-      "dependencies": {
-        "core-util-is": "~1.0.0",
-        "inherits": "~2.0.3",
-        "isarray": "~1.0.0",
-        "process-nextick-args": "~2.0.0",
-        "safe-buffer": "~5.1.1",
-        "string_decoder": "~1.1.1",
-        "util-deprecate": "~1.0.1"
-      }
-    },
-    "node_modules/readdir-scoped-modules": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz",
-      "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==",
-      "dev": true,
-      "dependencies": {
-        "debuglog": "^1.0.1",
-        "dezalgo": "^1.0.0",
-        "graceful-fs": "^4.1.2",
-        "once": "^1.3.0"
-      }
-    },
-    "node_modules/readdirp": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
-      "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
-      "dev": true,
-      "dependencies": {
-        "picomatch": "^2.2.1"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/recordrtc": {
-      "version": "5.6.1",
-      "resolved": "https://registry.npmjs.org/recordrtc/-/recordrtc-5.6.1.tgz",
-      "integrity": "sha512-UU7Fd9IIuz60TPq4GgL1qtgo2mzEZWzPxEraNe32eo4/ndjKmuj715HB7W1k63G09teM1dXJYubPEmLkQ/lq5Q=="
-    },
-    "node_modules/redeyed": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz",
-      "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=",
-      "dev": true,
-      "dependencies": {
-        "esprima": "~4.0.0"
-      }
-    },
-    "node_modules/reflect-metadata": {
-      "version": "0.1.13",
-      "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
-      "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==",
-      "dev": true
-    },
-    "node_modules/regenerate": {
-      "version": "1.4.2",
-      "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
-      "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
-      "dev": true
-    },
-    "node_modules/regenerate-unicode-properties": {
-      "version": "8.2.0",
-      "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz",
-      "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==",
-      "dev": true,
-      "dependencies": {
-        "regenerate": "^1.4.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/regenerator-runtime": {
-      "version": "0.13.3",
-      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
-      "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==",
-      "dev": true
-    },
-    "node_modules/regenerator-transform": {
-      "version": "0.14.5",
-      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz",
-      "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==",
-      "dev": true,
-      "dependencies": {
-        "@babel/runtime": "^7.8.4"
-      }
-    },
-    "node_modules/regex-not": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
-      "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
-      "dev": true,
-      "dependencies": {
-        "extend-shallow": "^3.0.2",
-        "safe-regex": "^1.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/regexp.prototype.flags": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz",
-      "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/regexpu-core": {
-      "version": "4.7.1",
-      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz",
-      "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==",
-      "dev": true,
-      "dependencies": {
-        "regenerate": "^1.4.0",
-        "regenerate-unicode-properties": "^8.2.0",
-        "regjsgen": "^0.5.1",
-        "regjsparser": "^0.6.4",
-        "unicode-match-property-ecmascript": "^1.0.4",
-        "unicode-match-property-value-ecmascript": "^1.2.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/registry-auth-token": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz",
-      "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==",
-      "dev": true,
-      "dependencies": {
-        "rc": "^1.2.8"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/registry-url": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz",
-      "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==",
-      "dev": true,
-      "dependencies": {
-        "rc": "^1.2.8"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/regjsgen": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz",
-      "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==",
-      "dev": true
-    },
-    "node_modules/regjsparser": {
-      "version": "0.6.6",
-      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.6.tgz",
-      "integrity": "sha512-jjyuCp+IEMIm3N1H1LLTJW1EISEJV9+5oHdEyrt43Pg9cDSb6rrLZei2cVWpl0xTjmmlpec/lEQGYgM7xfpGCQ==",
-      "dev": true,
-      "dependencies": {
-        "jsesc": "~0.5.0"
-      },
-      "bin": {
-        "regjsparser": "bin/parser"
-      }
-    },
-    "node_modules/regjsparser/node_modules/jsesc": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
-      "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
-      "dev": true,
-      "bin": {
-        "jsesc": "bin/jsesc"
-      }
-    },
-    "node_modules/remove-trailing-separator": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
-      "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
-      "dev": true
-    },
-    "node_modules/repeat-element": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
-      "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/repeat-string": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
-      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10"
-      }
-    },
-    "node_modules/request": {
-      "version": "2.88.2",
-      "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
-      "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
-      "dev": true,
-      "dependencies": {
-        "aws-sign2": "~0.7.0",
-        "aws4": "^1.8.0",
-        "caseless": "~0.12.0",
-        "combined-stream": "~1.0.6",
-        "extend": "~3.0.2",
-        "forever-agent": "~0.6.1",
-        "form-data": "~2.3.2",
-        "har-validator": "~5.1.3",
-        "http-signature": "~1.2.0",
-        "is-typedarray": "~1.0.0",
-        "isstream": "~0.1.2",
-        "json-stringify-safe": "~5.0.1",
-        "mime-types": "~2.1.19",
-        "oauth-sign": "~0.9.0",
-        "performance-now": "^2.1.0",
-        "qs": "~6.5.2",
-        "safe-buffer": "^5.1.2",
-        "tough-cookie": "~2.5.0",
-        "tunnel-agent": "^0.6.0",
-        "uuid": "^3.3.2"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/require-directory": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
-      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/require-main-filename": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
-      "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
-      "dev": true
-    },
-    "node_modules/requires-port": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
-      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
-      "dev": true
-    },
-    "node_modules/resolve": {
-      "version": "1.19.0",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz",
-      "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==",
-      "dev": true,
-      "dependencies": {
-        "is-core-module": "^2.1.0",
-        "path-parse": "^1.0.6"
-      }
-    },
-    "node_modules/resolve-cwd": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
-      "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
-      "dev": true,
-      "dependencies": {
-        "resolve-from": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/resolve-from": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
-      "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/resolve-url": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
-      "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
-      "dev": true
-    },
-    "node_modules/responselike": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
-      "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
-      "dev": true,
-      "dependencies": {
-        "lowercase-keys": "^1.0.0"
-      }
-    },
-    "node_modules/restore-cursor": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
-      "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
-      "dev": true,
-      "dependencies": {
-        "onetime": "^5.1.0",
-        "signal-exit": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/ret": {
-      "version": "0.1.15",
-      "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
-      "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.12"
-      }
-    },
-    "node_modules/retry": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
-      "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
-      "dev": true,
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/retry-request": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.1.3.tgz",
-      "integrity": "sha512-QnRZUpuPNgX0+D1xVxul6DbJ9slvo4Rm6iV/dn63e048MvGbUZiKySVt6Tenp04JqmchxjiLltGerOJys7kJYQ==",
-      "dev": true,
-      "dependencies": {
-        "debug": "^4.1.1"
-      },
-      "engines": {
-        "node": ">=8.10.0"
-      }
-    },
-    "node_modules/rfdc": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.2.0.tgz",
-      "integrity": "sha512-ijLyszTMmUrXvjSooucVQwimGUk84eRcmCuLV8Xghe3UO85mjUtRAHRyoMM6XtyqbECaXuBWx18La3523sXINA==",
-      "dev": true
-    },
-    "node_modules/rgb-regex": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz",
-      "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=",
-      "dev": true
-    },
-    "node_modules/rgba-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz",
-      "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=",
-      "dev": true
-    },
-    "node_modules/rimraf": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz",
-      "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==",
-      "dev": true,
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      }
-    },
-    "node_modules/ripemd160": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
-      "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
-      "dev": true,
-      "dependencies": {
-        "hash-base": "^3.0.0",
-        "inherits": "^2.0.1"
-      }
-    },
-    "node_modules/rollup": {
-      "version": "1.25.2",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.25.2.tgz",
-      "integrity": "sha512-+7z6Wab/L45QCPcfpuTZKwKiB0tynj05s/+s2U3F2Bi7rOLPr9UcjUwO7/xpjlPNXA/hwnth6jBExFRGyf3tMg==",
-      "dev": true,
-      "dependencies": {
-        "@types/estree": "*",
-        "@types/node": "*",
-        "acorn": "^7.1.0"
-      },
-      "bin": {
-        "rollup": "dist/bin/rollup"
-      }
-    },
-    "node_modules/router": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/router/-/router-1.3.5.tgz",
-      "integrity": "sha512-kozCJZUhuSJ5VcLhSb3F8fsmGXy+8HaDbKCAerR1G6tq3mnMZFMuSohbFvGv1c5oMFipijDjRZuuN/Sq5nMf3g==",
-      "dev": true,
-      "dependencies": {
-        "array-flatten": "3.0.0",
-        "debug": "2.6.9",
-        "methods": "~1.1.2",
-        "parseurl": "~1.3.3",
-        "path-to-regexp": "0.1.7",
-        "setprototypeof": "1.2.0",
-        "utils-merge": "1.0.1"
-      },
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/router/node_modules/array-flatten": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz",
-      "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==",
-      "dev": true
-    },
-    "node_modules/router/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/router/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
-    },
-    "node_modules/router/node_modules/setprototypeof": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
-      "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
-      "dev": true
-    },
-    "node_modules/rsvp": {
-      "version": "4.8.5",
-      "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
-      "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==",
-      "dev": true,
-      "engines": {
-        "node": "6.* || >= 7.*"
-      }
-    },
-    "node_modules/run-async": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
-      "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.12.0"
-      }
-    },
-    "node_modules/run-queue": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
-      "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
-      "dev": true,
-      "dependencies": {
-        "aproba": "^1.1.1"
-      }
-    },
-    "node_modules/rxjs": {
-      "version": "6.5.5",
-      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz",
-      "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==",
-      "dependencies": {
-        "tslib": "^1.9.0"
-      },
-      "engines": {
-        "npm": ">=2.0.0"
-      }
-    },
-    "node_modules/safe-buffer": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
-    },
-    "node_modules/safe-regex": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
-      "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
-      "dev": true,
-      "dependencies": {
-        "ret": "~0.1.10"
-      }
-    },
-    "node_modules/safer-buffer": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
-      "dev": true
-    },
-    "node_modules/sass": {
-      "version": "1.23.3",
-      "resolved": "https://registry.npmjs.org/sass/-/sass-1.23.3.tgz",
-      "integrity": "sha512-1DKRZxJMOh4Bme16AbWTyYeJAjTlrvw2+fWshHHaepeJfGq2soFZTnt0YhWit+bohtDu4LdyPoEj6VFD4APHog==",
-      "dev": true,
-      "dependencies": {
-        "chokidar": ">=2.0.0 <4.0.0"
-      },
-      "bin": {
-        "sass": "sass.js"
-      },
-      "engines": {
-        "node": ">=8.9.0"
-      }
-    },
-    "node_modules/sass-loader": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.0.tgz",
-      "integrity": "sha512-+qeMu563PN7rPdit2+n5uuYVR0SSVwm0JsOUsaJXzgYcClWSlmX0iHDnmeOobPkf5kUglVot3QS6SyLyaQoJ4w==",
-      "dev": true,
-      "dependencies": {
-        "clone-deep": "^4.0.1",
-        "loader-utils": "^1.2.3",
-        "neo-async": "^2.6.1",
-        "schema-utils": "^2.1.0",
-        "semver": "^6.3.0"
-      },
-      "engines": {
-        "node": ">= 8.9.0"
-      }
-    },
-    "node_modules/sass-loader/node_modules/ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "dev": true,
-      "dependencies": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      }
-    },
-    "node_modules/sass-loader/node_modules/fast-deep-equal": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-      "dev": true
-    },
-    "node_modules/sass-loader/node_modules/schema-utils": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
-      "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
-      "dev": true,
-      "dependencies": {
-        "@types/json-schema": "^7.0.5",
-        "ajv": "^6.12.4",
-        "ajv-keywords": "^3.5.2"
-      },
-      "engines": {
-        "node": ">= 8.9.0"
-      }
-    },
-    "node_modules/saucelabs": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz",
-      "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==",
-      "dev": true,
-      "dependencies": {
-        "https-proxy-agent": "^2.2.1"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/sax": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
-      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
-      "dev": true
-    },
-    "node_modules/schema-utils": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-      "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-      "dev": true,
-      "dependencies": {
-        "ajv": "^6.1.0",
-        "ajv-errors": "^1.0.0",
-        "ajv-keywords": "^3.1.0"
-      },
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/select-hose": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
-      "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
-      "dev": true
-    },
-    "node_modules/selenium-webdriver": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz",
-      "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==",
-      "dev": true,
-      "dependencies": {
-        "jszip": "^3.1.3",
-        "rimraf": "^2.5.4",
-        "tmp": "0.0.30",
-        "xml2js": "^0.4.17"
-      },
-      "engines": {
-        "node": ">= 6.9.0"
-      }
-    },
-    "node_modules/selenium-webdriver/node_modules/rimraf": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-      "dev": true,
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      }
-    },
-    "node_modules/selenium-webdriver/node_modules/tmp": {
-      "version": "0.0.30",
-      "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz",
-      "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=",
-      "dev": true,
-      "dependencies": {
-        "os-tmpdir": "~1.0.1"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/selfsigned": {
-      "version": "1.10.8",
-      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz",
-      "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==",
-      "dev": true,
-      "dependencies": {
-        "node-forge": "^0.10.0"
-      }
-    },
-    "node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/semver-diff": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz",
-      "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==",
-      "dev": true,
-      "dependencies": {
-        "semver": "^6.3.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/semver-dsl": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz",
-      "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=",
-      "dev": true,
-      "dependencies": {
-        "semver": "^5.3.0"
-      }
-    },
-    "node_modules/semver-dsl/node_modules/semver": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/semver-intersect": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.4.0.tgz",
-      "integrity": "sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ==",
-      "dev": true,
-      "dependencies": {
-        "semver": "^5.0.0"
-      }
-    },
-    "node_modules/semver-intersect/node_modules/semver": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/send": {
-      "version": "0.17.1",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
-      "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
-      "dev": true,
-      "dependencies": {
-        "debug": "2.6.9",
-        "depd": "~1.1.2",
-        "destroy": "~1.0.4",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "etag": "~1.8.1",
-        "fresh": "0.5.2",
-        "http-errors": "~1.7.2",
-        "mime": "1.6.0",
-        "ms": "2.1.1",
-        "on-finished": "~2.3.0",
-        "range-parser": "~1.2.1",
-        "statuses": "~1.5.0"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/send/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/send/node_modules/debug/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
-    },
-    "node_modules/send/node_modules/ms": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
-      "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
-      "dev": true
-    },
-    "node_modules/serialize-javascript": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz",
-      "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==",
-      "dev": true
-    },
-    "node_modules/serve-index": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
-      "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
-      "dev": true,
-      "dependencies": {
-        "accepts": "~1.3.4",
-        "batch": "0.6.1",
-        "debug": "2.6.9",
-        "escape-html": "~1.0.3",
-        "http-errors": "~1.6.2",
-        "mime-types": "~2.1.17",
-        "parseurl": "~1.3.2"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/serve-index/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/serve-index/node_modules/http-errors": {
-      "version": "1.6.3",
-      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
-      "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
-      "dev": true,
-      "dependencies": {
-        "depd": "~1.1.2",
-        "inherits": "2.0.3",
-        "setprototypeof": "1.1.0",
-        "statuses": ">= 1.4.0 < 2"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/serve-index/node_modules/inherits": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
-      "dev": true
-    },
-    "node_modules/serve-index/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
-    },
-    "node_modules/serve-index/node_modules/setprototypeof": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
-      "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
-      "dev": true
-    },
-    "node_modules/serve-static": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
-      "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
-      "dev": true,
-      "dependencies": {
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "parseurl": "~1.3.3",
-        "send": "0.17.1"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/set-blocking": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
-      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
-      "dev": true
-    },
-    "node_modules/set-immediate-shim": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
-      "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/set-value": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
-      "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
-      "dev": true,
-      "dependencies": {
-        "extend-shallow": "^2.0.1",
-        "is-extendable": "^0.1.1",
-        "is-plain-object": "^2.0.3",
-        "split-string": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/set-value/node_modules/extend-shallow": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-      "dev": true,
-      "dependencies": {
-        "is-extendable": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/setimmediate": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
-      "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
-      "dev": true
-    },
-    "node_modules/setprototypeof": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
-      "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
-      "dev": true
-    },
-    "node_modules/sha.js": {
-      "version": "2.4.11",
-      "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
-      "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.1",
-        "safe-buffer": "^5.0.1"
-      },
-      "bin": {
-        "sha.js": "bin.js"
-      }
-    },
-    "node_modules/shallow-clone": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
-      "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.2"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/shebang-command": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
-      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
-      "dev": true,
-      "dependencies": {
-        "shebang-regex": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/shebang-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
-      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/signal-exit": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
-      "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
-      "dev": true
-    },
-    "node_modules/simple-swizzle": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
-      "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
-      "dev": true,
-      "dependencies": {
-        "is-arrayish": "^0.3.1"
-      }
-    },
-    "node_modules/simple-swizzle/node_modules/is-arrayish": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
-      "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
-      "dev": true
-    },
-    "node_modules/slash": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
-      "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/smart-buffer": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz",
-      "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==",
-      "dev": true,
-      "engines": {
-        "node": ">= 6.0.0",
-        "npm": ">= 3.0.0"
-      }
-    },
-    "node_modules/snapdragon": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
-      "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
-      "dev": true,
-      "dependencies": {
-        "base": "^0.11.1",
-        "debug": "^2.2.0",
-        "define-property": "^0.2.5",
-        "extend-shallow": "^2.0.1",
-        "map-cache": "^0.2.2",
-        "source-map": "^0.5.6",
-        "source-map-resolve": "^0.5.0",
-        "use": "^3.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/snapdragon-node": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
-      "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
-      "dev": true,
-      "dependencies": {
-        "define-property": "^1.0.0",
-        "isobject": "^3.0.0",
-        "snapdragon-util": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/snapdragon-node/node_modules/define-property": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-      "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-      "dev": true,
-      "dependencies": {
-        "is-descriptor": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-      "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/snapdragon-node/node_modules/is-data-descriptor": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-      "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/snapdragon-node/node_modules/is-descriptor": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-      "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-      "dev": true,
-      "dependencies": {
-        "is-accessor-descriptor": "^1.0.0",
-        "is-data-descriptor": "^1.0.0",
-        "kind-of": "^6.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/snapdragon-util": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
-      "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^3.2.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/snapdragon-util/node_modules/kind-of": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-      "dev": true,
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/snapdragon/node_modules/debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/snapdragon/node_modules/define-property": {
-      "version": "0.2.5",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-      "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-      "dev": true,
-      "dependencies": {
-        "is-descriptor": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/snapdragon/node_modules/extend-shallow": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-      "dev": true,
-      "dependencies": {
-        "is-extendable": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/snapdragon/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
-    },
-    "node_modules/snapdragon/node_modules/source-map": {
-      "version": "0.5.7",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/socket.io": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz",
-      "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==",
-      "dev": true,
-      "dependencies": {
-        "debug": "~3.1.0",
-        "engine.io": "~3.2.0",
-        "has-binary2": "~1.0.2",
-        "socket.io-adapter": "~1.1.0",
-        "socket.io-client": "2.1.1",
-        "socket.io-parser": "~3.2.0"
-      }
-    },
-    "node_modules/socket.io-adapter": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz",
-      "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==",
-      "dev": true
-    },
-    "node_modules/socket.io-client": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz",
-      "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==",
-      "dev": true,
-      "dependencies": {
-        "backo2": "1.0.2",
-        "base64-arraybuffer": "0.1.5",
-        "component-bind": "1.0.0",
-        "component-emitter": "1.2.1",
-        "debug": "~3.1.0",
-        "engine.io-client": "~3.2.0",
-        "has-binary2": "~1.0.2",
-        "has-cors": "1.1.0",
-        "indexof": "0.0.1",
-        "object-component": "0.0.3",
-        "parseqs": "0.0.5",
-        "parseuri": "0.0.5",
-        "socket.io-parser": "~3.2.0",
-        "to-array": "0.1.4"
-      }
-    },
-    "node_modules/socket.io-client/node_modules/component-emitter": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
-      "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
-      "dev": true
-    },
-    "node_modules/socket.io-client/node_modules/debug": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-      "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/socket.io-client/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
-    },
-    "node_modules/socket.io-parser": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz",
-      "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==",
-      "dev": true,
-      "dependencies": {
-        "component-emitter": "1.2.1",
-        "debug": "~3.1.0",
-        "isarray": "2.0.1"
-      }
-    },
-    "node_modules/socket.io-parser/node_modules/component-emitter": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
-      "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
-      "dev": true
-    },
-    "node_modules/socket.io-parser/node_modules/debug": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-      "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/socket.io-parser/node_modules/isarray": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
-      "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=",
-      "dev": true
-    },
-    "node_modules/socket.io-parser/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
-    },
-    "node_modules/socket.io/node_modules/debug": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-      "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/socket.io/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
-    },
-    "node_modules/sockjs": {
-      "version": "0.3.19",
-      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz",
-      "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==",
-      "dev": true,
-      "dependencies": {
-        "faye-websocket": "^0.10.0",
-        "uuid": "^3.0.1"
-      }
-    },
-    "node_modules/sockjs-client": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz",
-      "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==",
-      "dev": true,
-      "dependencies": {
-        "debug": "^3.2.5",
-        "eventsource": "^1.0.7",
-        "faye-websocket": "~0.11.1",
-        "inherits": "^2.0.3",
-        "json3": "^3.3.2",
-        "url-parse": "^1.4.3"
-      }
-    },
-    "node_modules/sockjs-client/node_modules/debug": {
-      "version": "3.2.7",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-      "dev": true,
-      "dependencies": {
-        "ms": "^2.1.1"
-      }
-    },
-    "node_modules/sockjs-client/node_modules/faye-websocket": {
-      "version": "0.11.3",
-      "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz",
-      "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==",
-      "dev": true,
-      "dependencies": {
-        "websocket-driver": ">=0.5.1"
-      },
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/socks": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz",
-      "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==",
-      "dev": true,
-      "dependencies": {
-        "ip": "1.1.5",
-        "smart-buffer": "^4.1.0"
-      },
-      "engines": {
-        "node": ">= 6.0.0",
-        "npm": ">= 3.0.0"
-      }
-    },
-    "node_modules/socks-proxy-agent": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz",
-      "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==",
-      "dev": true,
-      "dependencies": {
-        "agent-base": "~4.2.1",
-        "socks": "~2.3.2"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/socks-proxy-agent/node_modules/agent-base": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
-      "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
-      "dev": true,
-      "dependencies": {
-        "es6-promisify": "^5.0.0"
-      },
-      "engines": {
-        "node": ">= 4.0.0"
-      }
-    },
-    "node_modules/sort-keys": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
-      "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
-      "dev": true,
-      "dependencies": {
-        "is-plain-obj": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/source-list-map": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
-      "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
-      "dev": true
-    },
-    "node_modules/source-map": {
-      "version": "0.7.3",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
-      "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
-      "dev": true,
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/source-map-loader": {
-      "version": "0.2.4",
-      "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz",
-      "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==",
-      "dev": true,
-      "dependencies": {
-        "async": "^2.5.0",
-        "loader-utils": "^1.1.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/source-map-resolve": {
-      "version": "0.5.3",
-      "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
-      "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
-      "dev": true,
-      "dependencies": {
-        "atob": "^2.1.2",
-        "decode-uri-component": "^0.2.0",
-        "resolve-url": "^0.2.1",
-        "source-map-url": "^0.4.0",
-        "urix": "^0.1.0"
-      }
-    },
-    "node_modules/source-map-support": {
-      "version": "0.5.16",
-      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
-      "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
-      "dev": true,
-      "dependencies": {
-        "buffer-from": "^1.0.0",
-        "source-map": "^0.6.0"
-      }
-    },
-    "node_modules/source-map-support/node_modules/source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/source-map-url": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
-      "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
-      "dev": true
-    },
-    "node_modules/sourcemap-codec": {
-      "version": "1.4.8",
-      "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
-      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
-      "dev": true
-    },
-    "node_modules/spdx-correct": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
-      "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
-      "dev": true,
-      "dependencies": {
-        "spdx-expression-parse": "^3.0.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "node_modules/spdx-exceptions": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
-      "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
-      "dev": true
-    },
-    "node_modules/spdx-expression-parse": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
-      "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
-      "dev": true,
-      "dependencies": {
-        "spdx-exceptions": "^2.1.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "node_modules/spdx-license-ids": {
-      "version": "3.0.7",
-      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz",
-      "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==",
-      "dev": true
-    },
-    "node_modules/spdy": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
-      "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
-      "dev": true,
-      "dependencies": {
-        "debug": "^4.1.0",
-        "handle-thing": "^2.0.0",
-        "http-deceiver": "^1.2.7",
-        "select-hose": "^2.0.0",
-        "spdy-transport": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/spdy-transport": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz",
-      "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
-      "dev": true,
-      "dependencies": {
-        "debug": "^4.1.0",
-        "detect-node": "^2.0.4",
-        "hpack.js": "^2.1.6",
-        "obuf": "^1.1.2",
-        "readable-stream": "^3.0.6",
-        "wbuf": "^1.7.3"
-      }
-    },
-    "node_modules/spdy-transport/node_modules/readable-stream": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-      "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.3",
-        "string_decoder": "^1.1.1",
-        "util-deprecate": "^1.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/speed-measure-webpack-plugin": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.1.tgz",
-      "integrity": "sha512-qVIkJvbtS9j/UeZumbdfz0vg+QfG/zxonAjzefZrqzkr7xOncLVXkeGbTpzd1gjCBM4PmVNkWlkeTVhgskAGSQ==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/split-string": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
-      "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
-      "dev": true,
-      "dependencies": {
-        "extend-shallow": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/sprintf-js": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
-      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
-      "dev": true
-    },
-    "node_modules/sshpk": {
-      "version": "1.16.1",
-      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
-      "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
-      "dev": true,
-      "dependencies": {
-        "asn1": "~0.2.3",
-        "assert-plus": "^1.0.0",
-        "bcrypt-pbkdf": "^1.0.0",
-        "dashdash": "^1.12.0",
-        "ecc-jsbn": "~0.1.1",
-        "getpass": "^0.1.1",
-        "jsbn": "~0.1.0",
-        "safer-buffer": "^2.0.2",
-        "tweetnacl": "~0.14.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/ssri": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz",
-      "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==",
-      "dev": true,
-      "dependencies": {
-        "figgy-pudding": "^3.5.1",
-        "minipass": "^3.1.1"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/stable": {
-      "version": "0.1.8",
-      "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
-      "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
-      "dev": true
-    },
-    "node_modules/stack-trace": {
-      "version": "0.0.10",
-      "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
-      "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/static-extend": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
-      "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
-      "dev": true,
-      "dependencies": {
-        "define-property": "^0.2.5",
-        "object-copy": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/static-extend/node_modules/define-property": {
-      "version": "0.2.5",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-      "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-      "dev": true,
-      "dependencies": {
-        "is-descriptor": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/statuses": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
-      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/stream-browserify": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
-      "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "~2.0.1",
-        "readable-stream": "^2.0.2"
-      }
-    },
-    "node_modules/stream-each": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
-      "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
-      "dev": true,
-      "dependencies": {
-        "end-of-stream": "^1.1.0",
-        "stream-shift": "^1.0.0"
-      }
-    },
-    "node_modules/stream-http": {
-      "version": "2.8.3",
-      "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
-      "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
-      "dev": true,
-      "dependencies": {
-        "builtin-status-codes": "^3.0.0",
-        "inherits": "^2.0.1",
-        "readable-stream": "^2.3.6",
-        "to-arraybuffer": "^1.0.0",
-        "xtend": "^4.0.0"
-      }
-    },
-    "node_modules/stream-shift": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
-      "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
-      "dev": true
-    },
-    "node_modules/streamroller": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.6.tgz",
-      "integrity": "sha512-3QC47Mhv3/aZNFpDDVO44qQb9gwB9QggMEE0sQmkTAwBVYdBRWISdsywlkfm5II1Q5y/pmrHflti/IgmIzdDBg==",
-      "dev": true,
-      "dependencies": {
-        "async": "^2.6.2",
-        "date-format": "^2.0.0",
-        "debug": "^3.2.6",
-        "fs-extra": "^7.0.1",
-        "lodash": "^4.17.14"
-      },
-      "engines": {
-        "node": ">=6.0"
-      }
-    },
-    "node_modules/streamroller/node_modules/debug": {
-      "version": "3.2.7",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-      "dev": true,
-      "dependencies": {
-        "ms": "^2.1.1"
-      }
-    },
-    "node_modules/streamroller/node_modules/fs-extra": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
-      "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
-      "dev": true,
-      "dependencies": {
-        "graceful-fs": "^4.1.2",
-        "jsonfile": "^4.0.0",
-        "universalify": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=6 <7 || >=8"
-      }
-    },
-    "node_modules/strict-uri-encode": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
-      "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/string_decoder": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-      "dev": true,
-      "dependencies": {
-        "safe-buffer": "~5.1.0"
-      }
-    },
-    "node_modules/string-length": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz",
-      "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=",
-      "dev": true,
-      "dependencies": {
-        "strip-ansi": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/string-width": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-      "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
-      "dev": true,
-      "dependencies": {
-        "is-fullwidth-code-point": "^2.0.0",
-        "strip-ansi": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/string-width/node_modules/ansi-regex": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-      "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/string-width/node_modules/strip-ansi": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-      "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/string.prototype.trimend": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz",
-      "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.0",
-        "define-properties": "^1.1.3"
-      }
-    },
-    "node_modules/string.prototype.trimstart": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz",
-      "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==",
-      "dev": true,
-      "dependencies": {
-        "call-bind": "^1.0.0",
-        "define-properties": "^1.1.3"
-      }
-    },
-    "node_modules/strip-ansi": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/strip-bom": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
-      "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/strip-eof": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
-      "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/strip-json-comments": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
-      "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/style-loader": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.0.0.tgz",
-      "integrity": "sha512-B0dOCFwv7/eY31a5PCieNwMgMhVGFe9w+rh7s/Bx8kfFkrth9zfTZquoYvdw8URgiqxObQKcpW51Ugz1HjfdZw==",
-      "dev": true,
-      "dependencies": {
-        "loader-utils": "^1.2.3",
-        "schema-utils": "^2.0.1"
-      },
-      "engines": {
-        "node": ">= 8.9.0"
-      }
-    },
-    "node_modules/style-loader/node_modules/ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "dev": true,
-      "dependencies": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      }
-    },
-    "node_modules/style-loader/node_modules/fast-deep-equal": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-      "dev": true
-    },
-    "node_modules/style-loader/node_modules/schema-utils": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
-      "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
-      "dev": true,
-      "dependencies": {
-        "@types/json-schema": "^7.0.5",
-        "ajv": "^6.12.4",
-        "ajv-keywords": "^3.5.2"
-      },
-      "engines": {
-        "node": ">= 8.9.0"
-      }
-    },
-    "node_modules/stylehacks": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz",
-      "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==",
-      "dev": true,
-      "dependencies": {
-        "browserslist": "^4.0.0",
-        "postcss": "^7.0.0",
-        "postcss-selector-parser": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/stylehacks/node_modules/postcss-selector-parser": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
-      "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
-      "dev": true,
-      "dependencies": {
-        "dot-prop": "^5.2.0",
-        "indexes-of": "^1.0.1",
-        "uniq": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/stylus": {
-      "version": "0.54.7",
-      "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.7.tgz",
-      "integrity": "sha512-Yw3WMTzVwevT6ZTrLCYNHAFmanMxdylelL3hkWNgPMeTCpMwpV3nXjpOHuBXtFv7aiO2xRuQS6OoAdgkNcSNug==",
-      "dev": true,
-      "dependencies": {
-        "css-parse": "~2.0.0",
-        "debug": "~3.1.0",
-        "glob": "^7.1.3",
-        "mkdirp": "~0.5.x",
-        "safer-buffer": "^2.1.2",
-        "sax": "~1.2.4",
-        "semver": "^6.0.0",
-        "source-map": "^0.7.3"
-      },
-      "bin": {
-        "stylus": "bin/stylus"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/stylus-loader": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz",
-      "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==",
-      "dev": true,
-      "dependencies": {
-        "loader-utils": "^1.0.2",
-        "lodash.clonedeep": "^4.5.0",
-        "when": "~3.6.x"
-      }
-    },
-    "node_modules/stylus/node_modules/debug": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-      "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-      "dev": true,
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/stylus/node_modules/ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
-    },
-    "node_modules/superstatic": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/superstatic/-/superstatic-7.1.0.tgz",
-      "integrity": "sha512-yBU8iw07nM3Bu4jFc8lnKwLey0cj61OaGmFJZcYC2X+kEpXVmXzERJ3OTAHZAESe1OTeNIuWadt81U5IULGGAA==",
-      "dev": true,
-      "dependencies": {
-        "basic-auth-connect": "^1.0.0",
-        "chalk": "^1.1.3",
-        "compare-semver": "^1.0.0",
-        "compression": "^1.7.0",
-        "connect": "^3.6.2",
-        "destroy": "^1.0.4",
-        "fast-url-parser": "^1.1.3",
-        "fs-extra": "^8.1.0",
-        "glob-slasher": "^1.0.1",
-        "home-dir": "^1.0.0",
-        "is-url": "^1.2.2",
-        "join-path": "^1.1.1",
-        "lodash": "^4.17.19",
-        "mime-types": "^2.1.16",
-        "minimatch": "^3.0.4",
-        "morgan": "^1.8.2",
-        "nash": "^3.0.0",
-        "on-finished": "^2.2.0",
-        "on-headers": "^1.0.0",
-        "path-to-regexp": "^1.8.0",
-        "router": "^1.3.1",
-        "rsvp": "^4.8.5",
-        "string-length": "^1.0.0",
-        "update-notifier": "^4.1.1"
-      },
-      "bin": {
-        "superstatic": "bin/server"
-      },
-      "engines": {
-        "node": ">= 8.6.0"
-      },
-      "optionalDependencies": {
-        "re2": "^1.15.8"
-      }
-    },
-    "node_modules/superstatic/node_modules/ansi-styles": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-      "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/superstatic/node_modules/chalk": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-      "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-      "dev": true,
-      "dependencies": {
-        "ansi-styles": "^2.2.1",
-        "escape-string-regexp": "^1.0.2",
-        "has-ansi": "^2.0.0",
-        "strip-ansi": "^3.0.0",
-        "supports-color": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/superstatic/node_modules/fs-extra": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
-      "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
-      "dev": true,
-      "dependencies": {
-        "graceful-fs": "^4.2.0",
-        "jsonfile": "^4.0.0",
-        "universalify": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=6 <7 || >=8"
-      }
-    },
-    "node_modules/superstatic/node_modules/isarray": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
-      "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
-      "dev": true
-    },
-    "node_modules/superstatic/node_modules/path-to-regexp": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
-      "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
-      "dev": true,
-      "dependencies": {
-        "isarray": "0.0.1"
-      }
-    },
-    "node_modules/superstatic/node_modules/supports-color": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-      "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/supports-color": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-      "dev": true,
-      "dependencies": {
-        "has-flag": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/supports-hyperlinks": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz",
-      "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==",
-      "dev": true,
-      "dependencies": {
-        "has-flag": "^2.0.0",
-        "supports-color": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/supports-hyperlinks/node_modules/has-flag": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
-      "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/svg.draggable.js": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz",
-      "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==",
-      "dependencies": {
-        "svg.js": "^2.0.1"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/svg.easing.js": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz",
-      "integrity": "sha1-iqmUawqOJ4V6XEChDrpAkeVpHxI=",
-      "dependencies": {
-        "svg.js": ">=2.3.x"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/svg.filter.js": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz",
-      "integrity": "sha1-kQCOFROJ3ZIwd5/L5uLJo2LRwgM=",
-      "dependencies": {
-        "svg.js": "^2.2.5"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/svg.js": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz",
-      "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA=="
-    },
-    "node_modules/svg.pathmorphing.js": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz",
-      "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==",
-      "dependencies": {
-        "svg.js": "^2.4.0"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/svg.resize.js": {
-      "version": "1.4.3",
-      "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz",
-      "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==",
-      "dependencies": {
-        "svg.js": "^2.6.5",
-        "svg.select.js": "^2.1.2"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/svg.resize.js/node_modules/svg.select.js": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz",
-      "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==",
-      "dependencies": {
-        "svg.js": "^2.2.5"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/svg.select.js": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz",
-      "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==",
-      "dependencies": {
-        "svg.js": "^2.6.5"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/svgo": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz",
-      "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^2.4.1",
-        "coa": "^2.0.2",
-        "css-select": "^2.0.0",
-        "css-select-base-adapter": "^0.1.1",
-        "css-tree": "1.0.0-alpha.37",
-        "csso": "^4.0.2",
-        "js-yaml": "^3.13.1",
-        "mkdirp": "~0.5.1",
-        "object.values": "^1.1.0",
-        "sax": "~1.2.4",
-        "stable": "^0.1.8",
-        "unquote": "~1.1.1",
-        "util.promisify": "~1.0.0"
-      },
-      "bin": {
-        "svgo": "bin/svgo"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/sweetalert2": {
-      "version": "10.13.3",
-      "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-10.13.3.tgz",
-      "integrity": "sha512-kSvTkXvc59+vPf9CfZ/wc/uvFkccxoOMLK1aUibN0mXU4hbYg/NylBTlmfvuUjJQ5SWL3X6s8w7AG5croH8U1w=="
-    },
-    "node_modules/symbol-observable": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
-      "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/tapable": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
-      "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/tar": {
-      "version": "4.4.13",
-      "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
-      "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
-      "dev": true,
-      "dependencies": {
-        "chownr": "^1.1.1",
-        "fs-minipass": "^1.2.5",
-        "minipass": "^2.8.6",
-        "minizlib": "^1.2.1",
-        "mkdirp": "^0.5.0",
-        "safe-buffer": "^5.1.2",
-        "yallist": "^3.0.3"
-      },
-      "engines": {
-        "node": ">=4.5"
-      }
-    },
-    "node_modules/tar-stream": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
-      "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
-      "dev": true,
-      "dependencies": {
-        "bl": "^4.0.3",
-        "end-of-stream": "^1.4.1",
-        "fs-constants": "^1.0.0",
-        "inherits": "^2.0.3",
-        "readable-stream": "^3.1.1"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/tar-stream/node_modules/readable-stream": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-      "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.3",
-        "string_decoder": "^1.1.1",
-        "util-deprecate": "^1.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/tar/node_modules/fs-minipass": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
-      "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
-      "dev": true,
-      "dependencies": {
-        "minipass": "^2.6.0"
-      }
-    },
-    "node_modules/tar/node_modules/minipass": {
-      "version": "2.9.0",
-      "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
-      "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
-      "dev": true,
-      "dependencies": {
-        "safe-buffer": "^5.1.2",
-        "yallist": "^3.0.0"
-      }
-    },
-    "node_modules/tar/node_modules/yallist": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-      "dev": true
-    },
-    "node_modules/tcp-port-used": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.2.tgz",
-      "integrity": "sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==",
-      "dev": true,
-      "dependencies": {
-        "debug": "4.3.1",
-        "is2": "^2.0.6"
-      }
-    },
-    "node_modules/term-size": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz",
-      "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/terser": {
-      "version": "4.5.1",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-4.5.1.tgz",
-      "integrity": "sha512-lH9zLIbX8PRBEFCTvfHGCy0s9HEKnNso1Dx9swSopF3VUnFLB8DpQ61tHxoofovNC/sG0spajJM3EIIRSTByiQ==",
-      "dev": true,
-      "dependencies": {
-        "commander": "^2.20.0",
-        "source-map": "~0.6.1",
-        "source-map-support": "~0.5.12"
-      },
-      "bin": {
-        "terser": "bin/terser"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/terser-webpack-plugin": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.3.tgz",
-      "integrity": "sha512-gWHkaGzGYjmDoYxksFZynWTzvXOAjQ5dd7xuTMYlv4zpWlLSb6v0QLSZjELzP5dMs1ox30O1BIPs9dgqlMHuLQ==",
-      "dev": true,
-      "dependencies": {
-        "cacache": "^13.0.1",
-        "find-cache-dir": "^3.2.0",
-        "jest-worker": "^25.1.0",
-        "p-limit": "^2.2.2",
-        "schema-utils": "^2.6.4",
-        "serialize-javascript": "^2.1.2",
-        "source-map": "^0.6.1",
-        "terser": "^4.4.3",
-        "webpack-sources": "^1.4.3"
-      },
-      "engines": {
-        "node": ">= 8.9.0"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-      "dev": true,
-      "dependencies": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/fast-deep-equal": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-      "dev": true
-    },
-    "node_modules/terser-webpack-plugin/node_modules/find-cache-dir": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz",
-      "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==",
-      "dev": true,
-      "dependencies": {
-        "commondir": "^1.0.1",
-        "make-dir": "^3.0.2",
-        "pkg-dir": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/find-up": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-      "dev": true,
-      "dependencies": {
-        "locate-path": "^5.0.0",
-        "path-exists": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/has-flag": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/jest-worker": {
-      "version": "25.5.0",
-      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz",
-      "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==",
-      "dev": true,
-      "dependencies": {
-        "merge-stream": "^2.0.0",
-        "supports-color": "^7.0.0"
-      },
-      "engines": {
-        "node": ">= 8.3"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/locate-path": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-      "dev": true,
-      "dependencies": {
-        "p-locate": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/make-dir": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
-      "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
-      "dev": true,
-      "dependencies": {
-        "semver": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/p-locate": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-      "dev": true,
-      "dependencies": {
-        "p-limit": "^2.2.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/path-exists": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/pkg-dir": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
-      "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
-      "dev": true,
-      "dependencies": {
-        "find-up": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/schema-utils": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
-      "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
-      "dev": true,
-      "dependencies": {
-        "@types/json-schema": "^7.0.5",
-        "ajv": "^6.12.4",
-        "ajv-keywords": "^3.5.2"
-      },
-      "engines": {
-        "node": ">= 8.9.0"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/terser-webpack-plugin/node_modules/supports-color": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-      "dev": true,
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/terser/node_modules/source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/text-hex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
-      "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==",
-      "dev": true
-    },
-    "node_modules/through": {
-      "version": "2.3.8",
-      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
-      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
-      "dev": true
-    },
-    "node_modules/through2": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
-      "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
-      "dev": true,
-      "dependencies": {
-        "readable-stream": "~2.3.6",
-        "xtend": "~4.0.1"
-      }
-    },
-    "node_modules/thunky": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
-      "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
-      "dev": true
-    },
-    "node_modules/timers-browserify": {
-      "version": "2.0.12",
-      "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz",
-      "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==",
-      "dev": true,
-      "dependencies": {
-        "setimmediate": "^1.0.4"
-      },
-      "engines": {
-        "node": ">=0.6.0"
-      }
-    },
-    "node_modules/timers-ext": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
-      "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==",
-      "dev": true,
-      "dependencies": {
-        "es5-ext": "~0.10.46",
-        "next-tick": "1"
-      }
-    },
-    "node_modules/timsort": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
-      "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
-      "dev": true
-    },
-    "node_modules/tmp": {
-      "version": "0.0.33",
-      "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
-      "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
-      "dev": true,
-      "dependencies": {
-        "os-tmpdir": "~1.0.2"
-      },
-      "engines": {
-        "node": ">=0.6.0"
-      }
-    },
-    "node_modules/to-array": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
-      "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=",
-      "dev": true
-    },
-    "node_modules/to-arraybuffer": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
-      "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
-      "dev": true
-    },
-    "node_modules/to-fast-properties": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
-      "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/to-object-path": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
-      "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/to-object-path/node_modules/kind-of": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-      "dev": true,
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/to-readable-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
-      "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/to-regex": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
-      "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
-      "dev": true,
-      "dependencies": {
-        "define-property": "^2.0.2",
-        "extend-shallow": "^3.0.2",
-        "regex-not": "^1.0.2",
-        "safe-regex": "^1.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/to-regex-range": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-      "dev": true,
-      "dependencies": {
-        "is-number": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=8.0"
-      }
-    },
-    "node_modules/toidentifier": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
-      "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.6"
-      }
-    },
-    "node_modules/tough-cookie": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
-      "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
-      "dev": true,
-      "dependencies": {
-        "psl": "^1.1.28",
-        "punycode": "^2.1.1"
-      },
-      "engines": {
-        "node": ">=0.8"
-      }
-    },
-    "node_modules/toxic": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/toxic/-/toxic-1.0.1.tgz",
-      "integrity": "sha512-WI3rIGdcaKULYg7KVoB0zcjikqvcYYvcuT6D89bFPz2rVR0Rl0PK6x8/X62rtdLtBKIE985NzVf/auTtGegIIg==",
-      "dev": true,
-      "dependencies": {
-        "lodash": "^4.17.10"
-      }
-    },
-    "node_modules/traverse": {
-      "version": "0.3.9",
-      "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
-      "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=",
-      "dev": true,
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/tree-kill": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
-      "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
-      "dev": true,
-      "bin": {
-        "tree-kill": "cli.js"
-      }
-    },
-    "node_modules/triple-beam": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
-      "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==",
-      "dev": true
-    },
-    "node_modules/ts-node": {
-      "version": "8.3.0",
-      "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
-      "integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
-      "dev": true,
-      "dependencies": {
-        "arg": "^4.1.0",
-        "diff": "^4.0.1",
-        "make-error": "^1.1.1",
-        "source-map-support": "^0.5.6",
-        "yn": "^3.0.0"
-      },
-      "bin": {
-        "ts-node": "dist/bin.js"
-      },
-      "engines": {
-        "node": ">=4.2.0"
-      }
-    },
-    "node_modules/tslib": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
-    },
-    "node_modules/tslint": {
-      "version": "5.18.0",
-      "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.18.0.tgz",
-      "integrity": "sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w==",
-      "dev": true,
-      "dependencies": {
-        "@babel/code-frame": "^7.0.0",
-        "builtin-modules": "^1.1.1",
-        "chalk": "^2.3.0",
-        "commander": "^2.12.1",
-        "diff": "^3.2.0",
-        "glob": "^7.1.1",
-        "js-yaml": "^3.13.1",
-        "minimatch": "^3.0.4",
-        "mkdirp": "^0.5.1",
-        "resolve": "^1.3.2",
-        "semver": "^5.3.0",
-        "tslib": "^1.8.0",
-        "tsutils": "^2.29.0"
-      },
-      "bin": {
-        "tslint": "bin/tslint"
-      },
-      "engines": {
-        "node": ">=4.8.0"
-      }
-    },
-    "node_modules/tslint/node_modules/diff": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
-      "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.3.1"
-      }
-    },
-    "node_modules/tslint/node_modules/semver": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-      "dev": true,
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/tsutils": {
-      "version": "2.29.0",
-      "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz",
-      "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==",
-      "dev": true,
-      "dependencies": {
-        "tslib": "^1.8.1"
-      }
-    },
-    "node_modules/tty-browserify": {
-      "version": "0.0.0",
-      "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
-      "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
-      "dev": true
-    },
-    "node_modules/tunnel-agent": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
-      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
-      "dev": true,
-      "dependencies": {
-        "safe-buffer": "^5.0.1"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/tweetnacl": {
-      "version": "0.14.5",
-      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
-      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
-      "dev": true
-    },
-    "node_modules/tweetsodium": {
-      "version": "0.0.5",
-      "resolved": "https://registry.npmjs.org/tweetsodium/-/tweetsodium-0.0.5.tgz",
-      "integrity": "sha512-T3aXZtx7KqQbutTtBfn+P5By3HdBuB1eCoGviIrRJV2sXeToxv2X2cv5RvYqgG26PSnN5m3fYixds22Gkfd11w==",
-      "dev": true,
-      "dependencies": {
-        "blakejs": "^1.1.0",
-        "tweetnacl": "^1.0.1"
-      }
-    },
-    "node_modules/tweetsodium/node_modules/tweetnacl": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz",
-      "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==",
-      "dev": true
-    },
-    "node_modules/type": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
-      "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
-      "dev": true
-    },
-    "node_modules/type-fest": {
-      "version": "0.8.1",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
-      "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/type-is": {
-      "version": "1.6.18",
-      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
-      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
-      "dev": true,
-      "dependencies": {
-        "media-typer": "0.3.0",
-        "mime-types": "~2.1.24"
-      },
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
-    "node_modules/typedarray": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
-      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
-      "dev": true
-    },
-    "node_modules/typedarray-to-buffer": {
-      "version": "3.1.5",
-      "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
-      "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
-      "dev": true,
-      "dependencies": {
-        "is-typedarray": "^1.0.0"
-      }
-    },
-    "node_modules/typescript": {
-      "version": "3.7.5",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz",
-      "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==",
-      "dev": true,
-      "bin": {
-        "tsc": "bin/tsc",
-        "tsserver": "bin/tsserver"
-      },
-      "engines": {
-        "node": ">=4.2.0"
-      }
-    },
-    "node_modules/ultron": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz",
-      "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==",
-      "dev": true
-    },
-    "node_modules/unicode-canonical-property-names-ecmascript": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
-      "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/unicode-match-property-ecmascript": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
-      "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
-      "dev": true,
-      "dependencies": {
-        "unicode-canonical-property-names-ecmascript": "^1.0.4",
-        "unicode-property-aliases-ecmascript": "^1.0.4"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/unicode-match-property-value-ecmascript": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz",
-      "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/unicode-property-aliases-ecmascript": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz",
-      "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/union-value": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
-      "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
-      "dev": true,
-      "dependencies": {
-        "arr-union": "^3.1.0",
-        "get-value": "^2.0.6",
-        "is-extendable": "^0.1.1",
-        "set-value": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/uniq": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
-      "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
-      "dev": true
-    },
-    "node_modules/uniqs": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz",
-      "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=",
-      "dev": true
-    },
-    "node_modules/unique-filename": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
-      "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
-      "dev": true,
-      "dependencies": {
-        "unique-slug": "^2.0.0"
-      }
-    },
-    "node_modules/unique-slug": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
-      "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
-      "dev": true,
-      "dependencies": {
-        "imurmurhash": "^0.1.4"
-      }
-    },
-    "node_modules/unique-string": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
-      "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
-      "dev": true,
-      "dependencies": {
-        "crypto-random-string": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/universal-analytics": {
-      "version": "0.4.23",
-      "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.23.tgz",
-      "integrity": "sha512-lgMIH7XBI6OgYn1woDEmxhGdj8yDefMKg7GkWdeATAlQZFrMrNyxSkpDzY57iY0/6fdlzTbBV03OawvvzG+q7A==",
-      "dev": true,
-      "dependencies": {
-        "debug": "^4.1.1",
-        "request": "^2.88.2",
-        "uuid": "^3.0.0"
-      }
-    },
-    "node_modules/universalify": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
-      "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
-      "dev": true,
-      "engines": {
-        "node": ">= 4.0.0"
-      }
-    },
-    "node_modules/unpipe": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
-      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/unquote": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
-      "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=",
-      "dev": true
-    },
-    "node_modules/unset-value": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
-      "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
-      "dev": true,
-      "dependencies": {
-        "has-value": "^0.3.1",
-        "isobject": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/unset-value/node_modules/has-value": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
-      "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
-      "dev": true,
-      "dependencies": {
-        "get-value": "^2.0.3",
-        "has-values": "^0.1.4",
-        "isobject": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/unset-value/node_modules/has-value/node_modules/isobject": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
-      "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
-      "dev": true,
-      "dependencies": {
-        "isarray": "1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/unset-value/node_modules/has-values": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
-      "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/unzipper": {
-      "version": "0.10.11",
-      "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz",
-      "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==",
-      "dev": true,
-      "dependencies": {
-        "big-integer": "^1.6.17",
-        "binary": "~0.3.0",
-        "bluebird": "~3.4.1",
-        "buffer-indexof-polyfill": "~1.0.0",
-        "duplexer2": "~0.1.4",
-        "fstream": "^1.0.12",
-        "graceful-fs": "^4.2.2",
-        "listenercount": "~1.0.1",
-        "readable-stream": "~2.3.6",
-        "setimmediate": "~1.0.4"
-      }
-    },
-    "node_modules/unzipper/node_modules/bluebird": {
-      "version": "3.4.7",
-      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz",
-      "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=",
-      "dev": true
-    },
-    "node_modules/upath": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
-      "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
-      "dev": true,
-      "engines": {
-        "node": ">=4",
-        "yarn": "*"
-      }
-    },
-    "node_modules/update-notifier": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz",
-      "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==",
-      "dev": true,
-      "dependencies": {
-        "boxen": "^4.2.0",
-        "chalk": "^3.0.0",
-        "configstore": "^5.0.1",
-        "has-yarn": "^2.1.0",
-        "import-lazy": "^2.1.0",
-        "is-ci": "^2.0.0",
-        "is-installed-globally": "^0.3.1",
-        "is-npm": "^4.0.0",
-        "is-yarn-global": "^0.3.0",
-        "latest-version": "^5.0.0",
-        "pupa": "^2.0.1",
-        "semver-diff": "^3.1.1",
-        "xdg-basedir": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/yeoman/update-notifier?sponsor=1"
-      }
-    },
-    "node_modules/update-notifier/node_modules/ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "dev": true,
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/update-notifier/node_modules/chalk": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-      "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
-      "dev": true,
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/update-notifier/node_modules/color-convert": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "dev": true,
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/update-notifier/node_modules/color-name": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-      "dev": true
-    },
-    "node_modules/update-notifier/node_modules/has-flag": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/update-notifier/node_modules/supports-color": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-      "dev": true,
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/uri-js": {
-      "version": "4.4.1",
-      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
-      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-      "dev": true,
-      "dependencies": {
-        "punycode": "^2.1.0"
-      }
-    },
-    "node_modules/urix": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
-      "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
-      "dev": true
-    },
-    "node_modules/url": {
-      "version": "0.11.0",
-      "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
-      "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
-      "dev": true,
-      "dependencies": {
-        "punycode": "1.3.2",
-        "querystring": "0.2.0"
-      }
-    },
-    "node_modules/url-join": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz",
-      "integrity": "sha1-HbSK1CLTQCRpqH99l73r/k+x48g=",
-      "dev": true
-    },
-    "node_modules/url-parse": {
-      "version": "1.4.7",
-      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz",
-      "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==",
-      "dev": true,
-      "dependencies": {
-        "querystringify": "^2.1.1",
-        "requires-port": "^1.0.0"
-      }
-    },
-    "node_modules/url-parse-lax": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
-      "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
-      "dev": true,
-      "dependencies": {
-        "prepend-http": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/url-parse-lax/node_modules/prepend-http": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
-      "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/url/node_modules/punycode": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
-      "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
-      "dev": true
-    },
-    "node_modules/use": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
-      "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/useragent": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz",
-      "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==",
-      "dev": true,
-      "dependencies": {
-        "lru-cache": "4.1.x",
-        "tmp": "0.0.x"
-      }
-    },
-    "node_modules/useragent/node_modules/lru-cache": {
-      "version": "4.1.5",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
-      "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
-      "dev": true,
-      "dependencies": {
-        "pseudomap": "^1.0.2",
-        "yallist": "^2.1.2"
-      }
-    },
-    "node_modules/useragent/node_modules/yallist": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
-      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
-      "dev": true
-    },
-    "node_modules/util": {
-      "version": "0.11.1",
-      "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
-      "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "2.0.3"
-      }
-    },
-    "node_modules/util-deprecate": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
-      "dev": true
-    },
-    "node_modules/util-promisify": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz",
-      "integrity": "sha1-PCI2R2xNMsX/PEcAKt18E7moKlM=",
-      "dev": true,
-      "dependencies": {
-        "object.getownpropertydescriptors": "^2.0.3"
-      }
-    },
-    "node_modules/util.promisify": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz",
-      "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==",
-      "dev": true,
-      "dependencies": {
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.17.2",
-        "has-symbols": "^1.0.1",
-        "object.getownpropertydescriptors": "^2.1.0"
-      }
-    },
-    "node_modules/util.promisify/node_modules/es-abstract": {
-      "version": "1.17.7",
-      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz",
-      "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==",
-      "dev": true,
-      "dependencies": {
-        "es-to-primitive": "^1.2.1",
-        "function-bind": "^1.1.1",
-        "has": "^1.0.3",
-        "has-symbols": "^1.0.1",
-        "is-callable": "^1.2.2",
-        "is-regex": "^1.1.1",
-        "object-inspect": "^1.8.0",
-        "object-keys": "^1.1.1",
-        "object.assign": "^4.1.1",
-        "string.prototype.trimend": "^1.0.1",
-        "string.prototype.trimstart": "^1.0.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/util/node_modules/inherits": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
-      "dev": true
-    },
-    "node_modules/utils-merge": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
-      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.4.0"
-      }
-    },
-    "node_modules/uuid": {
-      "version": "3.4.0",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
-      "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
-      "dev": true,
-      "bin": {
-        "uuid": "bin/uuid"
-      }
-    },
-    "node_modules/valid-url": {
-      "version": "1.0.9",
-      "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz",
-      "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=",
-      "dev": true
-    },
-    "node_modules/validate-npm-package-license": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
-      "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
-      "dev": true,
-      "dependencies": {
-        "spdx-correct": "^3.0.0",
-        "spdx-expression-parse": "^3.0.0"
-      }
-    },
-    "node_modules/validate-npm-package-name": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
-      "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=",
-      "dev": true,
-      "dependencies": {
-        "builtins": "^1.0.3"
-      }
-    },
-    "node_modules/vary": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
-      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
-      "dev": true,
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
-    "node_modules/vendors": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz",
-      "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==",
-      "dev": true
-    },
-    "node_modules/verror": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
-      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
-      "dev": true,
-      "engines": [
-        "node >=0.6.0"
-      ],
-      "dependencies": {
-        "assert-plus": "^1.0.0",
-        "core-util-is": "1.0.2",
-        "extsprintf": "^1.2.0"
-      }
-    },
-    "node_modules/vm-browserify": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
-      "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
-      "dev": true
-    },
-    "node_modules/void-elements": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
-      "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/walkdir": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.4.1.tgz",
-      "integrity": "sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/watchpack": {
-      "version": "1.7.5",
-      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
-      "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==",
-      "dev": true,
-      "dependencies": {
-        "chokidar": "^3.4.1",
-        "graceful-fs": "^4.1.2",
-        "neo-async": "^2.5.0"
-      },
-      "optionalDependencies": {
-        "watchpack-chokidar2": "^2.0.1"
-      }
-    },
-    "node_modules/watchpack-chokidar2": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz",
-      "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "chokidar": "^2.1.8"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/anymatch": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-      "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "micromatch": "^3.1.4",
-        "normalize-path": "^2.1.1"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-      "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "remove-trailing-separator": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/binary-extensions": {
-      "version": "1.13.1",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
-      "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
-      "dev": true,
-      "optional": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/braces": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-      "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "arr-flatten": "^1.1.0",
-        "array-unique": "^0.3.2",
-        "extend-shallow": "^2.0.1",
-        "fill-range": "^4.0.0",
-        "isobject": "^3.0.1",
-        "repeat-element": "^1.1.2",
-        "snapdragon": "^0.8.1",
-        "snapdragon-node": "^2.0.1",
-        "split-string": "^3.0.2",
-        "to-regex": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/chokidar": {
-      "version": "2.1.8",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
-      "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "anymatch": "^2.0.0",
-        "async-each": "^1.0.1",
-        "braces": "^2.3.2",
-        "fsevents": "^1.2.7",
-        "glob-parent": "^3.1.0",
-        "inherits": "^2.0.3",
-        "is-binary-path": "^1.0.0",
-        "is-glob": "^4.0.0",
-        "normalize-path": "^3.0.0",
-        "path-is-absolute": "^1.0.0",
-        "readdirp": "^2.2.1",
-        "upath": "^1.1.1"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/extend-shallow": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "is-extendable": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/fill-range": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-      "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "extend-shallow": "^2.0.1",
-        "is-number": "^3.0.0",
-        "repeat-string": "^1.6.1",
-        "to-regex-range": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/fsevents": {
-      "version": "1.2.13",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
-      "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
-      "dev": true,
-      "hasInstallScript": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "dependencies": {
-        "bindings": "^1.5.0",
-        "nan": "^2.12.1"
-      },
-      "engines": {
-        "node": ">= 4.0"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/is-binary-path": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-      "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "binary-extensions": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/is-number": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-      "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "kind-of": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/kind-of": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/readdirp": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
-      "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "graceful-fs": "^4.1.11",
-        "micromatch": "^3.1.10",
-        "readable-stream": "^2.0.2"
-      },
-      "engines": {
-        "node": ">=0.10"
-      }
-    },
-    "node_modules/watchpack-chokidar2/node_modules/to-regex-range": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-      "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "is-number": "^3.0.0",
-        "repeat-string": "^1.6.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/wavesurfer": {
-      "version": "1.3.4",
-      "resolved": "https://registry.npmjs.org/wavesurfer/-/wavesurfer-1.3.4.tgz",
-      "integrity": "sha1-F5CKvSDaEajbRgxaF2Z5Yh1Rm/o=",
-      "deprecated": "Not_Official_Version_Correct_package_name_wavesurfer.js"
-    },
-    "node_modules/wbuf": {
-      "version": "1.7.3",
-      "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
-      "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
-      "dev": true,
-      "dependencies": {
-        "minimalistic-assert": "^1.0.0"
-      }
-    },
-    "node_modules/wcwidth": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
-      "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
-      "dev": true,
-      "dependencies": {
-        "defaults": "^1.0.3"
-      }
-    },
-    "node_modules/webdriver-js-extender": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz",
-      "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==",
-      "dev": true,
-      "dependencies": {
-        "@types/selenium-webdriver": "^3.0.0",
-        "selenium-webdriver": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=6.9.x"
-      }
-    },
-    "node_modules/webpack": {
-      "version": "4.41.2",
-      "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.2.tgz",
-      "integrity": "sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A==",
-      "dev": true,
-      "dependencies": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/helper-module-context": "1.8.5",
-        "@webassemblyjs/wasm-edit": "1.8.5",
-        "@webassemblyjs/wasm-parser": "1.8.5",
-        "acorn": "^6.2.1",
-        "ajv": "^6.10.2",
-        "ajv-keywords": "^3.4.1",
-        "chrome-trace-event": "^1.0.2",
-        "enhanced-resolve": "^4.1.0",
-        "eslint-scope": "^4.0.3",
-        "json-parse-better-errors": "^1.0.2",
-        "loader-runner": "^2.4.0",
-        "loader-utils": "^1.2.3",
-        "memory-fs": "^0.4.1",
-        "micromatch": "^3.1.10",
-        "mkdirp": "^0.5.1",
-        "neo-async": "^2.6.1",
-        "node-libs-browser": "^2.2.1",
-        "schema-utils": "^1.0.0",
-        "tapable": "^1.1.3",
-        "terser-webpack-plugin": "^1.4.1",
-        "watchpack": "^1.6.0",
-        "webpack-sources": "^1.4.1"
-      },
-      "bin": {
-        "webpack": "bin/webpack.js"
-      },
-      "engines": {
-        "node": ">=6.11.5"
-      }
-    },
-    "node_modules/webpack-dev-middleware": {
-      "version": "3.7.2",
-      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz",
-      "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==",
-      "dev": true,
-      "dependencies": {
-        "memory-fs": "^0.4.1",
-        "mime": "^2.4.4",
-        "mkdirp": "^0.5.1",
-        "range-parser": "^1.2.1",
-        "webpack-log": "^2.0.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/webpack-dev-middleware/node_modules/memory-fs": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
-      "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
-      "dev": true,
-      "dependencies": {
-        "errno": "^0.1.3",
-        "readable-stream": "^2.0.1"
-      }
-    },
-    "node_modules/webpack-dev-middleware/node_modules/mime": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz",
-      "integrity": "sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==",
-      "dev": true,
-      "bin": {
-        "mime": "cli.js"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/webpack-dev-server": {
-      "version": "3.9.0",
-      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz",
-      "integrity": "sha512-E6uQ4kRrTX9URN9s/lIbqTAztwEPdvzVrcmHE8EQ9YnuT9J8Es5Wrd8n9BKg1a0oZ5EgEke/EQFgUsp18dSTBw==",
-      "dev": true,
-      "dependencies": {
-        "ansi-html": "0.0.7",
-        "bonjour": "^3.5.0",
-        "chokidar": "^2.1.8",
-        "compression": "^1.7.4",
-        "connect-history-api-fallback": "^1.6.0",
-        "debug": "^4.1.1",
-        "del": "^4.1.1",
-        "express": "^4.17.1",
-        "html-entities": "^1.2.1",
-        "http-proxy-middleware": "0.19.1",
-        "import-local": "^2.0.0",
-        "internal-ip": "^4.3.0",
-        "ip": "^1.1.5",
-        "is-absolute-url": "^3.0.3",
-        "killable": "^1.0.1",
-        "loglevel": "^1.6.4",
-        "opn": "^5.5.0",
-        "p-retry": "^3.0.1",
-        "portfinder": "^1.0.25",
-        "schema-utils": "^1.0.0",
-        "selfsigned": "^1.10.7",
-        "semver": "^6.3.0",
-        "serve-index": "^1.9.1",
-        "sockjs": "0.3.19",
-        "sockjs-client": "1.4.0",
-        "spdy": "^4.0.1",
-        "strip-ansi": "^3.0.1",
-        "supports-color": "^6.1.0",
-        "url": "^0.11.0",
-        "webpack-dev-middleware": "^3.7.2",
-        "webpack-log": "^2.0.0",
-        "ws": "^6.2.1",
-        "yargs": "12.0.5"
-      },
-      "bin": {
-        "webpack-dev-server": "bin/webpack-dev-server.js"
-      },
-      "engines": {
-        "node": ">= 6.11.5"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/anymatch": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-      "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
-      "dev": true,
-      "dependencies": {
-        "micromatch": "^3.1.4",
-        "normalize-path": "^2.1.1"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/anymatch/node_modules/normalize-path": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-      "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
-      "dev": true,
-      "dependencies": {
-        "remove-trailing-separator": "^1.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/binary-extensions": {
-      "version": "1.13.1",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
-      "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/braces": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-      "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-      "dev": true,
-      "dependencies": {
-        "arr-flatten": "^1.1.0",
-        "array-unique": "^0.3.2",
-        "extend-shallow": "^2.0.1",
-        "fill-range": "^4.0.0",
-        "isobject": "^3.0.1",
-        "repeat-element": "^1.1.2",
-        "snapdragon": "^0.8.1",
-        "snapdragon-node": "^2.0.1",
-        "split-string": "^3.0.2",
-        "to-regex": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/chokidar": {
-      "version": "2.1.8",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
-      "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
-      "dev": true,
-      "dependencies": {
-        "anymatch": "^2.0.0",
-        "async-each": "^1.0.1",
-        "braces": "^2.3.2",
-        "glob-parent": "^3.1.0",
-        "inherits": "^2.0.3",
-        "is-binary-path": "^1.0.0",
-        "is-glob": "^4.0.0",
-        "normalize-path": "^3.0.0",
-        "path-is-absolute": "^1.0.0",
-        "readdirp": "^2.2.1",
-        "upath": "^1.1.1"
-      },
-      "optionalDependencies": {
-        "fsevents": "^1.2.7"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/extend-shallow": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-      "dev": true,
-      "dependencies": {
-        "is-extendable": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/fill-range": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-      "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-      "dev": true,
-      "dependencies": {
-        "extend-shallow": "^2.0.1",
-        "is-number": "^3.0.0",
-        "repeat-string": "^1.6.1",
-        "to-regex-range": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/fsevents": {
-      "version": "1.2.13",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
-      "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
-      "dev": true,
-      "hasInstallScript": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "dependencies": {
-        "bindings": "^1.5.0",
-        "nan": "^2.12.1"
-      },
-      "engines": {
-        "node": ">= 4.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/is-absolute-url": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
-      "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/is-binary-path": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-      "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
-      "dev": true,
-      "dependencies": {
-        "binary-extensions": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/is-number": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-      "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-      "dev": true,
-      "dependencies": {
-        "kind-of": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/kind-of": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-      "dev": true,
-      "dependencies": {
-        "is-buffer": "^1.1.5"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/readdirp": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
-      "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
-      "dev": true,
-      "dependencies": {
-        "graceful-fs": "^4.1.11",
-        "micromatch": "^3.1.10",
-        "readable-stream": "^2.0.2"
-      },
-      "engines": {
-        "node": ">=0.10"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/supports-color": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-      "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
-      "dev": true,
-      "dependencies": {
-        "has-flag": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/webpack-dev-server/node_modules/to-regex-range": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-      "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
-      "dev": true,
-      "dependencies": {
-        "is-number": "^3.0.0",
-        "repeat-string": "^1.6.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-log": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz",
-      "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
-      "dev": true,
-      "dependencies": {
-        "ansi-colors": "^3.0.0",
-        "uuid": "^3.3.2"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/webpack-merge": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz",
-      "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==",
-      "dev": true,
-      "dependencies": {
-        "lodash": "^4.17.15"
-      }
-    },
-    "node_modules/webpack-sources": {
-      "version": "1.4.3",
-      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
-      "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
-      "dev": true,
-      "dependencies": {
-        "source-list-map": "^2.0.0",
-        "source-map": "~0.6.1"
-      }
-    },
-    "node_modules/webpack-sources/node_modules/source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack-subresource-integrity": {
-      "version": "1.3.4",
-      "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.3.4.tgz",
-      "integrity": "sha512-6XbGYzjh30cGQT/NsC+9IAkJP8IL7/t47sbwR5DLSsamiD56Rwv4/+hsgEHsviPvrEFZ0JRAQtCRN3UsR2Pw9g==",
-      "dev": true,
-      "dependencies": {
-        "webpack-sources": "^1.3.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/webpack/node_modules/acorn": {
-      "version": "6.4.2",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
-      "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
-      "dev": true,
-      "bin": {
-        "acorn": "bin/acorn"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/webpack/node_modules/cacache": {
-      "version": "12.0.4",
-      "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
-      "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
-      "dev": true,
-      "dependencies": {
-        "bluebird": "^3.5.5",
-        "chownr": "^1.1.1",
-        "figgy-pudding": "^3.5.1",
-        "glob": "^7.1.4",
-        "graceful-fs": "^4.1.15",
-        "infer-owner": "^1.0.3",
-        "lru-cache": "^5.1.1",
-        "mississippi": "^3.0.0",
-        "mkdirp": "^0.5.1",
-        "move-concurrently": "^1.0.1",
-        "promise-inflight": "^1.0.1",
-        "rimraf": "^2.6.3",
-        "ssri": "^6.0.1",
-        "unique-filename": "^1.1.1",
-        "y18n": "^4.0.0"
-      }
-    },
-    "node_modules/webpack/node_modules/find-cache-dir": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
-      "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
-      "dev": true,
-      "dependencies": {
-        "commondir": "^1.0.1",
-        "make-dir": "^2.0.0",
-        "pkg-dir": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/webpack/node_modules/is-wsl": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
-      "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/webpack/node_modules/memory-fs": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
-      "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
-      "dev": true,
-      "dependencies": {
-        "errno": "^0.1.3",
-        "readable-stream": "^2.0.1"
-      }
-    },
-    "node_modules/webpack/node_modules/rimraf": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-      "dev": true,
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      }
-    },
-    "node_modules/webpack/node_modules/serialize-javascript": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
-      "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
-      "dev": true,
-      "dependencies": {
-        "randombytes": "^2.1.0"
-      }
-    },
-    "node_modules/webpack/node_modules/source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/webpack/node_modules/ssri": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
-      "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
-      "dev": true,
-      "dependencies": {
-        "figgy-pudding": "^3.5.1"
-      }
-    },
-    "node_modules/webpack/node_modules/terser-webpack-plugin": {
-      "version": "1.4.5",
-      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz",
-      "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==",
-      "dev": true,
-      "dependencies": {
-        "cacache": "^12.0.2",
-        "find-cache-dir": "^2.1.0",
-        "is-wsl": "^1.1.0",
-        "schema-utils": "^1.0.0",
-        "serialize-javascript": "^4.0.0",
-        "source-map": "^0.6.1",
-        "terser": "^4.1.2",
-        "webpack-sources": "^1.4.0",
-        "worker-farm": "^1.7.0"
-      },
-      "engines": {
-        "node": ">= 6.9.0"
-      }
-    },
-    "node_modules/websocket-driver": {
-      "version": "0.7.4",
-      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
-      "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
-      "dependencies": {
-        "http-parser-js": ">=0.5.1",
-        "safe-buffer": ">=5.1.0",
-        "websocket-extensions": ">=0.1.1"
-      },
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/websocket-extensions": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
-      "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/whatwg-fetch": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
-      "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng=="
-    },
-    "node_modules/when": {
-      "version": "3.6.4",
-      "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz",
-      "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=",
-      "dev": true
-    },
-    "node_modules/which": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
-      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
-      "dev": true,
-      "dependencies": {
-        "isexe": "^2.0.0"
-      },
-      "bin": {
-        "which": "bin/which"
-      }
-    },
-    "node_modules/which-module": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
-      "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
-      "dev": true
-    },
-    "node_modules/wide-align": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
-      "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "string-width": "^1.0.2 || 2"
-      }
-    },
-    "node_modules/widest-line": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
-      "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
-      "dev": true,
-      "dependencies": {
-        "string-width": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/widest-line/node_modules/ansi-regex": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-      "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/widest-line/node_modules/is-fullwidth-code-point": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/widest-line/node_modules/string-width": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
-      "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
-      "dev": true,
-      "dependencies": {
-        "emoji-regex": "^8.0.0",
-        "is-fullwidth-code-point": "^3.0.0",
-        "strip-ansi": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/widest-line/node_modules/strip-ansi": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-      "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/winston": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz",
-      "integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==",
-      "dev": true,
-      "dependencies": {
-        "@dabh/diagnostics": "^2.0.2",
-        "async": "^3.1.0",
-        "is-stream": "^2.0.0",
-        "logform": "^2.2.0",
-        "one-time": "^1.0.0",
-        "readable-stream": "^3.4.0",
-        "stack-trace": "0.0.x",
-        "triple-beam": "^1.3.0",
-        "winston-transport": "^4.4.0"
-      },
-      "engines": {
-        "node": ">= 6.4.0"
-      }
-    },
-    "node_modules/winston-transport": {
-      "version": "4.4.0",
-      "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz",
-      "integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==",
-      "dev": true,
-      "dependencies": {
-        "readable-stream": "^2.3.7",
-        "triple-beam": "^1.2.0"
-      },
-      "engines": {
-        "node": ">= 6.4.0"
-      }
-    },
-    "node_modules/winston/node_modules/async": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
-      "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==",
-      "dev": true
-    },
-    "node_modules/winston/node_modules/is-stream": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
-      "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/winston/node_modules/readable-stream": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-      "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.3",
-        "string_decoder": "^1.1.1",
-        "util-deprecate": "^1.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/wordwrap": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
-      "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/worker-farm": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
-      "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
-      "dev": true,
-      "dependencies": {
-        "errno": "~0.1.7"
-      }
-    },
-    "node_modules/worker-plugin": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-3.2.0.tgz",
-      "integrity": "sha512-W5nRkw7+HlbsEt3qRP6MczwDDISjiRj2GYt9+bpe8A2La00TmJdwzG5bpdMXhRt1qcWmwAvl1TiKaHRa+XDS9Q==",
-      "dev": true,
-      "dependencies": {
-        "loader-utils": "^1.1.0"
-      }
-    },
-    "node_modules/wrap-ansi": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
-      "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
-      "dev": true,
-      "dependencies": {
-        "string-width": "^1.0.1",
-        "strip-ansi": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
-      "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
-      "dev": true,
-      "dependencies": {
-        "number-is-nan": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/wrap-ansi/node_modules/string-width": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-      "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
-      "dev": true,
-      "dependencies": {
-        "code-point-at": "^1.0.0",
-        "is-fullwidth-code-point": "^1.0.0",
-        "strip-ansi": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/wrappy": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
-      "dev": true
-    },
-    "node_modules/write-file-atomic": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
-      "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
-      "dev": true,
-      "dependencies": {
-        "imurmurhash": "^0.1.4",
-        "is-typedarray": "^1.0.0",
-        "signal-exit": "^3.0.2",
-        "typedarray-to-buffer": "^3.1.5"
-      }
-    },
-    "node_modules/ws": {
-      "version": "6.2.1",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
-      "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
-      "dev": true,
-      "dependencies": {
-        "async-limiter": "~1.0.0"
-      }
-    },
-    "node_modules/xdg-basedir": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
-      "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/xml2js": {
-      "version": "0.4.23",
-      "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
-      "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
-      "dev": true,
-      "dependencies": {
-        "sax": ">=0.6.0",
-        "xmlbuilder": "~11.0.0"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/xmlbuilder": {
-      "version": "11.0.1",
-      "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
-      "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
-      "dev": true,
-      "engines": {
-        "node": ">=4.0"
-      }
-    },
-    "node_modules/xmldom": {
-      "version": "0.1.31",
-      "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz",
-      "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.1"
-      }
-    },
-    "node_modules/xmlhttprequest": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
-      "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=",
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/xmlhttprequest-ssl": {
-      "version": "1.5.5",
-      "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
-      "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=",
-      "dev": true,
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/xtend": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
-      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.4"
-      }
-    },
-    "node_modules/y18n": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
-      "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==",
-      "dev": true
-    },
-    "node_modules/yallist": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
-    },
-    "node_modules/yargs": {
-      "version": "12.0.5",
-      "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
-      "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
-      "dev": true,
-      "dependencies": {
-        "cliui": "^4.0.0",
-        "decamelize": "^1.2.0",
-        "find-up": "^3.0.0",
-        "get-caller-file": "^1.0.1",
-        "os-locale": "^3.0.0",
-        "require-directory": "^2.1.1",
-        "require-main-filename": "^1.0.1",
-        "set-blocking": "^2.0.0",
-        "string-width": "^2.0.0",
-        "which-module": "^2.0.0",
-        "y18n": "^3.2.1 || ^4.0.0",
-        "yargs-parser": "^11.1.1"
-      }
-    },
-    "node_modules/yargs-parser": {
-      "version": "11.1.1",
-      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
-      "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
-      "dev": true,
-      "dependencies": {
-        "camelcase": "^5.0.0",
-        "decamelize": "^1.2.0"
-      }
-    },
-    "node_modules/yeast": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
-      "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
-      "dev": true
-    },
-    "node_modules/yn": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
-      "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/zip-stream": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz",
-      "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==",
-      "dev": true,
-      "dependencies": {
-        "archiver-utils": "^2.1.0",
-        "compress-commons": "^2.1.1",
-        "readable-stream": "^3.4.0"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/zip-stream/node_modules/readable-stream": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-      "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-      "dev": true,
-      "dependencies": {
-        "inherits": "^2.0.3",
-        "string_decoder": "^1.1.1",
-        "util-deprecate": "^1.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/zone.js": {
-      "version": "0.10.3",
-      "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz",
-      "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg=="
-    }
-  },
   "dependencies": {
     "@angular-devkit/architect": {
       "version": "0.900.7",
@@ -20362,6 +564,48 @@
         "js-yaml": "^3.13.1"
       }
     },
+    "@auth0/auth0-angular": {
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/@auth0/auth0-angular/-/auth0-angular-1.10.0.tgz",
+      "integrity": "sha512-ypM7PIHkWBB+DY5CqLD38VIQpjkbSfmncJxmQurqsHcpsJNIXoL3LGvv6hX+Wo9tp8kxKHHjV7RZ07JOplV90w==",
+      "requires": {
+        "@auth0/auth0-spa-js": "^1.22.0",
+        "tslib": "^2.0.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.4.0",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
+          "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
+        }
+      }
+    },
+    "@auth0/auth0-spa-js": {
+      "version": "1.22.1",
+      "resolved": "https://registry.npmjs.org/@auth0/auth0-spa-js/-/auth0-spa-js-1.22.1.tgz",
+      "integrity": "sha512-l0FCmiN3XubpgCtB3U0ds4h+5WQNTnIF4eLT/fudHEtcyrT65QF/03LybGVdLyuvqdIF/D6OQsfjwYw0Ms605Q==",
+      "requires": {
+        "abortcontroller-polyfill": "^1.7.3",
+        "browser-tabs-lock": "^1.2.15",
+        "core-js": "^3.22.6",
+        "es-cookie": "^1.3.2",
+        "fast-text-encoding": "^1.0.3",
+        "promise-polyfill": "^8.2.3",
+        "unfetch": "^4.2.0"
+      },
+      "dependencies": {
+        "core-js": {
+          "version": "3.23.3",
+          "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.23.3.tgz",
+          "integrity": "sha512-oAKwkj9xcWNBAvGbT//WiCdOMpb9XQG92/Fe3ABFM/R16BsHgePG00mFOgKf7IsCtfj8tA1kHtf/VwErhriz5Q=="
+        },
+        "promise-polyfill": {
+          "version": "8.2.3",
+          "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.3.tgz",
+          "integrity": "sha512-Og0+jCRQetV84U8wVjMNccfGCnMQ9mGs9Hv78QFe+pSDD3gWTpz0y+1QCuxy5d/vBFuZ3iwP2eycAkvqIMPmWg=="
+        }
+      }
+    },
     "@babel/code-frame": {
       "version": "7.12.11",
       "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
@@ -21281,14 +1525,12 @@
     "@firebase/auth-interop-types": {
       "version": "0.1.5",
       "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.5.tgz",
-      "integrity": "sha512-88h74TMQ6wXChPA6h9Q3E1Jg6TkTHep2+k63OWg3s0ozyGVMeY+TTOti7PFPzq5RhszQPQOoCi59es4MaRvgCw==",
-      "requires": {}
+      "integrity": "sha512-88h74TMQ6wXChPA6h9Q3E1Jg6TkTHep2+k63OWg3s0ozyGVMeY+TTOti7PFPzq5RhszQPQOoCi59es4MaRvgCw=="
     },
     "@firebase/auth-types": {
       "version": "0.10.1",
       "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.10.1.tgz",
-      "integrity": "sha512-/+gBHb1O9x/YlG7inXfxff/6X3BPZt4zgBv4kql6HEmdzNQCodIRlEYnI+/da+lN+dha7PjaFH7C7ewMmfV7rw==",
-      "requires": {}
+      "integrity": "sha512-/+gBHb1O9x/YlG7inXfxff/6X3BPZt4zgBv4kql6HEmdzNQCodIRlEYnI+/da+lN+dha7PjaFH7C7ewMmfV7rw=="
     },
     "@firebase/component": {
       "version": "0.1.21",
@@ -21350,8 +1592,7 @@
     "@firebase/firestore-types": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-2.1.0.tgz",
-      "integrity": "sha512-jietErBWihMvJkqqEquQy5GgoEwzHnMXXC/TsVoe9FPysXm1/AeJS12taS7ZYvenAtyvL/AEJyKrRKRh4adcJQ==",
-      "requires": {}
+      "integrity": "sha512-jietErBWihMvJkqqEquQy5GgoEwzHnMXXC/TsVoe9FPysXm1/AeJS12taS7ZYvenAtyvL/AEJyKrRKRh4adcJQ=="
     },
     "@firebase/functions": {
       "version": "0.6.1",
@@ -21385,8 +1626,7 @@
     "@firebase/installations-types": {
       "version": "0.3.4",
       "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.3.4.tgz",
-      "integrity": "sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q==",
-      "requires": {}
+      "integrity": "sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q=="
     },
     "@firebase/logger": {
       "version": "0.2.6",
@@ -21409,8 +1649,7 @@
     "@firebase/messaging-types": {
       "version": "0.5.0",
       "resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.5.0.tgz",
-      "integrity": "sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg==",
-      "requires": {}
+      "integrity": "sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg=="
     },
     "@firebase/performance": {
       "version": "0.4.5",
@@ -21479,8 +1718,7 @@
     "@firebase/storage-types": {
       "version": "0.3.13",
       "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.3.13.tgz",
-      "integrity": "sha512-pL7b8d5kMNCCL0w9hF7pr16POyKkb3imOW7w0qYrhBnbyJTdVxMWZhb0HxCFyQWC0w3EiIFFmxoz8NTFZDEFog==",
-      "requires": {}
+      "integrity": "sha512-pL7b8d5kMNCCL0w9hF7pr16POyKkb3imOW7w0qYrhBnbyJTdVxMWZhb0HxCFyQWC0w3EiIFFmxoz8NTFZDEFog=="
     },
     "@firebase/util": {
       "version": "0.3.4",
@@ -22195,6 +2433,16 @@
       "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==",
       "dev": true
     },
+    "JSONStream": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
+      "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
+      "dev": true,
+      "requires": {
+        "jsonparse": "^1.2.0",
+        "through": ">=2.2.7 <3"
+      }
+    },
     "abbrev": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
@@ -22210,6 +2458,11 @@
         "event-target-shim": "^5.0.0"
       }
     },
+    "abortcontroller-polyfill": {
+      "version": "1.7.3",
+      "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz",
+      "integrity": "sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q=="
+    },
     "accepts": {
       "version": "1.3.7",
       "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
@@ -23187,6 +3440,21 @@
       "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
       "dev": true
     },
+    "browser-tabs-lock": {
+      "version": "1.2.15",
+      "resolved": "https://registry.npmjs.org/browser-tabs-lock/-/browser-tabs-lock-1.2.15.tgz",
+      "integrity": "sha512-J8K9vdivK0Di+b8SBdE7EZxDr88TnATing7XoLw6+nFkXMQ6sVBh92K3NQvZlZU91AIkFRi0w3sztk5Z+vsswA==",
+      "requires": {
+        "lodash": ">=4.17.21"
+      },
+      "dependencies": {
+        "lodash": {
+          "version": "4.17.21",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+          "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+        }
+      }
+    },
     "browserify-aes": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
@@ -25607,6 +5875,11 @@
         "string.prototype.trimstart": "^1.0.3"
       }
     },
+    "es-cookie": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/es-cookie/-/es-cookie-1.3.2.tgz",
+      "integrity": "sha512-UTlYYhXGLOy05P/vKVT2Ui7WtC7NiRzGtJyAKKn32g5Gvcjn7KAClLPWlipCtxIus934dFg9o9jXiBL0nP+t9Q=="
+    },
     "es-to-primitive": {
       "version": "1.2.1",
       "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
@@ -26427,6 +6700,7 @@
       "dev": true,
       "requires": {
         "@google-cloud/pubsub": "^1.7.0",
+        "JSONStream": "^1.2.1",
         "abort-controller": "^3.0.0",
         "archiver": "^3.0.0",
         "body-parser": "^1.19.0",
@@ -26451,7 +6725,6 @@
         "inquirer": "~6.3.1",
         "js-yaml": "^3.13.1",
         "jsonschema": "^1.0.2",
-        "JSONStream": "^1.2.1",
         "jsonwebtoken": "^8.2.1",
         "leven": "^3.1.0",
         "lodash": "^4.17.19",
@@ -26792,8 +7065,7 @@
           "version": "7.4.3",
           "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.3.tgz",
           "integrity": "sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA==",
-          "dev": true,
-          "requires": {}
+          "dev": true
         }
       }
     },
@@ -29023,16 +9295,6 @@
       "integrity": "sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw==",
       "dev": true
     },
-    "JSONStream": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
-      "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
-      "dev": true,
-      "requires": {
-        "jsonparse": "^1.2.0",
-        "through": ">=2.2.7 <3"
-      }
-    },
     "jsonwebtoken": {
       "version": "8.5.1",
       "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
@@ -30745,9 +11007,9 @@
       "integrity": "sha512-cny9v0+Mq6Tjz+e0erFAB+RYJ/AVGzkjnISiobqP8OWj9c9FLoZZu8/SPSKJWE17F1tk4018wfjV+ZbIbqC7fQ==",
       "dev": true,
       "requires": {
+        "JSONStream": "^1.3.4",
         "bluebird": "^3.5.1",
         "figgy-pudding": "^3.4.1",
-        "JSONStream": "^1.3.4",
         "lru-cache": "^5.1.1",
         "make-fetch-happen": "^5.0.0",
         "npm-package-arg": "^6.1.0",
@@ -34172,15 +14434,6 @@
       "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
       "dev": true
     },
-    "string_decoder": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "~5.1.0"
-      }
-    },
     "string-length": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz",
@@ -34237,6 +14490,15 @@
         "define-properties": "^1.1.3"
       }
     },
+    "string_decoder": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
     "strip-ansi": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
@@ -35153,6 +15415,11 @@
       "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==",
       "dev": true
     },
+    "unfetch": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz",
+      "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA=="
+    },
     "unicode-canonical-property-names-ecmascript": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
diff --git a/package.json b/package.json
index 031cd23..cd90e19 100644
--- a/package.json
+++ b/package.json
@@ -22,6 +22,7 @@
     "@angular/platform-browser": "~9.0.7",
     "@angular/platform-browser-dynamic": "~9.0.7",
     "@angular/router": "~9.0.7",
+    "@auth0/auth0-angular": "^1.10.0",
     "angular-walkthrough": "^0.8.2",
     "apexcharts": "^3.24.0",
     "bootstrap": "^4.6.0",
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 27a2215..bb32e3b 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -1,157 +1,162 @@
-import { BrowserModule } from '@angular/platform-browser';
-import { NgModule } from '@angular/core';
+import { BrowserModule } from "@angular/platform-browser";
+import { NgModule } from "@angular/core";
 
-import { AppRoutingModule } from './app-routing.module';
-import { AppComponent } from './app.component';
+import { AppRoutingModule } from "./app-routing.module";
+import { AppComponent } from "./app.component";
 
-import {MatButtonModule} from '@angular/material/button';
-import {MatIconModule} from '@angular/material/icon';
-import {MatToolbarModule} from '@angular/material/toolbar';
-import { MatSidenavModule } from '@angular/material/sidenav';
-import { MatListModule } from '@angular/material/list';
-import {MatDialogModule} from '@angular/material/dialog';
-import {MatRadioModule} from '@angular/material/radio';
-import { MatTableModule } from '@angular/material/table';
-import { MatFormFieldModule } from '@angular/material/form-field';
-import { MatInputModule } from '@angular/material/input';
-import { MatPaginatorModule } from '@angular/material/paginator';
-import { MatSortModule } from '@angular/material/sort';
-import {MatCardModule} from '@angular/material/card';
-import {MatSelectModule} from '@angular/material/select';
-import {MatTabsModule} from '@angular/material/tabs';
-import {MatMenuModule} from '@angular/material/menu';
-import {MatTooltipModule} from '@angular/material/tooltip';
-import {MatChipsModule} from '@angular/material/chips';
-import {MatAutocompleteModule} from '@angular/material/autocomplete';
-import {MatProgressSpinnerModule} from '@angular/material/progress-spinner';
-import {MatDatepickerModule} from '@angular/material/datepicker';
-import {MatCheckboxModule} from '@angular/material/checkbox';
-import {MatSliderModule} from '@angular/material/slider';
-import {MatProgressBarModule} from '@angular/material/progress-bar';
+import { MatButtonModule } from "@angular/material/button";
+import { MatIconModule } from "@angular/material/icon";
+import { MatToolbarModule } from "@angular/material/toolbar";
+import { MatSidenavModule } from "@angular/material/sidenav";
+import { MatListModule } from "@angular/material/list";
+import { MatDialogModule } from "@angular/material/dialog";
+import { MatRadioModule } from "@angular/material/radio";
+import { MatTableModule } from "@angular/material/table";
+import { MatFormFieldModule } from "@angular/material/form-field";
+import { MatInputModule } from "@angular/material/input";
+import { MatPaginatorModule } from "@angular/material/paginator";
+import { MatSortModule } from "@angular/material/sort";
+import { MatCardModule } from "@angular/material/card";
+import { MatSelectModule } from "@angular/material/select";
+import { MatTabsModule } from "@angular/material/tabs";
+import { MatMenuModule } from "@angular/material/menu";
+import { MatTooltipModule } from "@angular/material/tooltip";
+import { MatChipsModule } from "@angular/material/chips";
+import { MatAutocompleteModule } from "@angular/material/autocomplete";
+import { MatProgressSpinnerModule } from "@angular/material/progress-spinner";
+import { MatDatepickerModule } from "@angular/material/datepicker";
+import { MatCheckboxModule } from "@angular/material/checkbox";
+import { MatSliderModule } from "@angular/material/slider";
+import { MatProgressBarModule } from "@angular/material/progress-bar";
 import { FormsModule, ReactiveFormsModule } from "@angular/forms";
-import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
-import { HttpClientModule } from '@angular/common/http';
-import { CountdownModule } from 'ngx-countdown';
+import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
+import { HttpClientModule } from "@angular/common/http";
+import { CountdownModule } from "ngx-countdown";
 import { NgApexchartsModule } from "ng-apexcharts";
-import { NgWaveformModule } from 'ng-waveform';
-import { PdfViewerModule } from 'ng2-pdf-viewer';
-import {OverlayModule} from '@angular/cdk/overlay';
-import {PortalModule} from '@angular/cdk/portal';
+import { NgWaveformModule } from "ng-waveform";
+import { PdfViewerModule } from "ng2-pdf-viewer";
+import { OverlayModule } from "@angular/cdk/overlay";
+import { PortalModule } from "@angular/cdk/portal";
 
+import { MainGameComponent } from "./main-game/main-game.component";
+import { HeaderComponent } from "./header/header.component";
+import { LoginComponent } from "./login/login.component";
+import { ConsentFormComponent } from "./consent-form/consent-form.component";
+import { FirstFormComponent } from "./first-form/first-form.component";
+import { DialogComponent } from "./main-game/dialog/dialog.component";
+import { TestComponent } from "./test/test.component";
+import { WalkthroughModule } from "ngx-walkthrough";
+import { MyOverlayComponent } from "./test/my-overlay/my-overlay.component";
+import { TrialComponentComponent } from "./trial-component/trial-component.component";
+import { HomePageComponent } from "./home-page/home-page.component";
+import { PreSurveyComponent } from "./pre-survey/pre-survey.component";
+import { CpcqFormComponent } from "./cpcq-form/cpcq-form.component";
+import { PostSurveyComponent } from "./post-survey/post-survey.component";
+import { DialogFormComponent } from "./cpcq-form/dialog-form/dialog-form.component";
+import { DashboardComponent } from "./dashboard/dashboard.component";
+import { DashboardDialoComponent } from "./dashboard/dashboard-dialo/dashboard-dialo.component";
+import { FooterComponent } from "./footer/footer.component";
+import { ResultDashboardComponent } from "./result-dashboard/result-dashboard.component";
+import { LottieModule } from "ngx-lottie";
+import player from "lottie-web";
+import { AboutCompComponent } from "./about-comp/about-comp.component";
+import { RegisterComponentComponent } from "./register-component/register-component.component";
+import { DialogPDfComponent } from "./pre-survey/dialog-pdf/dialog-pdf.component";
+import { ScorePageComponent } from "./score-page/score-page.component";
+import { GraphPageComponent } from "./graph-page/graph-page.component";
+import { FinalDashboardComponent } from "./final-dashboard/final-dashboard.component";
+import { UnpackingPageComponent } from "./unpacking-page/unpacking-page.component";
+import { FinalFeedbackComponent } from "./final-feedback/final-feedback.component";
+import { ForgotPasswordComponent } from "./forgot-password/forgot-password.component";
+import { ChangePasswordComponent } from "./change-password/change-password.component";
+import { EmailPasswordComponent } from "./email-password/email-password.component";
+import { AuthModule } from "@auth0/auth0-angular";
 
-import { MainGameComponent } from './main-game/main-game.component';
-import { HeaderComponent } from './header/header.component';
-import { LoginComponent } from './login/login.component';
-import { ConsentFormComponent } from './consent-form/consent-form.component';
-import { FirstFormComponent } from './first-form/first-form.component';
-import { DialogComponent } from './main-game/dialog/dialog.component';
-import { TestComponent } from './test/test.component';
-import { WalkthroughModule } from 'ngx-walkthrough';
-import { MyOverlayComponent } from './test/my-overlay/my-overlay.component';
-import { TrialComponentComponent } from './trial-component/trial-component.component';
-import { HomePageComponent } from './home-page/home-page.component';
-import { PreSurveyComponent } from './pre-survey/pre-survey.component';
-import { CpcqFormComponent } from './cpcq-form/cpcq-form.component';
-import { PostSurveyComponent } from './post-survey/post-survey.component';
-import { DialogFormComponent } from './cpcq-form/dialog-form/dialog-form.component';
-import { DashboardComponent } from './dashboard/dashboard.component';
-import { DashboardDialoComponent } from './dashboard/dashboard-dialo/dashboard-dialo.component';
-import { FooterComponent } from './footer/footer.component';
-import { ResultDashboardComponent } from './result-dashboard/result-dashboard.component';
-import { LottieModule } from 'ngx-lottie';
-import player from 'lottie-web';
-import { AboutCompComponent } from './about-comp/about-comp.component';
-import { RegisterComponentComponent } from './register-component/register-component.component';
-import { DialogPDfComponent } from './pre-survey/dialog-pdf/dialog-pdf.component';
-import { ScorePageComponent } from './score-page/score-page.component';
-import { GraphPageComponent } from './graph-page/graph-page.component';
-import { FinalDashboardComponent } from './final-dashboard/final-dashboard.component';
-import { UnpackingPageComponent } from './unpacking-page/unpacking-page.component';
-import { FinalFeedbackComponent } from './final-feedback/final-feedback.component';
-import { ForgotPasswordComponent } from './forgot-password/forgot-password.component';
-import { ChangePasswordComponent } from './change-password/change-password.component';
-import { EmailPasswordComponent } from './email-password/email-password.component';
- 
 // Note we need a separate function as it's required
 // by the AOT compiler.
 export function playerFactory() {
-  return player;
+    return player;
 }
 
 @NgModule({
-  declarations: [
-    AppComponent,
-    MainGameComponent,
-    HeaderComponent,
-    LoginComponent,
-    ConsentFormComponent,
-    FirstFormComponent,
-    DialogComponent,
-    TestComponent,
-    MyOverlayComponent,
-    TrialComponentComponent,
-    HomePageComponent,
-    PreSurveyComponent,
-    CpcqFormComponent,
-    PostSurveyComponent,
-    DialogFormComponent,
-    DashboardComponent,
-    DashboardDialoComponent,
-    FooterComponent,
-    ResultDashboardComponent,
-    AboutCompComponent,
-    RegisterComponentComponent,
-    DialogPDfComponent,
-    ScorePageComponent,
-    GraphPageComponent,
-    FinalDashboardComponent,
-    UnpackingPageComponent,
-    FinalFeedbackComponent,
-    ForgotPasswordComponent,
-    ChangePasswordComponent,
-    EmailPasswordComponent
-  ],
-  imports: [
-    BrowserModule,
-    AppRoutingModule,
-    MatButtonModule,
-    MatIconModule,
-    MatToolbarModule,
-    MatSidenavModule,
-    MatListModule,
-    MatDialogModule,
-    MatRadioModule,
-    MatTableModule,
-    MatProgressBarModule,
-    MatSliderModule,
-    MatFormFieldModule,
-    MatInputModule,
-    MatPaginatorModule,
-    MatSortModule,
-    MatCardModule,
-    MatSelectModule,
-    MatTabsModule,
-    MatMenuModule,
-    MatTooltipModule,
-    MatChipsModule,
-    MatCheckboxModule,
-    MatAutocompleteModule,
-    MatProgressSpinnerModule,
-    MatDatepickerModule,
-    FormsModule,
-    ReactiveFormsModule,
-    BrowserAnimationsModule,
-    HttpClientModule,
-    CountdownModule,
-    WalkthroughModule,
-    OverlayModule,
-    PortalModule,
-    NgApexchartsModule,
-    NgWaveformModule,
-    PdfViewerModule,
-    LottieModule.forRoot({ player: playerFactory })
-  ],
-  providers: [],
-  bootstrap: [AppComponent]
+    declarations: [
+        AppComponent,
+        MainGameComponent,
+        HeaderComponent,
+        LoginComponent,
+        ConsentFormComponent,
+        FirstFormComponent,
+        DialogComponent,
+        TestComponent,
+        MyOverlayComponent,
+        TrialComponentComponent,
+        HomePageComponent,
+        PreSurveyComponent,
+        CpcqFormComponent,
+        PostSurveyComponent,
+        DialogFormComponent,
+        DashboardComponent,
+        DashboardDialoComponent,
+        FooterComponent,
+        ResultDashboardComponent,
+        AboutCompComponent,
+        RegisterComponentComponent,
+        DialogPDfComponent,
+        ScorePageComponent,
+        GraphPageComponent,
+        FinalDashboardComponent,
+        UnpackingPageComponent,
+        FinalFeedbackComponent,
+        ForgotPasswordComponent,
+        ChangePasswordComponent,
+        EmailPasswordComponent,
+    ],
+    imports: [
+        BrowserModule,
+        AppRoutingModule,
+        MatButtonModule,
+        MatIconModule,
+        MatToolbarModule,
+        MatSidenavModule,
+        MatListModule,
+        MatDialogModule,
+        MatRadioModule,
+        MatTableModule,
+        MatProgressBarModule,
+        MatSliderModule,
+        MatFormFieldModule,
+        MatInputModule,
+        MatPaginatorModule,
+        MatSortModule,
+        MatCardModule,
+        MatSelectModule,
+        MatTabsModule,
+        MatMenuModule,
+        MatTooltipModule,
+        MatChipsModule,
+        MatCheckboxModule,
+        MatAutocompleteModule,
+        MatProgressSpinnerModule,
+        MatDatepickerModule,
+        FormsModule,
+        ReactiveFormsModule,
+        BrowserAnimationsModule,
+        HttpClientModule,
+        CountdownModule,
+        WalkthroughModule,
+        OverlayModule,
+        PortalModule,
+        NgApexchartsModule,
+        NgWaveformModule,
+        PdfViewerModule,
+        LottieModule.forRoot({ player: playerFactory }),
+        // Import the module into the application, with configuration
+        AuthModule.forRoot({
+            domain: "dev-x39z62vm.us.auth0.com",
+            clientId: "jN2jYbC5bPdFaquIZGsxJNxkZe42KCDl",
+        }),
+    ],
+    providers: [],
+    bootstrap: [AppComponent],
 })
-export class AppModule { }
\ No newline at end of file
+export class AppModule {}
diff --git a/src/app/header/header.component.css b/src/app/header/header.component.css
index 771b3e4..66ff44b 100644
--- a/src/app/header/header.component.css
+++ b/src/app/header/header.component.css
@@ -1,4 +1,4 @@
-@media screen and (min-width:1024px) {
+@media screen and (min-width: 1024px) {
     .mat-toolbar {
         background-color: white;
         height: 70px;
@@ -15,7 +15,7 @@
     }
 }
 
-@media screen and (max-width:1023px) {
+@media screen and (max-width: 1023px) {
     .mat-toolbar {
         background-color: white;
         height: 70px;
@@ -41,7 +41,7 @@
     color: #fcb913;
     font-size: 22px;
     font-weight: bold;
-    font-family: 'Loto', sans-serif;
+    font-family: "Loto", sans-serif;
 }
 
 img {
@@ -58,7 +58,7 @@ img {
     text-decoration: none;
     padding: 0 20px;
     font-size: 16px;
-    font-family: 'Lato', sans-serif;
+    font-family: "Lato", sans-serif;
     cursor: pointer;
     font-weight: bold;
 }
@@ -68,18 +68,18 @@ img {
 .mat-toolbar a:active {
     display: inline-block;
     color: white;
-    background-color: #29ABE2;
+    background-color: #29abe2;
     padding: 0 20px;
     border-radius: 5px;
     text-decoration: none;
     font-size: 16px;
-    font-family: 'Lato', sans-serif;
+    font-family: "Lato", sans-serif;
 }
 
 .menu {
     text-decoration: none;
     font-size: 16px;
-    font-family: 'Lato', sans-serif;
+    font-family: "Lato", sans-serif;
     color: black;
 }
 
@@ -89,7 +89,7 @@ img {
     color: black;
     text-decoration: none;
     font-size: 16px;
-    font-family: 'Lato', sans-serif;
+    font-family: "Lato", sans-serif;
     border: none;
     outline: none;
     box-shadow: none;
@@ -115,4 +115,9 @@ img {
     font-weight: bold;
     text-decoration: none;
     font-size: 15px;
-}
\ No newline at end of file
+}
+.profile {
+    width: 40px;
+    height: 40px;
+    border-radius: 20px;
+}
diff --git a/src/app/header/header.component.html b/src/app/header/header.component.html
index bb3c17a..2ffd31f 100644
--- a/src/app/header/header.component.html
+++ b/src/app/header/header.component.html
@@ -1,41 +1,79 @@
 <mat-sidenav-container class="sidenav-container">
-  <mat-sidenav #drawer class="sidenav" fixedInViewport="false" [attr.role]="(((isHandset | async) || (isTablet | async)) && !(isMedium |async)) ? 'dialog' : 'navigation'" [mode]="(((isHandset | async)||(isTablet |async)) && !(isMedium|async)) ? 'over' : 'side'"
-      [opened]="((!(isHandset | async) && !(isTablet | async)) || (isMedium | async))" [ngClass]="{hidden: (isMedium | async) || (!(isHandset | async) && !(isTablet | async))}">
-      <mat-toolbar class="matToolbar">
-          <button type="button" class="menu-btn" aria-label="Toggle sidenav" mat-icon-button (click)="drawer.toggle()">
-              <mat-icon aria-label="Side nav toggle icon">close</mat-icon>
-          </button>
-      </mat-toolbar>
-      <mat-nav-list>
-        <a routerLink="/" mat-list-item>HOME</a>
-        <a routerLink="/about" mat-list-item>ABOUT US</a>
-        <a routerLink="/login" *ngIf="!user" mat-list-item>LOGIN</a>
-        <a (click)="logout()" *ngIf="user" mat-list-item>LOGOUT</a>
+    <mat-sidenav
+        #drawer
+        class="sidenav"
+        fixedInViewport="false"
+        [attr.role]="((isHandset | async) || (isTablet | async)) && !(isMedium | async) ? 'dialog' : 'navigation'"
+        [mode]="((isHandset | async) || (isTablet | async)) && !(isMedium | async) ? 'over' : 'side'"
+        [opened]="(!(isHandset | async) && !(isTablet | async)) || (isMedium | async)"
+        [ngClass]="{ hidden: (isMedium | async) || (!(isHandset | async) && !(isTablet | async)) }"
+    >
+        <mat-toolbar class="matToolbar">
+            <button
+                type="button"
+                class="menu-btn"
+                aria-label="Toggle sidenav"
+                mat-icon-button
+                (click)="drawer.toggle()"
+            >
+                <mat-icon aria-label="Side nav toggle icon">close</mat-icon>
+            </button>
+        </mat-toolbar>
+        <mat-nav-list>
+            <a routerLink="/" mat-list-item>HOME</a>
+            <a routerLink="/about" mat-list-item>ABOUT US</a>
+            <a (click)="auth.loginWithRedirect()" *ngIf="!currentUser" mat-list-item>LOGIN</a>
+            <a (click)="auth.logout({ returnTo: document.location.origin })" *ngIf="currentUser" mat-list-item
+                >LOGOUT</a
+            >
 
-        <button *ngIf="user" mat-icon-button class="example-icon favorite-icon" aria-label="Example icon-button with heart icon" (click)="logout()">
-          <mat-icon style="color: white;">logout</mat-icon> 
-        </button>
-      </mat-nav-list>
-  </mat-sidenav>
-  <mat-sidenav-content>
-      <mat-toolbar class="matToolbar">
-          <button type="button" class="menu-btn" aria-label="Toggle sidenav" mat-icon-button (click)="drawer.toggle()" *ngIf="((isHandset | async) || (isTablet | async)) && !(isMedium |async)">
-              <mat-icon aria-label="Side nav toggle icon">menu</mat-icon>
-          </button>
-          <span><img src="../../assets/vcu.png"></span>
-          <!-- <span class="textHeader">Cultural Proficiency Continuum Dialogic Protocol</span> -->
-          <span class="spacer"></span>
-          <div *ngIf="(!(isHandset | async) && !(isTablet | async)) || (isMedium | async)" style="margin-right: 0; margin-left: auto;">
-            <a routerLink="/" id="home" (click)="activate('home')">HOME</a>
-            <a routerLink="/about" id="about" (click)="activate('about')">ABOUT US</a>
-            <a routerLink="/login" id="login" *ngIf="!user" (click)="activate('login')">LOGIN</a>
-            <a (click)="logout()" id="logout" *ngIf="user" (click)="activate('login')">LOGOUT</a>
-    
-            <button *ngIf="user" mat-icon-button class="example-icon favorite-icon" aria-label="Example icon-button with heart icon" (click)="logout()">
-              <mat-icon style="color: white;">logout</mat-icon> 
+            <button
+                *ngIf="currentUser"
+                mat-icon-button
+                class="example-icon favorite-icon"
+                aria-label="Example icon-button with heart icon"
+                (click)="auth.logout({ returnTo: document.location.origin })"
+            >
+                <mat-icon style="color: white">logout</mat-icon>
+            </button>
+        </mat-nav-list>
+    </mat-sidenav>
+    <mat-sidenav-content>
+        <mat-toolbar class="matToolbar">
+            <button
+                type="button"
+                class="menu-btn"
+                aria-label="Toggle sidenav"
+                mat-icon-button
+                (click)="drawer.toggle()"
+                *ngIf="((isHandset | async) || (isTablet | async)) && !(isMedium | async)"
+            >
+                <mat-icon aria-label="Side nav toggle icon">menu</mat-icon>
             </button>
-          </div>
-      </mat-toolbar>
-      <ng-content></ng-content>
-  </mat-sidenav-content>
-</mat-sidenav-container>
\ No newline at end of file
+            <span><img src="../../assets/vcu.png" /></span>
+            <span class="spacer"></span>
+            <div
+                *ngIf="(!(isHandset | async) && !(isTablet | async)) || (isMedium | async)"
+                style="margin-right: 10px; margin-left: auto"
+            >
+                <a routerLink="/" id="home" (click)="activate('home')">HOME</a>
+                <a routerLink="/about" id="about" (click)="activate('about')">ABOUT US</a>
+                <a (click)="auth.loginWithRedirect()" id="login" *ngIf="!currentUser" (click)="activate('login')"
+                    >LOGIN</a
+                >
+                <a
+                    (click)="auth.logout({ returnTo: document.location.origin })"
+                    id="logout"
+                    *ngIf="currentUser"
+                    (click)="activate('login')"
+                    >LOGOUT</a
+                >
+
+                <a *ngIf="currentUser">
+                    <img class="profile" src="{{ currentUser.picture }}" />
+                </a>
+            </div>
+        </mat-toolbar>
+        <ng-content></ng-content>
+    </mat-sidenav-content>
+</mat-sidenav-container>
diff --git a/src/app/header/header.component.spec.ts b/src/app/header/header.component.spec.ts
index 2d0479d..9348a51 100644
--- a/src/app/header/header.component.spec.ts
+++ b/src/app/header/header.component.spec.ts
@@ -1,25 +1,24 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { HeaderComponent } from './header.component';
+import { HeaderComponent } from "./header.component";
 
-describe('HeaderComponent', () => {
-  let component: HeaderComponent;
-  let fixture: ComponentFixture<HeaderComponent>;
+describe("HeaderComponent", () => {
+    let component: HeaderComponent;
+    let fixture: ComponentFixture<HeaderComponent>;
 
-  beforeEach(async(() => {
-    TestBed.configureTestingModule({
-      declarations: [ HeaderComponent ]
-    })
-    .compileComponents();
-  }));
+    beforeEach(async(() => {
+        TestBed.configureTestingModule({
+            declarations: [HeaderComponent],
+        }).compileComponents();
+    }));
 
-  beforeEach(() => {
-    fixture = TestBed.createComponent(HeaderComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
+    beforeEach(() => {
+        fixture = TestBed.createComponent(HeaderComponent);
+        component = fixture.componentInstance;
+        fixture.detectChanges();
+    });
 
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
+    it("should create", () => {
+        expect(component).toBeTruthy();
+    });
 });
diff --git a/src/app/header/header.component.ts b/src/app/header/header.component.ts
index bc56b96..bc402fc 100644
--- a/src/app/header/header.component.ts
+++ b/src/app/header/header.component.ts
@@ -1,74 +1,67 @@
-import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
-import { Component, OnInit } from '@angular/core';
-import { NavigationEnd, Router, RouterEvent } from '@angular/router';
-import { Observable } from 'rxjs';
-import { map, shareReplay } from 'rxjs/operators';
-import { Login } from '../../services/login.sevice';
+import { BreakpointObserver, Breakpoints } from "@angular/cdk/layout";
+import { Component, Inject, OnInit } from "@angular/core";
+import { Router } from "@angular/router";
+import { Observable } from "rxjs";
+import { map, shareReplay } from "rxjs/operators";
+import { Login } from "../../services/login.sevice";
+import { AuthService, User } from "@auth0/auth0-angular";
+import { DOCUMENT } from "@angular/common";
 
 @Component({
-  selector: 'app-header',
-  templateUrl: './header.component.html',
-  styleUrls: ['./header.component.css']
+    selector: "app-header",
+    templateUrl: "./header.component.html",
+    styleUrls: ["./header.component.css"],
 })
 export class HeaderComponent implements OnInit {
-  user = false;
+    currentUser: User;
+    isHandset: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Handset).pipe(
+        map((result) => result.matches),
+        shareReplay()
+    );
 
-  r
-  isHandset: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Handset)
-  .pipe(
-    map(result => result.matches),
-    shareReplay()
-  );
+    isTablet: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Tablet).pipe(
+        map((result) => result.matches),
+        shareReplay()
+    );
 
-isTablet: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Tablet)
-  .pipe(
-    map(result => result.matches),
-    shareReplay()
-  );
+    isMedium: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Medium).pipe(
+        map((result) => result.matches),
+        shareReplay()
+    );
 
-isMedium: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Medium)
-  .pipe(
-    map(result => result.matches),
-    shareReplay()
-  );
+    constructor(
+        @Inject(DOCUMENT) public document: Document,
+        public auth: AuthService,
+        private breakpointObserver: BreakpointObserver,
+        private router: Router,
+        private loginService: Login
+    ) {
+        auth.user$.subscribe((user: User) => {
+            this.currentUser = user;
+            console.log(this.currentUser);
+        });
+    }
 
-  constructor(
-    private breakpointObserver: BreakpointObserver,
-    private router: Router,
-    private loginService : Login
-  ) { }
+    ngOnInit(): void {}
 
-  ngOnInit(): void {
-    this.router.events.subscribe(event => {
-      if(event instanceof NavigationEnd) {
-        if(localStorage.getItem("user") != null || localStorage.getItem("user") != undefined){
-          this.user = true
-        }
-      }
-    })
-  }
-  
-  logout(){
-    this.loginService.logout().subscribe((res) => {
-      localStorage.removeItem("user");
-    this.router.navigateByUrl("/");
-    this.user = false
-    },(err) => {
-      localStorage.removeItem("user");
-      this.router.navigateByUrl("/");
-      this.user = false
-    })
-    
-    
-  }
+    logout() {
+        this.loginService.logout().subscribe(
+            (res) => {
+                localStorage.removeItem("token");
+                this.router.navigateByUrl("/");
+            },
+            (err) => {
+                localStorage.removeItem("token");
+                this.router.navigateByUrl("/");
+            }
+        );
+    }
 
-  activate(e){
-      (<HTMLInputElement>document.getElementById("home")).style.backgroundColor = "none";
-      (<HTMLInputElement>document.getElementById("about")).style.backgroundColor = "none";
-      (<HTMLInputElement>document.getElementById("login")).style.backgroundColor = "none";
-      (<HTMLInputElement>document.getElementById("logout")).style.backgroundColor = "none";
-      (<HTMLInputElement>document.getElementById(e)).style.backgroundColor = "#face70";
-  }
-
-  
+    activate(e) {
+        (<HTMLInputElement>document.getElementById("home")).style.backgroundColor = "none";
+        (<HTMLInputElement>document.getElementById("about")).style.backgroundColor = "none";
+        (<HTMLInputElement>document.getElementById("login")).style.backgroundColor = "none";
+        (<HTMLInputElement>document.getElementById("logout")).style.backgroundColor = "none";
+        (<HTMLInputElement>document.getElementById(e)).style.backgroundColor = "#face70";
+    }
 }
diff --git a/src/app/home-page/home-page.component.css b/src/app/home-page/home-page.component.css
index c357306..ed28b11 100644
--- a/src/app/home-page/home-page.component.css
+++ b/src/app/home-page/home-page.component.css
@@ -22,7 +22,7 @@ h1 {
 .text-label {
     font-size: 20px;
     /* font-family: Arial, Helvetica, sans-serif; */
-    font-family: 'Loto', sans-serif;
+    font-family: "Loto", sans-serif;
     font-weight: 300;
     padding-right: 10px;
     margin-right: 20%;
@@ -44,10 +44,9 @@ input::-webkit-inner-spin-button {
     margin: 0;
 }
 
-
 /* Firefox */
 
-input[type=number] {
+input[type="number"] {
     -moz-appearance: textfield;
 }
 
@@ -90,15 +89,15 @@ li {
     }
     .intro {
         margin-top: 130px;
-        font-family: 'Lato', sans-serif;
+        font-family: "Lato", sans-serif;
         color: #283618;
         font-size: 50px;
         /* text-shadow: 4px 4px 8px rgba(202, 199, 199, 0.95); */
         margin-bottom: 0 !important;
     }
     .tag {
-        font-family: 'Lato', sans-serif;
-        color: #3C096C;
+        font-family: "Lato", sans-serif;
+        color: #3c096c;
         font-size: 20px;
         font-style: italic;
         margin-top: 20px;
@@ -107,7 +106,7 @@ li {
     }
     .btn {
         color: white;
-        font-family: 'Lato', sans-serif;
+        font-family: "Lato", sans-serif;
         padding: 10px;
         border-radius: 5px;
         /* width: 200px; */
@@ -127,7 +126,7 @@ li {
     display: none !important;
 }
 
-.mat-tab-group{
+.mat-tab-group {
     position: sticky;
 }
 
@@ -138,15 +137,15 @@ li {
     }
     .intro {
         font-weight: bold;
-        font-family: 'Lato', sans-serif;
+        font-family: "Lato", sans-serif;
         font-size: 50px;
         padding: 10px;
-        color: #3C096C;
+        color: #3c096c;
         margin: 0 !important;
     }
     .tag {
-        font-family: 'Lato', sans-serif;
-        color: #3C096C;
+        font-family: "Lato", sans-serif;
+        color: #3c096c;
         font-size: 16px;
         font-style: italic;
         /* text-shadow: 4px 4px 8px rgba(202, 199, 199, 0.95); */
@@ -160,7 +159,7 @@ li {
     .btn {
         background-color: black;
         color: white;
-        font-family: 'Lato', sans-serif;
+        font-family: "Lato", sans-serif;
         padding: 2px;
         /* width: 200px; */
         border-radius: 5px;
@@ -176,15 +175,15 @@ li {
     }
     .intro {
         font-weight: bold;
-        font-family: 'Lato', sans-serif;
+        font-family: "Lato", sans-serif;
         font-size: 30px;
         padding: 10px;
-        color: #3C096C;
+        color: #3c096c;
         margin: 0 !important;
     }
     .tag {
-        font-family: 'Lato', sans-serif;
-        color: #3C096C;
+        font-family: "Lato", sans-serif;
+        color: #3c096c;
         font-size: 18px;
         font-style: italic;
         /* text-shadow: 4px 4px 8px rgba(202, 199, 199, 0.95); */
@@ -197,7 +196,7 @@ li {
     }
     .btn {
         color: white;
-        font-family: 'Lato', sans-serif;
+        font-family: "Lato", sans-serif;
         padding: 2px;
         /* width: 200px; */
         border-radius: 5px;
@@ -220,7 +219,7 @@ li {
 
 .test h2 {
     color: white;
-    font-family: 'Lato', sans-serif;
+    font-family: "Lato", sans-serif;
     margin: 0 !important;
     padding: 30px 20px;
     text-align: center;
@@ -242,11 +241,11 @@ li {
 }
 
 .vision {
-    background-color: #3C096C;
+    background-color: #3c096c;
 }
 
 .mission {
-    background-color: #00AB96;
+    background-color: #00ab96;
 }
 
 .content {
@@ -258,7 +257,7 @@ h1 {
     text-align: center;
     font-size: 40px;
     color: white;
-    font-family: 'Lato', sans-serif;
+    font-family: "Lato", sans-serif;
     text-align: center;
 }
 
@@ -267,7 +266,7 @@ p {
     margin-bottom: 40px;
     text-align: center;
     color: white;
-    font-family: 'Lato', sans-serif;
+    font-family: "Lato", sans-serif;
     text-align: center;
     font-size: 16px;
     line-height: 150%;
@@ -333,20 +332,20 @@ p {
 .blog-content h2 {
     font-size: 30px;
     color: black;
-    font-family: 'Lato', sans-serif;
+    font-family: "Lato", sans-serif;
     font-weight: bold;
     line-height: 150%;
 }
 
 .blog-content h5 {
     font-size: 20px;
-    font-family: 'Lato', sans-serif;
+    font-family: "Lato", sans-serif;
     color: rgb(190, 190, 190);
 }
 
 .blog-content p {
     height: 210px;
-    font-family: 'Lato', sans-serif;
+    font-family: "Lato", sans-serif;
     text-align: left;
     margin-top: 20px;
     line-height: 150%;
@@ -356,9 +355,9 @@ p {
 }
 
 .blog-btn {
-    background-color: #00AB96;
+    background-color: #00ab96;
     color: white;
-    font-family: 'Lato', sans-serif;
+    font-family: "Lato", sans-serif;
     margin-top: 30px;
     font-size: 15px;
 }
@@ -380,7 +379,7 @@ p {
     padding-bottom: 40px;
     color: rgb(65, 64, 64);
     margin-bottom: 0 !important;
-    font-family: 'Lato', sans-serif;
+    font-family: "Lato", sans-serif;
     font-size: 36px;
 }
 
@@ -388,13 +387,13 @@ p {
     font-size: 22px;
     text-align: center;
     font-style: italic;
-    color: #3C096C;
+    color: #3c096c;
     padding-bottom: 30px;
-    font-family: 'Lato', sans-serif;
+    font-family: "Lato", sans-serif;
 }
 
- ::ng-deep .feedback .carousel-control-next-icon,
- ::ng-deep .feedback .carousel-control-prev-icon {
+::ng-deep .feedback .carousel-control-next-icon,
+::ng-deep .feedback .carousel-control-prev-icon {
     display: none !important;
 }
 
@@ -408,11 +407,11 @@ p {
     font-size: 30px;
     line-height: 150%;
     color: black;
-    font-family: 'Lato', sans-serif;
+    font-family: "Lato", sans-serif;
 }
 
 .video-content p {
-    font-family: 'Lato', sans-serif;
+    font-family: "Lato", sans-serif;
     text-align: left;
     margin-top: 20px;
     line-height: 150%;
@@ -428,8 +427,8 @@ p {
 }
 
 .collaborations h1 {
-    font-family: 'Lato', sans-serif;
-    color: #3C096C;
+    font-family: "Lato", sans-serif;
+    color: #3c096c;
     font-size: 35px;
     /* text-shadow: 4px 4px 8px rgba(202, 199, 199, 0.95); */
     margin-bottom: 0 !important;
@@ -483,4 +482,4 @@ p {
     padding: 0 !important;
     border: none !important;
     box-shadow: black;
-}
\ No newline at end of file
+}
diff --git a/src/app/home-page/home-page.component.html b/src/app/home-page/home-page.component.html
index 205598e..1cf75de 100644
--- a/src/app/home-page/home-page.component.html
+++ b/src/app/home-page/home-page.component.html
@@ -2,24 +2,26 @@
     <div class="row home">
         <div class="overlay col-lg-7">
             <p class="intro">Cultural Proficiency Continuum Dialogic Protocol</p>
-            <p class="tag">An exploration of culturally proficient behaviors and interactions that take place within U.S. PreK-12 schools and classrooms.
+            <p class="tag">
+                An exploration of culturally proficient behaviors and interactions that take place within U.S. PreK-12
+                schools and classrooms.
             </p>
             <div class="row buttons">
-                <a routerLink="/login"><button mat-raised-button class="btn" style="background-color: #29ABE2;">Login to Begin Protocol</button></a>
+                <a routerLink="/login"
+                    ><button mat-raised-button class="btn" style="background-color: #29abe2">
+                        Login to Begin Protocol
+                    </button></a
+                >
             </div>
         </div>
         <div class="slideshow col-lg-5">
-            <mat-tab-group [selectedIndex]="selectedIndex" style="margin: 0px;">
-                <mat-tab> <img class="slides" src="../../assets/image1.jpeg"></mat-tab>
-
-                <mat-tab><img class="slides" src="../../assets/image3.jpeg"></mat-tab>
-                <mat-tab><img class="slides" src="../../assets/image4.jpeg"></mat-tab>
-
-                <mat-tab><img class="slides" src="../../assets/image5.jpeg"></mat-tab>
-
-
+            <mat-tab-group [selectedIndex]="selectedIndex" style="margin: 0px">
+                <mat-tab> <img class="slides" src="../../assets/image1.jpeg" /></mat-tab>
+                <mat-tab><img class="slides" src="../../assets/image3.jpeg" /></mat-tab>
+                <mat-tab><img class="slides" src="../../assets/image4.jpeg" /></mat-tab>
+                <mat-tab><img class="slides" src="../../assets/image5.jpeg" /></mat-tab>
             </mat-tab-group>
         </div>
     </div>
 </div>
-<app-footer></app-footer>
\ No newline at end of file
+<app-footer></app-footer>
diff --git a/src/app/home-page/home-page.component.spec.ts b/src/app/home-page/home-page.component.spec.ts
index e180332..c043eac 100644
--- a/src/app/home-page/home-page.component.spec.ts
+++ b/src/app/home-page/home-page.component.spec.ts
@@ -1,25 +1,24 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { HomePageComponent } from './home-page.component';
+import { HomePageComponent } from "./home-page.component";
 
-describe('HomePageComponent', () => {
-  let component: HomePageComponent;
-  let fixture: ComponentFixture<HomePageComponent>;
+describe("HomePageComponent", () => {
+    let component: HomePageComponent;
+    let fixture: ComponentFixture<HomePageComponent>;
 
-  beforeEach(async(() => {
-    TestBed.configureTestingModule({
-      declarations: [ HomePageComponent ]
-    })
-    .compileComponents();
-  }));
+    beforeEach(async(() => {
+        TestBed.configureTestingModule({
+            declarations: [HomePageComponent],
+        }).compileComponents();
+    }));
 
-  beforeEach(() => {
-    fixture = TestBed.createComponent(HomePageComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
+    beforeEach(() => {
+        fixture = TestBed.createComponent(HomePageComponent);
+        component = fixture.componentInstance;
+        fixture.detectChanges();
+    });
 
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
+    it("should create", () => {
+        expect(component).toBeTruthy();
+    });
 });
diff --git a/src/app/home-page/home-page.component.ts b/src/app/home-page/home-page.component.ts
index c640da1..627552a 100644
--- a/src/app/home-page/home-page.component.ts
+++ b/src/app/home-page/home-page.component.ts
@@ -1,26 +1,24 @@
-import { Component, OnInit } from '@angular/core';
+import { Component, OnInit } from "@angular/core";
 
 @Component({
-  selector: 'app-home-page',
-  templateUrl: './home-page.component.html',
-  styleUrls: ['./home-page.component.css']
+    selector: "app-home-page",
+    templateUrl: "./home-page.component.html",
+    styleUrls: ["./home-page.component.css"],
 })
 export class HomePageComponent implements OnInit {
+    selectedIndex = 0;
+    id: any;
+    constructor() {}
 
-  selectedIndex = 0;
-  id:any;
-  constructor() { }
-
-  changeCount(){
-    this.selectedIndex = this.selectedIndex + 1;
-    if(this.selectedIndex>4){
-      this.selectedIndex = 0;
+    changeCount() {
+        this.selectedIndex = this.selectedIndex + 1;
+        if (this.selectedIndex > 4) {
+            this.selectedIndex = 0;
+        }
+    }
+    ngOnInit(): void {
+        this.id = setInterval(() => {
+            this.changeCount();
+        }, 3000);
     }
-  }
-  ngOnInit(): void {
-  this.id = setInterval(() => {
-    this.changeCount(); 
-  }, 3000);
-  }
-
 }
diff --git a/src/environments/environment.ts b/src/environments/environment.ts
index 741274e..ec8bd17 100644
--- a/src/environments/environment.ts
+++ b/src/environments/environment.ts
@@ -1,8 +1,14 @@
 // const backendBaseUrl = "http://127.0.0.1:8000";
-const backendBaseUrl = "https://cpcdpvcu.bhoomee.org";
+// const backendBaseUrl = "https://cpcdpvcu.bhoomee.org";
+const backendBaseUrl = "http://ec2-3-17-75-18.us-east-2.compute.amazonaws.com";
 const apiUrl = `${backendBaseUrl}/api`;
 export const environment = {
     production: false,
+    auth0Settings: {
+        clientId: "jN2jYbC5bPdFaquIZGsxJNxkZe42KCDl",
+        callBackUrl: "http://localhost:4200",
+        logoutUrl: "http://localhost:4200",
+    },
     apiUrl: apiUrl,
     registerUrl: `${apiUrl}/register`,
     loginUrl: `${apiUrl}/login`,
-- 
GitLab


From 7cd62200a9fe475473834f0da203db65cb1a7ae0 Mon Sep 17 00:00:00 2001
From: ramesh <rdramesh2009@gmail.com>
Date: Thu, 7 Jul 2022 21:54:39 -0400
Subject: [PATCH 04/23] oauth0 integration testing success

---
 src/app/app.module.ts                         |    5 +-
 .../change-password.component.ts              |  176 +-
 .../email-password.component.ts               |  121 +-
 .../forgot-password.component.ts              |  115 +-
 src/app/graph-page/graph-page.component.ts    | 2869 ++++++++---------
 src/app/header/header.component.ts            |   19 +-
 src/app/login/login.component.ts              |    4 +-
 .../register-component.component.ts           |  123 +-
 src/app/score-page/score-page.component.ts    | 2556 ++++++++-------
 src/environments/environment.ts               |    1 +
 .../{login.sevice.ts => login.service.ts}     |   20 +-
 11 files changed, 2969 insertions(+), 3040 deletions(-)
 rename src/services/{login.sevice.ts => login.service.ts} (76%)

diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index bb32e3b..37ca0e3 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -71,6 +71,7 @@ import { ForgotPasswordComponent } from "./forgot-password/forgot-password.compo
 import { ChangePasswordComponent } from "./change-password/change-password.component";
 import { EmailPasswordComponent } from "./email-password/email-password.component";
 import { AuthModule } from "@auth0/auth0-angular";
+import { environment } from "src/environments/environment";
 
 // Note we need a separate function as it's required
 // by the AOT compiler.
@@ -152,8 +153,8 @@ export function playerFactory() {
         LottieModule.forRoot({ player: playerFactory }),
         // Import the module into the application, with configuration
         AuthModule.forRoot({
-            domain: "dev-x39z62vm.us.auth0.com",
-            clientId: "jN2jYbC5bPdFaquIZGsxJNxkZe42KCDl",
+            domain: environment.auth0Settings.domain,
+            clientId: environment.auth0Settings.clientId,
         }),
     ],
     providers: [],
diff --git a/src/app/change-password/change-password.component.ts b/src/app/change-password/change-password.component.ts
index db399eb..d0adbd4 100644
--- a/src/app/change-password/change-password.component.ts
+++ b/src/app/change-password/change-password.component.ts
@@ -1,107 +1,91 @@
-import { Component, OnInit } from '@angular/core';
-import { EmailValidator, FormBuilder, FormGroup, Validators } from '@angular/forms';
-import { MatDialog, MatDialogRef } from '@angular/material/dialog';
-import { Router } from '@angular/router';
-import Swal from 'sweetalert2';
-import { Login } from '../../services/login.sevice';
+import { Component, OnInit } from "@angular/core";
+import { EmailValidator, FormBuilder, FormGroup, Validators } from "@angular/forms";
+import { MatDialog, MatDialogRef } from "@angular/material/dialog";
+import { Router } from "@angular/router";
+import Swal from "sweetalert2";
+import { LoginService } from "../../services/login.service";
 @Component({
-  selector: 'app-change-password',
-  templateUrl: './change-password.component.html',
-  styleUrls: ['./change-password.component.css']
+    selector: "app-change-password",
+    templateUrl: "./change-password.component.html",
+    styleUrls: ["./change-password.component.css"],
 })
 export class ChangePasswordComponent implements OnInit {
-  loginForm: FormGroup;
-  hide = true;
-  constructor(private fb: FormBuilder, private router: Router, private loginService : Login) { }
+    loginForm: FormGroup;
+    hide = true;
+    constructor(private fb: FormBuilder, private router: Router, private loginService: LoginService) {}
 
-  ngOnInit(): void {
-    this.loginForm = this.fb.group({
-      new_password:["",[Validators.required]],
-      confirmPassword:["",[Validators.required]],
-    })
-    
-  }
-
-  getEmailError(){
-    if(this.loginForm.controls.username.hasError('required')){
-      return 'Required'
-    }else{
-      return ''
+    ngOnInit(): void {
+        this.loginForm = this.fb.group({
+            new_password: ["", [Validators.required]],
+            confirmPassword: ["", [Validators.required]],
+        });
     }
-  }
 
-  getPasswordError(){
-    if(this.loginForm.controls.new_password.hasError('required')){
-      return 'Required'
-    }else{
-      return ''
+    getEmailError() {
+        if (this.loginForm.controls.username.hasError("required")) {
+            return "Required";
+        } else {
+            return "";
+        }
     }
-  }
-
-  
-  login(){ 
-    if(!this.loginForm.valid){
 
-      Swal.fire({
-        text: "Please enter all the fields in the right format.",
-        icon: "error"
-      }).then((res) => {
-      }) 
+    getPasswordError() {
+        if (this.loginForm.controls.new_password.hasError("required")) {
+            return "Required";
+        } else {
+            return "";
+        }
     }
-    else{
-      if(this.loginForm.get("new_password").value != this.loginForm.get("confirmPassword").value){
-        Swal.fire({
-          text: "Passwords don't match!",
-          icon: "error"
-        }).then((res) => {
-        }) 
-      }
-      else{
-      this.loginForm.removeControl('confirmPassword');
-        this.loginService.changePassword(this.loginForm.value).subscribe((res) => {
-          Swal.fire({
-            text: "Password Changed Successfully!",
-            icon: "success"
-          }).then((res) => {
-            this.loginService.checkStatus().subscribe((res) => {
-
-              if(res[0] == undefined){
-                this.router.navigateByUrl("/preSurvey")
-              }
-              else{
-                if(res[0]["postsurveystatus"] == true){
-                  this.router.navigateByUrl("/final")
-                }
-                else if(res[0]["scoresstatus"] == true){
-                  this.router.navigateByUrl("/score")
-                }
-                else if(res[0]["finalfeedbackstatus"] == true){
-                  this.router.navigateByUrl("/result")
-                }
-                else if(res[0]["cpcqstatus"] == true){
-                  this.router.navigateByUrl("/finalFeedback")
-                }
-                else if(res[0]["responsesstatus"] == true){
-                  this.router.navigateByUrl("/unpacking")
-                }
-                else if(res[0]["presurveystatus"] == true){
-                  this.router.navigateByUrl("/dashboard")
-                }
-              }
-            })
-          }) 
-  
-        },(err) => {
-          
-          Swal.fire({
-            text: "Username/Email already exists",
-            icon: "error"
-          }).then((res) => {
-          }) 
-        })
-      }
-          
-  }
-  }
 
+    login() {
+        if (!this.loginForm.valid) {
+            Swal.fire({
+                text: "Please enter all the fields in the right format.",
+                icon: "error",
+            }).then((res) => {});
+        } else {
+            if (this.loginForm.get("new_password").value != this.loginForm.get("confirmPassword").value) {
+                Swal.fire({
+                    text: "Passwords don't match!",
+                    icon: "error",
+                }).then((res) => {});
+            } else {
+                this.loginForm.removeControl("confirmPassword");
+                this.loginService.changePassword(this.loginForm.value).subscribe(
+                    (res) => {
+                        Swal.fire({
+                            text: "Password Changed Successfully!",
+                            icon: "success",
+                        }).then((res) => {
+                            this.loginService.checkStatus().subscribe((res) => {
+                                if (res[0] == undefined) {
+                                    this.router.navigateByUrl("/preSurvey");
+                                } else {
+                                    if (res[0]["postsurveystatus"] == true) {
+                                        this.router.navigateByUrl("/final");
+                                    } else if (res[0]["scoresstatus"] == true) {
+                                        this.router.navigateByUrl("/score");
+                                    } else if (res[0]["finalfeedbackstatus"] == true) {
+                                        this.router.navigateByUrl("/result");
+                                    } else if (res[0]["cpcqstatus"] == true) {
+                                        this.router.navigateByUrl("/finalFeedback");
+                                    } else if (res[0]["responsesstatus"] == true) {
+                                        this.router.navigateByUrl("/unpacking");
+                                    } else if (res[0]["presurveystatus"] == true) {
+                                        this.router.navigateByUrl("/dashboard");
+                                    }
+                                }
+                            });
+                        });
+                    },
+                    (err) => {
+                        Swal.fire({
+                            text: "Username/Email already exists",
+                            icon: "error",
+                        }).then((res) => {});
+                    }
+                );
+            }
+        }
+    }
 }
diff --git a/src/app/email-password/email-password.component.ts b/src/app/email-password/email-password.component.ts
index a425afe..11961b4 100644
--- a/src/app/email-password/email-password.component.ts
+++ b/src/app/email-password/email-password.component.ts
@@ -1,76 +1,69 @@
-import { Component, OnInit } from '@angular/core';
-import { EmailValidator, FormBuilder, FormGroup, Validators } from '@angular/forms';
-import { MatDialog, MatDialogRef } from '@angular/material/dialog';
-import { Router } from '@angular/router';
-import Swal from 'sweetalert2';
-import { Login } from '../../services/login.sevice';
+import { Component, OnInit } from "@angular/core";
+import { EmailValidator, FormBuilder, FormGroup, Validators } from "@angular/forms";
+import { MatDialog, MatDialogRef } from "@angular/material/dialog";
+import { Router } from "@angular/router";
+import Swal from "sweetalert2";
+import { LoginService } from "../../services/login.service";
 @Component({
-  selector: 'app-email-password',
-  templateUrl: './email-password.component.html',
-  styleUrls: ['./email-password.component.css']
+    selector: "app-email-password",
+    templateUrl: "./email-password.component.html",
+    styleUrls: ["./email-password.component.css"],
 })
 export class EmailPasswordComponent implements OnInit {
-  forgotForm: FormGroup;
-  hide = true;
-  constructor(private fb: FormBuilder, private router: Router, private loginService : Login) { }
+    forgotForm: FormGroup;
+    hide = true;
+    constructor(private fb: FormBuilder, private router: Router, private loginService: LoginService) {}
 
-  ngOnInit(): void {
-    this.forgotForm = this.fb.group({
-      password:["",[ Validators.required]],
-      username:[""]
-
-    })
-    
-  }
-
-  getEmailError(){
-    if(this.forgotForm.controls.username.hasError('required')){
-      return 'Required'
-    }else{
-      return ''
+    ngOnInit(): void {
+        this.forgotForm = this.fb.group({
+            password: ["", [Validators.required]],
+            username: [""],
+        });
     }
-  }
 
-  getPasswordError(){
-    if(this.forgotForm.controls.password.hasError('required')){
-      return 'Required'
-    }else{
-      return ''
+    getEmailError() {
+        if (this.forgotForm.controls.username.hasError("required")) {
+            return "Required";
+        } else {
+            return "";
+        }
     }
-  }
-
-  
-  login(){ 
-    if(!this.forgotForm.valid){
 
-      Swal.fire({
-        text: "Please enter all the fields in the right format.",
-        icon: "error"
-      }).then((res) => {
-      }) 
+    getPasswordError() {
+        if (this.forgotForm.controls.password.hasError("required")) {
+            return "Required";
+        } else {
+            return "";
+        }
     }
-    else{
-      this.forgotForm.get("username").setValue(localStorage.getItem("username"));
-      this.loginService.login(this.forgotForm.value).subscribe((res) => {
-        localStorage.setItem("user",res["token"]);
-        // this.router.navigateByUrl("/changePassword")
 
-        Swal.fire({
-                  text: "Verification Successful!",
-                  icon: "success"
-                }).then((res) => {
-                  this.router.navigateByUrl("/changePassword")
-        })
-
-      },(err) => {
-        
-        Swal.fire({
-          text: "Username and email do not match.",
-          icon: "error"
-        }).then((res) => {
-        }) 
-      })    
-  }
-  }
+    login() {
+        if (!this.forgotForm.valid) {
+            Swal.fire({
+                text: "Please enter all the fields in the right format.",
+                icon: "error",
+            }).then((res) => {});
+        } else {
+            this.forgotForm.get("username").setValue(localStorage.getItem("username"));
+            this.loginService.login(this.forgotForm.value).subscribe(
+                (res) => {
+                    localStorage.setItem("user", res["token"]);
+                    // this.router.navigateByUrl("/changePassword")
 
+                    Swal.fire({
+                        text: "Verification Successful!",
+                        icon: "success",
+                    }).then((res) => {
+                        this.router.navigateByUrl("/changePassword");
+                    });
+                },
+                (err) => {
+                    Swal.fire({
+                        text: "Username and email do not match.",
+                        icon: "error",
+                    }).then((res) => {});
+                }
+            );
+        }
+    }
 }
diff --git a/src/app/forgot-password/forgot-password.component.ts b/src/app/forgot-password/forgot-password.component.ts
index e750035..78f2ed6 100644
--- a/src/app/forgot-password/forgot-password.component.ts
+++ b/src/app/forgot-password/forgot-password.component.ts
@@ -1,72 +1,65 @@
-import { Component, OnInit } from '@angular/core';
-import { EmailValidator, FormBuilder, FormGroup, Validators } from '@angular/forms';
-import { MatDialog, MatDialogRef } from '@angular/material/dialog';
-import { Router } from '@angular/router';
-import Swal from 'sweetalert2';
-import { Login } from '../../services/login.sevice';
+import { Component, OnInit } from "@angular/core";
+import { EmailValidator, FormBuilder, FormGroup, Validators } from "@angular/forms";
+import { MatDialog, MatDialogRef } from "@angular/material/dialog";
+import { Router } from "@angular/router";
+import Swal from "sweetalert2";
+import { LoginService } from "../../services/login.service";
 @Component({
-  selector: 'app-forgot-password',
-  templateUrl: './forgot-password.component.html',
-  styleUrls: ['./forgot-password.component.css']
+    selector: "app-forgot-password",
+    templateUrl: "./forgot-password.component.html",
+    styleUrls: ["./forgot-password.component.css"],
 })
 export class ForgotPasswordComponent implements OnInit {
-  forgotForm: FormGroup;
-  hide = true;
-  constructor(private fb: FormBuilder, private router: Router, private loginService : Login) { }
+    forgotForm: FormGroup;
+    hide = true;
+    constructor(private fb: FormBuilder, private router: Router, private loginService: LoginService) {}
 
-  ngOnInit(): void {
-    this.forgotForm = this.fb.group({
-      username:["",[ Validators.required]],
-
-    })
-    
-  }
-
-  getEmailError(){
-    if(this.forgotForm.controls.username.hasError('required')){
-      return 'Required'
-    }else{
-      return ''
+    ngOnInit(): void {
+        this.forgotForm = this.fb.group({
+            username: ["", [Validators.required]],
+        });
     }
-  }
 
-  getPasswordError(){
-    if(this.forgotForm.controls.password.hasError('required')){
-      return 'Required'
-    }else{
-      return ''
+    getEmailError() {
+        if (this.forgotForm.controls.username.hasError("required")) {
+            return "Required";
+        } else {
+            return "";
+        }
     }
-  }
-
-  
-  login(){ 
-    if(!this.forgotForm.valid){
 
-      Swal.fire({
-        text: "Please enter all the fields in the right format.",
-        icon: "error"
-      }).then((res) => {
-      }) 
+    getPasswordError() {
+        if (this.forgotForm.controls.password.hasError("required")) {
+            return "Required";
+        } else {
+            return "";
+        }
     }
-    else{
-      this.loginService.forgotpassword(this.forgotForm.value).subscribe((res) => {
-        localStorage.setItem("username",this.forgotForm.get("username").value);
-        Swal.fire({
-                  text: "e-mail sent successfully!",
-                  icon: "success"
-                }).then((res) => {
-                  this.router.navigateByUrl("/emailPass")
-        })
-
-      },(err) => {
-        
-        Swal.fire({
-          text: "Username/e-mail not found!",
-          icon: "error"
-        }).then((res) => {
-        }) 
-      })    
-  }
-  }
 
+    login() {
+        if (!this.forgotForm.valid) {
+            Swal.fire({
+                text: "Please enter all the fields in the right format.",
+                icon: "error",
+            }).then((res) => {});
+        } else {
+            this.loginService.forgotpassword(this.forgotForm.value).subscribe(
+                (res) => {
+                    localStorage.setItem("username", this.forgotForm.get("username").value);
+                    Swal.fire({
+                        text: "e-mail sent successfully!",
+                        icon: "success",
+                    }).then((res) => {
+                        this.router.navigateByUrl("/emailPass");
+                    });
+                },
+                (err) => {
+                    Swal.fire({
+                        text: "Username/e-mail not found!",
+                        icon: "error",
+                    }).then((res) => {});
+                }
+            );
+        }
+    }
 }
diff --git a/src/app/graph-page/graph-page.component.ts b/src/app/graph-page/graph-page.component.ts
index a783fef..58c1af6 100644
--- a/src/app/graph-page/graph-page.component.ts
+++ b/src/app/graph-page/graph-page.component.ts
@@ -1,1524 +1,1489 @@
-import { Component, OnInit } from '@angular/core';
-import { AfterViewInit, ElementRef, ViewChild } from '@angular/core';
-import { Router } from '@angular/router';
+import { Component, OnInit } from "@angular/core";
+import { AfterViewInit, ElementRef, ViewChild } from "@angular/core";
+import { Router } from "@angular/router";
 import { FirstForm } from "../../services/firstForm.service";
-import { FormBuilder, FormGroup, Validators } from '@angular/forms';
-import Swal from 'sweetalert2';
-import { ThemePalette } from '@angular/material/core';
-import { ProgressBarMode } from '@angular/material/progress-bar';
+import { FormBuilder, FormGroup, Validators } from "@angular/forms";
+import Swal from "sweetalert2";
+import { ThemePalette } from "@angular/material/core";
+import { ProgressBarMode } from "@angular/material/progress-bar";
 declare var $: any;
-import * as RecordRTC from 'recordrtc';
-import { DomSanitizer } from '@angular/platform-browser';
-import { MatDialog, MAT_DIALOG_DATA } from '@angular/material/dialog';
-import { DialogFormComponent } from '../cpcq-form/dialog-form/dialog-form.component'
+import * as RecordRTC from "recordrtc";
+import { DomSanitizer } from "@angular/platform-browser";
+import { MatDialog, MAT_DIALOG_DATA } from "@angular/material/dialog";
+import { DialogFormComponent } from "../cpcq-form/dialog-form/dialog-form.component";
 
-import { CPCQService } from '../../services/cpcq.service';
+import { CPCQService } from "../../services/cpcq.service";
 
-import { Login } from '../../services/login.sevice';
+import { LoginService } from "../../services/login.service";
 export interface DialogData {
-  animal: 'panda' | 'unicorn' | 'lion';
-  status;
-  result;
+    animal: "panda" | "unicorn" | "lion";
+    status;
+    result;
 }
 import {
-  ApexAxisChartSeries,
-  ApexChart,
-  ChartComponent,
-  ApexDataLabels,
-  ApexPlotOptions,
-  ApexYAxis,
-  ApexTitleSubtitle,
-  ApexXAxis,
-  ApexFill
+    ApexAxisChartSeries,
+    ApexChart,
+    ChartComponent,
+    ApexDataLabels,
+    ApexPlotOptions,
+    ApexYAxis,
+    ApexTitleSubtitle,
+    ApexXAxis,
+    ApexFill,
 } from "ng-apexcharts";
 
 export type ChartOptions = {
-  series: ApexAxisChartSeries;
-  chart: ApexChart;
-  dataLabels: ApexDataLabels;
-  plotOptions: ApexPlotOptions;
-  yaxis: ApexYAxis;
-  xaxis: ApexXAxis;
-  fill: ApexFill;
-  title: ApexTitleSubtitle;
+    series: ApexAxisChartSeries;
+    chart: ApexChart;
+    dataLabels: ApexDataLabels;
+    plotOptions: ApexPlotOptions;
+    yaxis: ApexYAxis;
+    xaxis: ApexXAxis;
+    fill: ApexFill;
+    title: ApexTitleSubtitle;
 };
 @Component({
-  selector: 'app-graph-page',
-  templateUrl: './graph-page.component.html',
-  styleUrls: ['./graph-page.component.css']
+    selector: "app-graph-page",
+    templateUrl: "./graph-page.component.html",
+    styleUrls: ["./graph-page.component.css"],
 })
 export class GraphPageComponent implements OnInit {
-  firstForm: FormGroup;
-  responseList: any;
-  loaded = false;
-
-  questionArray = [["Enter First Name", "text"], ["Enter Last Name", "text"], ["Enter Age", "number"]];
-  statusCheck = false;
-  buttonClick = false;
-
-  sliderValue = 0;
-
-  selectedIndex = 0;
-
-  color: ThemePalette = 'primary';
-  mode: ProgressBarMode = 'buffer';
-  value1 = 50;
-  bufferValue = 100;
-
-  formValues = [];
-  attributes = ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"];
-  columnHeadings = ["culturalDestructivenessresponse", "culturalIncapacityresponse", "culturalBlindnessresponse", "culturalPreCompetenceresponse", "culturalCompetenceresponse", "culturalProficiencyresponse"]
-  columnHeadings1 = ["Cultural Destructiveness","Cultural Incapacity","Cultural Blindness","Cultural PreCompetence","Cultural Competence","Cultural Proficiency"]
-
-
-  rowLetters = [["D", 'C', 'B', 'A', 'F', 'E'], ['E', 'A', 'F', 'D', 'B', 'C'], ['F', 'E', 'B', 'C', 'D', 'A'], ['E', 'A', 'B', 'D', 'C', 'F'], ['D', 'C', 'B', 'E', 'A', 'F']];
-  boldList = [[]];
-  randomList = [[]];
-  finalList = [[]];
-  finalList1 = [];
-  attitudeForm: FormGroup;
-  empathyForm: FormGroup;
-  policyForm: FormGroup;
-
-  finalFeedbackForm: FormGroup;
-
-
-
-
-  //arrays of data getting from the backend
-
-  attitude: any;
-  empathy: any;
-  policy: any;
-  professionalism: any;
-  teachingPractice: any;
-  wordDescription: any;
-  unpackedCount = 0;
-
-  startTime: any;
-  endTime: any;
-  durationTime: any;
-
-  @ViewChild('changeDiv') changeDiv: ElementRef;
-  @ViewChild('changeDiv1') changeDiv1: ElementRef;
-  @ViewChild('changeDiv2') changeDiv2: ElementRef;
-  @ViewChild('changeDiv3') changeDiv3: ElementRef;
-  @ViewChild('changeDiv4') changeDiv4: ElementRef;
-  @ViewChild('changeDiv5') changeDiv5: ElementRef;
-  @ViewChild('changeDiv6') changeDiv6: ElementRef;
-  @ViewChild('changeDiv7') changeDiv7: ElementRef;
-  @ViewChild('changeDiv8') changeDiv8: ElementRef;
-  @ViewChild('changeDiv9') changeDiv9: ElementRef;
-  @ViewChild('changeDiv10') changeDiv10: ElementRef;
-  @ViewChild('changeDiv11') changeDiv11: ElementRef;
-  @ViewChild('changeDiv12') changeDiv12: ElementRef;
-  @ViewChild('changeDiv13') changeDiv13: ElementRef;
-  @ViewChild('changeDiv14') changeDiv14: ElementRef;
-  @ViewChild('changeDiv15') changeDiv15: ElementRef;
-  @ViewChild('changeDiv16') changeDiv16: ElementRef;
-  @ViewChild('changeDiv17') changeDiv17: ElementRef;
-  @ViewChild('changeDiv18') changeDiv18: ElementRef;
-  @ViewChild('changeDiv19') changeDiv19: ElementRef;
-  @ViewChild('changeDiv20') changeDiv20: ElementRef;
-  @ViewChild('changeDiv21') changeDiv21: ElementRef;
-  @ViewChild('changeDiv22') changeDiv22: ElementRef;
-  @ViewChild('changeDiv23') changeDiv23: ElementRef;
-  @ViewChild('changeDiv24') changeDiv24: ElementRef;
-  @ViewChild('changeDiv25') changeDiv25: ElementRef;
-  @ViewChild('changeDiv26') changeDiv26: ElementRef;
-  @ViewChild('changeDiv27') changeDiv27: ElementRef;
-  @ViewChild('changeDiv28') changeDiv28: ElementRef;
-  @ViewChild('changeDiv29') changeDiv29: ElementRef;
-
-
-
-  @ViewChild("chart") chart: ChartComponent;
-  public chartOptions: Partial<ChartOptions>;
-
-
-
-
-
-  ngAfterViewInit() {
-
-
-
-  }
-
-  sliderFunction1() {
-    if (this.sliderValue == 1) {
-      this.changeDiv.nativeElement.style.fontSize = "15px";
-      this.changeDiv1.nativeElement.style.fontSize = "15px";
-      this.changeDiv2.nativeElement.style.fontSize = "15px";
-      this.changeDiv3.nativeElement.style.fontSize = "15px";
-      this.changeDiv4.nativeElement.style.fontSize = "15px";
-      this.changeDiv5.nativeElement.style.fontSize = "15px";
-      this.changeDiv6.nativeElement.style.fontSize = "15px";
-      this.changeDiv7.nativeElement.style.fontSize = "15px";
-      this.changeDiv8.nativeElement.style.fontSize = "15px";
-      this.changeDiv9.nativeElement.style.fontSize = "15px";
-      this.changeDiv10.nativeElement.style.fontSize = "15px";
-      this.changeDiv11.nativeElement.style.fontSize = "15px";
-      this.changeDiv12.nativeElement.style.fontSize = "15px";
-      this.changeDiv13.nativeElement.style.fontSize = "15px";
-      this.changeDiv14.nativeElement.style.fontSize = "15px";
-      this.changeDiv15.nativeElement.style.fontSize = "15px";
-      this.changeDiv16.nativeElement.style.fontSize = "15px";
-      this.changeDiv17.nativeElement.style.fontSize = "15px";
-      this.changeDiv18.nativeElement.style.fontSize = "15px";
-      this.changeDiv19.nativeElement.style.fontSize = "15px";
-      this.changeDiv20.nativeElement.style.fontSize = "15px";
-      this.changeDiv21.nativeElement.style.fontSize = "15px";
-      this.changeDiv22.nativeElement.style.fontSize = "15px";
-      this.changeDiv23.nativeElement.style.fontSize = "15px";
-      this.changeDiv24.nativeElement.style.fontSize = "15px";
-      this.changeDiv25.nativeElement.style.fontSize = "15px";
-      this.changeDiv26.nativeElement.style.fontSize = "15px";
-      this.changeDiv27.nativeElement.style.fontSize = "15px";
-      this.changeDiv28.nativeElement.style.fontSize = "15px";
-      this.changeDiv29.nativeElement.style.fontSize = "15px";
-
-    }
-    else if (this.sliderValue == 2) {
-      this.changeDiv.nativeElement.style.fontSize = "20px";
-      this.changeDiv1.nativeElement.style.fontSize = "20px";
-      this.changeDiv2.nativeElement.style.fontSize = "20px";
-      this.changeDiv3.nativeElement.style.fontSize = "20px";
-      this.changeDiv4.nativeElement.style.fontSize = "20px";
-      this.changeDiv5.nativeElement.style.fontSize = "20px";
-      this.changeDiv6.nativeElement.style.fontSize = "20px";
-      this.changeDiv7.nativeElement.style.fontSize = "20px";
-      this.changeDiv8.nativeElement.style.fontSize = "20px";
-      this.changeDiv9.nativeElement.style.fontSize = "20px";
-      this.changeDiv10.nativeElement.style.fontSize = "20px";
-      this.changeDiv11.nativeElement.style.fontSize = "20px";
-      this.changeDiv12.nativeElement.style.fontSize = "20px";
-      this.changeDiv13.nativeElement.style.fontSize = "20px";
-      this.changeDiv14.nativeElement.style.fontSize = "20px";
-      this.changeDiv15.nativeElement.style.fontSize = "20px";
-      this.changeDiv16.nativeElement.style.fontSize = "20px";
-      this.changeDiv17.nativeElement.style.fontSize = "20px";
-      this.changeDiv18.nativeElement.style.fontSize = "20px";
-      this.changeDiv19.nativeElement.style.fontSize = "20px";
-      this.changeDiv20.nativeElement.style.fontSize = "20px";
-      this.changeDiv21.nativeElement.style.fontSize = "20px";
-      this.changeDiv22.nativeElement.style.fontSize = "20px";
-      this.changeDiv23.nativeElement.style.fontSize = "20px";
-      this.changeDiv24.nativeElement.style.fontSize = "20px";
-      this.changeDiv25.nativeElement.style.fontSize = "20px";
-      this.changeDiv26.nativeElement.style.fontSize = "20px";
-      this.changeDiv27.nativeElement.style.fontSize = "20px";
-      this.changeDiv28.nativeElement.style.fontSize = "20px";
-      this.changeDiv29.nativeElement.style.fontSize = "20px";
-    }
-    else if (this.sliderValue == 3) {
-      this.changeDiv.nativeElement.style.fontSize = "22px";
-      this.changeDiv1.nativeElement.style.fontSize = "22px";
-      this.changeDiv2.nativeElement.style.fontSize = "22px";
-      this.changeDiv3.nativeElement.style.fontSize = "22px";
-      this.changeDiv4.nativeElement.style.fontSize = "22px";
-      this.changeDiv5.nativeElement.style.fontSize = "22px";
-      this.changeDiv6.nativeElement.style.fontSize = "22px";
-      this.changeDiv7.nativeElement.style.fontSize = "22px";
-      this.changeDiv8.nativeElement.style.fontSize = "22px";
-      this.changeDiv9.nativeElement.style.fontSize = "22px";
-      this.changeDiv10.nativeElement.style.fontSize = "22px";
-      this.changeDiv11.nativeElement.style.fontSize = "22px";
-      this.changeDiv12.nativeElement.style.fontSize = "22px";
-      this.changeDiv13.nativeElement.style.fontSize = "22px";
-      this.changeDiv14.nativeElement.style.fontSize = "22px";
-      this.changeDiv15.nativeElement.style.fontSize = "22px";
-      this.changeDiv16.nativeElement.style.fontSize = "22px";
-      this.changeDiv17.nativeElement.style.fontSize = "22px";
-      this.changeDiv18.nativeElement.style.fontSize = "22px";
-      this.changeDiv19.nativeElement.style.fontSize = "22px";
-      this.changeDiv20.nativeElement.style.fontSize = "22px";
-      this.changeDiv21.nativeElement.style.fontSize = "22px";
-      this.changeDiv22.nativeElement.style.fontSize = "22px";
-      this.changeDiv23.nativeElement.style.fontSize = "22px";
-      this.changeDiv24.nativeElement.style.fontSize = "22px";
-      this.changeDiv25.nativeElement.style.fontSize = "22px";
-      this.changeDiv26.nativeElement.style.fontSize = "22px";
-      this.changeDiv27.nativeElement.style.fontSize = "22px";
-      this.changeDiv28.nativeElement.style.fontSize = "22px";
-      this.changeDiv29.nativeElement.style.fontSize = "22px";
-    }
-    else if (this.sliderValue == 4) {
-      this.changeDiv.nativeElement.style.fontSize = "25px";
-      this.changeDiv1.nativeElement.style.fontSize = "25px";
-      this.changeDiv2.nativeElement.style.fontSize = "25px";
-      this.changeDiv3.nativeElement.style.fontSize = "25px";
-      this.changeDiv4.nativeElement.style.fontSize = "25px";
-      this.changeDiv5.nativeElement.style.fontSize = "25px";
-      this.changeDiv6.nativeElement.style.fontSize = "25px";
-      this.changeDiv7.nativeElement.style.fontSize = "25px";
-      this.changeDiv8.nativeElement.style.fontSize = "25px";
-      this.changeDiv9.nativeElement.style.fontSize = "25px";
-      this.changeDiv10.nativeElement.style.fontSize = "25px";
-      this.changeDiv11.nativeElement.style.fontSize = "25px";
-      this.changeDiv12.nativeElement.style.fontSize = "25px";
-      this.changeDiv13.nativeElement.style.fontSize = "25px";
-      this.changeDiv14.nativeElement.style.fontSize = "25px";
-      this.changeDiv15.nativeElement.style.fontSize = "25px";
-      this.changeDiv16.nativeElement.style.fontSize = "25px";
-      this.changeDiv17.nativeElement.style.fontSize = "25px";
-      this.changeDiv18.nativeElement.style.fontSize = "25px";
-      this.changeDiv19.nativeElement.style.fontSize = "25px";
-      this.changeDiv20.nativeElement.style.fontSize = "25px";
-      this.changeDiv21.nativeElement.style.fontSize = "25px";
-      this.changeDiv22.nativeElement.style.fontSize = "25px";
-      this.changeDiv23.nativeElement.style.fontSize = "25px";
-      this.changeDiv24.nativeElement.style.fontSize = "25px";
-      this.changeDiv25.nativeElement.style.fontSize = "25px";
-      this.changeDiv26.nativeElement.style.fontSize = "25px";
-      this.changeDiv27.nativeElement.style.fontSize = "25px";
-      this.changeDiv28.nativeElement.style.fontSize = "25px";
-      this.changeDiv29.nativeElement.style.fontSize = "25px";
+    firstForm: FormGroup;
+    responseList: any;
+    loaded = false;
+
+    questionArray = [
+        ["Enter First Name", "text"],
+        ["Enter Last Name", "text"],
+        ["Enter Age", "number"],
+    ];
+    statusCheck = false;
+    buttonClick = false;
+
+    sliderValue = 0;
+
+    selectedIndex = 0;
+
+    color: ThemePalette = "primary";
+    mode: ProgressBarMode = "buffer";
+    value1 = 50;
+    bufferValue = 100;
+
+    formValues = [];
+    attributes = ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"];
+    columnHeadings = [
+        "culturalDestructivenessresponse",
+        "culturalIncapacityresponse",
+        "culturalBlindnessresponse",
+        "culturalPreCompetenceresponse",
+        "culturalCompetenceresponse",
+        "culturalProficiencyresponse",
+    ];
+    columnHeadings1 = [
+        "Cultural Destructiveness",
+        "Cultural Incapacity",
+        "Cultural Blindness",
+        "Cultural PreCompetence",
+        "Cultural Competence",
+        "Cultural Proficiency",
+    ];
+
+    rowLetters = [
+        ["D", "C", "B", "A", "F", "E"],
+        ["E", "A", "F", "D", "B", "C"],
+        ["F", "E", "B", "C", "D", "A"],
+        ["E", "A", "B", "D", "C", "F"],
+        ["D", "C", "B", "E", "A", "F"],
+    ];
+    boldList = [[]];
+    randomList = [[]];
+    finalList = [[]];
+    finalList1 = [];
+    attitudeForm: FormGroup;
+    empathyForm: FormGroup;
+    policyForm: FormGroup;
+
+    finalFeedbackForm: FormGroup;
+
+    //arrays of data getting from the backend
+
+    attitude: any;
+    empathy: any;
+    policy: any;
+    professionalism: any;
+    teachingPractice: any;
+    wordDescription: any;
+    unpackedCount = 0;
+
+    startTime: any;
+    endTime: any;
+    durationTime: any;
+
+    @ViewChild("changeDiv") changeDiv: ElementRef;
+    @ViewChild("changeDiv1") changeDiv1: ElementRef;
+    @ViewChild("changeDiv2") changeDiv2: ElementRef;
+    @ViewChild("changeDiv3") changeDiv3: ElementRef;
+    @ViewChild("changeDiv4") changeDiv4: ElementRef;
+    @ViewChild("changeDiv5") changeDiv5: ElementRef;
+    @ViewChild("changeDiv6") changeDiv6: ElementRef;
+    @ViewChild("changeDiv7") changeDiv7: ElementRef;
+    @ViewChild("changeDiv8") changeDiv8: ElementRef;
+    @ViewChild("changeDiv9") changeDiv9: ElementRef;
+    @ViewChild("changeDiv10") changeDiv10: ElementRef;
+    @ViewChild("changeDiv11") changeDiv11: ElementRef;
+    @ViewChild("changeDiv12") changeDiv12: ElementRef;
+    @ViewChild("changeDiv13") changeDiv13: ElementRef;
+    @ViewChild("changeDiv14") changeDiv14: ElementRef;
+    @ViewChild("changeDiv15") changeDiv15: ElementRef;
+    @ViewChild("changeDiv16") changeDiv16: ElementRef;
+    @ViewChild("changeDiv17") changeDiv17: ElementRef;
+    @ViewChild("changeDiv18") changeDiv18: ElementRef;
+    @ViewChild("changeDiv19") changeDiv19: ElementRef;
+    @ViewChild("changeDiv20") changeDiv20: ElementRef;
+    @ViewChild("changeDiv21") changeDiv21: ElementRef;
+    @ViewChild("changeDiv22") changeDiv22: ElementRef;
+    @ViewChild("changeDiv23") changeDiv23: ElementRef;
+    @ViewChild("changeDiv24") changeDiv24: ElementRef;
+    @ViewChild("changeDiv25") changeDiv25: ElementRef;
+    @ViewChild("changeDiv26") changeDiv26: ElementRef;
+    @ViewChild("changeDiv27") changeDiv27: ElementRef;
+    @ViewChild("changeDiv28") changeDiv28: ElementRef;
+    @ViewChild("changeDiv29") changeDiv29: ElementRef;
+
+    @ViewChild("chart") chart: ChartComponent;
+    public chartOptions: Partial<ChartOptions>;
+
+    ngAfterViewInit() {}
+
+    sliderFunction1() {
+        if (this.sliderValue == 1) {
+            this.changeDiv.nativeElement.style.fontSize = "15px";
+            this.changeDiv1.nativeElement.style.fontSize = "15px";
+            this.changeDiv2.nativeElement.style.fontSize = "15px";
+            this.changeDiv3.nativeElement.style.fontSize = "15px";
+            this.changeDiv4.nativeElement.style.fontSize = "15px";
+            this.changeDiv5.nativeElement.style.fontSize = "15px";
+            this.changeDiv6.nativeElement.style.fontSize = "15px";
+            this.changeDiv7.nativeElement.style.fontSize = "15px";
+            this.changeDiv8.nativeElement.style.fontSize = "15px";
+            this.changeDiv9.nativeElement.style.fontSize = "15px";
+            this.changeDiv10.nativeElement.style.fontSize = "15px";
+            this.changeDiv11.nativeElement.style.fontSize = "15px";
+            this.changeDiv12.nativeElement.style.fontSize = "15px";
+            this.changeDiv13.nativeElement.style.fontSize = "15px";
+            this.changeDiv14.nativeElement.style.fontSize = "15px";
+            this.changeDiv15.nativeElement.style.fontSize = "15px";
+            this.changeDiv16.nativeElement.style.fontSize = "15px";
+            this.changeDiv17.nativeElement.style.fontSize = "15px";
+            this.changeDiv18.nativeElement.style.fontSize = "15px";
+            this.changeDiv19.nativeElement.style.fontSize = "15px";
+            this.changeDiv20.nativeElement.style.fontSize = "15px";
+            this.changeDiv21.nativeElement.style.fontSize = "15px";
+            this.changeDiv22.nativeElement.style.fontSize = "15px";
+            this.changeDiv23.nativeElement.style.fontSize = "15px";
+            this.changeDiv24.nativeElement.style.fontSize = "15px";
+            this.changeDiv25.nativeElement.style.fontSize = "15px";
+            this.changeDiv26.nativeElement.style.fontSize = "15px";
+            this.changeDiv27.nativeElement.style.fontSize = "15px";
+            this.changeDiv28.nativeElement.style.fontSize = "15px";
+            this.changeDiv29.nativeElement.style.fontSize = "15px";
+        } else if (this.sliderValue == 2) {
+            this.changeDiv.nativeElement.style.fontSize = "20px";
+            this.changeDiv1.nativeElement.style.fontSize = "20px";
+            this.changeDiv2.nativeElement.style.fontSize = "20px";
+            this.changeDiv3.nativeElement.style.fontSize = "20px";
+            this.changeDiv4.nativeElement.style.fontSize = "20px";
+            this.changeDiv5.nativeElement.style.fontSize = "20px";
+            this.changeDiv6.nativeElement.style.fontSize = "20px";
+            this.changeDiv7.nativeElement.style.fontSize = "20px";
+            this.changeDiv8.nativeElement.style.fontSize = "20px";
+            this.changeDiv9.nativeElement.style.fontSize = "20px";
+            this.changeDiv10.nativeElement.style.fontSize = "20px";
+            this.changeDiv11.nativeElement.style.fontSize = "20px";
+            this.changeDiv12.nativeElement.style.fontSize = "20px";
+            this.changeDiv13.nativeElement.style.fontSize = "20px";
+            this.changeDiv14.nativeElement.style.fontSize = "20px";
+            this.changeDiv15.nativeElement.style.fontSize = "20px";
+            this.changeDiv16.nativeElement.style.fontSize = "20px";
+            this.changeDiv17.nativeElement.style.fontSize = "20px";
+            this.changeDiv18.nativeElement.style.fontSize = "20px";
+            this.changeDiv19.nativeElement.style.fontSize = "20px";
+            this.changeDiv20.nativeElement.style.fontSize = "20px";
+            this.changeDiv21.nativeElement.style.fontSize = "20px";
+            this.changeDiv22.nativeElement.style.fontSize = "20px";
+            this.changeDiv23.nativeElement.style.fontSize = "20px";
+            this.changeDiv24.nativeElement.style.fontSize = "20px";
+            this.changeDiv25.nativeElement.style.fontSize = "20px";
+            this.changeDiv26.nativeElement.style.fontSize = "20px";
+            this.changeDiv27.nativeElement.style.fontSize = "20px";
+            this.changeDiv28.nativeElement.style.fontSize = "20px";
+            this.changeDiv29.nativeElement.style.fontSize = "20px";
+        } else if (this.sliderValue == 3) {
+            this.changeDiv.nativeElement.style.fontSize = "22px";
+            this.changeDiv1.nativeElement.style.fontSize = "22px";
+            this.changeDiv2.nativeElement.style.fontSize = "22px";
+            this.changeDiv3.nativeElement.style.fontSize = "22px";
+            this.changeDiv4.nativeElement.style.fontSize = "22px";
+            this.changeDiv5.nativeElement.style.fontSize = "22px";
+            this.changeDiv6.nativeElement.style.fontSize = "22px";
+            this.changeDiv7.nativeElement.style.fontSize = "22px";
+            this.changeDiv8.nativeElement.style.fontSize = "22px";
+            this.changeDiv9.nativeElement.style.fontSize = "22px";
+            this.changeDiv10.nativeElement.style.fontSize = "22px";
+            this.changeDiv11.nativeElement.style.fontSize = "22px";
+            this.changeDiv12.nativeElement.style.fontSize = "22px";
+            this.changeDiv13.nativeElement.style.fontSize = "22px";
+            this.changeDiv14.nativeElement.style.fontSize = "22px";
+            this.changeDiv15.nativeElement.style.fontSize = "22px";
+            this.changeDiv16.nativeElement.style.fontSize = "22px";
+            this.changeDiv17.nativeElement.style.fontSize = "22px";
+            this.changeDiv18.nativeElement.style.fontSize = "22px";
+            this.changeDiv19.nativeElement.style.fontSize = "22px";
+            this.changeDiv20.nativeElement.style.fontSize = "22px";
+            this.changeDiv21.nativeElement.style.fontSize = "22px";
+            this.changeDiv22.nativeElement.style.fontSize = "22px";
+            this.changeDiv23.nativeElement.style.fontSize = "22px";
+            this.changeDiv24.nativeElement.style.fontSize = "22px";
+            this.changeDiv25.nativeElement.style.fontSize = "22px";
+            this.changeDiv26.nativeElement.style.fontSize = "22px";
+            this.changeDiv27.nativeElement.style.fontSize = "22px";
+            this.changeDiv28.nativeElement.style.fontSize = "22px";
+            this.changeDiv29.nativeElement.style.fontSize = "22px";
+        } else if (this.sliderValue == 4) {
+            this.changeDiv.nativeElement.style.fontSize = "25px";
+            this.changeDiv1.nativeElement.style.fontSize = "25px";
+            this.changeDiv2.nativeElement.style.fontSize = "25px";
+            this.changeDiv3.nativeElement.style.fontSize = "25px";
+            this.changeDiv4.nativeElement.style.fontSize = "25px";
+            this.changeDiv5.nativeElement.style.fontSize = "25px";
+            this.changeDiv6.nativeElement.style.fontSize = "25px";
+            this.changeDiv7.nativeElement.style.fontSize = "25px";
+            this.changeDiv8.nativeElement.style.fontSize = "25px";
+            this.changeDiv9.nativeElement.style.fontSize = "25px";
+            this.changeDiv10.nativeElement.style.fontSize = "25px";
+            this.changeDiv11.nativeElement.style.fontSize = "25px";
+            this.changeDiv12.nativeElement.style.fontSize = "25px";
+            this.changeDiv13.nativeElement.style.fontSize = "25px";
+            this.changeDiv14.nativeElement.style.fontSize = "25px";
+            this.changeDiv15.nativeElement.style.fontSize = "25px";
+            this.changeDiv16.nativeElement.style.fontSize = "25px";
+            this.changeDiv17.nativeElement.style.fontSize = "25px";
+            this.changeDiv18.nativeElement.style.fontSize = "25px";
+            this.changeDiv19.nativeElement.style.fontSize = "25px";
+            this.changeDiv20.nativeElement.style.fontSize = "25px";
+            this.changeDiv21.nativeElement.style.fontSize = "25px";
+            this.changeDiv22.nativeElement.style.fontSize = "25px";
+            this.changeDiv23.nativeElement.style.fontSize = "25px";
+            this.changeDiv24.nativeElement.style.fontSize = "25px";
+            this.changeDiv25.nativeElement.style.fontSize = "25px";
+            this.changeDiv26.nativeElement.style.fontSize = "25px";
+            this.changeDiv27.nativeElement.style.fontSize = "25px";
+            this.changeDiv28.nativeElement.style.fontSize = "25px";
+            this.changeDiv29.nativeElement.style.fontSize = "25px";
+        } else if (this.sliderValue == 5) {
+            this.changeDiv.nativeElement.style.fontSize = "50px";
+            this.changeDiv1.nativeElement.style.fontSize = "50px";
+            this.changeDiv2.nativeElement.style.fontSize = "50px";
+            this.changeDiv3.nativeElement.style.fontSize = "50px";
+            this.changeDiv4.nativeElement.style.fontSize = "50px";
+            this.changeDiv5.nativeElement.style.fontSize = "50px";
+        }
     }
-    else if (this.sliderValue == 5) {
-      this.changeDiv.nativeElement.style.fontSize = "50px";
-      this.changeDiv1.nativeElement.style.fontSize = "50px";
-      this.changeDiv2.nativeElement.style.fontSize = "50px";
-      this.changeDiv3.nativeElement.style.fontSize = "50px";
-      this.changeDiv4.nativeElement.style.fontSize = "50px";
-      this.changeDiv5.nativeElement.style.fontSize = "50px";
-
+    sliderFunction(e) {
+        //
+        this.sliderValue = e.value;
+        if (e.value == 1) {
+            this.changeDiv.nativeElement.style.fontSize = "15px";
+            this.changeDiv1.nativeElement.style.fontSize = "15px";
+            this.changeDiv2.nativeElement.style.fontSize = "15px";
+            this.changeDiv3.nativeElement.style.fontSize = "15px";
+            this.changeDiv4.nativeElement.style.fontSize = "15px";
+            this.changeDiv5.nativeElement.style.fontSize = "15px";
+            this.changeDiv6.nativeElement.style.fontSize = "15px";
+            this.changeDiv7.nativeElement.style.fontSize = "15px";
+            this.changeDiv8.nativeElement.style.fontSize = "15px";
+            this.changeDiv9.nativeElement.style.fontSize = "15px";
+            this.changeDiv10.nativeElement.style.fontSize = "15px";
+            this.changeDiv11.nativeElement.style.fontSize = "15px";
+            this.changeDiv12.nativeElement.style.fontSize = "15px";
+            this.changeDiv13.nativeElement.style.fontSize = "15px";
+            this.changeDiv14.nativeElement.style.fontSize = "15px";
+            this.changeDiv15.nativeElement.style.fontSize = "15px";
+            this.changeDiv16.nativeElement.style.fontSize = "15px";
+            this.changeDiv17.nativeElement.style.fontSize = "15px";
+            this.changeDiv18.nativeElement.style.fontSize = "15px";
+            this.changeDiv19.nativeElement.style.fontSize = "15px";
+            this.changeDiv20.nativeElement.style.fontSize = "15px";
+            this.changeDiv21.nativeElement.style.fontSize = "15px";
+            this.changeDiv22.nativeElement.style.fontSize = "15px";
+            this.changeDiv23.nativeElement.style.fontSize = "15px";
+            this.changeDiv24.nativeElement.style.fontSize = "15px";
+            this.changeDiv25.nativeElement.style.fontSize = "15px";
+            this.changeDiv26.nativeElement.style.fontSize = "15px";
+            this.changeDiv27.nativeElement.style.fontSize = "15px";
+            this.changeDiv28.nativeElement.style.fontSize = "15px";
+            this.changeDiv29.nativeElement.style.fontSize = "15px";
+        } else if (e.value == 2) {
+            this.changeDiv.nativeElement.style.fontSize = "20px";
+            this.changeDiv1.nativeElement.style.fontSize = "20px";
+            this.changeDiv2.nativeElement.style.fontSize = "20px";
+            this.changeDiv3.nativeElement.style.fontSize = "20px";
+            this.changeDiv4.nativeElement.style.fontSize = "20px";
+            this.changeDiv5.nativeElement.style.fontSize = "20px";
+            this.changeDiv6.nativeElement.style.fontSize = "20px";
+            this.changeDiv7.nativeElement.style.fontSize = "20px";
+            this.changeDiv8.nativeElement.style.fontSize = "20px";
+            this.changeDiv9.nativeElement.style.fontSize = "20px";
+            this.changeDiv10.nativeElement.style.fontSize = "20px";
+            this.changeDiv11.nativeElement.style.fontSize = "20px";
+            this.changeDiv12.nativeElement.style.fontSize = "20px";
+            this.changeDiv13.nativeElement.style.fontSize = "20px";
+            this.changeDiv14.nativeElement.style.fontSize = "20px";
+            this.changeDiv15.nativeElement.style.fontSize = "20px";
+            this.changeDiv16.nativeElement.style.fontSize = "20px";
+            this.changeDiv17.nativeElement.style.fontSize = "20px";
+            this.changeDiv18.nativeElement.style.fontSize = "20px";
+            this.changeDiv19.nativeElement.style.fontSize = "20px";
+            this.changeDiv20.nativeElement.style.fontSize = "20px";
+            this.changeDiv21.nativeElement.style.fontSize = "20px";
+            this.changeDiv22.nativeElement.style.fontSize = "20px";
+            this.changeDiv23.nativeElement.style.fontSize = "20px";
+            this.changeDiv24.nativeElement.style.fontSize = "20px";
+            this.changeDiv25.nativeElement.style.fontSize = "20px";
+            this.changeDiv26.nativeElement.style.fontSize = "20px";
+            this.changeDiv27.nativeElement.style.fontSize = "20px";
+            this.changeDiv28.nativeElement.style.fontSize = "20px";
+            this.changeDiv29.nativeElement.style.fontSize = "20px";
+        } else if (e.value == 3) {
+            this.changeDiv.nativeElement.style.fontSize = "22px";
+            this.changeDiv1.nativeElement.style.fontSize = "22px";
+            this.changeDiv2.nativeElement.style.fontSize = "22px";
+            this.changeDiv3.nativeElement.style.fontSize = "22px";
+            this.changeDiv4.nativeElement.style.fontSize = "22px";
+            this.changeDiv5.nativeElement.style.fontSize = "22px";
+            this.changeDiv6.nativeElement.style.fontSize = "22px";
+            this.changeDiv7.nativeElement.style.fontSize = "22px";
+            this.changeDiv8.nativeElement.style.fontSize = "22px";
+            this.changeDiv9.nativeElement.style.fontSize = "22px";
+            this.changeDiv10.nativeElement.style.fontSize = "22px";
+            this.changeDiv11.nativeElement.style.fontSize = "22px";
+            this.changeDiv12.nativeElement.style.fontSize = "22px";
+            this.changeDiv13.nativeElement.style.fontSize = "22px";
+            this.changeDiv14.nativeElement.style.fontSize = "22px";
+            this.changeDiv15.nativeElement.style.fontSize = "22px";
+            this.changeDiv16.nativeElement.style.fontSize = "22px";
+            this.changeDiv17.nativeElement.style.fontSize = "22px";
+            this.changeDiv18.nativeElement.style.fontSize = "22px";
+            this.changeDiv19.nativeElement.style.fontSize = "22px";
+            this.changeDiv20.nativeElement.style.fontSize = "22px";
+            this.changeDiv21.nativeElement.style.fontSize = "22px";
+            this.changeDiv22.nativeElement.style.fontSize = "22px";
+            this.changeDiv23.nativeElement.style.fontSize = "22px";
+            this.changeDiv24.nativeElement.style.fontSize = "22px";
+            this.changeDiv25.nativeElement.style.fontSize = "22px";
+            this.changeDiv26.nativeElement.style.fontSize = "22px";
+            this.changeDiv27.nativeElement.style.fontSize = "22px";
+            this.changeDiv28.nativeElement.style.fontSize = "22px";
+            this.changeDiv29.nativeElement.style.fontSize = "22px";
+        } else if (e.value == 4) {
+            this.changeDiv.nativeElement.style.fontSize = "25px";
+            this.changeDiv1.nativeElement.style.fontSize = "25px";
+            this.changeDiv2.nativeElement.style.fontSize = "25px";
+            this.changeDiv3.nativeElement.style.fontSize = "25px";
+            this.changeDiv4.nativeElement.style.fontSize = "25px";
+            this.changeDiv5.nativeElement.style.fontSize = "25px";
+            this.changeDiv6.nativeElement.style.fontSize = "25px";
+            this.changeDiv7.nativeElement.style.fontSize = "25px";
+            this.changeDiv8.nativeElement.style.fontSize = "25px";
+            this.changeDiv9.nativeElement.style.fontSize = "25px";
+            this.changeDiv10.nativeElement.style.fontSize = "25px";
+            this.changeDiv11.nativeElement.style.fontSize = "25px";
+            this.changeDiv12.nativeElement.style.fontSize = "25px";
+            this.changeDiv13.nativeElement.style.fontSize = "25px";
+            this.changeDiv14.nativeElement.style.fontSize = "25px";
+            this.changeDiv15.nativeElement.style.fontSize = "25px";
+            this.changeDiv16.nativeElement.style.fontSize = "25px";
+            this.changeDiv17.nativeElement.style.fontSize = "25px";
+            this.changeDiv18.nativeElement.style.fontSize = "25px";
+            this.changeDiv19.nativeElement.style.fontSize = "25px";
+            this.changeDiv20.nativeElement.style.fontSize = "25px";
+            this.changeDiv21.nativeElement.style.fontSize = "25px";
+            this.changeDiv22.nativeElement.style.fontSize = "25px";
+            this.changeDiv23.nativeElement.style.fontSize = "25px";
+            this.changeDiv24.nativeElement.style.fontSize = "25px";
+            this.changeDiv25.nativeElement.style.fontSize = "25px";
+            this.changeDiv26.nativeElement.style.fontSize = "25px";
+            this.changeDiv27.nativeElement.style.fontSize = "25px";
+            this.changeDiv28.nativeElement.style.fontSize = "25px";
+            this.changeDiv29.nativeElement.style.fontSize = "25px";
+        } else if (e.value == 5) {
+            this.changeDiv.nativeElement.style.fontSize = "50px";
+            this.changeDiv1.nativeElement.style.fontSize = "50px";
+            this.changeDiv2.nativeElement.style.fontSize = "50px";
+            this.changeDiv3.nativeElement.style.fontSize = "50px";
+            this.changeDiv4.nativeElement.style.fontSize = "50px";
+            this.changeDiv5.nativeElement.style.fontSize = "50px";
+        }
     }
-  }
-  sliderFunction(e) {
-    // 
-    this.sliderValue = e.value;
-    if (e.value == 1) {
-      this.changeDiv.nativeElement.style.fontSize = "15px";
-      this.changeDiv1.nativeElement.style.fontSize = "15px";
-      this.changeDiv2.nativeElement.style.fontSize = "15px";
-      this.changeDiv3.nativeElement.style.fontSize = "15px";
-      this.changeDiv4.nativeElement.style.fontSize = "15px";
-      this.changeDiv5.nativeElement.style.fontSize = "15px";
-      this.changeDiv6.nativeElement.style.fontSize = "15px";
-      this.changeDiv7.nativeElement.style.fontSize = "15px";
-      this.changeDiv8.nativeElement.style.fontSize = "15px";
-      this.changeDiv9.nativeElement.style.fontSize = "15px";
-      this.changeDiv10.nativeElement.style.fontSize = "15px";
-      this.changeDiv11.nativeElement.style.fontSize = "15px";
-      this.changeDiv12.nativeElement.style.fontSize = "15px";
-      this.changeDiv13.nativeElement.style.fontSize = "15px";
-      this.changeDiv14.nativeElement.style.fontSize = "15px";
-      this.changeDiv15.nativeElement.style.fontSize = "15px";
-      this.changeDiv16.nativeElement.style.fontSize = "15px";
-      this.changeDiv17.nativeElement.style.fontSize = "15px";
-      this.changeDiv18.nativeElement.style.fontSize = "15px";
-      this.changeDiv19.nativeElement.style.fontSize = "15px";
-      this.changeDiv20.nativeElement.style.fontSize = "15px";
-      this.changeDiv21.nativeElement.style.fontSize = "15px";
-      this.changeDiv22.nativeElement.style.fontSize = "15px";
-      this.changeDiv23.nativeElement.style.fontSize = "15px";
-      this.changeDiv24.nativeElement.style.fontSize = "15px";
-      this.changeDiv25.nativeElement.style.fontSize = "15px";
-      this.changeDiv26.nativeElement.style.fontSize = "15px";
-      this.changeDiv27.nativeElement.style.fontSize = "15px";
-      this.changeDiv28.nativeElement.style.fontSize = "15px";
-      this.changeDiv29.nativeElement.style.fontSize = "15px";
+    openScoreDialog(responseID, topic) {
+        var questAns = {};
+        var scores = [];
 
+        var arr = ["hello"];
+        const dialogRef = this.dialog.open(DialogFormComponent, {
+            data: {
+                animal: arr,
+                status: "score",
+            },
+            disableClose: true,
+        });
+        dialogRef.afterClosed().subscribe((result) => {});
     }
-    else if (e.value == 2) {
-      this.changeDiv.nativeElement.style.fontSize = "20px";
-      this.changeDiv1.nativeElement.style.fontSize = "20px";
-      this.changeDiv2.nativeElement.style.fontSize = "20px";
-      this.changeDiv3.nativeElement.style.fontSize = "20px";
-      this.changeDiv4.nativeElement.style.fontSize = "20px";
-      this.changeDiv5.nativeElement.style.fontSize = "20px";
-      this.changeDiv6.nativeElement.style.fontSize = "20px";
-      this.changeDiv7.nativeElement.style.fontSize = "20px";
-      this.changeDiv8.nativeElement.style.fontSize = "20px";
-      this.changeDiv9.nativeElement.style.fontSize = "20px";
-      this.changeDiv10.nativeElement.style.fontSize = "20px";
-      this.changeDiv11.nativeElement.style.fontSize = "20px";
-      this.changeDiv12.nativeElement.style.fontSize = "20px";
-      this.changeDiv13.nativeElement.style.fontSize = "20px";
-      this.changeDiv14.nativeElement.style.fontSize = "20px";
-      this.changeDiv15.nativeElement.style.fontSize = "20px";
-      this.changeDiv16.nativeElement.style.fontSize = "20px";
-      this.changeDiv17.nativeElement.style.fontSize = "20px";
-      this.changeDiv18.nativeElement.style.fontSize = "20px";
-      this.changeDiv19.nativeElement.style.fontSize = "20px";
-      this.changeDiv20.nativeElement.style.fontSize = "20px";
-      this.changeDiv21.nativeElement.style.fontSize = "20px";
-      this.changeDiv22.nativeElement.style.fontSize = "20px";
-      this.changeDiv23.nativeElement.style.fontSize = "20px";
-      this.changeDiv24.nativeElement.style.fontSize = "20px";
-      this.changeDiv25.nativeElement.style.fontSize = "20px";
-      this.changeDiv26.nativeElement.style.fontSize = "20px";
-      this.changeDiv27.nativeElement.style.fontSize = "20px";
-      this.changeDiv28.nativeElement.style.fontSize = "20px";
-      this.changeDiv29.nativeElement.style.fontSize = "20px";
-    }
-    else if (e.value == 3) {
-      this.changeDiv.nativeElement.style.fontSize = "22px";
-      this.changeDiv1.nativeElement.style.fontSize = "22px";
-      this.changeDiv2.nativeElement.style.fontSize = "22px";
-      this.changeDiv3.nativeElement.style.fontSize = "22px";
-      this.changeDiv4.nativeElement.style.fontSize = "22px";
-      this.changeDiv5.nativeElement.style.fontSize = "22px";
-      this.changeDiv6.nativeElement.style.fontSize = "22px";
-      this.changeDiv7.nativeElement.style.fontSize = "22px";
-      this.changeDiv8.nativeElement.style.fontSize = "22px";
-      this.changeDiv9.nativeElement.style.fontSize = "22px";
-      this.changeDiv10.nativeElement.style.fontSize = "22px";
-      this.changeDiv11.nativeElement.style.fontSize = "22px";
-      this.changeDiv12.nativeElement.style.fontSize = "22px";
-      this.changeDiv13.nativeElement.style.fontSize = "22px";
-      this.changeDiv14.nativeElement.style.fontSize = "22px";
-      this.changeDiv15.nativeElement.style.fontSize = "22px";
-      this.changeDiv16.nativeElement.style.fontSize = "22px";
-      this.changeDiv17.nativeElement.style.fontSize = "22px";
-      this.changeDiv18.nativeElement.style.fontSize = "22px";
-      this.changeDiv19.nativeElement.style.fontSize = "22px";
-      this.changeDiv20.nativeElement.style.fontSize = "22px";
-      this.changeDiv21.nativeElement.style.fontSize = "22px";
-      this.changeDiv22.nativeElement.style.fontSize = "22px";
-      this.changeDiv23.nativeElement.style.fontSize = "22px";
-      this.changeDiv24.nativeElement.style.fontSize = "22px";
-      this.changeDiv25.nativeElement.style.fontSize = "22px";
-      this.changeDiv26.nativeElement.style.fontSize = "22px";
-      this.changeDiv27.nativeElement.style.fontSize = "22px";
-      this.changeDiv28.nativeElement.style.fontSize = "22px";
-      this.changeDiv29.nativeElement.style.fontSize = "22px";
-    }
-    else if (e.value == 4) {
-      this.changeDiv.nativeElement.style.fontSize = "25px";
-      this.changeDiv1.nativeElement.style.fontSize = "25px";
-      this.changeDiv2.nativeElement.style.fontSize = "25px";
-      this.changeDiv3.nativeElement.style.fontSize = "25px";
-      this.changeDiv4.nativeElement.style.fontSize = "25px";
-      this.changeDiv5.nativeElement.style.fontSize = "25px";
-      this.changeDiv6.nativeElement.style.fontSize = "25px";
-      this.changeDiv7.nativeElement.style.fontSize = "25px";
-      this.changeDiv8.nativeElement.style.fontSize = "25px";
-      this.changeDiv9.nativeElement.style.fontSize = "25px";
-      this.changeDiv10.nativeElement.style.fontSize = "25px";
-      this.changeDiv11.nativeElement.style.fontSize = "25px";
-      this.changeDiv12.nativeElement.style.fontSize = "25px";
-      this.changeDiv13.nativeElement.style.fontSize = "25px";
-      this.changeDiv14.nativeElement.style.fontSize = "25px";
-      this.changeDiv15.nativeElement.style.fontSize = "25px";
-      this.changeDiv16.nativeElement.style.fontSize = "25px";
-      this.changeDiv17.nativeElement.style.fontSize = "25px";
-      this.changeDiv18.nativeElement.style.fontSize = "25px";
-      this.changeDiv19.nativeElement.style.fontSize = "25px";
-      this.changeDiv20.nativeElement.style.fontSize = "25px";
-      this.changeDiv21.nativeElement.style.fontSize = "25px";
-      this.changeDiv22.nativeElement.style.fontSize = "25px";
-      this.changeDiv23.nativeElement.style.fontSize = "25px";
-      this.changeDiv24.nativeElement.style.fontSize = "25px";
-      this.changeDiv25.nativeElement.style.fontSize = "25px";
-      this.changeDiv26.nativeElement.style.fontSize = "25px";
-      this.changeDiv27.nativeElement.style.fontSize = "25px";
-      this.changeDiv28.nativeElement.style.fontSize = "25px";
-      this.changeDiv29.nativeElement.style.fontSize = "25px";
+    // this.chartOptionsInitial(this.dialog, categoryConcat, data, this.scoresCategory,this.scoreSeries,this.scorePK, this.scoreValues, this.scoreTopic, this.scoreType)
+
+    chartOptionsInitial(d, joinedCategory, data, category, score, scorePK, scoreValues, scoreTopic, scoreType) {
+        this.chartOptions = {
+            series: [
+                {
+                    name: "Cultural Proficiency",
+                    data: data,
+                },
+            ],
+            chart: {
+                height: 350,
+                type: "bar",
+                events: {
+                    dataPointSelection: function (event, chartContext, config) {
+                        let i = config["selectedDataPoints"][0][0];
+                        var arr = [];
+                        arr.push(scoreTopic[i]);
+                        arr.push(category[i][0]);
+                        arr.push(data[i]);
+                        arr.push(scoreValues[i]);
+                        arr.push(scoreType[i]);
+
+                        const dialogRef = d.open(DialogFormComponent, {
+                            data: {
+                                animal: arr,
+                                status: "score",
+                            },
+                            disableClose: false,
+                        });
+                    },
+                },
+            },
+            plotOptions: {
+                bar: {
+                    dataLabels: {
+                        position: "top", // top, center, bottom
+                    },
+                },
+            },
+            dataLabels: {
+                enabled: true,
+                formatter: function (val) {
+                    return "Mean: " + val;
+                },
+                offsetY: -20,
+                style: {
+                    fontSize: "12px",
+                    colors: ["#304758"],
+                },
+            },
+
+            xaxis: {
+                categories: joinedCategory,
+                // categories: ["jan","feb","jan"],
+                position: "top",
+                labels: {
+                    offsetY: -18,
+                },
+                axisBorder: {
+                    show: false,
+                },
+                axisTicks: {
+                    show: false,
+                },
+                crosshairs: {
+                    fill: {
+                        type: "gradient",
+                        gradient: {
+                            colorFrom: "#D8E3F0",
+                            colorTo: "#BED1E6",
+                            stops: [0, 100],
+                            opacityFrom: 0.4,
+                            opacityTo: 0.5,
+                        },
+                    },
+                },
+                tooltip: {
+                    enabled: true,
+                    offsetY: -35,
+                },
+            },
+            fill: {
+                type: "gradient",
+                gradient: {
+                    shade: "light",
+                    type: "horizontal",
+                    shadeIntensity: 0.25,
+                    gradientToColors: undefined,
+                    inverseColors: true,
+                    opacityFrom: 1,
+                    opacityTo: 1,
+                    stops: [50, 0, 100, 100],
+                },
+            },
+            yaxis: {
+                axisBorder: {
+                    show: false,
+                },
+                axisTicks: {
+                    show: false,
+                },
+                labels: {
+                    show: false,
+                    formatter: function (val) {
+                        if (val <= 1) return val + ", Culturally Destructive";
+                        else if (val > 1 && val <= 2) return val + ", Culturally Incapacitive";
+                        else if (val > 2 && val <= 3) return val + ", Culturally Blind";
+                        else if (val > 3 && val <= 4) return val + ", Culturally Pre-Competent";
+                        else if (val > 4 && val <= 5) return val + ", Culturally Competent";
+                        else if (val > 5 && val <= 6) return val + ", Culturally Proficient";
+                        else return val + " ";
+                    },
+                },
+            },
+            title: {
+                text: "Scores for Each Vignette Answered",
+                offsetY: 320,
+                align: "center",
+                style: {
+                    color: "#444",
+                },
+            },
+        };
     }
-    else if (e.value == 5) {
-      this.changeDiv.nativeElement.style.fontSize = "50px";
-      this.changeDiv1.nativeElement.style.fontSize = "50px";
-      this.changeDiv2.nativeElement.style.fontSize = "50px";
-      this.changeDiv3.nativeElement.style.fontSize = "50px";
-      this.changeDiv4.nativeElement.style.fontSize = "50px";
-      this.changeDiv5.nativeElement.style.fontSize = "50px";
 
-    }
-
-  }
-  openScoreDialog(responseID, topic) {
-    
-    var questAns = {}
-    var scores = []
-
-    var arr = ["hello"];
-    const dialogRef = this.dialog.open(DialogFormComponent, {
-      data: {
-        animal: arr,
-        status: "score"
-      },
-      disableClose: true
-    });
-    dialogRef.afterClosed().subscribe(result => {
-
-    })
-  }
-  // this.chartOptionsInitial(this.dialog, categoryConcat, data, this.scoresCategory,this.scoreSeries,this.scorePK, this.scoreValues, this.scoreTopic, this.scoreType)
-
-  chartOptionsInitial(d,joinedCategory,data, category, score, scorePK, scoreValues, scoreTopic, scoreType){
-    this.chartOptions = {
-      series: [
-        {
-          name: "Cultural Proficiency",
-          data: data
+    constructor(
+        private fb: FormBuilder,
+        private apiService: CPCQService,
+        private router: Router,
+        private formService: FirstForm,
+        private domSanitizer: DomSanitizer,
+        public dialog: MatDialog,
+        private loginService: LoginService
+    ) {}
+
+    openDialog(i, j, id) {
+        var questAns = {};
+        var scores = [];
+        for (let key in this.scoreRes) {
+            if (this.scoreRes[key]["topic"] == this.attributes[i]) {
+                questAns = this.scoreRes[key][this.columnHeadings[j]];
+                scores = this.scoreRes[key]["scores"][id];
+            }
         }
-      ],
-      chart: {
-        height: 350,
-        type: "bar",
-        events: {
-          dataPointSelection: function(event, chartContext, config) {
-            let i = config['selectedDataPoints'][0][0];
-            var arr = [];
-            arr.push(scoreTopic[i])
-            arr.push(category[i][0])
-            arr.push(data[i])
-            arr.push(scoreValues[i])
-            arr.push(scoreType[i])
-            
-            const dialogRef = d.open(DialogFormComponent, {
-              data: {
+
+        var arr = [];
+        arr.push(this.attributes[i]);
+        arr.push(j);
+        arr.push(this.columnHeadings[j]);
+        arr.push(id);
+        arr.push(questAns);
+        arr.push(scores);
+        const dialogRef = this.dialog.open(DialogFormComponent, {
+            data: {
                 animal: arr,
-                status: "score"
-              },
-              disableClose: false
-            });
-          }
-        }
-      },
-      plotOptions: {
-        bar: {
-          dataLabels: {
-            position: "top" // top, center, bottom
-          }
-        }
-      },
-      dataLabels: {
-        enabled: true,
-        formatter: function(val) {
-          return "Mean: " + val ;
-        },
-        offsetY: -20,
-        style: {
-          fontSize: "12px",
-          colors: ["#304758"]
-        }
-      },
-
-      xaxis: {
-        categories: joinedCategory,
-        // categories: ["jan","feb","jan"],
-        position: "top",
-        labels: {
-          offsetY: -18
-        },
-        axisBorder: {
-          show: false
-        },
-        axisTicks: {
-          show: false
-        },
-        crosshairs: {
-          fill: {
-            type: "gradient",
-            gradient: {
-              colorFrom: "#D8E3F0",
-              colorTo: "#BED1E6",
-              stops: [0, 100],
-              opacityFrom: 0.4,
-              opacityTo: 0.5
+                status: "form1",
+            },
+            disableClose: true,
+        });
+        dialogRef.afterClosed().subscribe((result) => {
+            if (this.responsesArray[i][j][1] == "colorbold") {
+                this.unpackedCount = this.unpackedCount + 1;
             }
-          }
-        },
-        tooltip: {
-          enabled: true,
-          offsetY: -35
-        }
-      },
-      fill: {
-        type: "gradient",
-        gradient: {
-          shade: "light",
-          type: "horizontal",
-          shadeIntensity: 0.25,
-          gradientToColors: undefined,
-          inverseColors: true,
-          opacityFrom: 1,
-          opacityTo: 1,
-          stops: [50, 0, 100, 100]
-        }
-      },
-      yaxis: {
-        axisBorder: {
-          show: false
-        },
-        axisTicks: {
-          show: false
-        },
-        labels: {
-          show: false,
-          formatter: function(val) {
-            if(val<=1)
-            return val + ", Culturally Destructive";
-            else if(val>1 && val<=2)
-            return val + ", Culturally Incapacitive";
-            else if(val>2 && val<=3)
-            return val + ", Culturally Blind";
-            else if(val>3 && val<=4)
-            return val + ", Culturally Pre-Competent";
-            else if(val>4 && val<=5)
-            return val + ", Culturally Competent";
-            else if(val>5 && val<=6)
-            return val + ", Culturally Proficient";
-            else
-            return val + " "
-          }
-        }
-      },
-      title: {
-        text: "Scores for Each Vignette Answered",
-        offsetY: 320,
-        align: "center",
-        style: {
-          color: "#444"
-        }
-      }
-    };
-  }
-
-
-  constructor(private fb: FormBuilder, private apiService: CPCQService, private router: Router, private formService: FirstForm, private domSanitizer: DomSanitizer, public dialog: MatDialog, private loginService : Login) 
-  {
-  }
-
-  
-  openDialog(i, j, id) {
-    
-    
-    
-    var questAns = {}
-    var scores = []
-    for (let key in this.scoreRes) {
-      if (this.scoreRes[key]["topic"] == this.attributes[i]) {
-        questAns = this.scoreRes[key][this.columnHeadings[j]]
-        scores = this.scoreRes[key]['scores'][id]
-      }
+        });
     }
 
-    var arr = [];
-    arr.push(this.attributes[i]);
-    arr.push(j);
-    arr.push(this.columnHeadings[j])
-    arr.push(id)
-    arr.push(questAns)
-    arr.push(scores)
-    const dialogRef = this.dialog.open(DialogFormComponent, {
-      data: {
-        animal: arr,
-        status: "form1"
-      },
-      disableClose: true
-    });
-    dialogRef.afterClosed().subscribe(result => {
-
-      if (this.responsesArray[i][j][1] == "colorbold") {
-        this.unpackedCount = this.unpackedCount + 1
-      }
-
-    })
-  }
-
-  openWordDialog(i) {
-    // 
-    this.buttonClick = true;
-    const dialogRef = this.dialog.open(DialogFormComponent, {
-      data: {
-        animal: i,
-        status: "word"
-      },
-      disableClose: true
-    });
-
-    dialogRef.afterClosed().subscribe(result => {
-
-      this.wordDescription = result;
-    })
-  }
-
-  helpDialog(i) {
-    // 
-    this.dialog.open(DialogFormComponent, {
-      data: {
-        animal: i,
-        status: "help"
-      }
-    });
-  }
-
-  keyPressFunc(e) {
-
-    // 
-    var numbersList = ["1"];
-    for (let key in this.attitudeForm.value) {
-
-
-      if (numbersList.indexOf(this.attitudeForm.value[key]) == -1) {
-        // 
-        return "Number";
-      }
+    openWordDialog(i) {
+        //
+        this.buttonClick = true;
+        const dialogRef = this.dialog.open(DialogFormComponent, {
+            data: {
+                animal: i,
+                status: "word",
+            },
+            disableClose: true,
+        });
+
+        dialogRef.afterClosed().subscribe((result) => {
+            this.wordDescription = result;
+        });
     }
 
+    helpDialog(i) {
+        //
+        this.dialog.open(DialogFormComponent, {
+            data: {
+                animal: i,
+                status: "help",
+            },
+        });
+    }
 
-  }
-
-  getEmailError() {
-    return "Error";
-  }
-  getResponses() {
-    this.apiService.getResponsesData().subscribe((res) => {
-      for (let key in res) {
-        this.temp = []
-        for (let key1 in res[key]) {
-          this.temp.push(res[key][key1])
-        }
-        this.responsesArray.push(this.temp)
-      }
-
-    })
-  }
-
-
-  getForm() {
-    var arr = [];
-    var arr1 = [];
-    var arr2 = [];
-    var i;
-    var attitudeResult = [];
-    var empathyResult = [];
-    var policyResult = [];
-    var profResult = [];
-    var teachingResult = [];
-    this.finalList = [[]]
-    this.boldList = [[]]
-    this.apiService.getFormData().subscribe((res) => {
-      for (let key in res) {
-        arr = [];
-        if (res[key]["topic"] == "Attitude") {
-          attitudeResult.push("Attitude");
-          arr.push("Attitude");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0)
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0)
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0)
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0)
-        }
-        else if (res[key]["topic"] == "Empathy") {
-          empathyResult.push("Empathy")
-          arr.push("Empathy");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0)
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0)
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0)
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0)
-        }
-        else if (res[key]["topic"] == "Policy") {
-          policyResult.push("Policy")
-          arr.push("Policy");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-
-          policyResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          policyResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          policyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0)
-          policyResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0)
-          policyResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0)
-          policyResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0)
-        }
-        else if (res[key]["topic"] == "Professionalism") {
-          profResult.push("Professionalism");
-          arr.push("Professionalism");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-
-          profResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          profResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          profResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0)
-          profResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0)
-          profResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0)
-          profResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0)
-        }
-        else if (res[key]["topic"] == "Teaching Practice") {
-          arr.push("Teaching Pracice");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-          teachingResult.push("Teaching Practice");
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0)
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0)
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0)
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0)
-        }
-
-        this.boldList.push(arr);
-
-      }
-      this.finalList.push(attitudeResult)
-      this.finalList.push(empathyResult)
-      this.finalList.push(policyResult)
-      this.finalList.push(profResult)
-      this.finalList.push(teachingResult)
-    })
-    this.finalList.splice(0, 1);
-    this.boldList.splice(0, 1);
-    // this.getAllIndexes(this.finalList,1)
-
-
-
-  }
-
-  emoji: any;
-  changeEmojiSize(data) {
-    document.getElementById("angry").style.height = "30px"
-    document.getElementById("angry").style.width = "30px"
-    document.getElementById("sad").style.height = "30px"
-    document.getElementById("sad").style.width = "30px"
-    document.getElementById("neutral").style.height = "30px"
-    document.getElementById("neutral").style.width = "30px"
-    document.getElementById("smile").style.height = "30px"
-    document.getElementById("smile").style.width = "30px"
-    document.getElementById("heart").style.height = "30px"
-    document.getElementById("heart").style.width = "30px"
-    document.getElementById(data).style.height = "50px"
-    document.getElementById(data).style.width = "50px"
-
-    this.emoji = data;
-  }
-
-  thumbs: any;
-  changeThumbsSize(data) {
-    document.getElementById("thumbsup").style.height = "30px"
-    document.getElementById("thumbsup").style.width = "30px"
-    document.getElementById("thumbsdown").style.height = "30px"
-    document.getElementById("thumbsdown").style.width = "30px"
-
-    document.getElementById(data).style.height = "50px"
-    document.getElementById(data).style.width = "50px"
-    this.thumbs = data;
-  }
-  finalSubmit() {
-    this.finalFeedbackForm.value["q6"] = this.thumbs
-    this.finalFeedbackForm.value["q7"] = this.emoji
-
-    this.endTime = new Date()
-
-    this.durationTime = (this.endTime - this.startTime) / 1000
-    this.durationTime = this.durationTime / 60
-
-    this.apiService.postFeedbackForm(this.finalFeedbackForm.value).subscribe((res) => {
-      this.apiService.changeCPCQStatus().subscribe((res1) => {
-        Swal.fire({
-          text: "Submitted",
-          icon: "success"
-        }).then((res) => {
-          if (res["isConfirmed"]) {
-            this.router.navigateByUrl("/result")
-          }
-        })
-
-      })
-    }, (err) => {
-
-    })
-
-  }
-  responsesArray = []
-  temp = []
-  scoreRes: any;
-
-  scoresCategory: any;
-  scoreSeries:any;
-  scorePK:any;
-  scoreValues:any;
-  scoreType:any;
-  scoreTopic:any;
-  meanValue : any = 0;
-  meanNumber : any = 0;
-  postSurveyFlag :any ;
-  ngOnInit(): void {
-
-    this.loginService.checkStatus().subscribe((res) => {
-      
-      
-      this.postSurveyFlag = res[0]["postsurveystatus"];
-      
-      // if(res[0]["postsurveystatus"]){
-      //   
-      //   this.postSurveyFlag = false;
-      // }
-      // else{
-      //   
-      //   this.postSurveyFlag = true
-      // }
-    })
-
-    this.apiService.getScoreVisualization().subscribe((res) => {
-      
-      this.scoresCategory = res["category"]
-      this.scoreSeries = res["series"]
-      this.scorePK = res["pk"]
-      this.scoreValues = res['scores']
-      this.scoreTopic = res["topic"]
-      this.scoreType = res["type"]
-      var categoryConcat = []
-      var data = []
-      var temp = 0;
-      for(var i = 0; i<this.scoresCategory.length;i++){
-        categoryConcat.push(res["topic"][i] + " " +this.scoresCategory[i] )
-        data.push(this.scoreSeries[i]['data'])
-        temp = temp + this.scoreSeries[i]['data']
-      }
-      this.meanValue = temp /4.0;
-      this.meanNumber = temp/4.0;
-      if(this.meanValue >=0 && this.meanValue <= 1){  
-        if(this.meanValue ==1 )
-        this.meanValue = this.columnHeadings1[0]
-        else
-        this.meanValue = " somewhere between Cultural Destructiveness and Cultural Incapacity"
-        
-      }
-      if(this.meanValue >1 && this.meanValue <= 2){  
-        if(this.meanValue ==2 )
-        this.meanValue = this.columnHeadings1[1]
-        else
-        this.meanValue = " somewhere between Cultural Incapacity and Cultural Blindness"
-        
-      }
-      if(this.meanValue >2 && this.meanValue <= 3){  
-        if(this.meanValue ==3 )
-        this.meanValue = this.columnHeadings1[2]
-        else
-        this.meanValue = " somewhere between Cultural Blindness and Cultural PreCompetence"
-      }
-      if(this.meanValue >3 && this.meanValue <= 4){  
-        if(this.meanValue ==4 )
-        this.meanValue = this.columnHeadings1[3]
-        else
-        this.meanValue = " somewhere between Cultural PreCompetence and Cultural Competence"
-      }
-      if(this.meanValue >4 && this.meanValue <= 5){  
-        if(this.meanValue ==5 )
-        this.meanValue = this.columnHeadings1[4]
-        else
-        this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency"
-      }
-      if(this.meanValue >5){  
-        if(this.meanValue ==5 )
-        this.meanValue = this.columnHeadings1[4]
-        else
-        this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency"
-      }
-      this.chartOptionsInitial(this.dialog, categoryConcat, data, this.scoresCategory,this.scoreSeries,this.scorePK, this.scoreValues, this.scoreTopic, this.scoreType)
-    })
-
-    this.startTime = new Date()
-    this.finalFeedbackForm = this.fb.group({
-      q1: [""],
-      q2: [""],
-      q3: [""],
-      q4: [""],
-      q5: [""],
-      q6: [""],
-      q7: [""],
-    })
-    this.apiService.getResponsesData().subscribe((res) => {
-      for (let key in res) {
-        this.temp = []
-        for (let key1 in res[key]) {
-          this.temp.push(res[key][key1])
+    keyPressFunc(e) {
+        //
+        var numbersList = ["1"];
+        for (let key in this.attitudeForm.value) {
+            if (numbersList.indexOf(this.attitudeForm.value[key]) == -1) {
+                //
+                return "Number";
+            }
         }
-        this.responsesArray.push(this.temp)
-      }
-
-    })
-
-
-    this.apiService.getScoreInfo().subscribe((res) => {
-      this.scoreRes = res
-      
-      for (let key in res) {
-        for (let category in res[key]["scores"]["category"]) {
-          var firstIndex = this.attributes.indexOf(res[key]["topic"])
+    }
 
-          var secondIndex = this.columnHeadings.indexOf(res[key]["scores"]["category"][category])
+    getEmailError() {
+        return "Error";
+    }
+    getResponses() {
+        this.apiService.getResponsesData().subscribe((res) => {
+            for (let key in res) {
+                this.temp = [];
+                for (let key1 in res[key]) {
+                    this.temp.push(res[key][key1]);
+                }
+                this.responsesArray.push(this.temp);
+            }
+        });
+    }
 
+    getForm() {
+        var arr = [];
+        var arr1 = [];
+        var arr2 = [];
+        var i;
+        var attitudeResult = [];
+        var empathyResult = [];
+        var policyResult = [];
+        var profResult = [];
+        var teachingResult = [];
+        this.finalList = [[]];
+        this.boldList = [[]];
+        this.apiService.getFormData().subscribe((res) => {
+            for (let key in res) {
+                arr = [];
+                if (res[key]["topic"] == "Attitude") {
+                    attitudeResult.push("Attitude");
+                    arr.push("Attitude");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
+                    );
+                } else if (res[key]["topic"] == "Empathy") {
+                    empathyResult.push("Empathy");
+                    arr.push("Empathy");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
+                    );
+                } else if (res[key]["topic"] == "Policy") {
+                    policyResult.push("Policy");
+                    arr.push("Policy");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
+                    );
+                    policyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
+                    );
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
+                    );
+                } else if (res[key]["topic"] == "Professionalism") {
+                    profResult.push("Professionalism");
+                    arr.push("Professionalism");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+
+                    profResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    profResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+                    profResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+                    profResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    profResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+                    profResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+                } else if (res[key]["topic"] == "Teaching Practice") {
+                    arr.push("Teaching Pracice");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+                    teachingResult.push("Teaching Practice");
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
+                    );
+                }
+
+                this.boldList.push(arr);
+            }
+            this.finalList.push(attitudeResult);
+            this.finalList.push(empathyResult);
+            this.finalList.push(policyResult);
+            this.finalList.push(profResult);
+            this.finalList.push(teachingResult);
+        });
+        this.finalList.splice(0, 1);
+        this.boldList.splice(0, 1);
+        // this.getAllIndexes(this.finalList,1)
+    }
 
-          if (firstIndex != -1 && secondIndex != -1) {
-            this.responsesArray[firstIndex][secondIndex][1] = "Colored"
-          }
+    emoji: any;
+    changeEmojiSize(data) {
+        document.getElementById("angry").style.height = "30px";
+        document.getElementById("angry").style.width = "30px";
+        document.getElementById("sad").style.height = "30px";
+        document.getElementById("sad").style.width = "30px";
+        document.getElementById("neutral").style.height = "30px";
+        document.getElementById("neutral").style.width = "30px";
+        document.getElementById("smile").style.height = "30px";
+        document.getElementById("smile").style.width = "30px";
+        document.getElementById("heart").style.height = "30px";
+        document.getElementById("heart").style.width = "30px";
+        document.getElementById(data).style.height = "50px";
+        document.getElementById(data).style.width = "50px";
+
+        this.emoji = data;
+    }
 
-        }
+    thumbs: any;
+    changeThumbsSize(data) {
+        document.getElementById("thumbsup").style.height = "30px";
+        document.getElementById("thumbsup").style.width = "30px";
+        document.getElementById("thumbsdown").style.height = "30px";
+        document.getElementById("thumbsdown").style.width = "30px";
 
-      }
-
-    })
-
-    this.apiService.attitudeData().subscribe((res) => {
-      // 
-      this.attitude = res[0];
-      // 
-    }, (err) => {
-
-    })
-
-    this.apiService.empathyData().subscribe((res) => {
-      // 
-      this.empathy = res[0];
-      // 
-    }, (err) => {
-
-    })
-
-    this.apiService.policyData().subscribe((res) => {
-      this.policy = res[0];
-    }, (err) => {
-
-    })
-
-    this.apiService.professionalismData().subscribe((res) => {
-      this.professionalism = res[0];
-    }, (err) => {
-
-    })
-
-    this.apiService.teachingData().subscribe((res) => {
-      this.teachingPractice = res[0];
-    }, (err) => {
-
-    })
-
-    this.attitudeForm = this.fb.group({
-      A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-      B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-      C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-      D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-      E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-      F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-      description: ["", [Validators.required]]
-
-    })
-
-    this.empathyForm = this.fb.group({
-      A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-      B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-      C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-      D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-      E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-      F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-
-    })
-
-    this.policyForm = this.fb.group({
-      A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-      B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-      C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-      D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-      E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-      F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-
-    })
-
-
-    var arr = [];
-    var arr1 = [];
-    var arr2 = [];
-    var i;
-    for (var j = 0; j < 5; j++) {
-      arr = [];
-      arr1 = [];
-      arr2 = [];
-      i = 0;
-      while (i < 6) {
-        var item1 = Math.floor(Math.random() * (7 - 1) + 1);
-        if (arr1.indexOf(item1) == -1) {
-          if (i == 0) {
-            arr.push(this.attributes[j]);
-            arr.push(this.rowLetters[j][i] + ". " + item1);
-            arr1.push(item1);
-            if (arr1[arr1.length - 1] > 2) {
-              // 
-              arr2.push("True");
+        document.getElementById(data).style.height = "50px";
+        document.getElementById(data).style.width = "50px";
+        this.thumbs = data;
+    }
+    finalSubmit() {
+        this.finalFeedbackForm.value["q6"] = this.thumbs;
+        this.finalFeedbackForm.value["q7"] = this.emoji;
+
+        this.endTime = new Date();
+
+        this.durationTime = (this.endTime - this.startTime) / 1000;
+        this.durationTime = this.durationTime / 60;
+
+        this.apiService.postFeedbackForm(this.finalFeedbackForm.value).subscribe(
+            (res) => {
+                this.apiService.changeCPCQStatus().subscribe((res1) => {
+                    Swal.fire({
+                        text: "Submitted",
+                        icon: "success",
+                    }).then((res) => {
+                        if (res["isConfirmed"]) {
+                            this.router.navigateByUrl("/result");
+                        }
+                    });
+                });
+            },
+            (err) => {}
+        );
+    }
+    responsesArray = [];
+    temp = [];
+    scoreRes: any;
+
+    scoresCategory: any;
+    scoreSeries: any;
+    scorePK: any;
+    scoreValues: any;
+    scoreType: any;
+    scoreTopic: any;
+    meanValue: any = 0;
+    meanNumber: any = 0;
+    postSurveyFlag: any;
+    ngOnInit(): void {
+        this.loginService.checkStatus().subscribe((res) => {
+            this.postSurveyFlag = res[0]["postsurveystatus"];
+
+            // if(res[0]["postsurveystatus"]){
+            //
+            //   this.postSurveyFlag = false;
+            // }
+            // else{
+            //
+            //   this.postSurveyFlag = true
+            // }
+        });
+
+        this.apiService.getScoreVisualization().subscribe((res) => {
+            this.scoresCategory = res["category"];
+            this.scoreSeries = res["series"];
+            this.scorePK = res["pk"];
+            this.scoreValues = res["scores"];
+            this.scoreTopic = res["topic"];
+            this.scoreType = res["type"];
+            var categoryConcat = [];
+            var data = [];
+            var temp = 0;
+            for (var i = 0; i < this.scoresCategory.length; i++) {
+                categoryConcat.push(res["topic"][i] + " " + this.scoresCategory[i]);
+                data.push(this.scoreSeries[i]["data"]);
+                temp = temp + this.scoreSeries[i]["data"];
             }
-            else {
-              arr2.push("False");
+            this.meanValue = temp / 4.0;
+            this.meanNumber = temp / 4.0;
+            if (this.meanValue >= 0 && this.meanValue <= 1) {
+                if (this.meanValue == 1) this.meanValue = this.columnHeadings1[0];
+                else this.meanValue = " somewhere between Cultural Destructiveness and Cultural Incapacity";
             }
-          }
-          else {
-            arr.push(this.rowLetters[j][i] + ". " + item1);
-            arr1.push(item1);
-            if (i == 1) {
-              if (arr1[arr1.length - 1] > 3) {
-                arr2.push("True");
-              }
-              else {
-                arr2.push("False");
-              }
+            if (this.meanValue > 1 && this.meanValue <= 2) {
+                if (this.meanValue == 2) this.meanValue = this.columnHeadings1[1];
+                else this.meanValue = " somewhere between Cultural Incapacity and Cultural Blindness";
             }
-            else if (i == 2) {
-              if (arr1[arr1.length - 1] > 4 || arr1[arr1.length - 1] == 1) {
-                arr2.push("True");
-              }
-              else {
-                arr2.push("False");
-              }
+            if (this.meanValue > 2 && this.meanValue <= 3) {
+                if (this.meanValue == 3) this.meanValue = this.columnHeadings1[2];
+                else this.meanValue = " somewhere between Cultural Blindness and Cultural PreCompetence";
             }
-            else if (i == 3) {
-              if (arr1[arr1.length - 1] > 5 || arr1[arr1.length - 1] < 4) {
-                arr2.push("True");
-              }
-              else {
-                arr2.push("False");
-              }
+            if (this.meanValue > 3 && this.meanValue <= 4) {
+                if (this.meanValue == 4) this.meanValue = this.columnHeadings1[3];
+                else this.meanValue = " somewhere between Cultural PreCompetence and Cultural Competence";
             }
-            else if (i == 4) {
-              if (arr1[arr1.length - 1] < 4) {
-                arr2.push("True");
-              }
-              else {
-                arr2.push("False");
-              }
+            if (this.meanValue > 4 && this.meanValue <= 5) {
+                if (this.meanValue == 5) this.meanValue = this.columnHeadings1[4];
+                else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
             }
-            else if (i == 5) {
-              if (arr1[arr1.length - 1] < 5) {
-                arr2.push("True");
-              }
-              else {
-                arr2.push("False");
-              }
+            if (this.meanValue > 5) {
+                if (this.meanValue == 5) this.meanValue = this.columnHeadings1[4];
+                else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
             }
-          }
-          i = i + 1;
-        }
-        else {
-          continue;
-        }
-
-      }
-      this.formValues.push(arr);
-      this.boldList.push(arr1);
-      this.randomList.push(arr2);
-    }
-    this.boldList.splice(0, 1);
-    this.randomList.splice(0, 1);
+            this.chartOptionsInitial(
+                this.dialog,
+                categoryConcat,
+                data,
+                this.scoresCategory,
+                this.scoreSeries,
+                this.scorePK,
+                this.scoreValues,
+                this.scoreTopic,
+                this.scoreType
+            );
+        });
+
+        this.startTime = new Date();
+        this.finalFeedbackForm = this.fb.group({
+            q1: [""],
+            q2: [""],
+            q3: [""],
+            q4: [""],
+            q5: [""],
+            q6: [""],
+            q7: [""],
+        });
+        this.apiService.getResponsesData().subscribe((res) => {
+            for (let key in res) {
+                this.temp = [];
+                for (let key1 in res[key]) {
+                    this.temp.push(res[key][key1]);
+                }
+                this.responsesArray.push(this.temp);
+            }
+        });
 
+        this.apiService.getScoreInfo().subscribe((res) => {
+            this.scoreRes = res;
 
+            for (let key in res) {
+                for (let category in res[key]["scores"]["category"]) {
+                    var firstIndex = this.attributes.indexOf(res[key]["topic"]);
 
-    this.getAllIndexes(this.randomList, "True");
-    this.loaded = true;
-  }
+                    var secondIndex = this.columnHeadings.indexOf(res[key]["scores"]["category"][category]);
 
-  getAllIndexes(arr, val) {
-    var indexes = [];
-    var i = -1;
-    for (var i = 0; i < arr.length; i++) {
-      for (var j = 0; j < arr[i].length; j++) {
-        if (arr[i][j] == "True") {
-          var arr1 = [];
-          arr1.push(i);
-          arr1.push(j)
-          indexes.push(arr1);
+                    if (firstIndex != -1 && secondIndex != -1) {
+                        this.responsesArray[firstIndex][secondIndex][1] = "Colored";
+                    }
+                }
+            }
+        });
+
+        this.apiService.attitudeData().subscribe(
+            (res) => {
+                //
+                this.attitude = res[0];
+                //
+            },
+            (err) => {}
+        );
+
+        this.apiService.empathyData().subscribe(
+            (res) => {
+                //
+                this.empathy = res[0];
+                //
+            },
+            (err) => {}
+        );
+
+        this.apiService.policyData().subscribe(
+            (res) => {
+                this.policy = res[0];
+            },
+            (err) => {}
+        );
+
+        this.apiService.professionalismData().subscribe(
+            (res) => {
+                this.professionalism = res[0];
+            },
+            (err) => {}
+        );
+
+        this.apiService.teachingData().subscribe(
+            (res) => {
+                this.teachingPractice = res[0];
+            },
+            (err) => {}
+        );
+
+        this.attitudeForm = this.fb.group({
+            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            description: ["", [Validators.required]],
+        });
+
+        this.empathyForm = this.fb.group({
+            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        });
+
+        this.policyForm = this.fb.group({
+            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        });
+
+        var arr = [];
+        var arr1 = [];
+        var arr2 = [];
+        var i;
+        for (var j = 0; j < 5; j++) {
+            arr = [];
+            arr1 = [];
+            arr2 = [];
+            i = 0;
+            while (i < 6) {
+                var item1 = Math.floor(Math.random() * (7 - 1) + 1);
+                if (arr1.indexOf(item1) == -1) {
+                    if (i == 0) {
+                        arr.push(this.attributes[j]);
+                        arr.push(this.rowLetters[j][i] + ". " + item1);
+                        arr1.push(item1);
+                        if (arr1[arr1.length - 1] > 2) {
+                            //
+                            arr2.push("True");
+                        } else {
+                            arr2.push("False");
+                        }
+                    } else {
+                        arr.push(this.rowLetters[j][i] + ". " + item1);
+                        arr1.push(item1);
+                        if (i == 1) {
+                            if (arr1[arr1.length - 1] > 3) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        } else if (i == 2) {
+                            if (arr1[arr1.length - 1] > 4 || arr1[arr1.length - 1] == 1) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        } else if (i == 3) {
+                            if (arr1[arr1.length - 1] > 5 || arr1[arr1.length - 1] < 4) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        } else if (i == 4) {
+                            if (arr1[arr1.length - 1] < 4) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        } else if (i == 5) {
+                            if (arr1[arr1.length - 1] < 5) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        }
+                    }
+                    i = i + 1;
+                } else {
+                    continue;
+                }
+            }
+            this.formValues.push(arr);
+            this.boldList.push(arr1);
+            this.randomList.push(arr2);
         }
-      }
-    }
+        this.boldList.splice(0, 1);
+        this.randomList.splice(0, 1);
 
-    var arr1 = [];
-    for (var i = 0; i < indexes.length; i++) {
-      arr1.push(i);
-    }
-    var ranNums = [];
-    var i = arr1.length;
-    var j = 0;
-    var count = 0;
-    while (i--) {
-
-      if (count < 5) {
-        j = Math.floor(Math.random() * (i + 1));
-        ranNums.push(arr1[j]);
-        arr1.splice(j, 1);
-        count = count + 1;
-      }
-      else {
-        break;
-      }
+        this.getAllIndexes(this.randomList, "True");
+        this.loaded = true;
     }
 
+    getAllIndexes(arr, val) {
+        var indexes = [];
+        var i = -1;
+        for (var i = 0; i < arr.length; i++) {
+            for (var j = 0; j < arr[i].length; j++) {
+                if (arr[i][j] == "True") {
+                    var arr1 = [];
+                    arr1.push(i);
+                    arr1.push(j);
+                    indexes.push(arr1);
+                }
+            }
+        }
 
-    // 
-    for (var i = 0; i < this.boldList.length; i++) {
-      var temp = [];
-      for (var j = 0; j < 6; j++) {
-        temp.push("False");
-      }
-      this.finalList1.push(temp);
-    }
+        var arr1 = [];
+        for (var i = 0; i < indexes.length; i++) {
+            arr1.push(i);
+        }
+        var ranNums = [];
+        var i = arr1.length;
+        var j = 0;
+        var count = 0;
+        while (i--) {
+            if (count < 5) {
+                j = Math.floor(Math.random() * (i + 1));
+                ranNums.push(arr1[j]);
+                arr1.splice(j, 1);
+                count = count + 1;
+            } else {
+                break;
+            }
+        }
 
+        //
+        for (var i = 0; i < this.boldList.length; i++) {
+            var temp = [];
+            for (var j = 0; j < 6; j++) {
+                temp.push("False");
+            }
+            this.finalList1.push(temp);
+        }
 
-    for (var i = 0; i < ranNums.length; i++) {
-      var item = indexes[ranNums[i]];
+        for (var i = 0; i < ranNums.length; i++) {
+            var item = indexes[ranNums[i]];
 
-      this.finalList1[item[0]][item[1]] = "True";
+            this.finalList1[item[0]][item[1]] = "True";
+        }
+        // this.finalList1.splice(0,1)
+    }
+    preSurvey() {
+        this.router.navigateByUrl("/preSurvey");
     }
-    // this.finalList1.splice(0,1)
 
-  }
-  preSurvey() {
-    this.router.navigateByUrl("/preSurvey");
-  }
+    nextButton() {
+        if (this.selectedIndex == 0) {
+            this.selectedIndex = this.selectedIndex + 1;
+            return;
+        }
+        if (this.selectedIndex == 7) {
+            this.router.navigateByUrl("/dashboard");
+            return;
+        }
 
-  nextButton() {
-    if (this.selectedIndex == 0) {
-      this.selectedIndex = this.selectedIndex + 1;
-      return;
-    }
-    if (this.selectedIndex == 7) {
-      this.router.navigateByUrl('/dashboard');
-      return;
-    }
+        var numberList = [];
+        var flag = true;
+        for (let key in this.attitudeForm.value) {
+            if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
+                flag = false;
+                Swal.fire({
+                    text: "Please enter values from 1 through 6 only.",
+                    icon: "warning",
+                }).then((res) => {});
+                break;
+            }
+            if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
+                numberList.push(this.attitudeForm.value[key]);
+            } else {
+                flag = false;
+                Swal.fire({
+                    text: "The inputs have been repeated. Please enter values from 1 through 6.",
+                    icon: "warning",
+                }).then((res) => {});
+                break;
+            }
+        }
+        if (!this.buttonClick) {
+            flag = false;
+            Swal.fire({
+                text: "Click on the word '" + this.attributes[this.selectedIndex - 1] + "' and respond to the prompt.",
+                icon: "warning",
+            }).then((res) => {});
+        }
+        if (flag) {
+            if (this.selectedIndex == 7) {
+                this.router.navigateByUrl("/postSurvey");
+            }
+            this.sliderFunction1();
+            var formData = {};
+            formData["topic"] = this.attributes[this.selectedIndex - 1];
+            if (this.attributes[this.selectedIndex - 1] == "Attitude") {
+                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalCompetence"] = "F. " + this.attitudeForm.value["F"];
+                formData["culturalProficiency"] = "E. " + this.attitudeForm.value["E"];
+            } else if (this.attributes[this.selectedIndex - 1] == "Empathy") {
+                formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalBlindness"] = "F. " + this.attitudeForm.value["F"];
+                formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalCompetence"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalProficiency"] = "C. " + this.attitudeForm.value["C"];
+            } else if (this.attributes[this.selectedIndex - 1] == "Policy") {
+                formData["culturalDestructiveness"] = "F. " + this.attitudeForm.value["F"];
+                formData["culturalIncapacity"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalCompetence"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalProficiency"] = "A. " + this.attitudeForm.value["A"];
+            } else if (this.attributes[this.selectedIndex - 1] == "Professionalism") {
+                formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalCompetence"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+            } else if (this.attributes[this.selectedIndex - 1] == "Teaching Practice") {
+                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+            }
 
-    var numberList = [];
-    var flag = true;
-    for (let key in this.attitudeForm.value) {
-
-      if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && (key != "description")) {
-        flag = false;
-        Swal.fire({
-          text: "Please enter values from 1 through 6 only.",
-          icon: "warning"
-        }).then((res) => {
-        })
-        break;
-      }
-      if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
-        numberList.push(this.attitudeForm.value[key]);
-      }
-      else {
-        flag = false;
-        Swal.fire({
-          text: "The inputs have been repeated. Please enter values from 1 through 6.",
-          icon: "warning"
-        }).then((res) => {
-        })
-        break;
-      }
-    }
-    if (!this.buttonClick) {
-      flag = false;
-      Swal.fire({
-
-        text: "Click on the word '" + this.attributes[this.selectedIndex - 1] + "' and respond to the prompt.",
-        icon: "warning"
-      }).then((res) => {
-      })
+            this.endTime = new Date();
+
+            this.durationTime = (this.endTime - this.startTime) / 1000;
+            this.durationTime = this.durationTime / 60;
+
+            formData["description"] = this.wordDescription;
+            formData["duration"] = this.durationTime;
+            this.apiService.postFormData(formData).subscribe(
+                (res) => {
+                    //
+                },
+                (err) => {}
+            );
+            // this.getForm();
+            this.selectedIndex = this.selectedIndex + 1;
+            this.buttonClick = false;
+            this.startTime = new Date();
+            this.attitudeForm = this.fb.group({
+                A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            });
+        }
     }
-    if (flag) {
 
-      if (this.selectedIndex == 7) {
+    postSurvey() {
         this.router.navigateByUrl("/postSurvey");
-      }
-      this.sliderFunction1();
-      var formData = {}
-      formData['topic'] = this.attributes[this.selectedIndex - 1]
-      if (this.attributes[this.selectedIndex - 1] == "Attitude") {
-        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value['C']
-        formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalPreCompetence"] = "A. " + this.attitudeForm.value['A']
-        formData["culturalCompetence"] = "F. " + this.attitudeForm.value['F']
-        formData["culturalProficiency"] = "E. " + this.attitudeForm.value['E']
-
-      }
-      else if (this.attributes[this.selectedIndex - 1] == "Empathy") {
-        formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value['E']
-        formData["culturalIncapacity"] = "A. " + this.attitudeForm.value['A']
-        formData["culturalBlindness"] = "F. " + this.attitudeForm.value['F']
-        formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalCompetence"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalProficiency"] = "C. " + this.attitudeForm.value['C']
-      }
-      else if (this.attributes[this.selectedIndex - 1] == "Policy") {
-        formData["culturalDestructiveness"] = "F. " + this.attitudeForm.value['F']
-        formData["culturalIncapacity"] = "E. " + this.attitudeForm.value['E']
-        formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalPreCompetence"] = "C. " + this.attitudeForm.value['C']
-        formData["culturalCompetence"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalProficiency"] = "A. " + this.attitudeForm.value['A']
-      }
-      else if (this.attributes[this.selectedIndex - 1] == "Professionalism") {
-        formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value['E']
-        formData["culturalIncapacity"] = "A. " + this.attitudeForm.value['A']
-        formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalCompetence"] = "C. " + this.attitudeForm.value['C']
-        formData["culturalProficiency"] = "F. " + this.attitudeForm.value['F']
-      }
-      else if (this.attributes[this.selectedIndex - 1] == "Teaching Practice") {
-        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value['C']
-        formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value['E']
-        formData["culturalCompetence"] = "A. " + this.attitudeForm.value['A']
-        formData["culturalProficiency"] = "F. " + this.attitudeForm.value['F']
-      }
-
-      this.endTime = new Date()
-
-      this.durationTime = (this.endTime - this.startTime) / 1000
-      this.durationTime = this.durationTime / 60
-
-      formData["description"] = this.wordDescription
-      formData["duration"] = this.durationTime
-      this.apiService.postFormData(formData).subscribe((res) => {
-        // 
-      }, (err) => {
-
-      })
-      // this.getForm();
-      this.selectedIndex = this.selectedIndex + 1;
-      this.buttonClick = false;
-      this.startTime = new Date()
-      this.attitudeForm = this.fb.group({
-        A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-        B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-        C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-        D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-        E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-        F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-      })
     }
 
-  }
-
-  postSurvey() {
-    this.router.navigateByUrl("/postSurvey");
-  }
-
-  submitForm1() {
-    if (this.unpackedCount == 5) {
-      this.endTime = new Date()
-
-      this.durationTime = (this.endTime - this.startTime) / 1000
-      this.durationTime = this.durationTime / 60
-
-      Swal.fire({
-        text: "Submitted",
-        icon: "success"
-      }).then((res) => {
-        if (res["isConfirmed"]) {
-          // this.getForm()
-          this.selectedIndex = this.selectedIndex + 1;
+    submitForm1() {
+        if (this.unpackedCount == 5) {
+            this.endTime = new Date();
+
+            this.durationTime = (this.endTime - this.startTime) / 1000;
+            this.durationTime = this.durationTime / 60;
+
+            Swal.fire({
+                text: "Submitted",
+                icon: "success",
+            }).then((res) => {
+                if (res["isConfirmed"]) {
+                    // this.getForm()
+                    this.selectedIndex = this.selectedIndex + 1;
+                }
+            });
+        } else {
+            Swal.fire({
+                text: "Please click on all the yellow boxes and answer the questions in the prompt.",
+                icon: "warning",
+            }).then((res) => {});
         }
-      })
-    }
-    else {
-      Swal.fire({
-        text: "Please click on all the yellow boxes and answer the questions in the prompt.",
-        icon: "warning"
-      }).then((res) => {
-      })
     }
 
-  }
-
-  submitForm() {
-    if (this.selectedIndex == 5) {
-      var numberList = [];
-      var flag = false;
-
-      for (let key in this.attitudeForm.value) {
-
-        if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && (key != "description")) {
-
-
-          flag = true;
-          Swal.fire({
-            text: "Please enter values from 1 through 6 only.",
-            icon: "warning"
-          }).then((res) => {
-          })
-          break;
-        }
-        if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
-          numberList.push(this.attitudeForm.value[key]);
+    submitForm() {
+        if (this.selectedIndex == 5) {
+            var numberList = [];
+            var flag = false;
+
+            for (let key in this.attitudeForm.value) {
+                if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
+                    flag = true;
+                    Swal.fire({
+                        text: "Please enter values from 1 through 6 only.",
+                        icon: "warning",
+                    }).then((res) => {});
+                    break;
+                }
+                if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
+                    numberList.push(this.attitudeForm.value[key]);
+                } else {
+                    flag = true;
+                    Swal.fire({
+                        text: "The inputs have been repeated. Please enter values from 1 through 6.",
+                        icon: "warning",
+                    }).then((res) => {});
+                    break;
+                }
+            }
+            if (!this.buttonClick) {
+                flag = true;
+                Swal.fire({
+                    text:
+                        "Click on the word '" +
+                        this.attributes[this.selectedIndex - 1] +
+                        "' and respond to the prompt.",
+                    icon: "warning",
+                }).then((res) => {});
+            }
+            if (!flag) {
+                //
+                var formData = {};
+
+                formData["topic"] = this.attributes[this.selectedIndex - 1];
+                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+
+                formData["description"] = this.wordDescription;
+                this.endTime = new Date();
+
+                this.durationTime = (this.endTime - this.startTime) / 1000;
+                this.durationTime = this.durationTime / 60;
+
+                formData["duration"] = this.durationTime;
+                this.apiService.postFormData(formData).subscribe(
+                    (res) => {
+                        //
+                        Swal.fire({
+                            text: "Submitted",
+                            icon: "success",
+                        }).then((res) => {
+                            if (res["isConfirmed"]) {
+                                // this.getForm()
+                                this.getResponses();
+
+                                this.selectedIndex = this.selectedIndex + 1;
+                                this.startTime = new Date();
+                            }
+                        });
+                    },
+                    (err) => {}
+                );
+            }
         }
-        else {
-          flag = true;
-          Swal.fire({
-            text: "The inputs have been repeated. Please enter values from 1 through 6.",
-            icon: "warning"
-          }).then((res) => {
-          })
-          break;
+    }
+
+    submit() {
+        //
+        var tempDict;
+        this.responseList = [];
+        for (let key in this.firstForm.value) {
+            tempDict = {};
+            tempDict["question"] = key;
+            tempDict["response"] = this.firstForm.value[key];
+            this.responseList.push(tempDict);
         }
-      }
-      if (!this.buttonClick) {
-        flag = true;
-        Swal.fire({
-          text: "Click on the word '" + this.attributes[this.selectedIndex - 1] + "' and respond to the prompt.",
-          icon: "warning"
-        }).then((res) => {
-        })
-      }
-      if (!flag) {
-
-
-        // 
-        var formData = {}
-
-        formData['topic'] = this.attributes[this.selectedIndex - 1]
-        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value['C']
-        formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value['E']
-        formData["culturalCompetence"] = "A. " + this.attitudeForm.value['A']
-        formData["culturalProficiency"] = "F. " + this.attitudeForm.value['F']
-
-        formData["description"] = this.wordDescription
-        this.endTime = new Date()
-
-        this.durationTime = (this.endTime - this.startTime) / 1000
-        this.durationTime = this.durationTime / 60
-
-        formData["duration"] = this.durationTime
-        this.apiService.postFormData(formData).subscribe((res) => {
-          // 
-          Swal.fire({
-            text: "Submitted",
-            icon: "success"
-          }).then((res) => {
-            if (res["isConfirmed"]) {
-              // this.getForm()
-              this.getResponses()
-
-              this.selectedIndex = this.selectedIndex + 1;
-              this.startTime = new Date()
+        //
+
+        this.formService.submitResponse(this.responseList).subscribe(
+            (res) => {
+                //
+                Swal.fire({
+                    text: "Submitted",
+                    icon: "success",
+                });
+                this.router.navigateByUrl("/game");
+            },
+            (err) => {
+                Swal.fire({
+                    text: "Duplicate Entries",
+                    icon: "warning",
+                });
             }
-          })
-        }, (err) => {
-
-        })
-      }
+        );
+    }
 
+    title = "micRecorder";
+    //Lets declare Record OBJ
+    record;
+    //Will use this flag for toggeling recording
+    recording = false;
+    //URL of Blob
+    url;
+    error;
+    sanitize(url: string) {
+        return this.domSanitizer.bypassSecurityTrustUrl(url);
     }
-  }
-
-  submit() {
-    // 
-    var tempDict;
-    this.responseList = [];
-    for (let key in this.firstForm.value) {
-      tempDict = {}
-      tempDict["question"] = key
-      tempDict["response"] = this.firstForm.value[key];
-      this.responseList.push(tempDict);
+    /**
+     * Start recording.
+     */
+    initiateRecording() {
+        this.recording = true;
+        let mediaConstraints = {
+            video: false,
+            audio: true,
+        };
+        navigator.mediaDevices
+            .getUserMedia(mediaConstraints)
+            .then(this.successCallback.bind(this), this.errorCallback.bind(this));
+    }
+    /**
+     * Will be called automatically.
+     */
+    successCallback(stream) {
+        var options = {
+            mimeType: "audio/wav",
+            numberOfAudioChannels: 1,
+            // sampleRate: 16000,
+        };
+        //Start Actuall Recording
+        var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
+        this.record = new StereoAudioRecorder(stream, options);
+        this.record.record();
+    }
+    /**
+     * Stop recording.
+     */
+    stopRecording() {
+        this.recording = false;
+        this.record.stop(this.processRecording.bind(this));
+    }
+    /**
+     * processRecording Do what ever you want with blob
+     * @param  {any} blob Blog
+     */
+    processRecording(blob) {
+        this.url = URL.createObjectURL(blob);
+        //
+        //
+    }
+    /**
+     * Process Error.
+     */
+    errorCallback(error) {
+        this.error = "Can not play audio in your browser";
     }
-    // 
-
-    this.formService.submitResponse(this.responseList).subscribe((res) => {
-      // 
-      Swal.fire({
-        text: "Submitted",
-        icon: "success"
-      })
-      this.router.navigateByUrl("/game");
-    }, (err) => {
-
-      Swal.fire({
-        text: "Duplicate Entries",
-        icon: "warning"
-      })
-    })
-
-  }
-
-  title = 'micRecorder';
-  //Lets declare Record OBJ
-  record;
-  //Will use this flag for toggeling recording
-  recording = false;
-  //URL of Blob
-  url;
-  error;
-  sanitize(url: string) {
-    return this.domSanitizer.bypassSecurityTrustUrl(url);
-  }
-  /**
-  * Start recording.
-  */
-  initiateRecording() {
-    this.recording = true;
-    let mediaConstraints = {
-      video: false,
-      audio: true
-    };
-    navigator.mediaDevices.getUserMedia(mediaConstraints).then(this.successCallback.bind(this), this.errorCallback.bind(this));
-  }
-  /**
-  * Will be called automatically.
-  */
-  successCallback(stream) {
-    var options = {
-      mimeType: "audio/wav",
-      numberOfAudioChannels: 1,
-      // sampleRate: 16000,
-    };
-    //Start Actuall Recording
-    var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
-    this.record = new StereoAudioRecorder(stream, options);
-    this.record.record();
-  }
-  /**
-  * Stop recording.
-  */
-  stopRecording() {
-    this.recording = false;
-    this.record.stop(this.processRecording.bind(this));
-  }
-  /**
-  * processRecording Do what ever you want with blob
-  * @param  {any} blob Blog
-  */
-  processRecording(blob) {
-    this.url = URL.createObjectURL(blob);
-    // 
-    // 
-  }
-  /**
-  * Process Error.
-  */
-  errorCallback(error) {
-    this.error = 'Can not play audio in your browser';
-  }
-
-
-
 }
diff --git a/src/app/header/header.component.ts b/src/app/header/header.component.ts
index bc402fc..34cdc33 100644
--- a/src/app/header/header.component.ts
+++ b/src/app/header/header.component.ts
@@ -3,7 +3,7 @@ import { Component, Inject, OnInit } from "@angular/core";
 import { Router } from "@angular/router";
 import { Observable } from "rxjs";
 import { map, shareReplay } from "rxjs/operators";
-import { Login } from "../../services/login.sevice";
+import { LoginService } from "../../services/login.service";
 import { AuthService, User } from "@auth0/auth0-angular";
 import { DOCUMENT } from "@angular/common";
 
@@ -34,7 +34,7 @@ export class HeaderComponent implements OnInit {
         public auth: AuthService,
         private breakpointObserver: BreakpointObserver,
         private router: Router,
-        private loginService: Login
+        private loginService: LoginService
     ) {
         auth.user$.subscribe((user: User) => {
             this.currentUser = user;
@@ -42,7 +42,20 @@ export class HeaderComponent implements OnInit {
         });
     }
 
-    ngOnInit(): void {}
+    ngOnInit(): void {
+        this.auth.idTokenClaims$.subscribe(async (claims) => {
+            this.loginService.getTestUsers(claims.__raw).subscribe(
+                (res) => {
+                    console.log("got success");
+                    console.log(res);
+                },
+                (error) => {
+                    console.log("got error");
+                    console.log(error);
+                }
+            );
+        });
+    }
 
     logout() {
         this.loginService.logout().subscribe(
diff --git a/src/app/login/login.component.ts b/src/app/login/login.component.ts
index 13975a1..3bbfbac 100644
--- a/src/app/login/login.component.ts
+++ b/src/app/login/login.component.ts
@@ -3,7 +3,7 @@ import { FormBuilder, FormGroup, Validators } from "@angular/forms";
 import { Router } from "@angular/router";
 import Swal from "sweetalert2";
 
-import { Login } from "../../services/login.sevice";
+import { LoginService } from "../../services/login.service";
 
 @Component({
     selector: "app-login",
@@ -13,7 +13,7 @@ import { Login } from "../../services/login.sevice";
 export class LoginComponent implements OnInit {
     loginForm: FormGroup;
     hide = true;
-    constructor(private fb: FormBuilder, private router: Router, private loginService: Login) {}
+    constructor(private fb: FormBuilder, private router: Router, private loginService: LoginService) {}
 
     ngOnInit(): void {
         this.loginForm = this.fb.group({
diff --git a/src/app/register-component/register-component.component.ts b/src/app/register-component/register-component.component.ts
index eb877e2..895763e 100644
--- a/src/app/register-component/register-component.component.ts
+++ b/src/app/register-component/register-component.component.ts
@@ -1,76 +1,69 @@
-import { Component, OnInit } from '@angular/core';
-import { EmailValidator, FormBuilder, FormGroup, Validators } from '@angular/forms';
-import { MatDialog, MatDialogRef } from '@angular/material/dialog';
-import { Router } from '@angular/router';
-import Swal from 'sweetalert2';
-import { Login } from '../../services/login.sevice';
+import { Component, OnInit } from "@angular/core";
+import { EmailValidator, FormBuilder, FormGroup, Validators } from "@angular/forms";
+import { MatDialog, MatDialogRef } from "@angular/material/dialog";
+import { Router } from "@angular/router";
+import Swal from "sweetalert2";
+import { LoginService } from "../../services/login.service";
 @Component({
-  selector: 'app-register-component',
-  templateUrl: './register-component.component.html',
-  styleUrls: ['./register-component.component.css']
+    selector: "app-register-component",
+    templateUrl: "./register-component.component.html",
+    styleUrls: ["./register-component.component.css"],
 })
 export class RegisterComponentComponent implements OnInit {
-  loginForm: FormGroup;
-  hide = true;
-  constructor(private fb: FormBuilder, private router: Router, private loginService : Login) { }
+    loginForm: FormGroup;
+    hide = true;
+    constructor(private fb: FormBuilder, private router: Router, private loginService: LoginService) {}
 
-  ngOnInit(): void {
-    this.loginForm = this.fb.group({
-      username:["",[ Validators.required]],
-      email:['',[Validators.required, Validators.email]],
-      password:["",[Validators.required]],
-      first_name:["",[Validators.required]],
-      last_name:[""]
-
-    })
-    
-  }
-
-  getEmailError(){
-    if(this.loginForm.controls.username.hasError('required')){
-      return 'Required'
-    }else{
-      return ''
+    ngOnInit(): void {
+        this.loginForm = this.fb.group({
+            username: ["", [Validators.required]],
+            email: ["", [Validators.required, Validators.email]],
+            password: ["", [Validators.required]],
+            first_name: ["", [Validators.required]],
+            last_name: [""],
+        });
     }
-  }
 
-  getPasswordError(){
-    if(this.loginForm.controls.password.hasError('required')){
-      return 'Required'
-    }else{
-      return ''
+    getEmailError() {
+        if (this.loginForm.controls.username.hasError("required")) {
+            return "Required";
+        } else {
+            return "";
+        }
     }
-  }
-
-  
-  login(){ 
-    if(!this.loginForm.valid){
 
-      Swal.fire({
-        text: "Please enter all the fields in the right format.",
-        icon: "error"
-      }).then((res) => {
-      }) 
+    getPasswordError() {
+        if (this.loginForm.controls.password.hasError("required")) {
+            return "Required";
+        } else {
+            return "";
+        }
     }
-    else{
-      this.loginService.register(this.loginForm.value).subscribe((res) => {
-        localStorage.setItem("user",res["token"]);
-        Swal.fire({
-                  text: "Registration Successful",
-                  icon: "success"
-                }).then((res) => {
-                  this.router.navigateByUrl("/preSurvey")
-        })
-
-      },(err) => {
-        
-        Swal.fire({
-          text: "Username/Email already exists",
-          icon: "error"
-        }).then((res) => {
-        }) 
-      })    
-  }
-  }
 
+    login() {
+        if (!this.loginForm.valid) {
+            Swal.fire({
+                text: "Please enter all the fields in the right format.",
+                icon: "error",
+            }).then((res) => {});
+        } else {
+            this.loginService.register(this.loginForm.value).subscribe(
+                (res) => {
+                    localStorage.setItem("user", res["token"]);
+                    Swal.fire({
+                        text: "Registration Successful",
+                        icon: "success",
+                    }).then((res) => {
+                        this.router.navigateByUrl("/preSurvey");
+                    });
+                },
+                (err) => {
+                    Swal.fire({
+                        text: "Username/Email already exists",
+                        icon: "error",
+                    }).then((res) => {});
+                }
+            );
+        }
+    }
 }
diff --git a/src/app/score-page/score-page.component.ts b/src/app/score-page/score-page.component.ts
index 134b962..6d2687d 100644
--- a/src/app/score-page/score-page.component.ts
+++ b/src/app/score-page/score-page.component.ts
@@ -1,1349 +1,1319 @@
-import { Component, OnInit } from '@angular/core';
-import {AfterViewInit, ElementRef, ViewChild} from '@angular/core';
-import { Router } from '@angular/router';
+import { Component, OnInit } from "@angular/core";
+import { AfterViewInit, ElementRef, ViewChild } from "@angular/core";
+import { Router } from "@angular/router";
 import { FirstForm } from "../../services/firstForm.service";
-import { FormBuilder, FormGroup,Validators } from '@angular/forms';
-import Swal from 'sweetalert2';
-import {ThemePalette} from '@angular/material/core';
-import {ProgressBarMode} from '@angular/material/progress-bar';
+import { FormBuilder, FormGroup, Validators } from "@angular/forms";
+import Swal from "sweetalert2";
+import { ThemePalette } from "@angular/material/core";
+import { ProgressBarMode } from "@angular/material/progress-bar";
 declare var $: any;
-import * as RecordRTC from 'recordrtc';
-import { DomSanitizer } from '@angular/platform-browser';
-import {MatDialog, MAT_DIALOG_DATA} from '@angular/material/dialog';
-import {DialogFormComponent} from '../cpcq-form/dialog-form/dialog-form.component'
-import { Login } from '../../services/login.sevice';
+import * as RecordRTC from "recordrtc";
+import { DomSanitizer } from "@angular/platform-browser";
+import { MatDialog, MAT_DIALOG_DATA } from "@angular/material/dialog";
+import { DialogFormComponent } from "../cpcq-form/dialog-form/dialog-form.component";
+import { LoginService } from "../../services/login.service";
 
-import {CPCQService} from '../../services/cpcq.service';
+import { CPCQService } from "../../services/cpcq.service";
 
 export interface DialogData {
-  animal: 'panda' | 'unicorn' | 'lion';
-  status;
-  result;
+    animal: "panda" | "unicorn" | "lion";
+    status;
+    result;
 }
 @Component({
-  selector: 'app-score-page',
-  templateUrl: './score-page.component.html',
-  styleUrls: ['./score-page.component.css']
+    selector: "app-score-page",
+    templateUrl: "./score-page.component.html",
+    styleUrls: ["./score-page.component.css"],
 })
-export class ScorePageComponent implements OnInit{
-  firstForm: FormGroup;
-  responseList:any ;
-  loaded = false;
-
-  questionArray = [["Enter First Name","text"],["Enter Last Name","text"],["Enter Age","number"]];
-  statusCheck = false;
-  buttonClick = false;
-
-  sliderValue = 0;
-
-  selectedIndex = 0;
-
-  color: ThemePalette = 'primary';
-  mode: ProgressBarMode = 'buffer';
-  value1 = 50;
-  bufferValue = 100;
-
-  formValues = [];
-  meanValue:any = 0;
-  meanNumber:any = 0;
-  attributes = ["Attitude","Empathy","Policy","Professionalism","Teaching Practice"];
-  columnHeadings = ["culturalDestructivenessresponse","culturalIncapacityresponse","culturalBlindnessresponse","culturalPreCompetenceresponse","culturalCompetenceresponse","culturalProficiencyresponse"]
-  columnHeadings1 = ["Cultural Destructiveness","Cultural Incapacity","Cultural Blindness","Cultural PreCompetence","Cultural Competence","Cultural Proficiency"]
-
-  rowLetters = [["D",'C','B','A','F','E'],['E','A','F','D','B','C'],['F','E','B','C','D','A'],['E','A','B','D','C','F'],['D','C','B','E','A','F']];
-  boldList = [[]];
-  randomList = [[]];
-  finalList=[[]];
-  finalList1 = [];
-  attitudeForm: FormGroup;
-  empathyForm: FormGroup;
-  policyForm: FormGroup;
-
-  finalFeedbackForm:FormGroup;
-
-  progressBar : any = true;
-
-
-
-
-  //arrays of data getting from the backend
+export class ScorePageComponent implements OnInit {
+    firstForm: FormGroup;
+    responseList: any;
+    loaded = false;
+
+    questionArray = [
+        ["Enter First Name", "text"],
+        ["Enter Last Name", "text"],
+        ["Enter Age", "number"],
+    ];
+    statusCheck = false;
+    buttonClick = false;
+
+    sliderValue = 0;
+
+    selectedIndex = 0;
+
+    color: ThemePalette = "primary";
+    mode: ProgressBarMode = "buffer";
+    value1 = 50;
+    bufferValue = 100;
+
+    formValues = [];
+    meanValue: any = 0;
+    meanNumber: any = 0;
+    attributes = ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"];
+    columnHeadings = [
+        "culturalDestructivenessresponse",
+        "culturalIncapacityresponse",
+        "culturalBlindnessresponse",
+        "culturalPreCompetenceresponse",
+        "culturalCompetenceresponse",
+        "culturalProficiencyresponse",
+    ];
+    columnHeadings1 = [
+        "Cultural Destructiveness",
+        "Cultural Incapacity",
+        "Cultural Blindness",
+        "Cultural PreCompetence",
+        "Cultural Competence",
+        "Cultural Proficiency",
+    ];
+
+    rowLetters = [
+        ["D", "C", "B", "A", "F", "E"],
+        ["E", "A", "F", "D", "B", "C"],
+        ["F", "E", "B", "C", "D", "A"],
+        ["E", "A", "B", "D", "C", "F"],
+        ["D", "C", "B", "E", "A", "F"],
+    ];
+    boldList = [[]];
+    randomList = [[]];
+    finalList = [[]];
+    finalList1 = [];
+    attitudeForm: FormGroup;
+    empathyForm: FormGroup;
+    policyForm: FormGroup;
+
+    finalFeedbackForm: FormGroup;
+
+    progressBar: any = true;
+
+    //arrays of data getting from the backend
+
+    attitude: any;
+    empathy: any;
+    policy: any;
+    professionalism: any;
+    teachingPractice: any;
+    wordDescription: any;
+    unpackedCount = 0;
+
+    startTime: any;
+    endTime: any;
+    durationTime: any;
+
+    @ViewChild("changeDiv") changeDiv: ElementRef;
+    @ViewChild("changeDiv1") changeDiv1: ElementRef;
+    @ViewChild("changeDiv2") changeDiv2: ElementRef;
+    @ViewChild("changeDiv3") changeDiv3: ElementRef;
+    @ViewChild("changeDiv4") changeDiv4: ElementRef;
+    @ViewChild("changeDiv5") changeDiv5: ElementRef;
+    @ViewChild("changeDiv6") changeDiv6: ElementRef;
+    @ViewChild("changeDiv7") changeDiv7: ElementRef;
+    @ViewChild("changeDiv8") changeDiv8: ElementRef;
+    @ViewChild("changeDiv9") changeDiv9: ElementRef;
+    @ViewChild("changeDiv10") changeDiv10: ElementRef;
+    @ViewChild("changeDiv11") changeDiv11: ElementRef;
+    @ViewChild("changeDiv12") changeDiv12: ElementRef;
+    @ViewChild("changeDiv13") changeDiv13: ElementRef;
+    @ViewChild("changeDiv14") changeDiv14: ElementRef;
+    @ViewChild("changeDiv15") changeDiv15: ElementRef;
+    @ViewChild("changeDiv16") changeDiv16: ElementRef;
+    @ViewChild("changeDiv17") changeDiv17: ElementRef;
+    @ViewChild("changeDiv18") changeDiv18: ElementRef;
+    @ViewChild("changeDiv19") changeDiv19: ElementRef;
+    @ViewChild("changeDiv20") changeDiv20: ElementRef;
+    @ViewChild("changeDiv21") changeDiv21: ElementRef;
+    @ViewChild("changeDiv22") changeDiv22: ElementRef;
+    @ViewChild("changeDiv23") changeDiv23: ElementRef;
+    @ViewChild("changeDiv24") changeDiv24: ElementRef;
+    @ViewChild("changeDiv25") changeDiv25: ElementRef;
+    @ViewChild("changeDiv26") changeDiv26: ElementRef;
+    @ViewChild("changeDiv27") changeDiv27: ElementRef;
+    @ViewChild("changeDiv28") changeDiv28: ElementRef;
+    @ViewChild("changeDiv29") changeDiv29: ElementRef;
+
+    ngAfterViewInit() {}
+
+    sliderFunction1() {
+        if (this.sliderValue == 1) {
+            this.changeDiv.nativeElement.style.fontSize = "15px";
+            this.changeDiv1.nativeElement.style.fontSize = "15px";
+            this.changeDiv2.nativeElement.style.fontSize = "15px";
+            this.changeDiv3.nativeElement.style.fontSize = "15px";
+            this.changeDiv4.nativeElement.style.fontSize = "15px";
+            this.changeDiv5.nativeElement.style.fontSize = "15px";
+            this.changeDiv6.nativeElement.style.fontSize = "15px";
+            this.changeDiv7.nativeElement.style.fontSize = "15px";
+            this.changeDiv8.nativeElement.style.fontSize = "15px";
+            this.changeDiv9.nativeElement.style.fontSize = "15px";
+            this.changeDiv10.nativeElement.style.fontSize = "15px";
+            this.changeDiv11.nativeElement.style.fontSize = "15px";
+            this.changeDiv12.nativeElement.style.fontSize = "15px";
+            this.changeDiv13.nativeElement.style.fontSize = "15px";
+            this.changeDiv14.nativeElement.style.fontSize = "15px";
+            this.changeDiv15.nativeElement.style.fontSize = "15px";
+            this.changeDiv16.nativeElement.style.fontSize = "15px";
+            this.changeDiv17.nativeElement.style.fontSize = "15px";
+            this.changeDiv18.nativeElement.style.fontSize = "15px";
+            this.changeDiv19.nativeElement.style.fontSize = "15px";
+            this.changeDiv20.nativeElement.style.fontSize = "15px";
+            this.changeDiv21.nativeElement.style.fontSize = "15px";
+            this.changeDiv22.nativeElement.style.fontSize = "15px";
+            this.changeDiv23.nativeElement.style.fontSize = "15px";
+            this.changeDiv24.nativeElement.style.fontSize = "15px";
+            this.changeDiv25.nativeElement.style.fontSize = "15px";
+            this.changeDiv26.nativeElement.style.fontSize = "15px";
+            this.changeDiv27.nativeElement.style.fontSize = "15px";
+            this.changeDiv28.nativeElement.style.fontSize = "15px";
+            this.changeDiv29.nativeElement.style.fontSize = "15px";
+        } else if (this.sliderValue == 2) {
+            this.changeDiv.nativeElement.style.fontSize = "20px";
+            this.changeDiv1.nativeElement.style.fontSize = "20px";
+            this.changeDiv2.nativeElement.style.fontSize = "20px";
+            this.changeDiv3.nativeElement.style.fontSize = "20px";
+            this.changeDiv4.nativeElement.style.fontSize = "20px";
+            this.changeDiv5.nativeElement.style.fontSize = "20px";
+            this.changeDiv6.nativeElement.style.fontSize = "20px";
+            this.changeDiv7.nativeElement.style.fontSize = "20px";
+            this.changeDiv8.nativeElement.style.fontSize = "20px";
+            this.changeDiv9.nativeElement.style.fontSize = "20px";
+            this.changeDiv10.nativeElement.style.fontSize = "20px";
+            this.changeDiv11.nativeElement.style.fontSize = "20px";
+            this.changeDiv12.nativeElement.style.fontSize = "20px";
+            this.changeDiv13.nativeElement.style.fontSize = "20px";
+            this.changeDiv14.nativeElement.style.fontSize = "20px";
+            this.changeDiv15.nativeElement.style.fontSize = "20px";
+            this.changeDiv16.nativeElement.style.fontSize = "20px";
+            this.changeDiv17.nativeElement.style.fontSize = "20px";
+            this.changeDiv18.nativeElement.style.fontSize = "20px";
+            this.changeDiv19.nativeElement.style.fontSize = "20px";
+            this.changeDiv20.nativeElement.style.fontSize = "20px";
+            this.changeDiv21.nativeElement.style.fontSize = "20px";
+            this.changeDiv22.nativeElement.style.fontSize = "20px";
+            this.changeDiv23.nativeElement.style.fontSize = "20px";
+            this.changeDiv24.nativeElement.style.fontSize = "20px";
+            this.changeDiv25.nativeElement.style.fontSize = "20px";
+            this.changeDiv26.nativeElement.style.fontSize = "20px";
+            this.changeDiv27.nativeElement.style.fontSize = "20px";
+            this.changeDiv28.nativeElement.style.fontSize = "20px";
+            this.changeDiv29.nativeElement.style.fontSize = "20px";
+        } else if (this.sliderValue == 3) {
+            this.changeDiv.nativeElement.style.fontSize = "22px";
+            this.changeDiv1.nativeElement.style.fontSize = "22px";
+            this.changeDiv2.nativeElement.style.fontSize = "22px";
+            this.changeDiv3.nativeElement.style.fontSize = "22px";
+            this.changeDiv4.nativeElement.style.fontSize = "22px";
+            this.changeDiv5.nativeElement.style.fontSize = "22px";
+            this.changeDiv6.nativeElement.style.fontSize = "22px";
+            this.changeDiv7.nativeElement.style.fontSize = "22px";
+            this.changeDiv8.nativeElement.style.fontSize = "22px";
+            this.changeDiv9.nativeElement.style.fontSize = "22px";
+            this.changeDiv10.nativeElement.style.fontSize = "22px";
+            this.changeDiv11.nativeElement.style.fontSize = "22px";
+            this.changeDiv12.nativeElement.style.fontSize = "22px";
+            this.changeDiv13.nativeElement.style.fontSize = "22px";
+            this.changeDiv14.nativeElement.style.fontSize = "22px";
+            this.changeDiv15.nativeElement.style.fontSize = "22px";
+            this.changeDiv16.nativeElement.style.fontSize = "22px";
+            this.changeDiv17.nativeElement.style.fontSize = "22px";
+            this.changeDiv18.nativeElement.style.fontSize = "22px";
+            this.changeDiv19.nativeElement.style.fontSize = "22px";
+            this.changeDiv20.nativeElement.style.fontSize = "22px";
+            this.changeDiv21.nativeElement.style.fontSize = "22px";
+            this.changeDiv22.nativeElement.style.fontSize = "22px";
+            this.changeDiv23.nativeElement.style.fontSize = "22px";
+            this.changeDiv24.nativeElement.style.fontSize = "22px";
+            this.changeDiv25.nativeElement.style.fontSize = "22px";
+            this.changeDiv26.nativeElement.style.fontSize = "22px";
+            this.changeDiv27.nativeElement.style.fontSize = "22px";
+            this.changeDiv28.nativeElement.style.fontSize = "22px";
+            this.changeDiv29.nativeElement.style.fontSize = "22px";
+        } else if (this.sliderValue == 4) {
+            this.changeDiv.nativeElement.style.fontSize = "25px";
+            this.changeDiv1.nativeElement.style.fontSize = "25px";
+            this.changeDiv2.nativeElement.style.fontSize = "25px";
+            this.changeDiv3.nativeElement.style.fontSize = "25px";
+            this.changeDiv4.nativeElement.style.fontSize = "25px";
+            this.changeDiv5.nativeElement.style.fontSize = "25px";
+            this.changeDiv6.nativeElement.style.fontSize = "25px";
+            this.changeDiv7.nativeElement.style.fontSize = "25px";
+            this.changeDiv8.nativeElement.style.fontSize = "25px";
+            this.changeDiv9.nativeElement.style.fontSize = "25px";
+            this.changeDiv10.nativeElement.style.fontSize = "25px";
+            this.changeDiv11.nativeElement.style.fontSize = "25px";
+            this.changeDiv12.nativeElement.style.fontSize = "25px";
+            this.changeDiv13.nativeElement.style.fontSize = "25px";
+            this.changeDiv14.nativeElement.style.fontSize = "25px";
+            this.changeDiv15.nativeElement.style.fontSize = "25px";
+            this.changeDiv16.nativeElement.style.fontSize = "25px";
+            this.changeDiv17.nativeElement.style.fontSize = "25px";
+            this.changeDiv18.nativeElement.style.fontSize = "25px";
+            this.changeDiv19.nativeElement.style.fontSize = "25px";
+            this.changeDiv20.nativeElement.style.fontSize = "25px";
+            this.changeDiv21.nativeElement.style.fontSize = "25px";
+            this.changeDiv22.nativeElement.style.fontSize = "25px";
+            this.changeDiv23.nativeElement.style.fontSize = "25px";
+            this.changeDiv24.nativeElement.style.fontSize = "25px";
+            this.changeDiv25.nativeElement.style.fontSize = "25px";
+            this.changeDiv26.nativeElement.style.fontSize = "25px";
+            this.changeDiv27.nativeElement.style.fontSize = "25px";
+            this.changeDiv28.nativeElement.style.fontSize = "25px";
+            this.changeDiv29.nativeElement.style.fontSize = "25px";
+        } else if (this.sliderValue == 5) {
+            this.changeDiv.nativeElement.style.fontSize = "50px";
+            this.changeDiv1.nativeElement.style.fontSize = "50px";
+            this.changeDiv2.nativeElement.style.fontSize = "50px";
+            this.changeDiv3.nativeElement.style.fontSize = "50px";
+            this.changeDiv4.nativeElement.style.fontSize = "50px";
+            this.changeDiv5.nativeElement.style.fontSize = "50px";
+        }
+    }
+    sliderFunction(e) {
+        //
+        this.sliderValue = e.value;
+        if (e.value == 1) {
+            this.changeDiv.nativeElement.style.fontSize = "15px";
+            this.changeDiv1.nativeElement.style.fontSize = "15px";
+            this.changeDiv2.nativeElement.style.fontSize = "15px";
+            this.changeDiv3.nativeElement.style.fontSize = "15px";
+            this.changeDiv4.nativeElement.style.fontSize = "15px";
+            this.changeDiv5.nativeElement.style.fontSize = "15px";
+            this.changeDiv6.nativeElement.style.fontSize = "15px";
+            this.changeDiv7.nativeElement.style.fontSize = "15px";
+            this.changeDiv8.nativeElement.style.fontSize = "15px";
+            this.changeDiv9.nativeElement.style.fontSize = "15px";
+            this.changeDiv10.nativeElement.style.fontSize = "15px";
+            this.changeDiv11.nativeElement.style.fontSize = "15px";
+            this.changeDiv12.nativeElement.style.fontSize = "15px";
+            this.changeDiv13.nativeElement.style.fontSize = "15px";
+            this.changeDiv14.nativeElement.style.fontSize = "15px";
+            this.changeDiv15.nativeElement.style.fontSize = "15px";
+            this.changeDiv16.nativeElement.style.fontSize = "15px";
+            this.changeDiv17.nativeElement.style.fontSize = "15px";
+            this.changeDiv18.nativeElement.style.fontSize = "15px";
+            this.changeDiv19.nativeElement.style.fontSize = "15px";
+            this.changeDiv20.nativeElement.style.fontSize = "15px";
+            this.changeDiv21.nativeElement.style.fontSize = "15px";
+            this.changeDiv22.nativeElement.style.fontSize = "15px";
+            this.changeDiv23.nativeElement.style.fontSize = "15px";
+            this.changeDiv24.nativeElement.style.fontSize = "15px";
+            this.changeDiv25.nativeElement.style.fontSize = "15px";
+            this.changeDiv26.nativeElement.style.fontSize = "15px";
+            this.changeDiv27.nativeElement.style.fontSize = "15px";
+            this.changeDiv28.nativeElement.style.fontSize = "15px";
+            this.changeDiv29.nativeElement.style.fontSize = "15px";
+        } else if (e.value == 2) {
+            this.changeDiv.nativeElement.style.fontSize = "20px";
+            this.changeDiv1.nativeElement.style.fontSize = "20px";
+            this.changeDiv2.nativeElement.style.fontSize = "20px";
+            this.changeDiv3.nativeElement.style.fontSize = "20px";
+            this.changeDiv4.nativeElement.style.fontSize = "20px";
+            this.changeDiv5.nativeElement.style.fontSize = "20px";
+            this.changeDiv6.nativeElement.style.fontSize = "20px";
+            this.changeDiv7.nativeElement.style.fontSize = "20px";
+            this.changeDiv8.nativeElement.style.fontSize = "20px";
+            this.changeDiv9.nativeElement.style.fontSize = "20px";
+            this.changeDiv10.nativeElement.style.fontSize = "20px";
+            this.changeDiv11.nativeElement.style.fontSize = "20px";
+            this.changeDiv12.nativeElement.style.fontSize = "20px";
+            this.changeDiv13.nativeElement.style.fontSize = "20px";
+            this.changeDiv14.nativeElement.style.fontSize = "20px";
+            this.changeDiv15.nativeElement.style.fontSize = "20px";
+            this.changeDiv16.nativeElement.style.fontSize = "20px";
+            this.changeDiv17.nativeElement.style.fontSize = "20px";
+            this.changeDiv18.nativeElement.style.fontSize = "20px";
+            this.changeDiv19.nativeElement.style.fontSize = "20px";
+            this.changeDiv20.nativeElement.style.fontSize = "20px";
+            this.changeDiv21.nativeElement.style.fontSize = "20px";
+            this.changeDiv22.nativeElement.style.fontSize = "20px";
+            this.changeDiv23.nativeElement.style.fontSize = "20px";
+            this.changeDiv24.nativeElement.style.fontSize = "20px";
+            this.changeDiv25.nativeElement.style.fontSize = "20px";
+            this.changeDiv26.nativeElement.style.fontSize = "20px";
+            this.changeDiv27.nativeElement.style.fontSize = "20px";
+            this.changeDiv28.nativeElement.style.fontSize = "20px";
+            this.changeDiv29.nativeElement.style.fontSize = "20px";
+        } else if (e.value == 3) {
+            this.changeDiv.nativeElement.style.fontSize = "22px";
+            this.changeDiv1.nativeElement.style.fontSize = "22px";
+            this.changeDiv2.nativeElement.style.fontSize = "22px";
+            this.changeDiv3.nativeElement.style.fontSize = "22px";
+            this.changeDiv4.nativeElement.style.fontSize = "22px";
+            this.changeDiv5.nativeElement.style.fontSize = "22px";
+            this.changeDiv6.nativeElement.style.fontSize = "22px";
+            this.changeDiv7.nativeElement.style.fontSize = "22px";
+            this.changeDiv8.nativeElement.style.fontSize = "22px";
+            this.changeDiv9.nativeElement.style.fontSize = "22px";
+            this.changeDiv10.nativeElement.style.fontSize = "22px";
+            this.changeDiv11.nativeElement.style.fontSize = "22px";
+            this.changeDiv12.nativeElement.style.fontSize = "22px";
+            this.changeDiv13.nativeElement.style.fontSize = "22px";
+            this.changeDiv14.nativeElement.style.fontSize = "22px";
+            this.changeDiv15.nativeElement.style.fontSize = "22px";
+            this.changeDiv16.nativeElement.style.fontSize = "22px";
+            this.changeDiv17.nativeElement.style.fontSize = "22px";
+            this.changeDiv18.nativeElement.style.fontSize = "22px";
+            this.changeDiv19.nativeElement.style.fontSize = "22px";
+            this.changeDiv20.nativeElement.style.fontSize = "22px";
+            this.changeDiv21.nativeElement.style.fontSize = "22px";
+            this.changeDiv22.nativeElement.style.fontSize = "22px";
+            this.changeDiv23.nativeElement.style.fontSize = "22px";
+            this.changeDiv24.nativeElement.style.fontSize = "22px";
+            this.changeDiv25.nativeElement.style.fontSize = "22px";
+            this.changeDiv26.nativeElement.style.fontSize = "22px";
+            this.changeDiv27.nativeElement.style.fontSize = "22px";
+            this.changeDiv28.nativeElement.style.fontSize = "22px";
+            this.changeDiv29.nativeElement.style.fontSize = "22px";
+        } else if (e.value == 4) {
+            this.changeDiv.nativeElement.style.fontSize = "25px";
+            this.changeDiv1.nativeElement.style.fontSize = "25px";
+            this.changeDiv2.nativeElement.style.fontSize = "25px";
+            this.changeDiv3.nativeElement.style.fontSize = "25px";
+            this.changeDiv4.nativeElement.style.fontSize = "25px";
+            this.changeDiv5.nativeElement.style.fontSize = "25px";
+            this.changeDiv6.nativeElement.style.fontSize = "25px";
+            this.changeDiv7.nativeElement.style.fontSize = "25px";
+            this.changeDiv8.nativeElement.style.fontSize = "25px";
+            this.changeDiv9.nativeElement.style.fontSize = "25px";
+            this.changeDiv10.nativeElement.style.fontSize = "25px";
+            this.changeDiv11.nativeElement.style.fontSize = "25px";
+            this.changeDiv12.nativeElement.style.fontSize = "25px";
+            this.changeDiv13.nativeElement.style.fontSize = "25px";
+            this.changeDiv14.nativeElement.style.fontSize = "25px";
+            this.changeDiv15.nativeElement.style.fontSize = "25px";
+            this.changeDiv16.nativeElement.style.fontSize = "25px";
+            this.changeDiv17.nativeElement.style.fontSize = "25px";
+            this.changeDiv18.nativeElement.style.fontSize = "25px";
+            this.changeDiv19.nativeElement.style.fontSize = "25px";
+            this.changeDiv20.nativeElement.style.fontSize = "25px";
+            this.changeDiv21.nativeElement.style.fontSize = "25px";
+            this.changeDiv22.nativeElement.style.fontSize = "25px";
+            this.changeDiv23.nativeElement.style.fontSize = "25px";
+            this.changeDiv24.nativeElement.style.fontSize = "25px";
+            this.changeDiv25.nativeElement.style.fontSize = "25px";
+            this.changeDiv26.nativeElement.style.fontSize = "25px";
+            this.changeDiv27.nativeElement.style.fontSize = "25px";
+            this.changeDiv28.nativeElement.style.fontSize = "25px";
+            this.changeDiv29.nativeElement.style.fontSize = "25px";
+        } else if (e.value == 5) {
+            this.changeDiv.nativeElement.style.fontSize = "50px";
+            this.changeDiv1.nativeElement.style.fontSize = "50px";
+            this.changeDiv2.nativeElement.style.fontSize = "50px";
+            this.changeDiv3.nativeElement.style.fontSize = "50px";
+            this.changeDiv4.nativeElement.style.fontSize = "50px";
+            this.changeDiv5.nativeElement.style.fontSize = "50px";
+        }
+    }
+    constructor(
+        private fb: FormBuilder,
+        private apiService: CPCQService,
+        private router: Router,
+        private formService: FirstForm,
+        private domSanitizer: DomSanitizer,
+        public dialog: MatDialog,
+        private loginService: LoginService
+    ) {}
+    openDialog(i, j, id) {
+        //
+
+        var questAns = {};
+        var scores = [];
+        var comments = [];
+        for (let key in this.scoreRes) {
+            if (this.scoreRes[key]["topic"] == this.attributes[i]) {
+                questAns = this.scoreRes[key][this.columnHeadings[j]];
+                scores = this.scoreRes[key]["scores"][id];
+                comments = this.scoreRes[key]["comment1"][id];
+            }
+        }
 
-  attitude:any;
-  empathy :any;
-  policy:any;
-  professionalism:any;
-  teachingPractice:any;
-  wordDescription:any;
-  unpackedCount = 0;
+        var arr = [];
+        arr.push(this.attributes[i]);
+        arr.push(j);
+        arr.push(this.columnHeadings[j]);
+        arr.push(id);
+        arr.push(questAns);
+        arr.push(scores);
+        arr.push(comments);
+        const dialogRef = this.dialog.open(DialogFormComponent, {
+            data: {
+                animal: arr,
+                status: "form1",
+            },
+        });
+        dialogRef.afterClosed().subscribe((result) => {
+            if (this.responsesArray[i][j][1] == "colorbold") {
+                this.unpackedCount = this.unpackedCount + 1;
+            }
+        });
+    }
 
-  startTime: any;
-  endTime: any;
-  durationTime : any;
+    openWordDialog(i) {
+        //
+        this.buttonClick = true;
+        const dialogRef = this.dialog.open(DialogFormComponent, {
+            data: {
+                animal: i,
+                status: "word",
+            },
+            disableClose: true,
+        });
+
+        dialogRef.afterClosed().subscribe((result) => {
+            this.wordDescription = result;
+        });
+    }
 
-  @ViewChild('changeDiv') changeDiv: ElementRef;
-  @ViewChild('changeDiv1') changeDiv1: ElementRef;
-  @ViewChild('changeDiv2') changeDiv2: ElementRef;
-  @ViewChild('changeDiv3') changeDiv3: ElementRef;
-  @ViewChild('changeDiv4') changeDiv4: ElementRef;
-  @ViewChild('changeDiv5') changeDiv5: ElementRef;
-  @ViewChild('changeDiv6') changeDiv6: ElementRef;
-  @ViewChild('changeDiv7') changeDiv7: ElementRef;
-  @ViewChild('changeDiv8') changeDiv8: ElementRef;
-  @ViewChild('changeDiv9') changeDiv9: ElementRef;
-  @ViewChild('changeDiv10') changeDiv10: ElementRef;
-  @ViewChild('changeDiv11') changeDiv11: ElementRef;
-  @ViewChild('changeDiv12') changeDiv12: ElementRef;
-  @ViewChild('changeDiv13') changeDiv13: ElementRef;
-  @ViewChild('changeDiv14') changeDiv14: ElementRef;
-  @ViewChild('changeDiv15') changeDiv15: ElementRef;
-  @ViewChild('changeDiv16') changeDiv16: ElementRef;
-  @ViewChild('changeDiv17') changeDiv17: ElementRef;
-  @ViewChild('changeDiv18') changeDiv18: ElementRef;
-  @ViewChild('changeDiv19') changeDiv19: ElementRef;
-  @ViewChild('changeDiv20') changeDiv20: ElementRef;
-  @ViewChild('changeDiv21') changeDiv21: ElementRef;
-  @ViewChild('changeDiv22') changeDiv22: ElementRef;
-  @ViewChild('changeDiv23') changeDiv23: ElementRef;
-  @ViewChild('changeDiv24') changeDiv24: ElementRef;
-  @ViewChild('changeDiv25') changeDiv25: ElementRef;
-  @ViewChild('changeDiv26') changeDiv26: ElementRef;
-  @ViewChild('changeDiv27') changeDiv27: ElementRef;
-  @ViewChild('changeDiv28') changeDiv28: ElementRef;
-  @ViewChild('changeDiv29') changeDiv29: ElementRef;
+    helpDialog(i) {
+        //
+        this.dialog.open(DialogFormComponent, {
+            data: {
+                animal: i,
+                status: "help",
+            },
+        });
+    }
 
+    keyPressFunc(e) {
+        //
+        var numbersList = ["1"];
+        for (let key in this.attitudeForm.value) {
+            if (numbersList.indexOf(this.attitudeForm.value[key]) == -1) {
+                //
+                return "Number";
+            }
+        }
+    }
 
+    getEmailError() {
+        return "Error";
+    }
+    getResponses() {
+        this.apiService.getResponsesData().subscribe((res) => {
+            for (let key in res) {
+                this.temp = [];
+                for (let key1 in res[key]) {
+                    this.temp.push(res[key][key1]);
+                }
+                this.responsesArray.push(this.temp);
+            }
+        });
+    }
 
+    getForm() {
+        var arr = [];
+        var arr1 = [];
+        var arr2 = [];
+        var i;
+        var attitudeResult = [];
+        var empathyResult = [];
+        var policyResult = [];
+        var profResult = [];
+        var teachingResult = [];
+        this.finalList = [[]];
+        this.boldList = [[]];
+        this.apiService.getFormData().subscribe((res) => {
+            for (let key in res) {
+                arr = [];
+                if (res[key]["topic"] == "Attitude") {
+                    attitudeResult.push("Attitude");
+                    arr.push("Attitude");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
+                    );
+                } else if (res[key]["topic"] == "Empathy") {
+                    empathyResult.push("Empathy");
+                    arr.push("Empathy");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
+                    );
+                } else if (res[key]["topic"] == "Policy") {
+                    policyResult.push("Policy");
+                    arr.push("Policy");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
+                    );
+                    policyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
+                    );
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
+                    );
+                } else if (res[key]["topic"] == "Professionalism") {
+                    profResult.push("Professionalism");
+                    arr.push("Professionalism");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+
+                    profResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    profResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+                    profResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+                    profResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    profResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+                    profResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+                } else if (res[key]["topic"] == "Teaching Practice") {
+                    arr.push("Teaching Pracice");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+                    teachingResult.push("Teaching Practice");
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
+                    );
+                }
+
+                this.boldList.push(arr);
+            }
+            this.finalList.push(attitudeResult);
+            this.finalList.push(empathyResult);
+            this.finalList.push(policyResult);
+            this.finalList.push(profResult);
+            this.finalList.push(teachingResult);
+        });
+        this.finalList.splice(0, 1);
+        this.boldList.splice(0, 1);
+        // this.getAllIndexes(this.finalList,1)
+    }
 
+    emoji: any;
+    changeEmojiSize(data) {
+        document.getElementById("angry").style.height = "30px";
+        document.getElementById("angry").style.width = "30px";
+        document.getElementById("sad").style.height = "30px";
+        document.getElementById("sad").style.width = "30px";
+        document.getElementById("neutral").style.height = "30px";
+        document.getElementById("neutral").style.width = "30px";
+        document.getElementById("smile").style.height = "30px";
+        document.getElementById("smile").style.width = "30px";
+        document.getElementById("heart").style.height = "30px";
+        document.getElementById("heart").style.width = "30px";
+        document.getElementById(data).style.height = "50px";
+        document.getElementById(data).style.width = "50px";
+
+        this.emoji = data;
+    }
 
+    thumbs: any;
+    changeThumbsSize(data) {
+        document.getElementById("thumbsup").style.height = "30px";
+        document.getElementById("thumbsup").style.width = "30px";
+        document.getElementById("thumbsdown").style.height = "30px";
+        document.getElementById("thumbsdown").style.width = "30px";
 
+        document.getElementById(data).style.height = "50px";
+        document.getElementById(data).style.width = "50px";
+        this.thumbs = data;
+    }
+    finalSubmit() {
+        this.finalFeedbackForm.value["q6"] = this.thumbs;
+        this.finalFeedbackForm.value["q7"] = this.emoji;
+
+        this.endTime = new Date();
+
+        this.durationTime = (this.endTime - this.startTime) / 1000;
+        this.durationTime = this.durationTime / 60;
+
+        this.apiService.postFeedbackForm(this.finalFeedbackForm.value).subscribe(
+            (res) => {
+                this.apiService.changeCPCQStatus().subscribe((res1) => {
+                    Swal.fire({
+                        text: "Submitted",
+                        icon: "success",
+                    }).then((res) => {
+                        if (res["isConfirmed"]) {
+                            this.router.navigateByUrl("/result");
+                        }
+                    });
+                });
+            },
+            (err) => {}
+        );
+    }
+    responsesArray = [];
+    temp = [];
+    scoreRes: any;
+    ngOnInit(): void {
+        this.startTime = new Date();
+        this.finalFeedbackForm = this.fb.group({
+            q1: [""],
+            q2: [""],
+            q3: [""],
+            q4: [""],
+            q5: [""],
+            q6: [""],
+            q7: [""],
+        });
+        this.apiService.getResponsesData().subscribe((res) => {
+            for (let key in res) {
+                this.temp = [];
+                for (let key1 in res[key]) {
+                    this.temp.push(res[key][key1]);
+                }
+                this.responsesArray.push(this.temp);
+            }
+            this.apiService.getScoreInfo().subscribe((res) => {
+                this.scoreRes = res;
+
+                for (let key in res) {
+                    for (let category in res[key]["scores"]["category"]) {
+                        var firstIndex = this.attributes.indexOf(res[key]["topic"]);
+
+                        var secondIndex = this.columnHeadings.indexOf(res[key]["scores"]["category"][category]);
+
+                        if (firstIndex != -1 && secondIndex != -1) {
+                            this.responsesArray[firstIndex][secondIndex][1] = "Colored";
+                        }
+                    }
+                }
+                this.progressBar = false;
+
+                // this.apiService.patchStatus("scoresstatus").subscribe((res) => {
+                //
+                // })
+            });
+        });
+
+        // this.apiService.getScoreInfo().subscribe((res) => {
+        //   this.scoreRes = res
+        //
+        //   for(let key in res){
+        //     for(let category in res[key]["scores"]["category"]){
+        //       var firstIndex = this.attributes.indexOf(res[key]["topic"])
+
+        //       var secondIndex = this.columnHeadings.indexOf(res[key]["scores"]["category"][category])
+        //
+
+        //       if(firstIndex != -1 && secondIndex != -1){
+        //
+        //         this.responsesArray[firstIndex][secondIndex][1] = "Colored"
+        //       }
+
+        //     }
+
+        //   }
+        //   this.progressBar = false;
+        //
+        //   // this.apiService.patchStatus("scoresstatus").subscribe((res) => {
+        //   //
+        //   // })
 
+        // })
 
+        this.apiService.getScoreVisualization().subscribe((res) => {
+            var temp = 0;
+            for (var i = 0; i < res["category"].length; i++) {
+                temp = temp + res["series"][i]["data"];
+            }
+            this.meanNumber = temp / 4.0;
 
-    ngAfterViewInit() {
-        
+            this.meanValue = temp / 4.0;
 
+            if (this.meanValue >= 0 && this.meanValue <= 1) {
+                if (this.meanValue == 1) this.meanValue = this.columnHeadings1[0];
+                else this.meanValue = " somewhere between Cultural Destructiveness and Cultural Incapacity";
+            }
+            if (this.meanValue > 1 && this.meanValue <= 2) {
+                if (this.meanValue == 2) this.meanValue = this.columnHeadings1[1];
+                else this.meanValue = " somewhere between Cultural Incapacity and Cultural Blindness";
+            }
+            if (this.meanValue > 2 && this.meanValue <= 3) {
+                if (this.meanValue == 3) this.meanValue = this.columnHeadings1[2];
+                else this.meanValue = " somewhere between Cultural Blindness and Cultural PreCompetence";
+            }
+            if (this.meanValue > 3 && this.meanValue <= 4) {
+                if (this.meanValue == 4) this.meanValue = this.columnHeadings1[3];
+                else this.meanValue = " somewhere between Cultural PreCompetence and Cultural Competence";
+            }
+            if (this.meanValue > 4 && this.meanValue <= 5) {
+                if (this.meanValue == 5) this.meanValue = this.columnHeadings1[4];
+                else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
+            }
+            if (this.meanValue > 5) {
+                if (this.meanValue == 5) this.meanValue = this.columnHeadings1[4];
+                else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
+            }
+        });
+
+        this.apiService.attitudeData().subscribe(
+            (res) => {
+                //
+                this.attitude = res[0];
+                //
+            },
+            (err) => {}
+        );
+
+        this.apiService.empathyData().subscribe(
+            (res) => {
+                //
+                this.empathy = res[0];
+                //
+            },
+            (err) => {}
+        );
+
+        this.apiService.policyData().subscribe(
+            (res) => {
+                this.policy = res[0];
+            },
+            (err) => {}
+        );
+
+        this.apiService.professionalismData().subscribe(
+            (res) => {
+                this.professionalism = res[0];
+            },
+            (err) => {}
+        );
+
+        this.apiService.teachingData().subscribe(
+            (res) => {
+                this.teachingPractice = res[0];
+            },
+            (err) => {}
+        );
+
+        this.attitudeForm = this.fb.group({
+            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            description: ["", [Validators.required]],
+        });
+
+        this.empathyForm = this.fb.group({
+            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        });
+
+        this.policyForm = this.fb.group({
+            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        });
+
+        var arr = [];
+        var arr1 = [];
+        var arr2 = [];
+        var i;
+        for (var j = 0; j < 5; j++) {
+            arr = [];
+            arr1 = [];
+            arr2 = [];
+            i = 0;
+            while (i < 6) {
+                var item1 = Math.floor(Math.random() * (7 - 1) + 1);
+                if (arr1.indexOf(item1) == -1) {
+                    if (i == 0) {
+                        arr.push(this.attributes[j]);
+                        arr.push(this.rowLetters[j][i] + ". " + item1);
+                        arr1.push(item1);
+                        if (arr1[arr1.length - 1] > 2) {
+                            //
+                            arr2.push("True");
+                        } else {
+                            arr2.push("False");
+                        }
+                    } else {
+                        arr.push(this.rowLetters[j][i] + ". " + item1);
+                        arr1.push(item1);
+                        if (i == 1) {
+                            if (arr1[arr1.length - 1] > 3) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        } else if (i == 2) {
+                            if (arr1[arr1.length - 1] > 4 || arr1[arr1.length - 1] == 1) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        } else if (i == 3) {
+                            if (arr1[arr1.length - 1] > 5 || arr1[arr1.length - 1] < 4) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        } else if (i == 4) {
+                            if (arr1[arr1.length - 1] < 4) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        } else if (i == 5) {
+                            if (arr1[arr1.length - 1] < 5) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        }
+                    }
+                    i = i + 1;
+                } else {
+                    continue;
+                }
+            }
+            this.formValues.push(arr);
+            this.boldList.push(arr1);
+            this.randomList.push(arr2);
+        }
+        this.boldList.splice(0, 1);
+        this.randomList.splice(0, 1);
 
+        this.getAllIndexes(this.randomList, "True");
+        this.loaded = true;
     }
 
-    sliderFunction1(){
-      if(this.sliderValue == 1){
-        this.changeDiv.nativeElement.style.fontSize = "15px";
-        this.changeDiv1.nativeElement.style.fontSize = "15px";
-        this.changeDiv2.nativeElement.style.fontSize = "15px";
-        this.changeDiv3.nativeElement.style.fontSize = "15px";
-        this.changeDiv4.nativeElement.style.fontSize = "15px";
-        this.changeDiv5.nativeElement.style.fontSize = "15px";
-        this.changeDiv6.nativeElement.style.fontSize = "15px";
-        this.changeDiv7.nativeElement.style.fontSize = "15px";
-        this.changeDiv8.nativeElement.style.fontSize = "15px";
-        this.changeDiv9.nativeElement.style.fontSize = "15px";
-        this.changeDiv10.nativeElement.style.fontSize = "15px";
-        this.changeDiv11.nativeElement.style.fontSize = "15px";
-        this.changeDiv12.nativeElement.style.fontSize = "15px";
-        this.changeDiv13.nativeElement.style.fontSize = "15px";
-        this.changeDiv14.nativeElement.style.fontSize = "15px";
-        this.changeDiv15.nativeElement.style.fontSize = "15px";
-        this.changeDiv16.nativeElement.style.fontSize = "15px";
-        this.changeDiv17.nativeElement.style.fontSize = "15px";
-        this.changeDiv18.nativeElement.style.fontSize = "15px";
-        this.changeDiv19.nativeElement.style.fontSize = "15px";
-        this.changeDiv20.nativeElement.style.fontSize = "15px";
-        this.changeDiv21.nativeElement.style.fontSize = "15px";
-        this.changeDiv22.nativeElement.style.fontSize = "15px";
-        this.changeDiv23.nativeElement.style.fontSize = "15px";
-        this.changeDiv24.nativeElement.style.fontSize = "15px";
-        this.changeDiv25.nativeElement.style.fontSize = "15px";
-        this.changeDiv26.nativeElement.style.fontSize = "15px";
-        this.changeDiv27.nativeElement.style.fontSize = "15px";
-        this.changeDiv28.nativeElement.style.fontSize = "15px";
-        this.changeDiv29.nativeElement.style.fontSize = "15px";
-
+    getAllIndexes(arr, val) {
+        var indexes = [];
+        var i = -1;
+        for (var i = 0; i < arr.length; i++) {
+            for (var j = 0; j < arr[i].length; j++) {
+                if (arr[i][j] == "True") {
+                    var arr1 = [];
+                    arr1.push(i);
+                    arr1.push(j);
+                    indexes.push(arr1);
+                }
+            }
         }
-        else if(this.sliderValue == 2){
-        this.changeDiv.nativeElement.style.fontSize = "20px";
-        this.changeDiv1.nativeElement.style.fontSize = "20px";
-        this.changeDiv2.nativeElement.style.fontSize = "20px";
-        this.changeDiv3.nativeElement.style.fontSize = "20px";
-        this.changeDiv4.nativeElement.style.fontSize = "20px";
-        this.changeDiv5.nativeElement.style.fontSize = "20px";
-        this.changeDiv6.nativeElement.style.fontSize = "20px";
-        this.changeDiv7.nativeElement.style.fontSize = "20px";
-        this.changeDiv8.nativeElement.style.fontSize = "20px";
-        this.changeDiv9.nativeElement.style.fontSize = "20px";
-        this.changeDiv10.nativeElement.style.fontSize = "20px";
-        this.changeDiv11.nativeElement.style.fontSize = "20px";
-        this.changeDiv12.nativeElement.style.fontSize = "20px";
-        this.changeDiv13.nativeElement.style.fontSize = "20px";
-        this.changeDiv14.nativeElement.style.fontSize = "20px";
-        this.changeDiv15.nativeElement.style.fontSize = "20px";
-        this.changeDiv16.nativeElement.style.fontSize = "20px";
-        this.changeDiv17.nativeElement.style.fontSize = "20px";
-        this.changeDiv18.nativeElement.style.fontSize = "20px";
-        this.changeDiv19.nativeElement.style.fontSize = "20px";
-        this.changeDiv20.nativeElement.style.fontSize = "20px";
-        this.changeDiv21.nativeElement.style.fontSize = "20px";
-        this.changeDiv22.nativeElement.style.fontSize = "20px";
-        this.changeDiv23.nativeElement.style.fontSize = "20px";
-        this.changeDiv24.nativeElement.style.fontSize = "20px";
-        this.changeDiv25.nativeElement.style.fontSize = "20px";
-        this.changeDiv26.nativeElement.style.fontSize = "20px";
-        this.changeDiv27.nativeElement.style.fontSize = "20px";
-        this.changeDiv28.nativeElement.style.fontSize = "20px";
-        this.changeDiv29.nativeElement.style.fontSize = "20px";
+
+        var arr1 = [];
+        for (var i = 0; i < indexes.length; i++) {
+            arr1.push(i);
         }
-        else if(this.sliderValue == 3){
-          this.changeDiv.nativeElement.style.fontSize = "22px";
-          this.changeDiv1.nativeElement.style.fontSize = "22px";
-          this.changeDiv2.nativeElement.style.fontSize = "22px";
-          this.changeDiv3.nativeElement.style.fontSize = "22px";
-          this.changeDiv4.nativeElement.style.fontSize = "22px";
-          this.changeDiv5.nativeElement.style.fontSize = "22px";
-          this.changeDiv6.nativeElement.style.fontSize = "22px";
-          this.changeDiv7.nativeElement.style.fontSize = "22px";
-          this.changeDiv8.nativeElement.style.fontSize = "22px";
-          this.changeDiv9.nativeElement.style.fontSize = "22px";
-          this.changeDiv10.nativeElement.style.fontSize = "22px";
-          this.changeDiv11.nativeElement.style.fontSize = "22px";
-          this.changeDiv12.nativeElement.style.fontSize = "22px";
-          this.changeDiv13.nativeElement.style.fontSize = "22px";
-          this.changeDiv14.nativeElement.style.fontSize = "22px";
-          this.changeDiv15.nativeElement.style.fontSize = "22px";
-          this.changeDiv16.nativeElement.style.fontSize = "22px";
-          this.changeDiv17.nativeElement.style.fontSize = "22px";
-          this.changeDiv18.nativeElement.style.fontSize = "22px";
-          this.changeDiv19.nativeElement.style.fontSize = "22px";
-          this.changeDiv20.nativeElement.style.fontSize = "22px";
-          this.changeDiv21.nativeElement.style.fontSize = "22px";
-          this.changeDiv22.nativeElement.style.fontSize = "22px";
-          this.changeDiv23.nativeElement.style.fontSize = "22px";
-          this.changeDiv24.nativeElement.style.fontSize = "22px";
-          this.changeDiv25.nativeElement.style.fontSize = "22px";
-          this.changeDiv26.nativeElement.style.fontSize = "22px";
-          this.changeDiv27.nativeElement.style.fontSize = "22px";
-          this.changeDiv28.nativeElement.style.fontSize = "22px";
-          this.changeDiv29.nativeElement.style.fontSize = "22px";
+        var ranNums = [];
+        var i = arr1.length;
+        var j = 0;
+        var count = 0;
+        while (i--) {
+            if (count < 5) {
+                j = Math.floor(Math.random() * (i + 1));
+                ranNums.push(arr1[j]);
+                arr1.splice(j, 1);
+                count = count + 1;
+            } else {
+                break;
+            }
         }
-        else if(this.sliderValue == 4){
-        this.changeDiv.nativeElement.style.fontSize = "25px";
-        this.changeDiv1.nativeElement.style.fontSize = "25px";
-        this.changeDiv2.nativeElement.style.fontSize = "25px";
-        this.changeDiv3.nativeElement.style.fontSize = "25px";
-        this.changeDiv4.nativeElement.style.fontSize = "25px";
-        this.changeDiv5.nativeElement.style.fontSize = "25px";
-        this.changeDiv6.nativeElement.style.fontSize = "25px";
-        this.changeDiv7.nativeElement.style.fontSize = "25px";
-        this.changeDiv8.nativeElement.style.fontSize = "25px";
-        this.changeDiv9.nativeElement.style.fontSize = "25px";
-        this.changeDiv10.nativeElement.style.fontSize = "25px";
-        this.changeDiv11.nativeElement.style.fontSize = "25px";
-        this.changeDiv12.nativeElement.style.fontSize = "25px";
-        this.changeDiv13.nativeElement.style.fontSize = "25px";
-        this.changeDiv14.nativeElement.style.fontSize = "25px";
-        this.changeDiv15.nativeElement.style.fontSize = "25px";
-        this.changeDiv16.nativeElement.style.fontSize = "25px";
-        this.changeDiv17.nativeElement.style.fontSize = "25px";
-        this.changeDiv18.nativeElement.style.fontSize = "25px";
-        this.changeDiv19.nativeElement.style.fontSize = "25px";
-        this.changeDiv20.nativeElement.style.fontSize = "25px";
-        this.changeDiv21.nativeElement.style.fontSize = "25px";
-        this.changeDiv22.nativeElement.style.fontSize = "25px";
-        this.changeDiv23.nativeElement.style.fontSize = "25px";
-        this.changeDiv24.nativeElement.style.fontSize = "25px";
-        this.changeDiv25.nativeElement.style.fontSize = "25px";
-        this.changeDiv26.nativeElement.style.fontSize = "25px";
-        this.changeDiv27.nativeElement.style.fontSize = "25px";
-        this.changeDiv28.nativeElement.style.fontSize = "25px";
-        this.changeDiv29.nativeElement.style.fontSize = "25px";
+
+        //
+        for (var i = 0; i < this.boldList.length; i++) {
+            var temp = [];
+            for (var j = 0; j < 6; j++) {
+                temp.push("False");
+            }
+            this.finalList1.push(temp);
         }
-        else if(this.sliderValue == 5){
-        this.changeDiv.nativeElement.style.fontSize = "50px";
-        this.changeDiv1.nativeElement.style.fontSize = "50px";
-        this.changeDiv2.nativeElement.style.fontSize = "50px";
-        this.changeDiv3.nativeElement.style.fontSize = "50px";
-        this.changeDiv4.nativeElement.style.fontSize = "50px";
-        this.changeDiv5.nativeElement.style.fontSize = "50px";
-        
+
+        for (var i = 0; i < ranNums.length; i++) {
+            var item = indexes[ranNums[i]];
+
+            this.finalList1[item[0]][item[1]] = "True";
         }
+        // this.finalList1.splice(0,1)
+    }
+    preSurvey() {
+        this.router.navigateByUrl("/preSurvey");
     }
-    sliderFunction(e){
-      // 
-      this.sliderValue = e.value;
-      if(e.value == 1){
-        this.changeDiv.nativeElement.style.fontSize = "15px";
-        this.changeDiv1.nativeElement.style.fontSize = "15px";
-        this.changeDiv2.nativeElement.style.fontSize = "15px";
-        this.changeDiv3.nativeElement.style.fontSize = "15px";
-        this.changeDiv4.nativeElement.style.fontSize = "15px";
-        this.changeDiv5.nativeElement.style.fontSize = "15px";
-        this.changeDiv6.nativeElement.style.fontSize = "15px";
-        this.changeDiv7.nativeElement.style.fontSize = "15px";
-        this.changeDiv8.nativeElement.style.fontSize = "15px";
-        this.changeDiv9.nativeElement.style.fontSize = "15px";
-        this.changeDiv10.nativeElement.style.fontSize = "15px";
-        this.changeDiv11.nativeElement.style.fontSize = "15px";
-        this.changeDiv12.nativeElement.style.fontSize = "15px";
-        this.changeDiv13.nativeElement.style.fontSize = "15px";
-        this.changeDiv14.nativeElement.style.fontSize = "15px";
-        this.changeDiv15.nativeElement.style.fontSize = "15px";
-        this.changeDiv16.nativeElement.style.fontSize = "15px";
-        this.changeDiv17.nativeElement.style.fontSize = "15px";
-        this.changeDiv18.nativeElement.style.fontSize = "15px";
-        this.changeDiv19.nativeElement.style.fontSize = "15px";
-        this.changeDiv20.nativeElement.style.fontSize = "15px";
-        this.changeDiv21.nativeElement.style.fontSize = "15px";
-        this.changeDiv22.nativeElement.style.fontSize = "15px";
-        this.changeDiv23.nativeElement.style.fontSize = "15px";
-        this.changeDiv24.nativeElement.style.fontSize = "15px";
-        this.changeDiv25.nativeElement.style.fontSize = "15px";
-        this.changeDiv26.nativeElement.style.fontSize = "15px";
-        this.changeDiv27.nativeElement.style.fontSize = "15px";
-        this.changeDiv28.nativeElement.style.fontSize = "15px";
-        this.changeDiv29.nativeElement.style.fontSize = "15px";
 
+    nextButton() {
+        if (this.selectedIndex == 0) {
+            this.selectedIndex = this.selectedIndex + 1;
+            return;
         }
-        else if(e.value == 2){
-        this.changeDiv.nativeElement.style.fontSize = "20px";
-        this.changeDiv1.nativeElement.style.fontSize = "20px";
-        this.changeDiv2.nativeElement.style.fontSize = "20px";
-        this.changeDiv3.nativeElement.style.fontSize = "20px";
-        this.changeDiv4.nativeElement.style.fontSize = "20px";
-        this.changeDiv5.nativeElement.style.fontSize = "20px";
-        this.changeDiv6.nativeElement.style.fontSize = "20px";
-        this.changeDiv7.nativeElement.style.fontSize = "20px";
-        this.changeDiv8.nativeElement.style.fontSize = "20px";
-        this.changeDiv9.nativeElement.style.fontSize = "20px";
-        this.changeDiv10.nativeElement.style.fontSize = "20px";
-        this.changeDiv11.nativeElement.style.fontSize = "20px";
-        this.changeDiv12.nativeElement.style.fontSize = "20px";
-        this.changeDiv13.nativeElement.style.fontSize = "20px";
-        this.changeDiv14.nativeElement.style.fontSize = "20px";
-        this.changeDiv15.nativeElement.style.fontSize = "20px";
-        this.changeDiv16.nativeElement.style.fontSize = "20px";
-        this.changeDiv17.nativeElement.style.fontSize = "20px";
-        this.changeDiv18.nativeElement.style.fontSize = "20px";
-        this.changeDiv19.nativeElement.style.fontSize = "20px";
-        this.changeDiv20.nativeElement.style.fontSize = "20px";
-        this.changeDiv21.nativeElement.style.fontSize = "20px";
-        this.changeDiv22.nativeElement.style.fontSize = "20px";
-        this.changeDiv23.nativeElement.style.fontSize = "20px";
-        this.changeDiv24.nativeElement.style.fontSize = "20px";
-        this.changeDiv25.nativeElement.style.fontSize = "20px";
-        this.changeDiv26.nativeElement.style.fontSize = "20px";
-        this.changeDiv27.nativeElement.style.fontSize = "20px";
-        this.changeDiv28.nativeElement.style.fontSize = "20px";
-        this.changeDiv29.nativeElement.style.fontSize = "20px";
-        }
-        else if(e.value == 3){
-          this.changeDiv.nativeElement.style.fontSize = "22px";
-          this.changeDiv1.nativeElement.style.fontSize = "22px";
-          this.changeDiv2.nativeElement.style.fontSize = "22px";
-          this.changeDiv3.nativeElement.style.fontSize = "22px";
-          this.changeDiv4.nativeElement.style.fontSize = "22px";
-          this.changeDiv5.nativeElement.style.fontSize = "22px";
-          this.changeDiv6.nativeElement.style.fontSize = "22px";
-          this.changeDiv7.nativeElement.style.fontSize = "22px";
-          this.changeDiv8.nativeElement.style.fontSize = "22px";
-          this.changeDiv9.nativeElement.style.fontSize = "22px";
-          this.changeDiv10.nativeElement.style.fontSize = "22px";
-          this.changeDiv11.nativeElement.style.fontSize = "22px";
-          this.changeDiv12.nativeElement.style.fontSize = "22px";
-          this.changeDiv13.nativeElement.style.fontSize = "22px";
-          this.changeDiv14.nativeElement.style.fontSize = "22px";
-          this.changeDiv15.nativeElement.style.fontSize = "22px";
-          this.changeDiv16.nativeElement.style.fontSize = "22px";
-          this.changeDiv17.nativeElement.style.fontSize = "22px";
-          this.changeDiv18.nativeElement.style.fontSize = "22px";
-          this.changeDiv19.nativeElement.style.fontSize = "22px";
-          this.changeDiv20.nativeElement.style.fontSize = "22px";
-          this.changeDiv21.nativeElement.style.fontSize = "22px";
-          this.changeDiv22.nativeElement.style.fontSize = "22px";
-          this.changeDiv23.nativeElement.style.fontSize = "22px";
-          this.changeDiv24.nativeElement.style.fontSize = "22px";
-          this.changeDiv25.nativeElement.style.fontSize = "22px";
-          this.changeDiv26.nativeElement.style.fontSize = "22px";
-          this.changeDiv27.nativeElement.style.fontSize = "22px";
-          this.changeDiv28.nativeElement.style.fontSize = "22px";
-          this.changeDiv29.nativeElement.style.fontSize = "22px";
+        if (this.selectedIndex == 7) {
+            this.router.navigateByUrl("/dashboard");
+            return;
         }
-        else if(e.value == 4){
-        this.changeDiv.nativeElement.style.fontSize = "25px";
-        this.changeDiv1.nativeElement.style.fontSize = "25px";
-        this.changeDiv2.nativeElement.style.fontSize = "25px";
-        this.changeDiv3.nativeElement.style.fontSize = "25px";
-        this.changeDiv4.nativeElement.style.fontSize = "25px";
-        this.changeDiv5.nativeElement.style.fontSize = "25px";
-        this.changeDiv6.nativeElement.style.fontSize = "25px";
-        this.changeDiv7.nativeElement.style.fontSize = "25px";
-        this.changeDiv8.nativeElement.style.fontSize = "25px";
-        this.changeDiv9.nativeElement.style.fontSize = "25px";
-        this.changeDiv10.nativeElement.style.fontSize = "25px";
-        this.changeDiv11.nativeElement.style.fontSize = "25px";
-        this.changeDiv12.nativeElement.style.fontSize = "25px";
-        this.changeDiv13.nativeElement.style.fontSize = "25px";
-        this.changeDiv14.nativeElement.style.fontSize = "25px";
-        this.changeDiv15.nativeElement.style.fontSize = "25px";
-        this.changeDiv16.nativeElement.style.fontSize = "25px";
-        this.changeDiv17.nativeElement.style.fontSize = "25px";
-        this.changeDiv18.nativeElement.style.fontSize = "25px";
-        this.changeDiv19.nativeElement.style.fontSize = "25px";
-        this.changeDiv20.nativeElement.style.fontSize = "25px";
-        this.changeDiv21.nativeElement.style.fontSize = "25px";
-        this.changeDiv22.nativeElement.style.fontSize = "25px";
-        this.changeDiv23.nativeElement.style.fontSize = "25px";
-        this.changeDiv24.nativeElement.style.fontSize = "25px";
-        this.changeDiv25.nativeElement.style.fontSize = "25px";
-        this.changeDiv26.nativeElement.style.fontSize = "25px";
-        this.changeDiv27.nativeElement.style.fontSize = "25px";
-        this.changeDiv28.nativeElement.style.fontSize = "25px";
-        this.changeDiv29.nativeElement.style.fontSize = "25px";
+
+        var numberList = [];
+        var flag = true;
+        for (let key in this.attitudeForm.value) {
+            if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
+                flag = false;
+                Swal.fire({
+                    text: "Please enter values from 1 through 6 only.",
+                    icon: "warning",
+                }).then((res) => {});
+                break;
+            }
+            if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
+                numberList.push(this.attitudeForm.value[key]);
+            } else {
+                flag = false;
+                Swal.fire({
+                    text: "The inputs have been repeated. Please enter values from 1 through 6.",
+                    icon: "warning",
+                }).then((res) => {});
+                break;
+            }
         }
-        else if(e.value == 5){
-        this.changeDiv.nativeElement.style.fontSize = "50px";
-        this.changeDiv1.nativeElement.style.fontSize = "50px";
-        this.changeDiv2.nativeElement.style.fontSize = "50px";
-        this.changeDiv3.nativeElement.style.fontSize = "50px";
-        this.changeDiv4.nativeElement.style.fontSize = "50px";
-        this.changeDiv5.nativeElement.style.fontSize = "50px";
-        
+        if (!this.buttonClick) {
+            flag = false;
+            Swal.fire({
+                text: "Click on the word '" + this.attributes[this.selectedIndex - 1] + "' and respond to the prompt.",
+                icon: "warning",
+            }).then((res) => {});
         }
+        if (flag) {
+            if (this.selectedIndex == 7) {
+                this.router.navigateByUrl("/postSurvey");
+            }
+            this.sliderFunction1();
+            var formData = {};
+            formData["topic"] = this.attributes[this.selectedIndex - 1];
+            if (this.attributes[this.selectedIndex - 1] == "Attitude") {
+                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalCompetence"] = "F. " + this.attitudeForm.value["F"];
+                formData["culturalProficiency"] = "E. " + this.attitudeForm.value["E"];
+            } else if (this.attributes[this.selectedIndex - 1] == "Empathy") {
+                formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalBlindness"] = "F. " + this.attitudeForm.value["F"];
+                formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalCompetence"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalProficiency"] = "C. " + this.attitudeForm.value["C"];
+            } else if (this.attributes[this.selectedIndex - 1] == "Policy") {
+                formData["culturalDestructiveness"] = "F. " + this.attitudeForm.value["F"];
+                formData["culturalIncapacity"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalCompetence"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalProficiency"] = "A. " + this.attitudeForm.value["A"];
+            } else if (this.attributes[this.selectedIndex - 1] == "Professionalism") {
+                formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalCompetence"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+            } else if (this.attributes[this.selectedIndex - 1] == "Teaching Practice") {
+                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+            }
 
+            this.endTime = new Date();
+
+            this.durationTime = (this.endTime - this.startTime) / 1000;
+            this.durationTime = this.durationTime / 60;
+
+            formData["description"] = this.wordDescription;
+            formData["duration"] = this.durationTime;
+            this.apiService.postFormData(formData).subscribe(
+                (res) => {
+                    //
+                },
+                (err) => {}
+            );
+            // this.getForm();
+            this.selectedIndex = this.selectedIndex + 1;
+            this.buttonClick = false;
+            this.startTime = new Date();
+            this.attitudeForm = this.fb.group({
+                A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            });
+        }
     }
-  constructor(private fb: FormBuilder, private apiService: CPCQService,private router: Router, private formService : FirstForm,private domSanitizer: DomSanitizer,public dialog: MatDialog, private loginService : Login) { }
-  openDialog(i,j,id) {
-    // 
-    
-    
-    
-    
-    var questAns = {}
-    var scores = []
-    var comments = []
-    for(let key in this.scoreRes){
-      if(this.scoreRes[key]["topic"] == this.attributes[i]){
-       questAns = this.scoreRes[key][this.columnHeadings[j]]
-       scores = this.scoreRes[key]['scores'][id]
-       comments = this.scoreRes[key]['comment1'][id]
-      }
-    }
-    
-    var arr = [];
-    arr.push(this.attributes[i]);
-    arr.push(j);
-    arr.push(this.columnHeadings[j])
-    arr.push(id)
-    arr.push(questAns)
-    arr.push(scores)
-    arr.push(comments)
-    const dialogRef = this.dialog.open(DialogFormComponent, {
-      data: {
-        animal: arr,
-        status : "form1"
-      },
-    });
-    dialogRef.afterClosed().subscribe(result => {
-      
-      if(this.responsesArray[i][j][1] == "colorbold"){
-        this.unpackedCount = this.unpackedCount +1
-      }
-      
-    })
-  }
-
-  openWordDialog(i) {
-    // 
-    this.buttonClick = true;
-    const dialogRef = this.dialog.open(DialogFormComponent, {
-      data: {
-        animal: i,
-        status : "word"
-      },
-      disableClose:true
-    });
-
-    dialogRef.afterClosed().subscribe(result => {
-      
-      this.wordDescription = result;
-    })
-  }
-
-  helpDialog(i) {
-    // 
-    this.dialog.open(DialogFormComponent, {
-      data: {
-        animal: i,
-        status : "help"
-      }
-    });
-  }
-
-  keyPressFunc(e){
-
-    // 
-    var numbersList = ["1"];
-    for (let key in this.attitudeForm.value) {
-      
-
-      if(numbersList.indexOf(this.attitudeForm.value[key]) == -1){
-        // 
-        return "Number";
-      }
+
+    postSurvey() {
+        this.router.navigateByUrl("/postSurvey");
     }
 
-    
-  }
-
-  getEmailError(){
-    return "Error";
-  }
-  getResponses(){
-    this.apiService.getResponsesData().subscribe((res) => {
-      for(let key in res){
-        this.temp = []
-        for(let key1 in res[key]){
-          this.temp.push(res[key][key1])
-        }
-        this.responsesArray.push(this.temp)
-      }
-      
-    })
-  }
-
-
-  getForm(){
-    var arr = [];
-    var arr1 = [];
-    var arr2 = [];
-    var i;
-    var attitudeResult = [];
-    var empathyResult = [];
-    var policyResult = [];
-    var profResult = [];
-    var teachingResult = [];
-    this.finalList = [[]]
-    this.boldList = [[]]
-    this.apiService.getFormData().subscribe((res) => {
-      for (let key in res){
-        arr = [];
-        if(res[key]["topic"] == "Attitude"){
-          attitudeResult.push("Attitude");
-          arr.push("Attitude");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0 )
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1])-4)  >= 2 ? 1 : 0)
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1])-5)  >= 2 ? 1 : 0)
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1])-6)  >= 2 ? 1 : 0)
-        } 
-        else if (res[key]["topic"] == "Empathy"){
-          empathyResult.push("Empathy")
-          arr.push("Empathy");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0 )
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1])-4)  >= 2 ? 1 : 0)
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1])-5)  >= 2 ? 1 : 0)
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1])-6)  >= 2 ? 1 : 0)
-        }
-        else if (res[key]["topic"] == "Policy"){
-          policyResult.push("Policy")
-          arr.push("Policy");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-
-          policyResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          policyResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          policyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0 )
-          policyResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1])-4)  >= 2 ? 1 : 0)
-          policyResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1])-5)  >= 2 ? 1 : 0)
-          policyResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1])-6)  >= 2 ? 1 : 0)
-        }
-        else if (res[key]["topic"] == "Professionalism"){
-          profResult.push("Professionalism");
-          arr.push("Professionalism");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-
-          profResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          profResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          profResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0 )
-          profResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1])-4)  >= 2 ? 1 : 0)
-          profResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1])-5)  >= 2 ? 1 : 0)
-          profResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1])-6)  >= 2 ? 1 : 0)
-        }
-        else if (res[key]["topic"] == "Teaching Practice"){
-          arr.push("Teaching Pracice");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-          teachingResult.push("Teaching Practice");
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0 )
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1])-4)  >= 2 ? 1 : 0)
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1])-5)  >= 2 ? 1 : 0)
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1])-6)  >= 2 ? 1 : 0)
+    submitForm1() {
+        if (this.unpackedCount == 5) {
+            this.endTime = new Date();
+
+            this.durationTime = (this.endTime - this.startTime) / 1000;
+            this.durationTime = this.durationTime / 60;
+
+            Swal.fire({
+                text: "Submitted",
+                icon: "success",
+            }).then((res) => {
+                if (res["isConfirmed"]) {
+                    // this.getForm()
+                    this.selectedIndex = this.selectedIndex + 1;
+                }
+            });
+        } else {
+            Swal.fire({
+                text: "Please click on all the yellow boxes and answer the questions in the prompt.",
+                icon: "warning",
+            }).then((res) => {});
         }
+    }
 
-        this.boldList.push(arr);
-
-      }
-      this.finalList.push(attitudeResult)
-      this.finalList.push(empathyResult)
-      this.finalList.push(policyResult)
-      this.finalList.push(profResult)
-      this.finalList.push(teachingResult)
-    })
-    this.finalList.splice(0, 1);
-    this.boldList.splice(0, 1);
-    // this.getAllIndexes(this.finalList,1)
-    
-    
-
-  }
-
-  emoji:any;
-  changeEmojiSize(data){
-    document.getElementById("angry").style.height = "30px"
-    document.getElementById("angry").style.width = "30px"
-    document.getElementById("sad").style.height = "30px"
-    document.getElementById("sad").style.width = "30px"
-    document.getElementById("neutral").style.height = "30px"
-    document.getElementById("neutral").style.width = "30px"
-    document.getElementById("smile").style.height = "30px"
-    document.getElementById("smile").style.width = "30px"
-    document.getElementById("heart").style.height = "30px"
-    document.getElementById("heart").style.width = "30px"
-    document.getElementById(data).style.height = "50px"
-    document.getElementById(data).style.width = "50px"
-
-    this.emoji = data;
-  }
-
-  thumbs:any;
-  changeThumbsSize(data){
-    document.getElementById("thumbsup").style.height = "30px"
-    document.getElementById("thumbsup").style.width = "30px"
-    document.getElementById("thumbsdown").style.height = "30px"
-    document.getElementById("thumbsdown").style.width = "30px"
-
-    document.getElementById(data).style.height = "50px"
-    document.getElementById(data).style.width = "50px"
-    this.thumbs = data;
-  }
-  finalSubmit(){
-    this.finalFeedbackForm.value["q6"] = this.thumbs
-    this.finalFeedbackForm.value["q7"] = this.emoji
-
-    this.endTime = new Date()
-    
-    this.durationTime = (this.endTime - this.startTime)/1000
-    this.durationTime = this.durationTime/ 60
-
-    this.apiService.postFeedbackForm(this.finalFeedbackForm.value).subscribe((res) => {
-      this.apiService.changeCPCQStatus().subscribe((res1) => {
-        Swal.fire({
-          text: "Submitted",
-          icon: "success"
-        }).then((res) => {
-          if(res["isConfirmed"]){
-            this.router.navigateByUrl("/result")
-          }
-        })
-        
-      })
-    },(err) => {
-      
-    })
-    
-  }
-  responsesArray =[]
-temp = []
-scoreRes : any;
-  ngOnInit(): void {
-    this.startTime = new Date()
-    this.finalFeedbackForm = this.fb.group({
-      q1:[""],
-      q2:[""],
-      q3:[""],
-      q4:[""],
-      q5:[""],
-      q6:[""],
-      q7:[""],
-    })
-    this.apiService.getResponsesData().subscribe((res) => {
-      for(let key in res){
-        this.temp = []
-        for(let key1 in res[key]){
-          this.temp.push(res[key][key1])
-        }
-        this.responsesArray.push(this.temp)
-      }
-      this.apiService.getScoreInfo().subscribe((res) => {
-        this.scoreRes = res
-        
-        for(let key in res){
-          for(let category in res[key]["scores"]["category"]){
-            var firstIndex = this.attributes.indexOf(res[key]["topic"])
-            
-            var secondIndex = this.columnHeadings.indexOf(res[key]["scores"]["category"][category])
-  
-            
-            if(firstIndex != -1 && secondIndex != -1){
-              this.responsesArray[firstIndex][secondIndex][1] = "Colored"
-            }
-    
-          }
-  
-        }
-        this.progressBar = false;
-        
-        // this.apiService.patchStatus("scoresstatus").subscribe((res) => {
-        //   
-        // })
-        
-      })
-      
-    })
-
-    
-    // this.apiService.getScoreInfo().subscribe((res) => {
-    //   this.scoreRes = res
-    //   
-    //   for(let key in res){
-    //     for(let category in res[key]["scores"]["category"]){
-    //       var firstIndex = this.attributes.indexOf(res[key]["topic"])
-          
-    //       var secondIndex = this.columnHeadings.indexOf(res[key]["scores"]["category"][category])
-    //       
-
-          
-    //       if(firstIndex != -1 && secondIndex != -1){
-    //         
-    //         this.responsesArray[firstIndex][secondIndex][1] = "Colored"
-    //       }
-  
-    //     }
-
-    //   }
-    //   this.progressBar = false;
-    //   
-    //   // this.apiService.patchStatus("scoresstatus").subscribe((res) => {
-    //   //   
-    //   // })
-      
-    // })
-
-    this.apiService.getScoreVisualization().subscribe((res) => {
-      var temp = 0;
-      for(var i = 0; i<res["category"].length;i++){
-        temp = temp + res["series"][i]['data']
-      }
-      this.meanNumber = temp /4.0;
-      
-      this.meanValue = temp /4.0;
-      
-
-      if(this.meanValue >=0 && this.meanValue <= 1){  
-        if(this.meanValue ==1 )
-        this.meanValue = this.columnHeadings1[0]
-        else
-        this.meanValue = " somewhere between Cultural Destructiveness and Cultural Incapacity"
-        
-      }
-      if(this.meanValue >1 && this.meanValue <= 2){  
-        if(this.meanValue ==2 )
-        this.meanValue = this.columnHeadings1[1]
-        else
-        this.meanValue = " somewhere between Cultural Incapacity and Cultural Blindness"
-        
-      }
-      if(this.meanValue >2 && this.meanValue <= 3){  
-        if(this.meanValue ==3 )
-        this.meanValue = this.columnHeadings1[2]
-        else
-        this.meanValue = " somewhere between Cultural Blindness and Cultural PreCompetence"
-      }
-      if(this.meanValue >3 && this.meanValue <= 4){  
-        if(this.meanValue ==4 )
-        this.meanValue = this.columnHeadings1[3]
-        else
-        this.meanValue = " somewhere between Cultural PreCompetence and Cultural Competence"
-      }
-      if(this.meanValue >4 && this.meanValue <= 5){  
-        if(this.meanValue ==5 )
-        this.meanValue = this.columnHeadings1[4]
-        else
-        this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency"
-      }
-      if(this.meanValue >5){  
-        if(this.meanValue ==5 )
-        this.meanValue = this.columnHeadings1[4]
-        else
-        this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency"
-      }
-    })
-
-    this.apiService.attitudeData().subscribe((res) => {
-      // 
-      this.attitude = res[0];
-      // 
-    },(err) => {
-      
-    })
-
-    this.apiService.empathyData().subscribe((res) => {
-      // 
-      this.empathy = res[0];
-      // 
-    },(err) => {
-      
-    })
-
-    this.apiService.policyData().subscribe((res) => {
-      this.policy = res[0];
-    },(err) => {
-      
-    })
-
-    this.apiService.professionalismData().subscribe((res) => {
-      this.professionalism = res[0];
-    },(err) => {
-      
-    })
-
-    this.apiService.teachingData().subscribe((res) => {
-      this.teachingPractice = res[0];
-    },(err) => {
-      
-    })
-
-    this.attitudeForm = this.fb.group({
-      A:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      B:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      C:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      D:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      E:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      F:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      description:["",[Validators.required]]
-
-    })
-
-    this.empathyForm = this.fb.group({
-      A:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      B:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      C:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      D:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      E:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      F:["",[Validators.minLength(1),Validators.maxLength(1)]],
-
-    })
-
-    this.policyForm = this.fb.group({
-      A:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      B:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      C:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      D:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      E:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      F:["",[Validators.minLength(1),Validators.maxLength(1)]],
-
-    })
-
-
-    var arr = [];
-    var arr1 = [];
-    var arr2 = [];
-    var i;
-    for(var j = 0;j<5;j++){
-      arr = [];
-      arr1 = [];
-      arr2 = [];
-      i = 0;
-      while(i<6){
-        var item1 = Math.floor(Math.random() * (7 - 1) + 1); 
-        if(arr1.indexOf(item1) == -1){
-          if(i == 0){
-            arr.push(this.attributes[j]);
-            arr.push(this.rowLetters[j][i] + ". "+ item1);
-            arr1.push(item1);
-            if(arr1[arr1.length -1] >2){
-              // 
-              arr2.push("True");
-            }
-            else{
-              arr2.push("False");
-            }
-          }
-          else{
-            arr.push(this.rowLetters[j][i] + ". "+ item1);
-            arr1.push(item1);
-            if(i==1){
-              if(arr1[arr1.length - 1] >3){
-                arr2.push("True");
-              }
-              else{
-                arr2.push("False");
-              }
+    submitForm() {
+        if (this.selectedIndex == 5) {
+            var numberList = [];
+            var flag = false;
+
+            for (let key in this.attitudeForm.value) {
+                if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
+                    flag = true;
+                    Swal.fire({
+                        text: "Please enter values from 1 through 6 only.",
+                        icon: "warning",
+                    }).then((res) => {});
+                    break;
+                }
+                if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
+                    numberList.push(this.attitudeForm.value[key]);
+                } else {
+                    flag = true;
+                    Swal.fire({
+                        text: "The inputs have been repeated. Please enter values from 1 through 6.",
+                        icon: "warning",
+                    }).then((res) => {});
+                    break;
+                }
             }
-            else if(i==2){
-              if(arr1[arr1.length - 1] >4 || arr1[arr1.length - 1] == 1){
-                arr2.push("True");
-              }
-              else{
-                arr2.push("False");
-              }
+            if (!this.buttonClick) {
+                flag = true;
+                Swal.fire({
+                    text:
+                        "Click on the word '" +
+                        this.attributes[this.selectedIndex - 1] +
+                        "' and respond to the prompt.",
+                    icon: "warning",
+                }).then((res) => {});
             }
-            else if(i==3){
-              if(arr1[arr1.length - 1] >5 || arr1[arr1.length - 1] <4){
-                arr2.push("True");
-              }
-              else{
-                arr2.push("False");
-              }
+            if (!flag) {
+                //
+                var formData = {};
+
+                formData["topic"] = this.attributes[this.selectedIndex - 1];
+                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+
+                formData["description"] = this.wordDescription;
+                this.endTime = new Date();
+
+                this.durationTime = (this.endTime - this.startTime) / 1000;
+                this.durationTime = this.durationTime / 60;
+
+                formData["duration"] = this.durationTime;
+                this.apiService.postFormData(formData).subscribe(
+                    (res) => {
+                        //
+                        Swal.fire({
+                            text: "Submitted",
+                            icon: "success",
+                        }).then((res) => {
+                            if (res["isConfirmed"]) {
+                                // this.getForm()
+                                this.getResponses();
+
+                                this.selectedIndex = this.selectedIndex + 1;
+                                this.startTime = new Date();
+                            }
+                        });
+                    },
+                    (err) => {}
+                );
             }
-            else if(i==4){
-              if(arr1[arr1.length - 1] <4){
-                arr2.push("True");
-              }
-              else{
-                arr2.push("False");
-              }
-            }
-            else if(i==5){
-              if(arr1[arr1.length - 1] <5){
-                arr2.push("True");
-              }
-              else{
-                arr2.push("False");
-              }
-            }
-          }
-          i = i + 1;
         }
-        else{
-          continue;
-        }
-        
-      }
-      this.formValues.push(arr);
-      this.boldList.push(arr1);
-      this.randomList.push(arr2);
     }
-    this.boldList.splice(0, 1);
-    this.randomList.splice(0, 1);
-    
-    
-    
-    this.getAllIndexes(this.randomList,"True");
-    this.loaded = true;
-  }
-
-  getAllIndexes(arr, val) {
-    var indexes = [];
-    var i = -1;
-    for(var i = 0;i<arr.length;i++){
-      for(var j = 0;j<arr[i].length;j++){
-        if(arr[i][j] == "True"){
-          var arr1 = [];
-          arr1.push(i);
-          arr1.push(j)
-          indexes.push(arr1);
+
+    submit() {
+        //
+        var tempDict;
+        this.responseList = [];
+        for (let key in this.firstForm.value) {
+            tempDict = {};
+            tempDict["question"] = key;
+            tempDict["response"] = this.firstForm.value[key];
+            this.responseList.push(tempDict);
         }
-      }
-    }
-    
-    var arr1 = [];
-    for(var i = 0;i<indexes.length;i++){
-      arr1.push(i);
-    }
-    var ranNums = [];
-    var i = arr1.length;
-    var j = 0;
-    var count = 0;
-    while (i--) {
-      
-      if(count < 5){
-        j = Math.floor(Math.random() * (i+1));
-      ranNums.push(arr1[j]);
-      arr1.splice(j,1);
-      count = count+1;
-      }
-      else{
-        break;
-      }
-  }
-  
-
-  // 
-  for(var i = 0;i<this.boldList.length;i++){
-    var temp = [];
-    for(var j = 0 ;j <6;j++){
-      temp.push("False");
-    }
-    this.finalList1.push(temp);
-  }
-  
-  
-  for(var i = 0;i<ranNums.length;i++){
-    var item = indexes[ranNums[i]];
-    
-    this.finalList1[item[0]][item[1]] = "True";
-  }
-  // this.finalList1.splice(0,1)
-  
-}
-  preSurvey(){
-    this.router.navigateByUrl("/preSurvey");
-  }
-
-  nextButton(){
-    if(this.selectedIndex == 0){
-      this.selectedIndex = this.selectedIndex + 1;
-      return;
-    }
-    if(this.selectedIndex == 7){
-      this.router.navigateByUrl('/dashboard');
-      return;
+        //
+
+        this.formService.submitResponse(this.responseList).subscribe(
+            (res) => {
+                //
+                Swal.fire({
+                    text: "Submitted",
+                    icon: "success",
+                });
+                this.router.navigateByUrl("/game");
+            },
+            (err) => {
+                Swal.fire({
+                    text: "Duplicate Entries",
+                    icon: "warning",
+                });
+            }
+        );
     }
 
-    var numberList = [];
-    var flag = true;
-    for (let key in this.attitudeForm.value) {
-      
-      if((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && (key != "description")){
-        flag = false;
-        Swal.fire({
-          text: "Please enter values from 1 through 6 only.",
-          icon: "warning"
-        }).then((res) => {
-        })
-        break;
-      }
-      if(numberList.indexOf(this.attitudeForm.value[key]) == -1){
-        numberList.push(this.attitudeForm.value[key]);
-      }
-      else{
-        flag = false;
-        Swal.fire({
-          text: "The inputs have been repeated. Please enter values from 1 through 6.",
-          icon: "warning"
-        }).then((res) => {
-        })
-        break;
-      }
+    title = "micRecorder";
+    //Lets declare Record OBJ
+    record;
+    //Will use this flag for toggeling recording
+    recording = false;
+    //URL of Blob
+    url;
+    error;
+    sanitize(url: string) {
+        return this.domSanitizer.bypassSecurityTrustUrl(url);
     }
-    if(!this.buttonClick){
-      flag = false;
-      Swal.fire({
-
-        text: "Click on the word '"+ this.attributes[this.selectedIndex-1]+"' and respond to the prompt.",
-        icon: "warning"
-      }).then((res) => {
-      })
+    /**
+     * Start recording.
+     */
+    initiateRecording() {
+        this.recording = true;
+        let mediaConstraints = {
+            video: false,
+            audio: true,
+        };
+        navigator.mediaDevices
+            .getUserMedia(mediaConstraints)
+            .then(this.successCallback.bind(this), this.errorCallback.bind(this));
     }
-    if(flag){
-      
-      if(this.selectedIndex == 7){
-        this.router.navigateByUrl("/postSurvey");
-      }
-      this.sliderFunction1();
-      var formData = {}
-      formData['topic'] = this.attributes[this.selectedIndex-1]
-      if(this.attributes[this.selectedIndex-1] == "Attitude"){
-        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value['C']
-        formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalPreCompetence"] = "A. " + this.attitudeForm.value['A']
-        formData["culturalCompetence"] = "F. " + this.attitudeForm.value['F']
-        formData["culturalProficiency"] = "E. " + this.attitudeForm.value['E']
-
-      }
-      else if(this.attributes[this.selectedIndex-1] == "Empathy"){
-        formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value['E']
-        formData["culturalIncapacity"] = "A. " + this.attitudeForm.value['A']
-        formData["culturalBlindness"] = "F. " + this.attitudeForm.value['F']
-        formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalCompetence"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalProficiency"] = "C. " + this.attitudeForm.value['C']
-      }
-      else if(this.attributes[this.selectedIndex-1] == "Policy"){
-        formData["culturalDestructiveness"] = "F. " + this.attitudeForm.value['F']
-        formData["culturalIncapacity"] = "E. " + this.attitudeForm.value['E']
-        formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalPreCompetence"] = "C. " + this.attitudeForm.value['C']
-        formData["culturalCompetence"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalProficiency"] = "A. " + this.attitudeForm.value['A']
-      }
-      else if(this.attributes[this.selectedIndex-1] == "Professionalism"){
-        formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value['E']
-        formData["culturalIncapacity"] = "A. " + this.attitudeForm.value['A']
-        formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalCompetence"] = "C. " + this.attitudeForm.value['C']
-        formData["culturalProficiency"] = "F. " + this.attitudeForm.value['F']
-      }
-      else if(this.attributes[this.selectedIndex-1] == "Teaching Practice"){
-        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value['C']
-        formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value['E']
-        formData["culturalCompetence"] = "A. " + this.attitudeForm.value['A']
-        formData["culturalProficiency"] = "F. " + this.attitudeForm.value['F']
-      }
-
-      this.endTime = new Date()
-      
-      this.durationTime = (this.endTime - this.startTime)/1000
-      this.durationTime = this.durationTime/ 60
-      
-      formData["description"] = this.wordDescription
-      formData["duration"] = this.durationTime
-      this.apiService.postFormData(formData).subscribe((res) => {
-        // 
-      },(err) => {
-        
-      })
-      // this.getForm();
-      this.selectedIndex = this.selectedIndex + 1;
-      this.buttonClick = false;
-      this.startTime = new Date()
-      this.attitudeForm = this.fb.group({
-        A:["",[Validators.minLength(1),Validators.maxLength(1)]],
-        B:["",[Validators.minLength(1),Validators.maxLength(1)]],
-        C:["",[Validators.minLength(1),Validators.maxLength(1)]],
-        D:["",[Validators.minLength(1),Validators.maxLength(1)]],
-        E:["",[Validators.minLength(1),Validators.maxLength(1)]],
-        F:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      })
-    }
-   
-  }
-
-  postSurvey(){
-    this.router.navigateByUrl("/postSurvey");
-  }
-
-  submitForm1(){
-    if(this.unpackedCount == 5 ){
-      this.endTime = new Date()
-      
-      this.durationTime = (this.endTime - this.startTime)/1000
-      this.durationTime = this.durationTime/ 60
-
-    Swal.fire({
-      text: "Submitted",
-      icon: "success"
-    }).then((res) => {
-      if(res["isConfirmed"]){
-        // this.getForm()
-        this.selectedIndex = this.selectedIndex + 1;
-      }
-    })
+    /**
+     * Will be called automatically.
+     */
+    successCallback(stream) {
+        var options = {
+            mimeType: "audio/wav",
+            numberOfAudioChannels: 1,
+            // sampleRate: 16000,
+        };
+        //Start Actuall Recording
+        var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
+        this.record = new StereoAudioRecorder(stream, options);
+        this.record.record();
     }
-    else{
-      Swal.fire({
-        text: "Please click on all the yellow boxes and answer the questions in the prompt.",
-        icon: "warning"
-      }).then((res) => {
-      })
+    /**
+     * Stop recording.
+     */
+    stopRecording() {
+        this.recording = false;
+        this.record.stop(this.processRecording.bind(this));
     }
-    
-  }
-  
-  submitForm(){
-    if(this.selectedIndex == 5){
-      var numberList = [];
-      var flag = false;
-      
-      for (let key in this.attitudeForm.value) {
-        
-        if((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && (key != "description")){
-        
-
-          flag = true;
-          Swal.fire({
-            text: "Please enter values from 1 through 6 only.",
-            icon: "warning"
-          }).then((res) => {
-          })
-          break;
-        }
-        if(numberList.indexOf(this.attitudeForm.value[key]) == -1){
-          numberList.push(this.attitudeForm.value[key]);
-        }
-        else{
-          flag = true;
-          Swal.fire({
-            text: "The inputs have been repeated. Please enter values from 1 through 6.",
-            icon: "warning"
-          }).then((res) => {
-          })
-          break;
-        }
-      }
-      if(!this.buttonClick){
-        flag = true;
-        Swal.fire({
-          text: "Click on the word '"+ this.attributes[this.selectedIndex-1]+"' and respond to the prompt.",
-          icon: "warning"
-        }).then((res) => {
-        })
-      }
-      if(!flag){
-
-      
-      // 
-      var formData = {}
-
-      formData['topic'] = this.attributes[this.selectedIndex-1]
-      formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value['D']
-      formData["culturalIncapacity"] = "C. " + this.attitudeForm.value['C']
-      formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-      formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value['E']
-      formData["culturalCompetence"] = "A. " + this.attitudeForm.value['A']
-      formData["culturalProficiency"] = "F. " + this.attitudeForm.value['F']
-      
-      formData["description"] = this.wordDescription
-      this.endTime = new Date()
-      
-      this.durationTime = (this.endTime - this.startTime)/1000
-      this.durationTime = this.durationTime/ 60
-
-      formData["duration"] = this.durationTime
-      this.apiService.postFormData(formData).subscribe((res) => {
-        // 
-        Swal.fire({
-          text: "Submitted",
-          icon: "success"
-        }).then((res) => {
-          if(res["isConfirmed"]){
-            // this.getForm()
-        this.getResponses()
-
-            this.selectedIndex = this.selectedIndex + 1;
-            this.startTime = new Date()
-          }
-        })
-      },(err) => {
-        
-      })
+    /**
+     * processRecording Do what ever you want with blob
+     * @param  {any} blob Blog
+     */
+    processRecording(blob) {
+        this.url = URL.createObjectURL(blob);
+        //
+        //
     }
-   
-  }
-  }
-
-  submit(){
-    // 
-    var tempDict;
-    this.responseList = [];
-    for(let key in this.firstForm.value){
-      tempDict = {}
-      tempDict["question"] = key
-      tempDict["response"] = this.firstForm.value[key];
-      this.responseList.push(tempDict);
+    /**
+     * Process Error.
+     */
+    errorCallback(error) {
+        this.error = "Can not play audio in your browser";
     }
-    // 
-
-    this.formService.submitResponse(this.responseList).subscribe((res) => {
-      // 
-      Swal.fire({
-        text: "Submitted",
-        icon: "success"
-      })  
-      this.router.navigateByUrl("/game");
-    },(err) => {
-      
-      Swal.fire({
-        text: "Duplicate Entries",
-        icon: "warning"
-      })  
-    })
-
-  }
-
-  title = 'micRecorder';
-//Lets declare Record OBJ
-record;
-//Will use this flag for toggeling recording
-recording = false;
-//URL of Blob
-url;
-error;
-sanitize(url: string) {
-return this.domSanitizer.bypassSecurityTrustUrl(url);
-}
-/**
-* Start recording.
-*/
-initiateRecording() {
-this.recording = true;
-let mediaConstraints = {
-video: false,
-audio: true
-};
-navigator.mediaDevices.getUserMedia(mediaConstraints).then(this.successCallback.bind(this), this.errorCallback.bind(this));
-}
-/**
-* Will be called automatically.
-*/
-successCallback(stream) {
-var options = {
-mimeType: "audio/wav",
-numberOfAudioChannels: 1,
-// sampleRate: 16000,
-};
-//Start Actuall Recording
-var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
-this.record = new StereoAudioRecorder(stream, options);
-this.record.record();
-}
-/**
-* Stop recording.
-*/
-stopRecording() {
-this.recording = false;
-this.record.stop(this.processRecording.bind(this));
-}
-/**
-* processRecording Do what ever you want with blob
-* @param  {any} blob Blog
-*/
-processRecording(blob) {
-this.url = URL.createObjectURL(blob);
-// 
-// 
-}
-/**
-* Process Error.
-*/
-errorCallback(error) {
-this.error = 'Can not play audio in your browser';
-}
-
-
-
 }
diff --git a/src/environments/environment.ts b/src/environments/environment.ts
index ec8bd17..ca4dca9 100644
--- a/src/environments/environment.ts
+++ b/src/environments/environment.ts
@@ -5,6 +5,7 @@ const apiUrl = `${backendBaseUrl}/api`;
 export const environment = {
     production: false,
     auth0Settings: {
+        domain: "dev-x39z62vm.us.auth0.com",
         clientId: "jN2jYbC5bPdFaquIZGsxJNxkZe42KCDl",
         callBackUrl: "http://localhost:4200",
         logoutUrl: "http://localhost:4200",
diff --git a/src/services/login.sevice.ts b/src/services/login.service.ts
similarity index 76%
rename from src/services/login.sevice.ts
rename to src/services/login.service.ts
index 0aa8f2d..0ebaf47 100644
--- a/src/services/login.sevice.ts
+++ b/src/services/login.service.ts
@@ -1,17 +1,23 @@
 import { HttpClient } from "@angular/common/http";
 import { Injectable } from "@angular/core";
 import { environment } from "src/environments/environment";
+import { AuthService, User } from "@auth0/auth0-angular";
 
 @Injectable({
     providedIn: "root",
 })
-export class Login {
+export class LoginService {
     loginUrl = environment.loginUrl;
     registerUrl = environment.registerUrl;
     logoutUrl = environment.logoutUrl;
     baseUrl = environment.apiUrl;
+    token = "";
 
-    constructor(private http: HttpClient) {}
+    constructor(private http: HttpClient, private auth0Service: AuthService) {
+        auth0Service.idTokenClaims$.subscribe((claims) => {
+            console.log("claims", claims);
+        });
+    }
 
     login(data: any) {
         return this.http.post(`${this.loginUrl}`, data, {
@@ -73,4 +79,14 @@ export class Login {
             },
         });
     }
+
+    getTestUsers(token: string) {
+        console.log("token is", token);
+        return this.http.get(`http://localhost:3013/user`, {
+            params: { organization_id: "1" },
+            headers: {
+                Authorization: "Bearer " + token,
+            },
+        });
+    }
 }
-- 
GitLab


From a9c2e9914dd16be42b88e0a37b91f8466bb2feb4 Mon Sep 17 00:00:00 2001
From: ramesh <rdramesh2009@gmail.com>
Date: Mon, 11 Jul 2022 12:14:54 -0400
Subject: [PATCH 05/23] file re-arrangements and guards additions done

---
 .firebaserc                                   |   18 +-
 .prettierrc.json                              |   10 +-
 src/app/app-routing.module.ts                 |   84 +-
 src/app/app.module.ts                         |   58 +-
 .../about-comp/about-comp.component.css       |    0
 .../about-comp/about-comp.component.html      |    0
 .../about-comp/about-comp.component.spec.ts   |    0
 .../about-comp/about-comp.component.ts        |    0
 .../change-password.component.css             |    0
 .../change-password.component.html            |    0
 .../change-password.component.spec.ts         |    0
 .../change-password.component.ts              |    3 +-
 .../consent-form/consent-form.component.css   |    0
 .../consent-form/consent-form.component.html  |    0
 .../consent-form.component.spec.ts            |    0
 .../consent-form/consent-form.component.ts    |    0
 .../cpcq-form/cpcq-form.component.css         |    0
 .../cpcq-form/cpcq-form.component.html        |    0
 .../cpcq-form/cpcq-form.component.spec.ts     |    0
 .../cpcq-form/cpcq-form.component.ts          | 1206 ++++++++++++++++
 .../dialog-form/dialog-form.component.css     |    0
 .../dialog-form/dialog-form.component.html    |    0
 .../dialog-form/dialog-form.component.spec.ts |    0
 .../dialog-form/dialog-form.component.ts      |  489 +++++++
 .../dashboard-dialo.component.css             |    0
 .../dashboard-dialo.component.html            |    0
 .../dashboard-dialo.component.spec.ts         |    0
 .../dashboard-dialo.component.ts              |    2 +-
 .../dashboard/dashboard.component.css         |    0
 .../dashboard/dashboard.component.html        |    0
 .../dashboard/dashboard.component.spec.ts     |    0
 .../dashboard/dashboard.component.ts          |  359 +++++
 .../email-password.component.css              |    0
 .../email-password.component.html             |    0
 .../email-password.component.spec.ts          |    0
 .../email-password.component.ts               |    2 +-
 .../final-dashboard.component.css             |    0
 .../final-dashboard.component.html            |    0
 .../final-dashboard.component.spec.ts         |    0
 .../final-dashboard.component.ts              |  401 ++++++
 .../final-feedback.component.css              |    0
 .../final-feedback.component.html             |    0
 .../final-feedback.component.spec.ts          |    0
 .../final-feedback.component.ts               | 1206 ++++++++++++++++
 .../first-form/first-form.component.css       |    0
 .../first-form/first-form.component.html      |    0
 .../first-form/first-form.component.spec.ts   |    0
 .../first-form/first-form.component.ts        |  147 ++
 .../footer/footer.component.css               |    0
 .../footer/footer.component.html              |    0
 .../footer/footer.component.spec.ts           |    0
 .../footer/footer.component.ts                |    0
 .../forgot-password.component.css             |    0
 .../forgot-password.component.html            |    0
 .../forgot-password.component.spec.ts         |    0
 .../forgot-password.component.ts              |    2 +-
 .../graph-page/graph-page.component.css       |    0
 .../graph-page/graph-page.component.html      |    0
 .../graph-page/graph-page.component.spec.ts   |    0
 .../graph-page/graph-page.component.ts        |    6 +-
 .../header/header.component.css               |    0
 .../header/header.component.html              |    0
 .../header/header.component.spec.ts           |    0
 .../header/header.component.ts                |   25 +-
 .../home-page/home-page.component.css         |    0
 .../home-page/home-page.component.html        |    0
 .../home-page/home-page.component.spec.ts     |    0
 .../home-page/home-page.component.ts          |    0
 .../login/login.component.css                 |    0
 .../login/login.component.html                |    0
 .../login/login.component.spec.ts             |    0
 .../{ => components}/login/login.component.ts |    2 +-
 .../main-game/dialog/dialog.component.css     |    0
 .../main-game/dialog/dialog.component.html    |    0
 .../main-game/dialog/dialog.component.spec.ts |    0
 .../main-game/dialog/dialog.component.ts      |    0
 .../main-game/main-game.component.css         |    0
 .../main-game/main-game.component.html        |    0
 .../main-game/main-game.component.spec.ts     |    0
 .../main-game/main-game.component.ts          |   91 ++
 .../post-survey/post-survey.component.css     |    0
 .../post-survey/post-survey.component.html    |    0
 .../post-survey/post-survey.component.spec.ts |    0
 .../post-survey/post-survey.component.ts      |  141 ++
 .../dialog-data-example-dialog.html           |    0
 .../dialog-pdf/dialog-pdf.component.css       |    0
 .../dialog-pdf/dialog-pdf.component.html      |    0
 .../dialog-pdf/dialog-pdf.component.spec.ts   |    0
 .../dialog-pdf/dialog-pdf.component.ts        |    0
 .../pre-survey/pre-survey.component.css       |    0
 .../pre-survey/pre-survey.component.html      |    0
 .../pre-survey/pre-survey.component.spec.ts   |    0
 .../pre-survey/pre-survey.component.ts        |  199 +++
 .../register-component.component.css          |    0
 .../register-component.component.html         |    0
 .../register-component.component.spec.ts      |    0
 .../register-component.component.ts           |    2 +-
 .../result-dashboard.component.css            |    0
 .../result-dashboard.component.html           |    0
 .../result-dashboard.component.spec.ts        |    0
 .../result-dashboard.component.ts             |  387 ++++++
 .../score-page/score-page.component.css       |    0
 .../score-page/score-page.component.html      |    0
 .../score-page/score-page.component.spec.ts   |    0
 .../score-page/score-page.component.ts        |    6 +-
 .../test/my-overlay/my-overlay.component.css  |    0
 .../test/my-overlay/my-overlay.component.html |    0
 .../my-overlay/my-overlay.component.spec.ts   |    0
 .../test/my-overlay/my-overlay.component.ts   |   92 ++
 .../{ => components}/test/test.component.css  |    0
 .../{ => components}/test/test.component.html |    0
 .../test/test.component.spec.ts               |    0
 src/app/components/test/test.component.ts     |   21 +
 .../trial-component.component.css             |    0
 .../trial-component.component.html            |    0
 .../trial-component.component.spec.ts         |    0
 .../trial-component.component.ts              |    0
 .../unpacking-page.component.css              |    0
 .../unpacking-page.component.html             |    0
 .../unpacking-page.component.spec.ts          |    0
 .../unpacking-page.component.ts               | 1215 ++++++++++++++++
 src/app/cpcq-form/cpcq-form.component.ts      | 1225 ----------------
 .../dialog-form/dialog-form.component.ts      |  547 --------
 src/app/dashboard/dashboard.component.ts      |  380 -----
 .../final-dashboard.component.ts              |  400 ------
 .../final-feedback.component.ts               | 1226 ----------------
 src/app/first-form/first-form.component.ts    |  154 --
 src/app/guards/landing-page.guard.spec.ts     |   16 +
 src/app/guards/landing-page.guard.ts          |   24 +
 src/app/guards/role.guard.spec.ts             |   16 +
 src/app/guards/role.guard.ts                  |   34 +
 src/app/main-game/main-game.component.ts      |   99 --
 src/app/post-survey/post-survey.component.ts  |  147 --
 src/app/pre-survey/pre-survey.component.ts    |  212 ---
 .../result-dashboard.component.ts             |  394 ------
 src/{ => app}/services/cpcq.service.ts        |    0
 src/{ => app}/services/firstForm.service.ts   |    0
 src/{ => app}/services/login.service.ts       |    0
 src/{ => app}/services/mainGame.service.ts    |    0
 .../services/overlay-service.service.ts       |   10 +-
 src/{ => app}/services/preSurvey.service.ts   |    0
 .../test/my-overlay/my-overlay.component.ts   |   80 --
 src/app/test/test.component.ts                |   24 -
 .../unpacking-page.component.ts               | 1234 -----------------
 tsconfig.json                                 |    5 +-
 145 files changed, 6161 insertions(+), 6240 deletions(-)
 rename src/app/{ => components}/about-comp/about-comp.component.css (100%)
 rename src/app/{ => components}/about-comp/about-comp.component.html (100%)
 rename src/app/{ => components}/about-comp/about-comp.component.spec.ts (100%)
 rename src/app/{ => components}/about-comp/about-comp.component.ts (100%)
 rename src/app/{ => components}/change-password/change-password.component.css (100%)
 rename src/app/{ => components}/change-password/change-password.component.html (100%)
 rename src/app/{ => components}/change-password/change-password.component.spec.ts (100%)
 rename src/app/{ => components}/change-password/change-password.component.ts (96%)
 rename src/app/{ => components}/consent-form/consent-form.component.css (100%)
 rename src/app/{ => components}/consent-form/consent-form.component.html (100%)
 rename src/app/{ => components}/consent-form/consent-form.component.spec.ts (100%)
 rename src/app/{ => components}/consent-form/consent-form.component.ts (100%)
 rename src/app/{ => components}/cpcq-form/cpcq-form.component.css (100%)
 rename src/app/{ => components}/cpcq-form/cpcq-form.component.html (100%)
 rename src/app/{ => components}/cpcq-form/cpcq-form.component.spec.ts (100%)
 create mode 100644 src/app/components/cpcq-form/cpcq-form.component.ts
 rename src/app/{ => components}/cpcq-form/dialog-form/dialog-form.component.css (100%)
 rename src/app/{ => components}/cpcq-form/dialog-form/dialog-form.component.html (100%)
 rename src/app/{ => components}/cpcq-form/dialog-form/dialog-form.component.spec.ts (100%)
 create mode 100644 src/app/components/cpcq-form/dialog-form/dialog-form.component.ts
 rename src/app/{ => components}/dashboard/dashboard-dialo/dashboard-dialo.component.css (100%)
 rename src/app/{ => components}/dashboard/dashboard-dialo/dashboard-dialo.component.html (100%)
 rename src/app/{ => components}/dashboard/dashboard-dialo/dashboard-dialo.component.spec.ts (100%)
 rename src/app/{ => components}/dashboard/dashboard-dialo/dashboard-dialo.component.ts (96%)
 rename src/app/{ => components}/dashboard/dashboard.component.css (100%)
 rename src/app/{ => components}/dashboard/dashboard.component.html (100%)
 rename src/app/{ => components}/dashboard/dashboard.component.spec.ts (100%)
 create mode 100644 src/app/components/dashboard/dashboard.component.ts
 rename src/app/{ => components}/email-password/email-password.component.css (100%)
 rename src/app/{ => components}/email-password/email-password.component.html (100%)
 rename src/app/{ => components}/email-password/email-password.component.spec.ts (100%)
 rename src/app/{ => components}/email-password/email-password.component.ts (97%)
 rename src/app/{ => components}/final-dashboard/final-dashboard.component.css (100%)
 rename src/app/{ => components}/final-dashboard/final-dashboard.component.html (100%)
 rename src/app/{ => components}/final-dashboard/final-dashboard.component.spec.ts (100%)
 create mode 100644 src/app/components/final-dashboard/final-dashboard.component.ts
 rename src/app/{ => components}/final-feedback/final-feedback.component.css (100%)
 rename src/app/{ => components}/final-feedback/final-feedback.component.html (100%)
 rename src/app/{ => components}/final-feedback/final-feedback.component.spec.ts (100%)
 create mode 100644 src/app/components/final-feedback/final-feedback.component.ts
 rename src/app/{ => components}/first-form/first-form.component.css (100%)
 rename src/app/{ => components}/first-form/first-form.component.html (100%)
 rename src/app/{ => components}/first-form/first-form.component.spec.ts (100%)
 create mode 100644 src/app/components/first-form/first-form.component.ts
 rename src/app/{ => components}/footer/footer.component.css (100%)
 rename src/app/{ => components}/footer/footer.component.html (100%)
 rename src/app/{ => components}/footer/footer.component.spec.ts (100%)
 rename src/app/{ => components}/footer/footer.component.ts (100%)
 rename src/app/{ => components}/forgot-password/forgot-password.component.css (100%)
 rename src/app/{ => components}/forgot-password/forgot-password.component.html (100%)
 rename src/app/{ => components}/forgot-password/forgot-password.component.spec.ts (100%)
 rename src/app/{ => components}/forgot-password/forgot-password.component.ts (97%)
 rename src/app/{ => components}/graph-page/graph-page.component.css (100%)
 rename src/app/{ => components}/graph-page/graph-page.component.html (100%)
 rename src/app/{ => components}/graph-page/graph-page.component.spec.ts (100%)
 rename src/app/{ => components}/graph-page/graph-page.component.ts (99%)
 rename src/app/{ => components}/header/header.component.css (100%)
 rename src/app/{ => components}/header/header.component.html (100%)
 rename src/app/{ => components}/header/header.component.spec.ts (100%)
 rename src/app/{ => components}/header/header.component.ts (81%)
 rename src/app/{ => components}/home-page/home-page.component.css (100%)
 rename src/app/{ => components}/home-page/home-page.component.html (100%)
 rename src/app/{ => components}/home-page/home-page.component.spec.ts (100%)
 rename src/app/{ => components}/home-page/home-page.component.ts (100%)
 rename src/app/{ => components}/login/login.component.css (100%)
 rename src/app/{ => components}/login/login.component.html (100%)
 rename src/app/{ => components}/login/login.component.spec.ts (100%)
 rename src/app/{ => components}/login/login.component.ts (98%)
 rename src/app/{ => components}/main-game/dialog/dialog.component.css (100%)
 rename src/app/{ => components}/main-game/dialog/dialog.component.html (100%)
 rename src/app/{ => components}/main-game/dialog/dialog.component.spec.ts (100%)
 rename src/app/{ => components}/main-game/dialog/dialog.component.ts (100%)
 rename src/app/{ => components}/main-game/main-game.component.css (100%)
 rename src/app/{ => components}/main-game/main-game.component.html (100%)
 rename src/app/{ => components}/main-game/main-game.component.spec.ts (100%)
 create mode 100644 src/app/components/main-game/main-game.component.ts
 rename src/app/{ => components}/post-survey/post-survey.component.css (100%)
 rename src/app/{ => components}/post-survey/post-survey.component.html (100%)
 rename src/app/{ => components}/post-survey/post-survey.component.spec.ts (100%)
 create mode 100644 src/app/components/post-survey/post-survey.component.ts
 rename src/app/{ => components}/pre-survey/dialog-data-example-dialog.html (100%)
 rename src/app/{ => components}/pre-survey/dialog-pdf/dialog-pdf.component.css (100%)
 rename src/app/{ => components}/pre-survey/dialog-pdf/dialog-pdf.component.html (100%)
 rename src/app/{ => components}/pre-survey/dialog-pdf/dialog-pdf.component.spec.ts (100%)
 rename src/app/{ => components}/pre-survey/dialog-pdf/dialog-pdf.component.ts (100%)
 rename src/app/{ => components}/pre-survey/pre-survey.component.css (100%)
 rename src/app/{ => components}/pre-survey/pre-survey.component.html (100%)
 rename src/app/{ => components}/pre-survey/pre-survey.component.spec.ts (100%)
 create mode 100644 src/app/components/pre-survey/pre-survey.component.ts
 rename src/app/{ => components}/register-component/register-component.component.css (100%)
 rename src/app/{ => components}/register-component/register-component.component.html (100%)
 rename src/app/{ => components}/register-component/register-component.component.spec.ts (100%)
 rename src/app/{ => components}/register-component/register-component.component.ts (97%)
 rename src/app/{ => components}/result-dashboard/result-dashboard.component.css (100%)
 rename src/app/{ => components}/result-dashboard/result-dashboard.component.html (100%)
 rename src/app/{ => components}/result-dashboard/result-dashboard.component.spec.ts (100%)
 create mode 100644 src/app/components/result-dashboard/result-dashboard.component.ts
 rename src/app/{ => components}/score-page/score-page.component.css (100%)
 rename src/app/{ => components}/score-page/score-page.component.html (100%)
 rename src/app/{ => components}/score-page/score-page.component.spec.ts (100%)
 rename src/app/{ => components}/score-page/score-page.component.ts (99%)
 rename src/app/{ => components}/test/my-overlay/my-overlay.component.css (100%)
 rename src/app/{ => components}/test/my-overlay/my-overlay.component.html (100%)
 rename src/app/{ => components}/test/my-overlay/my-overlay.component.spec.ts (100%)
 create mode 100644 src/app/components/test/my-overlay/my-overlay.component.ts
 rename src/app/{ => components}/test/test.component.css (100%)
 rename src/app/{ => components}/test/test.component.html (100%)
 rename src/app/{ => components}/test/test.component.spec.ts (100%)
 create mode 100644 src/app/components/test/test.component.ts
 rename src/app/{ => components}/trial-component/trial-component.component.css (100%)
 rename src/app/{ => components}/trial-component/trial-component.component.html (100%)
 rename src/app/{ => components}/trial-component/trial-component.component.spec.ts (100%)
 rename src/app/{ => components}/trial-component/trial-component.component.ts (100%)
 rename src/app/{ => components}/unpacking-page/unpacking-page.component.css (100%)
 rename src/app/{ => components}/unpacking-page/unpacking-page.component.html (100%)
 rename src/app/{ => components}/unpacking-page/unpacking-page.component.spec.ts (100%)
 create mode 100644 src/app/components/unpacking-page/unpacking-page.component.ts
 delete mode 100644 src/app/cpcq-form/cpcq-form.component.ts
 delete mode 100644 src/app/cpcq-form/dialog-form/dialog-form.component.ts
 delete mode 100644 src/app/dashboard/dashboard.component.ts
 delete mode 100644 src/app/final-dashboard/final-dashboard.component.ts
 delete mode 100644 src/app/final-feedback/final-feedback.component.ts
 delete mode 100644 src/app/first-form/first-form.component.ts
 create mode 100644 src/app/guards/landing-page.guard.spec.ts
 create mode 100644 src/app/guards/landing-page.guard.ts
 create mode 100644 src/app/guards/role.guard.spec.ts
 create mode 100644 src/app/guards/role.guard.ts
 delete mode 100644 src/app/main-game/main-game.component.ts
 delete mode 100644 src/app/post-survey/post-survey.component.ts
 delete mode 100644 src/app/pre-survey/pre-survey.component.ts
 delete mode 100644 src/app/result-dashboard/result-dashboard.component.ts
 rename src/{ => app}/services/cpcq.service.ts (100%)
 rename src/{ => app}/services/firstForm.service.ts (100%)
 rename src/{ => app}/services/login.service.ts (100%)
 rename src/{ => app}/services/mainGame.service.ts (100%)
 rename src/{ => app}/services/overlay-service.service.ts (89%)
 rename src/{ => app}/services/preSurvey.service.ts (100%)
 delete mode 100644 src/app/test/my-overlay/my-overlay.component.ts
 delete mode 100644 src/app/test/test.component.ts
 delete mode 100644 src/app/unpacking-page/unpacking-page.component.ts

diff --git a/.firebaserc b/.firebaserc
index f93005c..ac8c75e 100644
--- a/.firebaserc
+++ b/.firebaserc
@@ -1,11 +1,11 @@
 {
-  "targets": {
-    "cpcdp-vcu": {
-      "hosting": {
-        "iMatt-FE": [
-          "cpcdp-vcu"
-        ]
-      }
+    "targets": {
+        "cpcdp-vcu": {
+            "hosting": {
+                "iMatt-FE": [
+                    "cpcdp-vcu"
+                ]
+            }
+        }
     }
-  }
-}
\ No newline at end of file
+}
diff --git a/.prettierrc.json b/.prettierrc.json
index 08d6bb8..31ac305 100644
--- a/.prettierrc.json
+++ b/.prettierrc.json
@@ -1,7 +1,7 @@
 {
-  "trailingComma": "es5",
-  "tabWidth": 4,
-  "semi": true,
-  "singleQuote": false,
-  "printWidth": 120
+    "trailingComma": "es5",
+    "tabWidth": 4,
+    "semi": true,
+    "singleQuote": false,
+    "printWidth": 120
 }
diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index 331f3ac..d8cd918 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -1,51 +1,45 @@
-import { NgModule } from '@angular/core';
-import { Routes, RouterModule } from '@angular/router';
-import { MainGameComponent } from './main-game/main-game.component';
-import { LoginComponent } from './login/login.component';
-import { ConsentFormComponent } from './consent-form/consent-form.component';
-import { FirstFormComponent } from './first-form/first-form.component';
-import { TestComponent } from './test/test.component';
-import { TrialComponentComponent } from './trial-component/trial-component.component';
-import { HomePageComponent } from './home-page/home-page.component';
-import { PreSurveyComponent } from './pre-survey/pre-survey.component';
-import { CpcqFormComponent } from './cpcq-form/cpcq-form.component';
-import { PostSurveyComponent } from './post-survey/post-survey.component';
-import { DashboardComponent } from './dashboard/dashboard.component';
-import { ResultDashboardComponent } from './result-dashboard/result-dashboard.component';
-import { AboutCompComponent } from './about-comp/about-comp.component';
-import { RegisterComponentComponent } from './register-component/register-component.component';
-import { ScorePageComponent } from './score-page/score-page.component';
-import { GraphPageComponent } from './graph-page/graph-page.component';
-import { FinalDashboardComponent } from './final-dashboard/final-dashboard.component';
-import { UnpackingPageComponent } from './unpacking-page/unpacking-page.component';
-import { FinalFeedbackComponent } from './final-feedback/final-feedback.component';
-import { ForgotPasswordComponent } from './forgot-password/forgot-password.component';
-import { ChangePasswordComponent } from './change-password/change-password.component';
-import { EmailPasswordComponent } from './email-password/email-password.component';
+import { NgModule } from "@angular/core";
+import { Routes, RouterModule } from "@angular/router";
+import { LoginComponent } from "./components/login/login.component";
+import { HomePageComponent } from "./components/home-page/home-page.component";
+import { PreSurveyComponent } from "./components/pre-survey/pre-survey.component";
+import { CpcqFormComponent } from "./components/cpcq-form/cpcq-form.component";
+import { PostSurveyComponent } from "./components/post-survey/post-survey.component";
+import { DashboardComponent } from "./components/dashboard/dashboard.component";
+import { ResultDashboardComponent } from "./components/result-dashboard/result-dashboard.component";
+import { AboutCompComponent } from "./components/about-comp/about-comp.component";
+import { RegisterComponentComponent } from "./components/register-component/register-component.component";
+import { ScorePageComponent } from "./components/score-page/score-page.component";
+import { GraphPageComponent } from "./components/graph-page/graph-page.component";
+import { FinalDashboardComponent } from "./components/final-dashboard/final-dashboard.component";
+import { UnpackingPageComponent } from "./components/unpacking-page/unpacking-page.component";
+import { FinalFeedbackComponent } from "./components/final-feedback/final-feedback.component";
+import { ForgotPasswordComponent } from "./components/forgot-password/forgot-password.component";
+import { ChangePasswordComponent } from "./components/change-password/change-password.component";
+import { EmailPasswordComponent } from "./components/email-password/email-password.component";
 
 const routes: Routes = [
-  { path: "", component:  HomePageComponent},
-  { path: "login", component:  LoginComponent},
-  { path: "preSurvey", component:  PreSurveyComponent},
-  { path: "pcqform", component:  CpcqFormComponent},
-  { path: "postSurvey", component:  PostSurveyComponent},
-  { path: "dashboard", component:  DashboardComponent},
-  { path: "result", component:  ResultDashboardComponent},
-  { path: "about", component:  AboutCompComponent},
-  { path: "register", component:  RegisterComponentComponent},
-  { path: "score", component:  ScorePageComponent},
-  { path: "graph", component:  GraphPageComponent},
-  { path: "final", component:  FinalDashboardComponent},
-  { path: "unpacking", component:  UnpackingPageComponent},
-  { path: "finalFeedback", component:  FinalFeedbackComponent},
-  { path: "forgotPassword", component:  ForgotPasswordComponent},
-  { path: "changePassword", component:  ChangePasswordComponent},
-  { path: "emailPass", component:  EmailPasswordComponent},
-
+    { path: "", component: HomePageComponent },
+    { path: "login", component: LoginComponent },
+    { path: "preSurvey", component: PreSurveyComponent },
+    { path: "pcqform", component: CpcqFormComponent },
+    { path: "postSurvey", component: PostSurveyComponent },
+    { path: "dashboard", component: DashboardComponent },
+    { path: "result", component: ResultDashboardComponent },
+    { path: "about", component: AboutCompComponent },
+    { path: "register", component: RegisterComponentComponent },
+    { path: "score", component: ScorePageComponent },
+    { path: "graph", component: GraphPageComponent },
+    { path: "final", component: FinalDashboardComponent },
+    { path: "unpacking", component: UnpackingPageComponent },
+    { path: "finalFeedback", component: FinalFeedbackComponent },
+    { path: "forgotPassword", component: ForgotPasswordComponent },
+    { path: "changePassword", component: ChangePasswordComponent },
+    { path: "emailPass", component: EmailPasswordComponent },
 ];
 
 @NgModule({
-  imports: [RouterModule.forRoot(routes)],
-  exports: [RouterModule]
+    imports: [RouterModule.forRoot(routes)],
+    exports: [RouterModule],
 })
-export class AppRoutingModule { }
+export class AppRoutingModule {}
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 37ca0e3..4361514 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -38,38 +38,38 @@ import { PdfViewerModule } from "ng2-pdf-viewer";
 import { OverlayModule } from "@angular/cdk/overlay";
 import { PortalModule } from "@angular/cdk/portal";
 
-import { MainGameComponent } from "./main-game/main-game.component";
-import { HeaderComponent } from "./header/header.component";
-import { LoginComponent } from "./login/login.component";
-import { ConsentFormComponent } from "./consent-form/consent-form.component";
-import { FirstFormComponent } from "./first-form/first-form.component";
-import { DialogComponent } from "./main-game/dialog/dialog.component";
-import { TestComponent } from "./test/test.component";
+import { MainGameComponent } from "./components/main-game/main-game.component";
+import { HeaderComponent } from "./components/header/header.component";
+import { LoginComponent } from "./components/login/login.component";
+import { ConsentFormComponent } from "./components/consent-form/consent-form.component";
+import { FirstFormComponent } from "./components/first-form/first-form.component";
+import { DialogComponent } from "./components/main-game/dialog/dialog.component";
+import { TestComponent } from "./components/test/test.component";
 import { WalkthroughModule } from "ngx-walkthrough";
-import { MyOverlayComponent } from "./test/my-overlay/my-overlay.component";
-import { TrialComponentComponent } from "./trial-component/trial-component.component";
-import { HomePageComponent } from "./home-page/home-page.component";
-import { PreSurveyComponent } from "./pre-survey/pre-survey.component";
-import { CpcqFormComponent } from "./cpcq-form/cpcq-form.component";
-import { PostSurveyComponent } from "./post-survey/post-survey.component";
-import { DialogFormComponent } from "./cpcq-form/dialog-form/dialog-form.component";
-import { DashboardComponent } from "./dashboard/dashboard.component";
-import { DashboardDialoComponent } from "./dashboard/dashboard-dialo/dashboard-dialo.component";
-import { FooterComponent } from "./footer/footer.component";
-import { ResultDashboardComponent } from "./result-dashboard/result-dashboard.component";
+import { MyOverlayComponent } from "./components/test/my-overlay/my-overlay.component";
+import { TrialComponentComponent } from "./components/trial-component/trial-component.component";
+import { HomePageComponent } from "./components/home-page/home-page.component";
+import { PreSurveyComponent } from "./components/pre-survey/pre-survey.component";
+import { CpcqFormComponent } from "./components/cpcq-form/cpcq-form.component";
+import { PostSurveyComponent } from "./components/post-survey/post-survey.component";
+import { DialogFormComponent } from "./components/cpcq-form/dialog-form/dialog-form.component";
+import { DashboardComponent } from "./components/dashboard/dashboard.component";
+import { DashboardDialoComponent } from "./components/dashboard/dashboard-dialo/dashboard-dialo.component";
+import { FooterComponent } from "./components/footer/footer.component";
+import { ResultDashboardComponent } from "./components/result-dashboard/result-dashboard.component";
 import { LottieModule } from "ngx-lottie";
 import player from "lottie-web";
-import { AboutCompComponent } from "./about-comp/about-comp.component";
-import { RegisterComponentComponent } from "./register-component/register-component.component";
-import { DialogPDfComponent } from "./pre-survey/dialog-pdf/dialog-pdf.component";
-import { ScorePageComponent } from "./score-page/score-page.component";
-import { GraphPageComponent } from "./graph-page/graph-page.component";
-import { FinalDashboardComponent } from "./final-dashboard/final-dashboard.component";
-import { UnpackingPageComponent } from "./unpacking-page/unpacking-page.component";
-import { FinalFeedbackComponent } from "./final-feedback/final-feedback.component";
-import { ForgotPasswordComponent } from "./forgot-password/forgot-password.component";
-import { ChangePasswordComponent } from "./change-password/change-password.component";
-import { EmailPasswordComponent } from "./email-password/email-password.component";
+import { AboutCompComponent } from "./components/about-comp/about-comp.component";
+import { RegisterComponentComponent } from "./components/register-component/register-component.component";
+import { DialogPDfComponent } from "./components/pre-survey/dialog-pdf/dialog-pdf.component";
+import { ScorePageComponent } from "./components/score-page/score-page.component";
+import { GraphPageComponent } from "./components/graph-page/graph-page.component";
+import { FinalDashboardComponent } from "./components/final-dashboard/final-dashboard.component";
+import { UnpackingPageComponent } from "./components/unpacking-page/unpacking-page.component";
+import { FinalFeedbackComponent } from "./components/final-feedback/final-feedback.component";
+import { ForgotPasswordComponent } from "./components/forgot-password/forgot-password.component";
+import { ChangePasswordComponent } from "./components/change-password/change-password.component";
+import { EmailPasswordComponent } from "./components/email-password/email-password.component";
 import { AuthModule } from "@auth0/auth0-angular";
 import { environment } from "src/environments/environment";
 
diff --git a/src/app/about-comp/about-comp.component.css b/src/app/components/about-comp/about-comp.component.css
similarity index 100%
rename from src/app/about-comp/about-comp.component.css
rename to src/app/components/about-comp/about-comp.component.css
diff --git a/src/app/about-comp/about-comp.component.html b/src/app/components/about-comp/about-comp.component.html
similarity index 100%
rename from src/app/about-comp/about-comp.component.html
rename to src/app/components/about-comp/about-comp.component.html
diff --git a/src/app/about-comp/about-comp.component.spec.ts b/src/app/components/about-comp/about-comp.component.spec.ts
similarity index 100%
rename from src/app/about-comp/about-comp.component.spec.ts
rename to src/app/components/about-comp/about-comp.component.spec.ts
diff --git a/src/app/about-comp/about-comp.component.ts b/src/app/components/about-comp/about-comp.component.ts
similarity index 100%
rename from src/app/about-comp/about-comp.component.ts
rename to src/app/components/about-comp/about-comp.component.ts
diff --git a/src/app/change-password/change-password.component.css b/src/app/components/change-password/change-password.component.css
similarity index 100%
rename from src/app/change-password/change-password.component.css
rename to src/app/components/change-password/change-password.component.css
diff --git a/src/app/change-password/change-password.component.html b/src/app/components/change-password/change-password.component.html
similarity index 100%
rename from src/app/change-password/change-password.component.html
rename to src/app/components/change-password/change-password.component.html
diff --git a/src/app/change-password/change-password.component.spec.ts b/src/app/components/change-password/change-password.component.spec.ts
similarity index 100%
rename from src/app/change-password/change-password.component.spec.ts
rename to src/app/components/change-password/change-password.component.spec.ts
diff --git a/src/app/change-password/change-password.component.ts b/src/app/components/change-password/change-password.component.ts
similarity index 96%
rename from src/app/change-password/change-password.component.ts
rename to src/app/components/change-password/change-password.component.ts
index d0adbd4..662263a 100644
--- a/src/app/change-password/change-password.component.ts
+++ b/src/app/components/change-password/change-password.component.ts
@@ -1,9 +1,8 @@
 import { Component, OnInit } from "@angular/core";
 import { EmailValidator, FormBuilder, FormGroup, Validators } from "@angular/forms";
-import { MatDialog, MatDialogRef } from "@angular/material/dialog";
 import { Router } from "@angular/router";
 import Swal from "sweetalert2";
-import { LoginService } from "../../services/login.service";
+import { LoginService } from "src/app/services/login.service";
 @Component({
     selector: "app-change-password",
     templateUrl: "./change-password.component.html",
diff --git a/src/app/consent-form/consent-form.component.css b/src/app/components/consent-form/consent-form.component.css
similarity index 100%
rename from src/app/consent-form/consent-form.component.css
rename to src/app/components/consent-form/consent-form.component.css
diff --git a/src/app/consent-form/consent-form.component.html b/src/app/components/consent-form/consent-form.component.html
similarity index 100%
rename from src/app/consent-form/consent-form.component.html
rename to src/app/components/consent-form/consent-form.component.html
diff --git a/src/app/consent-form/consent-form.component.spec.ts b/src/app/components/consent-form/consent-form.component.spec.ts
similarity index 100%
rename from src/app/consent-form/consent-form.component.spec.ts
rename to src/app/components/consent-form/consent-form.component.spec.ts
diff --git a/src/app/consent-form/consent-form.component.ts b/src/app/components/consent-form/consent-form.component.ts
similarity index 100%
rename from src/app/consent-form/consent-form.component.ts
rename to src/app/components/consent-form/consent-form.component.ts
diff --git a/src/app/cpcq-form/cpcq-form.component.css b/src/app/components/cpcq-form/cpcq-form.component.css
similarity index 100%
rename from src/app/cpcq-form/cpcq-form.component.css
rename to src/app/components/cpcq-form/cpcq-form.component.css
diff --git a/src/app/cpcq-form/cpcq-form.component.html b/src/app/components/cpcq-form/cpcq-form.component.html
similarity index 100%
rename from src/app/cpcq-form/cpcq-form.component.html
rename to src/app/components/cpcq-form/cpcq-form.component.html
diff --git a/src/app/cpcq-form/cpcq-form.component.spec.ts b/src/app/components/cpcq-form/cpcq-form.component.spec.ts
similarity index 100%
rename from src/app/cpcq-form/cpcq-form.component.spec.ts
rename to src/app/components/cpcq-form/cpcq-form.component.spec.ts
diff --git a/src/app/components/cpcq-form/cpcq-form.component.ts b/src/app/components/cpcq-form/cpcq-form.component.ts
new file mode 100644
index 0000000..7bb5053
--- /dev/null
+++ b/src/app/components/cpcq-form/cpcq-form.component.ts
@@ -0,0 +1,1206 @@
+import { Component, OnInit, Inject } from "@angular/core";
+import { AfterViewInit, ElementRef, ViewChild } from "@angular/core";
+import { Router } from "@angular/router";
+import { FirstForm } from "src/app/services/firstForm.service";
+import { FormBuilder, FormGroup, Validators } from "@angular/forms";
+import Swal from "sweetalert2";
+import { ThemePalette } from "@angular/material/core";
+import { ProgressBarMode } from "@angular/material/progress-bar";
+declare var $: any;
+import * as RecordRTC from "recordrtc";
+import { DomSanitizer } from "@angular/platform-browser";
+import { MatDialog, MAT_DIALOG_DATA } from "@angular/material/dialog";
+import { DialogFormComponent } from "./dialog-form/dialog-form.component";
+
+import { CPCQService } from "src/app/services/cpcq.service";
+
+export interface DialogData {
+    animal: "panda" | "unicorn" | "lion";
+    status;
+    result;
+}
+@Component({
+    selector: "app-cpcq-form",
+    templateUrl: "./cpcq-form.component.html",
+    styleUrls: ["./cpcq-form.component.css"],
+})
+export class CpcqFormComponent implements OnInit, AfterViewInit {
+    firstForm: FormGroup;
+    responseList: any;
+    loaded = false;
+
+    questionArray = [
+        ["Enter First Name", "text"],
+        ["Enter Last Name", "text"],
+        ["Enter Age", "number"],
+    ];
+    statusCheck = false;
+    buttonClick = false;
+
+    sliderValue = 0;
+
+    selectedIndex = 0;
+
+    color: ThemePalette = "primary";
+    mode: ProgressBarMode = "buffer";
+    value1 = 50;
+    bufferValue = 100;
+
+    formValues = [];
+    attributes = ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"];
+    columnHeadings = [
+        "culturalDestructivenessresponse",
+        "culturalIncapacityresponse",
+        "culturalBlindnessresponse",
+        "culturalPreCompetenceresponse",
+        "culturalCompetenceresponse",
+        "culturalProficiencyresponse",
+    ];
+    rowLetters = [
+        ["D", "C", "B", "A", "F", "E"],
+        ["E", "A", "F", "D", "B", "C"],
+        ["F", "E", "B", "C", "D", "A"],
+        ["E", "A", "B", "D", "C", "F"],
+        ["D", "C", "B", "E", "A", "F"],
+    ];
+    boldList = [[]];
+    randomList = [[]];
+    finalList = [[]];
+    finalList1 = [];
+    attitudeForm: FormGroup;
+    empathyForm: FormGroup;
+    policyForm: FormGroup;
+
+    finalFeedbackForm: FormGroup;
+
+    //arrays of data getting from the backend
+
+    attitude: any;
+    empathy: any;
+    policy: any;
+    professionalism: any;
+    teachingPractice: any;
+    wordDescription: any;
+    unpackedCount = 0;
+
+    startTime: any;
+    endTime: any;
+    durationTime: any;
+
+    @ViewChild("changeDiv") changeDiv: ElementRef;
+    @ViewChild("changeDiv1") changeDiv1: ElementRef;
+    @ViewChild("changeDiv2") changeDiv2: ElementRef;
+    @ViewChild("changeDiv3") changeDiv3: ElementRef;
+    @ViewChild("changeDiv4") changeDiv4: ElementRef;
+    @ViewChild("changeDiv5") changeDiv5: ElementRef;
+    @ViewChild("changeDiv6") changeDiv6: ElementRef;
+    @ViewChild("changeDiv7") changeDiv7: ElementRef;
+    @ViewChild("changeDiv8") changeDiv8: ElementRef;
+    @ViewChild("changeDiv9") changeDiv9: ElementRef;
+    @ViewChild("changeDiv10") changeDiv10: ElementRef;
+    @ViewChild("changeDiv11") changeDiv11: ElementRef;
+    @ViewChild("changeDiv12") changeDiv12: ElementRef;
+    @ViewChild("changeDiv13") changeDiv13: ElementRef;
+    @ViewChild("changeDiv14") changeDiv14: ElementRef;
+    @ViewChild("changeDiv15") changeDiv15: ElementRef;
+    @ViewChild("changeDiv16") changeDiv16: ElementRef;
+    @ViewChild("changeDiv17") changeDiv17: ElementRef;
+    @ViewChild("changeDiv18") changeDiv18: ElementRef;
+    @ViewChild("changeDiv19") changeDiv19: ElementRef;
+    @ViewChild("changeDiv20") changeDiv20: ElementRef;
+    @ViewChild("changeDiv21") changeDiv21: ElementRef;
+    @ViewChild("changeDiv22") changeDiv22: ElementRef;
+    @ViewChild("changeDiv23") changeDiv23: ElementRef;
+    @ViewChild("changeDiv24") changeDiv24: ElementRef;
+    @ViewChild("changeDiv25") changeDiv25: ElementRef;
+    @ViewChild("changeDiv26") changeDiv26: ElementRef;
+    @ViewChild("changeDiv27") changeDiv27: ElementRef;
+    @ViewChild("changeDiv28") changeDiv28: ElementRef;
+    @ViewChild("changeDiv29") changeDiv29: ElementRef;
+
+    ngAfterViewInit() {}
+
+    sliderFunction1() {
+        if (this.sliderValue == 1) {
+            this.changeDiv.nativeElement.style.fontSize = "15px";
+            this.changeDiv1.nativeElement.style.fontSize = "15px";
+            this.changeDiv2.nativeElement.style.fontSize = "15px";
+            this.changeDiv3.nativeElement.style.fontSize = "15px";
+            this.changeDiv4.nativeElement.style.fontSize = "15px";
+            this.changeDiv5.nativeElement.style.fontSize = "15px";
+            this.changeDiv6.nativeElement.style.fontSize = "15px";
+            this.changeDiv7.nativeElement.style.fontSize = "15px";
+            this.changeDiv8.nativeElement.style.fontSize = "15px";
+            this.changeDiv9.nativeElement.style.fontSize = "15px";
+            this.changeDiv10.nativeElement.style.fontSize = "15px";
+            this.changeDiv11.nativeElement.style.fontSize = "15px";
+            this.changeDiv12.nativeElement.style.fontSize = "15px";
+            this.changeDiv13.nativeElement.style.fontSize = "15px";
+            this.changeDiv14.nativeElement.style.fontSize = "15px";
+            this.changeDiv15.nativeElement.style.fontSize = "15px";
+            this.changeDiv16.nativeElement.style.fontSize = "15px";
+            this.changeDiv17.nativeElement.style.fontSize = "15px";
+            this.changeDiv18.nativeElement.style.fontSize = "15px";
+            this.changeDiv19.nativeElement.style.fontSize = "15px";
+            this.changeDiv20.nativeElement.style.fontSize = "15px";
+            this.changeDiv21.nativeElement.style.fontSize = "15px";
+            this.changeDiv22.nativeElement.style.fontSize = "15px";
+            this.changeDiv23.nativeElement.style.fontSize = "15px";
+            this.changeDiv24.nativeElement.style.fontSize = "15px";
+            this.changeDiv25.nativeElement.style.fontSize = "15px";
+            this.changeDiv26.nativeElement.style.fontSize = "15px";
+            this.changeDiv27.nativeElement.style.fontSize = "15px";
+            this.changeDiv28.nativeElement.style.fontSize = "15px";
+            this.changeDiv29.nativeElement.style.fontSize = "15px";
+        } else if (this.sliderValue == 2) {
+            this.changeDiv.nativeElement.style.fontSize = "20px";
+            this.changeDiv1.nativeElement.style.fontSize = "20px";
+            this.changeDiv2.nativeElement.style.fontSize = "20px";
+            this.changeDiv3.nativeElement.style.fontSize = "20px";
+            this.changeDiv4.nativeElement.style.fontSize = "20px";
+            this.changeDiv5.nativeElement.style.fontSize = "20px";
+            this.changeDiv6.nativeElement.style.fontSize = "20px";
+            this.changeDiv7.nativeElement.style.fontSize = "20px";
+            this.changeDiv8.nativeElement.style.fontSize = "20px";
+            this.changeDiv9.nativeElement.style.fontSize = "20px";
+            this.changeDiv10.nativeElement.style.fontSize = "20px";
+            this.changeDiv11.nativeElement.style.fontSize = "20px";
+            this.changeDiv12.nativeElement.style.fontSize = "20px";
+            this.changeDiv13.nativeElement.style.fontSize = "20px";
+            this.changeDiv14.nativeElement.style.fontSize = "20px";
+            this.changeDiv15.nativeElement.style.fontSize = "20px";
+            this.changeDiv16.nativeElement.style.fontSize = "20px";
+            this.changeDiv17.nativeElement.style.fontSize = "20px";
+            this.changeDiv18.nativeElement.style.fontSize = "20px";
+            this.changeDiv19.nativeElement.style.fontSize = "20px";
+            this.changeDiv20.nativeElement.style.fontSize = "20px";
+            this.changeDiv21.nativeElement.style.fontSize = "20px";
+            this.changeDiv22.nativeElement.style.fontSize = "20px";
+            this.changeDiv23.nativeElement.style.fontSize = "20px";
+            this.changeDiv24.nativeElement.style.fontSize = "20px";
+            this.changeDiv25.nativeElement.style.fontSize = "20px";
+            this.changeDiv26.nativeElement.style.fontSize = "20px";
+            this.changeDiv27.nativeElement.style.fontSize = "20px";
+            this.changeDiv28.nativeElement.style.fontSize = "20px";
+            this.changeDiv29.nativeElement.style.fontSize = "20px";
+        } else if (this.sliderValue == 3) {
+            this.changeDiv.nativeElement.style.fontSize = "22px";
+            this.changeDiv1.nativeElement.style.fontSize = "22px";
+            this.changeDiv2.nativeElement.style.fontSize = "22px";
+            this.changeDiv3.nativeElement.style.fontSize = "22px";
+            this.changeDiv4.nativeElement.style.fontSize = "22px";
+            this.changeDiv5.nativeElement.style.fontSize = "22px";
+            this.changeDiv6.nativeElement.style.fontSize = "22px";
+            this.changeDiv7.nativeElement.style.fontSize = "22px";
+            this.changeDiv8.nativeElement.style.fontSize = "22px";
+            this.changeDiv9.nativeElement.style.fontSize = "22px";
+            this.changeDiv10.nativeElement.style.fontSize = "22px";
+            this.changeDiv11.nativeElement.style.fontSize = "22px";
+            this.changeDiv12.nativeElement.style.fontSize = "22px";
+            this.changeDiv13.nativeElement.style.fontSize = "22px";
+            this.changeDiv14.nativeElement.style.fontSize = "22px";
+            this.changeDiv15.nativeElement.style.fontSize = "22px";
+            this.changeDiv16.nativeElement.style.fontSize = "22px";
+            this.changeDiv17.nativeElement.style.fontSize = "22px";
+            this.changeDiv18.nativeElement.style.fontSize = "22px";
+            this.changeDiv19.nativeElement.style.fontSize = "22px";
+            this.changeDiv20.nativeElement.style.fontSize = "22px";
+            this.changeDiv21.nativeElement.style.fontSize = "22px";
+            this.changeDiv22.nativeElement.style.fontSize = "22px";
+            this.changeDiv23.nativeElement.style.fontSize = "22px";
+            this.changeDiv24.nativeElement.style.fontSize = "22px";
+            this.changeDiv25.nativeElement.style.fontSize = "22px";
+            this.changeDiv26.nativeElement.style.fontSize = "22px";
+            this.changeDiv27.nativeElement.style.fontSize = "22px";
+            this.changeDiv28.nativeElement.style.fontSize = "22px";
+            this.changeDiv29.nativeElement.style.fontSize = "22px";
+        } else if (this.sliderValue == 4) {
+            this.changeDiv.nativeElement.style.fontSize = "25px";
+            this.changeDiv1.nativeElement.style.fontSize = "25px";
+            this.changeDiv2.nativeElement.style.fontSize = "25px";
+            this.changeDiv3.nativeElement.style.fontSize = "25px";
+            this.changeDiv4.nativeElement.style.fontSize = "25px";
+            this.changeDiv5.nativeElement.style.fontSize = "25px";
+            this.changeDiv6.nativeElement.style.fontSize = "25px";
+            this.changeDiv7.nativeElement.style.fontSize = "25px";
+            this.changeDiv8.nativeElement.style.fontSize = "25px";
+            this.changeDiv9.nativeElement.style.fontSize = "25px";
+            this.changeDiv10.nativeElement.style.fontSize = "25px";
+            this.changeDiv11.nativeElement.style.fontSize = "25px";
+            this.changeDiv12.nativeElement.style.fontSize = "25px";
+            this.changeDiv13.nativeElement.style.fontSize = "25px";
+            this.changeDiv14.nativeElement.style.fontSize = "25px";
+            this.changeDiv15.nativeElement.style.fontSize = "25px";
+            this.changeDiv16.nativeElement.style.fontSize = "25px";
+            this.changeDiv17.nativeElement.style.fontSize = "25px";
+            this.changeDiv18.nativeElement.style.fontSize = "25px";
+            this.changeDiv19.nativeElement.style.fontSize = "25px";
+            this.changeDiv20.nativeElement.style.fontSize = "25px";
+            this.changeDiv21.nativeElement.style.fontSize = "25px";
+            this.changeDiv22.nativeElement.style.fontSize = "25px";
+            this.changeDiv23.nativeElement.style.fontSize = "25px";
+            this.changeDiv24.nativeElement.style.fontSize = "25px";
+            this.changeDiv25.nativeElement.style.fontSize = "25px";
+            this.changeDiv26.nativeElement.style.fontSize = "25px";
+            this.changeDiv27.nativeElement.style.fontSize = "25px";
+            this.changeDiv28.nativeElement.style.fontSize = "25px";
+            this.changeDiv29.nativeElement.style.fontSize = "25px";
+        } else if (this.sliderValue == 5) {
+            this.changeDiv.nativeElement.style.fontSize = "50px";
+            this.changeDiv1.nativeElement.style.fontSize = "50px";
+            this.changeDiv2.nativeElement.style.fontSize = "50px";
+            this.changeDiv3.nativeElement.style.fontSize = "50px";
+            this.changeDiv4.nativeElement.style.fontSize = "50px";
+            this.changeDiv5.nativeElement.style.fontSize = "50px";
+        }
+    }
+    sliderFunction(e) {
+        //
+        this.sliderValue = e.value;
+        if (e.value == 1) {
+            this.changeDiv.nativeElement.style.fontSize = "15px";
+            this.changeDiv1.nativeElement.style.fontSize = "15px";
+            this.changeDiv2.nativeElement.style.fontSize = "15px";
+            this.changeDiv3.nativeElement.style.fontSize = "15px";
+            this.changeDiv4.nativeElement.style.fontSize = "15px";
+            this.changeDiv5.nativeElement.style.fontSize = "15px";
+            this.changeDiv6.nativeElement.style.fontSize = "15px";
+            this.changeDiv7.nativeElement.style.fontSize = "15px";
+            this.changeDiv8.nativeElement.style.fontSize = "15px";
+            this.changeDiv9.nativeElement.style.fontSize = "15px";
+            this.changeDiv10.nativeElement.style.fontSize = "15px";
+            this.changeDiv11.nativeElement.style.fontSize = "15px";
+            this.changeDiv12.nativeElement.style.fontSize = "15px";
+            this.changeDiv13.nativeElement.style.fontSize = "15px";
+            this.changeDiv14.nativeElement.style.fontSize = "15px";
+            this.changeDiv15.nativeElement.style.fontSize = "15px";
+            this.changeDiv16.nativeElement.style.fontSize = "15px";
+            this.changeDiv17.nativeElement.style.fontSize = "15px";
+            this.changeDiv18.nativeElement.style.fontSize = "15px";
+            this.changeDiv19.nativeElement.style.fontSize = "15px";
+            this.changeDiv20.nativeElement.style.fontSize = "15px";
+            this.changeDiv21.nativeElement.style.fontSize = "15px";
+            this.changeDiv22.nativeElement.style.fontSize = "15px";
+            this.changeDiv23.nativeElement.style.fontSize = "15px";
+            this.changeDiv24.nativeElement.style.fontSize = "15px";
+            this.changeDiv25.nativeElement.style.fontSize = "15px";
+            this.changeDiv26.nativeElement.style.fontSize = "15px";
+            this.changeDiv27.nativeElement.style.fontSize = "15px";
+            this.changeDiv28.nativeElement.style.fontSize = "15px";
+            this.changeDiv29.nativeElement.style.fontSize = "15px";
+        } else if (e.value == 2) {
+            this.changeDiv.nativeElement.style.fontSize = "20px";
+            this.changeDiv1.nativeElement.style.fontSize = "20px";
+            this.changeDiv2.nativeElement.style.fontSize = "20px";
+            this.changeDiv3.nativeElement.style.fontSize = "20px";
+            this.changeDiv4.nativeElement.style.fontSize = "20px";
+            this.changeDiv5.nativeElement.style.fontSize = "20px";
+            this.changeDiv6.nativeElement.style.fontSize = "20px";
+            this.changeDiv7.nativeElement.style.fontSize = "20px";
+            this.changeDiv8.nativeElement.style.fontSize = "20px";
+            this.changeDiv9.nativeElement.style.fontSize = "20px";
+            this.changeDiv10.nativeElement.style.fontSize = "20px";
+            this.changeDiv11.nativeElement.style.fontSize = "20px";
+            this.changeDiv12.nativeElement.style.fontSize = "20px";
+            this.changeDiv13.nativeElement.style.fontSize = "20px";
+            this.changeDiv14.nativeElement.style.fontSize = "20px";
+            this.changeDiv15.nativeElement.style.fontSize = "20px";
+            this.changeDiv16.nativeElement.style.fontSize = "20px";
+            this.changeDiv17.nativeElement.style.fontSize = "20px";
+            this.changeDiv18.nativeElement.style.fontSize = "20px";
+            this.changeDiv19.nativeElement.style.fontSize = "20px";
+            this.changeDiv20.nativeElement.style.fontSize = "20px";
+            this.changeDiv21.nativeElement.style.fontSize = "20px";
+            this.changeDiv22.nativeElement.style.fontSize = "20px";
+            this.changeDiv23.nativeElement.style.fontSize = "20px";
+            this.changeDiv24.nativeElement.style.fontSize = "20px";
+            this.changeDiv25.nativeElement.style.fontSize = "20px";
+            this.changeDiv26.nativeElement.style.fontSize = "20px";
+            this.changeDiv27.nativeElement.style.fontSize = "20px";
+            this.changeDiv28.nativeElement.style.fontSize = "20px";
+            this.changeDiv29.nativeElement.style.fontSize = "20px";
+        } else if (e.value == 3) {
+            this.changeDiv.nativeElement.style.fontSize = "22px";
+            this.changeDiv1.nativeElement.style.fontSize = "22px";
+            this.changeDiv2.nativeElement.style.fontSize = "22px";
+            this.changeDiv3.nativeElement.style.fontSize = "22px";
+            this.changeDiv4.nativeElement.style.fontSize = "22px";
+            this.changeDiv5.nativeElement.style.fontSize = "22px";
+            this.changeDiv6.nativeElement.style.fontSize = "22px";
+            this.changeDiv7.nativeElement.style.fontSize = "22px";
+            this.changeDiv8.nativeElement.style.fontSize = "22px";
+            this.changeDiv9.nativeElement.style.fontSize = "22px";
+            this.changeDiv10.nativeElement.style.fontSize = "22px";
+            this.changeDiv11.nativeElement.style.fontSize = "22px";
+            this.changeDiv12.nativeElement.style.fontSize = "22px";
+            this.changeDiv13.nativeElement.style.fontSize = "22px";
+            this.changeDiv14.nativeElement.style.fontSize = "22px";
+            this.changeDiv15.nativeElement.style.fontSize = "22px";
+            this.changeDiv16.nativeElement.style.fontSize = "22px";
+            this.changeDiv17.nativeElement.style.fontSize = "22px";
+            this.changeDiv18.nativeElement.style.fontSize = "22px";
+            this.changeDiv19.nativeElement.style.fontSize = "22px";
+            this.changeDiv20.nativeElement.style.fontSize = "22px";
+            this.changeDiv21.nativeElement.style.fontSize = "22px";
+            this.changeDiv22.nativeElement.style.fontSize = "22px";
+            this.changeDiv23.nativeElement.style.fontSize = "22px";
+            this.changeDiv24.nativeElement.style.fontSize = "22px";
+            this.changeDiv25.nativeElement.style.fontSize = "22px";
+            this.changeDiv26.nativeElement.style.fontSize = "22px";
+            this.changeDiv27.nativeElement.style.fontSize = "22px";
+            this.changeDiv28.nativeElement.style.fontSize = "22px";
+            this.changeDiv29.nativeElement.style.fontSize = "22px";
+        } else if (e.value == 4) {
+            this.changeDiv.nativeElement.style.fontSize = "25px";
+            this.changeDiv1.nativeElement.style.fontSize = "25px";
+            this.changeDiv2.nativeElement.style.fontSize = "25px";
+            this.changeDiv3.nativeElement.style.fontSize = "25px";
+            this.changeDiv4.nativeElement.style.fontSize = "25px";
+            this.changeDiv5.nativeElement.style.fontSize = "25px";
+            this.changeDiv6.nativeElement.style.fontSize = "25px";
+            this.changeDiv7.nativeElement.style.fontSize = "25px";
+            this.changeDiv8.nativeElement.style.fontSize = "25px";
+            this.changeDiv9.nativeElement.style.fontSize = "25px";
+            this.changeDiv10.nativeElement.style.fontSize = "25px";
+            this.changeDiv11.nativeElement.style.fontSize = "25px";
+            this.changeDiv12.nativeElement.style.fontSize = "25px";
+            this.changeDiv13.nativeElement.style.fontSize = "25px";
+            this.changeDiv14.nativeElement.style.fontSize = "25px";
+            this.changeDiv15.nativeElement.style.fontSize = "25px";
+            this.changeDiv16.nativeElement.style.fontSize = "25px";
+            this.changeDiv17.nativeElement.style.fontSize = "25px";
+            this.changeDiv18.nativeElement.style.fontSize = "25px";
+            this.changeDiv19.nativeElement.style.fontSize = "25px";
+            this.changeDiv20.nativeElement.style.fontSize = "25px";
+            this.changeDiv21.nativeElement.style.fontSize = "25px";
+            this.changeDiv22.nativeElement.style.fontSize = "25px";
+            this.changeDiv23.nativeElement.style.fontSize = "25px";
+            this.changeDiv24.nativeElement.style.fontSize = "25px";
+            this.changeDiv25.nativeElement.style.fontSize = "25px";
+            this.changeDiv26.nativeElement.style.fontSize = "25px";
+            this.changeDiv27.nativeElement.style.fontSize = "25px";
+            this.changeDiv28.nativeElement.style.fontSize = "25px";
+            this.changeDiv29.nativeElement.style.fontSize = "25px";
+        } else if (e.value == 5) {
+            this.changeDiv.nativeElement.style.fontSize = "50px";
+            this.changeDiv1.nativeElement.style.fontSize = "50px";
+            this.changeDiv2.nativeElement.style.fontSize = "50px";
+            this.changeDiv3.nativeElement.style.fontSize = "50px";
+            this.changeDiv4.nativeElement.style.fontSize = "50px";
+            this.changeDiv5.nativeElement.style.fontSize = "50px";
+        }
+    }
+    constructor(
+        private fb: FormBuilder,
+        private apiService: CPCQService,
+        private router: Router,
+        private formService: FirstForm,
+        private domSanitizer: DomSanitizer,
+        public dialog: MatDialog
+    ) {}
+    openDialog(i, j, id) {
+        //
+
+        var arr = [];
+        arr.push(this.attributes[i]);
+        arr.push(j);
+        arr.push(this.columnHeadings[j]);
+        arr.push(id);
+        const dialogRef = this.dialog.open(DialogFormComponent, {
+            data: {
+                animal: arr,
+                status: "form",
+            },
+            disableClose: true,
+        });
+        dialogRef.afterClosed().subscribe((result) => {
+            if (this.responsesArray[i][j][1] == "colorbold") {
+                this.unpackedCount = this.unpackedCount + 1;
+            }
+        });
+    }
+
+    openWordDialog(i) {
+        //
+        this.buttonClick = true;
+        const dialogRef = this.dialog.open(DialogFormComponent, {
+            data: {
+                animal: i,
+                status: "word",
+            },
+            disableClose: true,
+        });
+
+        dialogRef.afterClosed().subscribe((result) => {
+            this.wordDescription = result;
+        });
+    }
+
+    helpDialog(i) {
+        //
+        this.dialog.open(DialogFormComponent, {
+            data: {
+                animal: i,
+                status: "help",
+            },
+        });
+    }
+
+    keyPressFunc(e) {
+        //
+        var numbersList = ["1"];
+        for (let key in this.attitudeForm.value) {
+            if (numbersList.indexOf(this.attitudeForm.value[key]) == -1) {
+                //
+                return "Number";
+            }
+        }
+    }
+
+    getEmailError() {
+        return "Error";
+    }
+    responsesArray = [];
+    temp = [];
+    getResponses() {
+        this.apiService.getResponsesData().subscribe((res) => {
+            for (let key in res) {
+                this.temp = [];
+                for (let key1 in res[key]) {
+                    this.temp.push(res[key][key1]);
+                }
+                this.responsesArray.push(this.temp);
+            }
+        });
+    }
+
+    getForm() {
+        var arr = [];
+        var arr1 = [];
+        var arr2 = [];
+        var i;
+        var attitudeResult = [];
+        var empathyResult = [];
+        var policyResult = [];
+        var profResult = [];
+        var teachingResult = [];
+        this.finalList = [[]];
+        this.boldList = [[]];
+        this.apiService.getFormData().subscribe((res) => {
+            for (let key in res) {
+                arr = [];
+                if (res[key]["topic"] == "Attitude") {
+                    attitudeResult.push("Attitude");
+                    arr.push("Attitude");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
+                    );
+                } else if (res[key]["topic"] == "Empathy") {
+                    empathyResult.push("Empathy");
+                    arr.push("Empathy");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
+                    );
+                } else if (res[key]["topic"] == "Policy") {
+                    policyResult.push("Policy");
+                    arr.push("Policy");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
+                    );
+                    policyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
+                    );
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
+                    );
+                } else if (res[key]["topic"] == "Professionalism") {
+                    profResult.push("Professionalism");
+                    arr.push("Professionalism");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+
+                    profResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    profResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+                    profResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+                    profResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    profResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+                    profResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+                } else if (res[key]["topic"] == "Teaching Practice") {
+                    arr.push("Teaching Pracice");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+                    teachingResult.push("Teaching Practice");
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
+                    );
+                }
+
+                this.boldList.push(arr);
+            }
+            this.finalList.push(attitudeResult);
+            this.finalList.push(empathyResult);
+            this.finalList.push(policyResult);
+            this.finalList.push(profResult);
+            this.finalList.push(teachingResult);
+        });
+        this.finalList.splice(0, 1);
+        this.boldList.splice(0, 1);
+        // this.getAllIndexes(this.finalList,1)
+    }
+
+    emoji: any;
+    changeEmojiSize(data) {
+        document.getElementById("angry").style.height = "30px";
+        document.getElementById("angry").style.width = "30px";
+        document.getElementById("sad").style.height = "30px";
+        document.getElementById("sad").style.width = "30px";
+        document.getElementById("neutral").style.height = "30px";
+        document.getElementById("neutral").style.width = "30px";
+        document.getElementById("smile").style.height = "30px";
+        document.getElementById("smile").style.width = "30px";
+        document.getElementById("heart").style.height = "30px";
+        document.getElementById("heart").style.width = "30px";
+        document.getElementById(data).style.height = "50px";
+        document.getElementById(data).style.width = "50px";
+
+        this.emoji = data;
+    }
+
+    thumbs: any;
+    changeThumbsSize(data) {
+        document.getElementById("thumbsup").style.height = "30px";
+        document.getElementById("thumbsup").style.width = "30px";
+        document.getElementById("thumbsdown").style.height = "30px";
+        document.getElementById("thumbsdown").style.width = "30px";
+
+        document.getElementById(data).style.height = "50px";
+        document.getElementById(data).style.width = "50px";
+        this.thumbs = data;
+    }
+    finalSubmit() {
+        this.finalFeedbackForm.value["q6"] = this.thumbs;
+        this.finalFeedbackForm.value["q7"] = this.emoji;
+
+        this.endTime = new Date();
+
+        this.durationTime = (this.endTime - this.startTime) / 1000;
+        this.durationTime = this.durationTime / 60;
+
+        this.apiService.patchStatus("finalfeedbackstatus").subscribe((res) => {});
+
+        this.apiService.postFeedbackForm(this.finalFeedbackForm.value).subscribe(
+            (res) => {
+                this.apiService.changeCPCQStatus().subscribe((res1) => {
+                    Swal.fire({
+                        text: "Submitted",
+                        icon: "success",
+                    }).then((res) => {
+                        if (res["isConfirmed"]) {
+                            this.router.navigateByUrl("/result");
+                        }
+                    });
+                });
+            },
+            (err) => {}
+        );
+    }
+    ngOnInit(): void {
+        this.startTime = new Date();
+        this.finalFeedbackForm = this.fb.group({
+            q1: [""],
+            q2: [""],
+            q3: [""],
+            q4: [""],
+            q5: [""],
+            q6: [""],
+            q7: [""],
+        });
+
+        this.apiService.attitudeData().subscribe(
+            (res) => {
+                //
+                this.attitude = res[0];
+                //
+            },
+            (err) => {}
+        );
+
+        this.apiService.empathyData().subscribe(
+            (res) => {
+                //
+                this.empathy = res[0];
+                //
+            },
+            (err) => {}
+        );
+
+        this.apiService.policyData().subscribe(
+            (res) => {
+                this.policy = res[0];
+            },
+            (err) => {}
+        );
+
+        this.apiService.professionalismData().subscribe(
+            (res) => {
+                this.professionalism = res[0];
+            },
+            (err) => {}
+        );
+
+        this.apiService.teachingData().subscribe(
+            (res) => {
+                this.teachingPractice = res[0];
+            },
+            (err) => {}
+        );
+
+        this.attitudeForm = this.fb.group({
+            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            description: ["", [Validators.required]],
+        });
+
+        this.empathyForm = this.fb.group({
+            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        });
+
+        this.policyForm = this.fb.group({
+            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        });
+
+        var arr = [];
+        var arr1 = [];
+        var arr2 = [];
+        var i;
+        for (var j = 0; j < 5; j++) {
+            arr = [];
+            arr1 = [];
+            arr2 = [];
+            i = 0;
+            while (i < 6) {
+                var item1 = Math.floor(Math.random() * (7 - 1) + 1);
+                if (arr1.indexOf(item1) == -1) {
+                    if (i == 0) {
+                        arr.push(this.attributes[j]);
+                        arr.push(this.rowLetters[j][i] + ". " + item1);
+                        arr1.push(item1);
+                        if (arr1[arr1.length - 1] > 2) {
+                            //
+                            arr2.push("True");
+                        } else {
+                            arr2.push("False");
+                        }
+                    } else {
+                        arr.push(this.rowLetters[j][i] + ". " + item1);
+                        arr1.push(item1);
+                        if (i == 1) {
+                            if (arr1[arr1.length - 1] > 3) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        } else if (i == 2) {
+                            if (arr1[arr1.length - 1] > 4 || arr1[arr1.length - 1] == 1) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        } else if (i == 3) {
+                            if (arr1[arr1.length - 1] > 5 || arr1[arr1.length - 1] < 4) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        } else if (i == 4) {
+                            if (arr1[arr1.length - 1] < 4) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        } else if (i == 5) {
+                            if (arr1[arr1.length - 1] < 5) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        }
+                    }
+                    i = i + 1;
+                } else {
+                    continue;
+                }
+            }
+            this.formValues.push(arr);
+            this.boldList.push(arr1);
+            this.randomList.push(arr2);
+        }
+        this.boldList.splice(0, 1);
+        this.randomList.splice(0, 1);
+
+        this.getAllIndexes(this.randomList, "True");
+        this.loaded = true;
+    }
+
+    getAllIndexes(arr, val) {
+        var indexes = [];
+        var i = -1;
+        for (var i = 0; i < arr.length; i++) {
+            for (var j = 0; j < arr[i].length; j++) {
+                if (arr[i][j] == "True") {
+                    var arr1 = [];
+                    arr1.push(i);
+                    arr1.push(j);
+                    indexes.push(arr1);
+                }
+            }
+        }
+
+        var arr1 = [];
+        for (var i = 0; i < indexes.length; i++) {
+            arr1.push(i);
+        }
+        var ranNums = [];
+        var i = arr1.length;
+        var j = 0;
+        var count = 0;
+        while (i--) {
+            if (count < 5) {
+                j = Math.floor(Math.random() * (i + 1));
+                ranNums.push(arr1[j]);
+                arr1.splice(j, 1);
+                count = count + 1;
+            } else {
+                break;
+            }
+        }
+
+        //
+        for (var i = 0; i < this.boldList.length; i++) {
+            var temp = [];
+            for (var j = 0; j < 6; j++) {
+                temp.push("False");
+            }
+            this.finalList1.push(temp);
+        }
+
+        for (var i = 0; i < ranNums.length; i++) {
+            var item = indexes[ranNums[i]];
+
+            this.finalList1[item[0]][item[1]] = "True";
+        }
+        // this.finalList1.splice(0,1)
+    }
+    preSurvey() {
+        this.router.navigateByUrl("/preSurvey");
+    }
+
+    nextButton() {
+        if (this.selectedIndex == 0) {
+            this.selectedIndex = this.selectedIndex + 1;
+            return;
+        }
+        if (this.selectedIndex == 7) {
+            this.router.navigateByUrl("/dashboard");
+            return;
+        }
+
+        var numberList = [];
+        var flag = true;
+        for (let key in this.attitudeForm.value) {
+            if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
+                flag = false;
+                Swal.fire({
+                    text: "Please enter values from 1 through 6 only.",
+                    icon: "warning",
+                }).then((res) => {});
+                break;
+            }
+            if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
+                numberList.push(this.attitudeForm.value[key]);
+            } else {
+                flag = false;
+                Swal.fire({
+                    text: "The inputs have been repeated. Please enter values from 1 through 6.",
+                    icon: "warning",
+                }).then((res) => {});
+                break;
+            }
+        }
+        if (!this.buttonClick) {
+            flag = false;
+            Swal.fire({
+                text: "Click on the word '" + this.attributes[this.selectedIndex - 1] + "' and respond to the prompt.",
+                icon: "warning",
+            }).then((res) => {});
+        }
+        if (flag) {
+            if (this.selectedIndex == 7) {
+                this.router.navigateByUrl("/postSurvey");
+            }
+            this.sliderFunction1();
+            var formData = {};
+            formData["topic"] = this.attributes[this.selectedIndex - 1];
+            if (this.attributes[this.selectedIndex - 1] == "Attitude") {
+                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalCompetence"] = "F. " + this.attitudeForm.value["F"];
+                formData["culturalProficiency"] = "E. " + this.attitudeForm.value["E"];
+            } else if (this.attributes[this.selectedIndex - 1] == "Empathy") {
+                formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalBlindness"] = "F. " + this.attitudeForm.value["F"];
+                formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalCompetence"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalProficiency"] = "C. " + this.attitudeForm.value["C"];
+            } else if (this.attributes[this.selectedIndex - 1] == "Policy") {
+                formData["culturalDestructiveness"] = "F. " + this.attitudeForm.value["F"];
+                formData["culturalIncapacity"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalCompetence"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalProficiency"] = "A. " + this.attitudeForm.value["A"];
+            } else if (this.attributes[this.selectedIndex - 1] == "Professionalism") {
+                formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalCompetence"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+            } else if (this.attributes[this.selectedIndex - 1] == "Teaching Practice") {
+                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+            }
+
+            this.endTime = new Date();
+
+            this.durationTime = (this.endTime - this.startTime) / 1000;
+            this.durationTime = this.durationTime / 60;
+
+            formData["description"] = this.wordDescription;
+            formData["duration"] = this.durationTime;
+            this.apiService.postFormData(formData).subscribe(
+                (res) => {
+                    //
+                },
+                (err) => {}
+            );
+            // this.getForm();
+            this.selectedIndex = this.selectedIndex + 1;
+            this.buttonClick = false;
+            this.startTime = new Date();
+            this.attitudeForm = this.fb.group({
+                A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            });
+        }
+    }
+
+    postSurvey() {
+        this.router.navigateByUrl("/postSurvey");
+    }
+
+    submitForm1() {
+        if (this.unpackedCount >= 5) {
+            this.endTime = new Date();
+
+            this.durationTime = (this.endTime - this.startTime) / 1000;
+            this.durationTime = this.durationTime / 60;
+            this.apiService.patchStatus("cpcqstatus").subscribe((res) => {
+                Swal.fire({
+                    text: "Submitted",
+                    icon: "success",
+                }).then((res) => {
+                    if (res["isConfirmed"]) {
+                        // this.getForm()
+                        this.selectedIndex = this.selectedIndex + 1;
+                    }
+                });
+            });
+        } else {
+            Swal.fire({
+                text: "Please click on all the yellow boxes and answer the questions in the prompt.",
+                icon: "warning",
+            }).then((res) => {});
+        }
+    }
+
+    submitForm() {
+        if (this.selectedIndex == 5) {
+            var numberList = [];
+            var flag = false;
+
+            for (let key in this.attitudeForm.value) {
+                if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
+                    flag = true;
+                    Swal.fire({
+                        text: "Please enter values from 1 through 6 only.",
+                        icon: "warning",
+                    }).then((res) => {});
+                    break;
+                }
+                if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
+                    numberList.push(this.attitudeForm.value[key]);
+                } else {
+                    flag = true;
+                    Swal.fire({
+                        text: "The inputs have been repeated. Please enter values from 1 through 6.",
+                        icon: "warning",
+                    }).then((res) => {});
+                    break;
+                }
+            }
+            if (!this.buttonClick) {
+                flag = true;
+                Swal.fire({
+                    text:
+                        "Click on the word '" +
+                        this.attributes[this.selectedIndex - 1] +
+                        "' and respond to the prompt.",
+                    icon: "warning",
+                }).then((res) => {});
+            }
+            if (!flag) {
+                //
+                var formData = {};
+
+                formData["topic"] = this.attributes[this.selectedIndex - 1];
+                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+
+                formData["description"] = this.wordDescription;
+                this.endTime = new Date();
+
+                this.durationTime = (this.endTime - this.startTime) / 1000;
+                this.durationTime = this.durationTime / 60;
+
+                formData["duration"] = this.durationTime;
+                this.apiService.postFormData(formData).subscribe(
+                    (res) => {
+                        //
+                        this.apiService.patchStatus("responsesstatus").subscribe((res) => {
+                            Swal.fire({
+                                text: "Submitted",
+                                icon: "success",
+                            }).then((res) => {
+                                if (res["isConfirmed"]) {
+                                    // this.getForm()
+                                    // this.getResponses()
+                                    this.router.navigateByUrl("/unpacking");
+
+                                    // this.selectedIndex = this.selectedIndex + 1;
+                                    this.startTime = new Date();
+                                }
+                            });
+                        });
+                    },
+                    (err) => {}
+                );
+            }
+        }
+    }
+
+    submit() {
+        //
+        var tempDict;
+        this.responseList = [];
+        for (let key in this.firstForm.value) {
+            tempDict = {};
+            tempDict["question"] = key;
+            tempDict["response"] = this.firstForm.value[key];
+            this.responseList.push(tempDict);
+        }
+        //
+
+        this.formService.submitResponse(this.responseList).subscribe(
+            (res) => {
+                //
+                Swal.fire({
+                    text: "Submitted",
+                    icon: "success",
+                });
+                this.router.navigateByUrl("/game");
+            },
+            (err) => {
+                Swal.fire({
+                    text: "Duplicate Entries",
+                    icon: "warning",
+                });
+            }
+        );
+    }
+
+    title = "micRecorder";
+    //Lets declare Record OBJ
+    record;
+    //Will use this flag for toggeling recording
+    recording = false;
+    //URL of Blob
+    url;
+    error;
+    sanitize(url: string) {
+        return this.domSanitizer.bypassSecurityTrustUrl(url);
+    }
+    /**
+     * Start recording.
+     */
+    initiateRecording() {
+        this.recording = true;
+        let mediaConstraints = {
+            video: false,
+            audio: true,
+        };
+        navigator.mediaDevices
+            .getUserMedia(mediaConstraints)
+            .then(this.successCallback.bind(this), this.errorCallback.bind(this));
+    }
+    /**
+     * Will be called automatically.
+     */
+    successCallback(stream) {
+        var options = {
+            mimeType: "audio/wav",
+            numberOfAudioChannels: 1,
+            // sampleRate: 16000,
+        };
+        //Start Actuall Recording
+        var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
+        this.record = new StereoAudioRecorder(stream, options);
+        this.record.record();
+    }
+    /**
+     * Stop recording.
+     */
+    stopRecording() {
+        this.recording = false;
+        this.record.stop(this.processRecording.bind(this));
+    }
+    /**
+     * processRecording Do what ever you want with blob
+     * @param  {any} blob Blog
+     */
+    processRecording(blob) {
+        this.url = URL.createObjectURL(blob);
+        //
+        //
+    }
+    /**
+     * Process Error.
+     */
+    errorCallback(error) {
+        this.error = "Can not play audio in your browser";
+    }
+}
diff --git a/src/app/cpcq-form/dialog-form/dialog-form.component.css b/src/app/components/cpcq-form/dialog-form/dialog-form.component.css
similarity index 100%
rename from src/app/cpcq-form/dialog-form/dialog-form.component.css
rename to src/app/components/cpcq-form/dialog-form/dialog-form.component.css
diff --git a/src/app/cpcq-form/dialog-form/dialog-form.component.html b/src/app/components/cpcq-form/dialog-form/dialog-form.component.html
similarity index 100%
rename from src/app/cpcq-form/dialog-form/dialog-form.component.html
rename to src/app/components/cpcq-form/dialog-form/dialog-form.component.html
diff --git a/src/app/cpcq-form/dialog-form/dialog-form.component.spec.ts b/src/app/components/cpcq-form/dialog-form/dialog-form.component.spec.ts
similarity index 100%
rename from src/app/cpcq-form/dialog-form/dialog-form.component.spec.ts
rename to src/app/components/cpcq-form/dialog-form/dialog-form.component.spec.ts
diff --git a/src/app/components/cpcq-form/dialog-form/dialog-form.component.ts b/src/app/components/cpcq-form/dialog-form/dialog-form.component.ts
new file mode 100644
index 0000000..a094c98
--- /dev/null
+++ b/src/app/components/cpcq-form/dialog-form/dialog-form.component.ts
@@ -0,0 +1,489 @@
+import { Component, OnInit, ViewChild, ElementRef, AfterViewInit, ChangeDetectorRef } from "@angular/core";
+import { Inject } from "@angular/core";
+import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dialog";
+import { ITimeUpdateEvent, NgWaveformComponent, IRegionPositions } from "ng-waveform";
+import { FormBuilder, FormGroup, Validators } from "@angular/forms";
+import { CPCQService } from "src/app/services/cpcq.service";
+export interface DialogData {
+    animal;
+    status;
+    result;
+}
+
+declare var $: any;
+import * as RecordRTC from "recordrtc";
+import { DomSanitizer } from "@angular/platform-browser";
+@Component({
+    selector: "app-dialog-form",
+    templateUrl: "./dialog-form.component.html",
+    styleUrls: ["./dialog-form.component.css"],
+})
+export class DialogFormComponent implements OnInit {
+    description;
+    word;
+    selectedIndex = 0;
+    displayTextControl = false;
+    displayText = "";
+    wordDescriptionForm: FormGroup;
+    unpackingForm: FormGroup;
+
+    unpackingArray = {};
+
+    submit = false;
+    errorField = false;
+
+    startTime: any;
+    endTime: any;
+    durationTime: any;
+
+    attitude = [
+        "D. It should be required for students to remove hair accessories that are associated with their culture, tribe, sexuality, or religion.",
+        "C. Students who wear dreadlocks as a hairstyle are a distraction in the classroom.",
+        "B. Black students have the same opportunities and access to attend college as their white peers.",
+        "A. Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.",
+        "F. All faculty and staff within a school setting have equal ability to transfer knowledge to students in regards to life, culture, character, and/or academic content.",
+        "E. All students who live in the United States deserve a quality public education, even those students whose parents are undocumented immigrants.",
+    ];
+
+    attitudeOrder = ["D", "C", "B", "A", "F", "E"];
+    empathy = [
+        "E. A school counselor advised a biracial student that they would appear more professional if they perm their hair (removing the kinks) for their upcoming college visits.",
+        "A. A 10th-grade male died as a result of a car accident during an illegal street race. A group of teachers will not attend the funeral because of the activity that led to the student’s cause of death.",
+        "F. Your colleague was pulled over by the police on the way to work this morning. You hear other colleagues in the break room discussing the reasons why they were pulled over, and all of the suspected reasons were related to what they may have done (i.e., speeding, running a stop sign, etc.), rather than acknowledging that they may have been pulled over for being a person of color driving a luxury car.",
+        "D. An Asian student scored an 85 percent on today’s math quiz. The teacher expressed disappointment in the student by saying, “Come on, you are Asian! You should’ve scored better than this.”",
+        "B. A public school Teacher is grounded by the philosophy of their religion. Throughout their career as an educator; they have learned to be welcoming to others’ cultural and religious beliefs even if those beliefs are in conflict with their own.",
+        "C. In two weeks, the 8th grade teaching cluster will be getting a new math teacher who is Muslim. Next week’s professional development is dedicated to learning about the customs and etiquette of Islam to ensure that the new colleague feels welcomed in their new school.",
+    ];
+    empathyOrder = ["E", "A", "F", "D", "B", "C"];
+    policy = [
+        "F. A member of the school board is proposing a policy where English is the official language for all school related business in a community where the majority of the students’ and families’ primary language is Spanish.",
+        "E.  Students in a high-poverty school who are absent 10 consecutive days in a marking period are referred to special education for excessive absenteeism.",
+        "B.  A school that does not consider factors related to culture and ethnicity in their decision-making process is more democratic than a school who does consider factors related to culture and ethnicity in their decision-making process.",
+        "C. A school leader makes a “diversity hire” to introduce new ideas around school culture, curriculum, leadership, and/or supervision.",
+        "D.  A principal implemented a policy that all faculty and staff have to participate in quarterly potlucks; they are to bring a traditional dish specific to their culture, as a way to facilitate cross-cultural discourse.",
+        "A. A group of teachers and students are protesting the athletic department at a high school for changing the school’s logo to a silhouette of a Native American in a headdress; they have secured a place on the agenda for the next school board meeting to give a presentation on why this logo is offensive and trivializes Native Americans.",
+    ];
+    policyOrder = ["F", "E", "B", "C", "D", "A"];
+
+    professionalism = [
+        "E. A history teacher refuses to acknowledge black history month and does not want to teach content about black history in the United States.",
+        "A. A teacher asked the class who has traveled out of the country. A Black male raises his hand and states “I have.”  The teacher asked the student three follow-up questions to corroborate his story.",
+        "B. During lunch duty, teachers had a discussion in the presence of students about tomorrow’s district-wide racial sensitivity training. A teacher commented, “Why do we have to attend this training; the United States is post-racial because we have a Black president.”",
+        "D. The reading specialist expressed some concerns to the Vice Principal about how her male students emasculates her during whole group instruction. The Vice Principal said, “Don’t worry about it, that's just how boys behave.” ",
+        "C. The social committee at an elementary school is planning an awards ceremony and dinner for the staff and faculty. Six of their colleagues are vegan because of their religious beliefs.  As a result, the committee has added a vegan selection to the menu to accommodate their colleagues’ religious beliefs.",
+        "F. An AP English teacher has assigned a research paper where the students were required to write about their religion. The teacher did not let their own religious beliefs cloud their judgement; the teacher researched the student’s religion while grading the paper to offer relevant constructive feedback back on the arguments made within the paper.",
+    ];
+    professionalismOrder = ["E", "A", "B", "D", "C", "F"];
+    teaching = [
+        "D. A teacher puts together a petition to request a textbook company to remove the narrative about the enslavement of Africans in the United States in their history textbook to accommodate teachers’ discomfort with discussing this sensitive topic.",
+        "C. A teacher created a seating chart that placed ‘unteachable students’ in the back of the classroom, all of whom were male: 2 Latinos and 6 African Americans. In the same seating chart, her ‘good students,' all white, were seated in preferential seating.",
+        "B. An algebra teacher who teaches in a school where the majority of the students are on free and reduced lunch requires that each student buy a specific graphing calculator for Algebra, which retails for over 100 dollars.",
+        "E. A teacher in a Title 1 school (high percentage of children from low-income families) checks homework for completeness rather than correctness as a strategy to improve student efficacy.",
+        "A. A novice teacher in a school where the majority of the students are African-American and Latino uses hip-hop as a way to make science relevant in the student's social and cultural context.",
+        "F. There is an increase of LGBTQIA+ students reporting that they are being harassed both verbally and physically in United States public schools. A group of students and teachers are researching the best practices to implement and create a supportive environment for these students to voice their concerns in their school.",
+    ];
+    teachingOrder = ["D", "C", "B", "E", "A", "F"];
+
+    culturalStatus = [
+        "Cultural Destructiveness",
+        "Cultural Incapacity",
+        "Cultural Blindness",
+        "Cultural Pre-Competence",
+        "Cultural Competence",
+        "Cultural Proficiency",
+    ];
+    tempStatus = "";
+    @ViewChild("waveform", { static: false }) waveform: NgWaveformComponent;
+    constructor(
+        @Inject(MAT_DIALOG_DATA) public data: DialogData,
+        public dialogRef: MatDialogRef<DialogFormComponent>,
+        public dialog: MatDialog,
+        private fb: FormBuilder,
+        private domSanitizer: DomSanitizer,
+        public cpcqService: CPCQService
+    ) {}
+
+    closeDialog() {
+        if (!this.wordDescriptionForm.valid) {
+        } else {
+            this.data.result = this.wordDescriptionForm.value["answer"];
+            this.dialogRef.close(this.wordDescriptionForm.value["answer"]);
+        }
+    }
+
+    describeFunc(temp) {
+        this.displayTextControl = this.displayTextControl == true ? false : true;
+        if (temp == "Cultural Destructiveness") {
+            this.displayText =
+                "When individuals or policies seek to eliminate all vestiges of others culture in educational and/or social contexts (Lindsey, Robins, & Terrell, 2009).";
+        } else if (temp == "Cultural Incapacity") {
+            this.displayText =
+                "Trivializing and stereotyping other cultures; seeking to make the cultures of others appear [incongruent with and] inferior to the dominant [or host] culture [within educational and/or social context] ";
+        } else if (temp == "Cultural Blindness") {
+            this.displayText = `Not noticing or acknowledging the culture of others and ignoring the [diverse] experiences of cultures within [educational and/or social context]; treating everyone in the system the same way without recognizing the needs that require differentiated [approaches] `;
+        } else if (temp == "Cultural Pre-Competence") {
+            this.displayText = `The awareness/ability to identify when an individual/institution does not know how to effectively engage families, students, and teachers in a culturally diverse educational and/or social context `;
+        } else if (temp == "Cultural Competence") {
+            this.displayText = `The practical/institutional alignment of an individual’s personal values and behaviors which are in agreement with educational policies and practices that honors cultures that are new, different, and/or a minority. Such an environment displays healthy and productive interactions that denote solidarity in the educational context. However, this level of the Cultural Proficiency Continuum may or may not be limited to educational context`;
+        } else {
+            this.displayText = `Espouses a vision that educational and social spaces are agents of social change and a model of a just democracy. These individual/institutions learn, teach, research, advocate, and champion for members of diverse and minoritized cultural groups. This level of the Cultural Proficiency Continuum is displayed and espoused in a variety of social constructions and contexts: educational, gender, professional, race, religious, and sexuality`;
+        }
+    }
+
+    nextButton() {
+        this.submit = true;
+        if (!this.unpackingForm.valid) {
+            this.errorField = true;
+        } else {
+            this.submit = false;
+            this.errorField = false;
+            if (this.selectedIndex == 0) {
+                this.unpackingArray["1. Explain why this vignette above is understood to be " + this.tempStatus + "."] =
+                    this.unpackingForm.value["response"];
+            } else if (this.selectedIndex == 1) {
+                this.unpackingArray["2. What is the social problem in the vignette?"] =
+                    this.unpackingForm.value["response"];
+            } else if (this.selectedIndex == 2) {
+                this.unpackingArray["3. What is the cause of the social problem in the vignette?"] =
+                    this.unpackingForm.value["response"];
+            } else if (this.selectedIndex == 3) {
+                this.unpackingArray[
+                    "4. What solutions would you offer to address the social problem in the vignette?"
+                ] = this.unpackingForm.value["response"];
+            }
+            if (this.selectedIndex == 3) {
+                this.endTime = new Date();
+
+                this.durationTime = (this.endTime - this.startTime) / 1000;
+                this.durationTime = this.durationTime / 60;
+
+                var arr = {};
+                arr["topic"] = this.word;
+                arr["duration"] = this.durationTime;
+                arr["response_id"] = this.data.animal[3];
+                arr[this.data.animal[2]] = this.unpackingArray;
+                // if(this.data.animal[2] == )
+                this.cpcqService.postUnpacking(arr).subscribe((res) => {
+                    this.dialogRef.close(res);
+                });
+            } else {
+                this.selectedIndex = this.selectedIndex + 1;
+                if (this.selectedIndex > 3) {
+                    this.selectedIndex = 3;
+                }
+            }
+
+            this.unpackingForm = this.fb.group({
+                response: ["", Validators.required],
+            });
+        }
+    }
+
+    onPlayButtonClick() {
+        this.waveform.play();
+    }
+    onPauseButtonClick() {
+        this.waveform.pause();
+    }
+
+    onTrackLoaded(e) {}
+
+    onTrackRendered(e) {}
+
+    onDurationChange(e) {}
+
+    onTimeUpdate(e) {}
+
+    onRegionChange(e) {}
+    title = "micRecorder";
+    //Lets declare Record OBJ
+    record;
+    //Will use this flag for toggeling recording
+    recording = false;
+    //URL of Blob
+    url;
+    error;
+    sanitize(url: string) {
+        return this.domSanitizer.bypassSecurityTrustUrl(url);
+    }
+    /**
+     * Start recording.
+     */
+    initiateRecording() {
+        this.recording = true;
+        let mediaConstraints = {
+            video: false,
+            audio: true,
+        };
+        navigator.mediaDevices
+            .getUserMedia(mediaConstraints)
+            .then(this.successCallback.bind(this), this.errorCallback.bind(this));
+    }
+    /**
+     * Will be called automatically.
+     */
+    successCallback(stream) {
+        var options = {
+            mimeType: "audio/wav",
+            numberOfAudioChannels: 1,
+            // sampleRate: 16000,
+        };
+        //Start Actuall Recording
+        var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
+        this.record = new StereoAudioRecorder(stream, options);
+        this.record.record();
+    }
+    /**
+     * Stop recording.
+     */
+    stopRecording() {
+        this.recording = false;
+        this.record.stop(this.processRecording.bind(this));
+    }
+    /**
+     * processRecording Do what ever you want with blob
+     * @param  {any} blob Blog
+     */
+    processRecording(blob) {
+        this.url = URL.createObjectURL(blob);
+    }
+    /**
+     * Process Error.
+     */
+    errorCallback(error) {
+        this.error = "Can not play audio in your browser";
+    }
+
+    questions: any;
+    questions1: any;
+    questions2: any;
+    scores1: any;
+    comments: any;
+    meanValue: any;
+    meanNumber: any;
+
+    columnHeadings = [
+        "Cultural Destructiveness",
+        "Cultural Incapacity",
+        "Cultural Blindness",
+        "Cultural PreCompetence",
+        "Cultural Competence",
+        "Cultural Proficiency",
+    ];
+
+    scores: any;
+    ngOnInit(): void {
+        this.startTime = new Date();
+        this.wordDescriptionForm = this.fb.group({
+            answer: ["", [Validators.required]],
+        });
+        this.unpackingForm = this.fb.group({
+            response: ["", Validators.required],
+        });
+        if (this.data.status == "form") {
+            if (this.data.animal[0] == "Attitude") {
+                this.word = "Attitude";
+                this.description = this.attitude[this.data.animal[1]];
+                this.tempStatus = this.culturalStatus[this.data.animal[1]];
+            } else if (this.data.animal[0] == "Empathy") {
+                this.word = "Empathy";
+                this.description = this.empathy[this.data.animal[1]];
+                this.tempStatus = this.culturalStatus[this.data.animal[1]];
+            } else if (this.data.animal[0] == "Policy") {
+                this.word = "Policy";
+                this.description = this.policy[this.data.animal[1]];
+                this.tempStatus = this.culturalStatus[this.data.animal[1]];
+            } else if (this.data.animal[0] == "Professionalism") {
+                this.word = "Professionalism";
+                this.description = this.professionalism[this.data.animal[1]];
+                this.tempStatus = this.culturalStatus[this.data.animal[1]];
+            } else if (this.data.animal[0] == "Teaching Practice") {
+                this.word = "Teaching Practice";
+                this.description = this.teaching[this.data.animal[1]];
+                this.tempStatus = this.culturalStatus[this.data.animal[1]];
+            }
+        } else if (this.data.status == "score") {
+            if (this.data.animal[0] == "Attitude") {
+                this.word = "Attitude";
+                var i = this.attitudeOrder.indexOf(this.data.animal[1]);
+                this.description = this.attitude[i];
+                this.meanValue = this.data.animal[2];
+                this.scores = this.data.animal[3];
+                this.questions = this.data.animal[4];
+            } else if (this.data.animal[0] == "Empathy") {
+                this.word = "Empathy";
+                var i = this.empathyOrder.indexOf(this.data.animal[1]);
+                this.description = this.empathy[i];
+                this.meanValue = this.data.animal[2];
+                this.scores = this.data.animal[3];
+                this.questions = this.data.animal[4];
+            } else if (this.data.animal[0] == "Policy") {
+                this.word = "Policy";
+                var i = this.policyOrder.indexOf(this.data.animal[1]);
+                this.description = this.policy[i];
+                this.meanValue = this.data.animal[2];
+                this.scores = this.data.animal[3];
+                this.questions = this.data.animal[4];
+            } else if (this.data.animal[0] == "Professionalism") {
+                this.word = "Professionalism";
+                var i = this.professionalismOrder.indexOf(this.data.animal[1]);
+                this.description = this.professionalism[i];
+                this.meanValue = this.data.animal[2];
+                this.scores = this.data.animal[3];
+                this.questions = this.data.animal[4];
+            } else if (this.data.animal[0] == "Teaching Practice") {
+                this.word = "Teaching Practice";
+                var i = this.teachingOrder.indexOf(this.data.animal[1]);
+                this.description = this.teaching[i];
+                this.meanValue = this.data.animal[2];
+                this.scores = this.data.animal[3];
+                this.questions = this.data.animal[4];
+            }
+            this.meanNumber = this.meanValue;
+
+            this.questions1 = [];
+            this.questions2 = [];
+            this.scores1 = [];
+            for (let key in this.scores) {
+                if (this.scores[key] == 1) {
+                    this.scores1[key] = this.columnHeadings[0];
+                }
+                if (this.scores[key] == 2) {
+                    this.scores1[key] = this.columnHeadings[1];
+                }
+                if (this.scores[key] == 3) {
+                    this.scores1[key] = this.columnHeadings[2];
+                }
+                if (this.scores[key] == 4) {
+                    this.scores1[key] = this.columnHeadings[3];
+                }
+                if (this.scores[key] == 5) {
+                    this.scores1[key] = this.columnHeadings[4];
+                }
+            }
+
+            if (this.meanValue >= 0 && this.meanValue <= 1) {
+                if (this.meanValue == 1) this.meanValue = this.columnHeadings[0];
+                else this.meanValue = " somewhere between Cultural Destructiveness and Cultural Incapacity";
+            }
+            if (this.meanValue > 1 && this.meanValue <= 2) {
+                if (this.meanValue == 2) this.meanValue = this.columnHeadings[1];
+                else this.meanValue = " somewhere between Cultural Incapacity and Cultural Blindness";
+            }
+            if (this.meanValue > 2 && this.meanValue <= 3) {
+                if (this.meanValue == 3) this.meanValue = this.columnHeadings[2];
+                else this.meanValue = " somewhere between Cultural Blindness and Cultural PreCompetence";
+            }
+            if (this.meanValue > 3 && this.meanValue <= 4) {
+                if (this.meanValue == 4) this.meanValue = this.columnHeadings[3];
+                else this.meanValue = " somewhere between Cultural PreCompetence and Cultural Competence";
+            }
+            if (this.meanValue > 4 && this.meanValue <= 5) {
+                if (this.meanValue == 5) this.meanValue = this.columnHeadings[4];
+                else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
+            }
+            if (this.meanValue > 5) {
+                if (this.meanValue == 5) this.meanValue = this.columnHeadings[4];
+                else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
+            }
+            for (let key in this.questions) {
+                this.questions2.push(key);
+                this.questions1.push(this.questions[key]);
+            }
+        } else if (this.data.status == "form1") {
+            if (this.data.animal[0] == "Attitude") {
+                this.word = "Attitude";
+                this.description = this.attitude[this.data.animal[1]];
+                this.tempStatus = this.culturalStatus[this.data.animal[1]];
+                this.questions = this.data.animal[4];
+                this.scores = this.data.animal[5];
+            } else if (this.data.animal[0] == "Empathy") {
+                this.word = "Empathy";
+                this.description = this.empathy[this.data.animal[1]];
+                this.tempStatus = this.culturalStatus[this.data.animal[1]];
+                this.questions = this.data.animal[4];
+                this.scores = this.data.animal[5];
+            } else if (this.data.animal[0] == "Policy") {
+                this.word = "Policy";
+                this.description = this.policy[this.data.animal[1]];
+                this.tempStatus = this.culturalStatus[this.data.animal[1]];
+                this.questions = this.data.animal[4];
+                this.scores = this.data.animal[5];
+            } else if (this.data.animal[0] == "Professionalism") {
+                this.word = "Professionalism";
+                this.description = this.professionalism[this.data.animal[1]];
+                this.tempStatus = this.culturalStatus[this.data.animal[1]];
+                this.questions = this.data.animal[4];
+                this.scores = this.data.animal[5];
+            } else if (this.data.animal[0] == "Teaching Practice") {
+                this.word = "Teaching Practice";
+                this.description = this.teaching[this.data.animal[1]];
+                this.tempStatus = this.culturalStatus[this.data.animal[1]];
+                this.questions = this.data.animal[4];
+                this.scores = this.data.animal[5];
+            }
+            this.questions1 = [];
+            this.questions2 = [];
+            this.scores1 = [];
+            this.comments = this.data.animal[6];
+            var temp = 0;
+            for (let key in this.scores) {
+                temp = temp + this.scores[key];
+                if (this.scores[key] == 1) {
+                    this.scores1[key] = this.columnHeadings[0];
+                }
+                if (this.scores[key] == 2) {
+                    this.scores1[key] = this.columnHeadings[1];
+                }
+                if (this.scores[key] == 3) {
+                    this.scores1[key] = this.columnHeadings[2];
+                }
+                if (this.scores[key] == 4) {
+                    this.scores1[key] = this.columnHeadings[3];
+                }
+                if (this.scores[key] == 5) {
+                    this.scores1[key] = this.columnHeadings[4];
+                }
+            }
+            this.meanValue = temp / 4.0;
+            this.meanNumber = temp / 4.0;
+            if (this.meanValue >= 0 && this.meanValue <= 1) {
+                if (this.meanValue == 1) this.meanValue = this.columnHeadings[0];
+                else this.meanValue = " somewhere between Cultural Destructiveness and Cultural Incapacity";
+            }
+            if (this.meanValue > 1 && this.meanValue <= 2) {
+                if (this.meanValue == 2) this.meanValue = this.columnHeadings[1];
+                else this.meanValue = " somewhere between Cultural Incapacity and Cultural Blindness";
+            }
+            if (this.meanValue > 2 && this.meanValue <= 3) {
+                if (this.meanValue == 3) this.meanValue = this.columnHeadings[2];
+                else this.meanValue = " somewhere between Cultural Blindness and Cultural PreCompetence";
+            }
+            if (this.meanValue > 3 && this.meanValue <= 4) {
+                if (this.meanValue == 4) this.meanValue = this.columnHeadings[3];
+                else this.meanValue = " somewhere between Cultural PreCompetence and Cultural Competence";
+            }
+            if (this.meanValue > 4 && this.meanValue <= 5) {
+                if (this.meanValue == 5) this.meanValue = this.columnHeadings[4];
+                else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
+            }
+            if (this.meanValue > 5) {
+                if (this.meanValue == 5) this.meanValue = this.columnHeadings[4];
+                else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
+            }
+
+            for (let key in this.questions) {
+                this.questions2.push(key);
+                this.questions1.push(this.questions[key]);
+            }
+        } else if (this.data.status == "word") {
+            if (this.data.animal == "Attitude") {
+                this.description =
+                    "Attitude B. (Cultural Blindness) - Black students have the same opportunities and access to attend college as their white peers.";
+            } else if (this.data.animal == "Empathy") {
+                this.description =
+                    "Empathy E. (Cultural Destructiveness) - A school counselor advised a biracial student that they would appear more professional if they perm their hair (removing the kinks) for their upcoming college visits.";
+            }
+        }
+    }
+}
diff --git a/src/app/dashboard/dashboard-dialo/dashboard-dialo.component.css b/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.css
similarity index 100%
rename from src/app/dashboard/dashboard-dialo/dashboard-dialo.component.css
rename to src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.css
diff --git a/src/app/dashboard/dashboard-dialo/dashboard-dialo.component.html b/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.html
similarity index 100%
rename from src/app/dashboard/dashboard-dialo/dashboard-dialo.component.html
rename to src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.html
diff --git a/src/app/dashboard/dashboard-dialo/dashboard-dialo.component.spec.ts b/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.spec.ts
similarity index 100%
rename from src/app/dashboard/dashboard-dialo/dashboard-dialo.component.spec.ts
rename to src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.spec.ts
diff --git a/src/app/dashboard/dashboard-dialo/dashboard-dialo.component.ts b/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.ts
similarity index 96%
rename from src/app/dashboard/dashboard-dialo/dashboard-dialo.component.ts
rename to src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.ts
index 90feb2b..a2d3a49 100644
--- a/src/app/dashboard/dashboard-dialo/dashboard-dialo.component.ts
+++ b/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.ts
@@ -1,7 +1,7 @@
 import { Component, OnInit, Inject } from "@angular/core";
 import { MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dialog";
 import Swal from "sweetalert2";
-import { PreSurveyService } from "../../../services/preSurvey.service";
+import { PreSurveyService } from "src/app/services/preSurvey.service";
 
 export interface DialogData {
     animal;
diff --git a/src/app/dashboard/dashboard.component.css b/src/app/components/dashboard/dashboard.component.css
similarity index 100%
rename from src/app/dashboard/dashboard.component.css
rename to src/app/components/dashboard/dashboard.component.css
diff --git a/src/app/dashboard/dashboard.component.html b/src/app/components/dashboard/dashboard.component.html
similarity index 100%
rename from src/app/dashboard/dashboard.component.html
rename to src/app/components/dashboard/dashboard.component.html
diff --git a/src/app/dashboard/dashboard.component.spec.ts b/src/app/components/dashboard/dashboard.component.spec.ts
similarity index 100%
rename from src/app/dashboard/dashboard.component.spec.ts
rename to src/app/components/dashboard/dashboard.component.spec.ts
diff --git a/src/app/components/dashboard/dashboard.component.ts b/src/app/components/dashboard/dashboard.component.ts
new file mode 100644
index 0000000..5ceff27
--- /dev/null
+++ b/src/app/components/dashboard/dashboard.component.ts
@@ -0,0 +1,359 @@
+import { Component, OnInit, ViewChild } from "@angular/core";
+import { Router } from "@angular/router";
+import { MatDialog } from "@angular/material/dialog";
+import { DashboardDialoComponent } from "./dashboard-dialo/dashboard-dialo.component";
+import { AnimationItem } from "lottie-web";
+import { AnimationOptions } from "ngx-lottie";
+import { PreSurveyService } from "src/app/services/preSurvey.service";
+import Swal from "sweetalert2";
+import {
+    ApexNonAxisChartSeries,
+    ApexPlotOptions,
+    ApexChart,
+    ApexFill,
+    ChartComponent,
+    ApexLegend,
+    ApexResponsive,
+} from "ng-apexcharts";
+
+export interface DialogData {
+    animal;
+}
+
+export type ChartOptions2 = {
+    series: ApexNonAxisChartSeries;
+    chart: ApexChart;
+    labels: string[];
+    colors: string[];
+    legend: ApexLegend;
+    plotOptions: ApexPlotOptions;
+    responsive: ApexResponsive | ApexResponsive[];
+};
+
+export type ChartOptions1 = {
+    series: ApexNonAxisChartSeries;
+    chart: ApexChart;
+    labels: string[];
+    plotOptions: ApexPlotOptions;
+};
+
+export type ChartOptions = {
+    series: ApexNonAxisChartSeries;
+    chart: ApexChart;
+    labels: string[];
+    plotOptions: ApexPlotOptions;
+    fill: ApexFill;
+};
+@Component({
+    selector: "app-dashboard",
+    templateUrl: "./dashboard.component.html",
+    styleUrls: ["./dashboard.component.css"],
+})
+export class DashboardComponent implements OnInit {
+    statusNames = ["Pre-Survey", "CPCQ Form", "Unpacking", "Feedback", "View Results", "Post Survey"];
+    statusIcons = ["edit", "developer_board", "add_comment", "edit", "bar_chart", "chrome_reader_mode"];
+    currentStatus = 0;
+    selectedSatus = 0;
+    profile = false;
+    avatarLink: string;
+    profileDetails: any;
+    userName: any;
+    email: any;
+    location: any;
+    gender: any;
+    createdat: any;
+    public photoUrl: string;
+
+    public name: string = "Nihaarika Jagadish";
+
+    public showInitials = false;
+    public initials: string;
+    public circleColor: string;
+
+    private colors = [
+        "#EB7181", // red
+        "#468547", // green
+        "#FFD558", // yellow
+        "#3670B2", // blue
+    ];
+
+    @ViewChild("chart") chart: ChartComponent;
+    public chartOptions: Partial<ChartOptions>;
+    public chartOptions1: Partial<ChartOptions1>;
+    public chartOptions2: Partial<ChartOptions2>;
+
+    options: AnimationOptions = {
+        path: "https://assets4.lottiefiles.com/packages/lf20_6pzxbf3o/free_site_survey.json",
+    };
+
+    animationCreated(animationItem: AnimationItem): void {}
+
+    openDialog1(i) {
+        this.chartOptions2 = {
+            series: [76, 67, 61, 90, 56],
+            chart: {
+                height: 300,
+                type: "radialBar",
+                events: {
+                    legendClick: function (chartContext, seriesIndex, config) {
+                        if (seriesIndex == 0) {
+                            Swal.fire({
+                                title: "Attitude",
+                                html: "A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status. <br /> <br /> <span><b> B.4 </b> Black students have the same opportunities and access to attend college as their white peers. <br/> <br /><span><b> C.1 </b> Students who wear dreadlocks as a hairstyle are a distraction in the classroom. <br/> <br /> D.3 It should be required for students to remove hair accessories that are associated with their culture, tribe, sexuality, or religion. <br/> <br /> E.5 All students who live in the United States deserve a quality public education, even those students whose parents are undocumented immigrants. <br/> F.6 All faculty and staff within a school setting have equal ability to transfer knowledge to students in regards to life, culture, character, and/or academic content.",
+                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+                            }).then((res) => {
+                                window.location.reload();
+                            });
+                        } else if (seriesIndex == 1) {
+                            Swal.fire({
+                                title: "Empathy",
+                                html: "A.2 A 10th-grade male died as a result of a car accident during an illegal street race. A group of teachers will not attend the funeral because of the activity that led to the student’s cause of death. <br /> <br /> <span><b> B.4 </b> A public school Teacher is grounded by the philosophy of their religion. Throughout their career as an educator; they have learned to be welcoming to others’ cultural and religious beliefs even if those beliefs are in conflict with their own.<br/> <br /><span><b> C.1 </b> In two weeks, the 8th grade teaching cluster will be getting a new math teacher who is Muslim. Next week’s professional development is dedicated to learning about the customs and etiquette of Islam to ensure that the new colleague feels welcomed in their new school.<br/> <br /> D.3  An Asian student scored an 85 percent on today’s math quiz. The teacher expressed disappointment in the student by saying,Come on, you are Asian! You should’ve scored better than this. <br/> <br /> E.5  A school counselor advised a biracial student that they would appear more professional if they perm their hair (removing the kinks) for their upcoming college visits. <br/> F.6 Your colleague was pulled over by the police on the way to work this morning. You hear other colleagues in the break room discussing the reasons why they were pulled over, and all of the suspected reasons were related to what they may have done (i.e., speeding, running a stop sign, etc.), rather than acknowledging that they may have been pulled over for being a person of color driving a luxury car.",
+                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+                            }).then((res) => {
+                                window.location.reload();
+                            });
+                        } else if (seriesIndex == 2) {
+                            Swal.fire({
+                                title: "Policy",
+                                html: "A.2 A group of teachers and students are protesting the athletic department at a high school for changing the school’s logo to a silhouette of a Native American in a headdress; they have secured a place on the agenda for the next school board meeting to give a presentation on why this logo is offensive and trivializes Native Americans. <br /> <br /> <span><b> B.4 </b>  A school that does not consider factors related to culture and ethnicity in their decision-making process is more democratic than a school who does consider factors related to culture and ethnicity in their decision-making process.<br/> <br /><span><b> C.1 </b> A school leader makes a “diversity hire” to introduce new ideas around school culture, curriculum, leadership, and/or supervision. <br/> <br /> D.3 A principal implemented a policy that all faculty and staff have to participate in quarterly potlucks; they are to bring a traditional dish specific to their culture, as a way to facilitate cross-cultural discourse. <br/> <br /> E.5 Students in a high-poverty school who are absent 10 consecutive days in a marking period are referred to special education for excessive absenteeism. <br/> F.6A member of the school board is proposing a policy where English is the official language for all school related business in a community where the majority of the students’ and families’ primary language is Spanish.                ",
+                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+                            }).then((res) => {
+                                window.location.reload();
+                            });
+                        } else if (seriesIndex == 3) {
+                            Swal.fire({
+                                title: "Professionalism",
+                                html: "A.2A teacher asked the class who has traveled out of the country. A Black male raises his hand and states “I have.”  The teacher asked the student three follow-up questions to corroborate his story.                <br /> <br /> <span><b> B.4 </b> During lunch duty, teachers had a discussion in the presence of students about tomorrow’s district-wide racial sensitivity training. A teacher commented, Why do we have to attend this training; the United States is post-racial because we have a Black president.                <br/> <br /><span><b> C.1 </b> The social committee at an elementary school is planning an awards ceremony and dinner for the staff and faculty. Six of their colleagues are vegan because of their religious beliefs.  As a result, the committee has added a vegan selection to the menu to accommodate their colleagues’ religious beliefs. <br/> <br /> D.3  The reading specialist expressed some concerns to the Vice Principal about how her male students emasculates her during whole group instruction. The Vice Principal said, “Don’t worry about it, that's just how boys behave.”                 <br/> <br /> E.5  A history teacher refuses to acknowledge black history month and does not want to teach content about black history in the United States.                <br/> F.6 An AP English teacher has assigned a research paper where the students were required to write about their religion. The teacher did not let their own religious beliefs cloud their judgement; the teacher researched the student’s religion while grading the paper to offer relevant constructive feedback back on the arguments made within the paper.                ",
+                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+                            }).then((res) => {
+                                window.location.reload();
+                            });
+                        } else if (seriesIndex == 4) {
+                            Swal.fire({
+                                title: "Teaching Practice",
+                                html: "A.2 A novice teacher in a school where the majority of the students are African-American and Latino uses hip-hop as a way to make science relevant in the student's social and cultural context.                <br /> <br /> <span><b> B.4 </b>An algebra teacher who teaches in a school where the majority of the students are on free and reduced lunch requires that each student buy a specific graphing calculator for Algebra, which retails for over 100 dollars.                <br/> <br /><span><b> C.1 </b> A teacher created a seating chart that placed ‘unteachable students’ in the back of the classroom, all of whom were male: 2 Latinos and 6 African Americans.  In the same seating chart, her ‘good students,' all white, were seated in preferential seating.                <br/> <br /> D.3 A teacher puts together a petition to request a textbook company to remove the narrative about the enslavement of Africans in the United States in their history textbook to accommodate teachers’ discomfort with discussing this sensitive topic.                <br/> <br /> E.5  A teacher in a Title 1 school (high percentage of children from low-income families) checks homework for completeness rather than correctness as a strategy to improve student efficacy.                 <br/> F.6 There is an increase of LGBTQIA+ students reporting that they are being harassed both verbally and physically in United States public schools. A group of students and teachers are researching the best practices to implement and create a supportive environment for these students to voice their concerns in their school.",
+                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+                            }).then((res) => {
+                                window.location.reload();
+                            });
+                        }
+                    },
+                },
+            },
+            plotOptions: {
+                radialBar: {
+                    offsetY: 0,
+                    startAngle: 0,
+                    endAngle: 270,
+                    hollow: {
+                        margin: 5,
+                        size: "30%",
+                        background: "transparent",
+                        image: undefined,
+                    },
+                    dataLabels: {
+                        name: {
+                            show: false,
+                        },
+                        value: {
+                            show: false,
+                        },
+                    },
+                },
+            },
+            colors: ["#1ab7ea", "#0084ff", "#39539E", "#0077B5"],
+            labels: ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"],
+            legend: {
+                show: true,
+                floating: true,
+                fontSize: "13px",
+                position: "left",
+                labels: {
+                    useSeriesColors: true,
+                },
+                formatter: function (seriesName, opts) {
+                    return seriesName + ":  " + opts.w.globals.series[opts.seriesIndex];
+                },
+                itemMargin: {
+                    horizontal: 3,
+                },
+            },
+            responsive: [
+                {
+                    breakpoint: 480,
+                    options: {
+                        legend: {
+                            show: false,
+                        },
+                    },
+                },
+            ],
+        };
+    }
+
+    openDialog() {
+        const dialogRef = this.dialog.open(DashboardDialoComponent, {
+            data: { userID: this.profileDetails[0]["id"] },
+            disableClose: true,
+        });
+
+        dialogRef.afterClosed().subscribe((result) => {
+            this.showInitials = false;
+            this.avatarLink = result;
+        });
+    }
+    constructor(private router: Router, public dialog: MatDialog, private presurvey: PreSurveyService) {
+        this.openDialog1(1);
+
+        this.chartOptions = {
+            series: [76],
+            chart: {
+                height: 300,
+                type: "radialBar",
+                offsetY: -20,
+            },
+            plotOptions: {
+                radialBar: {
+                    startAngle: -90,
+                    endAngle: 90,
+                    track: {
+                        background: "#e7e7e7",
+                        strokeWidth: "97%",
+                        margin: 5, // margin is in pixels
+                        dropShadow: {
+                            enabled: true,
+                            top: 2,
+                            left: 0,
+                            opacity: 0.31,
+                            blur: 2,
+                        },
+                    },
+                    dataLabels: {
+                        value: {
+                            // offsetY: -2,
+                            fontSize: "22px",
+                        },
+                        name: {
+                            show: true,
+                            fontSize: "13px",
+                            color: "green",
+                        },
+                    },
+                },
+            },
+            fill: {
+                type: "gradient",
+                gradient: {
+                    shade: "light",
+                    shadeIntensity: 0.4,
+                    inverseColors: false,
+                    opacityFrom: 1,
+                    opacityTo: 1,
+                    stops: [0, 50, 53, 91],
+                },
+            },
+            labels: ["Culturally Competent"],
+        };
+
+        this.chartOptions1 = {
+            series: [44, 55, 67, 83, 56],
+            chart: {
+                height: 200,
+                width: 300,
+                type: "radialBar",
+                events: {
+                    click: function (event, chartContext, config) {
+                        // The last parameter config contains additional information like `seriesIndex` and `dataPointIndex` for cartesian charts.
+                    },
+                },
+            },
+            plotOptions: {
+                radialBar: {
+                    dataLabels: {
+                        name: {
+                            fontSize: "22px",
+                        },
+                        value: {
+                            fontSize: "16px",
+                        },
+                        total: {
+                            show: true,
+                            label: "Total",
+                            formatter: function (w) {
+                                return "249";
+                            },
+                        },
+                    },
+                },
+            },
+            labels: ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"],
+        };
+    }
+
+    public generateData(count, yrange) {
+        var i = 0;
+        var series = [];
+        while (i < count) {
+            var x = "w" + (i + 1).toString();
+            var y = Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min;
+
+            series.push({
+                x: x,
+                y: y,
+            });
+            i++;
+        }
+        return series;
+    }
+
+    ngOnInit(): void {
+        if (!this.photoUrl) {
+            this.showInitials = true;
+            this.createInititals();
+
+            const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length));
+            this.circleColor = this.colors[randomIndex];
+        }
+
+        this.presurvey.profileData().subscribe((res) => {
+            this.profileDetails = res;
+            this.email = res[0]["email"];
+            this.location = res[0]["location"];
+            this.gender = res[0]["gender"];
+            this.userName = res[0]["first_name"];
+            this.createdat = new Date(res[0]["preSurveydate"]).toLocaleDateString("en-US", {
+                weekday: "long",
+                year: "numeric",
+                month: "long",
+                day: "numeric",
+            });
+            this.currentStatus = res[0]["status"].lastIndexOf(true);
+            //
+            if (res[0]["photo_profile"].length != 0) {
+                this.showInitials = false;
+                var lenSTr = res[0]["photo_profile"].length;
+                this.avatarLink = res[0]["photo_profile"];
+            }
+        });
+    }
+
+    private createInititals(): void {
+        let initials = "";
+
+        for (let i = 0; i < this.name.length; i++) {
+            if (this.name.charAt(i) === " ") {
+                continue;
+            }
+
+            if (this.name.charAt(i) === this.name.charAt(i).toUpperCase()) {
+                initials += this.name.charAt(i);
+
+                if (initials.length == 2) {
+                    break;
+                }
+            }
+        }
+
+        this.initials = initials;
+    }
+}
diff --git a/src/app/email-password/email-password.component.css b/src/app/components/email-password/email-password.component.css
similarity index 100%
rename from src/app/email-password/email-password.component.css
rename to src/app/components/email-password/email-password.component.css
diff --git a/src/app/email-password/email-password.component.html b/src/app/components/email-password/email-password.component.html
similarity index 100%
rename from src/app/email-password/email-password.component.html
rename to src/app/components/email-password/email-password.component.html
diff --git a/src/app/email-password/email-password.component.spec.ts b/src/app/components/email-password/email-password.component.spec.ts
similarity index 100%
rename from src/app/email-password/email-password.component.spec.ts
rename to src/app/components/email-password/email-password.component.spec.ts
diff --git a/src/app/email-password/email-password.component.ts b/src/app/components/email-password/email-password.component.ts
similarity index 97%
rename from src/app/email-password/email-password.component.ts
rename to src/app/components/email-password/email-password.component.ts
index 11961b4..26ec448 100644
--- a/src/app/email-password/email-password.component.ts
+++ b/src/app/components/email-password/email-password.component.ts
@@ -3,7 +3,7 @@ import { EmailValidator, FormBuilder, FormGroup, Validators } from "@angular/for
 import { MatDialog, MatDialogRef } from "@angular/material/dialog";
 import { Router } from "@angular/router";
 import Swal from "sweetalert2";
-import { LoginService } from "../../services/login.service";
+import { LoginService } from "src/app/services/login.service";
 @Component({
     selector: "app-email-password",
     templateUrl: "./email-password.component.html",
diff --git a/src/app/final-dashboard/final-dashboard.component.css b/src/app/components/final-dashboard/final-dashboard.component.css
similarity index 100%
rename from src/app/final-dashboard/final-dashboard.component.css
rename to src/app/components/final-dashboard/final-dashboard.component.css
diff --git a/src/app/final-dashboard/final-dashboard.component.html b/src/app/components/final-dashboard/final-dashboard.component.html
similarity index 100%
rename from src/app/final-dashboard/final-dashboard.component.html
rename to src/app/components/final-dashboard/final-dashboard.component.html
diff --git a/src/app/final-dashboard/final-dashboard.component.spec.ts b/src/app/components/final-dashboard/final-dashboard.component.spec.ts
similarity index 100%
rename from src/app/final-dashboard/final-dashboard.component.spec.ts
rename to src/app/components/final-dashboard/final-dashboard.component.spec.ts
diff --git a/src/app/components/final-dashboard/final-dashboard.component.ts b/src/app/components/final-dashboard/final-dashboard.component.ts
new file mode 100644
index 0000000..2a1cedf
--- /dev/null
+++ b/src/app/components/final-dashboard/final-dashboard.component.ts
@@ -0,0 +1,401 @@
+import { Component, OnInit, ViewChild, Inject } from "@angular/core";
+import { Router } from "@angular/router";
+import { MatDialog, MAT_DIALOG_DATA } from "@angular/material/dialog";
+import Swal from "sweetalert2";
+import { DashboardDialoComponent } from "../dashboard/dashboard-dialo/dashboard-dialo.component";
+import { AnimationItem } from "lottie-web";
+import { PreSurveyService } from "src/app/services/preSurvey.service";
+import { CPCQService } from "src/app/services/cpcq.service";
+import { AnimationOptions } from "ngx-lottie";
+import {
+    ApexNonAxisChartSeries,
+    ApexPlotOptions,
+    ApexChart,
+    ApexFill,
+    ChartComponent,
+    ApexLegend,
+    ApexResponsive,
+} from "ng-apexcharts";
+
+export interface DialogData {
+    animal;
+}
+
+export type ChartOptions2 = {
+    series: ApexNonAxisChartSeries;
+    chart: ApexChart;
+    labels: string[];
+    colors: string[];
+    legend: ApexLegend;
+    plotOptions: ApexPlotOptions;
+    responsive: ApexResponsive | ApexResponsive[];
+};
+
+export type ChartOptions1 = {
+    series: ApexNonAxisChartSeries;
+    chart: ApexChart;
+    labels: string[];
+    plotOptions: ApexPlotOptions;
+};
+
+export type ChartOptions = {
+    series: ApexNonAxisChartSeries;
+    chart: ApexChart;
+    labels: string[];
+    plotOptions: ApexPlotOptions;
+    fill: ApexFill;
+};
+@Component({
+    selector: "app-final-dashboard",
+    templateUrl: "./final-dashboard.component.html",
+    styleUrls: ["./final-dashboard.component.css"],
+})
+export class FinalDashboardComponent implements OnInit {
+    statusNames = ["Pre-Survey", "CPCQ Form", "Unpacking", "Feedback", "View Results", "Post Survey"];
+    statusIcons = ["edit", "developer_board", "add_comment", "edit", "bar_chart", "chrome_reader_mode"];
+    currentStatus = 5;
+    selectedSatus = 0;
+    profile = false;
+    avatarLink: string;
+
+    public photoUrl: string;
+
+    public name: string = "Nihaarika Jagadish";
+
+    public showInitials = false;
+    public initials: string;
+    public circleColor: string;
+    public profileDetails: any;
+    public email: any;
+    public location: any;
+    public gender: any;
+    public userName: any;
+    public preSurveyDate: any;
+    public responsesDate: any;
+    public cpcqDate: any;
+    public postSurveyDate: any;
+    public scoreDate: any;
+    public finalDate: any;
+
+    private colors = [
+        "#EB7181", // red
+        "#468547", // green
+        "#FFD558", // yellow
+        "#3670B2", // blue
+    ];
+
+    @ViewChild("chart") chart: ChartComponent;
+    public chartOptions: Partial<ChartOptions>;
+    public chartOptions1: Partial<ChartOptions1>;
+    public chartOptions2: Partial<ChartOptions2>;
+
+    options: AnimationOptions = {
+        path: "https://assets4.lottiefiles.com/packages/lf20_t7jtcf8d.json",
+    };
+
+    animationCreated(animationItem: AnimationItem): void {}
+
+    openDialog1(i) {
+        this.chartOptions2 = {
+            series: [76, 67, 61, 90, 56],
+            chart: {
+                height: 300,
+                type: "radialBar",
+                events: {
+                    legendClick: function (chartContext, seriesIndex, config) {
+                        if (seriesIndex == 0) {
+                            Swal.fire({
+                                title: "Attitude",
+                                html: "A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status. <br /> <br /> <span><b> B.4 </b> Black students have the same opportunities and access to attend college as their white peers. <br/> <br /><span><b> C.1 </b> Students who wear dreadlocks as a hairstyle are a distraction in the classroom. <br/> <br /> D.3 It should be required for students to remove hair accessories that are associated with their culture, tribe, sexuality, or religion. <br/> <br /> E.5 All students who live in the United States deserve a quality public education, even those students whose parents are undocumented immigrants. <br/> F.6 All faculty and staff within a school setting have equal ability to transfer knowledge to students in regards to life, culture, character, and/or academic content.",
+                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+                            }).then((res) => {
+                                window.location.reload();
+                            });
+                        } else if (seriesIndex == 1) {
+                            Swal.fire({
+                                title: "Empathy",
+                                html: "A.2 A 10th-grade male died as a result of a car accident during an illegal street race. A group of teachers will not attend the funeral because of the activity that led to the student’s cause of death. <br /> <br /> <span><b> B.4 </b> A public school Teacher is grounded by the philosophy of their religion. Throughout their career as an educator; they have learned to be welcoming to others’ cultural and religious beliefs even if those beliefs are in conflict with their own.<br/> <br /><span><b> C.1 </b> In two weeks, the 8th grade teaching cluster will be getting a new math teacher who is Muslim. Next week’s professional development is dedicated to learning about the customs and etiquette of Islam to ensure that the new colleague feels welcomed in their new school.<br/> <br /> D.3  An Asian student scored an 85 percent on today’s math quiz. The teacher expressed disappointment in the student by saying,Come on, you are Asian! You should’ve scored better than this. <br/> <br /> E.5  A school counselor advised a biracial student that they would appear more professional if they perm their hair (removing the kinks) for their upcoming college visits. <br/> F.6 Your colleague was pulled over by the police on the way to work this morning. You hear other colleagues in the break room discussing the reasons why they were pulled over, and all of the suspected reasons were related to what they may have done (i.e., speeding, running a stop sign, etc.), rather than acknowledging that they may have been pulled over for being a person of color driving a luxury car.",
+                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+                            }).then((res) => {
+                                window.location.reload();
+                            });
+                        } else if (seriesIndex == 2) {
+                            Swal.fire({
+                                title: "Policy",
+                                html: "A.2 A group of teachers and students are protesting the athletic department at a high school for changing the school’s logo to a silhouette of a Native American in a headdress; they have secured a place on the agenda for the next school board meeting to give a presentation on why this logo is offensive and trivializes Native Americans. <br /> <br /> <span><b> B.4 </b>  A school that does not consider factors related to culture and ethnicity in their decision-making process is more democratic than a school who does consider factors related to culture and ethnicity in their decision-making process.<br/> <br /><span><b> C.1 </b> A school leader makes a “diversity hire” to introduce new ideas around school culture, curriculum, leadership, and/or supervision. <br/> <br /> D.3 A principal implemented a policy that all faculty and staff have to participate in quarterly potlucks; they are to bring a traditional dish specific to their culture, as a way to facilitate cross-cultural discourse. <br/> <br /> E.5 Students in a high-poverty school who are absent 10 consecutive days in a marking period are referred to special education for excessive absenteeism. <br/> F.6A member of the school board is proposing a policy where English is the official language for all school related business in a community where the majority of the students’ and families’ primary language is Spanish.                ",
+                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+                            }).then((res) => {
+                                window.location.reload();
+                            });
+                        } else if (seriesIndex == 3) {
+                            Swal.fire({
+                                title: "Professionalism",
+                                html: "A.2A teacher asked the class who has traveled out of the country. A Black male raises his hand and states “I have.”  The teacher asked the student three follow-up questions to corroborate his story.                <br /> <br /> <span><b> B.4 </b> During lunch duty, teachers had a discussion in the presence of students about tomorrow’s district-wide racial sensitivity training. A teacher commented, Why do we have to attend this training; the United States is post-racial because we have a Black president.                <br/> <br /><span><b> C.1 </b> The social committee at an elementary school is planning an awards ceremony and dinner for the staff and faculty. Six of their colleagues are vegan because of their religious beliefs.  As a result, the committee has added a vegan selection to the menu to accommodate their colleagues’ religious beliefs. <br/> <br /> D.3  The reading specialist expressed some concerns to the Vice Principal about how her male students emasculates her during whole group instruction. The Vice Principal said, “Don’t worry about it, that's just how boys behave.”                 <br/> <br /> E.5  A history teacher refuses to acknowledge black history month and does not want to teach content about black history in the United States.                <br/> F.6 An AP English teacher has assigned a research paper where the students were required to write about their religion. The teacher did not let their own religious beliefs cloud their judgement; the teacher researched the student’s religion while grading the paper to offer relevant constructive feedback back on the arguments made within the paper.                ",
+                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+                            }).then((res) => {
+                                window.location.reload();
+                            });
+                        } else if (seriesIndex == 4) {
+                            Swal.fire({
+                                title: "Teaching Practice",
+                                html: "A.2 A novice teacher in a school where the majority of the students are African-American and Latino uses hip-hop as a way to make science relevant in the student's social and cultural context.                <br /> <br /> <span><b> B.4 </b>An algebra teacher who teaches in a school where the majority of the students are on free and reduced lunch requires that each student buy a specific graphing calculator for Algebra, which retails for over 100 dollars.                <br/> <br /><span><b> C.1 </b> A teacher created a seating chart that placed ‘unteachable students’ in the back of the classroom, all of whom were male: 2 Latinos and 6 African Americans.  In the same seating chart, her ‘good students,' all white, were seated in preferential seating.                <br/> <br /> D.3 A teacher puts together a petition to request a textbook company to remove the narrative about the enslavement of Africans in the United States in their history textbook to accommodate teachers’ discomfort with discussing this sensitive topic.                <br/> <br /> E.5  A teacher in a Title 1 school (high percentage of children from low-income families) checks homework for completeness rather than correctness as a strategy to improve student efficacy.                 <br/> F.6 There is an increase of LGBTQIA+ students reporting that they are being harassed both verbally and physically in United States public schools. A group of students and teachers are researching the best practices to implement and create a supportive environment for these students to voice their concerns in their school.",
+                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+                            }).then((res) => {
+                                window.location.reload();
+                            });
+                        }
+                    },
+                },
+            },
+            plotOptions: {
+                radialBar: {
+                    offsetY: 0,
+                    startAngle: 0,
+                    endAngle: 270,
+                    hollow: {
+                        margin: 5,
+                        size: "30%",
+                        background: "transparent",
+                        image: undefined,
+                    },
+                    dataLabels: {
+                        name: {
+                            show: false,
+                        },
+                        value: {
+                            show: false,
+                        },
+                    },
+                },
+            },
+            colors: ["#1ab7ea", "#0084ff", "#39539E", "#0077B5"],
+            labels: ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"],
+            legend: {
+                show: true,
+                floating: true,
+                fontSize: "13px",
+                position: "left",
+                labels: {
+                    useSeriesColors: true,
+                },
+                formatter: function (seriesName, opts) {
+                    return seriesName + ":  " + opts.w.globals.series[opts.seriesIndex];
+                },
+                itemMargin: {
+                    horizontal: 3,
+                },
+            },
+            responsive: [
+                {
+                    breakpoint: 480,
+                    options: {
+                        legend: {
+                            show: false,
+                        },
+                    },
+                },
+            ],
+        };
+    }
+
+    openDialog() {
+        const dialogRef = this.dialog.open(DashboardDialoComponent, {
+            data: { userID: this.profileDetails[0]["id"] },
+        });
+
+        dialogRef.afterClosed().subscribe((result) => {
+            this.showInitials = false;
+            this.avatarLink = result;
+        });
+    }
+    constructor(
+        private router: Router,
+        public dialog: MatDialog,
+        public PreSurService: PreSurveyService,
+        public cpcqService: CPCQService
+    ) {
+        this.openDialog1(1);
+
+        this.chartOptions = {
+            series: [76],
+            chart: {
+                height: 300,
+                type: "radialBar",
+                offsetY: -20,
+            },
+            plotOptions: {
+                radialBar: {
+                    startAngle: -90,
+                    endAngle: 90,
+                    track: {
+                        background: "#e7e7e7",
+                        strokeWidth: "97%",
+                        margin: 5, // margin is in pixels
+                        dropShadow: {
+                            enabled: true,
+                            top: 2,
+                            left: 0,
+                            opacity: 0.31,
+                            blur: 2,
+                        },
+                    },
+                    dataLabels: {
+                        value: {
+                            // offsetY: -2,
+                            fontSize: "22px",
+                        },
+                        name: {
+                            show: true,
+                            fontSize: "13px",
+                            color: "green",
+                        },
+                    },
+                },
+            },
+            fill: {
+                type: "gradient",
+                gradient: {
+                    shade: "light",
+                    shadeIntensity: 0.4,
+                    inverseColors: false,
+                    opacityFrom: 1,
+                    opacityTo: 1,
+                    stops: [0, 50, 53, 91],
+                },
+            },
+            labels: ["Culturally Competent"],
+        };
+
+        this.chartOptions1 = {
+            series: [44, 55, 67, 83, 56],
+            chart: {
+                height: 200,
+                width: 300,
+                type: "radialBar",
+                events: {
+                    click: function (event, chartContext, config) {
+                        // The last parameter config contains additional information like `seriesIndex` and `dataPointIndex` for cartesian charts.
+                    },
+                },
+            },
+            plotOptions: {
+                radialBar: {
+                    dataLabels: {
+                        name: {
+                            fontSize: "22px",
+                        },
+                        value: {
+                            fontSize: "16px",
+                        },
+                        total: {
+                            show: true,
+                            label: "Total",
+                            formatter: function (w) {
+                                return "249";
+                            },
+                        },
+                    },
+                },
+            },
+            labels: ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"],
+        };
+    }
+
+    public generateData(count, yrange) {
+        var i = 0;
+        var series = [];
+        while (i < count) {
+            var x = "w" + (i + 1).toString();
+            var y = Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min;
+
+            series.push({
+                x: x,
+                y: y,
+            });
+            i++;
+        }
+        return series;
+    }
+
+    ngOnInit(): void {
+        if (!this.photoUrl) {
+            this.showInitials = true;
+            this.createInititals();
+
+            const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length));
+            this.circleColor = this.colors[randomIndex];
+        }
+        this.PreSurService.profileData().subscribe((res) => {
+            this.profileDetails = res;
+            this.email = res[0]["email"];
+            this.location = res[0]["location"];
+            this.gender = res[0]["gender"];
+            this.userName = res[0]["first_name"];
+            this.preSurveyDate = new Date(res[0]["preSurveydate"]).toLocaleDateString("en-US", {
+                weekday: "long",
+                year: "numeric",
+                month: "long",
+                day: "numeric",
+            });
+            this.responsesDate = new Date(res[0]["responsesdate"]).toLocaleDateString("en-US", {
+                weekday: "long",
+                year: "numeric",
+                month: "long",
+                day: "numeric",
+            });
+            this.cpcqDate = new Date(res[0]["cpcqdate"]).toLocaleDateString("en-US", {
+                weekday: "long",
+                year: "numeric",
+                month: "long",
+                day: "numeric",
+            });
+            this.scoreDate = new Date(res[0]["scoredate"]).toLocaleDateString("en-US", {
+                weekday: "long",
+                year: "numeric",
+                month: "long",
+                day: "numeric",
+            });
+            this.postSurveyDate = new Date(res[0]["postSurveydate"]).toLocaleDateString("en-US", {
+                weekday: "long",
+                year: "numeric",
+                month: "long",
+                day: "numeric",
+            });
+
+            // this.currentStatus = res[0]["status"].lastIndexOf(true)
+            //
+            if (res[0]["photo_profile"].length != 0) {
+                this.showInitials = false;
+                var lenSTr = res[0]["photo_profile"].length;
+                this.avatarLink = res[0]["photo_profile"];
+            }
+        });
+
+        this.cpcqService.getCPCQStatus().subscribe((res) => {
+            this.finalDate = new Date(res[0]["created"]).toDateString();
+        });
+    }
+
+    private createInititals(): void {
+        let initials = "";
+
+        for (let i = 0; i < this.name.length; i++) {
+            if (this.name.charAt(i) === " ") {
+                continue;
+            }
+
+            if (this.name.charAt(i) === this.name.charAt(i).toUpperCase()) {
+                initials += this.name.charAt(i);
+
+                if (initials.length == 2) {
+                    break;
+                }
+            }
+        }
+
+        this.initials = initials;
+    }
+    preSurvey() {
+        this.router.navigateByUrl("/preSurvey");
+    }
+}
diff --git a/src/app/final-feedback/final-feedback.component.css b/src/app/components/final-feedback/final-feedback.component.css
similarity index 100%
rename from src/app/final-feedback/final-feedback.component.css
rename to src/app/components/final-feedback/final-feedback.component.css
diff --git a/src/app/final-feedback/final-feedback.component.html b/src/app/components/final-feedback/final-feedback.component.html
similarity index 100%
rename from src/app/final-feedback/final-feedback.component.html
rename to src/app/components/final-feedback/final-feedback.component.html
diff --git a/src/app/final-feedback/final-feedback.component.spec.ts b/src/app/components/final-feedback/final-feedback.component.spec.ts
similarity index 100%
rename from src/app/final-feedback/final-feedback.component.spec.ts
rename to src/app/components/final-feedback/final-feedback.component.spec.ts
diff --git a/src/app/components/final-feedback/final-feedback.component.ts b/src/app/components/final-feedback/final-feedback.component.ts
new file mode 100644
index 0000000..c994abe
--- /dev/null
+++ b/src/app/components/final-feedback/final-feedback.component.ts
@@ -0,0 +1,1206 @@
+import { Component, OnInit, Inject } from "@angular/core";
+import { AfterViewInit, ElementRef, ViewChild } from "@angular/core";
+import { Router } from "@angular/router";
+import { FirstForm } from "src/app/services/firstForm.service";
+import { FormBuilder, FormGroup, Validators } from "@angular/forms";
+import Swal from "sweetalert2";
+import { ThemePalette } from "@angular/material/core";
+import { ProgressBarMode } from "@angular/material/progress-bar";
+declare var $: any;
+import * as RecordRTC from "recordrtc";
+import { DomSanitizer } from "@angular/platform-browser";
+import { MatDialog, MAT_DIALOG_DATA } from "@angular/material/dialog";
+import { DialogFormComponent } from "../cpcq-form/dialog-form/dialog-form.component";
+
+import { CPCQService } from "src/app/services/cpcq.service";
+
+export interface DialogData {
+    animal: "panda" | "unicorn" | "lion";
+    status;
+    result;
+}
+@Component({
+    selector: "app-final-feedback",
+    templateUrl: "./final-feedback.component.html",
+    styleUrls: ["./final-feedback.component.css"],
+})
+export class FinalFeedbackComponent implements OnInit, AfterViewInit {
+    firstForm: FormGroup;
+    responseList: any;
+    loaded = false;
+
+    questionArray = [
+        ["Enter First Name", "text"],
+        ["Enter Last Name", "text"],
+        ["Enter Age", "number"],
+    ];
+    statusCheck = false;
+    buttonClick = false;
+
+    sliderValue = 0;
+
+    selectedIndex = 7;
+
+    color: ThemePalette = "primary";
+    mode: ProgressBarMode = "buffer";
+    value1 = 50;
+    bufferValue = 100;
+
+    formValues = [];
+    attributes = ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"];
+    columnHeadings = [
+        "culturalDestructivenessresponse",
+        "culturalIncapacityresponse",
+        "culturalBlindnessresponse",
+        "culturalPreCompetenceresponse",
+        "culturalCompetenceresponse",
+        "culturalProficiencyresponse",
+    ];
+    rowLetters = [
+        ["D", "C", "B", "A", "F", "E"],
+        ["E", "A", "F", "D", "B", "C"],
+        ["F", "E", "B", "C", "D", "A"],
+        ["E", "A", "B", "D", "C", "F"],
+        ["D", "C", "B", "E", "A", "F"],
+    ];
+    boldList = [[]];
+    randomList = [[]];
+    finalList = [[]];
+    finalList1 = [];
+    attitudeForm: FormGroup;
+    empathyForm: FormGroup;
+    policyForm: FormGroup;
+
+    finalFeedbackForm: FormGroup;
+
+    //arrays of data getting from the backend
+
+    attitude: any;
+    empathy: any;
+    policy: any;
+    professionalism: any;
+    teachingPractice: any;
+    wordDescription: any;
+    unpackedCount = 0;
+
+    startTime: any;
+    endTime: any;
+    durationTime: any;
+
+    @ViewChild("changeDiv") changeDiv: ElementRef;
+    @ViewChild("changeDiv1") changeDiv1: ElementRef;
+    @ViewChild("changeDiv2") changeDiv2: ElementRef;
+    @ViewChild("changeDiv3") changeDiv3: ElementRef;
+    @ViewChild("changeDiv4") changeDiv4: ElementRef;
+    @ViewChild("changeDiv5") changeDiv5: ElementRef;
+    @ViewChild("changeDiv6") changeDiv6: ElementRef;
+    @ViewChild("changeDiv7") changeDiv7: ElementRef;
+    @ViewChild("changeDiv8") changeDiv8: ElementRef;
+    @ViewChild("changeDiv9") changeDiv9: ElementRef;
+    @ViewChild("changeDiv10") changeDiv10: ElementRef;
+    @ViewChild("changeDiv11") changeDiv11: ElementRef;
+    @ViewChild("changeDiv12") changeDiv12: ElementRef;
+    @ViewChild("changeDiv13") changeDiv13: ElementRef;
+    @ViewChild("changeDiv14") changeDiv14: ElementRef;
+    @ViewChild("changeDiv15") changeDiv15: ElementRef;
+    @ViewChild("changeDiv16") changeDiv16: ElementRef;
+    @ViewChild("changeDiv17") changeDiv17: ElementRef;
+    @ViewChild("changeDiv18") changeDiv18: ElementRef;
+    @ViewChild("changeDiv19") changeDiv19: ElementRef;
+    @ViewChild("changeDiv20") changeDiv20: ElementRef;
+    @ViewChild("changeDiv21") changeDiv21: ElementRef;
+    @ViewChild("changeDiv22") changeDiv22: ElementRef;
+    @ViewChild("changeDiv23") changeDiv23: ElementRef;
+    @ViewChild("changeDiv24") changeDiv24: ElementRef;
+    @ViewChild("changeDiv25") changeDiv25: ElementRef;
+    @ViewChild("changeDiv26") changeDiv26: ElementRef;
+    @ViewChild("changeDiv27") changeDiv27: ElementRef;
+    @ViewChild("changeDiv28") changeDiv28: ElementRef;
+    @ViewChild("changeDiv29") changeDiv29: ElementRef;
+
+    ngAfterViewInit() {}
+
+    sliderFunction1() {
+        if (this.sliderValue == 1) {
+            this.changeDiv.nativeElement.style.fontSize = "15px";
+            this.changeDiv1.nativeElement.style.fontSize = "15px";
+            this.changeDiv2.nativeElement.style.fontSize = "15px";
+            this.changeDiv3.nativeElement.style.fontSize = "15px";
+            this.changeDiv4.nativeElement.style.fontSize = "15px";
+            this.changeDiv5.nativeElement.style.fontSize = "15px";
+            this.changeDiv6.nativeElement.style.fontSize = "15px";
+            this.changeDiv7.nativeElement.style.fontSize = "15px";
+            this.changeDiv8.nativeElement.style.fontSize = "15px";
+            this.changeDiv9.nativeElement.style.fontSize = "15px";
+            this.changeDiv10.nativeElement.style.fontSize = "15px";
+            this.changeDiv11.nativeElement.style.fontSize = "15px";
+            this.changeDiv12.nativeElement.style.fontSize = "15px";
+            this.changeDiv13.nativeElement.style.fontSize = "15px";
+            this.changeDiv14.nativeElement.style.fontSize = "15px";
+            this.changeDiv15.nativeElement.style.fontSize = "15px";
+            this.changeDiv16.nativeElement.style.fontSize = "15px";
+            this.changeDiv17.nativeElement.style.fontSize = "15px";
+            this.changeDiv18.nativeElement.style.fontSize = "15px";
+            this.changeDiv19.nativeElement.style.fontSize = "15px";
+            this.changeDiv20.nativeElement.style.fontSize = "15px";
+            this.changeDiv21.nativeElement.style.fontSize = "15px";
+            this.changeDiv22.nativeElement.style.fontSize = "15px";
+            this.changeDiv23.nativeElement.style.fontSize = "15px";
+            this.changeDiv24.nativeElement.style.fontSize = "15px";
+            this.changeDiv25.nativeElement.style.fontSize = "15px";
+            this.changeDiv26.nativeElement.style.fontSize = "15px";
+            this.changeDiv27.nativeElement.style.fontSize = "15px";
+            this.changeDiv28.nativeElement.style.fontSize = "15px";
+            this.changeDiv29.nativeElement.style.fontSize = "15px";
+        } else if (this.sliderValue == 2) {
+            this.changeDiv.nativeElement.style.fontSize = "20px";
+            this.changeDiv1.nativeElement.style.fontSize = "20px";
+            this.changeDiv2.nativeElement.style.fontSize = "20px";
+            this.changeDiv3.nativeElement.style.fontSize = "20px";
+            this.changeDiv4.nativeElement.style.fontSize = "20px";
+            this.changeDiv5.nativeElement.style.fontSize = "20px";
+            this.changeDiv6.nativeElement.style.fontSize = "20px";
+            this.changeDiv7.nativeElement.style.fontSize = "20px";
+            this.changeDiv8.nativeElement.style.fontSize = "20px";
+            this.changeDiv9.nativeElement.style.fontSize = "20px";
+            this.changeDiv10.nativeElement.style.fontSize = "20px";
+            this.changeDiv11.nativeElement.style.fontSize = "20px";
+            this.changeDiv12.nativeElement.style.fontSize = "20px";
+            this.changeDiv13.nativeElement.style.fontSize = "20px";
+            this.changeDiv14.nativeElement.style.fontSize = "20px";
+            this.changeDiv15.nativeElement.style.fontSize = "20px";
+            this.changeDiv16.nativeElement.style.fontSize = "20px";
+            this.changeDiv17.nativeElement.style.fontSize = "20px";
+            this.changeDiv18.nativeElement.style.fontSize = "20px";
+            this.changeDiv19.nativeElement.style.fontSize = "20px";
+            this.changeDiv20.nativeElement.style.fontSize = "20px";
+            this.changeDiv21.nativeElement.style.fontSize = "20px";
+            this.changeDiv22.nativeElement.style.fontSize = "20px";
+            this.changeDiv23.nativeElement.style.fontSize = "20px";
+            this.changeDiv24.nativeElement.style.fontSize = "20px";
+            this.changeDiv25.nativeElement.style.fontSize = "20px";
+            this.changeDiv26.nativeElement.style.fontSize = "20px";
+            this.changeDiv27.nativeElement.style.fontSize = "20px";
+            this.changeDiv28.nativeElement.style.fontSize = "20px";
+            this.changeDiv29.nativeElement.style.fontSize = "20px";
+        } else if (this.sliderValue == 3) {
+            this.changeDiv.nativeElement.style.fontSize = "22px";
+            this.changeDiv1.nativeElement.style.fontSize = "22px";
+            this.changeDiv2.nativeElement.style.fontSize = "22px";
+            this.changeDiv3.nativeElement.style.fontSize = "22px";
+            this.changeDiv4.nativeElement.style.fontSize = "22px";
+            this.changeDiv5.nativeElement.style.fontSize = "22px";
+            this.changeDiv6.nativeElement.style.fontSize = "22px";
+            this.changeDiv7.nativeElement.style.fontSize = "22px";
+            this.changeDiv8.nativeElement.style.fontSize = "22px";
+            this.changeDiv9.nativeElement.style.fontSize = "22px";
+            this.changeDiv10.nativeElement.style.fontSize = "22px";
+            this.changeDiv11.nativeElement.style.fontSize = "22px";
+            this.changeDiv12.nativeElement.style.fontSize = "22px";
+            this.changeDiv13.nativeElement.style.fontSize = "22px";
+            this.changeDiv14.nativeElement.style.fontSize = "22px";
+            this.changeDiv15.nativeElement.style.fontSize = "22px";
+            this.changeDiv16.nativeElement.style.fontSize = "22px";
+            this.changeDiv17.nativeElement.style.fontSize = "22px";
+            this.changeDiv18.nativeElement.style.fontSize = "22px";
+            this.changeDiv19.nativeElement.style.fontSize = "22px";
+            this.changeDiv20.nativeElement.style.fontSize = "22px";
+            this.changeDiv21.nativeElement.style.fontSize = "22px";
+            this.changeDiv22.nativeElement.style.fontSize = "22px";
+            this.changeDiv23.nativeElement.style.fontSize = "22px";
+            this.changeDiv24.nativeElement.style.fontSize = "22px";
+            this.changeDiv25.nativeElement.style.fontSize = "22px";
+            this.changeDiv26.nativeElement.style.fontSize = "22px";
+            this.changeDiv27.nativeElement.style.fontSize = "22px";
+            this.changeDiv28.nativeElement.style.fontSize = "22px";
+            this.changeDiv29.nativeElement.style.fontSize = "22px";
+        } else if (this.sliderValue == 4) {
+            this.changeDiv.nativeElement.style.fontSize = "25px";
+            this.changeDiv1.nativeElement.style.fontSize = "25px";
+            this.changeDiv2.nativeElement.style.fontSize = "25px";
+            this.changeDiv3.nativeElement.style.fontSize = "25px";
+            this.changeDiv4.nativeElement.style.fontSize = "25px";
+            this.changeDiv5.nativeElement.style.fontSize = "25px";
+            this.changeDiv6.nativeElement.style.fontSize = "25px";
+            this.changeDiv7.nativeElement.style.fontSize = "25px";
+            this.changeDiv8.nativeElement.style.fontSize = "25px";
+            this.changeDiv9.nativeElement.style.fontSize = "25px";
+            this.changeDiv10.nativeElement.style.fontSize = "25px";
+            this.changeDiv11.nativeElement.style.fontSize = "25px";
+            this.changeDiv12.nativeElement.style.fontSize = "25px";
+            this.changeDiv13.nativeElement.style.fontSize = "25px";
+            this.changeDiv14.nativeElement.style.fontSize = "25px";
+            this.changeDiv15.nativeElement.style.fontSize = "25px";
+            this.changeDiv16.nativeElement.style.fontSize = "25px";
+            this.changeDiv17.nativeElement.style.fontSize = "25px";
+            this.changeDiv18.nativeElement.style.fontSize = "25px";
+            this.changeDiv19.nativeElement.style.fontSize = "25px";
+            this.changeDiv20.nativeElement.style.fontSize = "25px";
+            this.changeDiv21.nativeElement.style.fontSize = "25px";
+            this.changeDiv22.nativeElement.style.fontSize = "25px";
+            this.changeDiv23.nativeElement.style.fontSize = "25px";
+            this.changeDiv24.nativeElement.style.fontSize = "25px";
+            this.changeDiv25.nativeElement.style.fontSize = "25px";
+            this.changeDiv26.nativeElement.style.fontSize = "25px";
+            this.changeDiv27.nativeElement.style.fontSize = "25px";
+            this.changeDiv28.nativeElement.style.fontSize = "25px";
+            this.changeDiv29.nativeElement.style.fontSize = "25px";
+        } else if (this.sliderValue == 5) {
+            this.changeDiv.nativeElement.style.fontSize = "50px";
+            this.changeDiv1.nativeElement.style.fontSize = "50px";
+            this.changeDiv2.nativeElement.style.fontSize = "50px";
+            this.changeDiv3.nativeElement.style.fontSize = "50px";
+            this.changeDiv4.nativeElement.style.fontSize = "50px";
+            this.changeDiv5.nativeElement.style.fontSize = "50px";
+        }
+    }
+    sliderFunction(e) {
+        //
+        this.sliderValue = e.value;
+        if (e.value == 1) {
+            this.changeDiv.nativeElement.style.fontSize = "15px";
+            this.changeDiv1.nativeElement.style.fontSize = "15px";
+            this.changeDiv2.nativeElement.style.fontSize = "15px";
+            this.changeDiv3.nativeElement.style.fontSize = "15px";
+            this.changeDiv4.nativeElement.style.fontSize = "15px";
+            this.changeDiv5.nativeElement.style.fontSize = "15px";
+            this.changeDiv6.nativeElement.style.fontSize = "15px";
+            this.changeDiv7.nativeElement.style.fontSize = "15px";
+            this.changeDiv8.nativeElement.style.fontSize = "15px";
+            this.changeDiv9.nativeElement.style.fontSize = "15px";
+            this.changeDiv10.nativeElement.style.fontSize = "15px";
+            this.changeDiv11.nativeElement.style.fontSize = "15px";
+            this.changeDiv12.nativeElement.style.fontSize = "15px";
+            this.changeDiv13.nativeElement.style.fontSize = "15px";
+            this.changeDiv14.nativeElement.style.fontSize = "15px";
+            this.changeDiv15.nativeElement.style.fontSize = "15px";
+            this.changeDiv16.nativeElement.style.fontSize = "15px";
+            this.changeDiv17.nativeElement.style.fontSize = "15px";
+            this.changeDiv18.nativeElement.style.fontSize = "15px";
+            this.changeDiv19.nativeElement.style.fontSize = "15px";
+            this.changeDiv20.nativeElement.style.fontSize = "15px";
+            this.changeDiv21.nativeElement.style.fontSize = "15px";
+            this.changeDiv22.nativeElement.style.fontSize = "15px";
+            this.changeDiv23.nativeElement.style.fontSize = "15px";
+            this.changeDiv24.nativeElement.style.fontSize = "15px";
+            this.changeDiv25.nativeElement.style.fontSize = "15px";
+            this.changeDiv26.nativeElement.style.fontSize = "15px";
+            this.changeDiv27.nativeElement.style.fontSize = "15px";
+            this.changeDiv28.nativeElement.style.fontSize = "15px";
+            this.changeDiv29.nativeElement.style.fontSize = "15px";
+        } else if (e.value == 2) {
+            this.changeDiv.nativeElement.style.fontSize = "20px";
+            this.changeDiv1.nativeElement.style.fontSize = "20px";
+            this.changeDiv2.nativeElement.style.fontSize = "20px";
+            this.changeDiv3.nativeElement.style.fontSize = "20px";
+            this.changeDiv4.nativeElement.style.fontSize = "20px";
+            this.changeDiv5.nativeElement.style.fontSize = "20px";
+            this.changeDiv6.nativeElement.style.fontSize = "20px";
+            this.changeDiv7.nativeElement.style.fontSize = "20px";
+            this.changeDiv8.nativeElement.style.fontSize = "20px";
+            this.changeDiv9.nativeElement.style.fontSize = "20px";
+            this.changeDiv10.nativeElement.style.fontSize = "20px";
+            this.changeDiv11.nativeElement.style.fontSize = "20px";
+            this.changeDiv12.nativeElement.style.fontSize = "20px";
+            this.changeDiv13.nativeElement.style.fontSize = "20px";
+            this.changeDiv14.nativeElement.style.fontSize = "20px";
+            this.changeDiv15.nativeElement.style.fontSize = "20px";
+            this.changeDiv16.nativeElement.style.fontSize = "20px";
+            this.changeDiv17.nativeElement.style.fontSize = "20px";
+            this.changeDiv18.nativeElement.style.fontSize = "20px";
+            this.changeDiv19.nativeElement.style.fontSize = "20px";
+            this.changeDiv20.nativeElement.style.fontSize = "20px";
+            this.changeDiv21.nativeElement.style.fontSize = "20px";
+            this.changeDiv22.nativeElement.style.fontSize = "20px";
+            this.changeDiv23.nativeElement.style.fontSize = "20px";
+            this.changeDiv24.nativeElement.style.fontSize = "20px";
+            this.changeDiv25.nativeElement.style.fontSize = "20px";
+            this.changeDiv26.nativeElement.style.fontSize = "20px";
+            this.changeDiv27.nativeElement.style.fontSize = "20px";
+            this.changeDiv28.nativeElement.style.fontSize = "20px";
+            this.changeDiv29.nativeElement.style.fontSize = "20px";
+        } else if (e.value == 3) {
+            this.changeDiv.nativeElement.style.fontSize = "22px";
+            this.changeDiv1.nativeElement.style.fontSize = "22px";
+            this.changeDiv2.nativeElement.style.fontSize = "22px";
+            this.changeDiv3.nativeElement.style.fontSize = "22px";
+            this.changeDiv4.nativeElement.style.fontSize = "22px";
+            this.changeDiv5.nativeElement.style.fontSize = "22px";
+            this.changeDiv6.nativeElement.style.fontSize = "22px";
+            this.changeDiv7.nativeElement.style.fontSize = "22px";
+            this.changeDiv8.nativeElement.style.fontSize = "22px";
+            this.changeDiv9.nativeElement.style.fontSize = "22px";
+            this.changeDiv10.nativeElement.style.fontSize = "22px";
+            this.changeDiv11.nativeElement.style.fontSize = "22px";
+            this.changeDiv12.nativeElement.style.fontSize = "22px";
+            this.changeDiv13.nativeElement.style.fontSize = "22px";
+            this.changeDiv14.nativeElement.style.fontSize = "22px";
+            this.changeDiv15.nativeElement.style.fontSize = "22px";
+            this.changeDiv16.nativeElement.style.fontSize = "22px";
+            this.changeDiv17.nativeElement.style.fontSize = "22px";
+            this.changeDiv18.nativeElement.style.fontSize = "22px";
+            this.changeDiv19.nativeElement.style.fontSize = "22px";
+            this.changeDiv20.nativeElement.style.fontSize = "22px";
+            this.changeDiv21.nativeElement.style.fontSize = "22px";
+            this.changeDiv22.nativeElement.style.fontSize = "22px";
+            this.changeDiv23.nativeElement.style.fontSize = "22px";
+            this.changeDiv24.nativeElement.style.fontSize = "22px";
+            this.changeDiv25.nativeElement.style.fontSize = "22px";
+            this.changeDiv26.nativeElement.style.fontSize = "22px";
+            this.changeDiv27.nativeElement.style.fontSize = "22px";
+            this.changeDiv28.nativeElement.style.fontSize = "22px";
+            this.changeDiv29.nativeElement.style.fontSize = "22px";
+        } else if (e.value == 4) {
+            this.changeDiv.nativeElement.style.fontSize = "25px";
+            this.changeDiv1.nativeElement.style.fontSize = "25px";
+            this.changeDiv2.nativeElement.style.fontSize = "25px";
+            this.changeDiv3.nativeElement.style.fontSize = "25px";
+            this.changeDiv4.nativeElement.style.fontSize = "25px";
+            this.changeDiv5.nativeElement.style.fontSize = "25px";
+            this.changeDiv6.nativeElement.style.fontSize = "25px";
+            this.changeDiv7.nativeElement.style.fontSize = "25px";
+            this.changeDiv8.nativeElement.style.fontSize = "25px";
+            this.changeDiv9.nativeElement.style.fontSize = "25px";
+            this.changeDiv10.nativeElement.style.fontSize = "25px";
+            this.changeDiv11.nativeElement.style.fontSize = "25px";
+            this.changeDiv12.nativeElement.style.fontSize = "25px";
+            this.changeDiv13.nativeElement.style.fontSize = "25px";
+            this.changeDiv14.nativeElement.style.fontSize = "25px";
+            this.changeDiv15.nativeElement.style.fontSize = "25px";
+            this.changeDiv16.nativeElement.style.fontSize = "25px";
+            this.changeDiv17.nativeElement.style.fontSize = "25px";
+            this.changeDiv18.nativeElement.style.fontSize = "25px";
+            this.changeDiv19.nativeElement.style.fontSize = "25px";
+            this.changeDiv20.nativeElement.style.fontSize = "25px";
+            this.changeDiv21.nativeElement.style.fontSize = "25px";
+            this.changeDiv22.nativeElement.style.fontSize = "25px";
+            this.changeDiv23.nativeElement.style.fontSize = "25px";
+            this.changeDiv24.nativeElement.style.fontSize = "25px";
+            this.changeDiv25.nativeElement.style.fontSize = "25px";
+            this.changeDiv26.nativeElement.style.fontSize = "25px";
+            this.changeDiv27.nativeElement.style.fontSize = "25px";
+            this.changeDiv28.nativeElement.style.fontSize = "25px";
+            this.changeDiv29.nativeElement.style.fontSize = "25px";
+        } else if (e.value == 5) {
+            this.changeDiv.nativeElement.style.fontSize = "50px";
+            this.changeDiv1.nativeElement.style.fontSize = "50px";
+            this.changeDiv2.nativeElement.style.fontSize = "50px";
+            this.changeDiv3.nativeElement.style.fontSize = "50px";
+            this.changeDiv4.nativeElement.style.fontSize = "50px";
+            this.changeDiv5.nativeElement.style.fontSize = "50px";
+        }
+    }
+    constructor(
+        private fb: FormBuilder,
+        private apiService: CPCQService,
+        private router: Router,
+        private formService: FirstForm,
+        private domSanitizer: DomSanitizer,
+        public dialog: MatDialog
+    ) {}
+    openDialog(i, j, id) {
+        //
+
+        var arr = [];
+        arr.push(this.attributes[i]);
+        arr.push(j);
+        arr.push(this.columnHeadings[j]);
+        arr.push(id);
+        const dialogRef = this.dialog.open(DialogFormComponent, {
+            data: {
+                animal: arr,
+                status: "form",
+            },
+            disableClose: true,
+        });
+        dialogRef.afterClosed().subscribe((result) => {
+            if (this.responsesArray[i][j][1] == "colorbold") {
+                this.unpackedCount = this.unpackedCount + 1;
+            }
+        });
+    }
+
+    openWordDialog(i) {
+        //
+        this.buttonClick = true;
+        const dialogRef = this.dialog.open(DialogFormComponent, {
+            data: {
+                animal: i,
+                status: "word",
+            },
+            disableClose: true,
+        });
+
+        dialogRef.afterClosed().subscribe((result) => {
+            this.wordDescription = result;
+        });
+    }
+
+    helpDialog(i) {
+        //
+        this.dialog.open(DialogFormComponent, {
+            data: {
+                animal: i,
+                status: "help",
+            },
+        });
+    }
+
+    keyPressFunc(e) {
+        //
+        var numbersList = ["1"];
+        for (let key in this.attitudeForm.value) {
+            if (numbersList.indexOf(this.attitudeForm.value[key]) == -1) {
+                //
+                return "Number";
+            }
+        }
+    }
+
+    getEmailError() {
+        return "Error";
+    }
+    responsesArray = [];
+    temp = [];
+    getResponses() {
+        this.apiService.getResponsesData().subscribe((res) => {
+            for (let key in res) {
+                this.temp = [];
+                for (let key1 in res[key]) {
+                    this.temp.push(res[key][key1]);
+                }
+                this.responsesArray.push(this.temp);
+            }
+        });
+    }
+
+    getForm() {
+        var arr = [];
+        var arr1 = [];
+        var arr2 = [];
+        var i;
+        var attitudeResult = [];
+        var empathyResult = [];
+        var policyResult = [];
+        var profResult = [];
+        var teachingResult = [];
+        this.finalList = [[]];
+        this.boldList = [[]];
+        this.apiService.getFormData().subscribe((res) => {
+            for (let key in res) {
+                arr = [];
+                if (res[key]["topic"] == "Attitude") {
+                    attitudeResult.push("Attitude");
+                    arr.push("Attitude");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
+                    );
+                } else if (res[key]["topic"] == "Empathy") {
+                    empathyResult.push("Empathy");
+                    arr.push("Empathy");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
+                    );
+                } else if (res[key]["topic"] == "Policy") {
+                    policyResult.push("Policy");
+                    arr.push("Policy");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
+                    );
+                    policyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
+                    );
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
+                    );
+                } else if (res[key]["topic"] == "Professionalism") {
+                    profResult.push("Professionalism");
+                    arr.push("Professionalism");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+
+                    profResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    profResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+                    profResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+                    profResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    profResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+                    profResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+                } else if (res[key]["topic"] == "Teaching Practice") {
+                    arr.push("Teaching Pracice");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+                    teachingResult.push("Teaching Practice");
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
+                    );
+                }
+
+                this.boldList.push(arr);
+            }
+            this.finalList.push(attitudeResult);
+            this.finalList.push(empathyResult);
+            this.finalList.push(policyResult);
+            this.finalList.push(profResult);
+            this.finalList.push(teachingResult);
+        });
+        this.finalList.splice(0, 1);
+        this.boldList.splice(0, 1);
+        // this.getAllIndexes(this.finalList,1)
+    }
+
+    emoji: any;
+    changeEmojiSize(data) {
+        document.getElementById("angry").style.height = "30px";
+        document.getElementById("angry").style.width = "30px";
+        document.getElementById("sad").style.height = "30px";
+        document.getElementById("sad").style.width = "30px";
+        document.getElementById("neutral").style.height = "30px";
+        document.getElementById("neutral").style.width = "30px";
+        document.getElementById("smile").style.height = "30px";
+        document.getElementById("smile").style.width = "30px";
+        document.getElementById("heart").style.height = "30px";
+        document.getElementById("heart").style.width = "30px";
+        document.getElementById(data).style.height = "50px";
+        document.getElementById(data).style.width = "50px";
+
+        this.emoji = data;
+    }
+
+    thumbs: any;
+    changeThumbsSize(data) {
+        document.getElementById("thumbsup").style.height = "30px";
+        document.getElementById("thumbsup").style.width = "30px";
+        document.getElementById("thumbsdown").style.height = "30px";
+        document.getElementById("thumbsdown").style.width = "30px";
+
+        document.getElementById(data).style.height = "50px";
+        document.getElementById(data).style.width = "50px";
+        this.thumbs = data;
+    }
+    finalSubmit() {
+        this.finalFeedbackForm.value["q6"] = this.thumbs;
+        this.finalFeedbackForm.value["q7"] = this.emoji;
+
+        this.endTime = new Date();
+
+        this.durationTime = (this.endTime - this.startTime) / 1000;
+        this.durationTime = this.durationTime / 60;
+
+        this.apiService.patchStatus("finalfeedbackstatus").subscribe((res) => {});
+
+        this.apiService.postFeedbackForm(this.finalFeedbackForm.value).subscribe(
+            (res) => {
+                this.apiService.changeCPCQStatus().subscribe((res1) => {
+                    Swal.fire({
+                        text: "Submitted",
+                        icon: "success",
+                    }).then((res) => {
+                        if (res["isConfirmed"]) {
+                            this.router.navigateByUrl("/result");
+                        }
+                    });
+                });
+            },
+            (err) => {}
+        );
+    }
+    ngOnInit(): void {
+        this.startTime = new Date();
+        this.finalFeedbackForm = this.fb.group({
+            q1: [""],
+            q2: [""],
+            q3: [""],
+            q4: [""],
+            q5: [""],
+            q6: [""],
+            q7: [""],
+        });
+
+        this.apiService.attitudeData().subscribe(
+            (res) => {
+                //
+                this.attitude = res[0];
+                //
+            },
+            (err) => {}
+        );
+
+        this.apiService.empathyData().subscribe(
+            (res) => {
+                //
+                this.empathy = res[0];
+                //
+            },
+            (err) => {}
+        );
+
+        this.apiService.policyData().subscribe(
+            (res) => {
+                this.policy = res[0];
+            },
+            (err) => {}
+        );
+
+        this.apiService.professionalismData().subscribe(
+            (res) => {
+                this.professionalism = res[0];
+            },
+            (err) => {}
+        );
+
+        this.apiService.teachingData().subscribe(
+            (res) => {
+                this.teachingPractice = res[0];
+            },
+            (err) => {}
+        );
+
+        this.attitudeForm = this.fb.group({
+            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            description: ["", [Validators.required]],
+        });
+
+        this.empathyForm = this.fb.group({
+            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        });
+
+        this.policyForm = this.fb.group({
+            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        });
+
+        var arr = [];
+        var arr1 = [];
+        var arr2 = [];
+        var i;
+        for (var j = 0; j < 5; j++) {
+            arr = [];
+            arr1 = [];
+            arr2 = [];
+            i = 0;
+            while (i < 6) {
+                var item1 = Math.floor(Math.random() * (7 - 1) + 1);
+                if (arr1.indexOf(item1) == -1) {
+                    if (i == 0) {
+                        arr.push(this.attributes[j]);
+                        arr.push(this.rowLetters[j][i] + ". " + item1);
+                        arr1.push(item1);
+                        if (arr1[arr1.length - 1] > 2) {
+                            //
+                            arr2.push("True");
+                        } else {
+                            arr2.push("False");
+                        }
+                    } else {
+                        arr.push(this.rowLetters[j][i] + ". " + item1);
+                        arr1.push(item1);
+                        if (i == 1) {
+                            if (arr1[arr1.length - 1] > 3) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        } else if (i == 2) {
+                            if (arr1[arr1.length - 1] > 4 || arr1[arr1.length - 1] == 1) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        } else if (i == 3) {
+                            if (arr1[arr1.length - 1] > 5 || arr1[arr1.length - 1] < 4) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        } else if (i == 4) {
+                            if (arr1[arr1.length - 1] < 4) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        } else if (i == 5) {
+                            if (arr1[arr1.length - 1] < 5) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        }
+                    }
+                    i = i + 1;
+                } else {
+                    continue;
+                }
+            }
+            this.formValues.push(arr);
+            this.boldList.push(arr1);
+            this.randomList.push(arr2);
+        }
+        this.boldList.splice(0, 1);
+        this.randomList.splice(0, 1);
+
+        this.getAllIndexes(this.randomList, "True");
+        this.loaded = true;
+    }
+
+    getAllIndexes(arr, val) {
+        var indexes = [];
+        var i = -1;
+        for (var i = 0; i < arr.length; i++) {
+            for (var j = 0; j < arr[i].length; j++) {
+                if (arr[i][j] == "True") {
+                    var arr1 = [];
+                    arr1.push(i);
+                    arr1.push(j);
+                    indexes.push(arr1);
+                }
+            }
+        }
+
+        var arr1 = [];
+        for (var i = 0; i < indexes.length; i++) {
+            arr1.push(i);
+        }
+        var ranNums = [];
+        var i = arr1.length;
+        var j = 0;
+        var count = 0;
+        while (i--) {
+            if (count < 5) {
+                j = Math.floor(Math.random() * (i + 1));
+                ranNums.push(arr1[j]);
+                arr1.splice(j, 1);
+                count = count + 1;
+            } else {
+                break;
+            }
+        }
+
+        //
+        for (var i = 0; i < this.boldList.length; i++) {
+            var temp = [];
+            for (var j = 0; j < 6; j++) {
+                temp.push("False");
+            }
+            this.finalList1.push(temp);
+        }
+
+        for (var i = 0; i < ranNums.length; i++) {
+            var item = indexes[ranNums[i]];
+
+            this.finalList1[item[0]][item[1]] = "True";
+        }
+        // this.finalList1.splice(0,1)
+    }
+    preSurvey() {
+        this.router.navigateByUrl("/preSurvey");
+    }
+
+    nextButton() {
+        if (this.selectedIndex == 0) {
+            this.selectedIndex = this.selectedIndex + 1;
+            return;
+        }
+        if (this.selectedIndex == 7) {
+            this.router.navigateByUrl("/dashboard");
+            return;
+        }
+
+        var numberList = [];
+        var flag = true;
+        for (let key in this.attitudeForm.value) {
+            if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
+                flag = false;
+                Swal.fire({
+                    text: "Please enter values from 1 through 6 only.",
+                    icon: "warning",
+                }).then((res) => {});
+                break;
+            }
+            if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
+                numberList.push(this.attitudeForm.value[key]);
+            } else {
+                flag = false;
+                Swal.fire({
+                    text: "The inputs have been repeated. Please enter values from 1 through 6.",
+                    icon: "warning",
+                }).then((res) => {});
+                break;
+            }
+        }
+        if (!this.buttonClick) {
+            flag = false;
+            Swal.fire({
+                text: "Click on the word '" + this.attributes[this.selectedIndex - 1] + "' and respond to the prompt.",
+                icon: "warning",
+            }).then((res) => {});
+        }
+        if (flag) {
+            if (this.selectedIndex == 7) {
+                this.router.navigateByUrl("/postSurvey");
+            }
+            this.sliderFunction1();
+            var formData = {};
+            formData["topic"] = this.attributes[this.selectedIndex - 1];
+            if (this.attributes[this.selectedIndex - 1] == "Attitude") {
+                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalCompetence"] = "F. " + this.attitudeForm.value["F"];
+                formData["culturalProficiency"] = "E. " + this.attitudeForm.value["E"];
+            } else if (this.attributes[this.selectedIndex - 1] == "Empathy") {
+                formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalBlindness"] = "F. " + this.attitudeForm.value["F"];
+                formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalCompetence"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalProficiency"] = "C. " + this.attitudeForm.value["C"];
+            } else if (this.attributes[this.selectedIndex - 1] == "Policy") {
+                formData["culturalDestructiveness"] = "F. " + this.attitudeForm.value["F"];
+                formData["culturalIncapacity"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalCompetence"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalProficiency"] = "A. " + this.attitudeForm.value["A"];
+            } else if (this.attributes[this.selectedIndex - 1] == "Professionalism") {
+                formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalCompetence"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+            } else if (this.attributes[this.selectedIndex - 1] == "Teaching Practice") {
+                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+            }
+
+            this.endTime = new Date();
+
+            this.durationTime = (this.endTime - this.startTime) / 1000;
+            this.durationTime = this.durationTime / 60;
+
+            formData["description"] = this.wordDescription;
+            formData["duration"] = this.durationTime;
+            this.apiService.postFormData(formData).subscribe(
+                (res) => {
+                    //
+                },
+                (err) => {}
+            );
+            // this.getForm();
+            this.selectedIndex = this.selectedIndex + 1;
+            this.buttonClick = false;
+            this.startTime = new Date();
+            this.attitudeForm = this.fb.group({
+                A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            });
+        }
+    }
+
+    postSurvey() {
+        this.router.navigateByUrl("/postSurvey");
+    }
+
+    submitForm1() {
+        if (this.unpackedCount >= 5) {
+            this.endTime = new Date();
+
+            this.durationTime = (this.endTime - this.startTime) / 1000;
+            this.durationTime = this.durationTime / 60;
+            this.apiService.patchStatus("cpcqstatus").subscribe((res) => {
+                Swal.fire({
+                    text: "Submitted",
+                    icon: "success",
+                }).then((res) => {
+                    if (res["isConfirmed"]) {
+                        // this.getForm()
+                        this.selectedIndex = this.selectedIndex + 1;
+                    }
+                });
+            });
+        } else {
+            Swal.fire({
+                text: "Please click on all the yellow boxes and answer the questions in the prompt.",
+                icon: "warning",
+            }).then((res) => {});
+        }
+    }
+
+    submitForm() {
+        if (this.selectedIndex == 5) {
+            var numberList = [];
+            var flag = false;
+
+            for (let key in this.attitudeForm.value) {
+                if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
+                    flag = true;
+                    Swal.fire({
+                        text: "Please enter values from 1 through 6 only.",
+                        icon: "warning",
+                    }).then((res) => {});
+                    break;
+                }
+                if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
+                    numberList.push(this.attitudeForm.value[key]);
+                } else {
+                    flag = true;
+                    Swal.fire({
+                        text: "The inputs have been repeated. Please enter values from 1 through 6.",
+                        icon: "warning",
+                    }).then((res) => {});
+                    break;
+                }
+            }
+            if (!this.buttonClick) {
+                flag = true;
+                Swal.fire({
+                    text:
+                        "Click on the word '" +
+                        this.attributes[this.selectedIndex - 1] +
+                        "' and respond to the prompt.",
+                    icon: "warning",
+                }).then((res) => {});
+            }
+            if (!flag) {
+                //
+                var formData = {};
+
+                formData["topic"] = this.attributes[this.selectedIndex - 1];
+                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+
+                formData["description"] = this.wordDescription;
+                this.endTime = new Date();
+
+                this.durationTime = (this.endTime - this.startTime) / 1000;
+                this.durationTime = this.durationTime / 60;
+
+                formData["duration"] = this.durationTime;
+                this.apiService.postFormData(formData).subscribe(
+                    (res) => {
+                        //
+                        this.apiService.patchStatus("responsesstatus").subscribe((res) => {
+                            Swal.fire({
+                                text: "Submitted",
+                                icon: "success",
+                            }).then((res) => {
+                                if (res["isConfirmed"]) {
+                                    // this.getForm()
+                                    // this.getResponses()
+                                    this.router.navigateByUrl("/unpacking");
+
+                                    // this.selectedIndex = this.selectedIndex + 1;
+                                    this.startTime = new Date();
+                                }
+                            });
+                        });
+                    },
+                    (err) => {}
+                );
+            }
+        }
+    }
+
+    submit() {
+        //
+        var tempDict;
+        this.responseList = [];
+        for (let key in this.firstForm.value) {
+            tempDict = {};
+            tempDict["question"] = key;
+            tempDict["response"] = this.firstForm.value[key];
+            this.responseList.push(tempDict);
+        }
+        //
+
+        this.formService.submitResponse(this.responseList).subscribe(
+            (res) => {
+                //
+                Swal.fire({
+                    text: "Submitted",
+                    icon: "success",
+                });
+                this.router.navigateByUrl("/game");
+            },
+            (err) => {
+                Swal.fire({
+                    text: "Duplicate Entries",
+                    icon: "warning",
+                });
+            }
+        );
+    }
+
+    title = "micRecorder";
+    //Lets declare Record OBJ
+    record;
+    //Will use this flag for toggeling recording
+    recording = false;
+    //URL of Blob
+    url;
+    error;
+    sanitize(url: string) {
+        return this.domSanitizer.bypassSecurityTrustUrl(url);
+    }
+    /**
+     * Start recording.
+     */
+    initiateRecording() {
+        this.recording = true;
+        let mediaConstraints = {
+            video: false,
+            audio: true,
+        };
+        navigator.mediaDevices
+            .getUserMedia(mediaConstraints)
+            .then(this.successCallback.bind(this), this.errorCallback.bind(this));
+    }
+    /**
+     * Will be called automatically.
+     */
+    successCallback(stream) {
+        var options = {
+            mimeType: "audio/wav",
+            numberOfAudioChannels: 1,
+            // sampleRate: 16000,
+        };
+        //Start Actuall Recording
+        var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
+        this.record = new StereoAudioRecorder(stream, options);
+        this.record.record();
+    }
+    /**
+     * Stop recording.
+     */
+    stopRecording() {
+        this.recording = false;
+        this.record.stop(this.processRecording.bind(this));
+    }
+    /**
+     * processRecording Do what ever you want with blob
+     * @param  {any} blob Blog
+     */
+    processRecording(blob) {
+        this.url = URL.createObjectURL(blob);
+        //
+        //
+    }
+    /**
+     * Process Error.
+     */
+    errorCallback(error) {
+        this.error = "Can not play audio in your browser";
+    }
+}
diff --git a/src/app/first-form/first-form.component.css b/src/app/components/first-form/first-form.component.css
similarity index 100%
rename from src/app/first-form/first-form.component.css
rename to src/app/components/first-form/first-form.component.css
diff --git a/src/app/first-form/first-form.component.html b/src/app/components/first-form/first-form.component.html
similarity index 100%
rename from src/app/first-form/first-form.component.html
rename to src/app/components/first-form/first-form.component.html
diff --git a/src/app/first-form/first-form.component.spec.ts b/src/app/components/first-form/first-form.component.spec.ts
similarity index 100%
rename from src/app/first-form/first-form.component.spec.ts
rename to src/app/components/first-form/first-form.component.spec.ts
diff --git a/src/app/components/first-form/first-form.component.ts b/src/app/components/first-form/first-form.component.ts
new file mode 100644
index 0000000..1b172d7
--- /dev/null
+++ b/src/app/components/first-form/first-form.component.ts
@@ -0,0 +1,147 @@
+import { Component, OnInit } from "@angular/core";
+import { Router } from "@angular/router";
+import { FirstForm } from "src/app/services/firstForm.service";
+import { FormBuilder, FormGroup, FormControl, Validators } from "@angular/forms";
+import Swal from "sweetalert2";
+declare var $: any;
+import * as RecordRTC from "recordrtc";
+import { DomSanitizer } from "@angular/platform-browser";
+
+@Component({
+    selector: "app-first-form",
+    templateUrl: "./first-form.component.html",
+    styleUrls: ["./first-form.component.css"],
+})
+export class FirstFormComponent implements OnInit {
+    firstForm: FormGroup;
+    responseList: any;
+
+    questionArray = [
+        ["Enter First Name", "text"],
+        ["Enter Last Name", "text"],
+        ["Enter Age", "number"],
+    ];
+    statusCheck = false;
+
+    selectedIndex = 0;
+
+    constructor(private router: Router, private formService: FirstForm, private domSanitizer: DomSanitizer) {}
+
+    ngOnInit(): void {
+        // let group={}
+        // this.formService.firstForm().subscribe((res) => {
+        //
+        //   this.questionArray = res[0]["question_instance"];
+        //
+        //   this.questionArray.forEach(input_template=>{
+        //
+        //     group[input_template["id"]]=new FormControl('');
+        //   })
+        //   this.firstForm = new FormGroup(group);
+        //   this.statusCheck = true;
+        //
+        // },(err) =>{
+        //
+        // })
+    }
+
+    preSurvey() {
+        this.router.navigateByUrl("/preSurvey");
+    }
+
+    nextButton() {
+        this.selectedIndex = this.selectedIndex + 1;
+    }
+    prevButton() {
+        this.selectedIndex = this.selectedIndex - 1;
+        if (this.selectedIndex < 0) {
+            this.selectedIndex = 0;
+        }
+    }
+
+    submit() {
+        var tempDict;
+        this.responseList = [];
+        for (let key in this.firstForm.value) {
+            tempDict = {};
+            tempDict["question"] = key;
+            tempDict["response"] = this.firstForm.value[key];
+            this.responseList.push(tempDict);
+        }
+
+        this.formService.submitResponse(this.responseList).subscribe(
+            (res) => {
+                Swal.fire({
+                    text: "Submitted",
+                    icon: "success",
+                });
+                this.router.navigateByUrl("/game");
+            },
+            (err) => {
+                Swal.fire({
+                    text: "Duplicate Entries",
+                    icon: "warning",
+                });
+            }
+        );
+    }
+
+    title = "micRecorder";
+    //Lets declare Record OBJ
+    record;
+    //Will use this flag for toggeling recording
+    recording = false;
+    //URL of Blob
+    url;
+    error;
+    sanitize(url: string) {
+        return this.domSanitizer.bypassSecurityTrustUrl(url);
+    }
+    /**
+     * Start recording.
+     */
+    initiateRecording() {
+        this.recording = true;
+        let mediaConstraints = {
+            video: false,
+            audio: true,
+        };
+        navigator.mediaDevices
+            .getUserMedia(mediaConstraints)
+            .then(this.successCallback.bind(this), this.errorCallback.bind(this));
+    }
+    /**
+     * Will be called automatically.
+     */
+    successCallback(stream) {
+        var options = {
+            mimeType: "audio/wav",
+            numberOfAudioChannels: 1,
+            // sampleRate: 16000,
+        };
+        //Start Actuall Recording
+        var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
+        this.record = new StereoAudioRecorder(stream, options);
+        this.record.record();
+    }
+    /**
+     * Stop recording.
+     */
+    stopRecording() {
+        this.recording = false;
+        this.record.stop(this.processRecording.bind(this));
+    }
+    /**
+     * processRecording Do what ever you want with blob
+     * @param  {any} blob Blog
+     */
+    processRecording(blob) {
+        this.url = URL.createObjectURL(blob);
+    }
+    /**
+     * Process Error.
+     */
+    errorCallback(error) {
+        this.error = "Can not play audio in your browser";
+    }
+}
diff --git a/src/app/footer/footer.component.css b/src/app/components/footer/footer.component.css
similarity index 100%
rename from src/app/footer/footer.component.css
rename to src/app/components/footer/footer.component.css
diff --git a/src/app/footer/footer.component.html b/src/app/components/footer/footer.component.html
similarity index 100%
rename from src/app/footer/footer.component.html
rename to src/app/components/footer/footer.component.html
diff --git a/src/app/footer/footer.component.spec.ts b/src/app/components/footer/footer.component.spec.ts
similarity index 100%
rename from src/app/footer/footer.component.spec.ts
rename to src/app/components/footer/footer.component.spec.ts
diff --git a/src/app/footer/footer.component.ts b/src/app/components/footer/footer.component.ts
similarity index 100%
rename from src/app/footer/footer.component.ts
rename to src/app/components/footer/footer.component.ts
diff --git a/src/app/forgot-password/forgot-password.component.css b/src/app/components/forgot-password/forgot-password.component.css
similarity index 100%
rename from src/app/forgot-password/forgot-password.component.css
rename to src/app/components/forgot-password/forgot-password.component.css
diff --git a/src/app/forgot-password/forgot-password.component.html b/src/app/components/forgot-password/forgot-password.component.html
similarity index 100%
rename from src/app/forgot-password/forgot-password.component.html
rename to src/app/components/forgot-password/forgot-password.component.html
diff --git a/src/app/forgot-password/forgot-password.component.spec.ts b/src/app/components/forgot-password/forgot-password.component.spec.ts
similarity index 100%
rename from src/app/forgot-password/forgot-password.component.spec.ts
rename to src/app/components/forgot-password/forgot-password.component.spec.ts
diff --git a/src/app/forgot-password/forgot-password.component.ts b/src/app/components/forgot-password/forgot-password.component.ts
similarity index 97%
rename from src/app/forgot-password/forgot-password.component.ts
rename to src/app/components/forgot-password/forgot-password.component.ts
index 78f2ed6..eaf4018 100644
--- a/src/app/forgot-password/forgot-password.component.ts
+++ b/src/app/components/forgot-password/forgot-password.component.ts
@@ -3,7 +3,7 @@ import { EmailValidator, FormBuilder, FormGroup, Validators } from "@angular/for
 import { MatDialog, MatDialogRef } from "@angular/material/dialog";
 import { Router } from "@angular/router";
 import Swal from "sweetalert2";
-import { LoginService } from "../../services/login.service";
+import { LoginService } from "src/app/services/login.service";
 @Component({
     selector: "app-forgot-password",
     templateUrl: "./forgot-password.component.html",
diff --git a/src/app/graph-page/graph-page.component.css b/src/app/components/graph-page/graph-page.component.css
similarity index 100%
rename from src/app/graph-page/graph-page.component.css
rename to src/app/components/graph-page/graph-page.component.css
diff --git a/src/app/graph-page/graph-page.component.html b/src/app/components/graph-page/graph-page.component.html
similarity index 100%
rename from src/app/graph-page/graph-page.component.html
rename to src/app/components/graph-page/graph-page.component.html
diff --git a/src/app/graph-page/graph-page.component.spec.ts b/src/app/components/graph-page/graph-page.component.spec.ts
similarity index 100%
rename from src/app/graph-page/graph-page.component.spec.ts
rename to src/app/components/graph-page/graph-page.component.spec.ts
diff --git a/src/app/graph-page/graph-page.component.ts b/src/app/components/graph-page/graph-page.component.ts
similarity index 99%
rename from src/app/graph-page/graph-page.component.ts
rename to src/app/components/graph-page/graph-page.component.ts
index 58c1af6..f829185 100644
--- a/src/app/graph-page/graph-page.component.ts
+++ b/src/app/components/graph-page/graph-page.component.ts
@@ -1,7 +1,7 @@
 import { Component, OnInit } from "@angular/core";
 import { AfterViewInit, ElementRef, ViewChild } from "@angular/core";
 import { Router } from "@angular/router";
-import { FirstForm } from "../../services/firstForm.service";
+import { FirstForm } from "src/app/services/firstForm.service";
 import { FormBuilder, FormGroup, Validators } from "@angular/forms";
 import Swal from "sweetalert2";
 import { ThemePalette } from "@angular/material/core";
@@ -12,9 +12,9 @@ import { DomSanitizer } from "@angular/platform-browser";
 import { MatDialog, MAT_DIALOG_DATA } from "@angular/material/dialog";
 import { DialogFormComponent } from "../cpcq-form/dialog-form/dialog-form.component";
 
-import { CPCQService } from "../../services/cpcq.service";
+import { CPCQService } from "src/app/services/cpcq.service";
 
-import { LoginService } from "../../services/login.service";
+import { LoginService } from "src/app/services/login.service";
 export interface DialogData {
     animal: "panda" | "unicorn" | "lion";
     status;
diff --git a/src/app/header/header.component.css b/src/app/components/header/header.component.css
similarity index 100%
rename from src/app/header/header.component.css
rename to src/app/components/header/header.component.css
diff --git a/src/app/header/header.component.html b/src/app/components/header/header.component.html
similarity index 100%
rename from src/app/header/header.component.html
rename to src/app/components/header/header.component.html
diff --git a/src/app/header/header.component.spec.ts b/src/app/components/header/header.component.spec.ts
similarity index 100%
rename from src/app/header/header.component.spec.ts
rename to src/app/components/header/header.component.spec.ts
diff --git a/src/app/header/header.component.ts b/src/app/components/header/header.component.ts
similarity index 81%
rename from src/app/header/header.component.ts
rename to src/app/components/header/header.component.ts
index 34cdc33..9933349 100644
--- a/src/app/header/header.component.ts
+++ b/src/app/components/header/header.component.ts
@@ -3,7 +3,7 @@ import { Component, Inject, OnInit } from "@angular/core";
 import { Router } from "@angular/router";
 import { Observable } from "rxjs";
 import { map, shareReplay } from "rxjs/operators";
-import { LoginService } from "../../services/login.service";
+import { LoginService } from "src/app/services/login.service";
 import { AuthService, User } from "@auth0/auth0-angular";
 import { DOCUMENT } from "@angular/common";
 
@@ -44,16 +44,19 @@ export class HeaderComponent implements OnInit {
 
     ngOnInit(): void {
         this.auth.idTokenClaims$.subscribe(async (claims) => {
-            this.loginService.getTestUsers(claims.__raw).subscribe(
-                (res) => {
-                    console.log("got success");
-                    console.log(res);
-                },
-                (error) => {
-                    console.log("got error");
-                    console.log(error);
-                }
-            );
+            console.log(claims, "claims");
+            if (claims && claims?.__raw) {
+                this.loginService.getTestUsers(claims?.__raw).subscribe(
+                    (res) => {
+                        console.log("got success");
+                        console.log(res);
+                    },
+                    (error) => {
+                        console.log("got error");
+                        console.log(error);
+                    }
+                );
+            }
         });
     }
 
diff --git a/src/app/home-page/home-page.component.css b/src/app/components/home-page/home-page.component.css
similarity index 100%
rename from src/app/home-page/home-page.component.css
rename to src/app/components/home-page/home-page.component.css
diff --git a/src/app/home-page/home-page.component.html b/src/app/components/home-page/home-page.component.html
similarity index 100%
rename from src/app/home-page/home-page.component.html
rename to src/app/components/home-page/home-page.component.html
diff --git a/src/app/home-page/home-page.component.spec.ts b/src/app/components/home-page/home-page.component.spec.ts
similarity index 100%
rename from src/app/home-page/home-page.component.spec.ts
rename to src/app/components/home-page/home-page.component.spec.ts
diff --git a/src/app/home-page/home-page.component.ts b/src/app/components/home-page/home-page.component.ts
similarity index 100%
rename from src/app/home-page/home-page.component.ts
rename to src/app/components/home-page/home-page.component.ts
diff --git a/src/app/login/login.component.css b/src/app/components/login/login.component.css
similarity index 100%
rename from src/app/login/login.component.css
rename to src/app/components/login/login.component.css
diff --git a/src/app/login/login.component.html b/src/app/components/login/login.component.html
similarity index 100%
rename from src/app/login/login.component.html
rename to src/app/components/login/login.component.html
diff --git a/src/app/login/login.component.spec.ts b/src/app/components/login/login.component.spec.ts
similarity index 100%
rename from src/app/login/login.component.spec.ts
rename to src/app/components/login/login.component.spec.ts
diff --git a/src/app/login/login.component.ts b/src/app/components/login/login.component.ts
similarity index 98%
rename from src/app/login/login.component.ts
rename to src/app/components/login/login.component.ts
index 3bbfbac..ed92bee 100644
--- a/src/app/login/login.component.ts
+++ b/src/app/components/login/login.component.ts
@@ -3,7 +3,7 @@ import { FormBuilder, FormGroup, Validators } from "@angular/forms";
 import { Router } from "@angular/router";
 import Swal from "sweetalert2";
 
-import { LoginService } from "../../services/login.service";
+import { LoginService } from "src/app/services/login.service";
 
 @Component({
     selector: "app-login",
diff --git a/src/app/main-game/dialog/dialog.component.css b/src/app/components/main-game/dialog/dialog.component.css
similarity index 100%
rename from src/app/main-game/dialog/dialog.component.css
rename to src/app/components/main-game/dialog/dialog.component.css
diff --git a/src/app/main-game/dialog/dialog.component.html b/src/app/components/main-game/dialog/dialog.component.html
similarity index 100%
rename from src/app/main-game/dialog/dialog.component.html
rename to src/app/components/main-game/dialog/dialog.component.html
diff --git a/src/app/main-game/dialog/dialog.component.spec.ts b/src/app/components/main-game/dialog/dialog.component.spec.ts
similarity index 100%
rename from src/app/main-game/dialog/dialog.component.spec.ts
rename to src/app/components/main-game/dialog/dialog.component.spec.ts
diff --git a/src/app/main-game/dialog/dialog.component.ts b/src/app/components/main-game/dialog/dialog.component.ts
similarity index 100%
rename from src/app/main-game/dialog/dialog.component.ts
rename to src/app/components/main-game/dialog/dialog.component.ts
diff --git a/src/app/main-game/main-game.component.css b/src/app/components/main-game/main-game.component.css
similarity index 100%
rename from src/app/main-game/main-game.component.css
rename to src/app/components/main-game/main-game.component.css
diff --git a/src/app/main-game/main-game.component.html b/src/app/components/main-game/main-game.component.html
similarity index 100%
rename from src/app/main-game/main-game.component.html
rename to src/app/components/main-game/main-game.component.html
diff --git a/src/app/main-game/main-game.component.spec.ts b/src/app/components/main-game/main-game.component.spec.ts
similarity index 100%
rename from src/app/main-game/main-game.component.spec.ts
rename to src/app/components/main-game/main-game.component.spec.ts
diff --git a/src/app/components/main-game/main-game.component.ts b/src/app/components/main-game/main-game.component.ts
new file mode 100644
index 0000000..24c2acb
--- /dev/null
+++ b/src/app/components/main-game/main-game.component.ts
@@ -0,0 +1,91 @@
+import { Component, OnInit, ViewEncapsulation } from "@angular/core";
+import Swal from "sweetalert2";
+import { MatDialog, MAT_DIALOG_DATA } from "@angular/material/dialog";
+import { DialogComponent } from "./dialog/dialog.component";
+import { MainGame } from "src/app/services/mainGame.service";
+@Component({
+    selector: "app-main-game",
+    templateUrl: "./main-game.component.html",
+    styleUrls: ["./main-game.component.css"],
+    encapsulation: ViewEncapsulation.None,
+})
+export class MainGameComponent implements OnInit {
+    firstLetter = ["2", "3", "4", "5", "6", "7", "8", "9", "10", "A", "J", "K", "Q"];
+    lastLetter = ["C", "D", "H", "S"];
+    player = [[], [], []];
+    dealer = [[]];
+    totalCardsofPlayer;
+    handGoal = 21;
+    score = 21;
+    limitOfCards = 30;
+    timeForTotalGame = 3;
+    timeForEachDraw = 0;
+    repitionOfCards = true;
+    numberOfCardsStartingDealer = 1;
+    numberOfCardsStartingPlayer = 2;
+    valueOfAce = 1;
+    scoreObtainedPlayer = 0;
+    scoreObtainedDealer = 0;
+    constructor(private dialog: MatDialog, private gameService: MainGame) {}
+
+    ngOnInit(): void {
+        for (var i = 0; i < this.numberOfCardsStartingDealer; i++) {
+            var item1 = this.firstLetter[Math.floor(Math.random() * this.firstLetter.length)];
+            var item2 = this.lastLetter[Math.floor(Math.random() * this.lastLetter.length)];
+            var finalString = "../../assets/cards/" + item1 + item2 + ".png";
+            this.dealer[0].push(finalString);
+        }
+        this.dealer[0].push("../../assets/cards/BLANK.png");
+        for (var i = 0; i < this.numberOfCardsStartingPlayer; i++) {
+            var item1 = this.firstLetter[Math.floor(Math.random() * this.firstLetter.length)];
+            var item2 = this.lastLetter[Math.floor(Math.random() * this.lastLetter.length)];
+            var finalString = "../../assets/cards/" + item1 + item2 + ".png";
+            this.player[0].push(finalString);
+        }
+        this.totalCardsofPlayer = 2;
+    }
+
+    openDialog() {
+        this.dialog.open(DialogComponent, {
+            data: {
+                animal: "panda",
+            },
+        });
+    }
+
+    addCard() {
+        var item1 = this.firstLetter[Math.floor(Math.random() * this.firstLetter.length)];
+        var item2 = this.lastLetter[Math.floor(Math.random() * this.lastLetter.length)];
+        var finalString = "../../assets/cards/" + item1 + item2 + ".png";
+        if (this.totalCardsofPlayer < 10 && this.totalCardsofPlayer < this.limitOfCards) {
+            this.player[0].push(finalString);
+            this.totalCardsofPlayer = this.totalCardsofPlayer + 1;
+        } else if (
+            this.totalCardsofPlayer >= 10 &&
+            this.totalCardsofPlayer < 20 &&
+            this.totalCardsofPlayer < this.limitOfCards
+        ) {
+            this.player[1].push(finalString);
+            this.totalCardsofPlayer = this.totalCardsofPlayer + 1;
+        } else if (
+            this.totalCardsofPlayer >= 20 &&
+            this.totalCardsofPlayer < this.limitOfCards &&
+            this.totalCardsofPlayer < this.limitOfCards
+        ) {
+            this.player[2].push(finalString);
+            this.totalCardsofPlayer = this.totalCardsofPlayer + 1;
+        }
+    }
+
+    totalTimeEvent(event) {
+        if (event["action"] == "done") {
+            Swal.fire({
+                text: "You have used up all the time alloted!!",
+                icon: "warning",
+                showCancelButton: false,
+                confirmButtonText: "Okay",
+                confirmButtonColor: "red",
+            }).then((result) => {});
+        }
+    }
+}
diff --git a/src/app/post-survey/post-survey.component.css b/src/app/components/post-survey/post-survey.component.css
similarity index 100%
rename from src/app/post-survey/post-survey.component.css
rename to src/app/components/post-survey/post-survey.component.css
diff --git a/src/app/post-survey/post-survey.component.html b/src/app/components/post-survey/post-survey.component.html
similarity index 100%
rename from src/app/post-survey/post-survey.component.html
rename to src/app/components/post-survey/post-survey.component.html
diff --git a/src/app/post-survey/post-survey.component.spec.ts b/src/app/components/post-survey/post-survey.component.spec.ts
similarity index 100%
rename from src/app/post-survey/post-survey.component.spec.ts
rename to src/app/components/post-survey/post-survey.component.spec.ts
diff --git a/src/app/components/post-survey/post-survey.component.ts b/src/app/components/post-survey/post-survey.component.ts
new file mode 100644
index 0000000..3900f41
--- /dev/null
+++ b/src/app/components/post-survey/post-survey.component.ts
@@ -0,0 +1,141 @@
+import { Component, OnInit } from "@angular/core";
+import Swal from "sweetalert2";
+import { Router } from "@angular/router";
+import { FormBuilder, FormGroup, FormControl, Validators } from "@angular/forms";
+import { PreSurveyService } from "src/app/services/preSurvey.service";
+import { MatDialog } from "@angular/material/dialog";
+import { DialogPDfComponent } from "../pre-survey/dialog-pdf/dialog-pdf.component";
+import { CPCQService } from "src/app/services/cpcq.service";
+
+@Component({
+    selector: "app-post-survey",
+    templateUrl: "./post-survey.component.html",
+    styleUrls: ["./post-survey.component.css"],
+})
+export class PostSurveyComponent implements OnInit {
+    postSurveyForm: FormGroup;
+
+    consentFlag: boolean;
+    formQuestion: any;
+
+    constructor(
+        private router: Router,
+        public dialog: MatDialog,
+        private fb: FormBuilder,
+        private presurvey: PreSurveyService,
+        private apiService: CPCQService
+    ) {}
+
+    ngOnInit(): void {
+        this.postSurveyForm = this.fb.group({
+            q1: [""],
+            q2: [""],
+            q3: [""],
+            q4: [""],
+            q5: [""],
+            q6: [""],
+            q7: [""],
+            q8: [""],
+            q9: [""],
+            q10: [""],
+            q11: [""],
+            other9: [""],
+        });
+
+        this.presurvey.getPreSurveyAnswer().subscribe((res) => {
+            this.consentFlag = res[0]["consent"];
+        });
+
+        // if(localStorage.getItem("consent") == "true"){
+        //   this.consentFlag = true
+        // }
+        // else{
+        //   this.consentFlag = false
+        // }
+        this.presurvey.getPostSurveyFormQuestions().subscribe(
+            (res) => {
+                this.formQuestion = res[0];
+                for (let key in this.formQuestion) {
+                    if (this.formQuestion[key].indexOf("gender inequality") != -1) {
+                        this.formQuestion[key] = this.formQuestion[key].split("gender inequality.");
+                    } else if (this.formQuestion[key].indexOf("LGBTQA+.") != -1) {
+                        this.formQuestion[key] = this.formQuestion[key].split("LGBTQA+.");
+                    } else if (this.formQuestion[key].indexOf("ableism.") != -1) {
+                        this.formQuestion[key] = this.formQuestion[key].split("ableism.");
+                    } else if (
+                        this.formQuestion[key].indexOf("Teaching English to Speakers of Other Languages (TESOL).") != -1
+                    ) {
+                        this.formQuestion[key] = this.formQuestion[key].split(
+                            "Teaching English to Speakers of Other Languages (TESOL)."
+                        );
+                    } else if (this.formQuestion[key].indexOf("race or ethnicity.") != -1) {
+                        this.formQuestion[key] = this.formQuestion[key].split("race or ethnicity.");
+                    } else if (this.formQuestion[key].indexOf("culture.") != -1) {
+                        this.formQuestion[key] = this.formQuestion[key].split("culture.");
+                    } else if (this.formQuestion[key].indexOf("diversity, equity, and inclusion (DEI).") != -1) {
+                        this.formQuestion[key] = this.formQuestion[key].split(
+                            "diversity, equity, and inclusion (DEI)."
+                        );
+                    } else if (this.formQuestion[key].indexOf("racial, ethnic, and cultural") != -1) {
+                        this.formQuestion[key] = this.formQuestion[key].split("racial, ethnic, and cultural");
+                    } else if (this.formQuestion[key].indexOf("cultural competence?")) {
+                        this.formQuestion[key] = this.formQuestion[key].split("cultural competence?");
+                    }
+                }
+            },
+            (err) => {}
+        );
+    }
+
+    irbFunction() {
+        this.dialog.open(DialogPDfComponent, {
+            data: {
+                animal: "panda",
+            },
+        });
+    }
+    checkBoxAnswers = [];
+    checkBoxFunction(e) {
+        if (this.checkBoxAnswers.indexOf(e) == -1) {
+            this.checkBoxAnswers.push(e);
+        } else {
+            var index = this.checkBoxAnswers.indexOf(e);
+            this.checkBoxAnswers.splice(index, 1);
+        }
+    }
+    submit() {
+        if (!this.postSurveyForm.valid) {
+            Swal.fire({
+                text: "Please fill all the fields",
+                icon: "error",
+            }).then((res) => {});
+        } else {
+            this.postSurveyForm.get("q9").setValue(this.checkBoxAnswers);
+
+            if (this.postSurveyForm.value["other9"].length != 0) {
+                this.checkBoxAnswers.push(this.postSurveyForm.value["other9"]);
+                this.postSurveyForm.get("q9").setValue(this.checkBoxAnswers);
+            }
+            this.postSurveyForm.removeControl("other9");
+
+            this.presurvey.submitPostSurvey(this.postSurveyForm.value).subscribe(
+                (res) => {
+                    this.apiService.patchStatus("postsurveystatus").subscribe((res) => {
+                        Swal.fire({
+                            text: "Submitted!",
+                            icon: "success",
+                        }).then((res) => {
+                            this.router.navigateByUrl("/final");
+                        });
+                    });
+                },
+                (err) => {
+                    Swal.fire({
+                        text: "Failed to submit form.",
+                        icon: "error",
+                    }).then((res) => {});
+                }
+            );
+        }
+    }
+}
diff --git a/src/app/pre-survey/dialog-data-example-dialog.html b/src/app/components/pre-survey/dialog-data-example-dialog.html
similarity index 100%
rename from src/app/pre-survey/dialog-data-example-dialog.html
rename to src/app/components/pre-survey/dialog-data-example-dialog.html
diff --git a/src/app/pre-survey/dialog-pdf/dialog-pdf.component.css b/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.css
similarity index 100%
rename from src/app/pre-survey/dialog-pdf/dialog-pdf.component.css
rename to src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.css
diff --git a/src/app/pre-survey/dialog-pdf/dialog-pdf.component.html b/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.html
similarity index 100%
rename from src/app/pre-survey/dialog-pdf/dialog-pdf.component.html
rename to src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.html
diff --git a/src/app/pre-survey/dialog-pdf/dialog-pdf.component.spec.ts b/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.spec.ts
similarity index 100%
rename from src/app/pre-survey/dialog-pdf/dialog-pdf.component.spec.ts
rename to src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.spec.ts
diff --git a/src/app/pre-survey/dialog-pdf/dialog-pdf.component.ts b/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.ts
similarity index 100%
rename from src/app/pre-survey/dialog-pdf/dialog-pdf.component.ts
rename to src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.ts
diff --git a/src/app/pre-survey/pre-survey.component.css b/src/app/components/pre-survey/pre-survey.component.css
similarity index 100%
rename from src/app/pre-survey/pre-survey.component.css
rename to src/app/components/pre-survey/pre-survey.component.css
diff --git a/src/app/pre-survey/pre-survey.component.html b/src/app/components/pre-survey/pre-survey.component.html
similarity index 100%
rename from src/app/pre-survey/pre-survey.component.html
rename to src/app/components/pre-survey/pre-survey.component.html
diff --git a/src/app/pre-survey/pre-survey.component.spec.ts b/src/app/components/pre-survey/pre-survey.component.spec.ts
similarity index 100%
rename from src/app/pre-survey/pre-survey.component.spec.ts
rename to src/app/components/pre-survey/pre-survey.component.spec.ts
diff --git a/src/app/components/pre-survey/pre-survey.component.ts b/src/app/components/pre-survey/pre-survey.component.ts
new file mode 100644
index 0000000..2ed85ea
--- /dev/null
+++ b/src/app/components/pre-survey/pre-survey.component.ts
@@ -0,0 +1,199 @@
+import { Component, OnInit, Inject } from "@angular/core";
+import Swal from "sweetalert2";
+import { Router } from "@angular/router";
+import { MatDialog } from "@angular/material/dialog";
+import { DialogPDfComponent } from "./dialog-pdf/dialog-pdf.component";
+import { FormBuilder, FormGroup, FormControl, Validators } from "@angular/forms";
+import { PreSurveyService } from "src/app/services/preSurvey.service";
+export interface DialogData {
+    animal: "panda" | "unicorn" | "lion";
+}
+@Component({
+    selector: "app-pre-survey",
+    templateUrl: "./pre-survey.component.html",
+    styleUrls: ["./pre-survey.component.css"],
+})
+export class PreSurveyComponent implements OnInit {
+    preSurveyForm: FormGroup;
+    email: any;
+    startTime: any;
+    endTime: any;
+    durationTime: any;
+    formQuestion: any;
+    constructor(
+        private router: Router,
+        public dialog: MatDialog,
+        private fb: FormBuilder,
+        private presurvey: PreSurveyService
+    ) {}
+
+    ngOnInit(): void {
+        this.startTime = new Date();
+
+        this.preSurveyForm = this.fb.group({
+            q1: [""],
+            q2: [""],
+            q3: [""],
+            q4: [""],
+            q5: [""],
+            q6: [""],
+            q7: [""],
+            q8: [""],
+            q9: [""],
+            q10: [""],
+            q11: [""],
+            q12: [""],
+            q13: [""],
+            q14: [""],
+            q15: [""],
+            q16: [""],
+            q17: [""],
+            q18: [""],
+            q19: [""],
+            q20: [""],
+            q21: [""],
+            other5: "",
+            other6: "",
+            other7: "",
+            other8: "",
+            other10: "",
+            other12: "",
+            other13: "",
+            other21: "",
+            consent: "",
+        });
+
+        this.presurvey.getFormQuestions().subscribe(
+            (res) => {
+                this.formQuestion = res[0];
+                for (let key in this.formQuestion) {
+                    if (this.formQuestion[key].indexOf("gender inequality") != -1) {
+                        this.formQuestion[key] = this.formQuestion[key].split("gender inequality");
+                    } else if (this.formQuestion[key].indexOf("LGBTQA+") != -1) {
+                        this.formQuestion[key] = this.formQuestion[key].split("LGBTQA+");
+                    } else if (this.formQuestion[key].indexOf("ableism") != -1) {
+                        this.formQuestion[key] = this.formQuestion[key].split("ableism");
+                    } else if (
+                        this.formQuestion[key].indexOf("Teaching English to Speakers of Other Languages (TESOL)") != -1
+                    ) {
+                        this.formQuestion[key] = this.formQuestion[key].split(
+                            "Teaching English to Speakers of Other Languages (TESOL)"
+                        );
+                    } else if (this.formQuestion[key].indexOf("race or ethnicity") != -1) {
+                        this.formQuestion[key] = this.formQuestion[key].split("race or ethnicity");
+                    } else if (this.formQuestion[key].indexOf("culture") != -1) {
+                        this.formQuestion[key] = this.formQuestion[key].split("culture");
+                    } else if (this.formQuestion[key].indexOf("diversity, equity, and inclusion (DEI)") != -1) {
+                        this.formQuestion[key] = this.formQuestion[key].split("diversity, equity, and inclusion (DEI)");
+                    }
+                }
+                this.presurvey.userData().subscribe(
+                    (res) => {
+                        this.preSurveyForm.get("q1").setValue(res["last_name"]);
+                        this.preSurveyForm.get("q2").setValue(res["first_name"]);
+                        this.preSurveyForm.get("q3").setValue(res["email"]);
+                    },
+                    (err) => {}
+                );
+            },
+            (err) => {}
+        );
+    }
+
+    checkBox21 = [];
+    checkBoxFunction(e) {
+        if (this.checkBox21.indexOf(e) == -1) {
+            this.checkBox21.push(e);
+        } else {
+            var index = this.checkBox21.indexOf(e);
+            this.checkBox21.splice(index, 1);
+        }
+    }
+
+    checkBox7 = [];
+    checkBox7Function(e) {
+        if (this.checkBox7.indexOf(e) == -1) {
+            this.checkBox7.push(e);
+        } else {
+            var index = this.checkBox7.indexOf(e);
+            this.checkBox7.splice(index, 1);
+        }
+    }
+
+    irbFunction() {
+        this.dialog.open(DialogPDfComponent, {
+            data: {
+                animal: "panda",
+            },
+        });
+    }
+
+    submit() {
+        if (!this.preSurveyForm.valid) {
+            Swal.fire({
+                text: "Please fill all the fields",
+                icon: "error",
+            }).then((res) => {});
+        } else {
+            this.preSurveyForm.get("q7").setValue(this.checkBox7);
+            this.preSurveyForm.get("q21").setValue(this.checkBox21);
+
+            if (this.preSurveyForm.value["other5"].length != 0) {
+                this.preSurveyForm.get("q5").setValue(this.preSurveyForm.value["other5"]);
+            }
+            if (this.preSurveyForm.value["other6"].length != 0) {
+                this.preSurveyForm.get("q6").setValue(this.preSurveyForm.value["other6"]);
+            }
+            if (this.preSurveyForm.value["other7"].length != 0) {
+                this.checkBox7.push(this.preSurveyForm.value["other7"]);
+                this.preSurveyForm.get("q7").setValue(this.checkBox7);
+            }
+            if (this.preSurveyForm.value["other8"].length != 0) {
+                this.preSurveyForm.get("q8").setValue(this.preSurveyForm.value["other8"]);
+            }
+            if (this.preSurveyForm.value["other10"].length != 0) {
+                this.preSurveyForm.get("q10").setValue(this.preSurveyForm.value["other10"]);
+            }
+            if (this.preSurveyForm.value["other12"].length != 0) {
+                this.preSurveyForm.get("q12").setValue(this.preSurveyForm.value["other12"]);
+            }
+            if (this.preSurveyForm.value["other13"].length != 0) {
+                this.preSurveyForm.get("q13").setValue(this.preSurveyForm.value["other13"]);
+            }
+            if (this.preSurveyForm.value["other21"].length != 0) {
+                this.checkBox21.push(this.preSurveyForm.value["other21"]);
+                this.preSurveyForm.get("q21").setValue(this.checkBox21);
+            }
+            this.preSurveyForm.removeControl("other5");
+            this.preSurveyForm.removeControl("other6");
+            this.preSurveyForm.removeControl("other7");
+            this.preSurveyForm.removeControl("other8");
+            this.preSurveyForm.removeControl("other10");
+            this.preSurveyForm.removeControl("other12");
+            this.preSurveyForm.removeControl("other13");
+            this.preSurveyForm.removeControl("other21");
+            if (localStorage.getItem("consent") == "true") {
+                this.preSurveyForm.get("consent").setValue(true);
+            } else {
+                this.preSurveyForm.get("consent").setValue(false);
+            }
+
+            this.endTime = new Date();
+
+            this.durationTime = (this.endTime - this.startTime) / 1000;
+            this.durationTime = this.durationTime / 60;
+            this.preSurveyForm.value["duration"] = this.durationTime;
+            this.presurvey.submitForm(this.preSurveyForm.value).subscribe(
+                (res) => {
+                    Swal.fire({
+                        text: "Submitted",
+                        icon: "success",
+                    }).then((res) => {
+                        this.router.navigateByUrl("/dashboard");
+                    });
+                },
+                (err) => {}
+            );
+        }
+    }
+}
diff --git a/src/app/register-component/register-component.component.css b/src/app/components/register-component/register-component.component.css
similarity index 100%
rename from src/app/register-component/register-component.component.css
rename to src/app/components/register-component/register-component.component.css
diff --git a/src/app/register-component/register-component.component.html b/src/app/components/register-component/register-component.component.html
similarity index 100%
rename from src/app/register-component/register-component.component.html
rename to src/app/components/register-component/register-component.component.html
diff --git a/src/app/register-component/register-component.component.spec.ts b/src/app/components/register-component/register-component.component.spec.ts
similarity index 100%
rename from src/app/register-component/register-component.component.spec.ts
rename to src/app/components/register-component/register-component.component.spec.ts
diff --git a/src/app/register-component/register-component.component.ts b/src/app/components/register-component/register-component.component.ts
similarity index 97%
rename from src/app/register-component/register-component.component.ts
rename to src/app/components/register-component/register-component.component.ts
index 895763e..c02aff2 100644
--- a/src/app/register-component/register-component.component.ts
+++ b/src/app/components/register-component/register-component.component.ts
@@ -3,7 +3,7 @@ import { EmailValidator, FormBuilder, FormGroup, Validators } from "@angular/for
 import { MatDialog, MatDialogRef } from "@angular/material/dialog";
 import { Router } from "@angular/router";
 import Swal from "sweetalert2";
-import { LoginService } from "../../services/login.service";
+import { LoginService } from "src/app/services/login.service";
 @Component({
     selector: "app-register-component",
     templateUrl: "./register-component.component.html",
diff --git a/src/app/result-dashboard/result-dashboard.component.css b/src/app/components/result-dashboard/result-dashboard.component.css
similarity index 100%
rename from src/app/result-dashboard/result-dashboard.component.css
rename to src/app/components/result-dashboard/result-dashboard.component.css
diff --git a/src/app/result-dashboard/result-dashboard.component.html b/src/app/components/result-dashboard/result-dashboard.component.html
similarity index 100%
rename from src/app/result-dashboard/result-dashboard.component.html
rename to src/app/components/result-dashboard/result-dashboard.component.html
diff --git a/src/app/result-dashboard/result-dashboard.component.spec.ts b/src/app/components/result-dashboard/result-dashboard.component.spec.ts
similarity index 100%
rename from src/app/result-dashboard/result-dashboard.component.spec.ts
rename to src/app/components/result-dashboard/result-dashboard.component.spec.ts
diff --git a/src/app/components/result-dashboard/result-dashboard.component.ts b/src/app/components/result-dashboard/result-dashboard.component.ts
new file mode 100644
index 0000000..e596f3c
--- /dev/null
+++ b/src/app/components/result-dashboard/result-dashboard.component.ts
@@ -0,0 +1,387 @@
+import { Component, OnInit, ViewChild, Inject } from "@angular/core";
+import { Router } from "@angular/router";
+import { MatDialog, MAT_DIALOG_DATA } from "@angular/material/dialog";
+import Swal from "sweetalert2";
+import { DashboardDialoComponent } from "../dashboard/dashboard-dialo/dashboard-dialo.component";
+import { AnimationItem } from "lottie-web";
+import { PreSurveyService } from "src/app/services/preSurvey.service";
+import { CPCQService } from "src/app/services/cpcq.service";
+import { AnimationOptions } from "ngx-lottie";
+import {
+    ApexNonAxisChartSeries,
+    ApexPlotOptions,
+    ApexChart,
+    ApexFill,
+    ChartComponent,
+    ApexLegend,
+    ApexResponsive,
+} from "ng-apexcharts";
+
+export interface DialogData {
+    animal;
+}
+
+export type ChartOptions2 = {
+    series: ApexNonAxisChartSeries;
+    chart: ApexChart;
+    labels: string[];
+    colors: string[];
+    legend: ApexLegend;
+    plotOptions: ApexPlotOptions;
+    responsive: ApexResponsive | ApexResponsive[];
+};
+
+export type ChartOptions1 = {
+    series: ApexNonAxisChartSeries;
+    chart: ApexChart;
+    labels: string[];
+    plotOptions: ApexPlotOptions;
+};
+
+export type ChartOptions = {
+    series: ApexNonAxisChartSeries;
+    chart: ApexChart;
+    labels: string[];
+    plotOptions: ApexPlotOptions;
+    fill: ApexFill;
+};
+@Component({
+    selector: "app-result-dashboard",
+    templateUrl: "./result-dashboard.component.html",
+    styleUrls: ["./result-dashboard.component.css"],
+})
+export class ResultDashboardComponent implements OnInit {
+    statusNames = ["Pre-Survey", "CPCQ Form", "Unpacking", "Feedback", "View Results", "Post Survey"];
+    statusIcons = ["edit", "developer_board", "add_comment", "edit", "bar_chart", "chrome_reader_mode"];
+    currentStatus = 2;
+    selectedSatus = 0;
+    profile = false;
+    avatarLink: string;
+
+    public photoUrl: string;
+
+    public name: string = "Nihaarika Jagadish";
+
+    public showInitials = false;
+    public initials: string;
+    public circleColor: string;
+    public profileDetails: any;
+    public email: any;
+    public location: any;
+    public gender: any;
+    public userName: any;
+    public preSurveyDate: any;
+    public responsesDate: any;
+    public cpcqDate: any;
+    public finalDate: any;
+
+    private colors = [
+        "#EB7181", // red
+        "#468547", // green
+        "#FFD558", // yellow
+        "#3670B2", // blue
+    ];
+
+    @ViewChild("chart") chart: ChartComponent;
+    public chartOptions: Partial<ChartOptions>;
+    public chartOptions1: Partial<ChartOptions1>;
+    public chartOptions2: Partial<ChartOptions2>;
+
+    options: AnimationOptions = {
+        path: "https://assets2.lottiefiles.com/packages/lf20_cmf6a3.json",
+    };
+
+    animationCreated(animationItem: AnimationItem): void {}
+
+    openDialog1(i) {
+        this.chartOptions2 = {
+            series: [76, 67, 61, 90, 56],
+            chart: {
+                height: 300,
+                type: "radialBar",
+                events: {
+                    legendClick: function (chartContext, seriesIndex, config) {
+                        if (seriesIndex == 0) {
+                            Swal.fire({
+                                title: "Attitude",
+                                html: "A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status. <br /> <br /> <span><b> B.4 </b> Black students have the same opportunities and access to attend college as their white peers. <br/> <br /><span><b> C.1 </b> Students who wear dreadlocks as a hairstyle are a distraction in the classroom. <br/> <br /> D.3 It should be required for students to remove hair accessories that are associated with their culture, tribe, sexuality, or religion. <br/> <br /> E.5 All students who live in the United States deserve a quality public education, even those students whose parents are undocumented immigrants. <br/> F.6 All faculty and staff within a school setting have equal ability to transfer knowledge to students in regards to life, culture, character, and/or academic content.",
+                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+                            }).then((res) => {
+                                window.location.reload();
+                            });
+                        } else if (seriesIndex == 1) {
+                            Swal.fire({
+                                title: "Empathy",
+                                html: "A.2 A 10th-grade male died as a result of a car accident during an illegal street race. A group of teachers will not attend the funeral because of the activity that led to the student’s cause of death. <br /> <br /> <span><b> B.4 </b> A public school Teacher is grounded by the philosophy of their religion. Throughout their career as an educator; they have learned to be welcoming to others’ cultural and religious beliefs even if those beliefs are in conflict with their own.<br/> <br /><span><b> C.1 </b> In two weeks, the 8th grade teaching cluster will be getting a new math teacher who is Muslim. Next week’s professional development is dedicated to learning about the customs and etiquette of Islam to ensure that the new colleague feels welcomed in their new school.<br/> <br /> D.3  An Asian student scored an 85 percent on today’s math quiz. The teacher expressed disappointment in the student by saying,Come on, you are Asian! You should’ve scored better than this. <br/> <br /> E.5  A school counselor advised a biracial student that they would appear more professional if they perm their hair (removing the kinks) for their upcoming college visits. <br/> F.6 Your colleague was pulled over by the police on the way to work this morning. You hear other colleagues in the break room discussing the reasons why they were pulled over, and all of the suspected reasons were related to what they may have done (i.e., speeding, running a stop sign, etc.), rather than acknowledging that they may have been pulled over for being a person of color driving a luxury car.",
+                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+                            }).then((res) => {
+                                window.location.reload();
+                            });
+                        } else if (seriesIndex == 2) {
+                            Swal.fire({
+                                title: "Policy",
+                                html: "A.2 A group of teachers and students are protesting the athletic department at a high school for changing the school’s logo to a silhouette of a Native American in a headdress; they have secured a place on the agenda for the next school board meeting to give a presentation on why this logo is offensive and trivializes Native Americans. <br /> <br /> <span><b> B.4 </b>  A school that does not consider factors related to culture and ethnicity in their decision-making process is more democratic than a school who does consider factors related to culture and ethnicity in their decision-making process.<br/> <br /><span><b> C.1 </b> A school leader makes a “diversity hire” to introduce new ideas around school culture, curriculum, leadership, and/or supervision. <br/> <br /> D.3 A principal implemented a policy that all faculty and staff have to participate in quarterly potlucks; they are to bring a traditional dish specific to their culture, as a way to facilitate cross-cultural discourse. <br/> <br /> E.5 Students in a high-poverty school who are absent 10 consecutive days in a marking period are referred to special education for excessive absenteeism. <br/> F.6A member of the school board is proposing a policy where English is the official language for all school related business in a community where the majority of the students’ and families’ primary language is Spanish.                ",
+                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+                            }).then((res) => {
+                                window.location.reload();
+                            });
+                        } else if (seriesIndex == 3) {
+                            Swal.fire({
+                                title: "Professionalism",
+                                html: "A.2A teacher asked the class who has traveled out of the country. A Black male raises his hand and states “I have.”  The teacher asked the student three follow-up questions to corroborate his story.                <br /> <br /> <span><b> B.4 </b> During lunch duty, teachers had a discussion in the presence of students about tomorrow’s district-wide racial sensitivity training. A teacher commented, Why do we have to attend this training; the United States is post-racial because we have a Black president.                <br/> <br /><span><b> C.1 </b> The social committee at an elementary school is planning an awards ceremony and dinner for the staff and faculty. Six of their colleagues are vegan because of their religious beliefs.  As a result, the committee has added a vegan selection to the menu to accommodate their colleagues’ religious beliefs. <br/> <br /> D.3  The reading specialist expressed some concerns to the Vice Principal about how her male students emasculates her during whole group instruction. The Vice Principal said, “Don’t worry about it, that's just how boys behave.”                 <br/> <br /> E.5  A history teacher refuses to acknowledge black history month and does not want to teach content about black history in the United States.                <br/> F.6 An AP English teacher has assigned a research paper where the students were required to write about their religion. The teacher did not let their own religious beliefs cloud their judgement; the teacher researched the student’s religion while grading the paper to offer relevant constructive feedback back on the arguments made within the paper.                ",
+                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+                            }).then((res) => {
+                                window.location.reload();
+                            });
+                        } else if (seriesIndex == 4) {
+                            Swal.fire({
+                                title: "Teaching Practice",
+                                html: "A.2 A novice teacher in a school where the majority of the students are African-American and Latino uses hip-hop as a way to make science relevant in the student's social and cultural context.                <br /> <br /> <span><b> B.4 </b>An algebra teacher who teaches in a school where the majority of the students are on free and reduced lunch requires that each student buy a specific graphing calculator for Algebra, which retails for over 100 dollars.                <br/> <br /><span><b> C.1 </b> A teacher created a seating chart that placed ‘unteachable students’ in the back of the classroom, all of whom were male: 2 Latinos and 6 African Americans.  In the same seating chart, her ‘good students,' all white, were seated in preferential seating.                <br/> <br /> D.3 A teacher puts together a petition to request a textbook company to remove the narrative about the enslavement of Africans in the United States in their history textbook to accommodate teachers’ discomfort with discussing this sensitive topic.                <br/> <br /> E.5  A teacher in a Title 1 school (high percentage of children from low-income families) checks homework for completeness rather than correctness as a strategy to improve student efficacy.                 <br/> F.6 There is an increase of LGBTQIA+ students reporting that they are being harassed both verbally and physically in United States public schools. A group of students and teachers are researching the best practices to implement and create a supportive environment for these students to voice their concerns in their school.",
+                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+                            }).then((res) => {
+                                window.location.reload();
+                            });
+                        }
+                    },
+                },
+            },
+            plotOptions: {
+                radialBar: {
+                    offsetY: 0,
+                    startAngle: 0,
+                    endAngle: 270,
+                    hollow: {
+                        margin: 5,
+                        size: "30%",
+                        background: "transparent",
+                        image: undefined,
+                    },
+                    dataLabels: {
+                        name: {
+                            show: false,
+                        },
+                        value: {
+                            show: false,
+                        },
+                    },
+                },
+            },
+            colors: ["#1ab7ea", "#0084ff", "#39539E", "#0077B5"],
+            labels: ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"],
+            legend: {
+                show: true,
+                floating: true,
+                fontSize: "13px",
+                position: "left",
+                labels: {
+                    useSeriesColors: true,
+                },
+                formatter: function (seriesName, opts) {
+                    return seriesName + ":  " + opts.w.globals.series[opts.seriesIndex];
+                },
+                itemMargin: {
+                    horizontal: 3,
+                },
+            },
+            responsive: [
+                {
+                    breakpoint: 480,
+                    options: {
+                        legend: {
+                            show: false,
+                        },
+                    },
+                },
+            ],
+        };
+    }
+
+    openDialog() {
+        const dialogRef = this.dialog.open(DashboardDialoComponent, {
+            data: { userID: this.profileDetails[0]["id"] },
+        });
+
+        dialogRef.afterClosed().subscribe((result) => {
+            this.showInitials = false;
+            this.avatarLink = result;
+        });
+    }
+    constructor(
+        private router: Router,
+        public dialog: MatDialog,
+        public PreSurService: PreSurveyService,
+        public cpcqService: CPCQService
+    ) {
+        this.openDialog1(1);
+
+        this.chartOptions = {
+            series: [76],
+            chart: {
+                height: 300,
+                type: "radialBar",
+                offsetY: -20,
+            },
+            plotOptions: {
+                radialBar: {
+                    startAngle: -90,
+                    endAngle: 90,
+                    track: {
+                        background: "#e7e7e7",
+                        strokeWidth: "97%",
+                        margin: 5, // margin is in pixels
+                        dropShadow: {
+                            enabled: true,
+                            top: 2,
+                            left: 0,
+                            opacity: 0.31,
+                            blur: 2,
+                        },
+                    },
+                    dataLabels: {
+                        value: {
+                            // offsetY: -2,
+                            fontSize: "22px",
+                        },
+                        name: {
+                            show: true,
+                            fontSize: "13px",
+                            color: "green",
+                        },
+                    },
+                },
+            },
+            fill: {
+                type: "gradient",
+                gradient: {
+                    shade: "light",
+                    shadeIntensity: 0.4,
+                    inverseColors: false,
+                    opacityFrom: 1,
+                    opacityTo: 1,
+                    stops: [0, 50, 53, 91],
+                },
+            },
+            labels: ["Culturally Competent"],
+        };
+
+        this.chartOptions1 = {
+            series: [44, 55, 67, 83, 56],
+            chart: {
+                height: 200,
+                width: 300,
+                type: "radialBar",
+                events: {
+                    click: function (event, chartContext, config) {
+                        // The last parameter config contains additional information like `seriesIndex` and `dataPointIndex` for cartesian charts.
+                    },
+                },
+            },
+            plotOptions: {
+                radialBar: {
+                    dataLabels: {
+                        name: {
+                            fontSize: "22px",
+                        },
+                        value: {
+                            fontSize: "16px",
+                        },
+                        total: {
+                            show: true,
+                            label: "Total",
+                            formatter: function (w) {
+                                return "249";
+                            },
+                        },
+                    },
+                },
+            },
+            labels: ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"],
+        };
+    }
+
+    public generateData(count, yrange) {
+        var i = 0;
+        var series = [];
+        while (i < count) {
+            var x = "w" + (i + 1).toString();
+            var y = Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min;
+
+            series.push({
+                x: x,
+                y: y,
+            });
+            i++;
+        }
+        return series;
+    }
+
+    ngOnInit(): void {
+        if (!this.photoUrl) {
+            this.showInitials = true;
+            this.createInititals();
+
+            const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length));
+            this.circleColor = this.colors[randomIndex];
+        }
+        this.PreSurService.profileData().subscribe((res) => {
+            this.profileDetails = res;
+            this.email = res[0]["email"];
+            this.location = res[0]["location"];
+            this.gender = res[0]["gender"];
+            this.userName = res[0]["first_name"];
+            this.preSurveyDate = new Date(res[0]["preSurveydate"]).toLocaleDateString("en-US", {
+                weekday: "long",
+                year: "numeric",
+                month: "long",
+                day: "numeric",
+            });
+            this.responsesDate = new Date(res[0]["responsesdate"]).toLocaleDateString("en-US", {
+                weekday: "long",
+                year: "numeric",
+                month: "long",
+                day: "numeric",
+            });
+            this.cpcqDate = new Date(res[0]["cpcqdate"]).toLocaleDateString("en-US", {
+                weekday: "long",
+                year: "numeric",
+                month: "long",
+                day: "numeric",
+            });
+
+            this.currentStatus = res[0]["status"].lastIndexOf(true);
+            //
+            if (res[0]["photo_profile"].length != 0) {
+                this.showInitials = false;
+                var lenSTr = res[0]["photo_profile"].length;
+                this.avatarLink = res[0]["photo_profile"];
+            }
+        });
+
+        this.cpcqService.getCPCQStatus().subscribe((res) => {
+            this.finalDate = new Date(res[0]["created"]).toDateString();
+        });
+    }
+
+    private createInititals(): void {
+        let initials = "";
+
+        for (let i = 0; i < this.name.length; i++) {
+            if (this.name.charAt(i) === " ") {
+                continue;
+            }
+
+            if (this.name.charAt(i) === this.name.charAt(i).toUpperCase()) {
+                initials += this.name.charAt(i);
+
+                if (initials.length == 2) {
+                    break;
+                }
+            }
+        }
+
+        this.initials = initials;
+    }
+    preSurvey() {
+        this.router.navigateByUrl("/preSurvey");
+    }
+}
diff --git a/src/app/score-page/score-page.component.css b/src/app/components/score-page/score-page.component.css
similarity index 100%
rename from src/app/score-page/score-page.component.css
rename to src/app/components/score-page/score-page.component.css
diff --git a/src/app/score-page/score-page.component.html b/src/app/components/score-page/score-page.component.html
similarity index 100%
rename from src/app/score-page/score-page.component.html
rename to src/app/components/score-page/score-page.component.html
diff --git a/src/app/score-page/score-page.component.spec.ts b/src/app/components/score-page/score-page.component.spec.ts
similarity index 100%
rename from src/app/score-page/score-page.component.spec.ts
rename to src/app/components/score-page/score-page.component.spec.ts
diff --git a/src/app/score-page/score-page.component.ts b/src/app/components/score-page/score-page.component.ts
similarity index 99%
rename from src/app/score-page/score-page.component.ts
rename to src/app/components/score-page/score-page.component.ts
index 6d2687d..5689b30 100644
--- a/src/app/score-page/score-page.component.ts
+++ b/src/app/components/score-page/score-page.component.ts
@@ -1,7 +1,7 @@
 import { Component, OnInit } from "@angular/core";
 import { AfterViewInit, ElementRef, ViewChild } from "@angular/core";
 import { Router } from "@angular/router";
-import { FirstForm } from "../../services/firstForm.service";
+import { FirstForm } from "src/app/services/firstForm.service";
 import { FormBuilder, FormGroup, Validators } from "@angular/forms";
 import Swal from "sweetalert2";
 import { ThemePalette } from "@angular/material/core";
@@ -11,9 +11,9 @@ import * as RecordRTC from "recordrtc";
 import { DomSanitizer } from "@angular/platform-browser";
 import { MatDialog, MAT_DIALOG_DATA } from "@angular/material/dialog";
 import { DialogFormComponent } from "../cpcq-form/dialog-form/dialog-form.component";
-import { LoginService } from "../../services/login.service";
+import { LoginService } from "src/app/services/login.service";
 
-import { CPCQService } from "../../services/cpcq.service";
+import { CPCQService } from "src/app/services/cpcq.service";
 
 export interface DialogData {
     animal: "panda" | "unicorn" | "lion";
diff --git a/src/app/test/my-overlay/my-overlay.component.css b/src/app/components/test/my-overlay/my-overlay.component.css
similarity index 100%
rename from src/app/test/my-overlay/my-overlay.component.css
rename to src/app/components/test/my-overlay/my-overlay.component.css
diff --git a/src/app/test/my-overlay/my-overlay.component.html b/src/app/components/test/my-overlay/my-overlay.component.html
similarity index 100%
rename from src/app/test/my-overlay/my-overlay.component.html
rename to src/app/components/test/my-overlay/my-overlay.component.html
diff --git a/src/app/test/my-overlay/my-overlay.component.spec.ts b/src/app/components/test/my-overlay/my-overlay.component.spec.ts
similarity index 100%
rename from src/app/test/my-overlay/my-overlay.component.spec.ts
rename to src/app/components/test/my-overlay/my-overlay.component.spec.ts
diff --git a/src/app/components/test/my-overlay/my-overlay.component.ts b/src/app/components/test/my-overlay/my-overlay.component.ts
new file mode 100644
index 0000000..cd6dc39
--- /dev/null
+++ b/src/app/components/test/my-overlay/my-overlay.component.ts
@@ -0,0 +1,92 @@
+import {
+    Component,
+    OnInit,
+    ViewChild,
+    AfterViewInit,
+    ElementRef,
+    Input,
+    OnDestroy,
+    Renderer2,
+    Output,
+    EventEmitter,
+} from "@angular/core";
+import { Overlay, OverlayRef } from "@angular/cdk/overlay";
+import { CdkPortal } from "@angular/cdk/portal";
+import { OverlayServiceService } from "src/app/services/overlay-service.service";
+@Component({
+    selector: "app-my-overlay",
+    templateUrl: "./my-overlay.component.html",
+    styleUrls: ["./my-overlay.component.css"],
+})
+export class MyOverlayComponent implements OnInit, OnDestroy {
+    @Input() connectedTo: any;
+    @Input() text: string;
+    @Input() get id(): number {
+        return this._id;
+    }
+    set id(id: number) {
+        if (typeof id === "string") {
+            this._id = parseInt(id);
+        } else {
+            this._id = id;
+        }
+    }
+    private _id: number;
+    @Output() closed = new EventEmitter<any>();
+    @ViewChild(CdkPortal) portal: ElementRef;
+    overlayRef: OverlayRef;
+    private nativeElement;
+
+    constructor(private overlay: Overlay, private renderer: Renderer2, private overlayService: OverlayServiceService) {}
+
+    ngOnInit() {
+        this.overlayService.registerOverlay(this);
+
+        if (this.connectedTo.getBoundingClientRect) {
+            this.nativeElement = this.connectedTo;
+        } else {
+            this.nativeElement = this.connectedTo._elementRef.nativeElement;
+        }
+    }
+
+    public showOverlay() {
+        const positionStrategy = this.overlay
+            .position()
+            .flexibleConnectedTo(this.nativeElement)
+            .withPositions([
+                { originX: "start", originY: "center", overlayX: "end", overlayY: "center", offsetX: -10 },
+                { originX: "end", originY: "center", overlayX: "start", overlayY: "center", offsetX: 10 },
+                { originX: "center", originY: "bottom", overlayX: "center", overlayY: "top", offsetY: 10 },
+            ])
+            .withGrowAfterOpen();
+        const scrollStrategy = this.overlay.scrollStrategies.reposition();
+        const overlayRef = this.overlay.create({
+            positionStrategy,
+            scrollStrategy,
+            hasBackdrop: true,
+            backdropClass: "my-backdrop",
+        });
+        this.overlayRef = overlayRef;
+        overlayRef.detachments().subscribe(() => {
+            this.renderer.removeClass(this.nativeElement, "elevate");
+            this.renderer.removeAttribute(this.nativeElement, "id");
+        });
+        overlayRef.attach(this.portal);
+        this.renderer.addClass(this.nativeElement, "elevate");
+        this.renderer.setAttribute(this.nativeElement, "id", "onboarding-active");
+        overlayRef.backdropClick().subscribe(() => this.hideOverlay());
+    }
+
+    public hideOverlay() {
+        if (this.overlayRef && this.overlayRef.hasAttached) {
+            this.overlayService.wasClosed(this._id);
+            this.overlayRef.dispose();
+            this.closed.emit();
+        }
+    }
+
+    ngOnDestroy() {
+        this.hideOverlay();
+        this.overlayService.destroyOverlay(this);
+    }
+}
diff --git a/src/app/test/test.component.css b/src/app/components/test/test.component.css
similarity index 100%
rename from src/app/test/test.component.css
rename to src/app/components/test/test.component.css
diff --git a/src/app/test/test.component.html b/src/app/components/test/test.component.html
similarity index 100%
rename from src/app/test/test.component.html
rename to src/app/components/test/test.component.html
diff --git a/src/app/test/test.component.spec.ts b/src/app/components/test/test.component.spec.ts
similarity index 100%
rename from src/app/test/test.component.spec.ts
rename to src/app/components/test/test.component.spec.ts
diff --git a/src/app/components/test/test.component.ts b/src/app/components/test/test.component.ts
new file mode 100644
index 0000000..56a1295
--- /dev/null
+++ b/src/app/components/test/test.component.ts
@@ -0,0 +1,21 @@
+import { Component, AfterViewInit } from "@angular/core";
+import { OverlayServiceService } from "src/app/services/overlay-service.service";
+@Component({
+    selector: "app-test",
+    templateUrl: "./test.component.html",
+    styleUrls: ["./test.component.css"],
+})
+export class TestComponent implements AfterViewInit {
+    isActive1 = true;
+    isActive2 = false;
+
+    constructor(private service: OverlayServiceService) {}
+
+    ngAfterViewInit() {
+        this.service.showOverlay(1);
+    }
+
+    restartOnboarding() {
+        this.service.showOverlay(1);
+    }
+}
diff --git a/src/app/trial-component/trial-component.component.css b/src/app/components/trial-component/trial-component.component.css
similarity index 100%
rename from src/app/trial-component/trial-component.component.css
rename to src/app/components/trial-component/trial-component.component.css
diff --git a/src/app/trial-component/trial-component.component.html b/src/app/components/trial-component/trial-component.component.html
similarity index 100%
rename from src/app/trial-component/trial-component.component.html
rename to src/app/components/trial-component/trial-component.component.html
diff --git a/src/app/trial-component/trial-component.component.spec.ts b/src/app/components/trial-component/trial-component.component.spec.ts
similarity index 100%
rename from src/app/trial-component/trial-component.component.spec.ts
rename to src/app/components/trial-component/trial-component.component.spec.ts
diff --git a/src/app/trial-component/trial-component.component.ts b/src/app/components/trial-component/trial-component.component.ts
similarity index 100%
rename from src/app/trial-component/trial-component.component.ts
rename to src/app/components/trial-component/trial-component.component.ts
diff --git a/src/app/unpacking-page/unpacking-page.component.css b/src/app/components/unpacking-page/unpacking-page.component.css
similarity index 100%
rename from src/app/unpacking-page/unpacking-page.component.css
rename to src/app/components/unpacking-page/unpacking-page.component.css
diff --git a/src/app/unpacking-page/unpacking-page.component.html b/src/app/components/unpacking-page/unpacking-page.component.html
similarity index 100%
rename from src/app/unpacking-page/unpacking-page.component.html
rename to src/app/components/unpacking-page/unpacking-page.component.html
diff --git a/src/app/unpacking-page/unpacking-page.component.spec.ts b/src/app/components/unpacking-page/unpacking-page.component.spec.ts
similarity index 100%
rename from src/app/unpacking-page/unpacking-page.component.spec.ts
rename to src/app/components/unpacking-page/unpacking-page.component.spec.ts
diff --git a/src/app/components/unpacking-page/unpacking-page.component.ts b/src/app/components/unpacking-page/unpacking-page.component.ts
new file mode 100644
index 0000000..8531456
--- /dev/null
+++ b/src/app/components/unpacking-page/unpacking-page.component.ts
@@ -0,0 +1,1215 @@
+import { Component, OnInit, Inject } from "@angular/core";
+import { AfterViewInit, ElementRef, ViewChild } from "@angular/core";
+import { Router } from "@angular/router";
+import { FirstForm } from "src/app/services/firstForm.service";
+import { FormBuilder, FormGroup, Validators } from "@angular/forms";
+import Swal from "sweetalert2";
+import { ThemePalette } from "@angular/material/core";
+import { ProgressBarMode } from "@angular/material/progress-bar";
+declare var $: any;
+import * as RecordRTC from "recordrtc";
+import { DomSanitizer } from "@angular/platform-browser";
+import { MatDialog, MAT_DIALOG_DATA } from "@angular/material/dialog";
+import { DialogFormComponent } from "../cpcq-form/dialog-form/dialog-form.component";
+
+import { CPCQService } from "src/app/services/cpcq.service";
+
+export interface DialogData {
+    animal: "panda" | "unicorn" | "lion";
+    status;
+    result;
+}
+@Component({
+    selector: "app-unpacking-page",
+    templateUrl: "./unpacking-page.component.html",
+    styleUrls: ["./unpacking-page.component.css"],
+})
+export class UnpackingPageComponent implements OnInit, AfterViewInit {
+    firstForm: FormGroup;
+    responseList: any;
+    loaded = false;
+
+    questionArray = [
+        ["Enter First Name", "text"],
+        ["Enter Last Name", "text"],
+        ["Enter Age", "number"],
+    ];
+    statusCheck = false;
+    buttonClick = false;
+
+    sliderValue = 0;
+
+    selectedIndex = 6;
+
+    color: ThemePalette = "primary";
+    mode: ProgressBarMode = "buffer";
+    value1 = 50;
+    bufferValue = 100;
+
+    formValues = [];
+    attributes = ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"];
+    columnHeadings = [
+        "culturalDestructivenessresponse",
+        "culturalIncapacityresponse",
+        "culturalBlindnessresponse",
+        "culturalPreCompetenceresponse",
+        "culturalCompetenceresponse",
+        "culturalProficiencyresponse",
+    ];
+    rowLetters = [
+        ["D", "C", "B", "A", "F", "E"],
+        ["E", "A", "F", "D", "B", "C"],
+        ["F", "E", "B", "C", "D", "A"],
+        ["E", "A", "B", "D", "C", "F"],
+        ["D", "C", "B", "E", "A", "F"],
+    ];
+    boldList = [[]];
+    randomList = [[]];
+    finalList = [[]];
+    finalList1 = [];
+    attitudeForm: FormGroup;
+    empathyForm: FormGroup;
+    policyForm: FormGroup;
+
+    finalFeedbackForm: FormGroup;
+
+    //arrays of data getting from the backend
+
+    attitude: any;
+    empathy: any;
+    policy: any;
+    professionalism: any;
+    teachingPractice: any;
+    wordDescription: any;
+    unpackedCount = 0;
+
+    startTime: any;
+    endTime: any;
+    durationTime: any;
+
+    @ViewChild("changeDiv") changeDiv: ElementRef;
+    @ViewChild("changeDiv1") changeDiv1: ElementRef;
+    @ViewChild("changeDiv2") changeDiv2: ElementRef;
+    @ViewChild("changeDiv3") changeDiv3: ElementRef;
+    @ViewChild("changeDiv4") changeDiv4: ElementRef;
+    @ViewChild("changeDiv5") changeDiv5: ElementRef;
+    @ViewChild("changeDiv6") changeDiv6: ElementRef;
+    @ViewChild("changeDiv7") changeDiv7: ElementRef;
+    @ViewChild("changeDiv8") changeDiv8: ElementRef;
+    @ViewChild("changeDiv9") changeDiv9: ElementRef;
+    @ViewChild("changeDiv10") changeDiv10: ElementRef;
+    @ViewChild("changeDiv11") changeDiv11: ElementRef;
+    @ViewChild("changeDiv12") changeDiv12: ElementRef;
+    @ViewChild("changeDiv13") changeDiv13: ElementRef;
+    @ViewChild("changeDiv14") changeDiv14: ElementRef;
+    @ViewChild("changeDiv15") changeDiv15: ElementRef;
+    @ViewChild("changeDiv16") changeDiv16: ElementRef;
+    @ViewChild("changeDiv17") changeDiv17: ElementRef;
+    @ViewChild("changeDiv18") changeDiv18: ElementRef;
+    @ViewChild("changeDiv19") changeDiv19: ElementRef;
+    @ViewChild("changeDiv20") changeDiv20: ElementRef;
+    @ViewChild("changeDiv21") changeDiv21: ElementRef;
+    @ViewChild("changeDiv22") changeDiv22: ElementRef;
+    @ViewChild("changeDiv23") changeDiv23: ElementRef;
+    @ViewChild("changeDiv24") changeDiv24: ElementRef;
+    @ViewChild("changeDiv25") changeDiv25: ElementRef;
+    @ViewChild("changeDiv26") changeDiv26: ElementRef;
+    @ViewChild("changeDiv27") changeDiv27: ElementRef;
+    @ViewChild("changeDiv28") changeDiv28: ElementRef;
+    @ViewChild("changeDiv29") changeDiv29: ElementRef;
+
+    ngAfterViewInit() {}
+
+    sliderFunction1() {
+        if (this.sliderValue == 1) {
+            this.changeDiv.nativeElement.style.fontSize = "15px";
+            this.changeDiv1.nativeElement.style.fontSize = "15px";
+            this.changeDiv2.nativeElement.style.fontSize = "15px";
+            this.changeDiv3.nativeElement.style.fontSize = "15px";
+            this.changeDiv4.nativeElement.style.fontSize = "15px";
+            this.changeDiv5.nativeElement.style.fontSize = "15px";
+            this.changeDiv6.nativeElement.style.fontSize = "15px";
+            this.changeDiv7.nativeElement.style.fontSize = "15px";
+            this.changeDiv8.nativeElement.style.fontSize = "15px";
+            this.changeDiv9.nativeElement.style.fontSize = "15px";
+            this.changeDiv10.nativeElement.style.fontSize = "15px";
+            this.changeDiv11.nativeElement.style.fontSize = "15px";
+            this.changeDiv12.nativeElement.style.fontSize = "15px";
+            this.changeDiv13.nativeElement.style.fontSize = "15px";
+            this.changeDiv14.nativeElement.style.fontSize = "15px";
+            this.changeDiv15.nativeElement.style.fontSize = "15px";
+            this.changeDiv16.nativeElement.style.fontSize = "15px";
+            this.changeDiv17.nativeElement.style.fontSize = "15px";
+            this.changeDiv18.nativeElement.style.fontSize = "15px";
+            this.changeDiv19.nativeElement.style.fontSize = "15px";
+            this.changeDiv20.nativeElement.style.fontSize = "15px";
+            this.changeDiv21.nativeElement.style.fontSize = "15px";
+            this.changeDiv22.nativeElement.style.fontSize = "15px";
+            this.changeDiv23.nativeElement.style.fontSize = "15px";
+            this.changeDiv24.nativeElement.style.fontSize = "15px";
+            this.changeDiv25.nativeElement.style.fontSize = "15px";
+            this.changeDiv26.nativeElement.style.fontSize = "15px";
+            this.changeDiv27.nativeElement.style.fontSize = "15px";
+            this.changeDiv28.nativeElement.style.fontSize = "15px";
+            this.changeDiv29.nativeElement.style.fontSize = "15px";
+        } else if (this.sliderValue == 2) {
+            this.changeDiv.nativeElement.style.fontSize = "20px";
+            this.changeDiv1.nativeElement.style.fontSize = "20px";
+            this.changeDiv2.nativeElement.style.fontSize = "20px";
+            this.changeDiv3.nativeElement.style.fontSize = "20px";
+            this.changeDiv4.nativeElement.style.fontSize = "20px";
+            this.changeDiv5.nativeElement.style.fontSize = "20px";
+            this.changeDiv6.nativeElement.style.fontSize = "20px";
+            this.changeDiv7.nativeElement.style.fontSize = "20px";
+            this.changeDiv8.nativeElement.style.fontSize = "20px";
+            this.changeDiv9.nativeElement.style.fontSize = "20px";
+            this.changeDiv10.nativeElement.style.fontSize = "20px";
+            this.changeDiv11.nativeElement.style.fontSize = "20px";
+            this.changeDiv12.nativeElement.style.fontSize = "20px";
+            this.changeDiv13.nativeElement.style.fontSize = "20px";
+            this.changeDiv14.nativeElement.style.fontSize = "20px";
+            this.changeDiv15.nativeElement.style.fontSize = "20px";
+            this.changeDiv16.nativeElement.style.fontSize = "20px";
+            this.changeDiv17.nativeElement.style.fontSize = "20px";
+            this.changeDiv18.nativeElement.style.fontSize = "20px";
+            this.changeDiv19.nativeElement.style.fontSize = "20px";
+            this.changeDiv20.nativeElement.style.fontSize = "20px";
+            this.changeDiv21.nativeElement.style.fontSize = "20px";
+            this.changeDiv22.nativeElement.style.fontSize = "20px";
+            this.changeDiv23.nativeElement.style.fontSize = "20px";
+            this.changeDiv24.nativeElement.style.fontSize = "20px";
+            this.changeDiv25.nativeElement.style.fontSize = "20px";
+            this.changeDiv26.nativeElement.style.fontSize = "20px";
+            this.changeDiv27.nativeElement.style.fontSize = "20px";
+            this.changeDiv28.nativeElement.style.fontSize = "20px";
+            this.changeDiv29.nativeElement.style.fontSize = "20px";
+        } else if (this.sliderValue == 3) {
+            this.changeDiv.nativeElement.style.fontSize = "22px";
+            this.changeDiv1.nativeElement.style.fontSize = "22px";
+            this.changeDiv2.nativeElement.style.fontSize = "22px";
+            this.changeDiv3.nativeElement.style.fontSize = "22px";
+            this.changeDiv4.nativeElement.style.fontSize = "22px";
+            this.changeDiv5.nativeElement.style.fontSize = "22px";
+            this.changeDiv6.nativeElement.style.fontSize = "22px";
+            this.changeDiv7.nativeElement.style.fontSize = "22px";
+            this.changeDiv8.nativeElement.style.fontSize = "22px";
+            this.changeDiv9.nativeElement.style.fontSize = "22px";
+            this.changeDiv10.nativeElement.style.fontSize = "22px";
+            this.changeDiv11.nativeElement.style.fontSize = "22px";
+            this.changeDiv12.nativeElement.style.fontSize = "22px";
+            this.changeDiv13.nativeElement.style.fontSize = "22px";
+            this.changeDiv14.nativeElement.style.fontSize = "22px";
+            this.changeDiv15.nativeElement.style.fontSize = "22px";
+            this.changeDiv16.nativeElement.style.fontSize = "22px";
+            this.changeDiv17.nativeElement.style.fontSize = "22px";
+            this.changeDiv18.nativeElement.style.fontSize = "22px";
+            this.changeDiv19.nativeElement.style.fontSize = "22px";
+            this.changeDiv20.nativeElement.style.fontSize = "22px";
+            this.changeDiv21.nativeElement.style.fontSize = "22px";
+            this.changeDiv22.nativeElement.style.fontSize = "22px";
+            this.changeDiv23.nativeElement.style.fontSize = "22px";
+            this.changeDiv24.nativeElement.style.fontSize = "22px";
+            this.changeDiv25.nativeElement.style.fontSize = "22px";
+            this.changeDiv26.nativeElement.style.fontSize = "22px";
+            this.changeDiv27.nativeElement.style.fontSize = "22px";
+            this.changeDiv28.nativeElement.style.fontSize = "22px";
+            this.changeDiv29.nativeElement.style.fontSize = "22px";
+        } else if (this.sliderValue == 4) {
+            this.changeDiv.nativeElement.style.fontSize = "25px";
+            this.changeDiv1.nativeElement.style.fontSize = "25px";
+            this.changeDiv2.nativeElement.style.fontSize = "25px";
+            this.changeDiv3.nativeElement.style.fontSize = "25px";
+            this.changeDiv4.nativeElement.style.fontSize = "25px";
+            this.changeDiv5.nativeElement.style.fontSize = "25px";
+            this.changeDiv6.nativeElement.style.fontSize = "25px";
+            this.changeDiv7.nativeElement.style.fontSize = "25px";
+            this.changeDiv8.nativeElement.style.fontSize = "25px";
+            this.changeDiv9.nativeElement.style.fontSize = "25px";
+            this.changeDiv10.nativeElement.style.fontSize = "25px";
+            this.changeDiv11.nativeElement.style.fontSize = "25px";
+            this.changeDiv12.nativeElement.style.fontSize = "25px";
+            this.changeDiv13.nativeElement.style.fontSize = "25px";
+            this.changeDiv14.nativeElement.style.fontSize = "25px";
+            this.changeDiv15.nativeElement.style.fontSize = "25px";
+            this.changeDiv16.nativeElement.style.fontSize = "25px";
+            this.changeDiv17.nativeElement.style.fontSize = "25px";
+            this.changeDiv18.nativeElement.style.fontSize = "25px";
+            this.changeDiv19.nativeElement.style.fontSize = "25px";
+            this.changeDiv20.nativeElement.style.fontSize = "25px";
+            this.changeDiv21.nativeElement.style.fontSize = "25px";
+            this.changeDiv22.nativeElement.style.fontSize = "25px";
+            this.changeDiv23.nativeElement.style.fontSize = "25px";
+            this.changeDiv24.nativeElement.style.fontSize = "25px";
+            this.changeDiv25.nativeElement.style.fontSize = "25px";
+            this.changeDiv26.nativeElement.style.fontSize = "25px";
+            this.changeDiv27.nativeElement.style.fontSize = "25px";
+            this.changeDiv28.nativeElement.style.fontSize = "25px";
+            this.changeDiv29.nativeElement.style.fontSize = "25px";
+        } else if (this.sliderValue == 5) {
+            this.changeDiv.nativeElement.style.fontSize = "50px";
+            this.changeDiv1.nativeElement.style.fontSize = "50px";
+            this.changeDiv2.nativeElement.style.fontSize = "50px";
+            this.changeDiv3.nativeElement.style.fontSize = "50px";
+            this.changeDiv4.nativeElement.style.fontSize = "50px";
+            this.changeDiv5.nativeElement.style.fontSize = "50px";
+        }
+    }
+    sliderFunction(e) {
+        //
+        this.sliderValue = e.value;
+        if (e.value == 1) {
+            this.changeDiv.nativeElement.style.fontSize = "15px";
+            this.changeDiv1.nativeElement.style.fontSize = "15px";
+            this.changeDiv2.nativeElement.style.fontSize = "15px";
+            this.changeDiv3.nativeElement.style.fontSize = "15px";
+            this.changeDiv4.nativeElement.style.fontSize = "15px";
+            this.changeDiv5.nativeElement.style.fontSize = "15px";
+            this.changeDiv6.nativeElement.style.fontSize = "15px";
+            this.changeDiv7.nativeElement.style.fontSize = "15px";
+            this.changeDiv8.nativeElement.style.fontSize = "15px";
+            this.changeDiv9.nativeElement.style.fontSize = "15px";
+            this.changeDiv10.nativeElement.style.fontSize = "15px";
+            this.changeDiv11.nativeElement.style.fontSize = "15px";
+            this.changeDiv12.nativeElement.style.fontSize = "15px";
+            this.changeDiv13.nativeElement.style.fontSize = "15px";
+            this.changeDiv14.nativeElement.style.fontSize = "15px";
+            this.changeDiv15.nativeElement.style.fontSize = "15px";
+            this.changeDiv16.nativeElement.style.fontSize = "15px";
+            this.changeDiv17.nativeElement.style.fontSize = "15px";
+            this.changeDiv18.nativeElement.style.fontSize = "15px";
+            this.changeDiv19.nativeElement.style.fontSize = "15px";
+            this.changeDiv20.nativeElement.style.fontSize = "15px";
+            this.changeDiv21.nativeElement.style.fontSize = "15px";
+            this.changeDiv22.nativeElement.style.fontSize = "15px";
+            this.changeDiv23.nativeElement.style.fontSize = "15px";
+            this.changeDiv24.nativeElement.style.fontSize = "15px";
+            this.changeDiv25.nativeElement.style.fontSize = "15px";
+            this.changeDiv26.nativeElement.style.fontSize = "15px";
+            this.changeDiv27.nativeElement.style.fontSize = "15px";
+            this.changeDiv28.nativeElement.style.fontSize = "15px";
+            this.changeDiv29.nativeElement.style.fontSize = "15px";
+        } else if (e.value == 2) {
+            this.changeDiv.nativeElement.style.fontSize = "20px";
+            this.changeDiv1.nativeElement.style.fontSize = "20px";
+            this.changeDiv2.nativeElement.style.fontSize = "20px";
+            this.changeDiv3.nativeElement.style.fontSize = "20px";
+            this.changeDiv4.nativeElement.style.fontSize = "20px";
+            this.changeDiv5.nativeElement.style.fontSize = "20px";
+            this.changeDiv6.nativeElement.style.fontSize = "20px";
+            this.changeDiv7.nativeElement.style.fontSize = "20px";
+            this.changeDiv8.nativeElement.style.fontSize = "20px";
+            this.changeDiv9.nativeElement.style.fontSize = "20px";
+            this.changeDiv10.nativeElement.style.fontSize = "20px";
+            this.changeDiv11.nativeElement.style.fontSize = "20px";
+            this.changeDiv12.nativeElement.style.fontSize = "20px";
+            this.changeDiv13.nativeElement.style.fontSize = "20px";
+            this.changeDiv14.nativeElement.style.fontSize = "20px";
+            this.changeDiv15.nativeElement.style.fontSize = "20px";
+            this.changeDiv16.nativeElement.style.fontSize = "20px";
+            this.changeDiv17.nativeElement.style.fontSize = "20px";
+            this.changeDiv18.nativeElement.style.fontSize = "20px";
+            this.changeDiv19.nativeElement.style.fontSize = "20px";
+            this.changeDiv20.nativeElement.style.fontSize = "20px";
+            this.changeDiv21.nativeElement.style.fontSize = "20px";
+            this.changeDiv22.nativeElement.style.fontSize = "20px";
+            this.changeDiv23.nativeElement.style.fontSize = "20px";
+            this.changeDiv24.nativeElement.style.fontSize = "20px";
+            this.changeDiv25.nativeElement.style.fontSize = "20px";
+            this.changeDiv26.nativeElement.style.fontSize = "20px";
+            this.changeDiv27.nativeElement.style.fontSize = "20px";
+            this.changeDiv28.nativeElement.style.fontSize = "20px";
+            this.changeDiv29.nativeElement.style.fontSize = "20px";
+        } else if (e.value == 3) {
+            this.changeDiv.nativeElement.style.fontSize = "22px";
+            this.changeDiv1.nativeElement.style.fontSize = "22px";
+            this.changeDiv2.nativeElement.style.fontSize = "22px";
+            this.changeDiv3.nativeElement.style.fontSize = "22px";
+            this.changeDiv4.nativeElement.style.fontSize = "22px";
+            this.changeDiv5.nativeElement.style.fontSize = "22px";
+            this.changeDiv6.nativeElement.style.fontSize = "22px";
+            this.changeDiv7.nativeElement.style.fontSize = "22px";
+            this.changeDiv8.nativeElement.style.fontSize = "22px";
+            this.changeDiv9.nativeElement.style.fontSize = "22px";
+            this.changeDiv10.nativeElement.style.fontSize = "22px";
+            this.changeDiv11.nativeElement.style.fontSize = "22px";
+            this.changeDiv12.nativeElement.style.fontSize = "22px";
+            this.changeDiv13.nativeElement.style.fontSize = "22px";
+            this.changeDiv14.nativeElement.style.fontSize = "22px";
+            this.changeDiv15.nativeElement.style.fontSize = "22px";
+            this.changeDiv16.nativeElement.style.fontSize = "22px";
+            this.changeDiv17.nativeElement.style.fontSize = "22px";
+            this.changeDiv18.nativeElement.style.fontSize = "22px";
+            this.changeDiv19.nativeElement.style.fontSize = "22px";
+            this.changeDiv20.nativeElement.style.fontSize = "22px";
+            this.changeDiv21.nativeElement.style.fontSize = "22px";
+            this.changeDiv22.nativeElement.style.fontSize = "22px";
+            this.changeDiv23.nativeElement.style.fontSize = "22px";
+            this.changeDiv24.nativeElement.style.fontSize = "22px";
+            this.changeDiv25.nativeElement.style.fontSize = "22px";
+            this.changeDiv26.nativeElement.style.fontSize = "22px";
+            this.changeDiv27.nativeElement.style.fontSize = "22px";
+            this.changeDiv28.nativeElement.style.fontSize = "22px";
+            this.changeDiv29.nativeElement.style.fontSize = "22px";
+        } else if (e.value == 4) {
+            this.changeDiv.nativeElement.style.fontSize = "25px";
+            this.changeDiv1.nativeElement.style.fontSize = "25px";
+            this.changeDiv2.nativeElement.style.fontSize = "25px";
+            this.changeDiv3.nativeElement.style.fontSize = "25px";
+            this.changeDiv4.nativeElement.style.fontSize = "25px";
+            this.changeDiv5.nativeElement.style.fontSize = "25px";
+            this.changeDiv6.nativeElement.style.fontSize = "25px";
+            this.changeDiv7.nativeElement.style.fontSize = "25px";
+            this.changeDiv8.nativeElement.style.fontSize = "25px";
+            this.changeDiv9.nativeElement.style.fontSize = "25px";
+            this.changeDiv10.nativeElement.style.fontSize = "25px";
+            this.changeDiv11.nativeElement.style.fontSize = "25px";
+            this.changeDiv12.nativeElement.style.fontSize = "25px";
+            this.changeDiv13.nativeElement.style.fontSize = "25px";
+            this.changeDiv14.nativeElement.style.fontSize = "25px";
+            this.changeDiv15.nativeElement.style.fontSize = "25px";
+            this.changeDiv16.nativeElement.style.fontSize = "25px";
+            this.changeDiv17.nativeElement.style.fontSize = "25px";
+            this.changeDiv18.nativeElement.style.fontSize = "25px";
+            this.changeDiv19.nativeElement.style.fontSize = "25px";
+            this.changeDiv20.nativeElement.style.fontSize = "25px";
+            this.changeDiv21.nativeElement.style.fontSize = "25px";
+            this.changeDiv22.nativeElement.style.fontSize = "25px";
+            this.changeDiv23.nativeElement.style.fontSize = "25px";
+            this.changeDiv24.nativeElement.style.fontSize = "25px";
+            this.changeDiv25.nativeElement.style.fontSize = "25px";
+            this.changeDiv26.nativeElement.style.fontSize = "25px";
+            this.changeDiv27.nativeElement.style.fontSize = "25px";
+            this.changeDiv28.nativeElement.style.fontSize = "25px";
+            this.changeDiv29.nativeElement.style.fontSize = "25px";
+        } else if (e.value == 5) {
+            this.changeDiv.nativeElement.style.fontSize = "50px";
+            this.changeDiv1.nativeElement.style.fontSize = "50px";
+            this.changeDiv2.nativeElement.style.fontSize = "50px";
+            this.changeDiv3.nativeElement.style.fontSize = "50px";
+            this.changeDiv4.nativeElement.style.fontSize = "50px";
+            this.changeDiv5.nativeElement.style.fontSize = "50px";
+        }
+    }
+    constructor(
+        private fb: FormBuilder,
+        private apiService: CPCQService,
+        private router: Router,
+        private formService: FirstForm,
+        private domSanitizer: DomSanitizer,
+        public dialog: MatDialog
+    ) {}
+    openDialog(i, j, id) {
+        var arr = [];
+        arr.push(this.attributes[i]);
+        arr.push(j);
+        arr.push(this.columnHeadings[j]);
+        arr.push(id);
+        const dialogRef = this.dialog.open(DialogFormComponent, {
+            data: {
+                animal: arr,
+                status: "form",
+            },
+            disableClose: true,
+        });
+        dialogRef.afterClosed().subscribe((result) => {
+            if (this.responsesArray[i][j][1] == "colorbold") {
+                this.unpackedCount = this.unpackedCount + 1;
+                this.responsesArray[i][j][1] = "greencolorbold";
+            }
+        });
+    }
+
+    openWordDialog(i) {
+        //
+        this.buttonClick = true;
+        const dialogRef = this.dialog.open(DialogFormComponent, {
+            data: {
+                animal: i,
+                status: "word",
+            },
+            disableClose: true,
+        });
+
+        dialogRef.afterClosed().subscribe((result) => {
+            this.wordDescription = result;
+        });
+    }
+
+    helpDialog(i) {
+        //
+        this.dialog.open(DialogFormComponent, {
+            data: {
+                animal: i,
+                status: "help",
+            },
+        });
+    }
+
+    keyPressFunc(e) {
+        //
+        var numbersList = ["1"];
+        for (let key in this.attitudeForm.value) {
+            if (numbersList.indexOf(this.attitudeForm.value[key]) == -1) {
+                //
+                return "Number";
+            }
+        }
+    }
+
+    getEmailError() {
+        return "Error";
+    }
+    responsesArray = [];
+    responsesCount = 0;
+    temp = [];
+    getResponses() {
+        this.apiService.getResponsesData().subscribe((res) => {
+            for (let key in res) {
+                this.temp = [];
+                for (let key1 in res[key]) {
+                    if (res[key][key1] == "colorbold") {
+                        this.responsesCount = this.responsesCount + 1;
+                    }
+                    if (res[key][key1][1] == "greencolorbold") {
+                        this.unpackedCount = this.unpackedCount + 1;
+                        console.log(this.unpackedCount);
+                    }
+
+                    this.temp.push(res[key][key1]);
+                }
+                this.responsesArray.push(this.temp);
+            }
+        });
+    }
+
+    getForm() {
+        var arr = [];
+        var arr1 = [];
+        var arr2 = [];
+        var i;
+        var attitudeResult = [];
+        var empathyResult = [];
+        var policyResult = [];
+        var profResult = [];
+        var teachingResult = [];
+        this.finalList = [[]];
+        this.boldList = [[]];
+        this.apiService.getFormData().subscribe((res) => {
+            for (let key in res) {
+                arr = [];
+                if (res[key]["topic"] == "Attitude") {
+                    attitudeResult.push("Attitude");
+                    arr.push("Attitude");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
+                    );
+                    attitudeResult.push(
+                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
+                    );
+                } else if (res[key]["topic"] == "Empathy") {
+                    empathyResult.push("Empathy");
+                    arr.push("Empathy");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
+                    );
+                    empathyResult.push(
+                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
+                    );
+                } else if (res[key]["topic"] == "Policy") {
+                    policyResult.push("Policy");
+                    arr.push("Policy");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
+                    );
+                    policyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
+                    );
+                    policyResult.push(
+                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
+                    );
+                } else if (res[key]["topic"] == "Professionalism") {
+                    profResult.push("Professionalism");
+                    arr.push("Professionalism");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+
+                    profResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    profResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+                    profResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+                    profResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    profResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+                    profResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+                } else if (res[key]["topic"] == "Teaching Practice") {
+                    arr.push("Teaching Pracice");
+                    arr.push(res[key]["culturalDestructiveness"]);
+                    arr.push(res[key]["culturalIncapacity"]);
+                    arr.push(res[key]["culturalBlindness"]);
+                    arr.push(res[key]["culturalPreCompetence"]);
+                    arr.push(res[key]["culturalCompetence"]);
+                    arr.push(res[key]["culturalProficiency"]);
+                    teachingResult.push("Teaching Practice");
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
+                    );
+                    teachingResult.push(
+                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
+                    );
+                }
+
+                this.boldList.push(arr);
+            }
+            this.finalList.push(attitudeResult);
+            this.finalList.push(empathyResult);
+            this.finalList.push(policyResult);
+            this.finalList.push(profResult);
+            this.finalList.push(teachingResult);
+        });
+        this.finalList.splice(0, 1);
+        this.boldList.splice(0, 1);
+        // this.getAllIndexes(this.finalList,1)
+    }
+
+    emoji: any;
+    changeEmojiSize(data) {
+        document.getElementById("angry").style.height = "30px";
+        document.getElementById("angry").style.width = "30px";
+        document.getElementById("sad").style.height = "30px";
+        document.getElementById("sad").style.width = "30px";
+        document.getElementById("neutral").style.height = "30px";
+        document.getElementById("neutral").style.width = "30px";
+        document.getElementById("smile").style.height = "30px";
+        document.getElementById("smile").style.width = "30px";
+        document.getElementById("heart").style.height = "30px";
+        document.getElementById("heart").style.width = "30px";
+        document.getElementById(data).style.height = "50px";
+        document.getElementById(data).style.width = "50px";
+
+        this.emoji = data;
+    }
+
+    thumbs: any;
+    changeThumbsSize(data) {
+        document.getElementById("thumbsup").style.height = "30px";
+        document.getElementById("thumbsup").style.width = "30px";
+        document.getElementById("thumbsdown").style.height = "30px";
+        document.getElementById("thumbsdown").style.width = "30px";
+
+        document.getElementById(data).style.height = "50px";
+        document.getElementById(data).style.width = "50px";
+        this.thumbs = data;
+    }
+    finalSubmit() {
+        this.finalFeedbackForm.value["q6"] = this.thumbs;
+        this.finalFeedbackForm.value["q7"] = this.emoji;
+
+        this.endTime = new Date();
+
+        this.durationTime = (this.endTime - this.startTime) / 1000;
+        this.durationTime = this.durationTime / 60;
+
+        this.apiService.patchStatus("finalfeedbackstatus").subscribe((res) => {});
+
+        this.apiService.postFeedbackForm(this.finalFeedbackForm.value).subscribe(
+            (res) => {
+                this.apiService.changeCPCQStatus().subscribe((res1) => {
+                    Swal.fire({
+                        text: "Submitted",
+                        icon: "success",
+                    }).then((res) => {
+                        if (res["isConfirmed"]) {
+                            this.router.navigateByUrl("/result");
+                        }
+                    });
+                });
+            },
+            (err) => {}
+        );
+    }
+    ngOnInit(): void {
+        this.getResponses();
+        this.startTime = new Date();
+        this.finalFeedbackForm = this.fb.group({
+            q1: [""],
+            q2: [""],
+            q3: [""],
+            q4: [""],
+            q5: [""],
+            q6: [""],
+            q7: [""],
+        });
+
+        this.apiService.attitudeData().subscribe(
+            (res) => {
+                //
+                this.attitude = res[0];
+                //
+            },
+            (err) => {}
+        );
+
+        this.apiService.empathyData().subscribe(
+            (res) => {
+                //
+                this.empathy = res[0];
+                //
+            },
+            (err) => {}
+        );
+
+        this.apiService.policyData().subscribe(
+            (res) => {
+                this.policy = res[0];
+            },
+            (err) => {}
+        );
+
+        this.apiService.professionalismData().subscribe(
+            (res) => {
+                this.professionalism = res[0];
+            },
+            (err) => {}
+        );
+
+        this.apiService.teachingData().subscribe(
+            (res) => {
+                this.teachingPractice = res[0];
+            },
+            (err) => {}
+        );
+
+        this.attitudeForm = this.fb.group({
+            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            description: ["", [Validators.required]],
+        });
+
+        this.empathyForm = this.fb.group({
+            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        });
+
+        this.policyForm = this.fb.group({
+            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        });
+
+        var arr = [];
+        var arr1 = [];
+        var arr2 = [];
+        var i;
+        for (var j = 0; j < 5; j++) {
+            arr = [];
+            arr1 = [];
+            arr2 = [];
+            i = 0;
+            while (i < 6) {
+                var item1 = Math.floor(Math.random() * (7 - 1) + 1);
+                if (arr1.indexOf(item1) == -1) {
+                    if (i == 0) {
+                        arr.push(this.attributes[j]);
+                        arr.push(this.rowLetters[j][i] + ". " + item1);
+                        arr1.push(item1);
+                        if (arr1[arr1.length - 1] > 2) {
+                            //
+                            arr2.push("True");
+                        } else {
+                            arr2.push("False");
+                        }
+                    } else {
+                        arr.push(this.rowLetters[j][i] + ". " + item1);
+                        arr1.push(item1);
+                        if (i == 1) {
+                            if (arr1[arr1.length - 1] > 3) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        } else if (i == 2) {
+                            if (arr1[arr1.length - 1] > 4 || arr1[arr1.length - 1] == 1) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        } else if (i == 3) {
+                            if (arr1[arr1.length - 1] > 5 || arr1[arr1.length - 1] < 4) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        } else if (i == 4) {
+                            if (arr1[arr1.length - 1] < 4) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        } else if (i == 5) {
+                            if (arr1[arr1.length - 1] < 5) {
+                                arr2.push("True");
+                            } else {
+                                arr2.push("False");
+                            }
+                        }
+                    }
+                    i = i + 1;
+                } else {
+                    continue;
+                }
+            }
+            this.formValues.push(arr);
+            this.boldList.push(arr1);
+            this.randomList.push(arr2);
+        }
+        this.boldList.splice(0, 1);
+        this.randomList.splice(0, 1);
+
+        this.getAllIndexes(this.randomList, "True");
+        this.loaded = true;
+    }
+
+    getAllIndexes(arr, val) {
+        var indexes = [];
+        var i = -1;
+        for (var i = 0; i < arr.length; i++) {
+            for (var j = 0; j < arr[i].length; j++) {
+                if (arr[i][j] == "True") {
+                    var arr1 = [];
+                    arr1.push(i);
+                    arr1.push(j);
+                    indexes.push(arr1);
+                }
+            }
+        }
+
+        var arr1 = [];
+        for (var i = 0; i < indexes.length; i++) {
+            arr1.push(i);
+        }
+        var ranNums = [];
+        var i = arr1.length;
+        var j = 0;
+        var count = 0;
+        while (i--) {
+            if (count < 5) {
+                j = Math.floor(Math.random() * (i + 1));
+                ranNums.push(arr1[j]);
+                arr1.splice(j, 1);
+                count = count + 1;
+            } else {
+                break;
+            }
+        }
+
+        //
+        for (var i = 0; i < this.boldList.length; i++) {
+            var temp = [];
+            for (var j = 0; j < 6; j++) {
+                temp.push("False");
+            }
+            this.finalList1.push(temp);
+        }
+
+        for (var i = 0; i < ranNums.length; i++) {
+            var item = indexes[ranNums[i]];
+
+            this.finalList1[item[0]][item[1]] = "True";
+        }
+        // this.finalList1.splice(0,1)
+    }
+    preSurvey() {
+        this.router.navigateByUrl("/preSurvey");
+    }
+
+    nextButton() {
+        if (this.selectedIndex == 0) {
+            this.selectedIndex = this.selectedIndex + 1;
+            return;
+        }
+        if (this.selectedIndex == 7) {
+            this.router.navigateByUrl("/dashboard");
+            return;
+        }
+
+        var numberList = [];
+        var flag = true;
+        for (let key in this.attitudeForm.value) {
+            if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
+                flag = false;
+                Swal.fire({
+                    text: "Please enter values from 1 through 6 only.",
+                    icon: "warning",
+                }).then((res) => {});
+                break;
+            }
+            if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
+                numberList.push(this.attitudeForm.value[key]);
+            } else {
+                flag = false;
+                Swal.fire({
+                    text: "The inputs have been repeated. Please enter values from 1 through 6.",
+                    icon: "warning",
+                }).then((res) => {});
+                break;
+            }
+        }
+        if (!this.buttonClick) {
+            flag = false;
+            Swal.fire({
+                text: "Click on the word '" + this.attributes[this.selectedIndex - 1] + "' and respond to the prompt.",
+                icon: "warning",
+            }).then((res) => {});
+        }
+        if (flag) {
+            if (this.selectedIndex == 7) {
+                this.router.navigateByUrl("/postSurvey");
+            }
+            this.sliderFunction1();
+            var formData = {};
+            formData["topic"] = this.attributes[this.selectedIndex - 1];
+            if (this.attributes[this.selectedIndex - 1] == "Attitude") {
+                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalCompetence"] = "F. " + this.attitudeForm.value["F"];
+                formData["culturalProficiency"] = "E. " + this.attitudeForm.value["E"];
+            } else if (this.attributes[this.selectedIndex - 1] == "Empathy") {
+                formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalBlindness"] = "F. " + this.attitudeForm.value["F"];
+                formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalCompetence"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalProficiency"] = "C. " + this.attitudeForm.value["C"];
+            } else if (this.attributes[this.selectedIndex - 1] == "Policy") {
+                formData["culturalDestructiveness"] = "F. " + this.attitudeForm.value["F"];
+                formData["culturalIncapacity"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalCompetence"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalProficiency"] = "A. " + this.attitudeForm.value["A"];
+            } else if (this.attributes[this.selectedIndex - 1] == "Professionalism") {
+                formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalCompetence"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+            } else if (this.attributes[this.selectedIndex - 1] == "Teaching Practice") {
+                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+            }
+
+            this.endTime = new Date();
+
+            this.durationTime = (this.endTime - this.startTime) / 1000;
+            this.durationTime = this.durationTime / 60;
+
+            formData["description"] = this.wordDescription;
+            formData["duration"] = this.durationTime;
+            this.apiService.postFormData(formData).subscribe(
+                (res) => {
+                    //
+                },
+                (err) => {}
+            );
+            // this.getForm();
+            this.selectedIndex = this.selectedIndex + 1;
+            this.buttonClick = false;
+            this.startTime = new Date();
+            this.attitudeForm = this.fb.group({
+                A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+                F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+            });
+        }
+    }
+
+    postSurvey() {
+        this.router.navigateByUrl("/postSurvey");
+    }
+
+    submitForm1() {
+        if (this.unpackedCount >= 5) {
+            this.endTime = new Date();
+
+            this.durationTime = (this.endTime - this.startTime) / 1000;
+            this.durationTime = this.durationTime / 60;
+            this.apiService.patchStatus("cpcqstatus").subscribe((res) => {
+                Swal.fire({
+                    text: "Submitted",
+                    icon: "success",
+                }).then((res) => {
+                    if (res["isConfirmed"]) {
+                        // this.getForm()
+                        // this.selectedIndex = this.selectedIndex + 1;
+                        this.router.navigateByUrl("/finalFeedback");
+                    }
+                });
+            });
+        } else {
+            Swal.fire({
+                text: "Please click on all the yellow boxes and answer the questions in the prompt.",
+                icon: "warning",
+            }).then((res) => {});
+        }
+    }
+
+    submitForm() {
+        if (this.selectedIndex >= this.responsesCount) {
+            var numberList = [];
+            var flag = false;
+
+            for (let key in this.attitudeForm.value) {
+                if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
+                    flag = true;
+                    Swal.fire({
+                        text: "Please enter values from 1 through 6 only.",
+                        icon: "warning",
+                    }).then((res) => {});
+                    break;
+                }
+                if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
+                    numberList.push(this.attitudeForm.value[key]);
+                } else {
+                    flag = true;
+                    Swal.fire({
+                        text: "The inputs have been repeated. Please enter values from 1 through 6.",
+                        icon: "warning",
+                    }).then((res) => {});
+                    break;
+                }
+            }
+            if (!this.buttonClick) {
+                flag = true;
+                Swal.fire({
+                    text:
+                        "Click on the word '" +
+                        this.attributes[this.selectedIndex - 1] +
+                        "' and respond to the prompt.",
+                    icon: "warning",
+                }).then((res) => {});
+            }
+            if (!flag) {
+                //
+                var formData = {};
+
+                formData["topic"] = this.attributes[this.selectedIndex - 1];
+                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+                formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
+                formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
+                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+
+                formData["description"] = this.wordDescription;
+                this.endTime = new Date();
+
+                this.durationTime = (this.endTime - this.startTime) / 1000;
+                this.durationTime = this.durationTime / 60;
+
+                formData["duration"] = this.durationTime;
+                this.apiService.postFormData(formData).subscribe(
+                    (res) => {
+                        //
+                        this.apiService.patchStatus("responsesstatus").subscribe((res) => {
+                            Swal.fire({
+                                text: "Submitted",
+                                icon: "success",
+                            }).then((res) => {
+                                if (res["isConfirmed"]) {
+                                    // this.getForm()
+                                    this.getResponses();
+
+                                    this.selectedIndex = this.selectedIndex + 1;
+                                    this.startTime = new Date();
+                                }
+                            });
+                        });
+                    },
+                    (err) => {}
+                );
+            }
+        }
+    }
+
+    submit() {
+        //
+        var tempDict;
+        this.responseList = [];
+        for (let key in this.firstForm.value) {
+            tempDict = {};
+            tempDict["question"] = key;
+            tempDict["response"] = this.firstForm.value[key];
+            this.responseList.push(tempDict);
+        }
+        //
+
+        this.formService.submitResponse(this.responseList).subscribe(
+            (res) => {
+                //
+                Swal.fire({
+                    text: "Submitted",
+                    icon: "success",
+                });
+                this.router.navigateByUrl("/game");
+            },
+            (err) => {
+                Swal.fire({
+                    text: "Duplicate Entries",
+                    icon: "warning",
+                });
+            }
+        );
+    }
+
+    title = "micRecorder";
+    //Lets declare Record OBJ
+    record;
+    //Will use this flag for toggeling recording
+    recording = false;
+    //URL of Blob
+    url;
+    error;
+    sanitize(url: string) {
+        return this.domSanitizer.bypassSecurityTrustUrl(url);
+    }
+    /**
+     * Start recording.
+     */
+    initiateRecording() {
+        this.recording = true;
+        let mediaConstraints = {
+            video: false,
+            audio: true,
+        };
+        navigator.mediaDevices
+            .getUserMedia(mediaConstraints)
+            .then(this.successCallback.bind(this), this.errorCallback.bind(this));
+    }
+    /**
+     * Will be called automatically.
+     */
+    successCallback(stream) {
+        var options = {
+            mimeType: "audio/wav",
+            numberOfAudioChannels: 1,
+            // sampleRate: 16000,
+        };
+        //Start Actuall Recording
+        var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
+        this.record = new StereoAudioRecorder(stream, options);
+        this.record.record();
+    }
+    /**
+     * Stop recording.
+     */
+    stopRecording() {
+        this.recording = false;
+        this.record.stop(this.processRecording.bind(this));
+    }
+    /**
+     * processRecording Do what ever you want with blob
+     * @param  {any} blob Blog
+     */
+    processRecording(blob) {
+        this.url = URL.createObjectURL(blob);
+        //
+        //
+    }
+    /**
+     * Process Error.
+     */
+    errorCallback(error) {
+        this.error = "Can not play audio in your browser";
+    }
+}
diff --git a/src/app/cpcq-form/cpcq-form.component.ts b/src/app/cpcq-form/cpcq-form.component.ts
deleted file mode 100644
index be2c494..0000000
--- a/src/app/cpcq-form/cpcq-form.component.ts
+++ /dev/null
@@ -1,1225 +0,0 @@
-import { Component, OnInit, Inject } from '@angular/core';
-import {AfterViewInit, ElementRef, ViewChild} from '@angular/core';
-import { Router } from '@angular/router';
-import { FirstForm } from "../../services/firstForm.service";
-import { FormBuilder, FormGroup,Validators } from '@angular/forms';
-import Swal from 'sweetalert2';
-import {ThemePalette} from '@angular/material/core';
-import {ProgressBarMode} from '@angular/material/progress-bar';
-declare var $: any;
-import * as RecordRTC from 'recordrtc';
-import { DomSanitizer } from '@angular/platform-browser';
-import {MatDialog, MAT_DIALOG_DATA} from '@angular/material/dialog';
-import {DialogFormComponent} from './dialog-form/dialog-form.component'
-
-import {CPCQService} from '../../services/cpcq.service';
-
-export interface DialogData {
-  animal: 'panda' | 'unicorn' | 'lion';
-  status;
-  result;
-}
-@Component({
-  selector: 'app-cpcq-form',
-  templateUrl: './cpcq-form.component.html',
-  styleUrls: ['./cpcq-form.component.css']
-})
-export class CpcqFormComponent implements OnInit, AfterViewInit {
-  firstForm: FormGroup;
-  responseList:any ;
-  loaded = false;
-
-  questionArray = [["Enter First Name","text"],["Enter Last Name","text"],["Enter Age","number"]];
-  statusCheck = false;
-  buttonClick = false;
-
-  sliderValue = 0;
-
-  selectedIndex = 0;
-
-  color: ThemePalette = 'primary';
-  mode: ProgressBarMode = 'buffer';
-  value1 = 50;
-  bufferValue = 100;
-
-  formValues = [];
-  attributes = ["Attitude","Empathy","Policy","Professionalism","Teaching Practice"];
-  columnHeadings = ["culturalDestructivenessresponse","culturalIncapacityresponse","culturalBlindnessresponse","culturalPreCompetenceresponse","culturalCompetenceresponse","culturalProficiencyresponse"]
-  rowLetters = [["D",'C','B','A','F','E'],['E','A','F','D','B','C'],['F','E','B','C','D','A'],['E','A','B','D','C','F'],['D','C','B','E','A','F']];
-  boldList = [[]];
-  randomList = [[]];
-  finalList=[[]];
-  finalList1 = [];
-  attitudeForm: FormGroup;
-  empathyForm: FormGroup;
-  policyForm: FormGroup;
-
-  finalFeedbackForm:FormGroup;
-
-
-
-
-  //arrays of data getting from the backend
-
-  attitude:any;
-  empathy :any;
-  policy:any;
-  professionalism:any;
-  teachingPractice:any;
-  wordDescription:any;
-  unpackedCount = 0;
-
-  startTime: any;
-  endTime: any;
-  durationTime : any;
-
-  @ViewChild('changeDiv') changeDiv: ElementRef;
-  @ViewChild('changeDiv1') changeDiv1: ElementRef;
-  @ViewChild('changeDiv2') changeDiv2: ElementRef;
-  @ViewChild('changeDiv3') changeDiv3: ElementRef;
-  @ViewChild('changeDiv4') changeDiv4: ElementRef;
-  @ViewChild('changeDiv5') changeDiv5: ElementRef;
-  @ViewChild('changeDiv6') changeDiv6: ElementRef;
-  @ViewChild('changeDiv7') changeDiv7: ElementRef;
-  @ViewChild('changeDiv8') changeDiv8: ElementRef;
-  @ViewChild('changeDiv9') changeDiv9: ElementRef;
-  @ViewChild('changeDiv10') changeDiv10: ElementRef;
-  @ViewChild('changeDiv11') changeDiv11: ElementRef;
-  @ViewChild('changeDiv12') changeDiv12: ElementRef;
-  @ViewChild('changeDiv13') changeDiv13: ElementRef;
-  @ViewChild('changeDiv14') changeDiv14: ElementRef;
-  @ViewChild('changeDiv15') changeDiv15: ElementRef;
-  @ViewChild('changeDiv16') changeDiv16: ElementRef;
-  @ViewChild('changeDiv17') changeDiv17: ElementRef;
-  @ViewChild('changeDiv18') changeDiv18: ElementRef;
-  @ViewChild('changeDiv19') changeDiv19: ElementRef;
-  @ViewChild('changeDiv20') changeDiv20: ElementRef;
-  @ViewChild('changeDiv21') changeDiv21: ElementRef;
-  @ViewChild('changeDiv22') changeDiv22: ElementRef;
-  @ViewChild('changeDiv23') changeDiv23: ElementRef;
-  @ViewChild('changeDiv24') changeDiv24: ElementRef;
-  @ViewChild('changeDiv25') changeDiv25: ElementRef;
-  @ViewChild('changeDiv26') changeDiv26: ElementRef;
-  @ViewChild('changeDiv27') changeDiv27: ElementRef;
-  @ViewChild('changeDiv28') changeDiv28: ElementRef;
-  @ViewChild('changeDiv29') changeDiv29: ElementRef;
-
-
-
-
-
-
-
-
-
-    ngAfterViewInit() {
-        
-
-
-    }
-
-    sliderFunction1(){
-      if(this.sliderValue == 1){
-        this.changeDiv.nativeElement.style.fontSize = "15px";
-        this.changeDiv1.nativeElement.style.fontSize = "15px";
-        this.changeDiv2.nativeElement.style.fontSize = "15px";
-        this.changeDiv3.nativeElement.style.fontSize = "15px";
-        this.changeDiv4.nativeElement.style.fontSize = "15px";
-        this.changeDiv5.nativeElement.style.fontSize = "15px";
-        this.changeDiv6.nativeElement.style.fontSize = "15px";
-        this.changeDiv7.nativeElement.style.fontSize = "15px";
-        this.changeDiv8.nativeElement.style.fontSize = "15px";
-        this.changeDiv9.nativeElement.style.fontSize = "15px";
-        this.changeDiv10.nativeElement.style.fontSize = "15px";
-        this.changeDiv11.nativeElement.style.fontSize = "15px";
-        this.changeDiv12.nativeElement.style.fontSize = "15px";
-        this.changeDiv13.nativeElement.style.fontSize = "15px";
-        this.changeDiv14.nativeElement.style.fontSize = "15px";
-        this.changeDiv15.nativeElement.style.fontSize = "15px";
-        this.changeDiv16.nativeElement.style.fontSize = "15px";
-        this.changeDiv17.nativeElement.style.fontSize = "15px";
-        this.changeDiv18.nativeElement.style.fontSize = "15px";
-        this.changeDiv19.nativeElement.style.fontSize = "15px";
-        this.changeDiv20.nativeElement.style.fontSize = "15px";
-        this.changeDiv21.nativeElement.style.fontSize = "15px";
-        this.changeDiv22.nativeElement.style.fontSize = "15px";
-        this.changeDiv23.nativeElement.style.fontSize = "15px";
-        this.changeDiv24.nativeElement.style.fontSize = "15px";
-        this.changeDiv25.nativeElement.style.fontSize = "15px";
-        this.changeDiv26.nativeElement.style.fontSize = "15px";
-        this.changeDiv27.nativeElement.style.fontSize = "15px";
-        this.changeDiv28.nativeElement.style.fontSize = "15px";
-        this.changeDiv29.nativeElement.style.fontSize = "15px";
-
-        }
-        else if(this.sliderValue == 2){
-        this.changeDiv.nativeElement.style.fontSize = "20px";
-        this.changeDiv1.nativeElement.style.fontSize = "20px";
-        this.changeDiv2.nativeElement.style.fontSize = "20px";
-        this.changeDiv3.nativeElement.style.fontSize = "20px";
-        this.changeDiv4.nativeElement.style.fontSize = "20px";
-        this.changeDiv5.nativeElement.style.fontSize = "20px";
-        this.changeDiv6.nativeElement.style.fontSize = "20px";
-        this.changeDiv7.nativeElement.style.fontSize = "20px";
-        this.changeDiv8.nativeElement.style.fontSize = "20px";
-        this.changeDiv9.nativeElement.style.fontSize = "20px";
-        this.changeDiv10.nativeElement.style.fontSize = "20px";
-        this.changeDiv11.nativeElement.style.fontSize = "20px";
-        this.changeDiv12.nativeElement.style.fontSize = "20px";
-        this.changeDiv13.nativeElement.style.fontSize = "20px";
-        this.changeDiv14.nativeElement.style.fontSize = "20px";
-        this.changeDiv15.nativeElement.style.fontSize = "20px";
-        this.changeDiv16.nativeElement.style.fontSize = "20px";
-        this.changeDiv17.nativeElement.style.fontSize = "20px";
-        this.changeDiv18.nativeElement.style.fontSize = "20px";
-        this.changeDiv19.nativeElement.style.fontSize = "20px";
-        this.changeDiv20.nativeElement.style.fontSize = "20px";
-        this.changeDiv21.nativeElement.style.fontSize = "20px";
-        this.changeDiv22.nativeElement.style.fontSize = "20px";
-        this.changeDiv23.nativeElement.style.fontSize = "20px";
-        this.changeDiv24.nativeElement.style.fontSize = "20px";
-        this.changeDiv25.nativeElement.style.fontSize = "20px";
-        this.changeDiv26.nativeElement.style.fontSize = "20px";
-        this.changeDiv27.nativeElement.style.fontSize = "20px";
-        this.changeDiv28.nativeElement.style.fontSize = "20px";
-        this.changeDiv29.nativeElement.style.fontSize = "20px";
-        }
-        else if(this.sliderValue == 3){
-          this.changeDiv.nativeElement.style.fontSize = "22px";
-          this.changeDiv1.nativeElement.style.fontSize = "22px";
-          this.changeDiv2.nativeElement.style.fontSize = "22px";
-          this.changeDiv3.nativeElement.style.fontSize = "22px";
-          this.changeDiv4.nativeElement.style.fontSize = "22px";
-          this.changeDiv5.nativeElement.style.fontSize = "22px";
-          this.changeDiv6.nativeElement.style.fontSize = "22px";
-          this.changeDiv7.nativeElement.style.fontSize = "22px";
-          this.changeDiv8.nativeElement.style.fontSize = "22px";
-          this.changeDiv9.nativeElement.style.fontSize = "22px";
-          this.changeDiv10.nativeElement.style.fontSize = "22px";
-          this.changeDiv11.nativeElement.style.fontSize = "22px";
-          this.changeDiv12.nativeElement.style.fontSize = "22px";
-          this.changeDiv13.nativeElement.style.fontSize = "22px";
-          this.changeDiv14.nativeElement.style.fontSize = "22px";
-          this.changeDiv15.nativeElement.style.fontSize = "22px";
-          this.changeDiv16.nativeElement.style.fontSize = "22px";
-          this.changeDiv17.nativeElement.style.fontSize = "22px";
-          this.changeDiv18.nativeElement.style.fontSize = "22px";
-          this.changeDiv19.nativeElement.style.fontSize = "22px";
-          this.changeDiv20.nativeElement.style.fontSize = "22px";
-          this.changeDiv21.nativeElement.style.fontSize = "22px";
-          this.changeDiv22.nativeElement.style.fontSize = "22px";
-          this.changeDiv23.nativeElement.style.fontSize = "22px";
-          this.changeDiv24.nativeElement.style.fontSize = "22px";
-          this.changeDiv25.nativeElement.style.fontSize = "22px";
-          this.changeDiv26.nativeElement.style.fontSize = "22px";
-          this.changeDiv27.nativeElement.style.fontSize = "22px";
-          this.changeDiv28.nativeElement.style.fontSize = "22px";
-          this.changeDiv29.nativeElement.style.fontSize = "22px";
-        }
-        else if(this.sliderValue == 4){
-        this.changeDiv.nativeElement.style.fontSize = "25px";
-        this.changeDiv1.nativeElement.style.fontSize = "25px";
-        this.changeDiv2.nativeElement.style.fontSize = "25px";
-        this.changeDiv3.nativeElement.style.fontSize = "25px";
-        this.changeDiv4.nativeElement.style.fontSize = "25px";
-        this.changeDiv5.nativeElement.style.fontSize = "25px";
-        this.changeDiv6.nativeElement.style.fontSize = "25px";
-        this.changeDiv7.nativeElement.style.fontSize = "25px";
-        this.changeDiv8.nativeElement.style.fontSize = "25px";
-        this.changeDiv9.nativeElement.style.fontSize = "25px";
-        this.changeDiv10.nativeElement.style.fontSize = "25px";
-        this.changeDiv11.nativeElement.style.fontSize = "25px";
-        this.changeDiv12.nativeElement.style.fontSize = "25px";
-        this.changeDiv13.nativeElement.style.fontSize = "25px";
-        this.changeDiv14.nativeElement.style.fontSize = "25px";
-        this.changeDiv15.nativeElement.style.fontSize = "25px";
-        this.changeDiv16.nativeElement.style.fontSize = "25px";
-        this.changeDiv17.nativeElement.style.fontSize = "25px";
-        this.changeDiv18.nativeElement.style.fontSize = "25px";
-        this.changeDiv19.nativeElement.style.fontSize = "25px";
-        this.changeDiv20.nativeElement.style.fontSize = "25px";
-        this.changeDiv21.nativeElement.style.fontSize = "25px";
-        this.changeDiv22.nativeElement.style.fontSize = "25px";
-        this.changeDiv23.nativeElement.style.fontSize = "25px";
-        this.changeDiv24.nativeElement.style.fontSize = "25px";
-        this.changeDiv25.nativeElement.style.fontSize = "25px";
-        this.changeDiv26.nativeElement.style.fontSize = "25px";
-        this.changeDiv27.nativeElement.style.fontSize = "25px";
-        this.changeDiv28.nativeElement.style.fontSize = "25px";
-        this.changeDiv29.nativeElement.style.fontSize = "25px";
-        }
-        else if(this.sliderValue == 5){
-        this.changeDiv.nativeElement.style.fontSize = "50px";
-        this.changeDiv1.nativeElement.style.fontSize = "50px";
-        this.changeDiv2.nativeElement.style.fontSize = "50px";
-        this.changeDiv3.nativeElement.style.fontSize = "50px";
-        this.changeDiv4.nativeElement.style.fontSize = "50px";
-        this.changeDiv5.nativeElement.style.fontSize = "50px";
-        
-        }
-    }
-    sliderFunction(e){
-      // 
-      this.sliderValue = e.value;
-      if(e.value == 1){
-        this.changeDiv.nativeElement.style.fontSize = "15px";
-        this.changeDiv1.nativeElement.style.fontSize = "15px";
-        this.changeDiv2.nativeElement.style.fontSize = "15px";
-        this.changeDiv3.nativeElement.style.fontSize = "15px";
-        this.changeDiv4.nativeElement.style.fontSize = "15px";
-        this.changeDiv5.nativeElement.style.fontSize = "15px";
-        this.changeDiv6.nativeElement.style.fontSize = "15px";
-        this.changeDiv7.nativeElement.style.fontSize = "15px";
-        this.changeDiv8.nativeElement.style.fontSize = "15px";
-        this.changeDiv9.nativeElement.style.fontSize = "15px";
-        this.changeDiv10.nativeElement.style.fontSize = "15px";
-        this.changeDiv11.nativeElement.style.fontSize = "15px";
-        this.changeDiv12.nativeElement.style.fontSize = "15px";
-        this.changeDiv13.nativeElement.style.fontSize = "15px";
-        this.changeDiv14.nativeElement.style.fontSize = "15px";
-        this.changeDiv15.nativeElement.style.fontSize = "15px";
-        this.changeDiv16.nativeElement.style.fontSize = "15px";
-        this.changeDiv17.nativeElement.style.fontSize = "15px";
-        this.changeDiv18.nativeElement.style.fontSize = "15px";
-        this.changeDiv19.nativeElement.style.fontSize = "15px";
-        this.changeDiv20.nativeElement.style.fontSize = "15px";
-        this.changeDiv21.nativeElement.style.fontSize = "15px";
-        this.changeDiv22.nativeElement.style.fontSize = "15px";
-        this.changeDiv23.nativeElement.style.fontSize = "15px";
-        this.changeDiv24.nativeElement.style.fontSize = "15px";
-        this.changeDiv25.nativeElement.style.fontSize = "15px";
-        this.changeDiv26.nativeElement.style.fontSize = "15px";
-        this.changeDiv27.nativeElement.style.fontSize = "15px";
-        this.changeDiv28.nativeElement.style.fontSize = "15px";
-        this.changeDiv29.nativeElement.style.fontSize = "15px";
-
-        }
-        else if(e.value == 2){
-        this.changeDiv.nativeElement.style.fontSize = "20px";
-        this.changeDiv1.nativeElement.style.fontSize = "20px";
-        this.changeDiv2.nativeElement.style.fontSize = "20px";
-        this.changeDiv3.nativeElement.style.fontSize = "20px";
-        this.changeDiv4.nativeElement.style.fontSize = "20px";
-        this.changeDiv5.nativeElement.style.fontSize = "20px";
-        this.changeDiv6.nativeElement.style.fontSize = "20px";
-        this.changeDiv7.nativeElement.style.fontSize = "20px";
-        this.changeDiv8.nativeElement.style.fontSize = "20px";
-        this.changeDiv9.nativeElement.style.fontSize = "20px";
-        this.changeDiv10.nativeElement.style.fontSize = "20px";
-        this.changeDiv11.nativeElement.style.fontSize = "20px";
-        this.changeDiv12.nativeElement.style.fontSize = "20px";
-        this.changeDiv13.nativeElement.style.fontSize = "20px";
-        this.changeDiv14.nativeElement.style.fontSize = "20px";
-        this.changeDiv15.nativeElement.style.fontSize = "20px";
-        this.changeDiv16.nativeElement.style.fontSize = "20px";
-        this.changeDiv17.nativeElement.style.fontSize = "20px";
-        this.changeDiv18.nativeElement.style.fontSize = "20px";
-        this.changeDiv19.nativeElement.style.fontSize = "20px";
-        this.changeDiv20.nativeElement.style.fontSize = "20px";
-        this.changeDiv21.nativeElement.style.fontSize = "20px";
-        this.changeDiv22.nativeElement.style.fontSize = "20px";
-        this.changeDiv23.nativeElement.style.fontSize = "20px";
-        this.changeDiv24.nativeElement.style.fontSize = "20px";
-        this.changeDiv25.nativeElement.style.fontSize = "20px";
-        this.changeDiv26.nativeElement.style.fontSize = "20px";
-        this.changeDiv27.nativeElement.style.fontSize = "20px";
-        this.changeDiv28.nativeElement.style.fontSize = "20px";
-        this.changeDiv29.nativeElement.style.fontSize = "20px";
-        }
-        else if(e.value == 3){
-          this.changeDiv.nativeElement.style.fontSize = "22px";
-          this.changeDiv1.nativeElement.style.fontSize = "22px";
-          this.changeDiv2.nativeElement.style.fontSize = "22px";
-          this.changeDiv3.nativeElement.style.fontSize = "22px";
-          this.changeDiv4.nativeElement.style.fontSize = "22px";
-          this.changeDiv5.nativeElement.style.fontSize = "22px";
-          this.changeDiv6.nativeElement.style.fontSize = "22px";
-          this.changeDiv7.nativeElement.style.fontSize = "22px";
-          this.changeDiv8.nativeElement.style.fontSize = "22px";
-          this.changeDiv9.nativeElement.style.fontSize = "22px";
-          this.changeDiv10.nativeElement.style.fontSize = "22px";
-          this.changeDiv11.nativeElement.style.fontSize = "22px";
-          this.changeDiv12.nativeElement.style.fontSize = "22px";
-          this.changeDiv13.nativeElement.style.fontSize = "22px";
-          this.changeDiv14.nativeElement.style.fontSize = "22px";
-          this.changeDiv15.nativeElement.style.fontSize = "22px";
-          this.changeDiv16.nativeElement.style.fontSize = "22px";
-          this.changeDiv17.nativeElement.style.fontSize = "22px";
-          this.changeDiv18.nativeElement.style.fontSize = "22px";
-          this.changeDiv19.nativeElement.style.fontSize = "22px";
-          this.changeDiv20.nativeElement.style.fontSize = "22px";
-          this.changeDiv21.nativeElement.style.fontSize = "22px";
-          this.changeDiv22.nativeElement.style.fontSize = "22px";
-          this.changeDiv23.nativeElement.style.fontSize = "22px";
-          this.changeDiv24.nativeElement.style.fontSize = "22px";
-          this.changeDiv25.nativeElement.style.fontSize = "22px";
-          this.changeDiv26.nativeElement.style.fontSize = "22px";
-          this.changeDiv27.nativeElement.style.fontSize = "22px";
-          this.changeDiv28.nativeElement.style.fontSize = "22px";
-          this.changeDiv29.nativeElement.style.fontSize = "22px";
-        }
-        else if(e.value == 4){
-        this.changeDiv.nativeElement.style.fontSize = "25px";
-        this.changeDiv1.nativeElement.style.fontSize = "25px";
-        this.changeDiv2.nativeElement.style.fontSize = "25px";
-        this.changeDiv3.nativeElement.style.fontSize = "25px";
-        this.changeDiv4.nativeElement.style.fontSize = "25px";
-        this.changeDiv5.nativeElement.style.fontSize = "25px";
-        this.changeDiv6.nativeElement.style.fontSize = "25px";
-        this.changeDiv7.nativeElement.style.fontSize = "25px";
-        this.changeDiv8.nativeElement.style.fontSize = "25px";
-        this.changeDiv9.nativeElement.style.fontSize = "25px";
-        this.changeDiv10.nativeElement.style.fontSize = "25px";
-        this.changeDiv11.nativeElement.style.fontSize = "25px";
-        this.changeDiv12.nativeElement.style.fontSize = "25px";
-        this.changeDiv13.nativeElement.style.fontSize = "25px";
-        this.changeDiv14.nativeElement.style.fontSize = "25px";
-        this.changeDiv15.nativeElement.style.fontSize = "25px";
-        this.changeDiv16.nativeElement.style.fontSize = "25px";
-        this.changeDiv17.nativeElement.style.fontSize = "25px";
-        this.changeDiv18.nativeElement.style.fontSize = "25px";
-        this.changeDiv19.nativeElement.style.fontSize = "25px";
-        this.changeDiv20.nativeElement.style.fontSize = "25px";
-        this.changeDiv21.nativeElement.style.fontSize = "25px";
-        this.changeDiv22.nativeElement.style.fontSize = "25px";
-        this.changeDiv23.nativeElement.style.fontSize = "25px";
-        this.changeDiv24.nativeElement.style.fontSize = "25px";
-        this.changeDiv25.nativeElement.style.fontSize = "25px";
-        this.changeDiv26.nativeElement.style.fontSize = "25px";
-        this.changeDiv27.nativeElement.style.fontSize = "25px";
-        this.changeDiv28.nativeElement.style.fontSize = "25px";
-        this.changeDiv29.nativeElement.style.fontSize = "25px";
-        }
-        else if(e.value == 5){
-        this.changeDiv.nativeElement.style.fontSize = "50px";
-        this.changeDiv1.nativeElement.style.fontSize = "50px";
-        this.changeDiv2.nativeElement.style.fontSize = "50px";
-        this.changeDiv3.nativeElement.style.fontSize = "50px";
-        this.changeDiv4.nativeElement.style.fontSize = "50px";
-        this.changeDiv5.nativeElement.style.fontSize = "50px";
-        
-        }
-
-    }
-  constructor(private fb: FormBuilder, private apiService: CPCQService,private router: Router, private formService : FirstForm,private domSanitizer: DomSanitizer,public dialog: MatDialog) { }
-  openDialog(i,j,id) {
-    // 
-    
-    
-    var arr = [];
-    arr.push(this.attributes[i]);
-    arr.push(j);
-    arr.push(this.columnHeadings[j])
-    arr.push(id)
-    const dialogRef = this.dialog.open(DialogFormComponent, {
-      data: {
-        animal: arr,
-        status : "form"
-      },
-      disableClose:true
-    });
-    dialogRef.afterClosed().subscribe(result => {
-      
-      if(this.responsesArray[i][j][1] == "colorbold"){
-        this.unpackedCount = this.unpackedCount +1
-      }
-      
-    })
-  }
-
-  openWordDialog(i) {
-    // 
-    this.buttonClick = true;
-    const dialogRef = this.dialog.open(DialogFormComponent, {
-      data: {
-        animal: i,
-        status : "word"
-      },
-      disableClose:true
-    });
-
-    dialogRef.afterClosed().subscribe(result => {
-      
-      this.wordDescription = result;
-    })
-  }
-
-  helpDialog(i) {
-    // 
-    this.dialog.open(DialogFormComponent, {
-      data: {
-        animal: i,
-        status : "help"
-      }
-    });
-  }
-
-  keyPressFunc(e){
-
-    // 
-    var numbersList = ["1"];
-    for (let key in this.attitudeForm.value) {
-      
-
-      if(numbersList.indexOf(this.attitudeForm.value[key]) == -1){
-        // 
-        return "Number";
-      }
-    }
-
-    
-  }
-
-  getEmailError(){
-    return "Error";
-  }
-responsesArray =[]
-temp = []
-  getResponses(){
-    this.apiService.getResponsesData().subscribe((res) => {
-      for(let key in res){
-        this.temp = []
-        for(let key1 in res[key]){
-          this.temp.push(res[key][key1])
-        }
-        this.responsesArray.push(this.temp)
-      }
-      
-    })
-  }
-
-
-  getForm(){
-    var arr = [];
-    var arr1 = [];
-    var arr2 = [];
-    var i;
-    var attitudeResult = [];
-    var empathyResult = [];
-    var policyResult = [];
-    var profResult = [];
-    var teachingResult = [];
-    this.finalList = [[]]
-    this.boldList = [[]]
-    this.apiService.getFormData().subscribe((res) => {
-      for (let key in res){
-        arr = [];
-        if(res[key]["topic"] == "Attitude"){
-          attitudeResult.push("Attitude");
-          arr.push("Attitude");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0 )
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1])-4)  >= 2 ? 1 : 0)
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1])-5)  >= 2 ? 1 : 0)
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1])-6)  >= 2 ? 1 : 0)
-        } 
-        else if (res[key]["topic"] == "Empathy"){
-          empathyResult.push("Empathy")
-          arr.push("Empathy");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0 )
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1])-4)  >= 2 ? 1 : 0)
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1])-5)  >= 2 ? 1 : 0)
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1])-6)  >= 2 ? 1 : 0)
-        }
-        else if (res[key]["topic"] == "Policy"){
-          policyResult.push("Policy")
-          arr.push("Policy");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-
-          policyResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          policyResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          policyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0 )
-          policyResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1])-4)  >= 2 ? 1 : 0)
-          policyResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1])-5)  >= 2 ? 1 : 0)
-          policyResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1])-6)  >= 2 ? 1 : 0)
-        }
-        else if (res[key]["topic"] == "Professionalism"){
-          profResult.push("Professionalism");
-          arr.push("Professionalism");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-
-          profResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          profResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          profResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0 )
-          profResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1])-4)  >= 2 ? 1 : 0)
-          profResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1])-5)  >= 2 ? 1 : 0)
-          profResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1])-6)  >= 2 ? 1 : 0)
-        }
-        else if (res[key]["topic"] == "Teaching Practice"){
-          arr.push("Teaching Pracice");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-          teachingResult.push("Teaching Practice");
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0 )
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1])-4)  >= 2 ? 1 : 0)
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1])-5)  >= 2 ? 1 : 0)
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1])-6)  >= 2 ? 1 : 0)
-        }
-
-        this.boldList.push(arr);
-
-      }
-      this.finalList.push(attitudeResult)
-      this.finalList.push(empathyResult)
-      this.finalList.push(policyResult)
-      this.finalList.push(profResult)
-      this.finalList.push(teachingResult)
-    })
-    this.finalList.splice(0, 1);
-    this.boldList.splice(0, 1);
-    // this.getAllIndexes(this.finalList,1)
-    
-    
-
-  }
-
-  emoji:any;
-  changeEmojiSize(data){
-    document.getElementById("angry").style.height = "30px"
-    document.getElementById("angry").style.width = "30px"
-    document.getElementById("sad").style.height = "30px"
-    document.getElementById("sad").style.width = "30px"
-    document.getElementById("neutral").style.height = "30px"
-    document.getElementById("neutral").style.width = "30px"
-    document.getElementById("smile").style.height = "30px"
-    document.getElementById("smile").style.width = "30px"
-    document.getElementById("heart").style.height = "30px"
-    document.getElementById("heart").style.width = "30px"
-    document.getElementById(data).style.height = "50px"
-    document.getElementById(data).style.width = "50px"
-
-    this.emoji = data;
-  }
-
-  thumbs:any;
-  changeThumbsSize(data){
-    document.getElementById("thumbsup").style.height = "30px"
-    document.getElementById("thumbsup").style.width = "30px"
-    document.getElementById("thumbsdown").style.height = "30px"
-    document.getElementById("thumbsdown").style.width = "30px"
-
-    document.getElementById(data).style.height = "50px"
-    document.getElementById(data).style.width = "50px"
-    this.thumbs = data;
-  }
-  finalSubmit(){
-    this.finalFeedbackForm.value["q6"] = this.thumbs
-    this.finalFeedbackForm.value["q7"] = this.emoji
-
-    this.endTime = new Date()
-    
-    this.durationTime = (this.endTime - this.startTime)/1000
-    this.durationTime = this.durationTime/ 60
-
-    this.apiService.patchStatus("finalfeedbackstatus").subscribe((res) => {
-
-    })
-
-    this.apiService.postFeedbackForm(this.finalFeedbackForm.value).subscribe((res) => {
-      this.apiService.changeCPCQStatus().subscribe((res1) => {
-        Swal.fire({
-          text: "Submitted",
-          icon: "success"
-        }).then((res) => {
-          if(res["isConfirmed"]){
-            this.router.navigateByUrl("/result")
-          }
-        })
-        
-      })
-    },(err) => {
-      
-    })
-    
-  }
-  ngOnInit(): void {
-    this.startTime = new Date()
-    this.finalFeedbackForm = this.fb.group({
-      q1:[""],
-      q2:[""],
-      q3:[""],
-      q4:[""],
-      q5:[""],
-      q6:[""],
-      q7:[""],
-    })
-
-    this.apiService.attitudeData().subscribe((res) => {
-      // 
-      this.attitude = res[0];
-      // 
-    },(err) => {
-      
-    })
-
-    this.apiService.empathyData().subscribe((res) => {
-      // 
-      this.empathy = res[0];
-      // 
-    },(err) => {
-      
-    })
-
-    this.apiService.policyData().subscribe((res) => {
-      this.policy = res[0];
-    },(err) => {
-      
-    })
-
-    this.apiService.professionalismData().subscribe((res) => {
-      this.professionalism = res[0];
-    },(err) => {
-      
-    })
-
-    this.apiService.teachingData().subscribe((res) => {
-      this.teachingPractice = res[0];
-    },(err) => {
-      
-    })
-
-    this.attitudeForm = this.fb.group({
-      A:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      B:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      C:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      D:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      E:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      F:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      description:["",[Validators.required]]
-
-    })
-
-    this.empathyForm = this.fb.group({
-      A:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      B:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      C:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      D:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      E:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      F:["",[Validators.minLength(1),Validators.maxLength(1)]],
-
-    })
-
-    this.policyForm = this.fb.group({
-      A:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      B:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      C:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      D:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      E:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      F:["",[Validators.minLength(1),Validators.maxLength(1)]],
-
-    })
-
-
-    var arr = [];
-    var arr1 = [];
-    var arr2 = [];
-    var i;
-    for(var j = 0;j<5;j++){
-      arr = [];
-      arr1 = [];
-      arr2 = [];
-      i = 0;
-      while(i<6){
-        var item1 = Math.floor(Math.random() * (7 - 1) + 1); 
-        if(arr1.indexOf(item1) == -1){
-          if(i == 0){
-            arr.push(this.attributes[j]);
-            arr.push(this.rowLetters[j][i] + ". "+ item1);
-            arr1.push(item1);
-            if(arr1[arr1.length -1] >2){
-              // 
-              arr2.push("True");
-            }
-            else{
-              arr2.push("False");
-            }
-          }
-          else{
-            arr.push(this.rowLetters[j][i] + ". "+ item1);
-            arr1.push(item1);
-            if(i==1){
-              if(arr1[arr1.length - 1] >3){
-                arr2.push("True");
-              }
-              else{
-                arr2.push("False");
-              }
-            }
-            else if(i==2){
-              if(arr1[arr1.length - 1] >4 || arr1[arr1.length - 1] == 1){
-                arr2.push("True");
-              }
-              else{
-                arr2.push("False");
-              }
-            }
-            else if(i==3){
-              if(arr1[arr1.length - 1] >5 || arr1[arr1.length - 1] <4){
-                arr2.push("True");
-              }
-              else{
-                arr2.push("False");
-              }
-            }
-            else if(i==4){
-              if(arr1[arr1.length - 1] <4){
-                arr2.push("True");
-              }
-              else{
-                arr2.push("False");
-              }
-            }
-            else if(i==5){
-              if(arr1[arr1.length - 1] <5){
-                arr2.push("True");
-              }
-              else{
-                arr2.push("False");
-              }
-            }
-          }
-          i = i + 1;
-        }
-        else{
-          continue;
-        }
-        
-      }
-      this.formValues.push(arr);
-      this.boldList.push(arr1);
-      this.randomList.push(arr2);
-    }
-    this.boldList.splice(0, 1);
-    this.randomList.splice(0, 1);
-    
-    
-    
-    this.getAllIndexes(this.randomList,"True");
-    this.loaded = true;
-  }
-
-  getAllIndexes(arr, val) {
-    var indexes = [];
-    var i = -1;
-    for(var i = 0;i<arr.length;i++){
-      for(var j = 0;j<arr[i].length;j++){
-        if(arr[i][j] == "True"){
-          var arr1 = [];
-          arr1.push(i);
-          arr1.push(j)
-          indexes.push(arr1);
-        }
-      }
-    }
-    
-    var arr1 = [];
-    for(var i = 0;i<indexes.length;i++){
-      arr1.push(i);
-    }
-    var ranNums = [];
-    var i = arr1.length;
-    var j = 0;
-    var count = 0;
-    while (i--) {
-      
-      if(count < 5){
-        j = Math.floor(Math.random() * (i+1));
-      ranNums.push(arr1[j]);
-      arr1.splice(j,1);
-      count = count+1;
-      }
-      else{
-        break;
-      }
-  }
-  
-
-  // 
-  for(var i = 0;i<this.boldList.length;i++){
-    var temp = [];
-    for(var j = 0 ;j <6;j++){
-      temp.push("False");
-    }
-    this.finalList1.push(temp);
-  }
-  
-  
-  for(var i = 0;i<ranNums.length;i++){
-    var item = indexes[ranNums[i]];
-    
-    this.finalList1[item[0]][item[1]] = "True";
-  }
-  // this.finalList1.splice(0,1)
-  
-}
-  preSurvey(){
-    this.router.navigateByUrl("/preSurvey");
-  }
-
-  nextButton(){
-    if(this.selectedIndex == 0){
-      this.selectedIndex = this.selectedIndex + 1;
-      return;
-    }
-    if(this.selectedIndex == 7){
-      this.router.navigateByUrl('/dashboard');
-      return;
-    }
-
-    var numberList = [];
-    var flag = true;
-    for (let key in this.attitudeForm.value) {
-      
-      if((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && (key != "description")){
-        flag = false;
-        Swal.fire({
-          text: "Please enter values from 1 through 6 only.",
-          icon: "warning"
-        }).then((res) => {
-        })
-        break;
-      }
-      if(numberList.indexOf(this.attitudeForm.value[key]) == -1){
-        numberList.push(this.attitudeForm.value[key]);
-      }
-      else{
-        flag = false;
-        Swal.fire({
-          text: "The inputs have been repeated. Please enter values from 1 through 6.",
-          icon: "warning"
-        }).then((res) => {
-        })
-        break;
-      }
-    }
-    if(!this.buttonClick){
-      flag = false;
-      Swal.fire({
-
-        text: "Click on the word '"+ this.attributes[this.selectedIndex-1]+"' and respond to the prompt.",
-        icon: "warning"
-      }).then((res) => {
-      })
-    }
-    if(flag){
-      
-      if(this.selectedIndex == 7){
-        this.router.navigateByUrl("/postSurvey");
-      }
-      this.sliderFunction1();
-      var formData = {}
-      formData['topic'] = this.attributes[this.selectedIndex-1]
-      if(this.attributes[this.selectedIndex-1] == "Attitude"){
-        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value['C']
-        formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalPreCompetence"] = "A. " + this.attitudeForm.value['A']
-        formData["culturalCompetence"] = "F. " + this.attitudeForm.value['F']
-        formData["culturalProficiency"] = "E. " + this.attitudeForm.value['E']
-
-      }
-      else if(this.attributes[this.selectedIndex-1] == "Empathy"){
-        formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value['E']
-        formData["culturalIncapacity"] = "A. " + this.attitudeForm.value['A']
-        formData["culturalBlindness"] = "F. " + this.attitudeForm.value['F']
-        formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalCompetence"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalProficiency"] = "C. " + this.attitudeForm.value['C']
-      }
-      else if(this.attributes[this.selectedIndex-1] == "Policy"){
-        formData["culturalDestructiveness"] = "F. " + this.attitudeForm.value['F']
-        formData["culturalIncapacity"] = "E. " + this.attitudeForm.value['E']
-        formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalPreCompetence"] = "C. " + this.attitudeForm.value['C']
-        formData["culturalCompetence"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalProficiency"] = "A. " + this.attitudeForm.value['A']
-      }
-      else if(this.attributes[this.selectedIndex-1] == "Professionalism"){
-        formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value['E']
-        formData["culturalIncapacity"] = "A. " + this.attitudeForm.value['A']
-        formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalCompetence"] = "C. " + this.attitudeForm.value['C']
-        formData["culturalProficiency"] = "F. " + this.attitudeForm.value['F']
-      }
-      else if(this.attributes[this.selectedIndex-1] == "Teaching Practice"){
-        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value['C']
-        formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value['E']
-        formData["culturalCompetence"] = "A. " + this.attitudeForm.value['A']
-        formData["culturalProficiency"] = "F. " + this.attitudeForm.value['F']
-      }
-
-      this.endTime = new Date()
-      
-      this.durationTime = (this.endTime - this.startTime)/1000
-      this.durationTime = this.durationTime/ 60
-      
-      formData["description"] = this.wordDescription
-      formData["duration"] = this.durationTime
-      this.apiService.postFormData(formData).subscribe((res) => {
-        // 
-      },(err) => {
-        
-      })
-      // this.getForm();
-      this.selectedIndex = this.selectedIndex + 1;
-      this.buttonClick = false;
-      this.startTime = new Date()
-      this.attitudeForm = this.fb.group({
-        A:["",[Validators.minLength(1),Validators.maxLength(1)]],
-        B:["",[Validators.minLength(1),Validators.maxLength(1)]],
-        C:["",[Validators.minLength(1),Validators.maxLength(1)]],
-        D:["",[Validators.minLength(1),Validators.maxLength(1)]],
-        E:["",[Validators.minLength(1),Validators.maxLength(1)]],
-        F:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      })
-    }
-   
-  }
-
-  postSurvey(){
-    this.router.navigateByUrl("/postSurvey");
-  }
-
-  submitForm1(){
-    if(this.unpackedCount >= 5 ){
-      this.endTime = new Date()
-      
-      this.durationTime = (this.endTime - this.startTime)/1000
-      this.durationTime = this.durationTime/ 60
-      this.apiService.patchStatus("cpcqstatus").subscribe((res) => {
-        Swal.fire({
-          text: "Submitted",
-          icon: "success"
-        }).then((res) => {
-          if(res["isConfirmed"]){
-            // this.getForm()
-            this.selectedIndex = this.selectedIndex + 1;
-          }
-        })
-      })
-
-    
-    }
-    else{
-      Swal.fire({
-        text: "Please click on all the yellow boxes and answer the questions in the prompt.",
-        icon: "warning"
-      }).then((res) => {
-      })
-    }
-    
-  }
-  
-  submitForm(){
-    if(this.selectedIndex == 5){
-      var numberList = [];
-      var flag = false;
-      
-      for (let key in this.attitudeForm.value) {
-        
-        if((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && (key != "description")){
-        
-
-          flag = true;
-          Swal.fire({
-            text: "Please enter values from 1 through 6 only.",
-            icon: "warning"
-          }).then((res) => {
-          })
-          break;
-        }
-        if(numberList.indexOf(this.attitudeForm.value[key]) == -1){
-          numberList.push(this.attitudeForm.value[key]);
-        }
-        else{
-          flag = true;
-          Swal.fire({
-            text: "The inputs have been repeated. Please enter values from 1 through 6.",
-            icon: "warning"
-          }).then((res) => {
-          })
-          break;
-        }
-      }
-      if(!this.buttonClick){
-        flag = true;
-        Swal.fire({
-          text: "Click on the word '"+ this.attributes[this.selectedIndex-1]+"' and respond to the prompt.",
-          icon: "warning"
-        }).then((res) => {
-        })
-      }
-      if(!flag){
-
-      
-      // 
-      var formData = {}
-
-      formData['topic'] = this.attributes[this.selectedIndex-1]
-      formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value['D']
-      formData["culturalIncapacity"] = "C. " + this.attitudeForm.value['C']
-      formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-      formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value['E']
-      formData["culturalCompetence"] = "A. " + this.attitudeForm.value['A']
-      formData["culturalProficiency"] = "F. " + this.attitudeForm.value['F']
-      
-      formData["description"] = this.wordDescription
-      this.endTime = new Date()
-      
-      this.durationTime = (this.endTime - this.startTime)/1000
-      this.durationTime = this.durationTime/ 60
-
-      formData["duration"] = this.durationTime
-      this.apiService.postFormData(formData).subscribe((res) => {
-        // 
-        this.apiService.patchStatus("responsesstatus").subscribe((res) => {
-          Swal.fire({
-            text: "Submitted",
-            icon: "success"
-          }).then((res) => {
-            if(res["isConfirmed"]){
-              // this.getForm()
-          // this.getResponses()
-          this.router.navigateByUrl("/unpacking")
-  
-              // this.selectedIndex = this.selectedIndex + 1;
-              this.startTime = new Date()
-            }
-          })
-
-        })
-      },(err) => {
-        
-      })
-    }
-   
-  }
-  }
-
-  submit(){
-    // 
-    var tempDict;
-    this.responseList = [];
-    for(let key in this.firstForm.value){
-      tempDict = {}
-      tempDict["question"] = key
-      tempDict["response"] = this.firstForm.value[key];
-      this.responseList.push(tempDict);
-    }
-    // 
-
-    this.formService.submitResponse(this.responseList).subscribe((res) => {
-      // 
-      Swal.fire({
-        text: "Submitted",
-        icon: "success"
-      })  
-      this.router.navigateByUrl("/game");
-    },(err) => {
-      
-      Swal.fire({
-        text: "Duplicate Entries",
-        icon: "warning"
-      })  
-    })
-
-  }
-
-  title = 'micRecorder';
-//Lets declare Record OBJ
-record;
-//Will use this flag for toggeling recording
-recording = false;
-//URL of Blob
-url;
-error;
-sanitize(url: string) {
-return this.domSanitizer.bypassSecurityTrustUrl(url);
-}
-/**
-* Start recording.
-*/
-initiateRecording() {
-this.recording = true;
-let mediaConstraints = {
-video: false,
-audio: true
-};
-navigator.mediaDevices.getUserMedia(mediaConstraints).then(this.successCallback.bind(this), this.errorCallback.bind(this));
-}
-/**
-* Will be called automatically.
-*/
-successCallback(stream) {
-var options = {
-mimeType: "audio/wav",
-numberOfAudioChannels: 1,
-// sampleRate: 16000,
-};
-//Start Actuall Recording
-var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
-this.record = new StereoAudioRecorder(stream, options);
-this.record.record();
-}
-/**
-* Stop recording.
-*/
-stopRecording() {
-this.recording = false;
-this.record.stop(this.processRecording.bind(this));
-}
-/**
-* processRecording Do what ever you want with blob
-* @param  {any} blob Blog
-*/
-processRecording(blob) {
-this.url = URL.createObjectURL(blob);
-// 
-// 
-}
-/**
-* Process Error.
-*/
-errorCallback(error) {
-this.error = 'Can not play audio in your browser';
-}
-
-
-
-}
diff --git a/src/app/cpcq-form/dialog-form/dialog-form.component.ts b/src/app/cpcq-form/dialog-form/dialog-form.component.ts
deleted file mode 100644
index 8f02555..0000000
--- a/src/app/cpcq-form/dialog-form/dialog-form.component.ts
+++ /dev/null
@@ -1,547 +0,0 @@
-import { Component, OnInit, ViewChild, ElementRef, AfterViewInit, ChangeDetectorRef } from '@angular/core';
-import { Inject } from '@angular/core';
-import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
-import { ITimeUpdateEvent, NgWaveformComponent, IRegionPositions } from 'ng-waveform';
-import { FormBuilder, FormGroup, Validators } from '@angular/forms';
-import { CPCQService } from '../../../services/cpcq.service';
-export interface DialogData {
-  animal;
-  status;
-  result;
-}
-
-declare var $: any;
-import * as RecordRTC from 'recordrtc';
-import { DomSanitizer } from '@angular/platform-browser';
-@Component({
-  selector: 'app-dialog-form',
-  templateUrl: './dialog-form.component.html',
-  styleUrls: ['./dialog-form.component.css']
-})
-export class DialogFormComponent implements OnInit {
-  description;
-  word;
-  selectedIndex = 0;
-  displayTextControl = false;
-  displayText = '';
-  wordDescriptionForm: FormGroup;
-  unpackingForm: FormGroup;
-
-  unpackingArray = {}
-
-  submit = false;
-  errorField = false;
-
-  startTime: any;
-  endTime: any;
-  durationTime: any;
-
-
-  attitude = ['D. It should be required for students to remove hair accessories that are associated with their culture, tribe, sexuality, or religion.',
-    'C. Students who wear dreadlocks as a hairstyle are a distraction in the classroom.',
-    'B. Black students have the same opportunities and access to attend college as their white peers.',
-    'A. Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.',
-    'F. All faculty and staff within a school setting have equal ability to transfer knowledge to students in regards to life, culture, character, and/or academic content.',
-    'E. All students who live in the United States deserve a quality public education, even those students whose parents are undocumented immigrants.'
-  ]
-
-  attitudeOrder = ['D','C','B','A','F','E'];
-  empathy = ['E. A school counselor advised a biracial student that they would appear more professional if they perm their hair (removing the kinks) for their upcoming college visits.',
-    'A. A 10th-grade male died as a result of a car accident during an illegal street race. A group of teachers will not attend the funeral because of the activity that led to the student’s cause of death.',
-    'F. Your colleague was pulled over by the police on the way to work this morning. You hear other colleagues in the break room discussing the reasons why they were pulled over, and all of the suspected reasons were related to what they may have done (i.e., speeding, running a stop sign, etc.), rather than acknowledging that they may have been pulled over for being a person of color driving a luxury car.',
-    'D. An Asian student scored an 85 percent on today’s math quiz. The teacher expressed disappointment in the student by saying, “Come on, you are Asian! You should’ve scored better than this.”',
-    'B. A public school Teacher is grounded by the philosophy of their religion. Throughout their career as an educator; they have learned to be welcoming to others’ cultural and religious beliefs even if those beliefs are in conflict with their own.',
-    'C. In two weeks, the 8th grade teaching cluster will be getting a new math teacher who is Muslim. Next week’s professional development is dedicated to learning about the customs and etiquette of Islam to ensure that the new colleague feels welcomed in their new school.'
-  ]
-  empathyOrder = ['E','A','F','D','B','C']
-  policy = ['F. A member of the school board is proposing a policy where English is the official language for all school related business in a community where the majority of the students’ and families’ primary language is Spanish.',
-    'E.  Students in a high-poverty school who are absent 10 consecutive days in a marking period are referred to special education for excessive absenteeism.',
-    'B.  A school that does not consider factors related to culture and ethnicity in their decision-making process is more democratic than a school who does consider factors related to culture and ethnicity in their decision-making process.',
-    'C. A school leader makes a “diversity hire” to introduce new ideas around school culture, curriculum, leadership, and/or supervision.',
-    'D.  A principal implemented a policy that all faculty and staff have to participate in quarterly potlucks; they are to bring a traditional dish specific to their culture, as a way to facilitate cross-cultural discourse.',
-    'A. A group of teachers and students are protesting the athletic department at a high school for changing the school’s logo to a silhouette of a Native American in a headdress; they have secured a place on the agenda for the next school board meeting to give a presentation on why this logo is offensive and trivializes Native Americans.'
-  ]
-  policyOrder = ['F','E','B','C','D','A']
-
-  professionalism = ['E. A history teacher refuses to acknowledge black history month and does not want to teach content about black history in the United States.',
-    'A. A teacher asked the class who has traveled out of the country. A Black male raises his hand and states “I have.”  The teacher asked the student three follow-up questions to corroborate his story.',
-    'B. During lunch duty, teachers had a discussion in the presence of students about tomorrow’s district-wide racial sensitivity training. A teacher commented, “Why do we have to attend this training; the United States is post-racial because we have a Black president.”',
-    'D. The reading specialist expressed some concerns to the Vice Principal about how her male students emasculates her during whole group instruction. The Vice Principal said, “Don’t worry about it, that\'s just how boys behave.” ',
-    'C. The social committee at an elementary school is planning an awards ceremony and dinner for the staff and faculty. Six of their colleagues are vegan because of their religious beliefs.  As a result, the committee has added a vegan selection to the menu to accommodate their colleagues’ religious beliefs.',
-    'F. An AP English teacher has assigned a research paper where the students were required to write about their religion. The teacher did not let their own religious beliefs cloud their judgement; the teacher researched the student’s religion while grading the paper to offer relevant constructive feedback back on the arguments made within the paper.'
-  ]
-  professionalismOrder = ['E','A','B','D','C','F']
-  teaching = ['D. A teacher puts together a petition to request a textbook company to remove the narrative about the enslavement of Africans in the United States in their history textbook to accommodate teachers’ discomfort with discussing this sensitive topic.',
-    "C. A teacher created a seating chart that placed ‘unteachable students’ in the back of the classroom, all of whom were male: 2 Latinos and 6 African Americans. In the same seating chart, her ‘good students,' all white, were seated in preferential seating.",
-    "B. An algebra teacher who teaches in a school where the majority of the students are on free and reduced lunch requires that each student buy a specific graphing calculator for Algebra, which retails for over 100 dollars.",
-    "E. A teacher in a Title 1 school (high percentage of children from low-income families) checks homework for completeness rather than correctness as a strategy to improve student efficacy.",
-    "A. A novice teacher in a school where the majority of the students are African-American and Latino uses hip-hop as a way to make science relevant in the student's social and cultural context.",
-    "F. There is an increase of LGBTQIA+ students reporting that they are being harassed both verbally and physically in United States public schools. A group of students and teachers are researching the best practices to implement and create a supportive environment for these students to voice their concerns in their school."
-  ]
-  teachingOrder = ['D','C','B','E','A','F']
-
-
-  culturalStatus = ['Cultural Destructiveness', 'Cultural Incapacity', 'Cultural Blindness', 'Cultural Pre-Competence', 'Cultural Competence', 'Cultural Proficiency'];
-  tempStatus = '';
-  @ViewChild('waveform', { static: false }) waveform: NgWaveformComponent;
-  constructor(@Inject(MAT_DIALOG_DATA) public data: DialogData, public dialogRef: MatDialogRef<DialogFormComponent>, public dialog: MatDialog, private fb: FormBuilder, private domSanitizer: DomSanitizer, public cpcqService: CPCQService) {
-    
-  }
-
-  closeDialog() {
-    if (!this.wordDescriptionForm.valid) {
-      
-
-    }
-    else {
-      
-      this.data.result = this.wordDescriptionForm.value["answer"]
-      this.dialogRef.close(this.wordDescriptionForm.value["answer"])
-    }
-
-  }
-
-  describeFunc(temp) {
-    
-    this.displayTextControl = (this.displayTextControl == true) ? false : true;
-    if (temp == "Cultural Destructiveness") {
-      this.displayText = "When individuals or policies seek to eliminate all vestiges of others culture in educational and/or social contexts (Lindsey, Robins, & Terrell, 2009)."
-    }
-    else if (temp == "Cultural Incapacity") {
-      this.displayText = "Trivializing and stereotyping other cultures; seeking to make the cultures of others appear [incongruent with and] inferior to the dominant [or host] culture [within educational and/or social context] "
-    }
-    else if (temp == "Cultural Blindness") {
-      this.displayText = `Not noticing or acknowledging the culture of others and ignoring the [diverse] experiences of cultures within [educational and/or social context]; treating everyone in the system the same way without recognizing the needs that require differentiated [approaches] `;
-    }
-    else if (temp == "Cultural Pre-Competence") {
-      this.displayText = `The awareness/ability to identify when an individual/institution does not know how to effectively engage families, students, and teachers in a culturally diverse educational and/or social context `
-    }
-    else if (temp == "Cultural Competence") {
-      this.displayText = `The practical/institutional alignment of an individual’s personal values and behaviors which are in agreement with educational policies and practices that honors cultures that are new, different, and/or a minority. Such an environment displays healthy and productive interactions that denote solidarity in the educational context. However, this level of the Cultural Proficiency Continuum may or may not be limited to educational context`
-    }
-    else {
-      this.displayText = `Espouses a vision that educational and social spaces are agents of social change and a model of a just democracy. These individual/institutions learn, teach, research, advocate, and champion for members of diverse and minoritized cultural groups. This level of the Cultural Proficiency Continuum is displayed and espoused in a variety of social constructions and contexts: educational, gender, professional, race, religious, and sexuality`;
-    }
-  }
-
-  nextButton() {
-    this.submit = true
-    if (!this.unpackingForm.valid) {
-      
-      this.errorField = true
-    }
-    else {
-      this.submit = false
-      this.errorField = false
-      if (this.selectedIndex == 0) {
-        this.unpackingArray["1. Explain why this vignette above is understood to be " + this.tempStatus + "."] = this.unpackingForm.value["response"]
-      }
-      else if (this.selectedIndex == 1) {
-        this.unpackingArray["2. What is the social problem in the vignette?"] = this.unpackingForm.value["response"]
-      }
-      else if (this.selectedIndex == 2) {
-        this.unpackingArray["3. What is the cause of the social problem in the vignette?"] = this.unpackingForm.value["response"]
-      }
-      else if (this.selectedIndex == 3) {
-        this.unpackingArray["4. What solutions would you offer to address the social problem in the vignette?"] = this.unpackingForm.value["response"]
-      }
-      if (this.selectedIndex == 3) {
-        this.endTime = new Date()
-        
-        this.durationTime = (this.endTime - this.startTime)/1000
-        this.durationTime = this.durationTime/ 60
-        
-        var arr = {}
-        arr["topic"] = this.word
-        arr["duration"] = this.durationTime
-        arr["response_id"] = this.data.animal[3]
-        arr[this.data.animal[2]] = this.unpackingArray
-        // if(this.data.animal[2] == )
-        this.cpcqService.postUnpacking(arr).subscribe((res) => {
-          
-          this.dialogRef.close(res)
-        })
-
-
-      }
-      else {
-        this.selectedIndex = this.selectedIndex + 1;
-        if (this.selectedIndex > 3) {
-          this.selectedIndex = 3;
-        }
-      }
-
-      this.unpackingForm = this.fb.group({
-        "response": ["", Validators.required],
-      })
-      
-    }
-
-  }
-
-  onPlayButtonClick() {
-    this.waveform.play();
-  }
-  onPauseButtonClick() {
-    this.waveform.pause();
-  }
-
-  onTrackLoaded(e) {
-    
-  }
-
-  onTrackRendered(e) {
-    
-  }
-
-  onDurationChange(e) {
-    
-  }
-
-  onTimeUpdate(e) {
-    
-  }
-
-  onRegionChange(e) {
-    
-  }
-  title = 'micRecorder';
-  //Lets declare Record OBJ
-  record;
-  //Will use this flag for toggeling recording
-  recording = false;
-  //URL of Blob
-  url;
-  error;
-  sanitize(url: string) {
-    return this.domSanitizer.bypassSecurityTrustUrl(url);
-  }
-  /**
-  * Start recording.
-  */
-  initiateRecording() {
-    this.recording = true;
-    let mediaConstraints = {
-      video: false,
-      audio: true
-    };
-    navigator.mediaDevices.getUserMedia(mediaConstraints).then(this.successCallback.bind(this), this.errorCallback.bind(this));
-  }
-  /**
-  * Will be called automatically.
-  */
-  successCallback(stream) {
-    var options = {
-      mimeType: "audio/wav",
-      numberOfAudioChannels: 1,
-      // sampleRate: 16000,
-    };
-    //Start Actuall Recording
-    var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
-    this.record = new StereoAudioRecorder(stream, options);
-    this.record.record();
-  }
-  /**
-  * Stop recording.
-  */
-  stopRecording() {
-    this.recording = false;
-    this.record.stop(this.processRecording.bind(this));
-  }
-  /**
-  * processRecording Do what ever you want with blob
-  * @param  {any} blob Blog
-  */
-  processRecording(blob) {
-    this.url = URL.createObjectURL(blob);
-    
-    
-  }
-  /**
-  * Process Error.
-  */
-  errorCallback(error) {
-    this.error = 'Can not play audio in your browser';
-  }
-
-  questions : any;
-  questions1 : any;
-  questions2 : any;
-  scores1:any;
-  comments:any;
-  meanValue : any;
-  meanNumber : any;
-
-  columnHeadings = ["Cultural Destructiveness","Cultural Incapacity","Cultural Blindness","Cultural PreCompetence","Cultural Competence","Cultural Proficiency"]
-
-  scores: any;
-  ngOnInit(): void {
-    
-    this.startTime = new Date()
-    this.wordDescriptionForm = this.fb.group({
-      answer: ["", [Validators.required]],
-    })
-    this.unpackingForm = this.fb.group({
-      "response": ["", Validators.required],
-    })
-    if (this.data.status == 'form') {
-      if (this.data.animal[0] == "Attitude") {
-        this.word = "Attitude";
-        this.description = this.attitude[this.data.animal[1]];
-        this.tempStatus = this.culturalStatus[this.data.animal[1]];
-      }
-      else if (this.data.animal[0] == "Empathy") {
-        this.word = "Empathy"
-        this.description = this.empathy[this.data.animal[1]];
-        this.tempStatus = this.culturalStatus[this.data.animal[1]];
-      }
-      else if (this.data.animal[0] == "Policy") {
-        this.word = "Policy"
-        this.description = this.policy[this.data.animal[1]];
-        this.tempStatus = this.culturalStatus[this.data.animal[1]];
-      }
-      else if (this.data.animal[0] == "Professionalism") {
-        this.word = "Professionalism"
-        this.description = this.professionalism[this.data.animal[1]];
-        this.tempStatus = this.culturalStatus[this.data.animal[1]];
-      }
-      else if (this.data.animal[0] == "Teaching Practice") {
-        this.word = "Teaching Practice"
-        this.description = this.teaching[this.data.animal[1]];
-        this.tempStatus = this.culturalStatus[this.data.animal[1]];
-      }
-    }
-    else if(this.data.status == "score"){
-      if (this.data.animal[0] == "Attitude") {
-        this.word = "Attitude";
-        var i = this.attitudeOrder.indexOf(this.data.animal[1])
-        this.description = this.attitude[i]
-        this.meanValue = this.data.animal[2]
-        this.scores = this.data.animal[3]
-        this.questions = this.data.animal[4]
-      }
-      else if (this.data.animal[0] == "Empathy") {
-        this.word = "Empathy";
-        var i = this.empathyOrder.indexOf(this.data.animal[1])
-        this.description = this.empathy[i]
-        this.meanValue = this.data.animal[2]
-        this.scores = this.data.animal[3]
-        this.questions = this.data.animal[4]
-      }
-      else if (this.data.animal[0] == "Policy") {
-        this.word = "Policy";
-        var i = this.policyOrder.indexOf(this.data.animal[1])
-        this.description = this.policy[i]
-        this.meanValue = this.data.animal[2]
-        this.scores = this.data.animal[3]
-        this.questions = this.data.animal[4]
-      }
-      else if (this.data.animal[0] == "Professionalism") {
-        this.word = "Professionalism";
-        var i = this.professionalismOrder.indexOf(this.data.animal[1])
-        this.description = this.professionalism[i]
-        this.meanValue = this.data.animal[2]
-        this.scores = this.data.animal[3]
-        this.questions = this.data.animal[4]
-      }
-      else if (this.data.animal[0] == "Teaching Practice") {
-        this.word = "Teaching Practice";
-        var i = this.teachingOrder.indexOf(this.data.animal[1])
-        this.description = this.teaching[i]
-        this.meanValue = this.data.animal[2]
-        this.scores = this.data.animal[3]
-        this.questions = this.data.animal[4]
-      }
-      this.meanNumber = this.meanValue
-      
-      this.questions1 = []
-      this.questions2 = []
-      this.scores1 =[]
-      for(let key in this.scores){
-        
-        
-        if(this.scores[key] == 1){  
-          
-          this.scores1[key] = this.columnHeadings[0]
-        }
-        if(this.scores[key] == 2){
-          this.scores1[key] = this.columnHeadings[1]
-        }
-        if(this.scores[key] == 3){
-          this.scores1[key] = this.columnHeadings[2]
-        }
-        if(this.scores[key] == 4){
-          this.scores1[key] = this.columnHeadings[3]
-        }
-        if(this.scores[key] == 5){
-          this.scores1[key] = this.columnHeadings[4]
-        }
-      }
-      
-      
-      if(this.meanValue >=0 && this.meanValue <= 1){  
-        if(this.meanValue ==1 )
-        this.meanValue = this.columnHeadings[0]
-        else
-        this.meanValue = " somewhere between Cultural Destructiveness and Cultural Incapacity"
-        
-      }
-      if(this.meanValue >1 && this.meanValue <= 2){  
-        if(this.meanValue ==2 )
-        this.meanValue = this.columnHeadings[1]
-        else
-        this.meanValue = " somewhere between Cultural Incapacity and Cultural Blindness"
-        
-      }
-      if(this.meanValue >2 && this.meanValue <= 3){  
-        if(this.meanValue ==3 )
-        this.meanValue = this.columnHeadings[2]
-        else
-        this.meanValue = " somewhere between Cultural Blindness and Cultural PreCompetence"
-      }
-      if(this.meanValue >3 && this.meanValue <= 4){  
-        if(this.meanValue ==4 )
-        this.meanValue = this.columnHeadings[3]
-        else
-        this.meanValue = " somewhere between Cultural PreCompetence and Cultural Competence"
-      }
-      if(this.meanValue >4 && this.meanValue <= 5){  
-        if(this.meanValue ==5 )
-        this.meanValue = this.columnHeadings[4]
-        else
-        this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency"
-      }
-      if(this.meanValue >5){  
-        if(this.meanValue ==5 )
-        this.meanValue = this.columnHeadings[4]
-        else
-        this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency"
-      }
-      for(let key in this.questions) {
-        this.questions2.push(key)
-        this.questions1.push(this.questions[key])
-
-        
-      }
-    }
-    else if ( this.data.status == "form1") {
-      if (this.data.animal[0] == "Attitude") {
-        this.word = "Attitude";
-        this.description = this.attitude[this.data.animal[1]];
-        this.tempStatus = this.culturalStatus[this.data.animal[1]];
-        this.questions= this.data.animal[4]
-        this.scores = this.data.animal[5]
-      }
-      else if (this.data.animal[0] == "Empathy") {
-        this.word = "Empathy"
-        this.description = this.empathy[this.data.animal[1]];
-        this.tempStatus = this.culturalStatus[this.data.animal[1]];
-        this.questions= this.data.animal[4]
-        this.scores = this.data.animal[5]
-      }
-      else if (this.data.animal[0] == "Policy") {
-        this.word = "Policy"
-        this.description = this.policy[this.data.animal[1]];
-        this.tempStatus = this.culturalStatus[this.data.animal[1]];
-        this.questions= this.data.animal[4]
-        this.scores = this.data.animal[5]
-      }
-      else if (this.data.animal[0] == "Professionalism") {
-        this.word = "Professionalism"
-        this.description = this.professionalism[this.data.animal[1]];
-        this.tempStatus = this.culturalStatus[this.data.animal[1]];
-        this.questions= this.data.animal[4]
-        this.scores = this.data.animal[5]
-      }
-      else if (this.data.animal[0] == "Teaching Practice") {
-        this.word = "Teaching Practice"
-        this.description = this.teaching[this.data.animal[1]];
-        this.tempStatus = this.culturalStatus[this.data.animal[1]];
-        this.questions= this.data.animal[4]
-        this.scores = this.data.animal[5]
-      }
-      this.questions1 = []
-      this.questions2 = []
-      this.scores1 =[]
-      this.comments = this.data.animal[6]
-      var temp = 0;
-      for(let key in this.scores){
-        temp = temp + this.scores[key]
-        if(this.scores[key] == 1){  
-          this.scores1[key] = this.columnHeadings[0]
-        }
-        if(this.scores[key] == 2){
-          this.scores1[key] = this.columnHeadings[1]
-        }
-        if(this.scores[key] == 3){
-          this.scores1[key] = this.columnHeadings[2]
-        }
-        if(this.scores[key] == 4){
-          this.scores1[key] = this.columnHeadings[3]
-        }
-        if(this.scores[key] == 5){
-          this.scores1[key] = this.columnHeadings[4]
-        }
-      }
-      this.meanValue = temp/4.0
-      this.meanNumber = temp/4.0
-      if(this.meanValue >=0 && this.meanValue <= 1){  
-        if(this.meanValue ==1 )
-        this.meanValue = this.columnHeadings[0]
-        else
-        this.meanValue = " somewhere between Cultural Destructiveness and Cultural Incapacity"
-        
-      }
-      if(this.meanValue >1 && this.meanValue <= 2){  
-        if(this.meanValue ==2 )
-        this.meanValue = this.columnHeadings[1]
-        else
-        this.meanValue = " somewhere between Cultural Incapacity and Cultural Blindness"
-        
-      }
-      if(this.meanValue >2 && this.meanValue <= 3){  
-        if(this.meanValue ==3 )
-        this.meanValue = this.columnHeadings[2]
-        else
-        this.meanValue = " somewhere between Cultural Blindness and Cultural PreCompetence"
-      }
-      if(this.meanValue >3 && this.meanValue <= 4){  
-        if(this.meanValue ==4 )
-        this.meanValue = this.columnHeadings[3]
-        else
-        this.meanValue = " somewhere between Cultural PreCompetence and Cultural Competence"
-      }
-      if(this.meanValue >4 && this.meanValue <= 5){  
-        if(this.meanValue ==5 )
-        this.meanValue = this.columnHeadings[4]
-        else
-        this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency"
-      }
-      if(this.meanValue >5){  
-        if(this.meanValue ==5 )
-        this.meanValue = this.columnHeadings[4]
-        else
-        this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency"
-      }
-      
-      for(let key in this.questions) {
-        this.questions2.push(key)
-        this.questions1.push(this.questions[key])
-
-        
-      }
-    }
-    else if (this.data.status == 'word') {
-      if (this.data.animal == "Attitude") {
-        this.description = "Attitude B. (Cultural Blindness) - Black students have the same opportunities and access to attend college as their white peers.";
-
-      }
-      else if (this.data.animal == "Empathy") {
-        this.description = "Empathy E. (Cultural Destructiveness) - A school counselor advised a biracial student that they would appear more professional if they perm their hair (removing the kinks) for their upcoming college visits."
-      }
-    }
-
-
-  }
-
-}
diff --git a/src/app/dashboard/dashboard.component.ts b/src/app/dashboard/dashboard.component.ts
deleted file mode 100644
index 3b77542..0000000
--- a/src/app/dashboard/dashboard.component.ts
+++ /dev/null
@@ -1,380 +0,0 @@
-import { Component, OnInit, ViewChild,Inject } from '@angular/core';
-import { Router } from '@angular/router';
-import {MatDialog, MAT_DIALOG_DATA} from '@angular/material/dialog';
-import {DashboardDialoComponent} from './dashboard-dialo/dashboard-dialo.component';
-import { AnimationItem } from 'lottie-web';
-import { AnimationOptions } from 'ngx-lottie';
-import {PreSurveyService} from '../../services/preSurvey.service';
-import Swal from 'sweetalert2';
-import {
-  ApexNonAxisChartSeries,
-  ApexPlotOptions,
-  ApexChart,
-  ApexFill,
-  ChartComponent,
-  ApexLegend,
-  ApexResponsive,
-} from "ng-apexcharts";
-
-export interface DialogData {
-  animal;
-}
-
-export type ChartOptions2 = {
-  series: ApexNonAxisChartSeries;
-  chart: ApexChart;
-  labels: string[];
-  colors: string[];
-  legend: ApexLegend;
-  plotOptions: ApexPlotOptions;
-  responsive: ApexResponsive | ApexResponsive[];
-};
-
-export type ChartOptions1 = {
-  series: ApexNonAxisChartSeries;
-  chart: ApexChart;
-  labels: string[];
-  plotOptions: ApexPlotOptions;
-};
-
-export type ChartOptions = {
-  series: ApexNonAxisChartSeries;
-  chart: ApexChart;
-  labels: string[];
-  plotOptions: ApexPlotOptions;
-  fill: ApexFill;
-};
-@Component({
-  selector: 'app-dashboard',
-  templateUrl: './dashboard.component.html',
-  styleUrls: ['./dashboard.component.css']
-})
-export class DashboardComponent implements OnInit {
-
-  statusNames = ['Pre-Survey','CPCQ Form','Unpacking', 'Feedback', 'View Results', 'Post Survey'];
-  statusIcons = ['edit','developer_board','add_comment','edit','bar_chart','chrome_reader_mode'];
-  currentStatus = 0;
-  selectedSatus = 0;
-  profile = false;
-  avatarLink: string;
-  profileDetails : any;
-  userName: any;
-  email:any;
-  location:any;
-  gender:any;
-  createdat:any;
-    public photoUrl: string;
-
-    public name: string = "Nihaarika Jagadish";
-
-  public showInitials = false;
-    public initials: string;
-    public circleColor: string;
-
-    private colors = [
-        '#EB7181', // red
-        '#468547', // green
-        '#FFD558', // yellow
-        '#3670B2', // blue
-    ];
-
-  @ViewChild("chart") chart: ChartComponent;
-  public chartOptions: Partial<ChartOptions>;
-  public chartOptions1: Partial<ChartOptions1>;
-  public chartOptions2: Partial<ChartOptions2>;
-
-  options: AnimationOptions = {
-    path: 'https://assets4.lottiefiles.com/packages/lf20_6pzxbf3o/free_site_survey.json',
-  };
- 
-  animationCreated(animationItem: AnimationItem): void {
-    
-  }
-
-  openDialog1(i) {
-    
-    this.chartOptions2 = {
-      series: [76, 67, 61, 90,56],
-      chart: {
-        height: 300,
-        type: "radialBar",
-        events: {
-          legendClick: function(chartContext, seriesIndex, config) {
-            
-            
-            
-            if(seriesIndex == 0){
-              Swal.fire({ 
-                title:"Attitude",
-                html: "A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status. <br /> <br /> <span><b> B.4 </b> Black students have the same opportunities and access to attend college as their white peers. <br/> <br /><span><b> C.1 </b> Students who wear dreadlocks as a hairstyle are a distraction in the classroom. <br/> <br /> D.3 It should be required for students to remove hair accessories that are associated with their culture, tribe, sexuality, or religion. <br/> <br /> E.5 All students who live in the United States deserve a quality public education, even those students whose parents are undocumented immigrants. <br/> F.6 All faculty and staff within a school setting have equal ability to transfer knowledge to students in regards to life, culture, character, and/or academic content."
-                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-              }).then((res) => {
-                window.location.reload();
-              })
-            }
-            else if(seriesIndex == 1){
-              Swal.fire({ 
-                title:"Empathy",
-                html: "A.2 A 10th-grade male died as a result of a car accident during an illegal street race. A group of teachers will not attend the funeral because of the activity that led to the student’s cause of death. <br /> <br /> <span><b> B.4 </b> A public school Teacher is grounded by the philosophy of their religion. Throughout their career as an educator; they have learned to be welcoming to others’ cultural and religious beliefs even if those beliefs are in conflict with their own.<br/> <br /><span><b> C.1 </b> In two weeks, the 8th grade teaching cluster will be getting a new math teacher who is Muslim. Next week’s professional development is dedicated to learning about the customs and etiquette of Islam to ensure that the new colleague feels welcomed in their new school.<br/> <br /> D.3  An Asian student scored an 85 percent on today’s math quiz. The teacher expressed disappointment in the student by saying,Come on, you are Asian! You should’ve scored better than this. <br/> <br /> E.5  A school counselor advised a biracial student that they would appear more professional if they perm their hair (removing the kinks) for their upcoming college visits. <br/> F.6 Your colleague was pulled over by the police on the way to work this morning. You hear other colleagues in the break room discussing the reasons why they were pulled over, and all of the suspected reasons were related to what they may have done (i.e., speeding, running a stop sign, etc.), rather than acknowledging that they may have been pulled over for being a person of color driving a luxury car."
-                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-              }).then((res) => {
-                window.location.reload();
-              })
-            }
-            else if(seriesIndex == 2){
-              Swal.fire({ 
-                title:"Policy",
-                html: "A.2 A group of teachers and students are protesting the athletic department at a high school for changing the school’s logo to a silhouette of a Native American in a headdress; they have secured a place on the agenda for the next school board meeting to give a presentation on why this logo is offensive and trivializes Native Americans. <br /> <br /> <span><b> B.4 </b>  A school that does not consider factors related to culture and ethnicity in their decision-making process is more democratic than a school who does consider factors related to culture and ethnicity in their decision-making process.<br/> <br /><span><b> C.1 </b> A school leader makes a “diversity hire” to introduce new ideas around school culture, curriculum, leadership, and/or supervision. <br/> <br /> D.3 A principal implemented a policy that all faculty and staff have to participate in quarterly potlucks; they are to bring a traditional dish specific to their culture, as a way to facilitate cross-cultural discourse. <br/> <br /> E.5 Students in a high-poverty school who are absent 10 consecutive days in a marking period are referred to special education for excessive absenteeism. <br/> F.6A member of the school board is proposing a policy where English is the official language for all school related business in a community where the majority of the students’ and families’ primary language is Spanish.                "
-                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-              }).then((res) => {
-                window.location.reload();
-              })
-            }
-
-            else if(seriesIndex == 3){
-              Swal.fire({ 
-                title:"Professionalism",
-                html: "A.2A teacher asked the class who has traveled out of the country. A Black male raises his hand and states “I have.”  The teacher asked the student three follow-up questions to corroborate his story.                <br /> <br /> <span><b> B.4 </b> During lunch duty, teachers had a discussion in the presence of students about tomorrow’s district-wide racial sensitivity training. A teacher commented, Why do we have to attend this training; the United States is post-racial because we have a Black president.                <br/> <br /><span><b> C.1 </b> The social committee at an elementary school is planning an awards ceremony and dinner for the staff and faculty. Six of their colleagues are vegan because of their religious beliefs.  As a result, the committee has added a vegan selection to the menu to accommodate their colleagues’ religious beliefs. <br/> <br /> D.3  The reading specialist expressed some concerns to the Vice Principal about how her male students emasculates her during whole group instruction. The Vice Principal said, “Don’t worry about it, that's just how boys behave.”                 <br/> <br /> E.5  A history teacher refuses to acknowledge black history month and does not want to teach content about black history in the United States.                <br/> F.6 An AP English teacher has assigned a research paper where the students were required to write about their religion. The teacher did not let their own religious beliefs cloud their judgement; the teacher researched the student’s religion while grading the paper to offer relevant constructive feedback back on the arguments made within the paper.                "
-                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-              }).then((res) => {
-                window.location.reload();
-              })
-            }
-
-            else if(seriesIndex == 4){
-              Swal.fire({ 
-                title:"Teaching Practice",
-                html: "A.2 A novice teacher in a school where the majority of the students are African-American and Latino uses hip-hop as a way to make science relevant in the student's social and cultural context.                <br /> <br /> <span><b> B.4 </b>An algebra teacher who teaches in a school where the majority of the students are on free and reduced lunch requires that each student buy a specific graphing calculator for Algebra, which retails for over 100 dollars.                <br/> <br /><span><b> C.1 </b> A teacher created a seating chart that placed ‘unteachable students’ in the back of the classroom, all of whom were male: 2 Latinos and 6 African Americans.  In the same seating chart, her ‘good students,' all white, were seated in preferential seating.                <br/> <br /> D.3 A teacher puts together a petition to request a textbook company to remove the narrative about the enslavement of Africans in the United States in their history textbook to accommodate teachers’ discomfort with discussing this sensitive topic.                <br/> <br /> E.5  A teacher in a Title 1 school (high percentage of children from low-income families) checks homework for completeness rather than correctness as a strategy to improve student efficacy.                 <br/> F.6 There is an increase of LGBTQIA+ students reporting that they are being harassed both verbally and physically in United States public schools. A group of students and teachers are researching the best practices to implement and create a supportive environment for these students to voice their concerns in their school."
-                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-              }).then((res) => {
-                window.location.reload();
-              })
-            }
-          
-          }
-        }
-      },
-      plotOptions: {
-        radialBar: {
-          offsetY: 0,
-          startAngle: 0,
-          endAngle: 270,
-          hollow: {
-            margin: 5,
-            size: "30%",
-            background: "transparent",
-            image: undefined
-          },
-          dataLabels: {
-            name: {
-              show: false
-            },
-            value: {
-              show: false
-            }
-          }
-        }
-      },
-      colors: ["#1ab7ea", "#0084ff", "#39539E", "#0077B5"],
-      labels: ["Attitude", "Empathy", "Policy", "Professionalism","Teaching Practice"],
-      legend: {
-        show: true,
-        floating: true,
-        fontSize: "13px",
-        position: "left",
-        labels: {
-          useSeriesColors: true
-        },
-        formatter: function(seriesName, opts) {
-          return seriesName + ":  " + opts.w.globals.series[opts.seriesIndex];
-        },
-        itemMargin: {
-          horizontal: 3
-        }
-      },
-      responsive: [
-        {
-          breakpoint: 480,
-          options: {
-            legend: {
-              show: false
-            }
-          }
-        }
-      ]
-    };
-  }
-
-  openDialog(){
-    const dialogRef = this.dialog.open(DashboardDialoComponent, {
-      data: {userID: this.profileDetails[0]["id"]},
-      disableClose:true
-    });
-
-    dialogRef.afterClosed().subscribe(result => {
-      
-      
-      this.showInitials = false;
-      this.avatarLink = result;
-    });
-  }
-  constructor(private router:Router,public dialog: MatDialog,private presurvey : PreSurveyService) {
-
-    this.openDialog1(1);
-    
-    this.chartOptions = {
-      series: [76],
-      chart: {
-        height: 300,
-        type: "radialBar",
-        offsetY: -20
-      },
-      plotOptions: {
-        radialBar: {
-          startAngle: -90,
-          endAngle: 90,
-          track: {
-            background: "#e7e7e7",
-            strokeWidth: "97%",
-            margin: 5, // margin is in pixels
-            dropShadow: {
-              enabled: true,
-              top: 2,
-              left: 0,
-              opacity: 0.31,
-              blur: 2
-            }
-          },
-          dataLabels: {
-            value: {
-              // offsetY: -2,
-              fontSize: "22px"
-            },
-            name: {
-              show: true,
-              fontSize: "13px",
-              color: "green"
-            }
-            
-          }
-        }
-      },
-      fill: {
-        type: "gradient",
-        gradient: {
-          shade: "light",
-          shadeIntensity: 0.4,
-          inverseColors: false,
-          opacityFrom: 1,
-          opacityTo: 1,
-          stops: [0, 50, 53, 91]
-        }
-      },
-      labels: ["Culturally Competent"]
-    };
-
-    
-      this.chartOptions1 = {
-        series: [44, 55, 67, 83,56],
-        chart: {
-          height: 200,
-          width: 300,
-          type: "radialBar",
-          events:{
-            click: function(event, chartContext, config) {
-              
-              
-              
-              
-              // The last parameter config contains additional information like `seriesIndex` and `dataPointIndex` for cartesian charts.
-            }
-          }
-        },
-        plotOptions: {
-          radialBar: {
-            dataLabels: {
-              name: {
-                fontSize: "22px"
-              },
-              value: {
-                fontSize: "16px"
-              },
-              total: {
-                show: true,
-                label: "Total",
-                formatter: function(w) {
-                  return "249";
-                }
-              }
-            }
-          }
-        },
-        labels: ["Attitude", "Empathy", "Policy", "Professionalism","Teaching Practice"]
-      };
-    
-  }
-
-   public generateData(count, yrange) {
-    var i = 0;
-    var series = [];
-    while (i < count) {
-      var x = "w" + (i + 1).toString();
-      var y =
-        Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min;
-
-      series.push({
-        x: x,
-        y: y
-      });
-      i++;
-    }
-    return series;
-  }
-
-  ngOnInit(): void {
-    if (!this.photoUrl) {
-      this.showInitials = true;
-      this.createInititals();
-
-      const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length));
-      this.circleColor = this.colors[randomIndex];
-  }
-
-  this.presurvey.profileData().subscribe((res)=> {
-    this.profileDetails = res
-    this.email = res[0]["email"]
-    this.location = res[0]["location"]
-    this.gender = res[0]["gender"]
-    this.userName = res[0]["first_name"]
-    this.createdat = new Date(res[0]["preSurveydate"]).toLocaleDateString("en-US", { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' } )
-    this.currentStatus = res[0]["status"].lastIndexOf(true)
-    // 
-    if(res[0]["photo_profile"].length != 0){
-      
-      this.showInitials = false
-      var lenSTr = res[0]["photo_profile"].length
-      this.avatarLink = res[0]["photo_profile"]
-    }
-  })
-  }
-
-  private createInititals(): void {
-    let initials = "";
-
-    for (let i = 0; i < this.name.length; i++) {
-        if (this.name.charAt(i) === ' ') {
-            continue;
-        }
-
-        if (this.name.charAt(i) === this.name.charAt(i).toUpperCase()) {
-            initials += this.name.charAt(i);
-
-            if (initials.length == 2) {
-                break;
-            }
-        }
-    }
-
-    this.initials = initials;
-}
-}
diff --git a/src/app/final-dashboard/final-dashboard.component.ts b/src/app/final-dashboard/final-dashboard.component.ts
deleted file mode 100644
index f457995..0000000
--- a/src/app/final-dashboard/final-dashboard.component.ts
+++ /dev/null
@@ -1,400 +0,0 @@
-import { Component, OnInit, ViewChild,Inject } from '@angular/core';
-import { Router } from '@angular/router';
-import {MatDialog, MAT_DIALOG_DATA} from '@angular/material/dialog';
-import Swal from 'sweetalert2';
-import {DashboardDialoComponent} from '../dashboard/dashboard-dialo/dashboard-dialo.component';
-import { AnimationItem } from 'lottie-web';
-import {PreSurveyService} from '../../services/preSurvey.service';
-import {CPCQService} from '../../services/cpcq.service';
-import { AnimationOptions } from 'ngx-lottie';
-import {
-  ApexNonAxisChartSeries,
-  ApexPlotOptions,
-  ApexChart,
-  ApexFill,
-  ChartComponent,
-  ApexLegend,
-  ApexResponsive,
-} from "ng-apexcharts";
-
-export interface DialogData {
-  animal;
-}
-
-export type ChartOptions2 = {
-  series: ApexNonAxisChartSeries;
-  chart: ApexChart;
-  labels: string[];
-  colors: string[];
-  legend: ApexLegend;
-  plotOptions: ApexPlotOptions;
-  responsive: ApexResponsive | ApexResponsive[];
-};
-
-export type ChartOptions1 = {
-  series: ApexNonAxisChartSeries;
-  chart: ApexChart;
-  labels: string[];
-  plotOptions: ApexPlotOptions;
-};
-
-export type ChartOptions = {
-  series: ApexNonAxisChartSeries;
-  chart: ApexChart;
-  labels: string[];
-  plotOptions: ApexPlotOptions;
-  fill: ApexFill;
-};
-@Component({
-  selector: 'app-final-dashboard',
-  templateUrl: './final-dashboard.component.html',
-  styleUrls: ['./final-dashboard.component.css']
-})
-export class FinalDashboardComponent implements OnInit {
-  statusNames = ['Pre-Survey','CPCQ Form','Unpacking', 'Feedback', 'View Results', 'Post Survey'];
-  statusIcons = ['edit','developer_board','add_comment','edit','bar_chart','chrome_reader_mode'];
-  currentStatus = 5;
-  selectedSatus = 0;
-  profile = false;
-  avatarLink: string;
-
-    public photoUrl: string;
-
-    public name: string = "Nihaarika Jagadish";
-
-  public showInitials = false;
-    public initials: string;
-    public circleColor: string;
-    public profileDetails:any;
-    public email:any
-    public location:any
-    public gender :any
-    public userName :any
-    public preSurveyDate :any
-    public responsesDate :any
-    public cpcqDate :any
-    public postSurveyDate : any;
-    public scoreDate : any;
-    public finalDate : any
-
-    private colors = [
-        '#EB7181', // red
-        '#468547', // green
-        '#FFD558', // yellow
-        '#3670B2', // blue
-    ];
-
-  @ViewChild("chart") chart: ChartComponent;
-  public chartOptions: Partial<ChartOptions>;
-  public chartOptions1: Partial<ChartOptions1>;
-  public chartOptions2: Partial<ChartOptions2>;
-
-  options: AnimationOptions = {
-    path: 'https://assets4.lottiefiles.com/packages/lf20_t7jtcf8d.json',
-  };
- 
-  animationCreated(animationItem: AnimationItem): void {
-    
-  }
-
-  openDialog1(i) {
-    
-    this.chartOptions2 = {
-      series: [76, 67, 61, 90,56],
-      chart: {
-        height: 300,
-        type: "radialBar",
-        events: {
-          legendClick: function(chartContext, seriesIndex, config) {
-            
-            
-            
-            if(seriesIndex == 0){
-              Swal.fire({ 
-                title:"Attitude",
-                html: "A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status. <br /> <br /> <span><b> B.4 </b> Black students have the same opportunities and access to attend college as their white peers. <br/> <br /><span><b> C.1 </b> Students who wear dreadlocks as a hairstyle are a distraction in the classroom. <br/> <br /> D.3 It should be required for students to remove hair accessories that are associated with their culture, tribe, sexuality, or religion. <br/> <br /> E.5 All students who live in the United States deserve a quality public education, even those students whose parents are undocumented immigrants. <br/> F.6 All faculty and staff within a school setting have equal ability to transfer knowledge to students in regards to life, culture, character, and/or academic content."
-                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-              }).then((res) => {
-                window.location.reload();
-              })
-            }
-            else if(seriesIndex == 1){
-              Swal.fire({ 
-                title:"Empathy",
-                html: "A.2 A 10th-grade male died as a result of a car accident during an illegal street race. A group of teachers will not attend the funeral because of the activity that led to the student’s cause of death. <br /> <br /> <span><b> B.4 </b> A public school Teacher is grounded by the philosophy of their religion. Throughout their career as an educator; they have learned to be welcoming to others’ cultural and religious beliefs even if those beliefs are in conflict with their own.<br/> <br /><span><b> C.1 </b> In two weeks, the 8th grade teaching cluster will be getting a new math teacher who is Muslim. Next week’s professional development is dedicated to learning about the customs and etiquette of Islam to ensure that the new colleague feels welcomed in their new school.<br/> <br /> D.3  An Asian student scored an 85 percent on today’s math quiz. The teacher expressed disappointment in the student by saying,Come on, you are Asian! You should’ve scored better than this. <br/> <br /> E.5  A school counselor advised a biracial student that they would appear more professional if they perm their hair (removing the kinks) for their upcoming college visits. <br/> F.6 Your colleague was pulled over by the police on the way to work this morning. You hear other colleagues in the break room discussing the reasons why they were pulled over, and all of the suspected reasons were related to what they may have done (i.e., speeding, running a stop sign, etc.), rather than acknowledging that they may have been pulled over for being a person of color driving a luxury car."
-                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-              }).then((res) => {
-                window.location.reload();
-              })
-            }
-            else if(seriesIndex == 2){
-              Swal.fire({ 
-                title:"Policy",
-                html: "A.2 A group of teachers and students are protesting the athletic department at a high school for changing the school’s logo to a silhouette of a Native American in a headdress; they have secured a place on the agenda for the next school board meeting to give a presentation on why this logo is offensive and trivializes Native Americans. <br /> <br /> <span><b> B.4 </b>  A school that does not consider factors related to culture and ethnicity in their decision-making process is more democratic than a school who does consider factors related to culture and ethnicity in their decision-making process.<br/> <br /><span><b> C.1 </b> A school leader makes a “diversity hire” to introduce new ideas around school culture, curriculum, leadership, and/or supervision. <br/> <br /> D.3 A principal implemented a policy that all faculty and staff have to participate in quarterly potlucks; they are to bring a traditional dish specific to their culture, as a way to facilitate cross-cultural discourse. <br/> <br /> E.5 Students in a high-poverty school who are absent 10 consecutive days in a marking period are referred to special education for excessive absenteeism. <br/> F.6A member of the school board is proposing a policy where English is the official language for all school related business in a community where the majority of the students’ and families’ primary language is Spanish.                "
-                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-              }).then((res) => {
-                window.location.reload();
-              })
-            }
-
-            else if(seriesIndex == 3){
-              Swal.fire({ 
-                title:"Professionalism",
-                html: "A.2A teacher asked the class who has traveled out of the country. A Black male raises his hand and states “I have.”  The teacher asked the student three follow-up questions to corroborate his story.                <br /> <br /> <span><b> B.4 </b> During lunch duty, teachers had a discussion in the presence of students about tomorrow’s district-wide racial sensitivity training. A teacher commented, Why do we have to attend this training; the United States is post-racial because we have a Black president.                <br/> <br /><span><b> C.1 </b> The social committee at an elementary school is planning an awards ceremony and dinner for the staff and faculty. Six of their colleagues are vegan because of their religious beliefs.  As a result, the committee has added a vegan selection to the menu to accommodate their colleagues’ religious beliefs. <br/> <br /> D.3  The reading specialist expressed some concerns to the Vice Principal about how her male students emasculates her during whole group instruction. The Vice Principal said, “Don’t worry about it, that's just how boys behave.”                 <br/> <br /> E.5  A history teacher refuses to acknowledge black history month and does not want to teach content about black history in the United States.                <br/> F.6 An AP English teacher has assigned a research paper where the students were required to write about their religion. The teacher did not let their own religious beliefs cloud their judgement; the teacher researched the student’s religion while grading the paper to offer relevant constructive feedback back on the arguments made within the paper.                "
-                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-              }).then((res) => {
-                window.location.reload();
-              })
-            }
-
-            else if(seriesIndex == 4){
-              Swal.fire({ 
-                title:"Teaching Practice",
-                html: "A.2 A novice teacher in a school where the majority of the students are African-American and Latino uses hip-hop as a way to make science relevant in the student's social and cultural context.                <br /> <br /> <span><b> B.4 </b>An algebra teacher who teaches in a school where the majority of the students are on free and reduced lunch requires that each student buy a specific graphing calculator for Algebra, which retails for over 100 dollars.                <br/> <br /><span><b> C.1 </b> A teacher created a seating chart that placed ‘unteachable students’ in the back of the classroom, all of whom were male: 2 Latinos and 6 African Americans.  In the same seating chart, her ‘good students,' all white, were seated in preferential seating.                <br/> <br /> D.3 A teacher puts together a petition to request a textbook company to remove the narrative about the enslavement of Africans in the United States in their history textbook to accommodate teachers’ discomfort with discussing this sensitive topic.                <br/> <br /> E.5  A teacher in a Title 1 school (high percentage of children from low-income families) checks homework for completeness rather than correctness as a strategy to improve student efficacy.                 <br/> F.6 There is an increase of LGBTQIA+ students reporting that they are being harassed both verbally and physically in United States public schools. A group of students and teachers are researching the best practices to implement and create a supportive environment for these students to voice their concerns in their school."
-                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-              }).then((res) => {
-                window.location.reload();
-              })
-            }
-          
-          }
-        }
-      },
-      plotOptions: {
-        radialBar: {
-          offsetY: 0,
-          startAngle: 0,
-          endAngle: 270,
-          hollow: {
-            margin: 5,
-            size: "30%",
-            background: "transparent",
-            image: undefined
-          },
-          dataLabels: {
-            name: {
-              show: false
-            },
-            value: {
-              show: false
-            }
-          }
-        }
-      },
-      colors: ["#1ab7ea", "#0084ff", "#39539E", "#0077B5"],
-      labels: ["Attitude", "Empathy", "Policy", "Professionalism","Teaching Practice"],
-      legend: {
-        show: true,
-        floating: true,
-        fontSize: "13px",
-        position: "left",
-        labels: {
-          useSeriesColors: true
-        },
-        formatter: function(seriesName, opts) {
-          return seriesName + ":  " + opts.w.globals.series[opts.seriesIndex];
-        },
-        itemMargin: {
-          horizontal: 3
-        }
-      },
-      responsive: [
-        {
-          breakpoint: 480,
-          options: {
-            legend: {
-              show: false
-            }
-          }
-        }
-      ]
-    };
-  }
-
-  openDialog(){
-    const dialogRef = this.dialog.open(DashboardDialoComponent, {
-      data: {userID: this.profileDetails[0]["id"]}
-    });
-
-    dialogRef.afterClosed().subscribe(result => {
-      
-      
-      this.showInitials = false;
-      this.avatarLink = result;
-    });
-  }
-  constructor(private router:Router,public dialog: MatDialog, public PreSurService : PreSurveyService, public cpcqService : CPCQService) {
-
-    this.openDialog1(1);
-    
-    this.chartOptions = {
-      series: [76],
-      chart: {
-        height: 300,
-        type: "radialBar",
-        offsetY: -20
-      },
-      plotOptions: {
-        radialBar: {
-          startAngle: -90,
-          endAngle: 90,
-          track: {
-            background: "#e7e7e7",
-            strokeWidth: "97%",
-            margin: 5, // margin is in pixels
-            dropShadow: {
-              enabled: true,
-              top: 2,
-              left: 0,
-              opacity: 0.31,
-              blur: 2
-            }
-          },
-          dataLabels: {
-            value: {
-              // offsetY: -2,
-              fontSize: "22px"
-            },
-            name: {
-              show: true,
-              fontSize: "13px",
-              color: "green"
-            }
-            
-          }
-        }
-      },
-      fill: {
-        type: "gradient",
-        gradient: {
-          shade: "light",
-          shadeIntensity: 0.4,
-          inverseColors: false,
-          opacityFrom: 1,
-          opacityTo: 1,
-          stops: [0, 50, 53, 91]
-        }
-      },
-      labels: ["Culturally Competent"]
-    };
-
-    
-      this.chartOptions1 = {
-        series: [44, 55, 67, 83,56],
-        chart: {
-          height: 200,
-          width: 300,
-          type: "radialBar",
-          events:{
-            click: function(event, chartContext, config) {
-              
-              
-              
-              
-              // The last parameter config contains additional information like `seriesIndex` and `dataPointIndex` for cartesian charts.
-            }
-          }
-        },
-        plotOptions: {
-          radialBar: {
-            dataLabels: {
-              name: {
-                fontSize: "22px"
-              },
-              value: {
-                fontSize: "16px"
-              },
-              total: {
-                show: true,
-                label: "Total",
-                formatter: function(w) {
-                  return "249";
-                }
-              }
-            }
-          }
-        },
-        labels: ["Attitude", "Empathy", "Policy", "Professionalism","Teaching Practice"]
-      };
-    
-  }
-
-   public generateData(count, yrange) {
-    var i = 0;
-    var series = [];
-    while (i < count) {
-      var x = "w" + (i + 1).toString();
-      var y =
-        Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min;
-
-      series.push({
-        x: x,
-        y: y
-      });
-      i++;
-    }
-    return series;
-  }
-
-  ngOnInit(): void {
-    if (!this.photoUrl) {
-      this.showInitials = true;
-      this.createInititals();
-
-      const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length));
-      this.circleColor = this.colors[randomIndex];
-  }
-  this.PreSurService.profileData().subscribe((res)=> {
-    this.profileDetails = res
-    this.email = res[0]["email"]
-    this.location = res[0]["location"]
-    this.gender = res[0]["gender"]
-    this.userName = res[0]["first_name"]
-    this.preSurveyDate = new Date(res[0]["preSurveydate"]).toLocaleDateString("en-US", { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' } )
-    this.responsesDate = new Date(res[0]["responsesdate"]).toLocaleDateString("en-US", { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' } )
-    this.cpcqDate = new Date(res[0]["cpcqdate"]).toLocaleDateString("en-US", { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' } )
-    this.scoreDate = new Date(res[0]["scoredate"]).toLocaleDateString("en-US", { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' } )
-    this.postSurveyDate = new Date(res[0]["postSurveydate"]).toLocaleDateString("en-US", { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' } )
-
-
-    // this.currentStatus = res[0]["status"].lastIndexOf(true)
-    // 
-    if(res[0]["photo_profile"].length != 0){
-      this.showInitials = false
-      var lenSTr = res[0]["photo_profile"].length
-      this.avatarLink = res[0]["photo_profile"]
-    }
-  })
-
-  this.cpcqService.getCPCQStatus().subscribe((res) => {
-    this.finalDate = new Date(res[0]["created"]).toDateString()
-  })
-
-
-  }
-
-  private createInititals(): void {
-    let initials = "";
-
-    for (let i = 0; i < this.name.length; i++) {
-        if (this.name.charAt(i) === ' ') {
-            continue;
-        }
-
-        if (this.name.charAt(i) === this.name.charAt(i).toUpperCase()) {
-            initials += this.name.charAt(i);
-
-            if (initials.length == 2) {
-                break;
-            }
-        }
-    }
-
-    this.initials = initials;
-}
-  preSurvey(){
-    this.router.navigateByUrl("/preSurvey");
-  }
-}
-
-
diff --git a/src/app/final-feedback/final-feedback.component.ts b/src/app/final-feedback/final-feedback.component.ts
deleted file mode 100644
index 11dfac4..0000000
--- a/src/app/final-feedback/final-feedback.component.ts
+++ /dev/null
@@ -1,1226 +0,0 @@
-import { Component, OnInit, Inject } from '@angular/core';
-import {AfterViewInit, ElementRef, ViewChild} from '@angular/core';
-import { Router } from '@angular/router';
-import { FirstForm } from "../../services/firstForm.service";
-import { FormBuilder, FormGroup,Validators } from '@angular/forms';
-import Swal from 'sweetalert2';
-import {ThemePalette} from '@angular/material/core';
-import {ProgressBarMode} from '@angular/material/progress-bar';
-declare var $: any;
-import * as RecordRTC from 'recordrtc';
-import { DomSanitizer } from '@angular/platform-browser';
-import {MatDialog, MAT_DIALOG_DATA} from '@angular/material/dialog';
-import {DialogFormComponent} from '../cpcq-form/dialog-form/dialog-form.component'
-
-import {CPCQService} from '../../services/cpcq.service';
-
-export interface DialogData {
-  animal: 'panda' | 'unicorn' | 'lion';
-  status;
-  result;
-}
-@Component({
-  selector: 'app-final-feedback',
-  templateUrl: './final-feedback.component.html',
-  styleUrls: ['./final-feedback.component.css']
-})
-export class FinalFeedbackComponent implements OnInit, AfterViewInit {
-  firstForm: FormGroup;
-  responseList:any ;
-  loaded = false;
-
-  questionArray = [["Enter First Name","text"],["Enter Last Name","text"],["Enter Age","number"]];
-  statusCheck = false;
-  buttonClick = false;
-
-  sliderValue = 0;
-
-  selectedIndex = 7;
-
-  color: ThemePalette = 'primary';
-  mode: ProgressBarMode = 'buffer';
-  value1 = 50;
-  bufferValue = 100;
-
-  formValues = [];
-  attributes = ["Attitude","Empathy","Policy","Professionalism","Teaching Practice"];
-  columnHeadings = ["culturalDestructivenessresponse","culturalIncapacityresponse","culturalBlindnessresponse","culturalPreCompetenceresponse","culturalCompetenceresponse","culturalProficiencyresponse"]
-  rowLetters = [["D",'C','B','A','F','E'],['E','A','F','D','B','C'],['F','E','B','C','D','A'],['E','A','B','D','C','F'],['D','C','B','E','A','F']];
-  boldList = [[]];
-  randomList = [[]];
-  finalList=[[]];
-  finalList1 = [];
-  attitudeForm: FormGroup;
-  empathyForm: FormGroup;
-  policyForm: FormGroup;
-
-  finalFeedbackForm:FormGroup;
-
-
-
-
-  //arrays of data getting from the backend
-
-  attitude:any;
-  empathy :any;
-  policy:any;
-  professionalism:any;
-  teachingPractice:any;
-  wordDescription:any;
-  unpackedCount = 0;
-
-  startTime: any;
-  endTime: any;
-  durationTime : any;
-
-  @ViewChild('changeDiv') changeDiv: ElementRef;
-  @ViewChild('changeDiv1') changeDiv1: ElementRef;
-  @ViewChild('changeDiv2') changeDiv2: ElementRef;
-  @ViewChild('changeDiv3') changeDiv3: ElementRef;
-  @ViewChild('changeDiv4') changeDiv4: ElementRef;
-  @ViewChild('changeDiv5') changeDiv5: ElementRef;
-  @ViewChild('changeDiv6') changeDiv6: ElementRef;
-  @ViewChild('changeDiv7') changeDiv7: ElementRef;
-  @ViewChild('changeDiv8') changeDiv8: ElementRef;
-  @ViewChild('changeDiv9') changeDiv9: ElementRef;
-  @ViewChild('changeDiv10') changeDiv10: ElementRef;
-  @ViewChild('changeDiv11') changeDiv11: ElementRef;
-  @ViewChild('changeDiv12') changeDiv12: ElementRef;
-  @ViewChild('changeDiv13') changeDiv13: ElementRef;
-  @ViewChild('changeDiv14') changeDiv14: ElementRef;
-  @ViewChild('changeDiv15') changeDiv15: ElementRef;
-  @ViewChild('changeDiv16') changeDiv16: ElementRef;
-  @ViewChild('changeDiv17') changeDiv17: ElementRef;
-  @ViewChild('changeDiv18') changeDiv18: ElementRef;
-  @ViewChild('changeDiv19') changeDiv19: ElementRef;
-  @ViewChild('changeDiv20') changeDiv20: ElementRef;
-  @ViewChild('changeDiv21') changeDiv21: ElementRef;
-  @ViewChild('changeDiv22') changeDiv22: ElementRef;
-  @ViewChild('changeDiv23') changeDiv23: ElementRef;
-  @ViewChild('changeDiv24') changeDiv24: ElementRef;
-  @ViewChild('changeDiv25') changeDiv25: ElementRef;
-  @ViewChild('changeDiv26') changeDiv26: ElementRef;
-  @ViewChild('changeDiv27') changeDiv27: ElementRef;
-  @ViewChild('changeDiv28') changeDiv28: ElementRef;
-  @ViewChild('changeDiv29') changeDiv29: ElementRef;
-
-
-
-
-
-
-
-
-
-    ngAfterViewInit() {
-        
-
-
-    }
-
-    sliderFunction1(){
-      if(this.sliderValue == 1){
-        this.changeDiv.nativeElement.style.fontSize = "15px";
-        this.changeDiv1.nativeElement.style.fontSize = "15px";
-        this.changeDiv2.nativeElement.style.fontSize = "15px";
-        this.changeDiv3.nativeElement.style.fontSize = "15px";
-        this.changeDiv4.nativeElement.style.fontSize = "15px";
-        this.changeDiv5.nativeElement.style.fontSize = "15px";
-        this.changeDiv6.nativeElement.style.fontSize = "15px";
-        this.changeDiv7.nativeElement.style.fontSize = "15px";
-        this.changeDiv8.nativeElement.style.fontSize = "15px";
-        this.changeDiv9.nativeElement.style.fontSize = "15px";
-        this.changeDiv10.nativeElement.style.fontSize = "15px";
-        this.changeDiv11.nativeElement.style.fontSize = "15px";
-        this.changeDiv12.nativeElement.style.fontSize = "15px";
-        this.changeDiv13.nativeElement.style.fontSize = "15px";
-        this.changeDiv14.nativeElement.style.fontSize = "15px";
-        this.changeDiv15.nativeElement.style.fontSize = "15px";
-        this.changeDiv16.nativeElement.style.fontSize = "15px";
-        this.changeDiv17.nativeElement.style.fontSize = "15px";
-        this.changeDiv18.nativeElement.style.fontSize = "15px";
-        this.changeDiv19.nativeElement.style.fontSize = "15px";
-        this.changeDiv20.nativeElement.style.fontSize = "15px";
-        this.changeDiv21.nativeElement.style.fontSize = "15px";
-        this.changeDiv22.nativeElement.style.fontSize = "15px";
-        this.changeDiv23.nativeElement.style.fontSize = "15px";
-        this.changeDiv24.nativeElement.style.fontSize = "15px";
-        this.changeDiv25.nativeElement.style.fontSize = "15px";
-        this.changeDiv26.nativeElement.style.fontSize = "15px";
-        this.changeDiv27.nativeElement.style.fontSize = "15px";
-        this.changeDiv28.nativeElement.style.fontSize = "15px";
-        this.changeDiv29.nativeElement.style.fontSize = "15px";
-
-        }
-        else if(this.sliderValue == 2){
-        this.changeDiv.nativeElement.style.fontSize = "20px";
-        this.changeDiv1.nativeElement.style.fontSize = "20px";
-        this.changeDiv2.nativeElement.style.fontSize = "20px";
-        this.changeDiv3.nativeElement.style.fontSize = "20px";
-        this.changeDiv4.nativeElement.style.fontSize = "20px";
-        this.changeDiv5.nativeElement.style.fontSize = "20px";
-        this.changeDiv6.nativeElement.style.fontSize = "20px";
-        this.changeDiv7.nativeElement.style.fontSize = "20px";
-        this.changeDiv8.nativeElement.style.fontSize = "20px";
-        this.changeDiv9.nativeElement.style.fontSize = "20px";
-        this.changeDiv10.nativeElement.style.fontSize = "20px";
-        this.changeDiv11.nativeElement.style.fontSize = "20px";
-        this.changeDiv12.nativeElement.style.fontSize = "20px";
-        this.changeDiv13.nativeElement.style.fontSize = "20px";
-        this.changeDiv14.nativeElement.style.fontSize = "20px";
-        this.changeDiv15.nativeElement.style.fontSize = "20px";
-        this.changeDiv16.nativeElement.style.fontSize = "20px";
-        this.changeDiv17.nativeElement.style.fontSize = "20px";
-        this.changeDiv18.nativeElement.style.fontSize = "20px";
-        this.changeDiv19.nativeElement.style.fontSize = "20px";
-        this.changeDiv20.nativeElement.style.fontSize = "20px";
-        this.changeDiv21.nativeElement.style.fontSize = "20px";
-        this.changeDiv22.nativeElement.style.fontSize = "20px";
-        this.changeDiv23.nativeElement.style.fontSize = "20px";
-        this.changeDiv24.nativeElement.style.fontSize = "20px";
-        this.changeDiv25.nativeElement.style.fontSize = "20px";
-        this.changeDiv26.nativeElement.style.fontSize = "20px";
-        this.changeDiv27.nativeElement.style.fontSize = "20px";
-        this.changeDiv28.nativeElement.style.fontSize = "20px";
-        this.changeDiv29.nativeElement.style.fontSize = "20px";
-        }
-        else if(this.sliderValue == 3){
-          this.changeDiv.nativeElement.style.fontSize = "22px";
-          this.changeDiv1.nativeElement.style.fontSize = "22px";
-          this.changeDiv2.nativeElement.style.fontSize = "22px";
-          this.changeDiv3.nativeElement.style.fontSize = "22px";
-          this.changeDiv4.nativeElement.style.fontSize = "22px";
-          this.changeDiv5.nativeElement.style.fontSize = "22px";
-          this.changeDiv6.nativeElement.style.fontSize = "22px";
-          this.changeDiv7.nativeElement.style.fontSize = "22px";
-          this.changeDiv8.nativeElement.style.fontSize = "22px";
-          this.changeDiv9.nativeElement.style.fontSize = "22px";
-          this.changeDiv10.nativeElement.style.fontSize = "22px";
-          this.changeDiv11.nativeElement.style.fontSize = "22px";
-          this.changeDiv12.nativeElement.style.fontSize = "22px";
-          this.changeDiv13.nativeElement.style.fontSize = "22px";
-          this.changeDiv14.nativeElement.style.fontSize = "22px";
-          this.changeDiv15.nativeElement.style.fontSize = "22px";
-          this.changeDiv16.nativeElement.style.fontSize = "22px";
-          this.changeDiv17.nativeElement.style.fontSize = "22px";
-          this.changeDiv18.nativeElement.style.fontSize = "22px";
-          this.changeDiv19.nativeElement.style.fontSize = "22px";
-          this.changeDiv20.nativeElement.style.fontSize = "22px";
-          this.changeDiv21.nativeElement.style.fontSize = "22px";
-          this.changeDiv22.nativeElement.style.fontSize = "22px";
-          this.changeDiv23.nativeElement.style.fontSize = "22px";
-          this.changeDiv24.nativeElement.style.fontSize = "22px";
-          this.changeDiv25.nativeElement.style.fontSize = "22px";
-          this.changeDiv26.nativeElement.style.fontSize = "22px";
-          this.changeDiv27.nativeElement.style.fontSize = "22px";
-          this.changeDiv28.nativeElement.style.fontSize = "22px";
-          this.changeDiv29.nativeElement.style.fontSize = "22px";
-        }
-        else if(this.sliderValue == 4){
-        this.changeDiv.nativeElement.style.fontSize = "25px";
-        this.changeDiv1.nativeElement.style.fontSize = "25px";
-        this.changeDiv2.nativeElement.style.fontSize = "25px";
-        this.changeDiv3.nativeElement.style.fontSize = "25px";
-        this.changeDiv4.nativeElement.style.fontSize = "25px";
-        this.changeDiv5.nativeElement.style.fontSize = "25px";
-        this.changeDiv6.nativeElement.style.fontSize = "25px";
-        this.changeDiv7.nativeElement.style.fontSize = "25px";
-        this.changeDiv8.nativeElement.style.fontSize = "25px";
-        this.changeDiv9.nativeElement.style.fontSize = "25px";
-        this.changeDiv10.nativeElement.style.fontSize = "25px";
-        this.changeDiv11.nativeElement.style.fontSize = "25px";
-        this.changeDiv12.nativeElement.style.fontSize = "25px";
-        this.changeDiv13.nativeElement.style.fontSize = "25px";
-        this.changeDiv14.nativeElement.style.fontSize = "25px";
-        this.changeDiv15.nativeElement.style.fontSize = "25px";
-        this.changeDiv16.nativeElement.style.fontSize = "25px";
-        this.changeDiv17.nativeElement.style.fontSize = "25px";
-        this.changeDiv18.nativeElement.style.fontSize = "25px";
-        this.changeDiv19.nativeElement.style.fontSize = "25px";
-        this.changeDiv20.nativeElement.style.fontSize = "25px";
-        this.changeDiv21.nativeElement.style.fontSize = "25px";
-        this.changeDiv22.nativeElement.style.fontSize = "25px";
-        this.changeDiv23.nativeElement.style.fontSize = "25px";
-        this.changeDiv24.nativeElement.style.fontSize = "25px";
-        this.changeDiv25.nativeElement.style.fontSize = "25px";
-        this.changeDiv26.nativeElement.style.fontSize = "25px";
-        this.changeDiv27.nativeElement.style.fontSize = "25px";
-        this.changeDiv28.nativeElement.style.fontSize = "25px";
-        this.changeDiv29.nativeElement.style.fontSize = "25px";
-        }
-        else if(this.sliderValue == 5){
-        this.changeDiv.nativeElement.style.fontSize = "50px";
-        this.changeDiv1.nativeElement.style.fontSize = "50px";
-        this.changeDiv2.nativeElement.style.fontSize = "50px";
-        this.changeDiv3.nativeElement.style.fontSize = "50px";
-        this.changeDiv4.nativeElement.style.fontSize = "50px";
-        this.changeDiv5.nativeElement.style.fontSize = "50px";
-        
-        }
-    }
-    sliderFunction(e){
-      // 
-      this.sliderValue = e.value;
-      if(e.value == 1){
-        this.changeDiv.nativeElement.style.fontSize = "15px";
-        this.changeDiv1.nativeElement.style.fontSize = "15px";
-        this.changeDiv2.nativeElement.style.fontSize = "15px";
-        this.changeDiv3.nativeElement.style.fontSize = "15px";
-        this.changeDiv4.nativeElement.style.fontSize = "15px";
-        this.changeDiv5.nativeElement.style.fontSize = "15px";
-        this.changeDiv6.nativeElement.style.fontSize = "15px";
-        this.changeDiv7.nativeElement.style.fontSize = "15px";
-        this.changeDiv8.nativeElement.style.fontSize = "15px";
-        this.changeDiv9.nativeElement.style.fontSize = "15px";
-        this.changeDiv10.nativeElement.style.fontSize = "15px";
-        this.changeDiv11.nativeElement.style.fontSize = "15px";
-        this.changeDiv12.nativeElement.style.fontSize = "15px";
-        this.changeDiv13.nativeElement.style.fontSize = "15px";
-        this.changeDiv14.nativeElement.style.fontSize = "15px";
-        this.changeDiv15.nativeElement.style.fontSize = "15px";
-        this.changeDiv16.nativeElement.style.fontSize = "15px";
-        this.changeDiv17.nativeElement.style.fontSize = "15px";
-        this.changeDiv18.nativeElement.style.fontSize = "15px";
-        this.changeDiv19.nativeElement.style.fontSize = "15px";
-        this.changeDiv20.nativeElement.style.fontSize = "15px";
-        this.changeDiv21.nativeElement.style.fontSize = "15px";
-        this.changeDiv22.nativeElement.style.fontSize = "15px";
-        this.changeDiv23.nativeElement.style.fontSize = "15px";
-        this.changeDiv24.nativeElement.style.fontSize = "15px";
-        this.changeDiv25.nativeElement.style.fontSize = "15px";
-        this.changeDiv26.nativeElement.style.fontSize = "15px";
-        this.changeDiv27.nativeElement.style.fontSize = "15px";
-        this.changeDiv28.nativeElement.style.fontSize = "15px";
-        this.changeDiv29.nativeElement.style.fontSize = "15px";
-
-        }
-        else if(e.value == 2){
-        this.changeDiv.nativeElement.style.fontSize = "20px";
-        this.changeDiv1.nativeElement.style.fontSize = "20px";
-        this.changeDiv2.nativeElement.style.fontSize = "20px";
-        this.changeDiv3.nativeElement.style.fontSize = "20px";
-        this.changeDiv4.nativeElement.style.fontSize = "20px";
-        this.changeDiv5.nativeElement.style.fontSize = "20px";
-        this.changeDiv6.nativeElement.style.fontSize = "20px";
-        this.changeDiv7.nativeElement.style.fontSize = "20px";
-        this.changeDiv8.nativeElement.style.fontSize = "20px";
-        this.changeDiv9.nativeElement.style.fontSize = "20px";
-        this.changeDiv10.nativeElement.style.fontSize = "20px";
-        this.changeDiv11.nativeElement.style.fontSize = "20px";
-        this.changeDiv12.nativeElement.style.fontSize = "20px";
-        this.changeDiv13.nativeElement.style.fontSize = "20px";
-        this.changeDiv14.nativeElement.style.fontSize = "20px";
-        this.changeDiv15.nativeElement.style.fontSize = "20px";
-        this.changeDiv16.nativeElement.style.fontSize = "20px";
-        this.changeDiv17.nativeElement.style.fontSize = "20px";
-        this.changeDiv18.nativeElement.style.fontSize = "20px";
-        this.changeDiv19.nativeElement.style.fontSize = "20px";
-        this.changeDiv20.nativeElement.style.fontSize = "20px";
-        this.changeDiv21.nativeElement.style.fontSize = "20px";
-        this.changeDiv22.nativeElement.style.fontSize = "20px";
-        this.changeDiv23.nativeElement.style.fontSize = "20px";
-        this.changeDiv24.nativeElement.style.fontSize = "20px";
-        this.changeDiv25.nativeElement.style.fontSize = "20px";
-        this.changeDiv26.nativeElement.style.fontSize = "20px";
-        this.changeDiv27.nativeElement.style.fontSize = "20px";
-        this.changeDiv28.nativeElement.style.fontSize = "20px";
-        this.changeDiv29.nativeElement.style.fontSize = "20px";
-        }
-        else if(e.value == 3){
-          this.changeDiv.nativeElement.style.fontSize = "22px";
-          this.changeDiv1.nativeElement.style.fontSize = "22px";
-          this.changeDiv2.nativeElement.style.fontSize = "22px";
-          this.changeDiv3.nativeElement.style.fontSize = "22px";
-          this.changeDiv4.nativeElement.style.fontSize = "22px";
-          this.changeDiv5.nativeElement.style.fontSize = "22px";
-          this.changeDiv6.nativeElement.style.fontSize = "22px";
-          this.changeDiv7.nativeElement.style.fontSize = "22px";
-          this.changeDiv8.nativeElement.style.fontSize = "22px";
-          this.changeDiv9.nativeElement.style.fontSize = "22px";
-          this.changeDiv10.nativeElement.style.fontSize = "22px";
-          this.changeDiv11.nativeElement.style.fontSize = "22px";
-          this.changeDiv12.nativeElement.style.fontSize = "22px";
-          this.changeDiv13.nativeElement.style.fontSize = "22px";
-          this.changeDiv14.nativeElement.style.fontSize = "22px";
-          this.changeDiv15.nativeElement.style.fontSize = "22px";
-          this.changeDiv16.nativeElement.style.fontSize = "22px";
-          this.changeDiv17.nativeElement.style.fontSize = "22px";
-          this.changeDiv18.nativeElement.style.fontSize = "22px";
-          this.changeDiv19.nativeElement.style.fontSize = "22px";
-          this.changeDiv20.nativeElement.style.fontSize = "22px";
-          this.changeDiv21.nativeElement.style.fontSize = "22px";
-          this.changeDiv22.nativeElement.style.fontSize = "22px";
-          this.changeDiv23.nativeElement.style.fontSize = "22px";
-          this.changeDiv24.nativeElement.style.fontSize = "22px";
-          this.changeDiv25.nativeElement.style.fontSize = "22px";
-          this.changeDiv26.nativeElement.style.fontSize = "22px";
-          this.changeDiv27.nativeElement.style.fontSize = "22px";
-          this.changeDiv28.nativeElement.style.fontSize = "22px";
-          this.changeDiv29.nativeElement.style.fontSize = "22px";
-        }
-        else if(e.value == 4){
-        this.changeDiv.nativeElement.style.fontSize = "25px";
-        this.changeDiv1.nativeElement.style.fontSize = "25px";
-        this.changeDiv2.nativeElement.style.fontSize = "25px";
-        this.changeDiv3.nativeElement.style.fontSize = "25px";
-        this.changeDiv4.nativeElement.style.fontSize = "25px";
-        this.changeDiv5.nativeElement.style.fontSize = "25px";
-        this.changeDiv6.nativeElement.style.fontSize = "25px";
-        this.changeDiv7.nativeElement.style.fontSize = "25px";
-        this.changeDiv8.nativeElement.style.fontSize = "25px";
-        this.changeDiv9.nativeElement.style.fontSize = "25px";
-        this.changeDiv10.nativeElement.style.fontSize = "25px";
-        this.changeDiv11.nativeElement.style.fontSize = "25px";
-        this.changeDiv12.nativeElement.style.fontSize = "25px";
-        this.changeDiv13.nativeElement.style.fontSize = "25px";
-        this.changeDiv14.nativeElement.style.fontSize = "25px";
-        this.changeDiv15.nativeElement.style.fontSize = "25px";
-        this.changeDiv16.nativeElement.style.fontSize = "25px";
-        this.changeDiv17.nativeElement.style.fontSize = "25px";
-        this.changeDiv18.nativeElement.style.fontSize = "25px";
-        this.changeDiv19.nativeElement.style.fontSize = "25px";
-        this.changeDiv20.nativeElement.style.fontSize = "25px";
-        this.changeDiv21.nativeElement.style.fontSize = "25px";
-        this.changeDiv22.nativeElement.style.fontSize = "25px";
-        this.changeDiv23.nativeElement.style.fontSize = "25px";
-        this.changeDiv24.nativeElement.style.fontSize = "25px";
-        this.changeDiv25.nativeElement.style.fontSize = "25px";
-        this.changeDiv26.nativeElement.style.fontSize = "25px";
-        this.changeDiv27.nativeElement.style.fontSize = "25px";
-        this.changeDiv28.nativeElement.style.fontSize = "25px";
-        this.changeDiv29.nativeElement.style.fontSize = "25px";
-        }
-        else if(e.value == 5){
-        this.changeDiv.nativeElement.style.fontSize = "50px";
-        this.changeDiv1.nativeElement.style.fontSize = "50px";
-        this.changeDiv2.nativeElement.style.fontSize = "50px";
-        this.changeDiv3.nativeElement.style.fontSize = "50px";
-        this.changeDiv4.nativeElement.style.fontSize = "50px";
-        this.changeDiv5.nativeElement.style.fontSize = "50px";
-        
-        }
-
-    }
-  constructor(private fb: FormBuilder, private apiService: CPCQService,private router: Router, private formService : FirstForm,private domSanitizer: DomSanitizer,public dialog: MatDialog) { }
-  openDialog(i,j,id) {
-    // 
-    
-    
-    var arr = [];
-    arr.push(this.attributes[i]);
-    arr.push(j);
-    arr.push(this.columnHeadings[j])
-    arr.push(id)
-    const dialogRef = this.dialog.open(DialogFormComponent, {
-      data: {
-        animal: arr,
-        status : "form"
-      },
-      disableClose:true
-    });
-    dialogRef.afterClosed().subscribe(result => {
-      
-      if(this.responsesArray[i][j][1] == "colorbold"){
-        this.unpackedCount = this.unpackedCount +1
-      }
-      
-    })
-  }
-
-  openWordDialog(i) {
-    // 
-    this.buttonClick = true;
-    const dialogRef = this.dialog.open(DialogFormComponent, {
-      data: {
-        animal: i,
-        status : "word"
-      },
-      disableClose:true
-    });
-
-    dialogRef.afterClosed().subscribe(result => {
-      
-      this.wordDescription = result;
-    })
-  }
-
-  helpDialog(i) {
-    // 
-    this.dialog.open(DialogFormComponent, {
-      data: {
-        animal: i,
-        status : "help"
-      }
-    });
-  }
-
-  keyPressFunc(e){
-
-    // 
-    var numbersList = ["1"];
-    for (let key in this.attitudeForm.value) {
-      
-
-      if(numbersList.indexOf(this.attitudeForm.value[key]) == -1){
-        // 
-        return "Number";
-      }
-    }
-
-    
-  }
-
-  getEmailError(){
-    return "Error";
-  }
-responsesArray =[]
-temp = []
-  getResponses(){
-    this.apiService.getResponsesData().subscribe((res) => {
-      for(let key in res){
-        this.temp = []
-        for(let key1 in res[key]){
-          this.temp.push(res[key][key1])
-        }
-        this.responsesArray.push(this.temp)
-      }
-      
-    })
-  }
-
-
-  getForm(){
-    var arr = [];
-    var arr1 = [];
-    var arr2 = [];
-    var i;
-    var attitudeResult = [];
-    var empathyResult = [];
-    var policyResult = [];
-    var profResult = [];
-    var teachingResult = [];
-    this.finalList = [[]]
-    this.boldList = [[]]
-    this.apiService.getFormData().subscribe((res) => {
-      for (let key in res){
-        arr = [];
-        if(res[key]["topic"] == "Attitude"){
-          attitudeResult.push("Attitude");
-          arr.push("Attitude");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0 )
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1])-4)  >= 2 ? 1 : 0)
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1])-5)  >= 2 ? 1 : 0)
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1])-6)  >= 2 ? 1 : 0)
-        } 
-        else if (res[key]["topic"] == "Empathy"){
-          empathyResult.push("Empathy")
-          arr.push("Empathy");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0 )
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1])-4)  >= 2 ? 1 : 0)
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1])-5)  >= 2 ? 1 : 0)
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1])-6)  >= 2 ? 1 : 0)
-        }
-        else if (res[key]["topic"] == "Policy"){
-          policyResult.push("Policy")
-          arr.push("Policy");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-
-          policyResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          policyResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          policyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0 )
-          policyResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1])-4)  >= 2 ? 1 : 0)
-          policyResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1])-5)  >= 2 ? 1 : 0)
-          policyResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1])-6)  >= 2 ? 1 : 0)
-        }
-        else if (res[key]["topic"] == "Professionalism"){
-          profResult.push("Professionalism");
-          arr.push("Professionalism");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-
-          profResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          profResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          profResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0 )
-          profResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1])-4)  >= 2 ? 1 : 0)
-          profResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1])-5)  >= 2 ? 1 : 0)
-          profResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1])-6)  >= 2 ? 1 : 0)
-        }
-        else if (res[key]["topic"] == "Teaching Practice"){
-          arr.push("Teaching Pracice");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-          teachingResult.push("Teaching Practice");
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0 )
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1])-4)  >= 2 ? 1 : 0)
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1])-5)  >= 2 ? 1 : 0)
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1])-6)  >= 2 ? 1 : 0)
-        }
-
-        this.boldList.push(arr);
-
-      }
-      this.finalList.push(attitudeResult)
-      this.finalList.push(empathyResult)
-      this.finalList.push(policyResult)
-      this.finalList.push(profResult)
-      this.finalList.push(teachingResult)
-    })
-    this.finalList.splice(0, 1);
-    this.boldList.splice(0, 1);
-    // this.getAllIndexes(this.finalList,1)
-    
-    
-
-  }
-
-  emoji:any;
-  changeEmojiSize(data){
-    document.getElementById("angry").style.height = "30px"
-    document.getElementById("angry").style.width = "30px"
-    document.getElementById("sad").style.height = "30px"
-    document.getElementById("sad").style.width = "30px"
-    document.getElementById("neutral").style.height = "30px"
-    document.getElementById("neutral").style.width = "30px"
-    document.getElementById("smile").style.height = "30px"
-    document.getElementById("smile").style.width = "30px"
-    document.getElementById("heart").style.height = "30px"
-    document.getElementById("heart").style.width = "30px"
-    document.getElementById(data).style.height = "50px"
-    document.getElementById(data).style.width = "50px"
-
-    this.emoji = data;
-  }
-
-  thumbs:any;
-  changeThumbsSize(data){
-    document.getElementById("thumbsup").style.height = "30px"
-    document.getElementById("thumbsup").style.width = "30px"
-    document.getElementById("thumbsdown").style.height = "30px"
-    document.getElementById("thumbsdown").style.width = "30px"
-
-    document.getElementById(data).style.height = "50px"
-    document.getElementById(data).style.width = "50px"
-    this.thumbs = data;
-  }
-  finalSubmit(){
-    this.finalFeedbackForm.value["q6"] = this.thumbs
-    this.finalFeedbackForm.value["q7"] = this.emoji
-
-    this.endTime = new Date()
-    
-    this.durationTime = (this.endTime - this.startTime)/1000
-    this.durationTime = this.durationTime/ 60
-
-    this.apiService.patchStatus("finalfeedbackstatus").subscribe((res) => {
-
-    })
-
-    this.apiService.postFeedbackForm(this.finalFeedbackForm.value).subscribe((res) => {
-      this.apiService.changeCPCQStatus().subscribe((res1) => {
-        Swal.fire({
-          text: "Submitted",
-          icon: "success"
-        }).then((res) => {
-          if(res["isConfirmed"]){
-            this.router.navigateByUrl("/result")
-          }
-        })
-        
-      })
-    },(err) => {
-      
-    })
-    
-  }
-  ngOnInit(): void {
-    this.startTime = new Date()
-    this.finalFeedbackForm = this.fb.group({
-      q1:[""],
-      q2:[""],
-      q3:[""],
-      q4:[""],
-      q5:[""],
-      q6:[""],
-      q7:[""],
-    })
-
-    this.apiService.attitudeData().subscribe((res) => {
-      // 
-      this.attitude = res[0];
-      // 
-    },(err) => {
-      
-    })
-
-    this.apiService.empathyData().subscribe((res) => {
-      // 
-      this.empathy = res[0];
-      // 
-    },(err) => {
-      
-    })
-
-    this.apiService.policyData().subscribe((res) => {
-      this.policy = res[0];
-    },(err) => {
-      
-    })
-
-    this.apiService.professionalismData().subscribe((res) => {
-      this.professionalism = res[0];
-    },(err) => {
-      
-    })
-
-    this.apiService.teachingData().subscribe((res) => {
-      this.teachingPractice = res[0];
-    },(err) => {
-      
-    })
-
-    this.attitudeForm = this.fb.group({
-      A:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      B:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      C:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      D:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      E:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      F:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      description:["",[Validators.required]]
-
-    })
-
-    this.empathyForm = this.fb.group({
-      A:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      B:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      C:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      D:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      E:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      F:["",[Validators.minLength(1),Validators.maxLength(1)]],
-
-    })
-
-    this.policyForm = this.fb.group({
-      A:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      B:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      C:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      D:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      E:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      F:["",[Validators.minLength(1),Validators.maxLength(1)]],
-
-    })
-
-
-    var arr = [];
-    var arr1 = [];
-    var arr2 = [];
-    var i;
-    for(var j = 0;j<5;j++){
-      arr = [];
-      arr1 = [];
-      arr2 = [];
-      i = 0;
-      while(i<6){
-        var item1 = Math.floor(Math.random() * (7 - 1) + 1); 
-        if(arr1.indexOf(item1) == -1){
-          if(i == 0){
-            arr.push(this.attributes[j]);
-            arr.push(this.rowLetters[j][i] + ". "+ item1);
-            arr1.push(item1);
-            if(arr1[arr1.length -1] >2){
-              // 
-              arr2.push("True");
-            }
-            else{
-              arr2.push("False");
-            }
-          }
-          else{
-            arr.push(this.rowLetters[j][i] + ". "+ item1);
-            arr1.push(item1);
-            if(i==1){
-              if(arr1[arr1.length - 1] >3){
-                arr2.push("True");
-              }
-              else{
-                arr2.push("False");
-              }
-            }
-            else if(i==2){
-              if(arr1[arr1.length - 1] >4 || arr1[arr1.length - 1] == 1){
-                arr2.push("True");
-              }
-              else{
-                arr2.push("False");
-              }
-            }
-            else if(i==3){
-              if(arr1[arr1.length - 1] >5 || arr1[arr1.length - 1] <4){
-                arr2.push("True");
-              }
-              else{
-                arr2.push("False");
-              }
-            }
-            else if(i==4){
-              if(arr1[arr1.length - 1] <4){
-                arr2.push("True");
-              }
-              else{
-                arr2.push("False");
-              }
-            }
-            else if(i==5){
-              if(arr1[arr1.length - 1] <5){
-                arr2.push("True");
-              }
-              else{
-                arr2.push("False");
-              }
-            }
-          }
-          i = i + 1;
-        }
-        else{
-          continue;
-        }
-        
-      }
-      this.formValues.push(arr);
-      this.boldList.push(arr1);
-      this.randomList.push(arr2);
-    }
-    this.boldList.splice(0, 1);
-    this.randomList.splice(0, 1);
-    
-    
-    
-    this.getAllIndexes(this.randomList,"True");
-    this.loaded = true;
-  }
-
-  getAllIndexes(arr, val) {
-    var indexes = [];
-    var i = -1;
-    for(var i = 0;i<arr.length;i++){
-      for(var j = 0;j<arr[i].length;j++){
-        if(arr[i][j] == "True"){
-          var arr1 = [];
-          arr1.push(i);
-          arr1.push(j)
-          indexes.push(arr1);
-        }
-      }
-    }
-    
-    var arr1 = [];
-    for(var i = 0;i<indexes.length;i++){
-      arr1.push(i);
-    }
-    var ranNums = [];
-    var i = arr1.length;
-    var j = 0;
-    var count = 0;
-    while (i--) {
-      
-      if(count < 5){
-        j = Math.floor(Math.random() * (i+1));
-      ranNums.push(arr1[j]);
-      arr1.splice(j,1);
-      count = count+1;
-      }
-      else{
-        break;
-      }
-  }
-  
-
-  // 
-  for(var i = 0;i<this.boldList.length;i++){
-    var temp = [];
-    for(var j = 0 ;j <6;j++){
-      temp.push("False");
-    }
-    this.finalList1.push(temp);
-  }
-  
-  
-  for(var i = 0;i<ranNums.length;i++){
-    var item = indexes[ranNums[i]];
-    
-    this.finalList1[item[0]][item[1]] = "True";
-  }
-  // this.finalList1.splice(0,1)
-  
-}
-  preSurvey(){
-    this.router.navigateByUrl("/preSurvey");
-  }
-
-  nextButton(){
-    if(this.selectedIndex == 0){
-      this.selectedIndex = this.selectedIndex + 1;
-      return;
-    }
-    if(this.selectedIndex == 7){
-      this.router.navigateByUrl('/dashboard');
-      return;
-    }
-
-    var numberList = [];
-    var flag = true;
-    for (let key in this.attitudeForm.value) {
-      
-      if((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && (key != "description")){
-        flag = false;
-        Swal.fire({
-          text: "Please enter values from 1 through 6 only.",
-          icon: "warning"
-        }).then((res) => {
-        })
-        break;
-      }
-      if(numberList.indexOf(this.attitudeForm.value[key]) == -1){
-        numberList.push(this.attitudeForm.value[key]);
-      }
-      else{
-        flag = false;
-        Swal.fire({
-          text: "The inputs have been repeated. Please enter values from 1 through 6.",
-          icon: "warning"
-        }).then((res) => {
-        })
-        break;
-      }
-    }
-    if(!this.buttonClick){
-      flag = false;
-      Swal.fire({
-
-        text: "Click on the word '"+ this.attributes[this.selectedIndex-1]+"' and respond to the prompt.",
-        icon: "warning"
-      }).then((res) => {
-      })
-    }
-    if(flag){
-      
-      if(this.selectedIndex == 7){
-        this.router.navigateByUrl("/postSurvey");
-      }
-      this.sliderFunction1();
-      var formData = {}
-      formData['topic'] = this.attributes[this.selectedIndex-1]
-      if(this.attributes[this.selectedIndex-1] == "Attitude"){
-        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value['C']
-        formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalPreCompetence"] = "A. " + this.attitudeForm.value['A']
-        formData["culturalCompetence"] = "F. " + this.attitudeForm.value['F']
-        formData["culturalProficiency"] = "E. " + this.attitudeForm.value['E']
-
-      }
-      else if(this.attributes[this.selectedIndex-1] == "Empathy"){
-        formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value['E']
-        formData["culturalIncapacity"] = "A. " + this.attitudeForm.value['A']
-        formData["culturalBlindness"] = "F. " + this.attitudeForm.value['F']
-        formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalCompetence"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalProficiency"] = "C. " + this.attitudeForm.value['C']
-      }
-      else if(this.attributes[this.selectedIndex-1] == "Policy"){
-        formData["culturalDestructiveness"] = "F. " + this.attitudeForm.value['F']
-        formData["culturalIncapacity"] = "E. " + this.attitudeForm.value['E']
-        formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalPreCompetence"] = "C. " + this.attitudeForm.value['C']
-        formData["culturalCompetence"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalProficiency"] = "A. " + this.attitudeForm.value['A']
-      }
-      else if(this.attributes[this.selectedIndex-1] == "Professionalism"){
-        formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value['E']
-        formData["culturalIncapacity"] = "A. " + this.attitudeForm.value['A']
-        formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalCompetence"] = "C. " + this.attitudeForm.value['C']
-        formData["culturalProficiency"] = "F. " + this.attitudeForm.value['F']
-      }
-      else if(this.attributes[this.selectedIndex-1] == "Teaching Practice"){
-        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value['C']
-        formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value['E']
-        formData["culturalCompetence"] = "A. " + this.attitudeForm.value['A']
-        formData["culturalProficiency"] = "F. " + this.attitudeForm.value['F']
-      }
-
-      this.endTime = new Date()
-      
-      this.durationTime = (this.endTime - this.startTime)/1000
-      this.durationTime = this.durationTime/ 60
-      
-      formData["description"] = this.wordDescription
-      formData["duration"] = this.durationTime
-      this.apiService.postFormData(formData).subscribe((res) => {
-        // 
-      },(err) => {
-        
-      })
-      // this.getForm();
-      this.selectedIndex = this.selectedIndex + 1;
-      this.buttonClick = false;
-      this.startTime = new Date()
-      this.attitudeForm = this.fb.group({
-        A:["",[Validators.minLength(1),Validators.maxLength(1)]],
-        B:["",[Validators.minLength(1),Validators.maxLength(1)]],
-        C:["",[Validators.minLength(1),Validators.maxLength(1)]],
-        D:["",[Validators.minLength(1),Validators.maxLength(1)]],
-        E:["",[Validators.minLength(1),Validators.maxLength(1)]],
-        F:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      })
-    }
-   
-  }
-
-  postSurvey(){
-    this.router.navigateByUrl("/postSurvey");
-  }
-
-  submitForm1(){
-    if(this.unpackedCount >= 5 ){
-      this.endTime = new Date()
-      
-      this.durationTime = (this.endTime - this.startTime)/1000
-      this.durationTime = this.durationTime/ 60
-      this.apiService.patchStatus("cpcqstatus").subscribe((res) => {
-        Swal.fire({
-          text: "Submitted",
-          icon: "success"
-        }).then((res) => {
-          if(res["isConfirmed"]){
-            // this.getForm()
-            this.selectedIndex = this.selectedIndex + 1;
-          }
-        })
-      })
-
-    
-    }
-    else{
-      Swal.fire({
-        text: "Please click on all the yellow boxes and answer the questions in the prompt.",
-        icon: "warning"
-      }).then((res) => {
-      })
-    }
-    
-  }
-  
-  submitForm(){
-    if(this.selectedIndex == 5){
-      var numberList = [];
-      var flag = false;
-      
-      for (let key in this.attitudeForm.value) {
-        
-        if((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && (key != "description")){
-        
-
-          flag = true;
-          Swal.fire({
-            text: "Please enter values from 1 through 6 only.",
-            icon: "warning"
-          }).then((res) => {
-          })
-          break;
-        }
-        if(numberList.indexOf(this.attitudeForm.value[key]) == -1){
-          numberList.push(this.attitudeForm.value[key]);
-        }
-        else{
-          flag = true;
-          Swal.fire({
-            text: "The inputs have been repeated. Please enter values from 1 through 6.",
-            icon: "warning"
-          }).then((res) => {
-          })
-          break;
-        }
-      }
-      if(!this.buttonClick){
-        flag = true;
-        Swal.fire({
-          text: "Click on the word '"+ this.attributes[this.selectedIndex-1]+"' and respond to the prompt.",
-          icon: "warning"
-        }).then((res) => {
-        })
-      }
-      if(!flag){
-
-      
-      // 
-      var formData = {}
-
-      formData['topic'] = this.attributes[this.selectedIndex-1]
-      formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value['D']
-      formData["culturalIncapacity"] = "C. " + this.attitudeForm.value['C']
-      formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-      formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value['E']
-      formData["culturalCompetence"] = "A. " + this.attitudeForm.value['A']
-      formData["culturalProficiency"] = "F. " + this.attitudeForm.value['F']
-      
-      formData["description"] = this.wordDescription
-      this.endTime = new Date()
-      
-      this.durationTime = (this.endTime - this.startTime)/1000
-      this.durationTime = this.durationTime/ 60
-
-      formData["duration"] = this.durationTime
-      this.apiService.postFormData(formData).subscribe((res) => {
-        // 
-        this.apiService.patchStatus("responsesstatus").subscribe((res) => {
-          Swal.fire({
-            text: "Submitted",
-            icon: "success"
-          }).then((res) => {
-            if(res["isConfirmed"]){
-              // this.getForm()
-          // this.getResponses()
-          this.router.navigateByUrl("/unpacking")
-  
-              // this.selectedIndex = this.selectedIndex + 1;
-              this.startTime = new Date()
-            }
-          })
-
-        })
-      },(err) => {
-        
-      })
-    }
-   
-  }
-  }
-
-  submit(){
-    // 
-    var tempDict;
-    this.responseList = [];
-    for(let key in this.firstForm.value){
-      tempDict = {}
-      tempDict["question"] = key
-      tempDict["response"] = this.firstForm.value[key];
-      this.responseList.push(tempDict);
-    }
-    // 
-
-    this.formService.submitResponse(this.responseList).subscribe((res) => {
-      // 
-      Swal.fire({
-        text: "Submitted",
-        icon: "success"
-      })  
-      this.router.navigateByUrl("/game");
-    },(err) => {
-      
-      Swal.fire({
-        text: "Duplicate Entries",
-        icon: "warning"
-      })  
-    })
-
-  }
-
-  title = 'micRecorder';
-//Lets declare Record OBJ
-record;
-//Will use this flag for toggeling recording
-recording = false;
-//URL of Blob
-url;
-error;
-sanitize(url: string) {
-return this.domSanitizer.bypassSecurityTrustUrl(url);
-}
-/**
-* Start recording.
-*/
-initiateRecording() {
-this.recording = true;
-let mediaConstraints = {
-video: false,
-audio: true
-};
-navigator.mediaDevices.getUserMedia(mediaConstraints).then(this.successCallback.bind(this), this.errorCallback.bind(this));
-}
-/**
-* Will be called automatically.
-*/
-successCallback(stream) {
-var options = {
-mimeType: "audio/wav",
-numberOfAudioChannels: 1,
-// sampleRate: 16000,
-};
-//Start Actuall Recording
-var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
-this.record = new StereoAudioRecorder(stream, options);
-this.record.record();
-}
-/**
-* Stop recording.
-*/
-stopRecording() {
-this.recording = false;
-this.record.stop(this.processRecording.bind(this));
-}
-/**
-* processRecording Do what ever you want with blob
-* @param  {any} blob Blog
-*/
-processRecording(blob) {
-this.url = URL.createObjectURL(blob);
-// 
-// 
-}
-/**
-* Process Error.
-*/
-errorCallback(error) {
-this.error = 'Can not play audio in your browser';
-}
-
-
-
-}
-
diff --git a/src/app/first-form/first-form.component.ts b/src/app/first-form/first-form.component.ts
deleted file mode 100644
index 87d1965..0000000
--- a/src/app/first-form/first-form.component.ts
+++ /dev/null
@@ -1,154 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-import { Router } from '@angular/router';
-import { FirstForm } from "../../services/firstForm.service";
-import { FormBuilder, FormGroup, FormControl,Validators } from '@angular/forms';
-import Swal from 'sweetalert2';
-declare var $: any;
-import * as RecordRTC from 'recordrtc';
-import { DomSanitizer } from '@angular/platform-browser';
-
-
-@Component({
-  selector: 'app-first-form',
-  templateUrl: './first-form.component.html',
-  styleUrls: ['./first-form.component.css']
-})
-export class FirstFormComponent implements OnInit {
-  firstForm: FormGroup;
-  responseList:any ;
-
-  questionArray = [["Enter First Name","text"],["Enter Last Name","text"],["Enter Age","number"]];
-  statusCheck = false;
-
-  selectedIndex = 0;
-
-  constructor(private router: Router, private formService : FirstForm,private domSanitizer: DomSanitizer) { }
-
-  ngOnInit(): void {
-
-    // let group={}    
-    
-
-    // this.formService.firstForm().subscribe((res) => {
-    //   
-    //   this.questionArray = res[0]["question_instance"];
-    //   
-    //   this.questionArray.forEach(input_template=>{
-    //     
-    //     group[input_template["id"]]=new FormControl('');  
-    //   })
-    //   this.firstForm = new FormGroup(group);
-    //   this.statusCheck = true;
-    //   
-
-
-    // },(err) =>{
-    //   
-    // })
-  }
-
-  preSurvey(){
-    this.router.navigateByUrl("/preSurvey");
-  }
-
-  nextButton(){
-    this.selectedIndex = this.selectedIndex + 1;
-  }
-  prevButton(){
-    this.selectedIndex = this.selectedIndex - 1;
-    if(this.selectedIndex <0){
-      this.selectedIndex = 0;
-    }
-  }
-
-  submit(){
-    
-    var tempDict;
-    this.responseList = [];
-    for(let key in this.firstForm.value){
-      tempDict = {}
-      tempDict["question"] = key
-      tempDict["response"] = this.firstForm.value[key];
-      this.responseList.push(tempDict);
-    }
-    
-
-    this.formService.submitResponse(this.responseList).subscribe((res) => {
-      
-      Swal.fire({
-        text: "Submitted",
-        icon: "success"
-      })  
-      this.router.navigateByUrl("/game");
-    },(err) => {
-      
-      Swal.fire({
-        text: "Duplicate Entries",
-        icon: "warning"
-      })  
-    })
-
-  }
-
-  title = 'micRecorder';
-//Lets declare Record OBJ
-record;
-//Will use this flag for toggeling recording
-recording = false;
-//URL of Blob
-url;
-error;
-sanitize(url: string) {
-return this.domSanitizer.bypassSecurityTrustUrl(url);
-}
-/**
-* Start recording.
-*/
-initiateRecording() {
-this.recording = true;
-let mediaConstraints = {
-video: false,
-audio: true
-};
-navigator.mediaDevices.getUserMedia(mediaConstraints).then(this.successCallback.bind(this), this.errorCallback.bind(this));
-}
-/**
-* Will be called automatically.
-*/
-successCallback(stream) {
-var options = {
-mimeType: "audio/wav",
-numberOfAudioChannels: 1,
-// sampleRate: 16000,
-};
-//Start Actuall Recording
-var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
-this.record = new StereoAudioRecorder(stream, options);
-this.record.record();
-}
-/**
-* Stop recording.
-*/
-stopRecording() {
-this.recording = false;
-this.record.stop(this.processRecording.bind(this));
-}
-/**
-* processRecording Do what ever you want with blob
-* @param  {any} blob Blog
-*/
-processRecording(blob) {
-this.url = URL.createObjectURL(blob);
-
-
-}
-/**
-* Process Error.
-*/
-errorCallback(error) {
-this.error = 'Can not play audio in your browser';
-}
-
-
-
-}
diff --git a/src/app/guards/landing-page.guard.spec.ts b/src/app/guards/landing-page.guard.spec.ts
new file mode 100644
index 0000000..f622483
--- /dev/null
+++ b/src/app/guards/landing-page.guard.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from "@angular/core/testing";
+
+import { LandingPageGuard } from "./landing-page.guard";
+
+describe("LandingPageGuard", () => {
+    let guard: LandingPageGuard;
+
+    beforeEach(() => {
+        TestBed.configureTestingModule({});
+        guard = TestBed.inject(LandingPageGuard);
+    });
+
+    it("should be created", () => {
+        expect(guard).toBeTruthy();
+    });
+});
diff --git a/src/app/guards/landing-page.guard.ts b/src/app/guards/landing-page.guard.ts
new file mode 100644
index 0000000..dada9f8
--- /dev/null
+++ b/src/app/guards/landing-page.guard.ts
@@ -0,0 +1,24 @@
+import { Injectable } from "@angular/core";
+import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from "@angular/router";
+import { UserService } from "src/app/core/services/api/user.service";
+import { AuthenticatedRoutes } from "../variables/route_path.variables";
+
+@Injectable({
+    providedIn: "root",
+})
+export class LandingPageGuard implements CanActivate {
+    constructor(private userService: UserService, private _router: Router) {}
+
+    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
+        return new Promise((resolve, reject) => {
+            const currentUserData = this.userService.userIsLoggedIn();
+            if (currentUserData) {
+                this._router.navigate([AuthenticatedRoutes.home]);
+                this.userService.setCurrentUserData(currentUserData);
+                return resolve(false);
+            } else {
+                return resolve(true);
+            }
+        });
+    }
+}
diff --git a/src/app/guards/role.guard.spec.ts b/src/app/guards/role.guard.spec.ts
new file mode 100644
index 0000000..1a3259b
--- /dev/null
+++ b/src/app/guards/role.guard.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from "@angular/core/testing";
+
+import { RoleGuard } from "./role.guard";
+
+describe("RoleGuard", () => {
+    let guard: RoleGuard;
+
+    beforeEach(() => {
+        TestBed.configureTestingModule({});
+        guard = TestBed.inject(RoleGuard);
+    });
+
+    it("should be created", () => {
+        expect(guard).toBeTruthy();
+    });
+});
diff --git a/src/app/guards/role.guard.ts b/src/app/guards/role.guard.ts
new file mode 100644
index 0000000..618554f
--- /dev/null
+++ b/src/app/guards/role.guard.ts
@@ -0,0 +1,34 @@
+import { Injectable } from "@angular/core";
+import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from "@angular/router";
+import { CurrentUserDataModel, MapUserRole, UserRoleCodes } from "src/app/types/user.type";
+import { UserService } from "src/app/core/services/api/user.service";
+import { AuthenticatedRoutes, NonAuthenticatedRoutes } from "../variables/route_path.variables";
+
+@Injectable({
+    providedIn: "root",
+})
+export class RoleGuard implements CanActivate {
+    constructor(private userService: UserService, private _router: Router) {}
+
+    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
+        // TODO: for now we were storing currentUserData in local storage,
+        // but later call the data from the backend by storing token or similar
+        return new Promise((resolve, reject) => {
+            const currentUserData = this.userService.userIsLoggedIn();
+            if (currentUserData) {
+                let roles = route.data.roles as Array<string>;
+                const currentUserRole = MapUserRole[currentUserData?.roleid!];
+                if (currentUserRole && roles.includes(currentUserRole)) {
+                    this.userService.setCurrentUserData(currentUserData);
+                    return resolve(true);
+                } else {
+                    this._router.navigate([AuthenticatedRoutes.home]);
+                    return resolve(false);
+                }
+            } else {
+                this.userService.logout();
+                this._router.navigate([NonAuthenticatedRoutes.landingPage]);
+            }
+        });
+    }
+}
diff --git a/src/app/main-game/main-game.component.ts b/src/app/main-game/main-game.component.ts
deleted file mode 100644
index 86b0e96..0000000
--- a/src/app/main-game/main-game.component.ts
+++ /dev/null
@@ -1,99 +0,0 @@
-import { Component, OnInit, ViewEncapsulation } from '@angular/core';
-import Swal from 'sweetalert2';
-import {MatDialog, MAT_DIALOG_DATA} from '@angular/material/dialog';
-import { DialogComponent } from './dialog/dialog.component';
-import { MainGame } from "../../services/mainGame.service";
-@Component({
-  selector: 'app-main-game',
-  templateUrl: './main-game.component.html',
-  styleUrls: ['./main-game.component.css'],
-  encapsulation: ViewEncapsulation.None
-})
-export class MainGameComponent implements OnInit {
-  firstLetter = ["2","3","4","5","6","7","8","9","10","A","J","K","Q"];
-  lastLetter = ["C","D","H","S"];
-  player = [[],[],[]];
-  dealer = [[]];
-  totalCardsofPlayer;
-  handGoal = 21;
-  score = 21;
-  limitOfCards = 30;
-  timeForTotalGame = 3;
-  timeForEachDraw = 0;
-  repitionOfCards = true;
-  numberOfCardsStartingDealer = 1;
-  numberOfCardsStartingPlayer = 2;
-  valueOfAce = 1;
-  scoreObtainedPlayer = 0;
-  scoreObtainedDealer = 0;
-  constructor(private dialog:MatDialog,private gameService : MainGame) { }
-
-  ngOnInit(): void {
-
-    // this.gameService.mainGame({"exID" : "EC-001"}).subscribe((res) => {
-    //   
-    // },(err) =>{
-    //   
-    // })
-
-    for(var i = 0; i <this.numberOfCardsStartingDealer;i++){
-      var item1 = this.firstLetter[Math.floor(Math.random() * this.firstLetter.length)];
-      var item2 = this.lastLetter[Math.floor(Math.random() * this.lastLetter.length)];
-      var finalString = "../../assets/cards/" + item1 + item2 + ".png";
-      this.dealer[0].push(finalString);
-    }
-    this.dealer[0].push("../../assets/cards/BLANK.png");
-    for(var i = 0; i <this.numberOfCardsStartingPlayer;i++){
-      var item1 = this.firstLetter[Math.floor(Math.random() * this.firstLetter.length)];
-      var item2 = this.lastLetter[Math.floor(Math.random() * this.lastLetter.length)];
-      var finalString = "../../assets/cards/" + item1 + item2 + ".png";
-      this.player[0].push(finalString);
-    }
-    this.totalCardsofPlayer = 2
-
-
-  }
-
-  openDialog(){
-    this.dialog.open(DialogComponent, {
-      data: {
-        animal: 'panda'
-      }
-    });
-  }
-
-  addCard(){
-    var item1 = this.firstLetter[Math.floor(Math.random() * this.firstLetter.length)];
-    var item2 = this.lastLetter[Math.floor(Math.random() * this.lastLetter.length)];
-    var finalString = "../../assets/cards/" + item1 + item2 + ".png";
-    if(this.totalCardsofPlayer <10 && this.totalCardsofPlayer < this.limitOfCards){
-      this.player[0].push(finalString);
-      this.totalCardsofPlayer = this.totalCardsofPlayer + 1;
-    }
-    else if(this.totalCardsofPlayer >= 10 && this.totalCardsofPlayer <20 && this.totalCardsofPlayer < this.limitOfCards){
-      this.player[1].push(finalString);
-      this.totalCardsofPlayer = this.totalCardsofPlayer + 1;
-    }
-    else if(this.totalCardsofPlayer >= 20 && this.totalCardsofPlayer <this.limitOfCards && this.totalCardsofPlayer < this.limitOfCards ){
-      this.player[2].push(finalString);
-      this.totalCardsofPlayer = this.totalCardsofPlayer + 1;
-    }
-  }
-
-  totalTimeEvent(event){
-    
-    if(event["action"] == "done"){
-      Swal.fire({
-        text: "You have used up all the time alloted!!",
-        icon: 'warning',
-        showCancelButton: false,
-        confirmButtonText: 'Okay',
-        confirmButtonColor: 'red'
-      }).then(result => {
-      })
-
-    }
-
-  }
-
-}
diff --git a/src/app/post-survey/post-survey.component.ts b/src/app/post-survey/post-survey.component.ts
deleted file mode 100644
index 3702360..0000000
--- a/src/app/post-survey/post-survey.component.ts
+++ /dev/null
@@ -1,147 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-import Swal from 'sweetalert2';
-import { Router } from '@angular/router';
-import { FormBuilder, FormGroup, FormControl,Validators } from '@angular/forms';
-import {PreSurveyService} from '../../services/preSurvey.service';
-import {MatDialog} from '@angular/material/dialog';
-import { DialogPDfComponent } from "../pre-survey/dialog-pdf/dialog-pdf.component";
-import {CPCQService} from '../../services/cpcq.service';
-
-@Component({
-  selector: 'app-post-survey',
-  templateUrl: './post-survey.component.html',
-  styleUrls: ['./post-survey.component.css']
-})
-export class PostSurveyComponent implements OnInit {
-  postSurveyForm: FormGroup;
-
-  consentFlag:boolean;
-  formQuestion:any;
-
-  constructor(private router:Router,public dialog: MatDialog, private fb: FormBuilder, private presurvey : PreSurveyService, private apiService: CPCQService) { }
-
-  ngOnInit(): void {
-    this.postSurveyForm = this.fb.group({
-      q1:[""],
-      q2:[""],
-      q3:[""],
-      q4:[""],
-      q5:[""],
-      q6:[""],
-      q7:[""],
-      q8:[""],
-      q9:[""],
-      q10:[""],
-      q11:[""],
-      other9:['']
-    })
-
-    this.presurvey.getPreSurveyAnswer().subscribe((res) => {
-      this.consentFlag =  res[0]["consent"]
-    })
-
-    // if(localStorage.getItem("consent") == "true"){
-    //   this.consentFlag = true
-    // }
-    // else{
-    //   this.consentFlag = false
-    // }
-    this.presurvey.getPostSurveyFormQuestions().subscribe((res) => {
-      this.formQuestion = res[0];
-      for(let key in this.formQuestion){
-        if(this.formQuestion[key].indexOf('gender inequality') != -1){
-          this.formQuestion[key] = this.formQuestion[key].split('gender inequality.')
-        }
-        else if(this.formQuestion[key].indexOf('LGBTQA+.') != -1){
-          this.formQuestion[key] = this.formQuestion[key].split('LGBTQA+.')
-        }
-        else if(this.formQuestion[key].indexOf('ableism.') != -1){
-          this.formQuestion[key] = this.formQuestion[key].split('ableism.')
-        }
-        else if(this.formQuestion[key].indexOf('Teaching English to Speakers of Other Languages (TESOL).') != -1){
-          this.formQuestion[key] = this.formQuestion[key].split('Teaching English to Speakers of Other Languages (TESOL).')
-        }
-        else if(this.formQuestion[key].indexOf('race or ethnicity.') != -1){
-          this.formQuestion[key] = this.formQuestion[key].split('race or ethnicity.')
-        }
-        else if(this.formQuestion[key].indexOf('culture.') != -1){
-          this.formQuestion[key] = this.formQuestion[key].split('culture.')
-        }
-        else if(this.formQuestion[key].indexOf('diversity, equity, and inclusion (DEI).') != -1){
-          this.formQuestion[key] = this.formQuestion[key].split('diversity, equity, and inclusion (DEI).')
-        }
-        else if(this.formQuestion[key].indexOf('racial, ethnic, and cultural') != -1){
-          this.formQuestion[key] = this.formQuestion[key].split('racial, ethnic, and cultural')
-        }
-        else if(this.formQuestion[key].indexOf('cultural competence?')){
-          this.formQuestion[key] = this.formQuestion[key].split('cultural competence?')
-        }
-      }
-     },(err) => {
-       
-     })
-  }
-
-  irbFunction(){
-    
-    this.dialog.open(DialogPDfComponent, {
-      data: {
-        animal: 'panda'
-      }
-    });
-
-  }
-  checkBoxAnswers = [];
-  checkBoxFunction(e){
-    if(this.checkBoxAnswers.indexOf(e) == -1){
-      this.checkBoxAnswers.push(e)
-    }
-    else{
-      var index = this.checkBoxAnswers.indexOf(e)
-      this.checkBoxAnswers.splice(index, 1);
-    }
-    
-
-  }
-  submit(){
-    
-    if(!this.postSurveyForm.valid){
-      Swal.fire({
-        text: "Please fill all the fields",
-        icon: "error"
-      }).then((res) => {
-      }) 
-            
-    }
-    else{
-      this.postSurveyForm.get("q9").setValue(this.checkBoxAnswers)
-
-      if(this.postSurveyForm.value['other9'].length != 0){
-        this.checkBoxAnswers.push(this.postSurveyForm.value['other9'])
-        this.postSurveyForm.get("q9").setValue(this.checkBoxAnswers)
-      }
-      this.postSurveyForm.removeControl('other9');
-      
-      this.presurvey.submitPostSurvey(this.postSurveyForm.value).subscribe((res) => {
-        this.apiService.patchStatus("postsurveystatus").subscribe((res) => {
-          Swal.fire({
-            text: "Submitted!",
-            icon: "success"
-          }).then((res) => {
-          this.router.navigateByUrl("/final");
-      
-          })
-        })
-        
-      },(err) =>{
-        Swal.fire({
-          text: "Failed to submit form.",
-          icon: "error"
-        }).then((res) => {
-        }) 
-      })
-
-    
-  }
-}
-}
diff --git a/src/app/pre-survey/pre-survey.component.ts b/src/app/pre-survey/pre-survey.component.ts
deleted file mode 100644
index 701120b..0000000
--- a/src/app/pre-survey/pre-survey.component.ts
+++ /dev/null
@@ -1,212 +0,0 @@
-import { Component, OnInit, Inject } from '@angular/core';
-import Swal from 'sweetalert2';
-import { Router } from '@angular/router';
-import {MatDialog} from '@angular/material/dialog';
-import { DialogPDfComponent } from "./dialog-pdf/dialog-pdf.component";
-import { FormBuilder, FormGroup, FormControl,Validators } from '@angular/forms';
-import {PreSurveyService} from '../../services/preSurvey.service';
-export interface DialogData {
-  animal: 'panda' | 'unicorn' | 'lion';
-}
-@Component({
-  selector: 'app-pre-survey',
-  templateUrl: './pre-survey.component.html',
-  styleUrls: ['./pre-survey.component.css']
-})
-export class PreSurveyComponent implements OnInit {
-  preSurveyForm: FormGroup;
-  email : any;
-  startTime: any;
-  endTime: any;
-  durationTime : any;
-  formQuestion: any;
-  constructor(private router:Router,public dialog: MatDialog,private fb: FormBuilder, private presurvey : PreSurveyService) { }
-
-  ngOnInit(): void {
-    this.startTime = new Date()
-    
-    this.preSurveyForm = this.fb.group({
-      q1:[""],
-      q2:[""],
-      q3:[""],
-      q4:[""],
-      q5:[""],
-      q6:[""],
-      q7:[""],
-      q8:[""],
-      q9:[""],
-      q10:[""],
-      q11:[""],
-      q12:[""],
-      q13:[""],
-      q14:[""],
-      q15:[""],
-      q16:[""],
-      q17:[""],
-      q18:[""],
-      q19:[""],
-      q20:[""],
-      q21:[""],
-      other5:'',
-      other6:'',
-      other7:'',
-      other8:'',
-      other10:'',
-      other12:'',
-      other13:'',
-      other21:'',
-      consent:''
-    })
-
-     this.presurvey.getFormQuestions().subscribe((res) => {
-      this.formQuestion = res[0];
-      for(let key in this.formQuestion){
-        if(this.formQuestion[key].indexOf('gender inequality') != -1){
-          this.formQuestion[key] = this.formQuestion[key].split('gender inequality')
-        }
-        else if(this.formQuestion[key].indexOf('LGBTQA+') != -1){
-          this.formQuestion[key] = this.formQuestion[key].split('LGBTQA+')
-        }
-        else if(this.formQuestion[key].indexOf('ableism') != -1){
-          this.formQuestion[key] = this.formQuestion[key].split('ableism')
-        }
-        else if(this.formQuestion[key].indexOf('Teaching English to Speakers of Other Languages (TESOL)') != -1){
-          this.formQuestion[key] = this.formQuestion[key].split('Teaching English to Speakers of Other Languages (TESOL)')
-        }
-        else if(this.formQuestion[key].indexOf('race or ethnicity') != -1){
-          this.formQuestion[key] = this.formQuestion[key].split('race or ethnicity')
-        }
-        else if(this.formQuestion[key].indexOf('culture') != -1){
-          this.formQuestion[key] = this.formQuestion[key].split('culture')
-        }
-        else if(this.formQuestion[key].indexOf('diversity, equity, and inclusion (DEI)') != -1){
-          this.formQuestion[key] = this.formQuestion[key].split('diversity, equity, and inclusion (DEI)')
-        }
-      }
-      this.presurvey.userData().subscribe((res) => {
-        this.preSurveyForm.get("q1").setValue(res["last_name"])
-        this.preSurveyForm.get("q2").setValue(res["first_name"])
-        this.preSurveyForm.get("q3").setValue(res["email"])
-
-      },(err) => {
-        
-      })
-     },(err) => {
-       
-     })
-
-      
-    
-  }
-
-  checkBox21 = [];
-  checkBoxFunction(e){
-    if(this.checkBox21.indexOf(e) == -1){
-      this.checkBox21.push(e)
-    }
-    else{
-      var index = this.checkBox21.indexOf(e)
-      this.checkBox21.splice(index, 1);
-    }
-    
-  }
-
-  checkBox7 = [];
-  checkBox7Function(e){
-    
-    if(this.checkBox7.indexOf(e) == -1){
-      this.checkBox7.push(e)
-    }
-    else{
-      var index = this.checkBox7.indexOf(e)
-      this.checkBox7.splice(index, 1);
-    }
-    
-  }
-
-  irbFunction(){
-    
-    this.dialog.open(DialogPDfComponent, {
-      data: {
-        animal: 'panda'
-      }
-    });
-
-  }
-
-  submit(){
-    if(!this.preSurveyForm.valid){
-      Swal.fire({
-        text: "Please fill all the fields",
-        icon: "error"
-      }).then((res) => {
-      }) 
-            
-    }
-    else{
-      this.preSurveyForm.get("q7").setValue(this.checkBox7)
-      this.preSurveyForm.get("q21").setValue(this.checkBox21)
-      
-      if(this.preSurveyForm.value["other5"].length != 0){
-      this.preSurveyForm.get("q5").setValue(this.preSurveyForm.value["other5"])
-      }
-      if(this.preSurveyForm.value["other6"].length != 0){
-      this.preSurveyForm.get("q6").setValue(this.preSurveyForm.value["other6"])
-      }
-      if(this.preSurveyForm.value["other7"].length != 0){
-        
-        this.checkBox7.push(this.preSurveyForm.value["other7"])
-        this.preSurveyForm.get("q7").setValue(this.checkBox7)
-      }
-      if(this.preSurveyForm.value["other8"].length != 0){
-        this.preSurveyForm.get("q8").setValue(this.preSurveyForm.value["other8"])
-      }
-      if(this.preSurveyForm.value["other10"].length != 0){
-        this.preSurveyForm.get("q10").setValue(this.preSurveyForm.value["other10"])
-      }
-      if(this.preSurveyForm.value["other12"].length != 0){
-        this.preSurveyForm.get("q12").setValue(this.preSurveyForm.value["other12"])
-      }
-      if(this.preSurveyForm.value["other13"].length != 0){
-      this.preSurveyForm.get("q13").setValue(this.preSurveyForm.value["other13"])
-      }
-      if(this.preSurveyForm.value["other21"].length != 0){
-        this.checkBox21.push(this.preSurveyForm.value["other21"])
-        this.preSurveyForm.get("q21").setValue(this.checkBox21)
-      }
-      this.preSurveyForm.removeControl('other5');
-      this.preSurveyForm.removeControl('other6');
-      this.preSurveyForm.removeControl('other7');
-      this.preSurveyForm.removeControl('other8');
-      this.preSurveyForm.removeControl('other10');
-      this.preSurveyForm.removeControl('other12');
-      this.preSurveyForm.removeControl('other13');
-      this.preSurveyForm.removeControl('other21');
-      if(localStorage.getItem("consent") == "true"){
-        this.preSurveyForm.get("consent").setValue(true)
-      }
-      else{
-        this.preSurveyForm.get("consent").setValue(false)
-      }
-      
-
-      this.endTime = new Date()
-      
-      this.durationTime = (this.endTime - this.startTime)/1000
-      this.durationTime = this.durationTime/ 60
-      this.preSurveyForm.value["duration"] = this.durationTime
-      this.presurvey.submitForm(this.preSurveyForm.value).subscribe((res) => {
-        Swal.fire({
-          text: "Submitted",
-          icon: "success"
-        }).then((res) => {
-          this.router.navigateByUrl("/dashboard")
-        })
-      },(err) => {
-        
-      })
-
-    }
-    }
-  }
-
diff --git a/src/app/result-dashboard/result-dashboard.component.ts b/src/app/result-dashboard/result-dashboard.component.ts
deleted file mode 100644
index d2bc5d5..0000000
--- a/src/app/result-dashboard/result-dashboard.component.ts
+++ /dev/null
@@ -1,394 +0,0 @@
-import { Component, OnInit, ViewChild,Inject } from '@angular/core';
-import { Router } from '@angular/router';
-import {MatDialog, MAT_DIALOG_DATA} from '@angular/material/dialog';
-import Swal from 'sweetalert2';
-import {DashboardDialoComponent} from '../dashboard/dashboard-dialo/dashboard-dialo.component';
-import { AnimationItem } from 'lottie-web';
-import {PreSurveyService} from '../../services/preSurvey.service';
-import {CPCQService} from '../../services/cpcq.service';
-import { AnimationOptions } from 'ngx-lottie';
-import {
-  ApexNonAxisChartSeries,
-  ApexPlotOptions,
-  ApexChart,
-  ApexFill,
-  ChartComponent,
-  ApexLegend,
-  ApexResponsive,
-} from "ng-apexcharts";
-
-export interface DialogData {
-  animal;
-}
-
-export type ChartOptions2 = {
-  series: ApexNonAxisChartSeries;
-  chart: ApexChart;
-  labels: string[];
-  colors: string[];
-  legend: ApexLegend;
-  plotOptions: ApexPlotOptions;
-  responsive: ApexResponsive | ApexResponsive[];
-};
-
-export type ChartOptions1 = {
-  series: ApexNonAxisChartSeries;
-  chart: ApexChart;
-  labels: string[];
-  plotOptions: ApexPlotOptions;
-};
-
-export type ChartOptions = {
-  series: ApexNonAxisChartSeries;
-  chart: ApexChart;
-  labels: string[];
-  plotOptions: ApexPlotOptions;
-  fill: ApexFill;
-};
-@Component({
-  selector: 'app-result-dashboard',
-  templateUrl: './result-dashboard.component.html',
-  styleUrls: ['./result-dashboard.component.css']
-})
-export class ResultDashboardComponent implements OnInit  {
-  statusNames = ['Pre-Survey','CPCQ Form','Unpacking', 'Feedback', 'View Results', 'Post Survey'];
-  statusIcons = ['edit','developer_board','add_comment','edit','bar_chart','chrome_reader_mode'];
-  currentStatus = 2;
-  selectedSatus = 0;
-  profile = false;
-  avatarLink: string;
-
-    public photoUrl: string;
-
-    public name: string = "Nihaarika Jagadish";
-
-  public showInitials = false;
-    public initials: string;
-    public circleColor: string;
-    public profileDetails:any;
-    public email:any
-    public location:any
-    public gender :any
-    public userName :any
-    public preSurveyDate :any
-    public responsesDate :any
-    public cpcqDate :any
-    public finalDate : any
-
-    private colors = [
-        '#EB7181', // red
-        '#468547', // green
-        '#FFD558', // yellow
-        '#3670B2', // blue
-    ];
-
-  @ViewChild("chart") chart: ChartComponent;
-  public chartOptions: Partial<ChartOptions>;
-  public chartOptions1: Partial<ChartOptions1>;
-  public chartOptions2: Partial<ChartOptions2>;
-
-  options: AnimationOptions = {
-    path: 'https://assets2.lottiefiles.com/packages/lf20_cmf6a3.json',
-  };
- 
-  animationCreated(animationItem: AnimationItem): void {
-    
-  }
-
-  openDialog1(i) {
-    
-    this.chartOptions2 = {
-      series: [76, 67, 61, 90,56],
-      chart: {
-        height: 300,
-        type: "radialBar",
-        events: {
-          legendClick: function(chartContext, seriesIndex, config) {
-            
-            
-            
-            if(seriesIndex == 0){
-              Swal.fire({ 
-                title:"Attitude",
-                html: "A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status. <br /> <br /> <span><b> B.4 </b> Black students have the same opportunities and access to attend college as their white peers. <br/> <br /><span><b> C.1 </b> Students who wear dreadlocks as a hairstyle are a distraction in the classroom. <br/> <br /> D.3 It should be required for students to remove hair accessories that are associated with their culture, tribe, sexuality, or religion. <br/> <br /> E.5 All students who live in the United States deserve a quality public education, even those students whose parents are undocumented immigrants. <br/> F.6 All faculty and staff within a school setting have equal ability to transfer knowledge to students in regards to life, culture, character, and/or academic content."
-                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-              }).then((res) => {
-                window.location.reload();
-              })
-            }
-            else if(seriesIndex == 1){
-              Swal.fire({ 
-                title:"Empathy",
-                html: "A.2 A 10th-grade male died as a result of a car accident during an illegal street race. A group of teachers will not attend the funeral because of the activity that led to the student’s cause of death. <br /> <br /> <span><b> B.4 </b> A public school Teacher is grounded by the philosophy of their religion. Throughout their career as an educator; they have learned to be welcoming to others’ cultural and religious beliefs even if those beliefs are in conflict with their own.<br/> <br /><span><b> C.1 </b> In two weeks, the 8th grade teaching cluster will be getting a new math teacher who is Muslim. Next week’s professional development is dedicated to learning about the customs and etiquette of Islam to ensure that the new colleague feels welcomed in their new school.<br/> <br /> D.3  An Asian student scored an 85 percent on today’s math quiz. The teacher expressed disappointment in the student by saying,Come on, you are Asian! You should’ve scored better than this. <br/> <br /> E.5  A school counselor advised a biracial student that they would appear more professional if they perm their hair (removing the kinks) for their upcoming college visits. <br/> F.6 Your colleague was pulled over by the police on the way to work this morning. You hear other colleagues in the break room discussing the reasons why they were pulled over, and all of the suspected reasons were related to what they may have done (i.e., speeding, running a stop sign, etc.), rather than acknowledging that they may have been pulled over for being a person of color driving a luxury car."
-                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-              }).then((res) => {
-                window.location.reload();
-              })
-            }
-            else if(seriesIndex == 2){
-              Swal.fire({ 
-                title:"Policy",
-                html: "A.2 A group of teachers and students are protesting the athletic department at a high school for changing the school’s logo to a silhouette of a Native American in a headdress; they have secured a place on the agenda for the next school board meeting to give a presentation on why this logo is offensive and trivializes Native Americans. <br /> <br /> <span><b> B.4 </b>  A school that does not consider factors related to culture and ethnicity in their decision-making process is more democratic than a school who does consider factors related to culture and ethnicity in their decision-making process.<br/> <br /><span><b> C.1 </b> A school leader makes a “diversity hire” to introduce new ideas around school culture, curriculum, leadership, and/or supervision. <br/> <br /> D.3 A principal implemented a policy that all faculty and staff have to participate in quarterly potlucks; they are to bring a traditional dish specific to their culture, as a way to facilitate cross-cultural discourse. <br/> <br /> E.5 Students in a high-poverty school who are absent 10 consecutive days in a marking period are referred to special education for excessive absenteeism. <br/> F.6A member of the school board is proposing a policy where English is the official language for all school related business in a community where the majority of the students’ and families’ primary language is Spanish.                "
-                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-              }).then((res) => {
-                window.location.reload();
-              })
-            }
-
-            else if(seriesIndex == 3){
-              Swal.fire({ 
-                title:"Professionalism",
-                html: "A.2A teacher asked the class who has traveled out of the country. A Black male raises his hand and states “I have.”  The teacher asked the student three follow-up questions to corroborate his story.                <br /> <br /> <span><b> B.4 </b> During lunch duty, teachers had a discussion in the presence of students about tomorrow’s district-wide racial sensitivity training. A teacher commented, Why do we have to attend this training; the United States is post-racial because we have a Black president.                <br/> <br /><span><b> C.1 </b> The social committee at an elementary school is planning an awards ceremony and dinner for the staff and faculty. Six of their colleagues are vegan because of their religious beliefs.  As a result, the committee has added a vegan selection to the menu to accommodate their colleagues’ religious beliefs. <br/> <br /> D.3  The reading specialist expressed some concerns to the Vice Principal about how her male students emasculates her during whole group instruction. The Vice Principal said, “Don’t worry about it, that's just how boys behave.”                 <br/> <br /> E.5  A history teacher refuses to acknowledge black history month and does not want to teach content about black history in the United States.                <br/> F.6 An AP English teacher has assigned a research paper where the students were required to write about their religion. The teacher did not let their own religious beliefs cloud their judgement; the teacher researched the student’s religion while grading the paper to offer relevant constructive feedback back on the arguments made within the paper.                "
-                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-              }).then((res) => {
-                window.location.reload();
-              })
-            }
-
-            else if(seriesIndex == 4){
-              Swal.fire({ 
-                title:"Teaching Practice",
-                html: "A.2 A novice teacher in a school where the majority of the students are African-American and Latino uses hip-hop as a way to make science relevant in the student's social and cultural context.                <br /> <br /> <span><b> B.4 </b>An algebra teacher who teaches in a school where the majority of the students are on free and reduced lunch requires that each student buy a specific graphing calculator for Algebra, which retails for over 100 dollars.                <br/> <br /><span><b> C.1 </b> A teacher created a seating chart that placed ‘unteachable students’ in the back of the classroom, all of whom were male: 2 Latinos and 6 African Americans.  In the same seating chart, her ‘good students,' all white, were seated in preferential seating.                <br/> <br /> D.3 A teacher puts together a petition to request a textbook company to remove the narrative about the enslavement of Africans in the United States in their history textbook to accommodate teachers’ discomfort with discussing this sensitive topic.                <br/> <br /> E.5  A teacher in a Title 1 school (high percentage of children from low-income families) checks homework for completeness rather than correctness as a strategy to improve student efficacy.                 <br/> F.6 There is an increase of LGBTQIA+ students reporting that they are being harassed both verbally and physically in United States public schools. A group of students and teachers are researching the best practices to implement and create a supportive environment for these students to voice their concerns in their school."
-                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-              }).then((res) => {
-                window.location.reload();
-              })
-            }
-          
-          }
-        }
-      },
-      plotOptions: {
-        radialBar: {
-          offsetY: 0,
-          startAngle: 0,
-          endAngle: 270,
-          hollow: {
-            margin: 5,
-            size: "30%",
-            background: "transparent",
-            image: undefined
-          },
-          dataLabels: {
-            name: {
-              show: false
-            },
-            value: {
-              show: false
-            }
-          }
-        }
-      },
-      colors: ["#1ab7ea", "#0084ff", "#39539E", "#0077B5"],
-      labels: ["Attitude", "Empathy", "Policy", "Professionalism","Teaching Practice"],
-      legend: {
-        show: true,
-        floating: true,
-        fontSize: "13px",
-        position: "left",
-        labels: {
-          useSeriesColors: true
-        },
-        formatter: function(seriesName, opts) {
-          return seriesName + ":  " + opts.w.globals.series[opts.seriesIndex];
-        },
-        itemMargin: {
-          horizontal: 3
-        }
-      },
-      responsive: [
-        {
-          breakpoint: 480,
-          options: {
-            legend: {
-              show: false
-            }
-          }
-        }
-      ]
-    };
-  }
-
-  openDialog(){
-    const dialogRef = this.dialog.open(DashboardDialoComponent, {
-      data: {userID: this.profileDetails[0]["id"]}
-    });
-
-    dialogRef.afterClosed().subscribe(result => {
-      
-      
-      this.showInitials = false;
-      this.avatarLink = result;
-    });
-  }
-  constructor(private router:Router,public dialog: MatDialog, public PreSurService : PreSurveyService, public cpcqService : CPCQService) {
-
-    this.openDialog1(1);
-    
-    this.chartOptions = {
-      series: [76],
-      chart: {
-        height: 300,
-        type: "radialBar",
-        offsetY: -20
-      },
-      plotOptions: {
-        radialBar: {
-          startAngle: -90,
-          endAngle: 90,
-          track: {
-            background: "#e7e7e7",
-            strokeWidth: "97%",
-            margin: 5, // margin is in pixels
-            dropShadow: {
-              enabled: true,
-              top: 2,
-              left: 0,
-              opacity: 0.31,
-              blur: 2
-            }
-          },
-          dataLabels: {
-            value: {
-              // offsetY: -2,
-              fontSize: "22px"
-            },
-            name: {
-              show: true,
-              fontSize: "13px",
-              color: "green"
-            }
-            
-          }
-        }
-      },
-      fill: {
-        type: "gradient",
-        gradient: {
-          shade: "light",
-          shadeIntensity: 0.4,
-          inverseColors: false,
-          opacityFrom: 1,
-          opacityTo: 1,
-          stops: [0, 50, 53, 91]
-        }
-      },
-      labels: ["Culturally Competent"]
-    };
-
-    
-      this.chartOptions1 = {
-        series: [44, 55, 67, 83,56],
-        chart: {
-          height: 200,
-          width: 300,
-          type: "radialBar",
-          events:{
-            click: function(event, chartContext, config) {
-              
-              
-              
-              
-              // The last parameter config contains additional information like `seriesIndex` and `dataPointIndex` for cartesian charts.
-            }
-          }
-        },
-        plotOptions: {
-          radialBar: {
-            dataLabels: {
-              name: {
-                fontSize: "22px"
-              },
-              value: {
-                fontSize: "16px"
-              },
-              total: {
-                show: true,
-                label: "Total",
-                formatter: function(w) {
-                  return "249";
-                }
-              }
-            }
-          }
-        },
-        labels: ["Attitude", "Empathy", "Policy", "Professionalism","Teaching Practice"]
-      };
-    
-  }
-
-   public generateData(count, yrange) {
-    var i = 0;
-    var series = [];
-    while (i < count) {
-      var x = "w" + (i + 1).toString();
-      var y =
-        Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min;
-
-      series.push({
-        x: x,
-        y: y
-      });
-      i++;
-    }
-    return series;
-  }
-
-  ngOnInit(): void {
-    if (!this.photoUrl) {
-      this.showInitials = true;
-      this.createInititals();
-
-      const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length));
-      this.circleColor = this.colors[randomIndex];
-  }
-  this.PreSurService.profileData().subscribe((res)=> {
-    this.profileDetails = res
-    this.email = res[0]["email"]
-    this.location = res[0]["location"]
-    this.gender = res[0]["gender"]
-    this.userName = res[0]["first_name"]
-    this.preSurveyDate = new Date(res[0]["preSurveydate"]).toLocaleDateString("en-US", { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' } )
-    this.responsesDate = new Date(res[0]["responsesdate"]).toLocaleDateString("en-US", { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' } )
-    this.cpcqDate = new Date(res[0]["cpcqdate"]).toLocaleDateString("en-US", { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' } )
-
-    this.currentStatus = res[0]["status"].lastIndexOf(true)
-    // 
-    if(res[0]["photo_profile"].length != 0){
-      this.showInitials = false
-      var lenSTr = res[0]["photo_profile"].length
-      this.avatarLink = res[0]["photo_profile"]
-    }
-  })
-
-  this.cpcqService.getCPCQStatus().subscribe((res) => {
-    this.finalDate = new Date(res[0]["created"]).toDateString()
-  })
-
-
-  }
-
-  private createInititals(): void {
-    let initials = "";
-
-    for (let i = 0; i < this.name.length; i++) {
-        if (this.name.charAt(i) === ' ') {
-            continue;
-        }
-
-        if (this.name.charAt(i) === this.name.charAt(i).toUpperCase()) {
-            initials += this.name.charAt(i);
-
-            if (initials.length == 2) {
-                break;
-            }
-        }
-    }
-
-    this.initials = initials;
-}
-  preSurvey(){
-    this.router.navigateByUrl("/preSurvey");
-  }
-}
-
diff --git a/src/services/cpcq.service.ts b/src/app/services/cpcq.service.ts
similarity index 100%
rename from src/services/cpcq.service.ts
rename to src/app/services/cpcq.service.ts
diff --git a/src/services/firstForm.service.ts b/src/app/services/firstForm.service.ts
similarity index 100%
rename from src/services/firstForm.service.ts
rename to src/app/services/firstForm.service.ts
diff --git a/src/services/login.service.ts b/src/app/services/login.service.ts
similarity index 100%
rename from src/services/login.service.ts
rename to src/app/services/login.service.ts
diff --git a/src/services/mainGame.service.ts b/src/app/services/mainGame.service.ts
similarity index 100%
rename from src/services/mainGame.service.ts
rename to src/app/services/mainGame.service.ts
diff --git a/src/services/overlay-service.service.ts b/src/app/services/overlay-service.service.ts
similarity index 89%
rename from src/services/overlay-service.service.ts
rename to src/app/services/overlay-service.service.ts
index 289b651..27d413c 100644
--- a/src/services/overlay-service.service.ts
+++ b/src/app/services/overlay-service.service.ts
@@ -1,5 +1,5 @@
 import { Injectable } from '@angular/core';
-import { MyOverlayComponent } from '../app/test/my-overlay/my-overlay.component';
+import { MyOverlayComponent } from 'src/app/components/test/my-overlay/my-overlay.component';
 
 @Injectable({providedIn: "root"})
 export class OverlayServiceService {
@@ -10,16 +10,16 @@ export class OverlayServiceService {
   private latestShownOverlayId = -1;
 
   public showOverlay(id: number) {
-    
+
     const overlay = this.overlays.get(id);
-    
+
     if (overlay) {
       overlay.showOverlay();
     }
   }
 
   public registerOverlay(overlay: MyOverlayComponent) {
-    
+
     this.overlays.set(overlay.id, overlay)
   }
 
@@ -35,4 +35,4 @@ export class OverlayServiceService {
     }
   }
 
-}
\ No newline at end of file
+}
diff --git a/src/services/preSurvey.service.ts b/src/app/services/preSurvey.service.ts
similarity index 100%
rename from src/services/preSurvey.service.ts
rename to src/app/services/preSurvey.service.ts
diff --git a/src/app/test/my-overlay/my-overlay.component.ts b/src/app/test/my-overlay/my-overlay.component.ts
deleted file mode 100644
index c752105..0000000
--- a/src/app/test/my-overlay/my-overlay.component.ts
+++ /dev/null
@@ -1,80 +0,0 @@
-import { Component, OnInit, ViewChild, AfterViewInit, ElementRef, Input, OnDestroy, Renderer2, Output, EventEmitter } from '@angular/core';
-import { Overlay, OverlayRef } from '@angular/cdk/overlay';
-import { CdkPortal } from '@angular/cdk/portal';
-import { OverlayServiceService } from '../../../services/overlay-service.service';
-@Component({
-  selector: 'app-my-overlay',
-  templateUrl: './my-overlay.component.html',
-  styleUrls: ['./my-overlay.component.css']
-})
-export class MyOverlayComponent implements OnInit, OnDestroy {
-
-  @Input() connectedTo: any;
-  @Input() text: string;
-  @Input() get id(): number {
-    return this._id;
-  };
-  set id(id: number) {
-    if (typeof id === 'string') {
-      this._id = parseInt(id);
-    } else {
-      this._id = id;
-    }
-  }
-  private _id: number;
-  @Output() closed = new EventEmitter<any>();
-  @ViewChild(CdkPortal) portal: ElementRef;
-  overlayRef: OverlayRef;
-  private nativeElement;
-
-  constructor(private overlay: Overlay,
-    private renderer: Renderer2,
-    private overlayService: OverlayServiceService) {
-  }
-
-  ngOnInit() {
-    this.overlayService.registerOverlay(this);
-    
-    if (this.connectedTo.getBoundingClientRect) {
-      this.nativeElement = this.connectedTo;
-    } else {
-      this.nativeElement = this.connectedTo._elementRef.nativeElement;
-    }
-  }
-
-  public showOverlay() {
-    const positionStrategy = this.overlay.position()
-      .flexibleConnectedTo(this.nativeElement)
-      .withPositions([
-        { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -10 },
-        { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: 10 },
-        { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: 10 },
-      ])
-      .withGrowAfterOpen();
-    const scrollStrategy = this.overlay.scrollStrategies.reposition();
-    const overlayRef = this.overlay.create({ positionStrategy, scrollStrategy, hasBackdrop: true, backdropClass: 'my-backdrop' });
-    this.overlayRef = overlayRef;
-    overlayRef.detachments().subscribe(() => {
-      this.renderer.removeClass(this.nativeElement, 'elevate');
-    this.renderer.removeAttribute(this.nativeElement, 'id');
-    });
-    overlayRef.attach(this.portal);
-    this.renderer.addClass(this.nativeElement, 'elevate');
-    this.renderer.setAttribute(this.nativeElement, 'id', 'onboarding-active');
-    overlayRef.backdropClick().subscribe(() => this.hideOverlay())
-  }
-
-  public hideOverlay() {
-    if (this.overlayRef && this.overlayRef.hasAttached) {
-      this.overlayService.wasClosed(this._id);
-      this.overlayRef.dispose();
-      this.closed.emit();
-    }
-  }
-
-  ngOnDestroy() {
-    this.hideOverlay();
-    this.overlayService.destroyOverlay(this);
-  }
-
-}
\ No newline at end of file
diff --git a/src/app/test/test.component.ts b/src/app/test/test.component.ts
deleted file mode 100644
index 082fb3d..0000000
--- a/src/app/test/test.component.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { Component, OnInit, AfterViewInit } from '@angular/core';
-import { OverlayServiceService } from '../../services/overlay-service.service';
-@Component({
-  selector: 'app-test',
-  templateUrl: './test.component.html',
-  styleUrls: ['./test.component.css']
-})
-export class TestComponent implements AfterViewInit {
-  
-  isActive1 = true;
-   isActive2 = false;
-
-  constructor(private service: OverlayServiceService) {
-  }
-
-  ngAfterViewInit() {
-    this.service.showOverlay(1);
-  }
-
-  restartOnboarding() {
-    this.service.showOverlay(1);
-  }
-
-}
diff --git a/src/app/unpacking-page/unpacking-page.component.ts b/src/app/unpacking-page/unpacking-page.component.ts
deleted file mode 100644
index 1b5f089..0000000
--- a/src/app/unpacking-page/unpacking-page.component.ts
+++ /dev/null
@@ -1,1234 +0,0 @@
-import { Component, OnInit, Inject } from '@angular/core';
-import {AfterViewInit, ElementRef, ViewChild} from '@angular/core';
-import { Router } from '@angular/router';
-import { FirstForm } from "../../services/firstForm.service";
-import { FormBuilder, FormGroup,Validators } from '@angular/forms';
-import Swal from 'sweetalert2';
-import {ThemePalette} from '@angular/material/core';
-import {ProgressBarMode} from '@angular/material/progress-bar';
-declare var $: any;
-import * as RecordRTC from 'recordrtc';
-import { DomSanitizer } from '@angular/platform-browser';
-import {MatDialog, MAT_DIALOG_DATA} from '@angular/material/dialog';
-import {DialogFormComponent} from '../cpcq-form/dialog-form/dialog-form.component';
-
-import {CPCQService} from '../../services/cpcq.service';
-
-export interface DialogData {
-  animal: 'panda' | 'unicorn' | 'lion';
-  status;
-  result;
-}
-@Component({
-  selector: 'app-unpacking-page',
-  templateUrl: './unpacking-page.component.html',
-  styleUrls: ['./unpacking-page.component.css']
-})
-export class UnpackingPageComponent implements OnInit, AfterViewInit {
-  firstForm: FormGroup;
-  responseList:any ;
-  loaded = false;
-
-  questionArray = [["Enter First Name","text"],["Enter Last Name","text"],["Enter Age","number"]];
-  statusCheck = false;
-  buttonClick = false;
-
-  sliderValue = 0;
-
-  selectedIndex = 6;
-
-  color: ThemePalette = 'primary';
-  mode: ProgressBarMode = 'buffer';
-  value1 = 50;
-  bufferValue = 100;
-
-  formValues = [];
-  attributes = ["Attitude","Empathy","Policy","Professionalism","Teaching Practice"];
-  columnHeadings = ["culturalDestructivenessresponse","culturalIncapacityresponse","culturalBlindnessresponse","culturalPreCompetenceresponse","culturalCompetenceresponse","culturalProficiencyresponse"]
-  rowLetters = [["D",'C','B','A','F','E'],['E','A','F','D','B','C'],['F','E','B','C','D','A'],['E','A','B','D','C','F'],['D','C','B','E','A','F']];
-  boldList = [[]];
-  randomList = [[]];
-  finalList=[[]];
-  finalList1 = [];
-  attitudeForm: FormGroup;
-  empathyForm: FormGroup;
-  policyForm: FormGroup;
-
-  finalFeedbackForm:FormGroup;
-
-
-
-
-  //arrays of data getting from the backend
-
-  attitude:any;
-  empathy :any;
-  policy:any;
-  professionalism:any;
-  teachingPractice:any;
-  wordDescription:any;
-  unpackedCount = 0;
-
-  startTime: any;
-  endTime: any;
-  durationTime : any;
-
-  @ViewChild('changeDiv') changeDiv: ElementRef;
-  @ViewChild('changeDiv1') changeDiv1: ElementRef;
-  @ViewChild('changeDiv2') changeDiv2: ElementRef;
-  @ViewChild('changeDiv3') changeDiv3: ElementRef;
-  @ViewChild('changeDiv4') changeDiv4: ElementRef;
-  @ViewChild('changeDiv5') changeDiv5: ElementRef;
-  @ViewChild('changeDiv6') changeDiv6: ElementRef;
-  @ViewChild('changeDiv7') changeDiv7: ElementRef;
-  @ViewChild('changeDiv8') changeDiv8: ElementRef;
-  @ViewChild('changeDiv9') changeDiv9: ElementRef;
-  @ViewChild('changeDiv10') changeDiv10: ElementRef;
-  @ViewChild('changeDiv11') changeDiv11: ElementRef;
-  @ViewChild('changeDiv12') changeDiv12: ElementRef;
-  @ViewChild('changeDiv13') changeDiv13: ElementRef;
-  @ViewChild('changeDiv14') changeDiv14: ElementRef;
-  @ViewChild('changeDiv15') changeDiv15: ElementRef;
-  @ViewChild('changeDiv16') changeDiv16: ElementRef;
-  @ViewChild('changeDiv17') changeDiv17: ElementRef;
-  @ViewChild('changeDiv18') changeDiv18: ElementRef;
-  @ViewChild('changeDiv19') changeDiv19: ElementRef;
-  @ViewChild('changeDiv20') changeDiv20: ElementRef;
-  @ViewChild('changeDiv21') changeDiv21: ElementRef;
-  @ViewChild('changeDiv22') changeDiv22: ElementRef;
-  @ViewChild('changeDiv23') changeDiv23: ElementRef;
-  @ViewChild('changeDiv24') changeDiv24: ElementRef;
-  @ViewChild('changeDiv25') changeDiv25: ElementRef;
-  @ViewChild('changeDiv26') changeDiv26: ElementRef;
-  @ViewChild('changeDiv27') changeDiv27: ElementRef;
-  @ViewChild('changeDiv28') changeDiv28: ElementRef;
-  @ViewChild('changeDiv29') changeDiv29: ElementRef;
-
-
-
-
-
-
-
-
-
-    ngAfterViewInit() {
-        
-
-
-    }
-
-    sliderFunction1(){
-      if(this.sliderValue == 1){
-        this.changeDiv.nativeElement.style.fontSize = "15px";
-        this.changeDiv1.nativeElement.style.fontSize = "15px";
-        this.changeDiv2.nativeElement.style.fontSize = "15px";
-        this.changeDiv3.nativeElement.style.fontSize = "15px";
-        this.changeDiv4.nativeElement.style.fontSize = "15px";
-        this.changeDiv5.nativeElement.style.fontSize = "15px";
-        this.changeDiv6.nativeElement.style.fontSize = "15px";
-        this.changeDiv7.nativeElement.style.fontSize = "15px";
-        this.changeDiv8.nativeElement.style.fontSize = "15px";
-        this.changeDiv9.nativeElement.style.fontSize = "15px";
-        this.changeDiv10.nativeElement.style.fontSize = "15px";
-        this.changeDiv11.nativeElement.style.fontSize = "15px";
-        this.changeDiv12.nativeElement.style.fontSize = "15px";
-        this.changeDiv13.nativeElement.style.fontSize = "15px";
-        this.changeDiv14.nativeElement.style.fontSize = "15px";
-        this.changeDiv15.nativeElement.style.fontSize = "15px";
-        this.changeDiv16.nativeElement.style.fontSize = "15px";
-        this.changeDiv17.nativeElement.style.fontSize = "15px";
-        this.changeDiv18.nativeElement.style.fontSize = "15px";
-        this.changeDiv19.nativeElement.style.fontSize = "15px";
-        this.changeDiv20.nativeElement.style.fontSize = "15px";
-        this.changeDiv21.nativeElement.style.fontSize = "15px";
-        this.changeDiv22.nativeElement.style.fontSize = "15px";
-        this.changeDiv23.nativeElement.style.fontSize = "15px";
-        this.changeDiv24.nativeElement.style.fontSize = "15px";
-        this.changeDiv25.nativeElement.style.fontSize = "15px";
-        this.changeDiv26.nativeElement.style.fontSize = "15px";
-        this.changeDiv27.nativeElement.style.fontSize = "15px";
-        this.changeDiv28.nativeElement.style.fontSize = "15px";
-        this.changeDiv29.nativeElement.style.fontSize = "15px";
-
-        }
-        else if(this.sliderValue == 2){
-        this.changeDiv.nativeElement.style.fontSize = "20px";
-        this.changeDiv1.nativeElement.style.fontSize = "20px";
-        this.changeDiv2.nativeElement.style.fontSize = "20px";
-        this.changeDiv3.nativeElement.style.fontSize = "20px";
-        this.changeDiv4.nativeElement.style.fontSize = "20px";
-        this.changeDiv5.nativeElement.style.fontSize = "20px";
-        this.changeDiv6.nativeElement.style.fontSize = "20px";
-        this.changeDiv7.nativeElement.style.fontSize = "20px";
-        this.changeDiv8.nativeElement.style.fontSize = "20px";
-        this.changeDiv9.nativeElement.style.fontSize = "20px";
-        this.changeDiv10.nativeElement.style.fontSize = "20px";
-        this.changeDiv11.nativeElement.style.fontSize = "20px";
-        this.changeDiv12.nativeElement.style.fontSize = "20px";
-        this.changeDiv13.nativeElement.style.fontSize = "20px";
-        this.changeDiv14.nativeElement.style.fontSize = "20px";
-        this.changeDiv15.nativeElement.style.fontSize = "20px";
-        this.changeDiv16.nativeElement.style.fontSize = "20px";
-        this.changeDiv17.nativeElement.style.fontSize = "20px";
-        this.changeDiv18.nativeElement.style.fontSize = "20px";
-        this.changeDiv19.nativeElement.style.fontSize = "20px";
-        this.changeDiv20.nativeElement.style.fontSize = "20px";
-        this.changeDiv21.nativeElement.style.fontSize = "20px";
-        this.changeDiv22.nativeElement.style.fontSize = "20px";
-        this.changeDiv23.nativeElement.style.fontSize = "20px";
-        this.changeDiv24.nativeElement.style.fontSize = "20px";
-        this.changeDiv25.nativeElement.style.fontSize = "20px";
-        this.changeDiv26.nativeElement.style.fontSize = "20px";
-        this.changeDiv27.nativeElement.style.fontSize = "20px";
-        this.changeDiv28.nativeElement.style.fontSize = "20px";
-        this.changeDiv29.nativeElement.style.fontSize = "20px";
-        }
-        else if(this.sliderValue == 3){
-          this.changeDiv.nativeElement.style.fontSize = "22px";
-          this.changeDiv1.nativeElement.style.fontSize = "22px";
-          this.changeDiv2.nativeElement.style.fontSize = "22px";
-          this.changeDiv3.nativeElement.style.fontSize = "22px";
-          this.changeDiv4.nativeElement.style.fontSize = "22px";
-          this.changeDiv5.nativeElement.style.fontSize = "22px";
-          this.changeDiv6.nativeElement.style.fontSize = "22px";
-          this.changeDiv7.nativeElement.style.fontSize = "22px";
-          this.changeDiv8.nativeElement.style.fontSize = "22px";
-          this.changeDiv9.nativeElement.style.fontSize = "22px";
-          this.changeDiv10.nativeElement.style.fontSize = "22px";
-          this.changeDiv11.nativeElement.style.fontSize = "22px";
-          this.changeDiv12.nativeElement.style.fontSize = "22px";
-          this.changeDiv13.nativeElement.style.fontSize = "22px";
-          this.changeDiv14.nativeElement.style.fontSize = "22px";
-          this.changeDiv15.nativeElement.style.fontSize = "22px";
-          this.changeDiv16.nativeElement.style.fontSize = "22px";
-          this.changeDiv17.nativeElement.style.fontSize = "22px";
-          this.changeDiv18.nativeElement.style.fontSize = "22px";
-          this.changeDiv19.nativeElement.style.fontSize = "22px";
-          this.changeDiv20.nativeElement.style.fontSize = "22px";
-          this.changeDiv21.nativeElement.style.fontSize = "22px";
-          this.changeDiv22.nativeElement.style.fontSize = "22px";
-          this.changeDiv23.nativeElement.style.fontSize = "22px";
-          this.changeDiv24.nativeElement.style.fontSize = "22px";
-          this.changeDiv25.nativeElement.style.fontSize = "22px";
-          this.changeDiv26.nativeElement.style.fontSize = "22px";
-          this.changeDiv27.nativeElement.style.fontSize = "22px";
-          this.changeDiv28.nativeElement.style.fontSize = "22px";
-          this.changeDiv29.nativeElement.style.fontSize = "22px";
-        }
-        else if(this.sliderValue == 4){
-        this.changeDiv.nativeElement.style.fontSize = "25px";
-        this.changeDiv1.nativeElement.style.fontSize = "25px";
-        this.changeDiv2.nativeElement.style.fontSize = "25px";
-        this.changeDiv3.nativeElement.style.fontSize = "25px";
-        this.changeDiv4.nativeElement.style.fontSize = "25px";
-        this.changeDiv5.nativeElement.style.fontSize = "25px";
-        this.changeDiv6.nativeElement.style.fontSize = "25px";
-        this.changeDiv7.nativeElement.style.fontSize = "25px";
-        this.changeDiv8.nativeElement.style.fontSize = "25px";
-        this.changeDiv9.nativeElement.style.fontSize = "25px";
-        this.changeDiv10.nativeElement.style.fontSize = "25px";
-        this.changeDiv11.nativeElement.style.fontSize = "25px";
-        this.changeDiv12.nativeElement.style.fontSize = "25px";
-        this.changeDiv13.nativeElement.style.fontSize = "25px";
-        this.changeDiv14.nativeElement.style.fontSize = "25px";
-        this.changeDiv15.nativeElement.style.fontSize = "25px";
-        this.changeDiv16.nativeElement.style.fontSize = "25px";
-        this.changeDiv17.nativeElement.style.fontSize = "25px";
-        this.changeDiv18.nativeElement.style.fontSize = "25px";
-        this.changeDiv19.nativeElement.style.fontSize = "25px";
-        this.changeDiv20.nativeElement.style.fontSize = "25px";
-        this.changeDiv21.nativeElement.style.fontSize = "25px";
-        this.changeDiv22.nativeElement.style.fontSize = "25px";
-        this.changeDiv23.nativeElement.style.fontSize = "25px";
-        this.changeDiv24.nativeElement.style.fontSize = "25px";
-        this.changeDiv25.nativeElement.style.fontSize = "25px";
-        this.changeDiv26.nativeElement.style.fontSize = "25px";
-        this.changeDiv27.nativeElement.style.fontSize = "25px";
-        this.changeDiv28.nativeElement.style.fontSize = "25px";
-        this.changeDiv29.nativeElement.style.fontSize = "25px";
-        }
-        else if(this.sliderValue == 5){
-        this.changeDiv.nativeElement.style.fontSize = "50px";
-        this.changeDiv1.nativeElement.style.fontSize = "50px";
-        this.changeDiv2.nativeElement.style.fontSize = "50px";
-        this.changeDiv3.nativeElement.style.fontSize = "50px";
-        this.changeDiv4.nativeElement.style.fontSize = "50px";
-        this.changeDiv5.nativeElement.style.fontSize = "50px";
-        
-        }
-    }
-    sliderFunction(e){
-      // 
-      this.sliderValue = e.value;
-      if(e.value == 1){
-        this.changeDiv.nativeElement.style.fontSize = "15px";
-        this.changeDiv1.nativeElement.style.fontSize = "15px";
-        this.changeDiv2.nativeElement.style.fontSize = "15px";
-        this.changeDiv3.nativeElement.style.fontSize = "15px";
-        this.changeDiv4.nativeElement.style.fontSize = "15px";
-        this.changeDiv5.nativeElement.style.fontSize = "15px";
-        this.changeDiv6.nativeElement.style.fontSize = "15px";
-        this.changeDiv7.nativeElement.style.fontSize = "15px";
-        this.changeDiv8.nativeElement.style.fontSize = "15px";
-        this.changeDiv9.nativeElement.style.fontSize = "15px";
-        this.changeDiv10.nativeElement.style.fontSize = "15px";
-        this.changeDiv11.nativeElement.style.fontSize = "15px";
-        this.changeDiv12.nativeElement.style.fontSize = "15px";
-        this.changeDiv13.nativeElement.style.fontSize = "15px";
-        this.changeDiv14.nativeElement.style.fontSize = "15px";
-        this.changeDiv15.nativeElement.style.fontSize = "15px";
-        this.changeDiv16.nativeElement.style.fontSize = "15px";
-        this.changeDiv17.nativeElement.style.fontSize = "15px";
-        this.changeDiv18.nativeElement.style.fontSize = "15px";
-        this.changeDiv19.nativeElement.style.fontSize = "15px";
-        this.changeDiv20.nativeElement.style.fontSize = "15px";
-        this.changeDiv21.nativeElement.style.fontSize = "15px";
-        this.changeDiv22.nativeElement.style.fontSize = "15px";
-        this.changeDiv23.nativeElement.style.fontSize = "15px";
-        this.changeDiv24.nativeElement.style.fontSize = "15px";
-        this.changeDiv25.nativeElement.style.fontSize = "15px";
-        this.changeDiv26.nativeElement.style.fontSize = "15px";
-        this.changeDiv27.nativeElement.style.fontSize = "15px";
-        this.changeDiv28.nativeElement.style.fontSize = "15px";
-        this.changeDiv29.nativeElement.style.fontSize = "15px";
-
-        }
-        else if(e.value == 2){
-        this.changeDiv.nativeElement.style.fontSize = "20px";
-        this.changeDiv1.nativeElement.style.fontSize = "20px";
-        this.changeDiv2.nativeElement.style.fontSize = "20px";
-        this.changeDiv3.nativeElement.style.fontSize = "20px";
-        this.changeDiv4.nativeElement.style.fontSize = "20px";
-        this.changeDiv5.nativeElement.style.fontSize = "20px";
-        this.changeDiv6.nativeElement.style.fontSize = "20px";
-        this.changeDiv7.nativeElement.style.fontSize = "20px";
-        this.changeDiv8.nativeElement.style.fontSize = "20px";
-        this.changeDiv9.nativeElement.style.fontSize = "20px";
-        this.changeDiv10.nativeElement.style.fontSize = "20px";
-        this.changeDiv11.nativeElement.style.fontSize = "20px";
-        this.changeDiv12.nativeElement.style.fontSize = "20px";
-        this.changeDiv13.nativeElement.style.fontSize = "20px";
-        this.changeDiv14.nativeElement.style.fontSize = "20px";
-        this.changeDiv15.nativeElement.style.fontSize = "20px";
-        this.changeDiv16.nativeElement.style.fontSize = "20px";
-        this.changeDiv17.nativeElement.style.fontSize = "20px";
-        this.changeDiv18.nativeElement.style.fontSize = "20px";
-        this.changeDiv19.nativeElement.style.fontSize = "20px";
-        this.changeDiv20.nativeElement.style.fontSize = "20px";
-        this.changeDiv21.nativeElement.style.fontSize = "20px";
-        this.changeDiv22.nativeElement.style.fontSize = "20px";
-        this.changeDiv23.nativeElement.style.fontSize = "20px";
-        this.changeDiv24.nativeElement.style.fontSize = "20px";
-        this.changeDiv25.nativeElement.style.fontSize = "20px";
-        this.changeDiv26.nativeElement.style.fontSize = "20px";
-        this.changeDiv27.nativeElement.style.fontSize = "20px";
-        this.changeDiv28.nativeElement.style.fontSize = "20px";
-        this.changeDiv29.nativeElement.style.fontSize = "20px";
-        }
-        else if(e.value == 3){
-          this.changeDiv.nativeElement.style.fontSize = "22px";
-          this.changeDiv1.nativeElement.style.fontSize = "22px";
-          this.changeDiv2.nativeElement.style.fontSize = "22px";
-          this.changeDiv3.nativeElement.style.fontSize = "22px";
-          this.changeDiv4.nativeElement.style.fontSize = "22px";
-          this.changeDiv5.nativeElement.style.fontSize = "22px";
-          this.changeDiv6.nativeElement.style.fontSize = "22px";
-          this.changeDiv7.nativeElement.style.fontSize = "22px";
-          this.changeDiv8.nativeElement.style.fontSize = "22px";
-          this.changeDiv9.nativeElement.style.fontSize = "22px";
-          this.changeDiv10.nativeElement.style.fontSize = "22px";
-          this.changeDiv11.nativeElement.style.fontSize = "22px";
-          this.changeDiv12.nativeElement.style.fontSize = "22px";
-          this.changeDiv13.nativeElement.style.fontSize = "22px";
-          this.changeDiv14.nativeElement.style.fontSize = "22px";
-          this.changeDiv15.nativeElement.style.fontSize = "22px";
-          this.changeDiv16.nativeElement.style.fontSize = "22px";
-          this.changeDiv17.nativeElement.style.fontSize = "22px";
-          this.changeDiv18.nativeElement.style.fontSize = "22px";
-          this.changeDiv19.nativeElement.style.fontSize = "22px";
-          this.changeDiv20.nativeElement.style.fontSize = "22px";
-          this.changeDiv21.nativeElement.style.fontSize = "22px";
-          this.changeDiv22.nativeElement.style.fontSize = "22px";
-          this.changeDiv23.nativeElement.style.fontSize = "22px";
-          this.changeDiv24.nativeElement.style.fontSize = "22px";
-          this.changeDiv25.nativeElement.style.fontSize = "22px";
-          this.changeDiv26.nativeElement.style.fontSize = "22px";
-          this.changeDiv27.nativeElement.style.fontSize = "22px";
-          this.changeDiv28.nativeElement.style.fontSize = "22px";
-          this.changeDiv29.nativeElement.style.fontSize = "22px";
-        }
-        else if(e.value == 4){
-        this.changeDiv.nativeElement.style.fontSize = "25px";
-        this.changeDiv1.nativeElement.style.fontSize = "25px";
-        this.changeDiv2.nativeElement.style.fontSize = "25px";
-        this.changeDiv3.nativeElement.style.fontSize = "25px";
-        this.changeDiv4.nativeElement.style.fontSize = "25px";
-        this.changeDiv5.nativeElement.style.fontSize = "25px";
-        this.changeDiv6.nativeElement.style.fontSize = "25px";
-        this.changeDiv7.nativeElement.style.fontSize = "25px";
-        this.changeDiv8.nativeElement.style.fontSize = "25px";
-        this.changeDiv9.nativeElement.style.fontSize = "25px";
-        this.changeDiv10.nativeElement.style.fontSize = "25px";
-        this.changeDiv11.nativeElement.style.fontSize = "25px";
-        this.changeDiv12.nativeElement.style.fontSize = "25px";
-        this.changeDiv13.nativeElement.style.fontSize = "25px";
-        this.changeDiv14.nativeElement.style.fontSize = "25px";
-        this.changeDiv15.nativeElement.style.fontSize = "25px";
-        this.changeDiv16.nativeElement.style.fontSize = "25px";
-        this.changeDiv17.nativeElement.style.fontSize = "25px";
-        this.changeDiv18.nativeElement.style.fontSize = "25px";
-        this.changeDiv19.nativeElement.style.fontSize = "25px";
-        this.changeDiv20.nativeElement.style.fontSize = "25px";
-        this.changeDiv21.nativeElement.style.fontSize = "25px";
-        this.changeDiv22.nativeElement.style.fontSize = "25px";
-        this.changeDiv23.nativeElement.style.fontSize = "25px";
-        this.changeDiv24.nativeElement.style.fontSize = "25px";
-        this.changeDiv25.nativeElement.style.fontSize = "25px";
-        this.changeDiv26.nativeElement.style.fontSize = "25px";
-        this.changeDiv27.nativeElement.style.fontSize = "25px";
-        this.changeDiv28.nativeElement.style.fontSize = "25px";
-        this.changeDiv29.nativeElement.style.fontSize = "25px";
-        }
-        else if(e.value == 5){
-        this.changeDiv.nativeElement.style.fontSize = "50px";
-        this.changeDiv1.nativeElement.style.fontSize = "50px";
-        this.changeDiv2.nativeElement.style.fontSize = "50px";
-        this.changeDiv3.nativeElement.style.fontSize = "50px";
-        this.changeDiv4.nativeElement.style.fontSize = "50px";
-        this.changeDiv5.nativeElement.style.fontSize = "50px";
-        
-        }
-
-    }
-  constructor(private fb: FormBuilder, private apiService: CPCQService,private router: Router, private formService : FirstForm,private domSanitizer: DomSanitizer,public dialog: MatDialog) { }
-  openDialog(i,j,id) {
-    var arr = [];
-    arr.push(this.attributes[i]);
-    arr.push(j);
-    arr.push(this.columnHeadings[j])
-    arr.push(id)
-    const dialogRef = this.dialog.open(DialogFormComponent, {
-      data: {
-        animal: arr,
-        status : "form"
-      },
-      disableClose:true
-    });
-    dialogRef.afterClosed().subscribe(result => {
-      
-      if(this.responsesArray[i][j][1] == "colorbold"){
-        this.unpackedCount = this.unpackedCount +1
-        this.responsesArray[i][j][1] = "greencolorbold";
-      }
-      
-    })
-  }
-
-  openWordDialog(i) {
-    // 
-    this.buttonClick = true;
-    const dialogRef = this.dialog.open(DialogFormComponent, {
-      data: {
-        animal: i,
-        status : "word"
-      },
-      disableClose:true
-    });
-
-    dialogRef.afterClosed().subscribe(result => {
-      
-      this.wordDescription = result;
-    })
-  }
-
-  helpDialog(i) {
-    // 
-    this.dialog.open(DialogFormComponent, {
-      data: {
-        animal: i,
-        status : "help"
-      }
-    });
-  }
-
-  keyPressFunc(e){
-
-    // 
-    var numbersList = ["1"];
-    for (let key in this.attitudeForm.value) {
-      
-
-      if(numbersList.indexOf(this.attitudeForm.value[key]) == -1){
-        // 
-        return "Number";
-      }
-    }
-
-    
-  }
-
-  getEmailError(){
-    return "Error";
-  }
-responsesArray =[]
-responsesCount = 0
-temp = []
-  getResponses(){
-    this.apiService.getResponsesData().subscribe((res) => {
-      for(let key in res){
-        this.temp = []
-        for(let key1 in res[key]){
-          if(res[key][key1] == "colorbold"){
-            this.responsesCount = this.responsesCount + 1
-          }
-          if(res[key][key1][1] == "greencolorbold"){
-            this.unpackedCount = this.unpackedCount + 1
-            console.log(this.unpackedCount)
-          }
-
-          this.temp.push(res[key][key1])
-
-        }
-        this.responsesArray.push(this.temp)
-      }
-      
-    })
-  }
-
-
-  getForm(){
-    var arr = [];
-    var arr1 = [];
-    var arr2 = [];
-    var i;
-    var attitudeResult = [];
-    var empathyResult = [];
-    var policyResult = [];
-    var profResult = [];
-    var teachingResult = [];
-    this.finalList = [[]]
-    this.boldList = [[]]
-    this.apiService.getFormData().subscribe((res) => {
-      for (let key in res){
-        arr = [];
-        if(res[key]["topic"] == "Attitude"){
-          attitudeResult.push("Attitude");
-          arr.push("Attitude");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0 )
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1])-4)  >= 2 ? 1 : 0)
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1])-5)  >= 2 ? 1 : 0)
-          attitudeResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1])-6)  >= 2 ? 1 : 0)
-        } 
-        else if (res[key]["topic"] == "Empathy"){
-          empathyResult.push("Empathy")
-          arr.push("Empathy");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0 )
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1])-4)  >= 2 ? 1 : 0)
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1])-5)  >= 2 ? 1 : 0)
-          empathyResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1])-6)  >= 2 ? 1 : 0)
-        }
-        else if (res[key]["topic"] == "Policy"){
-          policyResult.push("Policy")
-          arr.push("Policy");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-
-          policyResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          policyResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          policyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0 )
-          policyResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1])-4)  >= 2 ? 1 : 0)
-          policyResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1])-5)  >= 2 ? 1 : 0)
-          policyResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1])-6)  >= 2 ? 1 : 0)
-        }
-        else if (res[key]["topic"] == "Professionalism"){
-          profResult.push("Professionalism");
-          arr.push("Professionalism");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-
-          profResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          profResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          profResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0 )
-          profResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1])-4)  >= 2 ? 1 : 0)
-          profResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1])-5)  >= 2 ? 1 : 0)
-          profResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1])-6)  >= 2 ? 1 : 0)
-        }
-        else if (res[key]["topic"] == "Teaching Practice"){
-          arr.push("Teaching Pracice");
-          arr.push(res[key]["culturalDestructiveness"])
-          arr.push(res[key]["culturalIncapacity"])
-          arr.push(res[key]["culturalBlindness"])
-          arr.push(res[key]["culturalPreCompetence"])
-          arr.push(res[key]["culturalCompetence"])
-          arr.push(res[key]["culturalProficiency"])
-          teachingResult.push("Teaching Practice");
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0)
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0)
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0 )
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1])-4)  >= 2 ? 1 : 0)
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1])-5)  >= 2 ? 1 : 0)
-          teachingResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1])-6)  >= 2 ? 1 : 0)
-        }
-
-        this.boldList.push(arr);
-
-      }
-      this.finalList.push(attitudeResult)
-      this.finalList.push(empathyResult)
-      this.finalList.push(policyResult)
-      this.finalList.push(profResult)
-      this.finalList.push(teachingResult)
-    })
-    this.finalList.splice(0, 1);
-    this.boldList.splice(0, 1);
-    // this.getAllIndexes(this.finalList,1)
-    
-    
-
-  }
-
-  emoji:any;
-  changeEmojiSize(data){
-    document.getElementById("angry").style.height = "30px"
-    document.getElementById("angry").style.width = "30px"
-    document.getElementById("sad").style.height = "30px"
-    document.getElementById("sad").style.width = "30px"
-    document.getElementById("neutral").style.height = "30px"
-    document.getElementById("neutral").style.width = "30px"
-    document.getElementById("smile").style.height = "30px"
-    document.getElementById("smile").style.width = "30px"
-    document.getElementById("heart").style.height = "30px"
-    document.getElementById("heart").style.width = "30px"
-    document.getElementById(data).style.height = "50px"
-    document.getElementById(data).style.width = "50px"
-
-    this.emoji = data;
-  }
-
-  thumbs:any;
-  changeThumbsSize(data){
-    document.getElementById("thumbsup").style.height = "30px"
-    document.getElementById("thumbsup").style.width = "30px"
-    document.getElementById("thumbsdown").style.height = "30px"
-    document.getElementById("thumbsdown").style.width = "30px"
-
-    document.getElementById(data).style.height = "50px"
-    document.getElementById(data).style.width = "50px"
-    this.thumbs = data;
-  }
-  finalSubmit(){
-    this.finalFeedbackForm.value["q6"] = this.thumbs
-    this.finalFeedbackForm.value["q7"] = this.emoji
-
-    this.endTime = new Date()
-    
-    this.durationTime = (this.endTime - this.startTime)/1000
-    this.durationTime = this.durationTime/ 60
-
-    this.apiService.patchStatus("finalfeedbackstatus").subscribe((res) => {
-
-    })
-
-    this.apiService.postFeedbackForm(this.finalFeedbackForm.value).subscribe((res) => {
-      this.apiService.changeCPCQStatus().subscribe((res1) => {
-        Swal.fire({
-          text: "Submitted",
-          icon: "success"
-        }).then((res) => {
-          if(res["isConfirmed"]){
-            this.router.navigateByUrl("/result")
-          }
-        })
-        
-      })
-    },(err) => {
-      
-    })
-    
-  }
-  ngOnInit(): void {
-    this.getResponses()
-    this.startTime = new Date()
-    this.finalFeedbackForm = this.fb.group({
-      q1:[""],
-      q2:[""],
-      q3:[""],
-      q4:[""],
-      q5:[""],
-      q6:[""],
-      q7:[""],
-    })
-
-    this.apiService.attitudeData().subscribe((res) => {
-      // 
-      this.attitude = res[0];
-      // 
-    },(err) => {
-      
-    })
-
-    this.apiService.empathyData().subscribe((res) => {
-      // 
-      this.empathy = res[0];
-      // 
-    },(err) => {
-      
-    })
-
-    this.apiService.policyData().subscribe((res) => {
-      this.policy = res[0];
-    },(err) => {
-      
-    })
-
-    this.apiService.professionalismData().subscribe((res) => {
-      this.professionalism = res[0];
-    },(err) => {
-      
-    })
-
-    this.apiService.teachingData().subscribe((res) => {
-      this.teachingPractice = res[0];
-    },(err) => {
-      
-    })
-
-    this.attitudeForm = this.fb.group({
-      A:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      B:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      C:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      D:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      E:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      F:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      description:["",[Validators.required]]
-
-    })
-
-    this.empathyForm = this.fb.group({
-      A:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      B:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      C:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      D:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      E:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      F:["",[Validators.minLength(1),Validators.maxLength(1)]],
-
-    })
-
-    this.policyForm = this.fb.group({
-      A:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      B:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      C:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      D:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      E:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      F:["",[Validators.minLength(1),Validators.maxLength(1)]],
-
-    })
-
-
-    var arr = [];
-    var arr1 = [];
-    var arr2 = [];
-    var i;
-    for(var j = 0;j<5;j++){
-      arr = [];
-      arr1 = [];
-      arr2 = [];
-      i = 0;
-      while(i<6){
-        var item1 = Math.floor(Math.random() * (7 - 1) + 1); 
-        if(arr1.indexOf(item1) == -1){
-          if(i == 0){
-            arr.push(this.attributes[j]);
-            arr.push(this.rowLetters[j][i] + ". "+ item1);
-            arr1.push(item1);
-            if(arr1[arr1.length -1] >2){
-              // 
-              arr2.push("True");
-            }
-            else{
-              arr2.push("False");
-            }
-          }
-          else{
-            arr.push(this.rowLetters[j][i] + ". "+ item1);
-            arr1.push(item1);
-            if(i==1){
-              if(arr1[arr1.length - 1] >3){
-                arr2.push("True");
-              }
-              else{
-                arr2.push("False");
-              }
-            }
-            else if(i==2){
-              if(arr1[arr1.length - 1] >4 || arr1[arr1.length - 1] == 1){
-                arr2.push("True");
-              }
-              else{
-                arr2.push("False");
-              }
-            }
-            else if(i==3){
-              if(arr1[arr1.length - 1] >5 || arr1[arr1.length - 1] <4){
-                arr2.push("True");
-              }
-              else{
-                arr2.push("False");
-              }
-            }
-            else if(i==4){
-              if(arr1[arr1.length - 1] <4){
-                arr2.push("True");
-              }
-              else{
-                arr2.push("False");
-              }
-            }
-            else if(i==5){
-              if(arr1[arr1.length - 1] <5){
-                arr2.push("True");
-              }
-              else{
-                arr2.push("False");
-              }
-            }
-          }
-          i = i + 1;
-        }
-        else{
-          continue;
-        }
-        
-      }
-      this.formValues.push(arr);
-      this.boldList.push(arr1);
-      this.randomList.push(arr2);
-    }
-    this.boldList.splice(0, 1);
-    this.randomList.splice(0, 1);
-    
-    
-    
-    this.getAllIndexes(this.randomList,"True");
-    this.loaded = true;
-  }
-
-  getAllIndexes(arr, val) {
-    var indexes = [];
-    var i = -1;
-    for(var i = 0;i<arr.length;i++){
-      for(var j = 0;j<arr[i].length;j++){
-        if(arr[i][j] == "True"){
-          var arr1 = [];
-          arr1.push(i);
-          arr1.push(j)
-          indexes.push(arr1);
-        }
-      }
-    }
-    
-    var arr1 = [];
-    for(var i = 0;i<indexes.length;i++){
-      arr1.push(i);
-    }
-    var ranNums = [];
-    var i = arr1.length;
-    var j = 0;
-    var count = 0;
-    while (i--) {
-      
-      if(count < 5){
-        j = Math.floor(Math.random() * (i+1));
-      ranNums.push(arr1[j]);
-      arr1.splice(j,1);
-      count = count+1;
-      }
-      else{
-        break;
-      }
-  }
-  
-
-  // 
-  for(var i = 0;i<this.boldList.length;i++){
-    var temp = [];
-    for(var j = 0 ;j <6;j++){
-      temp.push("False");
-    }
-    this.finalList1.push(temp);
-  }
-  
-  
-  for(var i = 0;i<ranNums.length;i++){
-    var item = indexes[ranNums[i]];
-    
-    this.finalList1[item[0]][item[1]] = "True";
-  }
-  // this.finalList1.splice(0,1)
-  
-}
-  preSurvey(){
-    this.router.navigateByUrl("/preSurvey");
-  }
-
-  nextButton(){
-    if(this.selectedIndex == 0){
-      this.selectedIndex = this.selectedIndex + 1;
-      return;
-    }
-    if(this.selectedIndex == 7){
-      this.router.navigateByUrl('/dashboard');
-      return;
-    }
-
-    var numberList = [];
-    var flag = true;
-    for (let key in this.attitudeForm.value) {
-      
-      if((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && (key != "description")){
-        flag = false;
-        Swal.fire({
-          text: "Please enter values from 1 through 6 only.",
-          icon: "warning"
-        }).then((res) => {
-        })
-        break;
-      }
-      if(numberList.indexOf(this.attitudeForm.value[key]) == -1){
-        numberList.push(this.attitudeForm.value[key]);
-      }
-      else{
-        flag = false;
-        Swal.fire({
-          text: "The inputs have been repeated. Please enter values from 1 through 6.",
-          icon: "warning"
-        }).then((res) => {
-        })
-        break;
-      }
-    }
-    if(!this.buttonClick){
-      flag = false;
-      Swal.fire({
-
-        text: "Click on the word '"+ this.attributes[this.selectedIndex-1]+"' and respond to the prompt.",
-        icon: "warning"
-      }).then((res) => {
-      })
-    }
-    if(flag){
-      
-      if(this.selectedIndex == 7){
-        this.router.navigateByUrl("/postSurvey");
-      }
-      this.sliderFunction1();
-      var formData = {}
-      formData['topic'] = this.attributes[this.selectedIndex-1]
-      if(this.attributes[this.selectedIndex-1] == "Attitude"){
-        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value['C']
-        formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalPreCompetence"] = "A. " + this.attitudeForm.value['A']
-        formData["culturalCompetence"] = "F. " + this.attitudeForm.value['F']
-        formData["culturalProficiency"] = "E. " + this.attitudeForm.value['E']
-
-      }
-      else if(this.attributes[this.selectedIndex-1] == "Empathy"){
-        formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value['E']
-        formData["culturalIncapacity"] = "A. " + this.attitudeForm.value['A']
-        formData["culturalBlindness"] = "F. " + this.attitudeForm.value['F']
-        formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalCompetence"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalProficiency"] = "C. " + this.attitudeForm.value['C']
-      }
-      else if(this.attributes[this.selectedIndex-1] == "Policy"){
-        formData["culturalDestructiveness"] = "F. " + this.attitudeForm.value['F']
-        formData["culturalIncapacity"] = "E. " + this.attitudeForm.value['E']
-        formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalPreCompetence"] = "C. " + this.attitudeForm.value['C']
-        formData["culturalCompetence"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalProficiency"] = "A. " + this.attitudeForm.value['A']
-      }
-      else if(this.attributes[this.selectedIndex-1] == "Professionalism"){
-        formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value['E']
-        formData["culturalIncapacity"] = "A. " + this.attitudeForm.value['A']
-        formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalCompetence"] = "C. " + this.attitudeForm.value['C']
-        formData["culturalProficiency"] = "F. " + this.attitudeForm.value['F']
-      }
-      else if(this.attributes[this.selectedIndex-1] == "Teaching Practice"){
-        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value['D']
-        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value['C']
-        formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-        formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value['E']
-        formData["culturalCompetence"] = "A. " + this.attitudeForm.value['A']
-        formData["culturalProficiency"] = "F. " + this.attitudeForm.value['F']
-      }
-
-      this.endTime = new Date()
-      
-      this.durationTime = (this.endTime - this.startTime)/1000
-      this.durationTime = this.durationTime/ 60
-      
-      formData["description"] = this.wordDescription
-      formData["duration"] = this.durationTime
-      this.apiService.postFormData(formData).subscribe((res) => {
-        // 
-      },(err) => {
-        
-      })
-      // this.getForm();
-      this.selectedIndex = this.selectedIndex + 1;
-      this.buttonClick = false;
-      this.startTime = new Date()
-      this.attitudeForm = this.fb.group({
-        A:["",[Validators.minLength(1),Validators.maxLength(1)]],
-        B:["",[Validators.minLength(1),Validators.maxLength(1)]],
-        C:["",[Validators.minLength(1),Validators.maxLength(1)]],
-        D:["",[Validators.minLength(1),Validators.maxLength(1)]],
-        E:["",[Validators.minLength(1),Validators.maxLength(1)]],
-        F:["",[Validators.minLength(1),Validators.maxLength(1)]],
-      })
-    }
-   
-  }
-
-  postSurvey(){
-    this.router.navigateByUrl("/postSurvey");
-  }
-
-  submitForm1(){
-    if(this.unpackedCount >= 5 ){
-      this.endTime = new Date()
-      
-      this.durationTime = (this.endTime - this.startTime)/1000
-      this.durationTime = this.durationTime/ 60
-      this.apiService.patchStatus("cpcqstatus").subscribe((res) => {
-        Swal.fire({
-          text: "Submitted",
-          icon: "success"
-        }).then((res) => {
-          if(res["isConfirmed"]){
-            // this.getForm()
-            // this.selectedIndex = this.selectedIndex + 1;
-            this.router.navigateByUrl("/finalFeedback")
-          }
-        })
-      })
-
-    
-    }
-    else{
-      Swal.fire({
-        text: "Please click on all the yellow boxes and answer the questions in the prompt.",
-        icon: "warning"
-      }).then((res) => {
-      })
-    }
-    
-  }
-  
-  submitForm(){
-    if(this.selectedIndex >= this.responsesCount){
-      var numberList = [];
-      var flag = false;
-      
-      for (let key in this.attitudeForm.value) {
-        
-        if((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && (key != "description")){
-        
-
-          flag = true;
-          Swal.fire({
-            text: "Please enter values from 1 through 6 only.",
-            icon: "warning"
-          }).then((res) => {
-          })
-          break;
-        }
-        if(numberList.indexOf(this.attitudeForm.value[key]) == -1){
-          numberList.push(this.attitudeForm.value[key]);
-        }
-        else{
-          flag = true;
-          Swal.fire({
-            text: "The inputs have been repeated. Please enter values from 1 through 6.",
-            icon: "warning"
-          }).then((res) => {
-          })
-          break;
-        }
-      }
-      if(!this.buttonClick){
-        flag = true;
-        Swal.fire({
-          text: "Click on the word '"+ this.attributes[this.selectedIndex-1]+"' and respond to the prompt.",
-          icon: "warning"
-        }).then((res) => {
-        })
-      }
-      if(!flag){
-
-      
-      // 
-      var formData = {}
-
-      formData['topic'] = this.attributes[this.selectedIndex-1]
-      formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value['D']
-      formData["culturalIncapacity"] = "C. " + this.attitudeForm.value['C']
-      formData["culturalBlindness"] = "B. " + this.attitudeForm.value['B']
-      formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value['E']
-      formData["culturalCompetence"] = "A. " + this.attitudeForm.value['A']
-      formData["culturalProficiency"] = "F. " + this.attitudeForm.value['F']
-      
-      formData["description"] = this.wordDescription
-      this.endTime = new Date()
-      
-      this.durationTime = (this.endTime - this.startTime)/1000
-      this.durationTime = this.durationTime/ 60
-
-      formData["duration"] = this.durationTime
-      this.apiService.postFormData(formData).subscribe((res) => {
-        // 
-        this.apiService.patchStatus("responsesstatus").subscribe((res) => {
-          Swal.fire({
-            text: "Submitted",
-            icon: "success"
-          }).then((res) => {
-            if(res["isConfirmed"]){
-              // this.getForm()
-          this.getResponses()
-  
-              this.selectedIndex = this.selectedIndex + 1;
-              this.startTime = new Date()
-            }
-          })
-
-        })
-      },(err) => {
-        
-      })
-    }
-   
-  }
-  }
-
-  submit(){
-    // 
-    var tempDict;
-    this.responseList = [];
-    for(let key in this.firstForm.value){
-      tempDict = {}
-      tempDict["question"] = key
-      tempDict["response"] = this.firstForm.value[key];
-      this.responseList.push(tempDict);
-    }
-    // 
-
-    this.formService.submitResponse(this.responseList).subscribe((res) => {
-      // 
-      Swal.fire({
-        text: "Submitted",
-        icon: "success"
-      })  
-      this.router.navigateByUrl("/game");
-    },(err) => {
-      
-      Swal.fire({
-        text: "Duplicate Entries",
-        icon: "warning"
-      })  
-    })
-
-  }
-
-  title = 'micRecorder';
-//Lets declare Record OBJ
-record;
-//Will use this flag for toggeling recording
-recording = false;
-//URL of Blob
-url;
-error;
-sanitize(url: string) {
-return this.domSanitizer.bypassSecurityTrustUrl(url);
-}
-/**
-* Start recording.
-*/
-initiateRecording() {
-this.recording = true;
-let mediaConstraints = {
-video: false,
-audio: true
-};
-navigator.mediaDevices.getUserMedia(mediaConstraints).then(this.successCallback.bind(this), this.errorCallback.bind(this));
-}
-/**
-* Will be called automatically.
-*/
-successCallback(stream) {
-var options = {
-mimeType: "audio/wav",
-numberOfAudioChannels: 1,
-// sampleRate: 16000,
-};
-//Start Actuall Recording
-var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
-this.record = new StereoAudioRecorder(stream, options);
-this.record.record();
-}
-/**
-* Stop recording.
-*/
-stopRecording() {
-this.recording = false;
-this.record.stop(this.processRecording.bind(this));
-}
-/**
-* processRecording Do what ever you want with blob
-* @param  {any} blob Blog
-*/
-processRecording(blob) {
-this.url = URL.createObjectURL(blob);
-// 
-// 
-}
-/**
-* Process Error.
-*/
-errorCallback(error) {
-this.error = 'Can not play audio in your browser';
-}
-
-
-
-}
diff --git a/tsconfig.json b/tsconfig.json
index 253b335..8538992 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -11,7 +11,10 @@
         "moduleResolution": "node",
         "importHelpers": true,
         "target": "es2015",
-        "lib": ["es2018", "dom"]
+        "lib": ["es2018", "dom"],
+        "paths": {
+            "src/*": ["src/*"]
+        }
     },
     "angularCompilerOptions": {
         "fullTemplateTypeCheck": true,
-- 
GitLab


From 7248ee24fec60cfc28b08bcb3ab8eafefee1933c Mon Sep 17 00:00:00 2001
From: ramesh <rdramesh2009@gmail.com>
Date: Mon, 11 Jul 2022 12:50:11 -0400
Subject: [PATCH 06/23] cleaning

---
 .firebase/hosting.ZGlzdC9pTWF0dC1GRQ.cache    | 125 ------------------
 .firebaserc                                   |  11 --
 firebase.json                                 |  28 ----
 .../about-comp/about-comp.component.html      |  84 ++++++------
 .../change-password.component.html            |  46 +++++--
 .../email-password.component.html             |  30 +++--
 src/app/services/preSurvey.service.ts         |   2 +
 7 files changed, 93 insertions(+), 233 deletions(-)
 delete mode 100644 .firebase/hosting.ZGlzdC9pTWF0dC1GRQ.cache
 delete mode 100644 .firebaserc
 delete mode 100644 firebase.json

diff --git a/.firebase/hosting.ZGlzdC9pTWF0dC1GRQ.cache b/.firebase/hosting.ZGlzdC9pTWF0dC1GRQ.cache
deleted file mode 100644
index 835bb39..0000000
--- a/.firebase/hosting.ZGlzdC9pTWF0dC1GRQ.cache
+++ /dev/null
@@ -1,125 +0,0 @@
-index.html,1619566465743,9c204e38e3326520aa78ee05f4d286a0c098a4f3b360c0cc8d4ac6a9d4a1adbf
-runtime-es5.0811dcefd377500b5b1a.js,1619566444247,c4aa0a348c0dcf9c6af4b7b3f066d0599bcec97472ed96ab232c8dceb70607cb
-3rdpartylicenses.txt,1619566444062,bde49fd938476806b63b2047ae0f4e3102e044519f485131bff88bb552c43184
-runtime-es2015.0811dcefd377500b5b1a.js,1619566444247,c4aa0a348c0dcf9c6af4b7b3f066d0599bcec97472ed96ab232c8dceb70607cb
-polyfills-es2015.999c0558d72d5d965bdc.js,1619566444245,6462a7254f98b12a0a557a76574e1a6186eeb0ecc920c43a94af151e92030d33
-assets/avatar5.png,1619566465573,efb175cff26b23d52d3f137694cddb256f3463c54cdaeca9b065799be5770b17
-assets/avatar6.jpeg,1619566465573,3b142b6b71fb1146c8ede93d37bc90e8b95049f34a404b7ced7df5d208cc0881
-assets/heart.jpeg,1619566465635,0f0c0d3cc55b13191a6577f0507f82d5946fdd5ded604bf9d7511ef6b64a8994
-assets/profile.png,1619566465647,6613152bb9be7276ad32970047ad254dcade34e40b3be1facc349615aafab96c
-assets/thumbsdown.png,1619566465722,c49935db83faccd5cc24ab8031c563bfcbb922211bd30ba5bbb6a96df2b52186
-assets/thumbsup.png,1619566465723,19d7aaa422d58bc4b607c990df8ee1bd84652c128c6673590bae2d90b371a31e
-assets/undraw_file_sync_ot38.svg,1619566465723,807231164779f0ee7db5d9f185eb4c005c3a916e111c1fd52c8dd6633bc5bf26
-assets/Dialog _ Angular Material_files/angular-white-transparent.svg,1619566465612,78c61233bcfad61df8dfac1d5eb661ce426ae24e475517c46c15edecefe43156
-assets/Dialog _ Angular Material_files/github-circle-white-transparent.svg,1619566465612,4f7840e2ac1981d1c42b85f2693ab7581ff3491c9fbfb8a6c3b59383a618f5c3
-assets/Dialog _ Angular Material_files/angular-material-logo.svg,1619566465611,d26032573293f3958d8a7047093ac11146476aec7e152523b63e246182b23e79
-favicon.ico,1619566465452,4c5be5ff59c3e06c8137e20e9b0e2c3511274e879c2c81686c6e916396747dea
-assets/heart.webp,1619566465636,382139bad505817b8dece5f68cf3464539a3d49d9f50de036c94ebff80fa62e7
-assets/dwayne.jpeg,1619566465634,65ca06886688d3b8fcdce32a27810154d7fb189795f5be3dcc2ce78a47e10ed2
-assets/login.png,1619566465641,f12b5881ee9b572efe28106abcca24a6d8f80d570f9d224a29863ad03d1343a9
-assets/profile.jpg,1619566465646,5f5066bc1db8a6986b1c15e60c39ac1b06ca6c5cc59042fd14b1ec37018256eb
-assets/sad.png,1619566465720,6ef738e88d62bf448797543c38fc6b7c58e7dc42268672431eb730c463cdeb3a
-assets/vcu.jpg,1619566465724,f304ce2e514fbb1f5e04fcae86d03b7886052b9d8ee90092803a2da6eb461cbf
-assets/Dialog _ Angular Material_files/analytics.js,1619566465611,b6c3e89dbc4ae5f7670c5d467b728dbc72b103b95161d2b2d900f6faa95ed795
-assets/avatar3.png,1619566465571,62f6a76e4760a60ad8cc97540c0011640befa9b4d7e49fabdcc27e2e3aa648b0
-assets/angry.png,1619566465567,31986dff31f1d9ee1ae2f4ebed314617212f0e6797a1a189a823379c88df777b
-assets/avatar4.jpeg,1619566465573,72a9588b4be28866ebf069b8e94132abf7e1bcedab43f00df37879e79a3ae6f5
-assets/image5.jpeg,1619566465640,f27d0bc890563193621332cf2825db91bbddc0ebb526091107a65f18f33fa408
-assets/image1.jpeg,1619566465637,0cc8ad4c7dc26e96d48adafd38f5cecfebe7c965d98bf31893608ad40c80595a
-assets/neutral.png,1619566465642,b2aa35a8f08a6cfad6d00115ee5bbe604b0b1ebd92d499389f8c5242ed40d328
-assets/image3.jpeg,1619566465639,70bc25d0f060c250af3be04e66c8f43f330cd7ad9263965ba36be2d5501bbf7a
-assets/image4.jpeg,1619566465639,bb9f3a0a922f1e45720081c59891de86f1d35c646b2fbbf80da2e0dab9c8eec3
-assets/image2.jpeg,1619566465638,ea0fb5f11c81b27e11c44e4f12abac8b85040e620a39480e6e7c925e7493e4a8
-assets/Dialog _ Angular Material_files/19-es2015.0c5f52a4920c2f68bc61.js,1619566465607,f2d4cae5cc79fb842aeeadb54ee3f7c8de3a69538db9a39e92e23dc2688a37be
-assets/vcu.png,1619566465725,d5f2c3d215a4d01ad6c10e9fa2d9c0384f0ba7b4d39a6abf769ddfbf362cb4ec
-assets/Dialog _ Angular Material.html,1619566465626,e82dbef9f38cf2cb68edbd006984502e4011b7902a29e9db14aa3122a8a9f2f0
-assets/Dialog _ Angular Material_files/runtime-es2015.d9512bb9b9af89dc72c3.js,1619566465624,9777c58e472e853cec636bc511cd68dad0e5812e4dcc0bd5634b44712afa700e
-assets/Dialog _ Angular Material_files/polyfills-es2015.a386bbc6323a5b442fbd.js,1619566465622,2a8e60148326cc939d853b5485965f807048cbf742134133c4777b758f96b3a4
-assets/Dialog _ Angular Material_files/runtime-es5.d9512bb9b9af89dc72c3.js,1619566465624,38a1a215149f42b58c356a55f327f8a064cf2acbc762894db508b96cab956540
-polyfills-es5.7499fbdfd3f497786540.js,1619566444246,d2f411ca743b85843a35564ebc39e67201c1ebffc09c23dd252f004bcae99ab3
-assets/React App_files/0.82f0d5361beae9c72e8b.hot-update.js,1619566465648,7b21f38c6e6c88fa244142b1fa8da5de58268a1c9d5917b3f49a3c989ec29fb4
-assets/React App_files/0.ad6825b41b914ba94f0e.hot-update.js,1619566465648,02fe73dd7f064a2d093edfebda59b89e61bb3b335f9f9e3b91f2108c2f39585d
-assets/React App_files/MAP_Logo.png,1619566465716,2735f6dd4d6a1aca8294cc67c88c90facd0f4ce8250c06b80e6ca8e1cf0ca407
-styles.383387bd9e52cb02597b.css,1619566444062,a48a0070e693f2c3d16c360fa35db7be2e2d2801dfa716165fda7c03752c171c
-assets/React App_files/main.82f0d5361beae9c72e8b.hot-update.js,1619566465712,80eeb2532db517ae2b69436acd2e8dba24073750718f2469e5345c9557766f84
-assets/React App_files/bundle.js,1619566465709,58a5ba17d088fbdd49c522649777d616b9f331e9d6f6600a3ccb9f8d44ba56cf
-assets/avatar1.jpeg,1619566465568,8d6c15aa682f8c490e651202b3300e839bc39bef3e63d879072434fa9eed3097
-assets/avatar2.jpeg,1619566465569,df0354bdcdbb27a81cd10caac6869d757c5505e8cfb861abbc3e63a6bd347664
-assets/Dialog _ Angular Material_files/styles.493a04a9409b84c0877a.css,1619566465625,61d36be56d70157f2d364f6954762e4f76190b1d44a8418893ef7fdad8ba63cf
-assets/React App_files/main.5819cd3da409a86626bc.hot-update.js,1619566465711,b5f2189a77ad36a2ba706bcfaed62f45c5f2da9cdec3a32054841dab6033d6d7
-assets/React App_files/main.340343b8f6b030d63ec4.hot-update.js,1619566465710,827d30b4e78093d5fe72b4adee88649570e530f473a5a54a1c4cb01e24551883
-assets/React App.html,1619566465720,c11c200bf6871d74896467bb088a03a7972a61949db0b52c9b7e0a68c95191df
-assets/cards/10D.png,1619566465574,44be553f2180e52a9bb397459511cd972c833bbfcfcb29d350d44451fa2e65ea
-assets/React App_files/main.7960ef61d6d33762cb1b.hot-update.js,1619566465712,0e60b2e0a6170773e453af3bb43a27686bdd2f2b9c7dde1577b771ea35252266
-assets/cards/10S.png,1619566465575,32d1d999f7b04cae4d60eb0bb38379b52fe41f49a945aaf589018eb017785955
-assets/cards/2C.png,1619566465576,cc78e15b92ab49b0492acb0e60f780cad2cdf955a2eb06828636aef01c4d9575
-assets/Dialog _ Angular Material_files/63-es2015.155a83bc40104b8129a8.js,1619566465610,7623d8d84dadf899143bb5fa6c6ef2367fb40de1945a0e79e254445f676f88b6
-assets/cards/2D.png,1619566465576,572bc72f1f165d77a4d869e44085661c320f91e585592a798cedb94a508ce6d2
-assets/cards/2H.png,1619566465576,904065ebb97049be564c0abbbca3d30ecedd5b55856a315871c2216001e58de6
-assets/React App_files/main.ad6825b41b914ba94f0e.hot-update.js,1619566465712,8af2298ce6160795b0ba49ab09f193ad484817a5ef49c93201acfaf02360f4c8
-assets/cards/2S.png,1619566465576,ef8742259a3b06e4d5fad4afae1046455ede824864b1e28ba5a88b0d3d49d328
-assets/cards/3C.png,1619566465576,b71c690f590f671f5bc6ce3765882fd0834a6d07ef6c523727a1f5e25a2b59cc
-assets/React App_files/main.dda04f44d0baf5b81211.hot-update.js,1619566465715,7b6231d4a480e4c1f07282ae7643eaab41ecc118d2d846495f11b84f6b771bd0
-assets/cards/10C.png,1619566465574,ee66b5d88d9aaaf9c2aeb408f85f0f4bee60c75ce30eae8602c19c946ca900e8
-assets/cards/3D.png,1619566465576,fc31233e022a5445a7cbe538b618137ed4b031b1a8d7af8c655a97b8334aae01
-assets/cards/3H.png,1619566465577,964211f8344e8c78ec7204134a5c9f0a7ae782d0e36c868b9fc39ec431a89393
-assets/React App_files/main.e21411f6a5fdfb30d0e1.hot-update.js,1619566465716,a82fd46130500addc3369609950cd7c0af7a46f710e9e6929bafef8109d9dba5
-assets/cards/3S.png,1619566465577,f2842de3b960099dcd7354b3c9bafad7facbcfe095849a0b1047cc0e521336c6
-assets/cards/4C.png,1619566465577,44c4a0bd79bd71a4cdfe3c2fb8b3b382c9447acbada5169dc20aa663255394b6
-assets/cards/10H.png,1619566465574,1e08d1f2a1603ebc82aa35cd6ff6e6c4ddacf34966ed4e5d322984761a9cc7f4
-assets/cards/4D.png,1619566465577,cd59b4dd17fe2fdc5eb847e63b77a4a760283558380c731b44630d5c81966bb7
-assets/cards/4H.png,1619566465577,1e3f1b919fe9530e4ef28c9e2753a52e0cb931fcb5be336cb6755b6c5c5e1663
-assets/cards/4S.png,1619566465578,21295f30a0c5d0c905f48ebe3ecdb860d43683ef7f072155e88683b634b59895
-assets/cards/5C.png,1619566465578,711649186604c4995fd80971bc55a7c1733fdebbc939a8b28ff2a5587872c9f8
-assets/cards/5D.png,1619566465579,eedcf4c36ab2b1e36d0bd193a67904d5ea6372a27bcb6932167639d722d111fa
-assets/cards/5H.png,1619566465579,3acc10984d67bf7f7b7f42897d09cba1d040389df2708272cec1e210252eff20
-assets/cards/5S.png,1619566465580,77c367745ef03b1763c633bc976d82c218cd8d8e3718303ba4306f493a007a3a
-assets/cards/6C.png,1619566465580,8c8b390edc5f9ca86cc3c0a781ad4afbf0ae40278c7b53b64bfe0bdd8caee7b3
-assets/Dialog _ Angular Material_files/polyfills-es5.7090a86ce65986d9d1e9.js,1619566465623,213cede4974a68beeea5d386b84fc3f0af5f61fb19c00042fc55a018f52399fe
-assets/cards/6D.png,1619566465580,619c96ec2da58399b3a39440730eed46a3481a4c771b01aaa64219d563f03039
-assets/cards/6H.png,1619566465580,11ffc406c250077c470f688fe093baa74f971cd79b460faeef6bc1e96c38a59e
-assets/cards/6S.png,1619566465582,d9a3cdcc1ef984557bcc12cc8db0d2f1b85434f9c06c309d391e57ee0b145fd7
-assets/Old Dominion University Mail - Bank Wire transfer details.pdf,1619566465645,403e7ca1f288633ac37cf0f4375282c8938fdf2c232226913cb85920f97419a5
-assets/cards/7D.png,1619566465582,8d916b5cd77bcb99a3c4ae3f41b00c52f327671d9f07c60423992fa4fab4beae
-assets/cards/7H.png,1619566465585,345b576a15a7c17fdb87b79d96e7d95706ff43b03c9ec078c0304cc0a298535b
-assets/cards/7S.png,1619566465585,c666c441086f2a7e29e743d02f433270bbe2b99d057bd5b46dc1534a6c7a1afe
-assets/consent.pdf,1619566465603,03d5e2c9faded485487eb2ef16cf52842bde03a37e38f7a21c3eeabc247d1a2b
-assets/cards/8D.png,1619566465586,e6cd1f342b05699614813f85461bee56170b16b9daefdb0038c3456ca8210037
-assets/cards/8S.png,1619566465586,dac3cf4b606b005b29171274c1eccc85458cb8208908d29279757c0d055628f9
-assets/cards/8H.png,1619566465586,c0e1afe0805f0b4bfcb923969278cb1430ac0566a3295c4b688a13aeee5fe808
-assets/cards/9D.png,1619566465588,3622bfbfa490e3f38c2d74dedd2178453d4a2db2fd4484f5c42e01e94b61e9a4
-assets/cards/7C.png,1619566465582,7c2b384c7e2915f4b00f4eb23618c10ef892b4256cff50bd8d622fe4ae793f68
-assets/cards/9H.png,1619566465588,3d030c351fe5cff4bc881557ee2396ff11291af729cc856468648ea50bb31b82
-assets/cards/9S.png,1619566465588,d17a5d5ca5163bc46980e974fc9ac39821aa42a4662d6dd28557049ea5a7ef8f
-assets/cards/AC.png,1619566465588,9f41b907b9f92103926e9ff9ac751563c33cc2279448ab44a2817a8d97e78ec4
-assets/cards/AD.png,1619566465589,ddf620d428437dedb995c5da9427a60b4399f52a5ba70f42f1da0dc5c9122a35
-assets/cards/AH.png,1619566465589,63ccaf0b8552df758f6a8b51e927150a4703e23f128d4fe6367a8d25650656e6
-assets/cards/AS.png,1619566465589,f5af69b8bd613050be42f1e2c9d9f28c2c19d2425a5fefa3f2f79134c6c8ab7e
-assets/cards/8C.png,1619566465586,35e3c15ba587f8f1ab575be4f9a5444258b27e6c5bbe4798548b6577b62b4784
-assets/cards/9C.png,1619566465587,5c512df5571f9b318f3e8c0bb1efca85f222c5b598a8e6199a1ee2ca50aa66f2
-assets/cards/BACKY.png,1619566465590,fd44f126aa31519c504f96b2db425dd465c324f21861fb8464db3a394debb1f4
-assets/cards/BLANK.png,1619566465592,e06bc02a80a832ddc35a1767a9cc46c74c52830d5a8b7c438a8b6f055d0505c4
-assets/smile.png,1619566465722,a4e86596e2161ed9429c44cdd9c092ed47a9fe266d21021538ef8ceba59adb6a
-assets/cards/JC.png,1619566465593,b06a96575d1611d68798ae62096293b444cfb5bb4b3add96f6598ea58d449072
-assets/cards/JD.png,1619566465594,dfb7b192d78c867003cd239bff5c692c9fefb94f960a28349adbc1f6447b08fc
-assets/cards/JH.png,1619566465594,03a245d4f0238a264f0d9f3908940d921e4a4a9dd98d42e993da2985b48c1a60
-assets/cards/KC.png,1619566465596,7c63cdf6337429cdcbd1199237c77d0ae3a98cae8732e2bc3c55e8c991fd73df
-assets/cards/JS.png,1619566465595,e64e6dd7cb6f4dc498de2d4f2dc052af2728f04812d8b4ce2f566ac5725d88e7
-assets/diverse.png,1619566465628,bcb3e8c140259b557e68d791194118f610fc9677955c306bf98a196eda0311fa
-assets/cards/KD.png,1619566465596,f74307fb03180e1642e45b86950cc44289305d8fbf08e1f68888561a11a50930
-assets/cards/KH.png,1619566465597,5d5e4db6e789bf4472351b384780591160b5f53e3b9e3b30d777fddbea3d7c71
-assets/cards/KS.png,1619566465597,8aa4fa9855603758d0b1f378e0805b4e32c1d4b6f8f0b9c47255e711f92ae921
-assets/cards/QC.png,1619566465598,d3523f805952fe2ba39e7d8c7370d0a4588627c8ca2226daa33fc1213847b818
-assets/cards/QS.png,1619566465601,e25ff53ff9e465577dabf241c1fe84d16e84545b21afba403e9c6fc7ff28285d
-assets/cards/QD.png,1619566465599,566262894c1b411c1c1855860cc586107dd4e63404b30a43e271bfb218fabe8c
-assets/cards/QH.png,1619566465600,4516cf2124c804a9625cd501e42c520ce6cdf1af42ecf7a05deb3b3751d48042
-scripts.433b6c81a25f32f05dde.js,1619566444062,4934be4e2358efb803789cacf525a4e0a2d14fa3478ba881f3beb8af63cb5f87
-assets/React App_files/saved_resource.html,1619566465718,d9201b65538fef9907a73449e8aee236aed38da01a9e6e30a396ab3d1b3054eb
-assets/Dialog _ Angular Material_files/main-es2015.dfa1a0a75f1547d10045.js,1619566465615,d285437a7ac440c37330025495d5ca238dcbd98693ac736525b9cb4a2e4a16d7
-assets/React App_files/main.chunk.js,1619566465715,c3b99fc074722b9e2b0e6f6bc1e442897e542094aaa982a7808fc988ef39bda6
-assets/Dialog _ Angular Material_files/main-es5.dfa1a0a75f1547d10045.js,1619566465620,0d1e62e11a5003541f14ab5ee01cde6f44f361996975e8a3f73c881c5a8c2c7f
-assets/culture.png,1619566465605,fa89efb9a8213efec8151e6b3f5a2be3bafb9c28351d65a04be23a6d807b6920
-assets/diversity.png,1619566465631,ee0c68a8aa513e3b99ba26f3a6bbbb2b0e680e915c9e8e21022449cb882b21d0
-main-es2015.8bb21dcfd05d3d3773c5.js,1619566465152,d212812fab40d63f5564629b93e01691ac0651fca01eafdb0e8442b9a5fc5d97
-main-es5.8bb21dcfd05d3d3773c5.js,1619566461516,40bdb520c4921fc9c3a7f69a2fd40117a5e18de5ca6d966a6d66cc902649a3f9
-assets/React App_files/0.chunk.js,1619566465669,64e79770aa5784013389629b62ea45c1d15488ee63ecdfd04295fee9f94de924
diff --git a/.firebaserc b/.firebaserc
deleted file mode 100644
index ac8c75e..0000000
--- a/.firebaserc
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-    "targets": {
-        "cpcdp-vcu": {
-            "hosting": {
-                "iMatt-FE": [
-                    "cpcdp-vcu"
-                ]
-            }
-        }
-    }
-}
diff --git a/firebase.json b/firebase.json
deleted file mode 100644
index fb330b9..0000000
--- a/firebase.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-  "hosting": [
-    {
-      "target": "iMatt-FE",
-      "public": "dist/iMatt-FE",
-      "ignore": [
-        "**/.*"
-      ],
-      "headers": [
-        {
-          "source": "**",
-          "headers": [
-            {
-              "key": "Cache-Control",
-              "value":"no-cache, no-store, must-revalidate"
-            }
-          ]
-        }
-      ],
-      "rewrites": [
-        {
-          "source": "**",
-          "destination": "/index.html"
-        }
-      ]
-    }
-  ]
-}
\ No newline at end of file
diff --git a/src/app/components/about-comp/about-comp.component.html b/src/app/components/about-comp/about-comp.component.html
index 5d2cca3..b180cbe 100644
--- a/src/app/components/about-comp/about-comp.component.html
+++ b/src/app/components/about-comp/about-comp.component.html
@@ -1,79 +1,71 @@
 <div class="homeWrap">
-    <mat-card class="example-card ">
+    <mat-card class="example-card">
         <div class="row col-lg-12">
             <div class="col-lg-3 image">
                 <img src="../../assets/dwayne.jpeg" />
-                <!-- <div>
-                    <h4>Relevant Publications:</h4>
-                    <ul class="a">
-                        <li style=" justify-content: center;"> Cormier, D. R. (2021). Assessing Preservice Teachers’ Cultural Competence With the Cultural Proficiency Continuum Q-Sort. Educational Researcher, 50(1), 17–29.
-                            <a href="https://doi.org/10.3102/0013189X20936670" target="_blank">Click Here </a>
-                        </li>
-                        <li style=" justify-content: center;"> Cormier, D. R. (2019). The Cultural Proficiency Continuum Dialogic Protocol: An Emerging Tool for Examining Preservice Teachers' Sociocultural Consciousness Concerning Majority-minority Schools and Student Populations (Doctoral
-                            dissertation, Pennsylvania State University).</li>
-
-                    </ul>
-                </div> -->
             </div>
             <div class="col-lg-9 content">
                 <div>
                     <h1>Dwayne Ray Cormier, Ph.D.</h1>
-                    <br>
-                    <ul >
+                    <br />
+                    <ul>
                         <li>
                             <p class="tag">Assistant Professor, Foundations Of Education</p>
                         </li>
                         <li>
-                            <p class="tag">Member of iCubed: Urban Education and Family Transdisciplinary Core
-                            </p>
+                            <p class="tag">Member of iCubed: Urban Education and Family Transdisciplinary Core</p>
                         </li>
                     </ul>
-                    <!-- <p class="tag">Assistant Professor, Foundations Of Education</p>
-                    <p class="tag">Member of iCubed: Urban Education and Family Transdisciplinary Core
-                    </p> -->
-
                 </div>
 
                 <div>
-                    <p><span style="font-weight: bold;">Bio: </span> <span><a href="https://soe.vcu.edu/directory/full-directory/first--last-name-363653-en.html" target = "_blank">Dr. Dwayne Ray Cormier’s</a></span> research focuses on bridging the sociocultural gap between PreK-12 educators and students from diverse racial and ethnic backgrounds and urban and rural schooling contexts. His research has led to the development
-                        of the Cultural Proficiency Continuum Dialogic Protocol (CPCDP), a pedagogical tool designed to assess and codify individuals’ cultural competency. Currently, Dr. Cormier is working with the Hands-On Lab at Old Dominion University
-                        to adapt the CPCDP to a web-based platform to increase accessibility and broader impact.
+                    <p>
+                        <span style="font-weight: bold">Bio: </span>
+                        <span
+                            ><a
+                                href="https://soe.vcu.edu/directory/full-directory/first--last-name-363653-en.html"
+                                target="_blank"
+                                >Dr. Dwayne Ray Cormier’s</a
+                            ></span
+                        >
+                        research focuses on bridging the sociocultural gap between PreK-12 educators and students from
+                        diverse racial and ethnic backgrounds and urban and rural schooling contexts. His research has
+                        led to the development of the Cultural Proficiency Continuum Dialogic Protocol (CPCDP), a
+                        pedagogical tool designed to assess and codify individuals’ cultural competency. Currently, Dr.
+                        Cormier is working with the Hands-On Lab at Old Dominion University to adapt the CPCDP to a
+                        web-based platform to increase accessibility and broader impact.
                     </p>
                 </div>
                 <div>
-                    <p style="font-weight: bold;">Relevant Publications:</p>
-                    <ul >
-                        <li> Cormier, D. R. (2021). Assessing Preservice Teachers’ Cultural Competence With the Cultural Proficiency Continuum Q-Sort. Educational Researcher, 50(1), 17–29.
-                            <a href="https://doi.org/10.3102/0013189X20936670" target="_blank">https://doi.org/10.3102/0013189X20936670 </a>
+                    <p style="font-weight: bold">Relevant Publications:</p>
+                    <ul>
+                        <li>
+                            Cormier, D. R. (2021). Assessing Preservice Teachers’ Cultural Competence With the Cultural
+                            Proficiency Continuum Q-Sort. Educational Researcher, 50(1), 17–29.
+                            <a href="https://doi.org/10.3102/0013189X20936670" target="_blank"
+                                >https://doi.org/10.3102/0013189X20936670
+                            </a>
                         </li>
-                        <br>
-                        <li> Cormier, D. R. (2019). The Cultural Proficiency Continuum Dialogic Protocol: An Emerging Tool for Examining Preservice Teachers' Sociocultural Consciousness Concerning Majority-minority Schools and Student Populations 
-                            <a href="https://etda.libraries.psu.edu/catalog/16331drc5411" target="_blank">(Doctoral
-                                dissertation, Pennsylvania State University).</a>
-
+                        <br />
+                        <li>
+                            Cormier, D. R. (2019). The Cultural Proficiency Continuum Dialogic Protocol: An Emerging
+                            Tool for Examining Preservice Teachers' Sociocultural Consciousness Concerning
+                            Majority-minority Schools and Student Populations
+                            <a href="https://etda.libraries.psu.edu/catalog/16331drc5411" target="_blank"
+                                >(Doctoral dissertation, Pennsylvania State University).</a
+                            >
                         </li>
-
                     </ul>
                 </div>
                 <div>
-                    <p><span style="font-weight: bold;">Phone: </span>(804) 827-8239
-                    </p>
+                    <p><span style="font-weight: bold">Phone: </span>(804) 827-8239</p>
                 </div>
                 <div>
-                    <p><span style="font-weight: bold;">Email: </span>cormierd2@vcu.edu
-                    </p>
+                    <p><span style="font-weight: bold">Email: </span>cormierd2@vcu.edu</p>
                 </div>
-                <!-- <div>
-                     <a href="https://soe.vcu.edu/directory/full-directory/first--last-name-363653-en.html">Curriculum Vitae</a>
-
-                </div> -->
-
             </div>
         </div>
-        <div>
-
-        </div>
-
+        <div></div>
     </mat-card>
 </div>
 <app-footer></app-footer>
diff --git a/src/app/components/change-password/change-password.component.html b/src/app/components/change-password/change-password.component.html
index 3b77686..df39a5a 100644
--- a/src/app/components/change-password/change-password.component.html
+++ b/src/app/components/change-password/change-password.component.html
@@ -1,31 +1,49 @@
 <div class="header-wrap">
     <p class="intro">Cultural Proficiency Continuum Dialogic Protocol</p>
     <div class="container">
-        <mat-card class="example-card ">
+        <mat-card class="example-card">
             <div class="mb-4">
-                <h3 style="text-align: center;">Change Password</h3>
+                <h3 style="text-align: center">Change Password</h3>
             </div>
             <form [formGroup]="loginForm">
                 <mat-form-field appearance="outline" class="col-lg-12">
                     <mat-label>Enter New Password</mat-label>
-                    <input matInput formControlName="new_password" [type]="hide ? 'password' : 'text'" required>
-                    <button mat-icon-button matSuffix (click)="hide = !hide" [attr.aria-label]="'Hide password'" [attr.aria-pressed]="hide">
-                <mat-icon>{{hide ? 'visibility_off' : 'visibility'}}</mat-icon>
-                </button>
-                    <mat-error *ngIf="loginForm.controls.new_password.invalid">{{getPasswordError()}}</mat-error>
+                    <input matInput formControlName="new_password" [type]="hide ? 'password' : 'text'" required />
+                    <button
+                        mat-icon-button
+                        matSuffix
+                        (click)="hide = !hide"
+                        [attr.aria-label]="'Hide password'"
+                        [attr.aria-pressed]="hide"
+                    >
+                        <mat-icon>{{ hide ? "visibility_off" : "visibility" }}</mat-icon>
+                    </button>
+                    <mat-error *ngIf="loginForm.controls.new_password.invalid">{{ getPasswordError() }}</mat-error>
                 </mat-form-field>
                 <mat-form-field appearance="outline" class="col-lg-12">
                     <mat-label>Confirm New password</mat-label>
-                    <input matInput formControlName="confirmPassword" [type]="hide ? 'password' : 'text'" required>
-                    <button mat-icon-button matSuffix (click)="hide = !hide" [attr.aria-label]="'Hide password'" [attr.aria-pressed]="hide">
-                <mat-icon>{{hide ? 'visibility_off' : 'visibility'}}</mat-icon>
-                </button>
-                    <mat-error *ngIf="loginForm.controls.confirmPassword.invalid">{{getPasswordError()}}</mat-error>
+                    <input matInput formControlName="confirmPassword" [type]="hide ? 'password' : 'text'" required />
+                    <button
+                        mat-icon-button
+                        matSuffix
+                        (click)="hide = !hide"
+                        [attr.aria-label]="'Hide password'"
+                        [attr.aria-pressed]="hide"
+                    >
+                        <mat-icon>{{ hide ? "visibility_off" : "visibility" }}</mat-icon>
+                    </button>
+                    <mat-error *ngIf="loginForm.controls.confirmPassword.invalid">{{ getPasswordError() }}</mat-error>
                 </mat-form-field>
 
-                <input type="submit" value="Change Password" class="btn text-white btn-block btn-primary" style="background-color: #29ABE2; font-size: 20px;" (click)="login()">
+                <input
+                    type="submit"
+                    value="Change Password"
+                    class="btn text-white btn-block btn-primary"
+                    style="background-color: #29abe2; font-size: 20px"
+                    (click)="login()"
+                />
             </form>
         </mat-card>
     </div>
 </div>
-<app-footer></app-footer>
\ No newline at end of file
+<app-footer></app-footer>
diff --git a/src/app/components/email-password/email-password.component.html b/src/app/components/email-password/email-password.component.html
index 26feeed..52e97fa 100644
--- a/src/app/components/email-password/email-password.component.html
+++ b/src/app/components/email-password/email-password.component.html
@@ -1,22 +1,34 @@
 <div class="header-wrap">
     <p class="intro">Cultural Proficiency Continuum Dialogic Protocol</p>
     <div class="container">
-        <mat-card class="example-card ">
+        <mat-card class="example-card">
             <div class="mb-4">
-                <h3 style="text-align: center;">Authentication Required</h3>
+                <h3 style="text-align: center">Authentication Required</h3>
             </div>
             <form [formGroup]="forgotForm">
                 <mat-form-field appearance="outline" class="col-lg-12">
                     <mat-label>Enter Password sent via e-mail</mat-label>
-                    <input matInput formControlName="password" [type]="hide ? 'password' : 'text'" required>
-                    <button mat-icon-button matSuffix (click)="hide = !hide" [attr.aria-label]="'Hide password'" [attr.aria-pressed]="hide">
-                <mat-icon>{{hide ? 'visibility_off' : 'visibility'}}</mat-icon>
-                </button>
-                    <mat-error *ngIf="forgotForm.controls.password.invalid">{{getPasswordError()}}</mat-error>
+                    <input matInput formControlName="password" [type]="hide ? 'password' : 'text'" required />
+                    <button
+                        mat-icon-button
+                        matSuffix
+                        (click)="hide = !hide"
+                        [attr.aria-label]="'Hide password'"
+                        [attr.aria-pressed]="hide"
+                    >
+                        <mat-icon>{{ hide ? "visibility_off" : "visibility" }}</mat-icon>
+                    </button>
+                    <mat-error *ngIf="forgotForm.controls.password.invalid">{{ getPasswordError() }}</mat-error>
                 </mat-form-field>
-                <input type="submit" value="Verify" class="btn text-white btn-block btn-primary" style="background-color: #29ABE2; font-size: 20px;" (click)="login()">
+                <input
+                    type="submit"
+                    value="Verify"
+                    class="btn text-white btn-block btn-primary"
+                    style="background-color: #29abe2; font-size: 20px"
+                    (click)="login()"
+                />
             </form>
         </mat-card>
     </div>
 </div>
-<app-footer></app-footer>
\ No newline at end of file
+<app-footer></app-footer>
diff --git a/src/app/services/preSurvey.service.ts b/src/app/services/preSurvey.service.ts
index 0ca2111..f700052 100644
--- a/src/app/services/preSurvey.service.ts
+++ b/src/app/services/preSurvey.service.ts
@@ -13,6 +13,7 @@ export class PreSurveyService {
     postSurveyUrl = environment.postSurveyUrl;
 
     constructor(private http: HttpClient) {}
+
     submitForm(data) {
         return this.http.post(`${this.preSurveys}`, data, {
             headers: {
@@ -20,6 +21,7 @@ export class PreSurveyService {
             },
         });
     }
+
     postProfile(data) {
         return this.http.patch(`${this.profileUrl}`, data, {
             headers: {
-- 
GitLab


From a993fcc2b57f6800d68e0ab5f8cba04420d05d68 Mon Sep 17 00:00:00 2001
From: ramesh <rdramesh2009@gmail.com>
Date: Mon, 11 Jul 2022 12:54:57 -0400
Subject: [PATCH 07/23] prettier applied in all files under src/app

---
 .prettierrc.json                              |    2 +-
 src/app/app-routing.module.ts                 |   38 +-
 src/app/app.component.html                    |    3 +-
 src/app/app.component.spec.ts                 |   24 +-
 src/app/app.component.ts                      |   10 +-
 src/app/app.module.ts                         |  160 +-
 .../about-comp/about-comp.component.css       |   52 +-
 .../about-comp/about-comp.component.html      |  130 +-
 .../about-comp/about-comp.component.spec.ts   |   13 +-
 .../about-comp/about-comp.component.ts        |   15 +-
 .../change-password.component.css             |   72 +-
 .../change-password.component.html            |   90 +-
 .../change-password.component.spec.ts         |   13 +-
 .../change-password.component.ts              |  144 +-
 .../consent-form/consent-form.component.css   |   22 +-
 .../consent-form/consent-form.component.html  |   66 +-
 .../consent-form.component.spec.ts            |   13 +-
 .../consent-form/consent-form.component.ts    |   21 +-
 .../cpcq-form/cpcq-form.component.css         |  134 +-
 .../cpcq-form/cpcq-form.component.html        | 1777 ++++++-----
 .../cpcq-form/cpcq-form.component.spec.ts     |   13 +-
 .../cpcq-form/cpcq-form.component.ts          | 2239 +++++++------
 .../dialog-form/dialog-form.component.css     |   24 +-
 .../dialog-form/dialog-form.component.html    |  268 +-
 .../dialog-form/dialog-form.component.spec.ts |   13 +-
 .../dialog-form/dialog-form.component.ts      |  884 +++---
 .../dashboard-dialo.component.css             |  170 +-
 .../dashboard-dialo.component.html            |   29 +-
 .../dashboard-dialo.component.spec.ts         |   13 +-
 .../dashboard-dialo.component.ts              |   62 +-
 .../dashboard/dashboard.component.css         |  470 ++-
 .../dashboard/dashboard.component.html        |  326 +-
 .../dashboard/dashboard.component.spec.ts     |   13 +-
 .../dashboard/dashboard.component.ts          |  602 ++--
 .../email-password.component.css              |   72 +-
 .../email-password.component.html             |   62 +-
 .../email-password.component.spec.ts          |   13 +-
 .../email-password.component.ts               |  100 +-
 .../final-dashboard.component.css             |  508 ++-
 .../final-dashboard.component.html            |  211 +-
 .../final-dashboard.component.spec.ts         |   13 +-
 .../final-dashboard.component.ts              |  680 ++--
 .../final-feedback.component.css              |  134 +-
 .../final-feedback.component.html             | 1741 ++++++-----
 .../final-feedback.component.spec.ts          |   13 +-
 .../final-feedback.component.ts               | 2239 +++++++------
 .../first-form/first-form.component.css       |   60 +-
 .../first-form/first-form.component.html      |  480 +--
 .../first-form/first-form.component.spec.ts   |   13 +-
 .../first-form/first-form.component.ts        |  248 +-
 .../components/footer/footer.component.css    |  109 +-
 .../components/footer/footer.component.html   |   21 +-
 .../footer/footer.component.spec.ts           |   13 +-
 src/app/components/footer/footer.component.ts |   40 +-
 .../forgot-password.component.css             |   72 +-
 .../forgot-password.component.html            |   38 +-
 .../forgot-password.component.spec.ts         |   13 +-
 .../forgot-password.component.ts              |   94 +-
 .../graph-page/graph-page.component.css       |  134 +-
 .../graph-page/graph-page.component.html      |  135 +-
 .../graph-page/graph-page.component.spec.ts   |   13 +-
 .../graph-page/graph-page.component.ts        | 2773 ++++++++---------
 .../components/header/header.component.css    |  148 +-
 .../components/header/header.component.html   |  140 +-
 .../header/header.component.spec.ts           |   30 +-
 src/app/components/header/header.component.ts |  128 +-
 .../home-page/home-page.component.css         |  568 ++--
 .../home-page/home-page.component.html        |   44 +-
 .../home-page/home-page.component.spec.ts     |   30 +-
 .../home-page/home-page.component.ts          |   32 +-
 src/app/components/login/login.component.css  |   72 +-
 src/app/components/login/login.component.html |   82 +-
 .../components/login/login.component.spec.ts  |   13 +-
 src/app/components/login/login.component.ts   |  132 +-
 .../main-game/dialog/dialog.component.html    |   20 +-
 .../main-game/dialog/dialog.component.spec.ts |   13 +-
 .../main-game/dialog/dialog.component.ts      |   19 +-
 .../main-game/main-game.component.css         |  112 +-
 .../main-game/main-game.component.html        |  100 +-
 .../main-game/main-game.component.spec.ts     |   13 +-
 .../main-game/main-game.component.ts          |  150 +-
 .../post-survey/post-survey.component.css     |   64 +-
 .../post-survey/post-survey.component.html    |  634 ++--
 .../post-survey/post-survey.component.spec.ts |   13 +-
 .../post-survey/post-survey.component.ts      |  230 +-
 .../dialog-pdf/dialog-pdf.component.css       |   24 +-
 .../dialog-pdf/dialog-pdf.component.html      |    4 +-
 .../dialog-pdf/dialog-pdf.component.spec.ts   |   13 +-
 .../dialog-pdf/dialog-pdf.component.ts        |   31 +-
 .../pre-survey/pre-survey.component.css       |   62 +-
 .../pre-survey/pre-survey.component.html      | 1269 ++++----
 .../pre-survey/pre-survey.component.spec.ts   |   13 +-
 .../pre-survey/pre-survey.component.ts        |  342 +-
 .../register-component.component.css          |   72 +-
 .../register-component.component.html         |   86 +-
 .../register-component.component.spec.ts      |   13 +-
 .../register-component.component.ts           |  102 +-
 .../result-dashboard.component.css            |  470 ++-
 .../result-dashboard.component.html           |  297 +-
 .../result-dashboard.component.spec.ts        |   13 +-
 .../result-dashboard.component.ts             |  652 ++--
 .../score-page/score-page.component.css       |  136 +-
 .../score-page/score-page.component.html      |  270 +-
 .../score-page/score-page.component.spec.ts   |   13 +-
 .../score-page/score-page.component.ts        | 2447 +++++++--------
 .../test/my-overlay/my-overlay.component.html |   10 +-
 .../my-overlay/my-overlay.component.spec.ts   |   13 +-
 .../test/my-overlay/my-overlay.component.ts   |  148 +-
 src/app/components/test/test.component.css    |    4 +-
 src/app/components/test/test.component.html   |   47 +-
 .../components/test/test.component.spec.ts    |   13 +-
 src/app/components/test/test.component.ts     |   24 +-
 .../trial-component.component.html            |    2 +-
 .../trial-component.component.spec.ts         |   13 +-
 .../trial-component.component.ts              |  137 +-
 .../unpacking-page.component.css              |  134 +-
 .../unpacking-page.component.html             | 1777 ++++++-----
 .../unpacking-page.component.spec.ts          |   13 +-
 .../unpacking-page.component.ts               | 2261 +++++++-------
 src/app/guards/landing-page.guard.spec.ts     |   16 +-
 src/app/guards/landing-page.guard.ts          |   28 +-
 src/app/guards/role.guard.spec.ts             |   16 +-
 src/app/guards/role.guard.ts                  |   46 +-
 src/app/services/cpcq.service.ts              |  266 +-
 src/app/services/firstForm.service.ts         |   40 +-
 src/app/services/login.service.ts             |  148 +-
 src/app/services/mainGame.service.ts          |   12 +-
 src/app/services/overlay-service.service.ts   |   14 +-
 src/app/services/preSurvey.service.ts         |  140 +-
 129 files changed, 16591 insertions(+), 15814 deletions(-)

diff --git a/.prettierrc.json b/.prettierrc.json
index 31ac305..6e26945 100644
--- a/.prettierrc.json
+++ b/.prettierrc.json
@@ -1,6 +1,6 @@
 {
     "trailingComma": "es5",
-    "tabWidth": 4,
+    "tabWidth": 2,
     "semi": true,
     "singleQuote": false,
     "printWidth": 120
diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index d8cd918..25d06cb 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -19,27 +19,27 @@ import { ChangePasswordComponent } from "./components/change-password/change-pas
 import { EmailPasswordComponent } from "./components/email-password/email-password.component";
 
 const routes: Routes = [
-    { path: "", component: HomePageComponent },
-    { path: "login", component: LoginComponent },
-    { path: "preSurvey", component: PreSurveyComponent },
-    { path: "pcqform", component: CpcqFormComponent },
-    { path: "postSurvey", component: PostSurveyComponent },
-    { path: "dashboard", component: DashboardComponent },
-    { path: "result", component: ResultDashboardComponent },
-    { path: "about", component: AboutCompComponent },
-    { path: "register", component: RegisterComponentComponent },
-    { path: "score", component: ScorePageComponent },
-    { path: "graph", component: GraphPageComponent },
-    { path: "final", component: FinalDashboardComponent },
-    { path: "unpacking", component: UnpackingPageComponent },
-    { path: "finalFeedback", component: FinalFeedbackComponent },
-    { path: "forgotPassword", component: ForgotPasswordComponent },
-    { path: "changePassword", component: ChangePasswordComponent },
-    { path: "emailPass", component: EmailPasswordComponent },
+  { path: "", component: HomePageComponent },
+  { path: "login", component: LoginComponent },
+  { path: "preSurvey", component: PreSurveyComponent },
+  { path: "pcqform", component: CpcqFormComponent },
+  { path: "postSurvey", component: PostSurveyComponent },
+  { path: "dashboard", component: DashboardComponent },
+  { path: "result", component: ResultDashboardComponent },
+  { path: "about", component: AboutCompComponent },
+  { path: "register", component: RegisterComponentComponent },
+  { path: "score", component: ScorePageComponent },
+  { path: "graph", component: GraphPageComponent },
+  { path: "final", component: FinalDashboardComponent },
+  { path: "unpacking", component: UnpackingPageComponent },
+  { path: "finalFeedback", component: FinalFeedbackComponent },
+  { path: "forgotPassword", component: ForgotPasswordComponent },
+  { path: "changePassword", component: ChangePasswordComponent },
+  { path: "emailPass", component: EmailPasswordComponent },
 ];
 
 @NgModule({
-    imports: [RouterModule.forRoot(routes)],
-    exports: [RouterModule],
+  imports: [RouterModule.forRoot(routes)],
+  exports: [RouterModule],
 })
 export class AppRoutingModule {}
diff --git a/src/app/app.component.html b/src/app/app.component.html
index 7beb1a0..9e0f334 100644
--- a/src/app/app.component.html
+++ b/src/app/app.component.html
@@ -1,2 +1 @@
-<app-header></app-header>
-<router-outlet></router-outlet>
\ No newline at end of file
+<app-header></app-header> <router-outlet></router-outlet>
diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts
index e9ffed3..6653675 100644
--- a/src/app/app.component.spec.ts
+++ b/src/app/app.component.spec.ts
@@ -1,20 +1,16 @@
-import { TestBed, async } from '@angular/core/testing';
-import { RouterTestingModule } from '@angular/router/testing';
-import { AppComponent } from './app.component';
+import { TestBed, async } from "@angular/core/testing";
+import { RouterTestingModule } from "@angular/router/testing";
+import { AppComponent } from "./app.component";
 
-describe('AppComponent', () => {
+describe("AppComponent", () => {
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      imports: [
-        RouterTestingModule
-      ],
-      declarations: [
-        AppComponent
-      ],
+      imports: [RouterTestingModule],
+      declarations: [AppComponent],
     }).compileComponents();
   }));
 
-  it('should create the app', () => {
+  it("should create the app", () => {
     const fixture = TestBed.createComponent(AppComponent);
     const app = fixture.componentInstance;
     expect(app).toBeTruthy();
@@ -23,13 +19,13 @@ describe('AppComponent', () => {
   it(`should have as title 'iMatt-FE'`, () => {
     const fixture = TestBed.createComponent(AppComponent);
     const app = fixture.componentInstance;
-    expect(app.title).toEqual('iMatt-FE');
+    expect(app.title).toEqual("iMatt-FE");
   });
 
-  it('should render title', () => {
+  it("should render title", () => {
     const fixture = TestBed.createComponent(AppComponent);
     fixture.detectChanges();
     const compiled = fixture.nativeElement;
-    expect(compiled.querySelector('.content span').textContent).toContain('iMatt-FE app is running!');
+    expect(compiled.querySelector(".content span").textContent).toContain("iMatt-FE app is running!");
   });
 });
diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index 76dcbba..be5f5da 100644
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -1,10 +1,10 @@
-import { Component } from '@angular/core';
+import { Component } from "@angular/core";
 
 @Component({
-  selector: 'app-root',
-  templateUrl: './app.component.html',
-  styleUrls: ['./app.component.css']
+  selector: "app-root",
+  templateUrl: "./app.component.html",
+  styleUrls: ["./app.component.css"],
 })
 export class AppComponent {
-  title = 'iMatt-FE';
+  title = "iMatt-FE";
 }
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 4361514..0cedf51 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -76,88 +76,88 @@ import { environment } from "src/environments/environment";
 // Note we need a separate function as it's required
 // by the AOT compiler.
 export function playerFactory() {
-    return player;
+  return player;
 }
 
 @NgModule({
-    declarations: [
-        AppComponent,
-        MainGameComponent,
-        HeaderComponent,
-        LoginComponent,
-        ConsentFormComponent,
-        FirstFormComponent,
-        DialogComponent,
-        TestComponent,
-        MyOverlayComponent,
-        TrialComponentComponent,
-        HomePageComponent,
-        PreSurveyComponent,
-        CpcqFormComponent,
-        PostSurveyComponent,
-        DialogFormComponent,
-        DashboardComponent,
-        DashboardDialoComponent,
-        FooterComponent,
-        ResultDashboardComponent,
-        AboutCompComponent,
-        RegisterComponentComponent,
-        DialogPDfComponent,
-        ScorePageComponent,
-        GraphPageComponent,
-        FinalDashboardComponent,
-        UnpackingPageComponent,
-        FinalFeedbackComponent,
-        ForgotPasswordComponent,
-        ChangePasswordComponent,
-        EmailPasswordComponent,
-    ],
-    imports: [
-        BrowserModule,
-        AppRoutingModule,
-        MatButtonModule,
-        MatIconModule,
-        MatToolbarModule,
-        MatSidenavModule,
-        MatListModule,
-        MatDialogModule,
-        MatRadioModule,
-        MatTableModule,
-        MatProgressBarModule,
-        MatSliderModule,
-        MatFormFieldModule,
-        MatInputModule,
-        MatPaginatorModule,
-        MatSortModule,
-        MatCardModule,
-        MatSelectModule,
-        MatTabsModule,
-        MatMenuModule,
-        MatTooltipModule,
-        MatChipsModule,
-        MatCheckboxModule,
-        MatAutocompleteModule,
-        MatProgressSpinnerModule,
-        MatDatepickerModule,
-        FormsModule,
-        ReactiveFormsModule,
-        BrowserAnimationsModule,
-        HttpClientModule,
-        CountdownModule,
-        WalkthroughModule,
-        OverlayModule,
-        PortalModule,
-        NgApexchartsModule,
-        NgWaveformModule,
-        PdfViewerModule,
-        LottieModule.forRoot({ player: playerFactory }),
-        // Import the module into the application, with configuration
-        AuthModule.forRoot({
-            domain: environment.auth0Settings.domain,
-            clientId: environment.auth0Settings.clientId,
-        }),
-    ],
-    providers: [],
-    bootstrap: [AppComponent],
+  declarations: [
+    AppComponent,
+    MainGameComponent,
+    HeaderComponent,
+    LoginComponent,
+    ConsentFormComponent,
+    FirstFormComponent,
+    DialogComponent,
+    TestComponent,
+    MyOverlayComponent,
+    TrialComponentComponent,
+    HomePageComponent,
+    PreSurveyComponent,
+    CpcqFormComponent,
+    PostSurveyComponent,
+    DialogFormComponent,
+    DashboardComponent,
+    DashboardDialoComponent,
+    FooterComponent,
+    ResultDashboardComponent,
+    AboutCompComponent,
+    RegisterComponentComponent,
+    DialogPDfComponent,
+    ScorePageComponent,
+    GraphPageComponent,
+    FinalDashboardComponent,
+    UnpackingPageComponent,
+    FinalFeedbackComponent,
+    ForgotPasswordComponent,
+    ChangePasswordComponent,
+    EmailPasswordComponent,
+  ],
+  imports: [
+    BrowserModule,
+    AppRoutingModule,
+    MatButtonModule,
+    MatIconModule,
+    MatToolbarModule,
+    MatSidenavModule,
+    MatListModule,
+    MatDialogModule,
+    MatRadioModule,
+    MatTableModule,
+    MatProgressBarModule,
+    MatSliderModule,
+    MatFormFieldModule,
+    MatInputModule,
+    MatPaginatorModule,
+    MatSortModule,
+    MatCardModule,
+    MatSelectModule,
+    MatTabsModule,
+    MatMenuModule,
+    MatTooltipModule,
+    MatChipsModule,
+    MatCheckboxModule,
+    MatAutocompleteModule,
+    MatProgressSpinnerModule,
+    MatDatepickerModule,
+    FormsModule,
+    ReactiveFormsModule,
+    BrowserAnimationsModule,
+    HttpClientModule,
+    CountdownModule,
+    WalkthroughModule,
+    OverlayModule,
+    PortalModule,
+    NgApexchartsModule,
+    NgWaveformModule,
+    PdfViewerModule,
+    LottieModule.forRoot({ player: playerFactory }),
+    // Import the module into the application, with configuration
+    AuthModule.forRoot({
+      domain: environment.auth0Settings.domain,
+      clientId: environment.auth0Settings.clientId,
+    }),
+  ],
+  providers: [],
+  bootstrap: [AppComponent],
 })
 export class AppModule {}
diff --git a/src/app/components/about-comp/about-comp.component.css b/src/app/components/about-comp/about-comp.component.css
index afeb9b0..e83dc14 100644
--- a/src/app/components/about-comp/about-comp.component.css
+++ b/src/app/components/about-comp/about-comp.component.css
@@ -1,46 +1,46 @@
 @media screen and (min-width: 992px) {
-    .homeWrap{
-        padding-top: 100px;
-    }
+  .homeWrap {
+    padding-top: 100px;
+  }
 }
 
-.row{
-    margin: 0 !important;
+.row {
+  margin: 0 !important;
 }
 
-.homeWrap{
-    margin: 0 20px;
+.homeWrap {
+  margin: 0 20px;
 }
 
-@media screen and (min-width: 800px){
-    .content{
-        padding: 0 50px;
-    }
+@media screen and (min-width: 800px) {
+  .content {
+    padding: 0 50px;
+  }
 }
 
-@media screen and (max-width: 799px){
-    .content{
-        padding: 0 20px;
-    }
+@media screen and (max-width: 799px) {
+  .content {
+    padding: 0 20px;
+  }
 }
 
-.image{
-    padding: 0 50px;
+.image {
+  padding: 0 50px;
 }
 
 img {
-    width: 100%;
+  width: 100%;
 }
 
 .tag {
-    font-family: 'Lato', sans-serif;
-    color: #3C096C;
-    font-size: 20px;
-    font-style: italic;
-    /* text-shadow: 4px 4px 8px rgba(202, 199, 199, 0.95); */
-    margin-bottom: 0 !important;
+  font-family: "Lato", sans-serif;
+  color: #3c096c;
+  font-size: 20px;
+  font-style: italic;
+  /* text-shadow: 4px 4px 8px rgba(202, 199, 199, 0.95); */
+  margin-bottom: 0 !important;
 }
 
 ul.a {
-    list-style-type: circle;
-}
\ No newline at end of file
+  list-style-type: circle;
+}
diff --git a/src/app/components/about-comp/about-comp.component.html b/src/app/components/about-comp/about-comp.component.html
index b180cbe..94e79fe 100644
--- a/src/app/components/about-comp/about-comp.component.html
+++ b/src/app/components/about-comp/about-comp.component.html
@@ -1,71 +1,69 @@
 <div class="homeWrap">
-    <mat-card class="example-card">
-        <div class="row col-lg-12">
-            <div class="col-lg-3 image">
-                <img src="../../assets/dwayne.jpeg" />
-            </div>
-            <div class="col-lg-9 content">
-                <div>
-                    <h1>Dwayne Ray Cormier, Ph.D.</h1>
-                    <br />
-                    <ul>
-                        <li>
-                            <p class="tag">Assistant Professor, Foundations Of Education</p>
-                        </li>
-                        <li>
-                            <p class="tag">Member of iCubed: Urban Education and Family Transdisciplinary Core</p>
-                        </li>
-                    </ul>
-                </div>
+  <mat-card class="example-card">
+    <div class="row col-lg-12">
+      <div class="col-lg-3 image">
+        <img src="../../assets/dwayne.jpeg" />
+      </div>
+      <div class="col-lg-9 content">
+        <div>
+          <h1>Dwayne Ray Cormier, Ph.D.</h1>
+          <br />
+          <ul>
+            <li>
+              <p class="tag">Assistant Professor, Foundations Of Education</p>
+            </li>
+            <li>
+              <p class="tag">Member of iCubed: Urban Education and Family Transdisciplinary Core</p>
+            </li>
+          </ul>
+        </div>
 
-                <div>
-                    <p>
-                        <span style="font-weight: bold">Bio: </span>
-                        <span
-                            ><a
-                                href="https://soe.vcu.edu/directory/full-directory/first--last-name-363653-en.html"
-                                target="_blank"
-                                >Dr. Dwayne Ray Cormier’s</a
-                            ></span
-                        >
-                        research focuses on bridging the sociocultural gap between PreK-12 educators and students from
-                        diverse racial and ethnic backgrounds and urban and rural schooling contexts. His research has
-                        led to the development of the Cultural Proficiency Continuum Dialogic Protocol (CPCDP), a
-                        pedagogical tool designed to assess and codify individuals’ cultural competency. Currently, Dr.
-                        Cormier is working with the Hands-On Lab at Old Dominion University to adapt the CPCDP to a
-                        web-based platform to increase accessibility and broader impact.
-                    </p>
-                </div>
-                <div>
-                    <p style="font-weight: bold">Relevant Publications:</p>
-                    <ul>
-                        <li>
-                            Cormier, D. R. (2021). Assessing Preservice Teachers’ Cultural Competence With the Cultural
-                            Proficiency Continuum Q-Sort. Educational Researcher, 50(1), 17–29.
-                            <a href="https://doi.org/10.3102/0013189X20936670" target="_blank"
-                                >https://doi.org/10.3102/0013189X20936670
-                            </a>
-                        </li>
-                        <br />
-                        <li>
-                            Cormier, D. R. (2019). The Cultural Proficiency Continuum Dialogic Protocol: An Emerging
-                            Tool for Examining Preservice Teachers' Sociocultural Consciousness Concerning
-                            Majority-minority Schools and Student Populations
-                            <a href="https://etda.libraries.psu.edu/catalog/16331drc5411" target="_blank"
-                                >(Doctoral dissertation, Pennsylvania State University).</a
-                            >
-                        </li>
-                    </ul>
-                </div>
-                <div>
-                    <p><span style="font-weight: bold">Phone: </span>(804) 827-8239</p>
-                </div>
-                <div>
-                    <p><span style="font-weight: bold">Email: </span>cormierd2@vcu.edu</p>
-                </div>
-            </div>
+        <div>
+          <p>
+            <span style="font-weight: bold">Bio: </span>
+            <span
+              ><a href="https://soe.vcu.edu/directory/full-directory/first--last-name-363653-en.html" target="_blank"
+                >Dr. Dwayne Ray Cormier’s</a
+              ></span
+            >
+            research focuses on bridging the sociocultural gap between PreK-12 educators and students from diverse
+            racial and ethnic backgrounds and urban and rural schooling contexts. His research has led to the
+            development of the Cultural Proficiency Continuum Dialogic Protocol (CPCDP), a pedagogical tool designed to
+            assess and codify individuals’ cultural competency. Currently, Dr. Cormier is working with the Hands-On Lab
+            at Old Dominion University to adapt the CPCDP to a web-based platform to increase accessibility and broader
+            impact.
+          </p>
+        </div>
+        <div>
+          <p style="font-weight: bold">Relevant Publications:</p>
+          <ul>
+            <li>
+              Cormier, D. R. (2021). Assessing Preservice Teachers’ Cultural Competence With the Cultural Proficiency
+              Continuum Q-Sort. Educational Researcher, 50(1), 17–29.
+              <a href="https://doi.org/10.3102/0013189X20936670" target="_blank"
+                >https://doi.org/10.3102/0013189X20936670
+              </a>
+            </li>
+            <br />
+            <li>
+              Cormier, D. R. (2019). The Cultural Proficiency Continuum Dialogic Protocol: An Emerging Tool for
+              Examining Preservice Teachers' Sociocultural Consciousness Concerning Majority-minority Schools and
+              Student Populations
+              <a href="https://etda.libraries.psu.edu/catalog/16331drc5411" target="_blank"
+                >(Doctoral dissertation, Pennsylvania State University).</a
+              >
+            </li>
+          </ul>
+        </div>
+        <div>
+          <p><span style="font-weight: bold">Phone: </span>(804) 827-8239</p>
+        </div>
+        <div>
+          <p><span style="font-weight: bold">Email: </span>cormierd2@vcu.edu</p>
         </div>
-        <div></div>
-    </mat-card>
+      </div>
+    </div>
+    <div></div>
+  </mat-card>
 </div>
 <app-footer></app-footer>
diff --git a/src/app/components/about-comp/about-comp.component.spec.ts b/src/app/components/about-comp/about-comp.component.spec.ts
index 772f08a..dc7099b 100644
--- a/src/app/components/about-comp/about-comp.component.spec.ts
+++ b/src/app/components/about-comp/about-comp.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { AboutCompComponent } from './about-comp.component';
+import { AboutCompComponent } from "./about-comp.component";
 
-describe('AboutCompComponent', () => {
+describe("AboutCompComponent", () => {
   let component: AboutCompComponent;
   let fixture: ComponentFixture<AboutCompComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ AboutCompComponent ]
-    })
-    .compileComponents();
+      declarations: [AboutCompComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('AboutCompComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/about-comp/about-comp.component.ts b/src/app/components/about-comp/about-comp.component.ts
index 9bf91ec..3c45aed 100644
--- a/src/app/components/about-comp/about-comp.component.ts
+++ b/src/app/components/about-comp/about-comp.component.ts
@@ -1,15 +1,12 @@
-import { Component, OnInit } from '@angular/core';
+import { Component, OnInit } from "@angular/core";
 
 @Component({
-  selector: 'app-about-comp',
-  templateUrl: './about-comp.component.html',
-  styleUrls: ['./about-comp.component.css']
+  selector: "app-about-comp",
+  templateUrl: "./about-comp.component.html",
+  styleUrls: ["./about-comp.component.css"],
 })
 export class AboutCompComponent implements OnInit {
+  constructor() {}
 
-  constructor() { }
-
-  ngOnInit(): void {
-  }
-
+  ngOnInit(): void {}
 }
diff --git a/src/app/components/change-password/change-password.component.css b/src/app/components/change-password/change-password.component.css
index cb2e8a4..d0aa6e1 100644
--- a/src/app/components/change-password/change-password.component.css
+++ b/src/app/components/change-password/change-password.component.css
@@ -1,45 +1,45 @@
-.container{
-    text-align: center;
-    padding-bottom: 300px;
+.container {
+  text-align: center;
+  padding-bottom: 300px;
 }
 
 .example-card {
-    display: inline-block;
-    margin-top: 100px;
+  display: inline-block;
+  margin-top: 100px;
 }
 
 .intro {
-    top: 20%;
-    font-size: 35px;
-    text-align: center;
-    font-family: 'Loto', sans-serif, cursive;
-    color: black;
-    font-weight: bold;
+  top: 20%;
+  font-size: 35px;
+  text-align: center;
+  font-family: "Loto", sans-serif, cursive;
+  color: black;
+  font-weight: bold;
 }
 
 body {
-    font-family: 'Loto', sans-serif;
-    background-color: #f8fafb;
+  font-family: "Loto", sans-serif;
+  background-color: #f8fafb;
 }
 
-@media screen and (min-width: 992px){
-    p {
-        padding-top: 150px;
-        line-height: 150%;
-        color: #b3b3b3;
-        font-weight: 300;
-        margin: 0 20px;
-    }
+@media screen and (min-width: 992px) {
+  p {
+    padding-top: 150px;
+    line-height: 150%;
+    color: #b3b3b3;
+    font-weight: 300;
+    margin: 0 20px;
+  }
 }
 
-@media screen and (max-width: 991px){
-    p {
-        padding-top: 20px;
-        line-height: 150%;
-        color: #b3b3b3;
-        font-weight: 300;
-        margin: 0 20px;
-    }
+@media screen and (max-width: 991px) {
+  p {
+    padding-top: 20px;
+    line-height: 150%;
+    color: #b3b3b3;
+    font-weight: 300;
+    margin: 0 20px;
+  }
 }
 
 h1,
@@ -54,19 +54,19 @@ h6,
 .h4,
 .h5,
 .h6 {
-    font-family: 'Loto', sans-serif;
+  font-family: "Loto", sans-serif;
 }
 
 a {
-    -webkit-transition: .3s all ease;
-    -o-transition: .3s all ease;
-    transition: .3s all ease;
+  -webkit-transition: 0.3s all ease;
+  -o-transition: 0.3s all ease;
+  transition: 0.3s all ease;
 }
 
 a:hover {
-    text-decoration: none !important;
+  text-decoration: none !important;
 }
 
 h2 {
-    font-size: 20px;
-}
\ No newline at end of file
+  font-size: 20px;
+}
diff --git a/src/app/components/change-password/change-password.component.html b/src/app/components/change-password/change-password.component.html
index df39a5a..9c93b5b 100644
--- a/src/app/components/change-password/change-password.component.html
+++ b/src/app/components/change-password/change-password.component.html
@@ -1,49 +1,49 @@
 <div class="header-wrap">
-    <p class="intro">Cultural Proficiency Continuum Dialogic Protocol</p>
-    <div class="container">
-        <mat-card class="example-card">
-            <div class="mb-4">
-                <h3 style="text-align: center">Change Password</h3>
-            </div>
-            <form [formGroup]="loginForm">
-                <mat-form-field appearance="outline" class="col-lg-12">
-                    <mat-label>Enter New Password</mat-label>
-                    <input matInput formControlName="new_password" [type]="hide ? 'password' : 'text'" required />
-                    <button
-                        mat-icon-button
-                        matSuffix
-                        (click)="hide = !hide"
-                        [attr.aria-label]="'Hide password'"
-                        [attr.aria-pressed]="hide"
-                    >
-                        <mat-icon>{{ hide ? "visibility_off" : "visibility" }}</mat-icon>
-                    </button>
-                    <mat-error *ngIf="loginForm.controls.new_password.invalid">{{ getPasswordError() }}</mat-error>
-                </mat-form-field>
-                <mat-form-field appearance="outline" class="col-lg-12">
-                    <mat-label>Confirm New password</mat-label>
-                    <input matInput formControlName="confirmPassword" [type]="hide ? 'password' : 'text'" required />
-                    <button
-                        mat-icon-button
-                        matSuffix
-                        (click)="hide = !hide"
-                        [attr.aria-label]="'Hide password'"
-                        [attr.aria-pressed]="hide"
-                    >
-                        <mat-icon>{{ hide ? "visibility_off" : "visibility" }}</mat-icon>
-                    </button>
-                    <mat-error *ngIf="loginForm.controls.confirmPassword.invalid">{{ getPasswordError() }}</mat-error>
-                </mat-form-field>
+  <p class="intro">Cultural Proficiency Continuum Dialogic Protocol</p>
+  <div class="container">
+    <mat-card class="example-card">
+      <div class="mb-4">
+        <h3 style="text-align: center">Change Password</h3>
+      </div>
+      <form [formGroup]="loginForm">
+        <mat-form-field appearance="outline" class="col-lg-12">
+          <mat-label>Enter New Password</mat-label>
+          <input matInput formControlName="new_password" [type]="hide ? 'password' : 'text'" required />
+          <button
+            mat-icon-button
+            matSuffix
+            (click)="hide = !hide"
+            [attr.aria-label]="'Hide password'"
+            [attr.aria-pressed]="hide"
+          >
+            <mat-icon>{{ hide ? "visibility_off" : "visibility" }}</mat-icon>
+          </button>
+          <mat-error *ngIf="loginForm.controls.new_password.invalid">{{ getPasswordError() }}</mat-error>
+        </mat-form-field>
+        <mat-form-field appearance="outline" class="col-lg-12">
+          <mat-label>Confirm New password</mat-label>
+          <input matInput formControlName="confirmPassword" [type]="hide ? 'password' : 'text'" required />
+          <button
+            mat-icon-button
+            matSuffix
+            (click)="hide = !hide"
+            [attr.aria-label]="'Hide password'"
+            [attr.aria-pressed]="hide"
+          >
+            <mat-icon>{{ hide ? "visibility_off" : "visibility" }}</mat-icon>
+          </button>
+          <mat-error *ngIf="loginForm.controls.confirmPassword.invalid">{{ getPasswordError() }}</mat-error>
+        </mat-form-field>
 
-                <input
-                    type="submit"
-                    value="Change Password"
-                    class="btn text-white btn-block btn-primary"
-                    style="background-color: #29abe2; font-size: 20px"
-                    (click)="login()"
-                />
-            </form>
-        </mat-card>
-    </div>
+        <input
+          type="submit"
+          value="Change Password"
+          class="btn text-white btn-block btn-primary"
+          style="background-color: #29abe2; font-size: 20px"
+          (click)="login()"
+        />
+      </form>
+    </mat-card>
+  </div>
 </div>
 <app-footer></app-footer>
diff --git a/src/app/components/change-password/change-password.component.spec.ts b/src/app/components/change-password/change-password.component.spec.ts
index 79333f9..7f520dd 100644
--- a/src/app/components/change-password/change-password.component.spec.ts
+++ b/src/app/components/change-password/change-password.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { ChangePasswordComponent } from './change-password.component';
+import { ChangePasswordComponent } from "./change-password.component";
 
-describe('ChangePasswordComponent', () => {
+describe("ChangePasswordComponent", () => {
   let component: ChangePasswordComponent;
   let fixture: ComponentFixture<ChangePasswordComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ ChangePasswordComponent ]
-    })
-    .compileComponents();
+      declarations: [ChangePasswordComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('ChangePasswordComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/change-password/change-password.component.ts b/src/app/components/change-password/change-password.component.ts
index 662263a..3461657 100644
--- a/src/app/components/change-password/change-password.component.ts
+++ b/src/app/components/change-password/change-password.component.ts
@@ -4,87 +4,87 @@ import { Router } from "@angular/router";
 import Swal from "sweetalert2";
 import { LoginService } from "src/app/services/login.service";
 @Component({
-    selector: "app-change-password",
-    templateUrl: "./change-password.component.html",
-    styleUrls: ["./change-password.component.css"],
+  selector: "app-change-password",
+  templateUrl: "./change-password.component.html",
+  styleUrls: ["./change-password.component.css"],
 })
 export class ChangePasswordComponent implements OnInit {
-    loginForm: FormGroup;
-    hide = true;
-    constructor(private fb: FormBuilder, private router: Router, private loginService: LoginService) {}
+  loginForm: FormGroup;
+  hide = true;
+  constructor(private fb: FormBuilder, private router: Router, private loginService: LoginService) {}
 
-    ngOnInit(): void {
-        this.loginForm = this.fb.group({
-            new_password: ["", [Validators.required]],
-            confirmPassword: ["", [Validators.required]],
-        });
-    }
+  ngOnInit(): void {
+    this.loginForm = this.fb.group({
+      new_password: ["", [Validators.required]],
+      confirmPassword: ["", [Validators.required]],
+    });
+  }
 
-    getEmailError() {
-        if (this.loginForm.controls.username.hasError("required")) {
-            return "Required";
-        } else {
-            return "";
-        }
+  getEmailError() {
+    if (this.loginForm.controls.username.hasError("required")) {
+      return "Required";
+    } else {
+      return "";
     }
+  }
 
-    getPasswordError() {
-        if (this.loginForm.controls.new_password.hasError("required")) {
-            return "Required";
-        } else {
-            return "";
-        }
+  getPasswordError() {
+    if (this.loginForm.controls.new_password.hasError("required")) {
+      return "Required";
+    } else {
+      return "";
     }
+  }
 
-    login() {
-        if (!this.loginForm.valid) {
+  login() {
+    if (!this.loginForm.valid) {
+      Swal.fire({
+        text: "Please enter all the fields in the right format.",
+        icon: "error",
+      }).then((res) => {});
+    } else {
+      if (this.loginForm.get("new_password").value != this.loginForm.get("confirmPassword").value) {
+        Swal.fire({
+          text: "Passwords don't match!",
+          icon: "error",
+        }).then((res) => {});
+      } else {
+        this.loginForm.removeControl("confirmPassword");
+        this.loginService.changePassword(this.loginForm.value).subscribe(
+          (res) => {
+            Swal.fire({
+              text: "Password Changed Successfully!",
+              icon: "success",
+            }).then((res) => {
+              this.loginService.checkStatus().subscribe((res) => {
+                if (res[0] == undefined) {
+                  this.router.navigateByUrl("/preSurvey");
+                } else {
+                  if (res[0]["postsurveystatus"] == true) {
+                    this.router.navigateByUrl("/final");
+                  } else if (res[0]["scoresstatus"] == true) {
+                    this.router.navigateByUrl("/score");
+                  } else if (res[0]["finalfeedbackstatus"] == true) {
+                    this.router.navigateByUrl("/result");
+                  } else if (res[0]["cpcqstatus"] == true) {
+                    this.router.navigateByUrl("/finalFeedback");
+                  } else if (res[0]["responsesstatus"] == true) {
+                    this.router.navigateByUrl("/unpacking");
+                  } else if (res[0]["presurveystatus"] == true) {
+                    this.router.navigateByUrl("/dashboard");
+                  }
+                }
+              });
+            });
+          },
+          (err) => {
             Swal.fire({
-                text: "Please enter all the fields in the right format.",
-                icon: "error",
+              text: "Username/Email already exists",
+              icon: "error",
             }).then((res) => {});
-        } else {
-            if (this.loginForm.get("new_password").value != this.loginForm.get("confirmPassword").value) {
-                Swal.fire({
-                    text: "Passwords don't match!",
-                    icon: "error",
-                }).then((res) => {});
-            } else {
-                this.loginForm.removeControl("confirmPassword");
-                this.loginService.changePassword(this.loginForm.value).subscribe(
-                    (res) => {
-                        Swal.fire({
-                            text: "Password Changed Successfully!",
-                            icon: "success",
-                        }).then((res) => {
-                            this.loginService.checkStatus().subscribe((res) => {
-                                if (res[0] == undefined) {
-                                    this.router.navigateByUrl("/preSurvey");
-                                } else {
-                                    if (res[0]["postsurveystatus"] == true) {
-                                        this.router.navigateByUrl("/final");
-                                    } else if (res[0]["scoresstatus"] == true) {
-                                        this.router.navigateByUrl("/score");
-                                    } else if (res[0]["finalfeedbackstatus"] == true) {
-                                        this.router.navigateByUrl("/result");
-                                    } else if (res[0]["cpcqstatus"] == true) {
-                                        this.router.navigateByUrl("/finalFeedback");
-                                    } else if (res[0]["responsesstatus"] == true) {
-                                        this.router.navigateByUrl("/unpacking");
-                                    } else if (res[0]["presurveystatus"] == true) {
-                                        this.router.navigateByUrl("/dashboard");
-                                    }
-                                }
-                            });
-                        });
-                    },
-                    (err) => {
-                        Swal.fire({
-                            text: "Username/Email already exists",
-                            icon: "error",
-                        }).then((res) => {});
-                    }
-                );
-            }
-        }
+          }
+        );
+      }
     }
+  }
 }
diff --git a/src/app/components/consent-form/consent-form.component.css b/src/app/components/consent-form/consent-form.component.css
index 0102a9d..a5120ec 100644
--- a/src/app/components/consent-form/consent-form.component.css
+++ b/src/app/components/consent-form/consent-form.component.css
@@ -1,18 +1,18 @@
 .example-card {
-    max-width: 1000px;
-    position: absolute;
-    top: 55%;
-    left: 50%;
-    margin-right: -50%;
-    transform: translate(-50%, -50%);
+  max-width: 1000px;
+  position: absolute;
+  top: 55%;
+  left: 50%;
+  margin-right: -50%;
+  transform: translate(-50%, -50%);
 }
 
 .mat-card {
-    background-color: #e5e5e5;
+  background-color: #e5e5e5;
 }
 
 p {
-    /* font-family: Georgia, 'Times New Roman', Times, serif; */
-    font-family: 'Loto', sans-serif;
-    font-size: 15px;
-}
\ No newline at end of file
+  /* font-family: Georgia, 'Times New Roman', Times, serif; */
+  font-family: "Loto", sans-serif;
+  font-size: 15px;
+}
diff --git a/src/app/components/consent-form/consent-form.component.html b/src/app/components/consent-form/consent-form.component.html
index d72de16..f6b89a2 100644
--- a/src/app/components/consent-form/consent-form.component.html
+++ b/src/app/components/consent-form/consent-form.component.html
@@ -1,26 +1,44 @@
 <app-header></app-header>
 <div>
-    <mat-card class="example-card ">
-
-        <mat-card-content>
-            <h1>CONSENT FORM</h1>
-            <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen
-                book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more
-                recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>
-            <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen
-                book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more
-                recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>
-            <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen
-                book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more
-                recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>
-            <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen
-                book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more
-                recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>
-
-        </mat-card-content>
-        <mat-card-actions>
-            <button mat-raised-button style="color: green;" class="inputButton" (click)="agree()">I AGREE</button>
-            <button mat-raised-button style="color: red;" class="inputButton" (click)="disagree()">I DISAGREE</button>
-        </mat-card-actions>
-    </mat-card>
-</div>
\ No newline at end of file
+  <mat-card class="example-card">
+    <mat-card-content>
+      <h1>CONSENT FORM</h1>
+      <p>
+        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's
+        standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make
+        a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting,
+        remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing
+        Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions
+        of Lorem Ipsum.
+      </p>
+      <p>
+        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's
+        standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make
+        a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting,
+        remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing
+        Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions
+        of Lorem Ipsum.
+      </p>
+      <p>
+        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's
+        standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make
+        a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting,
+        remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing
+        Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions
+        of Lorem Ipsum.
+      </p>
+      <p>
+        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's
+        standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make
+        a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting,
+        remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing
+        Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions
+        of Lorem Ipsum.
+      </p>
+    </mat-card-content>
+    <mat-card-actions>
+      <button mat-raised-button style="color: green" class="inputButton" (click)="agree()">I AGREE</button>
+      <button mat-raised-button style="color: red" class="inputButton" (click)="disagree()">I DISAGREE</button>
+    </mat-card-actions>
+  </mat-card>
+</div>
diff --git a/src/app/components/consent-form/consent-form.component.spec.ts b/src/app/components/consent-form/consent-form.component.spec.ts
index 8d6db99..5ae346c 100644
--- a/src/app/components/consent-form/consent-form.component.spec.ts
+++ b/src/app/components/consent-form/consent-form.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { ConsentFormComponent } from './consent-form.component';
+import { ConsentFormComponent } from "./consent-form.component";
 
-describe('ConsentFormComponent', () => {
+describe("ConsentFormComponent", () => {
   let component: ConsentFormComponent;
   let fixture: ComponentFixture<ConsentFormComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ ConsentFormComponent ]
-    })
-    .compileComponents();
+      declarations: [ConsentFormComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('ConsentFormComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/consent-form/consent-form.component.ts b/src/app/components/consent-form/consent-form.component.ts
index 18d980f..8ab6784 100644
--- a/src/app/components/consent-form/consent-form.component.ts
+++ b/src/app/components/consent-form/consent-form.component.ts
@@ -1,24 +1,21 @@
-import { Component, OnInit } from '@angular/core';
-import { Router } from '@angular/router';
+import { Component, OnInit } from "@angular/core";
+import { Router } from "@angular/router";
 
 @Component({
-  selector: 'app-consent-form',
-  templateUrl: './consent-form.component.html',
-  styleUrls: ['./consent-form.component.css']
+  selector: "app-consent-form",
+  templateUrl: "./consent-form.component.html",
+  styleUrls: ["./consent-form.component.css"],
 })
 export class ConsentFormComponent implements OnInit {
+  constructor(private router: Router) {}
 
-  constructor( private router: Router) { }
+  ngOnInit(): void {}
 
-  ngOnInit(): void {
-  }
-
-  agree(){
+  agree() {
     this.router.navigateByUrl("/firstForm");
   }
-  disagree(){
+  disagree() {
     this.router.navigateByUrl("/");
     localStorage.removeItem("user");
   }
-
 }
diff --git a/src/app/components/cpcq-form/cpcq-form.component.css b/src/app/components/cpcq-form/cpcq-form.component.css
index 24eb341..5ba7b67 100644
--- a/src/app/components/cpcq-form/cpcq-form.component.css
+++ b/src/app/components/cpcq-form/cpcq-form.component.css
@@ -1,166 +1,164 @@
 .divClass {
-    padding-top: 10px;
+  padding-top: 10px;
 }
 
 .example-card {
-    /* max-height: 700px; */
-    /* width: 1000px; */
-    /* height: 570px; */
-    position: absolute;
-    top: 55%;
-    left: 50%;
-    transform: translate(-50%, -50%);
-    width: 80%;
+  /* max-height: 700px; */
+  /* width: 1000px; */
+  /* height: 570px; */
+  position: absolute;
+  top: 55%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+  width: 80%;
 }
 
 ::ng-deep .mat-tab-body-content {
-    max-height: 500px !important;
+  max-height: 500px !important;
 }
 
 .table-responsive {
-    height: 310px;
+  height: 310px;
 }
 
 .div-wrap {
-    width: 500px;
+  width: 500px;
 }
 
 p {
-    /* font-family: Georgia, 'Times New Roman', Times, serif; */
-    font-family: 'Loto', sans-serif;
-    font-size: 15px;
+  /* font-family: Georgia, 'Times New Roman', Times, serif; */
+  font-family: "Loto", sans-serif;
+  font-size: 15px;
 }
 
 h3 {
-    /* font-family: Georgia, 'Times New Roman', Times, serif; */
-    font-family: 'Loto', sans-serif;
-    margin-bottom: 40px;
+  /* font-family: Georgia, 'Times New Roman', Times, serif; */
+  font-family: "Loto", sans-serif;
+  margin-bottom: 40px;
 }
 
 .mat-card {
-    background-color: #edf6f9;
+  background-color: #edf6f9;
 }
 
 .inputField {
-    width: 100%;
+  width: 100%;
 }
 
-
 /* Chrome, Safari, Edge, Opera */
 
 input::-webkit-outer-spin-button,
 input::-webkit-inner-spin-button {
-    -webkit-appearance: none;
-    margin: 0;
+  -webkit-appearance: none;
+  margin: 0;
 }
 
-
 /* Firefox */
 
-input[type=number] {
-    -moz-appearance: textfield;
+input[type="number"] {
+  -moz-appearance: textfield;
 }
 
 ::ng-deep .mat-tab-header {
-    display: none !important;
+  display: none !important;
 }
 
 p {
-    text-align: justify;
-    text-justify: inter-word;
+  text-align: justify;
+  text-justify: inter-word;
 }
 
 h2 {
-    /* font-family: 'Loto', sans-serif; */
-    font-family: 'Loto', sans-serif;
+  /* font-family: 'Loto', sans-serif; */
+  font-family: "Loto", sans-serif;
 }
 
 mat-slider {
-    width: 350px;
+  width: 350px;
 }
 
 .mat-slider-thumb-label {
-    transform: rotate(45deg) !important;
-    border-radius: 50% 50% 0 !important;
+  transform: rotate(45deg) !important;
+  border-radius: 50% 50% 0 !important;
 }
 
 .mat-slider-thumb {
-    transform: scale(0) !important;
+  transform: scale(0) !important;
 }
 
 .mat-slider-thumb-label-text {
-    opacity: 1 !important;
+  opacity: 1 !important;
 }
 
 .advice {
-    border: none;
-    background: none;
+  border: none;
+  background: none;
 }
 
 ::ng-deep .mat-checkbox-layout {
-    white-space: normal !important;
+  white-space: normal !important;
 }
 
 mat-form-field {
-    width: 100%;
-    height: 5%;
+  width: 100%;
+  height: 5%;
 }
 
-::ng-deep .mat-form-field-flex>.mat-form-field-infix {
-    padding: 0.4em 0px !important;
+::ng-deep .mat-form-field-flex > .mat-form-field-infix {
+  padding: 0.4em 0px !important;
 }
 
 ::ng-deep .mat-form-field-label-wrapper {
-    top: -1.5em;
+  top: -1.5em;
 }
 
-::ng-deep .mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label {
-    transform: translateY(-1.1em) scale(.75);
-    width: 133.33333%;
-    color: black !important;
-    border: black;
+::ng-deep
+  .mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float
+  .mat-form-field-label {
+  transform: translateY(-1.1em) scale(0.75);
+  width: 133.33333%;
+  color: black !important;
+  border: black;
 }
 
 .example-h2 {
-    margin: 10px;
+  margin: 10px;
 }
 
 .example-section {
-    display: flex;
-    align-content: center;
-    align-items: center;
-    height: 60px;
+  display: flex;
+  align-content: center;
+  align-items: center;
+  height: 60px;
 }
 
 .example-margin {
-    margin: 0 10px;
+  margin: 0 10px;
 }
 
 .imgClass {
-    width: 30px;
-    height: 30px
+  width: 30px;
+  height: 30px;
 }
 
 .zoom {
-    transition: transform .2s;
-    border: none;
-    background: none;
-    /* Animation */
-    margin: 0 auto;
+  transition: transform 0.2s;
+  border: none;
+  background: none;
+  /* Animation */
+  margin: 0 auto;
 }
 
 .zoom:hover {
-    transform: scale(1.5);
-    /* (150% zoom - Note: if the zoom is too large, it will go outside of the viewport) */
+  transform: scale(1.5);
+  /* (150% zoom - Note: if the zoom is too large, it will go outside of the viewport) */
 }
 
-
 ::ng-deep .mat-tooltip {
-    font-size: 15px !important;
+  font-size: 15px !important;
 }
 
-
 /* 
 p {
     font-family: 'roboto';
-} */
\ No newline at end of file
+} */
diff --git a/src/app/components/cpcq-form/cpcq-form.component.html b/src/app/components/cpcq-form/cpcq-form.component.html
index 6a7cbc5..24716c5 100644
--- a/src/app/components/cpcq-form/cpcq-form.component.html
+++ b/src/app/components/cpcq-form/cpcq-form.component.html
@@ -1,564 +1,876 @@
 <div class="divClass">
-    <mat-card class="example-card ">
-
-        <mat-card-content>
-            <div style="margin-bottom: 10px; margin-left: -10px;">
-                <mat-progress-bar *ngIf="selectedIndex > 0 && selectedIndex <6" class="example-margin" style="width: 100%;" [mode]="mode" [value]="selectedIndex*20" [bufferValue]="bufferValue">
-                </mat-progress-bar>
-            </div>
-
-
-            <mat-tab-group [selectedIndex]="selectedIndex" style="margin: 0px;">
-                <mat-tab label="Second">
-                    <h2>Cultural Proficiency Continuum Q-Sort: Reacting to interactions that take place within Majority-Minority U.S. PreK-12 Schools
-
-                    </h2>
-                    <p style="font-size: 24px;"><span style="font-weight: bold;">Directions: </span> In the upcoming activity, you will engage with 30 vignettes situated in five categories that illustrate culturally proficient interactions that have taken place in U.S. public schools.
-                        Your task is to assign a level of reaction using numbers 1 - 6 to each vignette within each category. Specifically, you are to assign the number 6 to the vignette that evokes the highest level of reaction from you, 5 to the vignette
-                        that evokes the next highest level of reaction from you, and so on until you have assigned the number 1 to the vignette that evokes the least level of reaction from you.
-                    </p>
-                    <p style="font-size: 20px;">
-                        <span style="font-weight: bold;">    Note: </span> There are no correct or wrong ways to react to vignettes; your level of reaction (negative or positive) is unique to you. If you need to see the directions after beginning the Q-Sort, click the <span style="color: #4050b5;" color="primary"><mat-icon>info</mat-icon></span> in the upper right-hand corner. 
-
-
-
-                    </p>
-                </mat-tab>
-                <mat-tab label="Third">
-                    <button class="advice" (click)="openWordDialog('Attitude')">
-                         <span><h2><u>Attitude</u></h2></span></button>
-                    <button style="float: right;" mat-icon-button color="primary" aria-label="Example icon button with a delete icon" (click)="helpDialog('Attitude')">
-                            <mat-icon>info</mat-icon>
-                          </button>
-                    <p style="color: #4050b5;">*Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number only once. Click on the word "Attitude" and respond to the prompt.</p>
-                    <form [formGroup]="attitudeForm">
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="A" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv>{{attitude['question1']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="B" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv1>{{attitude['question2']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="C" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv2>{{attitude['question3']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="D" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv3>{{attitude['question4']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="E" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv4>{{attitude['question5']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="F" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv5>{{attitude['question6']}}</p>
-                            </div>
-                        </div>
-                    </form>
-
-
-                    <p style="margin-top: 20px; font-size: 15px;"> The singular pronouns: “their” or “they” are used as gender-neutral pronouns.
-                    </p>
-
-
-
-                </mat-tab>
-                <mat-tab label="Fourth">
-                    <button class="advice" (click)="openWordDialog('Empathy')">
-                        <span><h2><u>Empathy</u></h2></span></button>
-                    <button style="float: right;" mat-icon-button color="primary" aria-label="Example icon button with a delete icon" (click)="helpDialog('Empathy')">
-                            <mat-icon>info</mat-icon>
-                          </button>
-                    <p style="color: #4050b5;">*Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number only once. Click on the word "Empathy" and respond to the prompt.
-                    </p>
-
-                    <form [formGroup]="attitudeForm">
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="A" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv6>{{empathy['question1']}}</p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="B" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv7>{{empathy['question2']}}
-                                </p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="C" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv8>{{empathy['question3']}}</p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="D" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv9>{{empathy['question4']}}</p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="E" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv10>{{empathy['question5']}}</p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="F" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv11>{{empathy['question6']}}</p>
-                            </div>
-                        </div>
-                    </form>
-
-                </mat-tab>
-
-                <mat-tab label="Fourth">
-                    <button class="advice" (click)="openWordDialog('Policy')">
-                        <span><h2><u>Policy</u></h2></span></button>
-                    <button style="float: right;" mat-icon-button color="primary" aria-label="Example icon button with a delete icon" (click)="helpDialog('Policy')">
-                            <mat-icon>info</mat-icon>
-                          </button>
-                    <p style="color: #4050b5;">*Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number only once. Click on the word "Policy" and respond to the prompt.</p>
-
-                    <form [formGroup]="attitudeForm">
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="A" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv12>{{policy['question1']}}</p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="B" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv13>{{policy['question2']}}
-
-                                </p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="C" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv14>{{policy['question3']}}
-                                </p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="D" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv15>{{policy['question4']}}
-                                </p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="E" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv16>{{policy['question5']}}</p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="F" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv17>{{policy['question6']}} </p>
-                            </div>
-                        </div>
-                    </form>
-                </mat-tab>
-
-                <mat-tab label="Fifth">
-                    <button class="advice" (click)="openWordDialog('Professionalism')">
-                        <span><h2><u>Professionalism</u></h2></span></button>
-                    <button style="float: right;" mat-icon-button color="primary" aria-label="Example icon button with a delete icon" (click)="helpDialog('Professionalism')">
-                            <mat-icon>info</mat-icon>
-                          </button>
-                    <p style="color: #4050b5;">*Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number only once. Click on the word "Professionalism" and respond to the prompt.</p>
-                    <form [formGroup]="attitudeForm">
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="A" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv18>{{professionalism['question1']}}
-                                </p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="B" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv19>{{professionalism['question2']}}
-                                </p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="C" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv20>{{professionalism['question3']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="D" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv21>{{professionalism['question4']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="E" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv22>{{professionalism['question5']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="F" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv23>{{professionalism['question6']}} </p>
-                            </div>
-                        </div>
-
-                    </form>
-                </mat-tab>
-
-                <mat-tab label="Sixth">
-                    <button class="advice" (click)="openWordDialog('Teaching Practice')">
-                        <span><h2><u>Teaching Practice</u></h2></span></button>
-                    <button style="float: right;" mat-icon-button color="primary" aria-label="Example icon button with a delete icon" (click)="helpDialog('Teaching Practice')">
-                            <mat-icon>info</mat-icon>
-                          </button>
-                    <p style="color: #4050b5;">*Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number only once. Click on the word "Teaching Practice" and respond to the prompt.</p>
-                    <form [formGroup]="attitudeForm">
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="A" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv24> {{teachingPractice['question1']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="B" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv25>{{teachingPractice['question2']}}
-                                </p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="C" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv26>{{teachingPractice['question3']}}
-                                </p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="D" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv27>{{teachingPractice['question4']}}
-                                </p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="E" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv28>{{teachingPractice['question5']}}
-                                </p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="F" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv29>{{teachingPractice['question6']}}</p>
-                            </div>
-                        </div>
-                    </form>
-                </mat-tab>
-                <mat-tab label="Seventh">
-                    <h2>Cultural Proficiency Continuum Q-Sort: Unpacking your Reactions
-                    </h2>
-                    <!-- <p>Below are the results of the CPCQ forms filled by you. The numbers that you assigned to each vignette within each of the five categories to the right of the corresponding letter—A, B, C, D, E, F—in the spaces are provided below in
+  <mat-card class="example-card">
+    <mat-card-content>
+      <div style="margin-bottom: 10px; margin-left: -10px">
+        <mat-progress-bar
+          *ngIf="selectedIndex > 0 && selectedIndex < 6"
+          class="example-margin"
+          style="width: 100%"
+          [mode]="mode"
+          [value]="selectedIndex * 20"
+          [bufferValue]="bufferValue"
+        >
+        </mat-progress-bar>
+      </div>
+
+      <mat-tab-group [selectedIndex]="selectedIndex" style="margin: 0px">
+        <mat-tab label="Second">
+          <h2>
+            Cultural Proficiency Continuum Q-Sort: Reacting to interactions that take place within Majority-Minority
+            U.S. PreK-12 Schools
+          </h2>
+          <p style="font-size: 24px">
+            <span style="font-weight: bold">Directions: </span> In the upcoming activity, you will engage with 30
+            vignettes situated in five categories that illustrate culturally proficient interactions that have taken
+            place in U.S. public schools. Your task is to assign a level of reaction using numbers 1 - 6 to each
+            vignette within each category. Specifically, you are to assign the number 6 to the vignette that evokes the
+            highest level of reaction from you, 5 to the vignette that evokes the next highest level of reaction from
+            you, and so on until you have assigned the number 1 to the vignette that evokes the least level of reaction
+            from you.
+          </p>
+          <p style="font-size: 20px">
+            <span style="font-weight: bold"> Note: </span> There are no correct or wrong ways to react to vignettes;
+            your level of reaction (negative or positive) is unique to you. If you need to see the directions after
+            beginning the Q-Sort, click the
+            <span style="color: #4050b5" color="primary"><mat-icon>info</mat-icon></span> in the upper right-hand
+            corner.
+          </p>
+        </mat-tab>
+        <mat-tab label="Third">
+          <button class="advice" (click)="openWordDialog('Attitude')">
+            <span
+              ><h2><u>Attitude</u></h2></span
+            >
+          </button>
+          <button
+            style="float: right"
+            mat-icon-button
+            color="primary"
+            aria-label="Example icon button with a delete icon"
+            (click)="helpDialog('Attitude')"
+          >
+            <mat-icon>info</mat-icon>
+          </button>
+          <p style="color: #4050b5">
+            *Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number
+            only once. Click on the word "Attitude" and respond to the prompt.
+          </p>
+          <form [formGroup]="attitudeForm">
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="A"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv>{{ attitude["question1"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="B"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv1>{{ attitude["question2"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="C"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv2>{{ attitude["question3"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="D"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv3>{{ attitude["question4"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="E"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv4>{{ attitude["question5"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="F"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv5>{{ attitude["question6"] }}</p>
+              </div>
+            </div>
+          </form>
+
+          <p style="margin-top: 20px; font-size: 15px">
+            The singular pronouns: “their” or “they” are used as gender-neutral pronouns.
+          </p>
+        </mat-tab>
+        <mat-tab label="Fourth">
+          <button class="advice" (click)="openWordDialog('Empathy')">
+            <span
+              ><h2><u>Empathy</u></h2></span
+            >
+          </button>
+          <button
+            style="float: right"
+            mat-icon-button
+            color="primary"
+            aria-label="Example icon button with a delete icon"
+            (click)="helpDialog('Empathy')"
+          >
+            <mat-icon>info</mat-icon>
+          </button>
+          <p style="color: #4050b5">
+            *Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number
+            only once. Click on the word "Empathy" and respond to the prompt.
+          </p>
+
+          <form [formGroup]="attitudeForm">
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="A"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv6>{{ empathy["question1"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="B"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv7>{{ empathy["question2"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="C"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv8>{{ empathy["question3"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="D"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv9>{{ empathy["question4"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="E"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv10>{{ empathy["question5"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="F"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv11>{{ empathy["question6"] }}</p>
+              </div>
+            </div>
+          </form>
+        </mat-tab>
+
+        <mat-tab label="Fourth">
+          <button class="advice" (click)="openWordDialog('Policy')">
+            <span
+              ><h2><u>Policy</u></h2></span
+            >
+          </button>
+          <button
+            style="float: right"
+            mat-icon-button
+            color="primary"
+            aria-label="Example icon button with a delete icon"
+            (click)="helpDialog('Policy')"
+          >
+            <mat-icon>info</mat-icon>
+          </button>
+          <p style="color: #4050b5">
+            *Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number
+            only once. Click on the word "Policy" and respond to the prompt.
+          </p>
+
+          <form [formGroup]="attitudeForm">
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="A"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv12>{{ policy["question1"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="B"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv13>{{ policy["question2"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="C"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv14>{{ policy["question3"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="D"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv15>{{ policy["question4"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="E"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv16>{{ policy["question5"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="F"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv17>{{ policy["question6"] }}</p>
+              </div>
+            </div>
+          </form>
+        </mat-tab>
+
+        <mat-tab label="Fifth">
+          <button class="advice" (click)="openWordDialog('Professionalism')">
+            <span
+              ><h2><u>Professionalism</u></h2></span
+            >
+          </button>
+          <button
+            style="float: right"
+            mat-icon-button
+            color="primary"
+            aria-label="Example icon button with a delete icon"
+            (click)="helpDialog('Professionalism')"
+          >
+            <mat-icon>info</mat-icon>
+          </button>
+          <p style="color: #4050b5">
+            *Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number
+            only once. Click on the word "Professionalism" and respond to the prompt.
+          </p>
+          <form [formGroup]="attitudeForm">
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="A"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv18>{{ professionalism["question1"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="B"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv19>{{ professionalism["question2"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="C"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv20>{{ professionalism["question3"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="D"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv21>{{ professionalism["question4"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="E"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv22>{{ professionalism["question5"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="F"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv23>{{ professionalism["question6"] }}</p>
+              </div>
+            </div>
+          </form>
+        </mat-tab>
+
+        <mat-tab label="Sixth">
+          <button class="advice" (click)="openWordDialog('Teaching Practice')">
+            <span
+              ><h2><u>Teaching Practice</u></h2></span
+            >
+          </button>
+          <button
+            style="float: right"
+            mat-icon-button
+            color="primary"
+            aria-label="Example icon button with a delete icon"
+            (click)="helpDialog('Teaching Practice')"
+          >
+            <mat-icon>info</mat-icon>
+          </button>
+          <p style="color: #4050b5">
+            *Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number
+            only once. Click on the word "Teaching Practice" and respond to the prompt.
+          </p>
+          <form [formGroup]="attitudeForm">
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="A"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv24>{{ teachingPractice["question1"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="B"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv25>{{ teachingPractice["question2"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="C"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv26>{{ teachingPractice["question3"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="D"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv27>{{ teachingPractice["question4"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="E"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv28>{{ teachingPractice["question5"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="F"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv29>{{ teachingPractice["question6"] }}</p>
+              </div>
+            </div>
+          </form>
+        </mat-tab>
+        <mat-tab label="Seventh">
+          <h2>Cultural Proficiency Continuum Q-Sort: Unpacking your Reactions</h2>
+          <!-- <p>Below are the results of the CPCQ forms filled by you. The numbers that you assigned to each vignette within each of the five categories to the right of the corresponding letter—A, B, C, D, E, F—in the spaces are provided below in
                         the rating guide. Ideally, the final results in each row would read 1, 2, 3, 4, 5, 6, but because Cultural Proficiency is a fluid and dynamic phenomenon, these numbers may not align in numerical order. The final step in your analysis
                         is to locate the culturally proficient interactions, which are 2 or more points higher or lower than the ideal number by each letter. For example, if a row reads 2, 1, 5, 4, 6, 3, then the numbers 5 and 3 are bold and clickable.
                         Each number you bolded in each row represents an opportunity for inquiry and Dialogic for that particular culturally proficient behavior. Please click on the bolded numbers to unpack your views. Remember, this is not a judgment,
                         but rather an opportunity for you to make inquiries and have a conversation about the sociocultural interactions that take place within majority-minority US Prek-12 schools. </p> -->
-                    <p><span><b>Directions: </b> Each bolded number represents an opportunity for you to unpack your reaction to the vignette and the corresponding culturally proficient interaction. Above each column is a link to the definition for each culturally proficient interaction; review the definitions before unpacking your reactions. After, begin unpacking your reactions by clicking each of the items highlighted yellow. You can also click other bolded items not highlighted yellow if you wish to unpack additional vignettes.
-
-                    </span></p>
-                    <div class="table-responsive">
-                        <table class="table">
-                            <thead class="thead-dark" style="font-size: 15px;">
-                                <tr>
-                                    <th></th>
-                                    <th matTooltip="When individuals or policies seek to eliminate all vestiges of others culture in educational and/or social contexts (Lindsey, Robins, & Terrell, 2009). ">Cultural Destructiveness</th>
-                                    <th matTooltip="Trivializing and stereotyping other cultures; seeking to make the cultures of others appear [incongruent with and] inferior to the dominant [or host] culture [within educational and/or social context] ">Cultural Incapacity</th>
-                                    <th matTooltip="Not noticing or acknowledging the culture of others and ignoring the [diverse] experiences of cultures within [educational and/or social context]; treating everyone in the system the same way without recognizing the needs that require differentiated [approaches] ">Cultural Blindness</th>
-                                    <th matTooltip="The awareness/ability to identify when an individual/institution does not know how to effectively engage families, students, and teachers in a culturally diverse educational and/or social context ">
-                                        Cultural Pre-Competence </th>
-                                    <th matTooltip="The practical/institutional alignment of an individual’s personal values and behaviors which are in agreement with educational policies and practices that honors cultures that are new, different, and/or a minority. Such an environment displays healthy and productive interactions that denote solidarity in the educational context. However, this level of the Cultural Proficiency Continuum may or may not be limited to educational context ">Cultural Competence</th>
-                                    <th matTooltip="Espouses a vision that educational and social spaces are agents of social change and a model of a just democracy. These individual/institutions learn, teach, research, advocate, and champion for members of diverse and minoritized cultural groups. This level of the Cultural Proficiency Continuum is displayed and espoused in a variety of social constructions and contexts: educational, gender, professional, race, religious, and sexuality ">Cultural Proficiency</th>
-                                </tr>
-                            </thead>
-                            <tbody *ngFor="let row of responsesArray; let i = index">
-                                <tr>
-                                    <td> {{row[7]}} </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[0][1] == 'colorbold'" (click)="openDialog(i,0,row[6])">
-                                        {{row[0][0]}}
-                                    </td>
-                                    <td style="font-weight: bold;" *ngIf="row[0][1] == 'bold'" (click)="openDialog(i,0,row[6])">
-                                        {{row[0][0]}}
-                                    </td>
-                                    <td  *ngIf="row[0][1] == 'nobold'">
-                                        {{row[0][0]}}
-                                    </td>
-                                    <td  *ngIf="row[0][1] == 'greencolorbold'" style="font-weight: bold; background-color:#2a9d8f;">
-                                        {{row[0][0]}}
-                                    </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[1][1] == 'colorbold'" (click)="openDialog(i,1,row[6])">
-                                        {{row[1][0]}}
-                                    </td>
-                                    <td style="font-weight: bold;" *ngIf="row[1][1] == 'bold'" (click)="openDialog(i,1,row[6])">
-                                        {{row[1][0]}}
-                                    </td>
-                                    <td  *ngIf="row[1][1] == 'nobold'">
-                                        {{row[1][0]}}
-                                    </td>
-                                    <td  *ngIf="row[1][1] == 'greencolorbold'" style="font-weight: bold; background-color:#2a9d8f;">
-                                        {{row[1][0]}}
-                                    </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[2][1] == 'colorbold'" (click)="openDialog(i,2,row[6])">
-                                        {{row[2][0]}}
-                                    </td>
-                                    <td style="font-weight: bold;" *ngIf="row[2][1] == 'bold'" (click)="openDialog(i,2,row[6])">
-                                        {{row[2][0]}}
-                                    </td>
-                                    <td  *ngIf="row[2][1] == 'nobold'">
-                                        {{row[2][0]}}
-                                    </td>
-                                    <td  *ngIf="row[2][1] == 'greencolorbold'" style="font-weight: bold; background-color:#2a9d8f;">
-                                        {{row[2][0]}}
-                                    </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[3][1] == 'colorbold'" (click)="openDialog(i,3,row[6])">
-                                        {{row[3][0]}}
-                                    </td>
-                                    <td style="font-weight: bold;" *ngIf="row[3][1] == 'bold'" (click)="openDialog(i,3,row[6])">
-                                        {{row[3][0]}}
-                                    </td>
-                                    <td  *ngIf="row[3][1] == 'nobold'">
-                                        {{row[3][0]}}
-                                    </td>
-                                    <td  *ngIf="row[3][1] == 'greencolorbold'" style="font-weight: bold; background-color:#2a9d8f;">
-                                        {{row[3][0]}}
-                                    </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[4][1] == 'colorbold'" (click)="openDialog(i,4,row[6])">
-                                        {{row[4][0]}}
-                                    </td>
-                                    <td style="font-weight: bold;" *ngIf="row[4][1] == 'bold'" (click)="openDialog(i,4,row[6])">
-                                        {{row[4][0]}}
-                                    </td>
-                                    <td  *ngIf="row[4][1] == 'nobold'">
-                                        {{row[4][0]}}
-                                    </td>
-                                    <td  *ngIf="row[4][1] == 'greencolorbold'" style="font-weight: bold; background-color:#2a9d8f;">
-                                        {{row[4][0]}}
-                                    </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[5][1] == 'colorbold'" (click)="openDialog(i,5,row[6])">
-                                        {{row[5][0]}}
-                                    </td>
-                                    <td style="font-weight: bold;" *ngIf="row[5][1] == 'bold'" (click)="openDialog(i,5,row[6])">
-                                        {{row[5][0]}}
-                                    </td>
-                                    <td  *ngIf="row[5][1] == 'nobold'">
-                                        {{row[5][0]}}
-                                    </td>
-                                    <td  *ngIf="row[5][1] == 'greencolorbold'" style="font-weight: bold; background-color:#2a9d8f;">
-                                        {{row[5][0]}}
-                                    </td>
-
-
-
-                                </tr>                                
-
-                            </tbody>
-                            <!-- <tbody *ngFor="let row of formValues; let i = index">
+          <p>
+            <span
+              ><b>Directions: </b> Each bolded number represents an opportunity for you to unpack your reaction to the
+              vignette and the corresponding culturally proficient interaction. Above each column is a link to the
+              definition for each culturally proficient interaction; review the definitions before unpacking your
+              reactions. After, begin unpacking your reactions by clicking each of the items highlighted yellow. You can
+              also click other bolded items not highlighted yellow if you wish to unpack additional vignettes.
+            </span>
+          </p>
+          <div class="table-responsive">
+            <table class="table">
+              <thead class="thead-dark" style="font-size: 15px">
+                <tr>
+                  <th></th>
+                  <th
+                    matTooltip="When individuals or policies seek to eliminate all vestiges of others culture in educational and/or social contexts (Lindsey, Robins, & Terrell, 2009). "
+                  >
+                    Cultural Destructiveness
+                  </th>
+                  <th
+                    matTooltip="Trivializing and stereotyping other cultures; seeking to make the cultures of others appear [incongruent with and] inferior to the dominant [or host] culture [within educational and/or social context] "
+                  >
+                    Cultural Incapacity
+                  </th>
+                  <th
+                    matTooltip="Not noticing or acknowledging the culture of others and ignoring the [diverse] experiences of cultures within [educational and/or social context]; treating everyone in the system the same way without recognizing the needs that require differentiated [approaches] "
+                  >
+                    Cultural Blindness
+                  </th>
+                  <th
+                    matTooltip="The awareness/ability to identify when an individual/institution does not know how to effectively engage families, students, and teachers in a culturally diverse educational and/or social context "
+                  >
+                    Cultural Pre-Competence
+                  </th>
+                  <th
+                    matTooltip="The practical/institutional alignment of an individual’s personal values and behaviors which are in agreement with educational policies and practices that honors cultures that are new, different, and/or a minority. Such an environment displays healthy and productive interactions that denote solidarity in the educational context. However, this level of the Cultural Proficiency Continuum may or may not be limited to educational context "
+                  >
+                    Cultural Competence
+                  </th>
+                  <th
+                    matTooltip="Espouses a vision that educational and social spaces are agents of social change and a model of a just democracy. These individual/institutions learn, teach, research, advocate, and champion for members of diverse and minoritized cultural groups. This level of the Cultural Proficiency Continuum is displayed and espoused in a variety of social constructions and contexts: educational, gender, professional, race, religious, and sexuality "
+                  >
+                    Cultural Proficiency
+                  </th>
+                </tr>
+              </thead>
+              <tbody *ngFor="let row of responsesArray; let i = index">
+                <tr>
+                  <td>{{ row[7] }}</td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[0][1] == 'colorbold'"
+                    (click)="openDialog(i, 0, row[6])"
+                  >
+                    {{ row[0][0] }}
+                  </td>
+                  <td style="font-weight: bold" *ngIf="row[0][1] == 'bold'" (click)="openDialog(i, 0, row[6])">
+                    {{ row[0][0] }}
+                  </td>
+                  <td *ngIf="row[0][1] == 'nobold'">
+                    {{ row[0][0] }}
+                  </td>
+                  <td *ngIf="row[0][1] == 'greencolorbold'" style="font-weight: bold; background-color: #2a9d8f">
+                    {{ row[0][0] }}
+                  </td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[1][1] == 'colorbold'"
+                    (click)="openDialog(i, 1, row[6])"
+                  >
+                    {{ row[1][0] }}
+                  </td>
+                  <td style="font-weight: bold" *ngIf="row[1][1] == 'bold'" (click)="openDialog(i, 1, row[6])">
+                    {{ row[1][0] }}
+                  </td>
+                  <td *ngIf="row[1][1] == 'nobold'">
+                    {{ row[1][0] }}
+                  </td>
+                  <td *ngIf="row[1][1] == 'greencolorbold'" style="font-weight: bold; background-color: #2a9d8f">
+                    {{ row[1][0] }}
+                  </td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[2][1] == 'colorbold'"
+                    (click)="openDialog(i, 2, row[6])"
+                  >
+                    {{ row[2][0] }}
+                  </td>
+                  <td style="font-weight: bold" *ngIf="row[2][1] == 'bold'" (click)="openDialog(i, 2, row[6])">
+                    {{ row[2][0] }}
+                  </td>
+                  <td *ngIf="row[2][1] == 'nobold'">
+                    {{ row[2][0] }}
+                  </td>
+                  <td *ngIf="row[2][1] == 'greencolorbold'" style="font-weight: bold; background-color: #2a9d8f">
+                    {{ row[2][0] }}
+                  </td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[3][1] == 'colorbold'"
+                    (click)="openDialog(i, 3, row[6])"
+                  >
+                    {{ row[3][0] }}
+                  </td>
+                  <td style="font-weight: bold" *ngIf="row[3][1] == 'bold'" (click)="openDialog(i, 3, row[6])">
+                    {{ row[3][0] }}
+                  </td>
+                  <td *ngIf="row[3][1] == 'nobold'">
+                    {{ row[3][0] }}
+                  </td>
+                  <td *ngIf="row[3][1] == 'greencolorbold'" style="font-weight: bold; background-color: #2a9d8f">
+                    {{ row[3][0] }}
+                  </td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[4][1] == 'colorbold'"
+                    (click)="openDialog(i, 4, row[6])"
+                  >
+                    {{ row[4][0] }}
+                  </td>
+                  <td style="font-weight: bold" *ngIf="row[4][1] == 'bold'" (click)="openDialog(i, 4, row[6])">
+                    {{ row[4][0] }}
+                  </td>
+                  <td *ngIf="row[4][1] == 'nobold'">
+                    {{ row[4][0] }}
+                  </td>
+                  <td *ngIf="row[4][1] == 'greencolorbold'" style="font-weight: bold; background-color: #2a9d8f">
+                    {{ row[4][0] }}
+                  </td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[5][1] == 'colorbold'"
+                    (click)="openDialog(i, 5, row[6])"
+                  >
+                    {{ row[5][0] }}
+                  </td>
+                  <td style="font-weight: bold" *ngIf="row[5][1] == 'bold'" (click)="openDialog(i, 5, row[6])">
+                    {{ row[5][0] }}
+                  </td>
+                  <td *ngIf="row[5][1] == 'nobold'">
+                    {{ row[5][0] }}
+                  </td>
+                  <td *ngIf="row[5][1] == 'greencolorbold'" style="font-weight: bold; background-color: #2a9d8f">
+                    {{ row[5][0] }}
+                  </td>
+                </tr>
+              </tbody>
+              <!-- <tbody *ngFor="let row of formValues; let i = index">
                                 <tr>
                                     <td> {{row[0]}} </td>
                                     <td style="font-weight: bold; background-color:#face70;" *ngIf="boldList[i][0] >2 && finalList1[i][0] == 'True'" (click)="openDialog(i,0) "> {{row[1]}} </td>
@@ -586,9 +898,9 @@
                                     <td *ngIf="boldList[i][5]>=5"> {{row[6]}} </td>
                                 </tr>
                             </tbody> -->
-                        </table>
-                    </div>
-                    <!-- <div style="text-align:center;">
+            </table>
+          </div>
+          <!-- <div style="text-align:center;">
                         <button mat-raised-button color="primary" (click)="initiateRecording()" *ngIf="!recording"> Start Recording </button>
                         <button mat-raised-button color="primary" (click)="stopRecording()" class="btn btn-danger" *ngIf="recording"> Stop Recording </button>
                         <p></p>
@@ -596,142 +908,119 @@
                         <source [src]="sanitize(url)" type="audio/wav">
                         </audio>
                     </div> -->
-                </mat-tab>
-                <mat-tab>
-                    <h2>Cultural Proficiency Continuum Q-Sort: Additional Inquires and Reflections
-                    </h2>
-                    <p>Directions: Read and respond to each question below.
-                    </p>
-                <div [formGroup]="finalFeedbackForm" class="questions">
-
-
-                    <p>1. What are your overall impressions of this activity?
-
-                    </p>
-                    <mat-form-field appearance="outline" class="col-lg-12">
-                        <mat-label>Explain</mat-label>
-                        <input formControlName="q1" type="text" matInput placeholder="" required>
-                    </mat-form-field>
-
-
-
-                    <p style="margin-top: 15px;">2. Were there any challenges that came up while completing this activity?
-
-                    </p>
-                    <mat-form-field appearance="outline" class="col-lg-12">
-                        <mat-label>Explain</mat-label>
-                        <input formControlName="q2" type="text" matInput placeholder="" required>
-                    </mat-form-field>
-
-                    <p style="margin-top: 15px;">3. Were there any feelings that came up while completing this activity?
-
-                    </p>
-                    <mat-form-field appearance="outline" class="col-lg-12">
-                        <mat-label>Explain</mat-label>
-                        <input formControlName="q3" type="text" matInput placeholder="" required>
-                    </mat-form-field>
-
-                    <p style="margin-top: 15px;">4. Has this activity (i.e., reacting to and unpacking vignettes) increased your awareness of the different types of culturally proficient interactions and how they affect students from diverse racial, ethnic, and cultural backgrounds?
-
-                    </p>
-                    <mat-form-field appearance="outline" class="col-lg-12">
-                        <mat-label>Explain</mat-label>
-                        <input formControlName="q4" type="text" matInput placeholder="" required>
-                    </mat-form-field>
-
-                    <p style="margin-top: 15px;">5. After engaging with the activity (i.e., reacting to and unpacking vignettes), where would you place yourself on the Cultural Proficiency Continuum? 
-                    </p>
-                    <mat-radio-group formControlName="q5" class="example-radio-group">
-                        <div class="row">
-                            <div class="col-4">
-                                <mat-radio-button value="male">Cultural Destructiveness
-                                </mat-radio-button>
-                            </div>
-                            <div class="col-4">
-                                <mat-radio-button value="female">Cultural Incapacity
-                                </mat-radio-button>
-                            </div>
-                            <div class="col-4">
-                                <mat-radio-button value="other">Cultural Blindness
-                                </mat-radio-button>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-4">
-                                <mat-radio-button value="other1">Cultural Pre-Competence
-                                </mat-radio-button>
-                            </div>
-                            <div class="col-4">
-                                <mat-radio-button value="other2">Cultural Competence
-                                </mat-radio-button>
-                            </div>
-                            <div class="col-4">
-                                <mat-radio-button value="other3">Cultural Proficiency
-                                </mat-radio-button>
-                            </div>
-                        </div>
-                    </mat-radio-group>
-                    
-                    <p style="margin-top: 15px;">6. How would you rate the design of our website?
-                    </p>
-                    <div class="row">
-                        <div class="col-1">
-                            <button  class="zoom" (click)="changeEmojiSize('angry')">
-                                <img id="angry" class="imgClass" src="../../assets/angry.png"/>
-                            </button>
-                            <p>Very poor</p>
-
-                        </div>
-                        <div class="col-1">
-                            <button  class="zoom" (click)="changeEmojiSize('sad')">
-                                <img id="sad" class="imgClass" src="../../assets/sad.png"/>
-                            </button>
-                            <p>Poor</p>
-                        </div>
-                        <div class="col-1">
-                            <button  class="zoom" (click)="changeEmojiSize('neutral')">
-                                <img id="neutral" class="imgClass" src="../../assets/neutral.png" />
-                            </button>
-                            <p style="text-align: justify;">Fair</p>
-                        </div>
-                        <div class="col-1">
-                            <button  class="zoom" (click)="changeEmojiSize('smile')">
-                                <img id="smile" class="imgClass" src="../../assets/smile.png"/>
-                            </button>
-                            <p>Good</p>
-                        </div>
-                        <div class="col-1">
-                            <button  class="zoom" (click)="changeEmojiSize('heart')">
-                                <img id="heart" class="imgClass" src="../../assets/heart.webp"/>
-                            </button>
-                            <p>Excellent</p>
-                        </div>
-                    </div>
-
-                    <br>
-                    <p style="margin-top: 15px;">7. Was our website easy to use and understand?
-                    </p>
-                    <div class="row">
-
-
-
-                        <div class="col-1">
-                            <button class="zoom" (click) ="changeThumbsSize('thumbsup')">
-                                <img id="thumbsup"  class="imgClass" src="../../assets/thumbsup.png"/>
-                            </button>
-                        </div>
-                        <div class="col-1">
-                            <button  class="zoom" (click) ="changeThumbsSize('thumbsdown')">
-                                <img  id="thumbsdown" class="imgClass" src="../../assets/thumbsdown.png"/>
-                            </button>
-                        </div>
-                    </div>
-
-                    </div>
+        </mat-tab>
+        <mat-tab>
+          <h2>Cultural Proficiency Continuum Q-Sort: Additional Inquires and Reflections</h2>
+          <p>Directions: Read and respond to each question below.</p>
+          <div [formGroup]="finalFeedbackForm" class="questions">
+            <p>1. What are your overall impressions of this activity?</p>
+            <mat-form-field appearance="outline" class="col-lg-12">
+              <mat-label>Explain</mat-label>
+              <input formControlName="q1" type="text" matInput placeholder="" required />
+            </mat-form-field>
+
+            <p style="margin-top: 15px">2. Were there any challenges that came up while completing this activity?</p>
+            <mat-form-field appearance="outline" class="col-lg-12">
+              <mat-label>Explain</mat-label>
+              <input formControlName="q2" type="text" matInput placeholder="" required />
+            </mat-form-field>
+
+            <p style="margin-top: 15px">3. Were there any feelings that came up while completing this activity?</p>
+            <mat-form-field appearance="outline" class="col-lg-12">
+              <mat-label>Explain</mat-label>
+              <input formControlName="q3" type="text" matInput placeholder="" required />
+            </mat-form-field>
+
+            <p style="margin-top: 15px">
+              4. Has this activity (i.e., reacting to and unpacking vignettes) increased your awareness of the different
+              types of culturally proficient interactions and how they affect students from diverse racial, ethnic, and
+              cultural backgrounds?
+            </p>
+            <mat-form-field appearance="outline" class="col-lg-12">
+              <mat-label>Explain</mat-label>
+              <input formControlName="q4" type="text" matInput placeholder="" required />
+            </mat-form-field>
+
+            <p style="margin-top: 15px">
+              5. After engaging with the activity (i.e., reacting to and unpacking vignettes), where would you place
+              yourself on the Cultural Proficiency Continuum?
+            </p>
+            <mat-radio-group formControlName="q5" class="example-radio-group">
+              <div class="row">
+                <div class="col-4">
+                  <mat-radio-button value="male">Cultural Destructiveness </mat-radio-button>
+                </div>
+                <div class="col-4">
+                  <mat-radio-button value="female">Cultural Incapacity </mat-radio-button>
+                </div>
+                <div class="col-4">
+                  <mat-radio-button value="other">Cultural Blindness </mat-radio-button>
+                </div>
+              </div>
+              <div class="row">
+                <div class="col-4">
+                  <mat-radio-button value="other1">Cultural Pre-Competence </mat-radio-button>
+                </div>
+                <div class="col-4">
+                  <mat-radio-button value="other2">Cultural Competence </mat-radio-button>
+                </div>
+                <div class="col-4">
+                  <mat-radio-button value="other3">Cultural Proficiency </mat-radio-button>
+                </div>
+              </div>
+            </mat-radio-group>
 
+            <p style="margin-top: 15px">6. How would you rate the design of our website?</p>
+            <div class="row">
+              <div class="col-1">
+                <button class="zoom" (click)="changeEmojiSize('angry')">
+                  <img id="angry" class="imgClass" src="../../assets/angry.png" />
+                </button>
+                <p>Very poor</p>
+              </div>
+              <div class="col-1">
+                <button class="zoom" (click)="changeEmojiSize('sad')">
+                  <img id="sad" class="imgClass" src="../../assets/sad.png" />
+                </button>
+                <p>Poor</p>
+              </div>
+              <div class="col-1">
+                <button class="zoom" (click)="changeEmojiSize('neutral')">
+                  <img id="neutral" class="imgClass" src="../../assets/neutral.png" />
+                </button>
+                <p style="text-align: justify">Fair</p>
+              </div>
+              <div class="col-1">
+                <button class="zoom" (click)="changeEmojiSize('smile')">
+                  <img id="smile" class="imgClass" src="../../assets/smile.png" />
+                </button>
+                <p>Good</p>
+              </div>
+              <div class="col-1">
+                <button class="zoom" (click)="changeEmojiSize('heart')">
+                  <img id="heart" class="imgClass" src="../../assets/heart.webp" />
+                </button>
+                <p>Excellent</p>
+              </div>
+            </div>
 
-                </mat-tab>
-                <!-- <mat-tab label="Eight">
+            <br />
+            <p style="margin-top: 15px">7. Was our website easy to use and understand?</p>
+            <div class="row">
+              <div class="col-1">
+                <button class="zoom" (click)="changeThumbsSize('thumbsup')">
+                  <img id="thumbsup" class="imgClass" src="../../assets/thumbsup.png" />
+                </button>
+              </div>
+              <div class="col-1">
+                <button class="zoom" (click)="changeThumbsSize('thumbsdown')">
+                  <img id="thumbsdown" class="imgClass" src="../../assets/thumbsdown.png" />
+                </button>
+              </div>
+            </div>
+          </div>
+        </mat-tab>
+        <!-- <mat-tab label="Eight">
                     <h2>Sample of Audio Answer</h2>
                     <p>Please press the button below to start recording your answer.</p>
                     <div style="text-align:center;margin-top: 200px;">
@@ -743,46 +1032,64 @@
                         </audio>
                     </div>
                 </mat-tab> -->
-            </mat-tab-group>
-
-
-
-        </mat-card-content>
-
-
-
-        <mat-card-actions>
-            <div class="row">
-                <div class="col-8">
-                    <button *ngIf="selectedIndex != 5 && selectedIndex != 6 && selectedIndex !=7" mat-raised-button color="primary" style=" padding-right: -10px; " (click)="nextButton()">
-                        NEXT
-                        <mat-icon>arrow_right_al</mat-icon>
-        
-                         </button>
-
-                    <button *ngIf="selectedIndex == 5" mat-raised-button style=" padding-right: -10px; background-color: green; color: white;" (click)="submitForm()">
+      </mat-tab-group>
+    </mat-card-content>
+
+    <mat-card-actions>
+      <div class="row">
+        <div class="col-8">
+          <button
+            *ngIf="selectedIndex != 5 && selectedIndex != 6 && selectedIndex != 7"
+            mat-raised-button
+            color="primary"
+            style="padding-right: -10px"
+            (click)="nextButton()"
+          >
+            NEXT
+            <mat-icon>arrow_right_al</mat-icon>
+          </button>
+
+          <button
+            *ngIf="selectedIndex == 5"
+            mat-raised-button
+            style="padding-right: -10px; background-color: green; color: white"
+            (click)="submitForm()"
+          >
             SUBMIT
-                            <mat-icon>done_outline</mat-icon>
-                             </button>
-                             <button *ngIf="selectedIndex == 6" mat-raised-button style=" padding-right: -10px; background-color: green; color: white;" (click)="submitForm1()">
-                                SUBMIT
-                                                <mat-icon>done_outline</mat-icon>
-                                            </button>
-                    <button *ngIf="selectedIndex == 7" mat-raised-button style=" padding-right: -10px; background-color:#29ABE2; color: white; margin-top: -100px;" (click) = "finalSubmit()">
-                                Go to Dashboard
-                    </button>
-                </div>
-                <div *ngIf="selectedIndex != 6 && selectedIndex != 7 && selectedIndex != 0" class="col-4">
-                    <p style="font-size: 10px; margin:-10px; margin-left: 20px;">Use this bar to increase or decrease the font size</p>
-                    <mat-slider color="primary" min="0" max="4" value="1" tickInterval="1" (input)="sliderFunction($event)"></mat-slider>
-
-
-                </div>
-
-            </div>
-
-
-
-        </mat-card-actions>
-    </mat-card>
-</div>
\ No newline at end of file
+            <mat-icon>done_outline</mat-icon>
+          </button>
+          <button
+            *ngIf="selectedIndex == 6"
+            mat-raised-button
+            style="padding-right: -10px; background-color: green; color: white"
+            (click)="submitForm1()"
+          >
+            SUBMIT
+            <mat-icon>done_outline</mat-icon>
+          </button>
+          <button
+            *ngIf="selectedIndex == 7"
+            mat-raised-button
+            style="padding-right: -10px; background-color: #29abe2; color: white; margin-top: -100px"
+            (click)="finalSubmit()"
+          >
+            Go to Dashboard
+          </button>
+        </div>
+        <div *ngIf="selectedIndex != 6 && selectedIndex != 7 && selectedIndex != 0" class="col-4">
+          <p style="font-size: 10px; margin: -10px; margin-left: 20px">
+            Use this bar to increase or decrease the font size
+          </p>
+          <mat-slider
+            color="primary"
+            min="0"
+            max="4"
+            value="1"
+            tickInterval="1"
+            (input)="sliderFunction($event)"
+          ></mat-slider>
+        </div>
+      </div>
+    </mat-card-actions>
+  </mat-card>
+</div>
diff --git a/src/app/components/cpcq-form/cpcq-form.component.spec.ts b/src/app/components/cpcq-form/cpcq-form.component.spec.ts
index a5dbb9b..ffd1372 100644
--- a/src/app/components/cpcq-form/cpcq-form.component.spec.ts
+++ b/src/app/components/cpcq-form/cpcq-form.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { CpcqFormComponent } from './cpcq-form.component';
+import { CpcqFormComponent } from "./cpcq-form.component";
 
-describe('CpcqFormComponent', () => {
+describe("CpcqFormComponent", () => {
   let component: CpcqFormComponent;
   let fixture: ComponentFixture<CpcqFormComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ CpcqFormComponent ]
-    })
-    .compileComponents();
+      declarations: [CpcqFormComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('CpcqFormComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/cpcq-form/cpcq-form.component.ts b/src/app/components/cpcq-form/cpcq-form.component.ts
index 7bb5053..a042fff 100644
--- a/src/app/components/cpcq-form/cpcq-form.component.ts
+++ b/src/app/components/cpcq-form/cpcq-form.component.ts
@@ -15,1192 +15,1139 @@ import { DialogFormComponent } from "./dialog-form/dialog-form.component";
 import { CPCQService } from "src/app/services/cpcq.service";
 
 export interface DialogData {
-    animal: "panda" | "unicorn" | "lion";
-    status;
-    result;
+  animal: "panda" | "unicorn" | "lion";
+  status;
+  result;
 }
 @Component({
-    selector: "app-cpcq-form",
-    templateUrl: "./cpcq-form.component.html",
-    styleUrls: ["./cpcq-form.component.css"],
+  selector: "app-cpcq-form",
+  templateUrl: "./cpcq-form.component.html",
+  styleUrls: ["./cpcq-form.component.css"],
 })
 export class CpcqFormComponent implements OnInit, AfterViewInit {
-    firstForm: FormGroup;
-    responseList: any;
-    loaded = false;
-
-    questionArray = [
-        ["Enter First Name", "text"],
-        ["Enter Last Name", "text"],
-        ["Enter Age", "number"],
-    ];
-    statusCheck = false;
-    buttonClick = false;
-
-    sliderValue = 0;
-
-    selectedIndex = 0;
-
-    color: ThemePalette = "primary";
-    mode: ProgressBarMode = "buffer";
-    value1 = 50;
-    bufferValue = 100;
-
-    formValues = [];
-    attributes = ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"];
-    columnHeadings = [
-        "culturalDestructivenessresponse",
-        "culturalIncapacityresponse",
-        "culturalBlindnessresponse",
-        "culturalPreCompetenceresponse",
-        "culturalCompetenceresponse",
-        "culturalProficiencyresponse",
-    ];
-    rowLetters = [
-        ["D", "C", "B", "A", "F", "E"],
-        ["E", "A", "F", "D", "B", "C"],
-        ["F", "E", "B", "C", "D", "A"],
-        ["E", "A", "B", "D", "C", "F"],
-        ["D", "C", "B", "E", "A", "F"],
-    ];
-    boldList = [[]];
-    randomList = [[]];
-    finalList = [[]];
-    finalList1 = [];
-    attitudeForm: FormGroup;
-    empathyForm: FormGroup;
-    policyForm: FormGroup;
-
-    finalFeedbackForm: FormGroup;
-
-    //arrays of data getting from the backend
-
-    attitude: any;
-    empathy: any;
-    policy: any;
-    professionalism: any;
-    teachingPractice: any;
-    wordDescription: any;
-    unpackedCount = 0;
-
-    startTime: any;
-    endTime: any;
-    durationTime: any;
-
-    @ViewChild("changeDiv") changeDiv: ElementRef;
-    @ViewChild("changeDiv1") changeDiv1: ElementRef;
-    @ViewChild("changeDiv2") changeDiv2: ElementRef;
-    @ViewChild("changeDiv3") changeDiv3: ElementRef;
-    @ViewChild("changeDiv4") changeDiv4: ElementRef;
-    @ViewChild("changeDiv5") changeDiv5: ElementRef;
-    @ViewChild("changeDiv6") changeDiv6: ElementRef;
-    @ViewChild("changeDiv7") changeDiv7: ElementRef;
-    @ViewChild("changeDiv8") changeDiv8: ElementRef;
-    @ViewChild("changeDiv9") changeDiv9: ElementRef;
-    @ViewChild("changeDiv10") changeDiv10: ElementRef;
-    @ViewChild("changeDiv11") changeDiv11: ElementRef;
-    @ViewChild("changeDiv12") changeDiv12: ElementRef;
-    @ViewChild("changeDiv13") changeDiv13: ElementRef;
-    @ViewChild("changeDiv14") changeDiv14: ElementRef;
-    @ViewChild("changeDiv15") changeDiv15: ElementRef;
-    @ViewChild("changeDiv16") changeDiv16: ElementRef;
-    @ViewChild("changeDiv17") changeDiv17: ElementRef;
-    @ViewChild("changeDiv18") changeDiv18: ElementRef;
-    @ViewChild("changeDiv19") changeDiv19: ElementRef;
-    @ViewChild("changeDiv20") changeDiv20: ElementRef;
-    @ViewChild("changeDiv21") changeDiv21: ElementRef;
-    @ViewChild("changeDiv22") changeDiv22: ElementRef;
-    @ViewChild("changeDiv23") changeDiv23: ElementRef;
-    @ViewChild("changeDiv24") changeDiv24: ElementRef;
-    @ViewChild("changeDiv25") changeDiv25: ElementRef;
-    @ViewChild("changeDiv26") changeDiv26: ElementRef;
-    @ViewChild("changeDiv27") changeDiv27: ElementRef;
-    @ViewChild("changeDiv28") changeDiv28: ElementRef;
-    @ViewChild("changeDiv29") changeDiv29: ElementRef;
-
-    ngAfterViewInit() {}
-
-    sliderFunction1() {
-        if (this.sliderValue == 1) {
-            this.changeDiv.nativeElement.style.fontSize = "15px";
-            this.changeDiv1.nativeElement.style.fontSize = "15px";
-            this.changeDiv2.nativeElement.style.fontSize = "15px";
-            this.changeDiv3.nativeElement.style.fontSize = "15px";
-            this.changeDiv4.nativeElement.style.fontSize = "15px";
-            this.changeDiv5.nativeElement.style.fontSize = "15px";
-            this.changeDiv6.nativeElement.style.fontSize = "15px";
-            this.changeDiv7.nativeElement.style.fontSize = "15px";
-            this.changeDiv8.nativeElement.style.fontSize = "15px";
-            this.changeDiv9.nativeElement.style.fontSize = "15px";
-            this.changeDiv10.nativeElement.style.fontSize = "15px";
-            this.changeDiv11.nativeElement.style.fontSize = "15px";
-            this.changeDiv12.nativeElement.style.fontSize = "15px";
-            this.changeDiv13.nativeElement.style.fontSize = "15px";
-            this.changeDiv14.nativeElement.style.fontSize = "15px";
-            this.changeDiv15.nativeElement.style.fontSize = "15px";
-            this.changeDiv16.nativeElement.style.fontSize = "15px";
-            this.changeDiv17.nativeElement.style.fontSize = "15px";
-            this.changeDiv18.nativeElement.style.fontSize = "15px";
-            this.changeDiv19.nativeElement.style.fontSize = "15px";
-            this.changeDiv20.nativeElement.style.fontSize = "15px";
-            this.changeDiv21.nativeElement.style.fontSize = "15px";
-            this.changeDiv22.nativeElement.style.fontSize = "15px";
-            this.changeDiv23.nativeElement.style.fontSize = "15px";
-            this.changeDiv24.nativeElement.style.fontSize = "15px";
-            this.changeDiv25.nativeElement.style.fontSize = "15px";
-            this.changeDiv26.nativeElement.style.fontSize = "15px";
-            this.changeDiv27.nativeElement.style.fontSize = "15px";
-            this.changeDiv28.nativeElement.style.fontSize = "15px";
-            this.changeDiv29.nativeElement.style.fontSize = "15px";
-        } else if (this.sliderValue == 2) {
-            this.changeDiv.nativeElement.style.fontSize = "20px";
-            this.changeDiv1.nativeElement.style.fontSize = "20px";
-            this.changeDiv2.nativeElement.style.fontSize = "20px";
-            this.changeDiv3.nativeElement.style.fontSize = "20px";
-            this.changeDiv4.nativeElement.style.fontSize = "20px";
-            this.changeDiv5.nativeElement.style.fontSize = "20px";
-            this.changeDiv6.nativeElement.style.fontSize = "20px";
-            this.changeDiv7.nativeElement.style.fontSize = "20px";
-            this.changeDiv8.nativeElement.style.fontSize = "20px";
-            this.changeDiv9.nativeElement.style.fontSize = "20px";
-            this.changeDiv10.nativeElement.style.fontSize = "20px";
-            this.changeDiv11.nativeElement.style.fontSize = "20px";
-            this.changeDiv12.nativeElement.style.fontSize = "20px";
-            this.changeDiv13.nativeElement.style.fontSize = "20px";
-            this.changeDiv14.nativeElement.style.fontSize = "20px";
-            this.changeDiv15.nativeElement.style.fontSize = "20px";
-            this.changeDiv16.nativeElement.style.fontSize = "20px";
-            this.changeDiv17.nativeElement.style.fontSize = "20px";
-            this.changeDiv18.nativeElement.style.fontSize = "20px";
-            this.changeDiv19.nativeElement.style.fontSize = "20px";
-            this.changeDiv20.nativeElement.style.fontSize = "20px";
-            this.changeDiv21.nativeElement.style.fontSize = "20px";
-            this.changeDiv22.nativeElement.style.fontSize = "20px";
-            this.changeDiv23.nativeElement.style.fontSize = "20px";
-            this.changeDiv24.nativeElement.style.fontSize = "20px";
-            this.changeDiv25.nativeElement.style.fontSize = "20px";
-            this.changeDiv26.nativeElement.style.fontSize = "20px";
-            this.changeDiv27.nativeElement.style.fontSize = "20px";
-            this.changeDiv28.nativeElement.style.fontSize = "20px";
-            this.changeDiv29.nativeElement.style.fontSize = "20px";
-        } else if (this.sliderValue == 3) {
-            this.changeDiv.nativeElement.style.fontSize = "22px";
-            this.changeDiv1.nativeElement.style.fontSize = "22px";
-            this.changeDiv2.nativeElement.style.fontSize = "22px";
-            this.changeDiv3.nativeElement.style.fontSize = "22px";
-            this.changeDiv4.nativeElement.style.fontSize = "22px";
-            this.changeDiv5.nativeElement.style.fontSize = "22px";
-            this.changeDiv6.nativeElement.style.fontSize = "22px";
-            this.changeDiv7.nativeElement.style.fontSize = "22px";
-            this.changeDiv8.nativeElement.style.fontSize = "22px";
-            this.changeDiv9.nativeElement.style.fontSize = "22px";
-            this.changeDiv10.nativeElement.style.fontSize = "22px";
-            this.changeDiv11.nativeElement.style.fontSize = "22px";
-            this.changeDiv12.nativeElement.style.fontSize = "22px";
-            this.changeDiv13.nativeElement.style.fontSize = "22px";
-            this.changeDiv14.nativeElement.style.fontSize = "22px";
-            this.changeDiv15.nativeElement.style.fontSize = "22px";
-            this.changeDiv16.nativeElement.style.fontSize = "22px";
-            this.changeDiv17.nativeElement.style.fontSize = "22px";
-            this.changeDiv18.nativeElement.style.fontSize = "22px";
-            this.changeDiv19.nativeElement.style.fontSize = "22px";
-            this.changeDiv20.nativeElement.style.fontSize = "22px";
-            this.changeDiv21.nativeElement.style.fontSize = "22px";
-            this.changeDiv22.nativeElement.style.fontSize = "22px";
-            this.changeDiv23.nativeElement.style.fontSize = "22px";
-            this.changeDiv24.nativeElement.style.fontSize = "22px";
-            this.changeDiv25.nativeElement.style.fontSize = "22px";
-            this.changeDiv26.nativeElement.style.fontSize = "22px";
-            this.changeDiv27.nativeElement.style.fontSize = "22px";
-            this.changeDiv28.nativeElement.style.fontSize = "22px";
-            this.changeDiv29.nativeElement.style.fontSize = "22px";
-        } else if (this.sliderValue == 4) {
-            this.changeDiv.nativeElement.style.fontSize = "25px";
-            this.changeDiv1.nativeElement.style.fontSize = "25px";
-            this.changeDiv2.nativeElement.style.fontSize = "25px";
-            this.changeDiv3.nativeElement.style.fontSize = "25px";
-            this.changeDiv4.nativeElement.style.fontSize = "25px";
-            this.changeDiv5.nativeElement.style.fontSize = "25px";
-            this.changeDiv6.nativeElement.style.fontSize = "25px";
-            this.changeDiv7.nativeElement.style.fontSize = "25px";
-            this.changeDiv8.nativeElement.style.fontSize = "25px";
-            this.changeDiv9.nativeElement.style.fontSize = "25px";
-            this.changeDiv10.nativeElement.style.fontSize = "25px";
-            this.changeDiv11.nativeElement.style.fontSize = "25px";
-            this.changeDiv12.nativeElement.style.fontSize = "25px";
-            this.changeDiv13.nativeElement.style.fontSize = "25px";
-            this.changeDiv14.nativeElement.style.fontSize = "25px";
-            this.changeDiv15.nativeElement.style.fontSize = "25px";
-            this.changeDiv16.nativeElement.style.fontSize = "25px";
-            this.changeDiv17.nativeElement.style.fontSize = "25px";
-            this.changeDiv18.nativeElement.style.fontSize = "25px";
-            this.changeDiv19.nativeElement.style.fontSize = "25px";
-            this.changeDiv20.nativeElement.style.fontSize = "25px";
-            this.changeDiv21.nativeElement.style.fontSize = "25px";
-            this.changeDiv22.nativeElement.style.fontSize = "25px";
-            this.changeDiv23.nativeElement.style.fontSize = "25px";
-            this.changeDiv24.nativeElement.style.fontSize = "25px";
-            this.changeDiv25.nativeElement.style.fontSize = "25px";
-            this.changeDiv26.nativeElement.style.fontSize = "25px";
-            this.changeDiv27.nativeElement.style.fontSize = "25px";
-            this.changeDiv28.nativeElement.style.fontSize = "25px";
-            this.changeDiv29.nativeElement.style.fontSize = "25px";
-        } else if (this.sliderValue == 5) {
-            this.changeDiv.nativeElement.style.fontSize = "50px";
-            this.changeDiv1.nativeElement.style.fontSize = "50px";
-            this.changeDiv2.nativeElement.style.fontSize = "50px";
-            this.changeDiv3.nativeElement.style.fontSize = "50px";
-            this.changeDiv4.nativeElement.style.fontSize = "50px";
-            this.changeDiv5.nativeElement.style.fontSize = "50px";
-        }
+  firstForm: FormGroup;
+  responseList: any;
+  loaded = false;
+
+  questionArray = [
+    ["Enter First Name", "text"],
+    ["Enter Last Name", "text"],
+    ["Enter Age", "number"],
+  ];
+  statusCheck = false;
+  buttonClick = false;
+
+  sliderValue = 0;
+
+  selectedIndex = 0;
+
+  color: ThemePalette = "primary";
+  mode: ProgressBarMode = "buffer";
+  value1 = 50;
+  bufferValue = 100;
+
+  formValues = [];
+  attributes = ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"];
+  columnHeadings = [
+    "culturalDestructivenessresponse",
+    "culturalIncapacityresponse",
+    "culturalBlindnessresponse",
+    "culturalPreCompetenceresponse",
+    "culturalCompetenceresponse",
+    "culturalProficiencyresponse",
+  ];
+  rowLetters = [
+    ["D", "C", "B", "A", "F", "E"],
+    ["E", "A", "F", "D", "B", "C"],
+    ["F", "E", "B", "C", "D", "A"],
+    ["E", "A", "B", "D", "C", "F"],
+    ["D", "C", "B", "E", "A", "F"],
+  ];
+  boldList = [[]];
+  randomList = [[]];
+  finalList = [[]];
+  finalList1 = [];
+  attitudeForm: FormGroup;
+  empathyForm: FormGroup;
+  policyForm: FormGroup;
+
+  finalFeedbackForm: FormGroup;
+
+  //arrays of data getting from the backend
+
+  attitude: any;
+  empathy: any;
+  policy: any;
+  professionalism: any;
+  teachingPractice: any;
+  wordDescription: any;
+  unpackedCount = 0;
+
+  startTime: any;
+  endTime: any;
+  durationTime: any;
+
+  @ViewChild("changeDiv") changeDiv: ElementRef;
+  @ViewChild("changeDiv1") changeDiv1: ElementRef;
+  @ViewChild("changeDiv2") changeDiv2: ElementRef;
+  @ViewChild("changeDiv3") changeDiv3: ElementRef;
+  @ViewChild("changeDiv4") changeDiv4: ElementRef;
+  @ViewChild("changeDiv5") changeDiv5: ElementRef;
+  @ViewChild("changeDiv6") changeDiv6: ElementRef;
+  @ViewChild("changeDiv7") changeDiv7: ElementRef;
+  @ViewChild("changeDiv8") changeDiv8: ElementRef;
+  @ViewChild("changeDiv9") changeDiv9: ElementRef;
+  @ViewChild("changeDiv10") changeDiv10: ElementRef;
+  @ViewChild("changeDiv11") changeDiv11: ElementRef;
+  @ViewChild("changeDiv12") changeDiv12: ElementRef;
+  @ViewChild("changeDiv13") changeDiv13: ElementRef;
+  @ViewChild("changeDiv14") changeDiv14: ElementRef;
+  @ViewChild("changeDiv15") changeDiv15: ElementRef;
+  @ViewChild("changeDiv16") changeDiv16: ElementRef;
+  @ViewChild("changeDiv17") changeDiv17: ElementRef;
+  @ViewChild("changeDiv18") changeDiv18: ElementRef;
+  @ViewChild("changeDiv19") changeDiv19: ElementRef;
+  @ViewChild("changeDiv20") changeDiv20: ElementRef;
+  @ViewChild("changeDiv21") changeDiv21: ElementRef;
+  @ViewChild("changeDiv22") changeDiv22: ElementRef;
+  @ViewChild("changeDiv23") changeDiv23: ElementRef;
+  @ViewChild("changeDiv24") changeDiv24: ElementRef;
+  @ViewChild("changeDiv25") changeDiv25: ElementRef;
+  @ViewChild("changeDiv26") changeDiv26: ElementRef;
+  @ViewChild("changeDiv27") changeDiv27: ElementRef;
+  @ViewChild("changeDiv28") changeDiv28: ElementRef;
+  @ViewChild("changeDiv29") changeDiv29: ElementRef;
+
+  ngAfterViewInit() {}
+
+  sliderFunction1() {
+    if (this.sliderValue == 1) {
+      this.changeDiv.nativeElement.style.fontSize = "15px";
+      this.changeDiv1.nativeElement.style.fontSize = "15px";
+      this.changeDiv2.nativeElement.style.fontSize = "15px";
+      this.changeDiv3.nativeElement.style.fontSize = "15px";
+      this.changeDiv4.nativeElement.style.fontSize = "15px";
+      this.changeDiv5.nativeElement.style.fontSize = "15px";
+      this.changeDiv6.nativeElement.style.fontSize = "15px";
+      this.changeDiv7.nativeElement.style.fontSize = "15px";
+      this.changeDiv8.nativeElement.style.fontSize = "15px";
+      this.changeDiv9.nativeElement.style.fontSize = "15px";
+      this.changeDiv10.nativeElement.style.fontSize = "15px";
+      this.changeDiv11.nativeElement.style.fontSize = "15px";
+      this.changeDiv12.nativeElement.style.fontSize = "15px";
+      this.changeDiv13.nativeElement.style.fontSize = "15px";
+      this.changeDiv14.nativeElement.style.fontSize = "15px";
+      this.changeDiv15.nativeElement.style.fontSize = "15px";
+      this.changeDiv16.nativeElement.style.fontSize = "15px";
+      this.changeDiv17.nativeElement.style.fontSize = "15px";
+      this.changeDiv18.nativeElement.style.fontSize = "15px";
+      this.changeDiv19.nativeElement.style.fontSize = "15px";
+      this.changeDiv20.nativeElement.style.fontSize = "15px";
+      this.changeDiv21.nativeElement.style.fontSize = "15px";
+      this.changeDiv22.nativeElement.style.fontSize = "15px";
+      this.changeDiv23.nativeElement.style.fontSize = "15px";
+      this.changeDiv24.nativeElement.style.fontSize = "15px";
+      this.changeDiv25.nativeElement.style.fontSize = "15px";
+      this.changeDiv26.nativeElement.style.fontSize = "15px";
+      this.changeDiv27.nativeElement.style.fontSize = "15px";
+      this.changeDiv28.nativeElement.style.fontSize = "15px";
+      this.changeDiv29.nativeElement.style.fontSize = "15px";
+    } else if (this.sliderValue == 2) {
+      this.changeDiv.nativeElement.style.fontSize = "20px";
+      this.changeDiv1.nativeElement.style.fontSize = "20px";
+      this.changeDiv2.nativeElement.style.fontSize = "20px";
+      this.changeDiv3.nativeElement.style.fontSize = "20px";
+      this.changeDiv4.nativeElement.style.fontSize = "20px";
+      this.changeDiv5.nativeElement.style.fontSize = "20px";
+      this.changeDiv6.nativeElement.style.fontSize = "20px";
+      this.changeDiv7.nativeElement.style.fontSize = "20px";
+      this.changeDiv8.nativeElement.style.fontSize = "20px";
+      this.changeDiv9.nativeElement.style.fontSize = "20px";
+      this.changeDiv10.nativeElement.style.fontSize = "20px";
+      this.changeDiv11.nativeElement.style.fontSize = "20px";
+      this.changeDiv12.nativeElement.style.fontSize = "20px";
+      this.changeDiv13.nativeElement.style.fontSize = "20px";
+      this.changeDiv14.nativeElement.style.fontSize = "20px";
+      this.changeDiv15.nativeElement.style.fontSize = "20px";
+      this.changeDiv16.nativeElement.style.fontSize = "20px";
+      this.changeDiv17.nativeElement.style.fontSize = "20px";
+      this.changeDiv18.nativeElement.style.fontSize = "20px";
+      this.changeDiv19.nativeElement.style.fontSize = "20px";
+      this.changeDiv20.nativeElement.style.fontSize = "20px";
+      this.changeDiv21.nativeElement.style.fontSize = "20px";
+      this.changeDiv22.nativeElement.style.fontSize = "20px";
+      this.changeDiv23.nativeElement.style.fontSize = "20px";
+      this.changeDiv24.nativeElement.style.fontSize = "20px";
+      this.changeDiv25.nativeElement.style.fontSize = "20px";
+      this.changeDiv26.nativeElement.style.fontSize = "20px";
+      this.changeDiv27.nativeElement.style.fontSize = "20px";
+      this.changeDiv28.nativeElement.style.fontSize = "20px";
+      this.changeDiv29.nativeElement.style.fontSize = "20px";
+    } else if (this.sliderValue == 3) {
+      this.changeDiv.nativeElement.style.fontSize = "22px";
+      this.changeDiv1.nativeElement.style.fontSize = "22px";
+      this.changeDiv2.nativeElement.style.fontSize = "22px";
+      this.changeDiv3.nativeElement.style.fontSize = "22px";
+      this.changeDiv4.nativeElement.style.fontSize = "22px";
+      this.changeDiv5.nativeElement.style.fontSize = "22px";
+      this.changeDiv6.nativeElement.style.fontSize = "22px";
+      this.changeDiv7.nativeElement.style.fontSize = "22px";
+      this.changeDiv8.nativeElement.style.fontSize = "22px";
+      this.changeDiv9.nativeElement.style.fontSize = "22px";
+      this.changeDiv10.nativeElement.style.fontSize = "22px";
+      this.changeDiv11.nativeElement.style.fontSize = "22px";
+      this.changeDiv12.nativeElement.style.fontSize = "22px";
+      this.changeDiv13.nativeElement.style.fontSize = "22px";
+      this.changeDiv14.nativeElement.style.fontSize = "22px";
+      this.changeDiv15.nativeElement.style.fontSize = "22px";
+      this.changeDiv16.nativeElement.style.fontSize = "22px";
+      this.changeDiv17.nativeElement.style.fontSize = "22px";
+      this.changeDiv18.nativeElement.style.fontSize = "22px";
+      this.changeDiv19.nativeElement.style.fontSize = "22px";
+      this.changeDiv20.nativeElement.style.fontSize = "22px";
+      this.changeDiv21.nativeElement.style.fontSize = "22px";
+      this.changeDiv22.nativeElement.style.fontSize = "22px";
+      this.changeDiv23.nativeElement.style.fontSize = "22px";
+      this.changeDiv24.nativeElement.style.fontSize = "22px";
+      this.changeDiv25.nativeElement.style.fontSize = "22px";
+      this.changeDiv26.nativeElement.style.fontSize = "22px";
+      this.changeDiv27.nativeElement.style.fontSize = "22px";
+      this.changeDiv28.nativeElement.style.fontSize = "22px";
+      this.changeDiv29.nativeElement.style.fontSize = "22px";
+    } else if (this.sliderValue == 4) {
+      this.changeDiv.nativeElement.style.fontSize = "25px";
+      this.changeDiv1.nativeElement.style.fontSize = "25px";
+      this.changeDiv2.nativeElement.style.fontSize = "25px";
+      this.changeDiv3.nativeElement.style.fontSize = "25px";
+      this.changeDiv4.nativeElement.style.fontSize = "25px";
+      this.changeDiv5.nativeElement.style.fontSize = "25px";
+      this.changeDiv6.nativeElement.style.fontSize = "25px";
+      this.changeDiv7.nativeElement.style.fontSize = "25px";
+      this.changeDiv8.nativeElement.style.fontSize = "25px";
+      this.changeDiv9.nativeElement.style.fontSize = "25px";
+      this.changeDiv10.nativeElement.style.fontSize = "25px";
+      this.changeDiv11.nativeElement.style.fontSize = "25px";
+      this.changeDiv12.nativeElement.style.fontSize = "25px";
+      this.changeDiv13.nativeElement.style.fontSize = "25px";
+      this.changeDiv14.nativeElement.style.fontSize = "25px";
+      this.changeDiv15.nativeElement.style.fontSize = "25px";
+      this.changeDiv16.nativeElement.style.fontSize = "25px";
+      this.changeDiv17.nativeElement.style.fontSize = "25px";
+      this.changeDiv18.nativeElement.style.fontSize = "25px";
+      this.changeDiv19.nativeElement.style.fontSize = "25px";
+      this.changeDiv20.nativeElement.style.fontSize = "25px";
+      this.changeDiv21.nativeElement.style.fontSize = "25px";
+      this.changeDiv22.nativeElement.style.fontSize = "25px";
+      this.changeDiv23.nativeElement.style.fontSize = "25px";
+      this.changeDiv24.nativeElement.style.fontSize = "25px";
+      this.changeDiv25.nativeElement.style.fontSize = "25px";
+      this.changeDiv26.nativeElement.style.fontSize = "25px";
+      this.changeDiv27.nativeElement.style.fontSize = "25px";
+      this.changeDiv28.nativeElement.style.fontSize = "25px";
+      this.changeDiv29.nativeElement.style.fontSize = "25px";
+    } else if (this.sliderValue == 5) {
+      this.changeDiv.nativeElement.style.fontSize = "50px";
+      this.changeDiv1.nativeElement.style.fontSize = "50px";
+      this.changeDiv2.nativeElement.style.fontSize = "50px";
+      this.changeDiv3.nativeElement.style.fontSize = "50px";
+      this.changeDiv4.nativeElement.style.fontSize = "50px";
+      this.changeDiv5.nativeElement.style.fontSize = "50px";
     }
-    sliderFunction(e) {
-        //
-        this.sliderValue = e.value;
-        if (e.value == 1) {
-            this.changeDiv.nativeElement.style.fontSize = "15px";
-            this.changeDiv1.nativeElement.style.fontSize = "15px";
-            this.changeDiv2.nativeElement.style.fontSize = "15px";
-            this.changeDiv3.nativeElement.style.fontSize = "15px";
-            this.changeDiv4.nativeElement.style.fontSize = "15px";
-            this.changeDiv5.nativeElement.style.fontSize = "15px";
-            this.changeDiv6.nativeElement.style.fontSize = "15px";
-            this.changeDiv7.nativeElement.style.fontSize = "15px";
-            this.changeDiv8.nativeElement.style.fontSize = "15px";
-            this.changeDiv9.nativeElement.style.fontSize = "15px";
-            this.changeDiv10.nativeElement.style.fontSize = "15px";
-            this.changeDiv11.nativeElement.style.fontSize = "15px";
-            this.changeDiv12.nativeElement.style.fontSize = "15px";
-            this.changeDiv13.nativeElement.style.fontSize = "15px";
-            this.changeDiv14.nativeElement.style.fontSize = "15px";
-            this.changeDiv15.nativeElement.style.fontSize = "15px";
-            this.changeDiv16.nativeElement.style.fontSize = "15px";
-            this.changeDiv17.nativeElement.style.fontSize = "15px";
-            this.changeDiv18.nativeElement.style.fontSize = "15px";
-            this.changeDiv19.nativeElement.style.fontSize = "15px";
-            this.changeDiv20.nativeElement.style.fontSize = "15px";
-            this.changeDiv21.nativeElement.style.fontSize = "15px";
-            this.changeDiv22.nativeElement.style.fontSize = "15px";
-            this.changeDiv23.nativeElement.style.fontSize = "15px";
-            this.changeDiv24.nativeElement.style.fontSize = "15px";
-            this.changeDiv25.nativeElement.style.fontSize = "15px";
-            this.changeDiv26.nativeElement.style.fontSize = "15px";
-            this.changeDiv27.nativeElement.style.fontSize = "15px";
-            this.changeDiv28.nativeElement.style.fontSize = "15px";
-            this.changeDiv29.nativeElement.style.fontSize = "15px";
-        } else if (e.value == 2) {
-            this.changeDiv.nativeElement.style.fontSize = "20px";
-            this.changeDiv1.nativeElement.style.fontSize = "20px";
-            this.changeDiv2.nativeElement.style.fontSize = "20px";
-            this.changeDiv3.nativeElement.style.fontSize = "20px";
-            this.changeDiv4.nativeElement.style.fontSize = "20px";
-            this.changeDiv5.nativeElement.style.fontSize = "20px";
-            this.changeDiv6.nativeElement.style.fontSize = "20px";
-            this.changeDiv7.nativeElement.style.fontSize = "20px";
-            this.changeDiv8.nativeElement.style.fontSize = "20px";
-            this.changeDiv9.nativeElement.style.fontSize = "20px";
-            this.changeDiv10.nativeElement.style.fontSize = "20px";
-            this.changeDiv11.nativeElement.style.fontSize = "20px";
-            this.changeDiv12.nativeElement.style.fontSize = "20px";
-            this.changeDiv13.nativeElement.style.fontSize = "20px";
-            this.changeDiv14.nativeElement.style.fontSize = "20px";
-            this.changeDiv15.nativeElement.style.fontSize = "20px";
-            this.changeDiv16.nativeElement.style.fontSize = "20px";
-            this.changeDiv17.nativeElement.style.fontSize = "20px";
-            this.changeDiv18.nativeElement.style.fontSize = "20px";
-            this.changeDiv19.nativeElement.style.fontSize = "20px";
-            this.changeDiv20.nativeElement.style.fontSize = "20px";
-            this.changeDiv21.nativeElement.style.fontSize = "20px";
-            this.changeDiv22.nativeElement.style.fontSize = "20px";
-            this.changeDiv23.nativeElement.style.fontSize = "20px";
-            this.changeDiv24.nativeElement.style.fontSize = "20px";
-            this.changeDiv25.nativeElement.style.fontSize = "20px";
-            this.changeDiv26.nativeElement.style.fontSize = "20px";
-            this.changeDiv27.nativeElement.style.fontSize = "20px";
-            this.changeDiv28.nativeElement.style.fontSize = "20px";
-            this.changeDiv29.nativeElement.style.fontSize = "20px";
-        } else if (e.value == 3) {
-            this.changeDiv.nativeElement.style.fontSize = "22px";
-            this.changeDiv1.nativeElement.style.fontSize = "22px";
-            this.changeDiv2.nativeElement.style.fontSize = "22px";
-            this.changeDiv3.nativeElement.style.fontSize = "22px";
-            this.changeDiv4.nativeElement.style.fontSize = "22px";
-            this.changeDiv5.nativeElement.style.fontSize = "22px";
-            this.changeDiv6.nativeElement.style.fontSize = "22px";
-            this.changeDiv7.nativeElement.style.fontSize = "22px";
-            this.changeDiv8.nativeElement.style.fontSize = "22px";
-            this.changeDiv9.nativeElement.style.fontSize = "22px";
-            this.changeDiv10.nativeElement.style.fontSize = "22px";
-            this.changeDiv11.nativeElement.style.fontSize = "22px";
-            this.changeDiv12.nativeElement.style.fontSize = "22px";
-            this.changeDiv13.nativeElement.style.fontSize = "22px";
-            this.changeDiv14.nativeElement.style.fontSize = "22px";
-            this.changeDiv15.nativeElement.style.fontSize = "22px";
-            this.changeDiv16.nativeElement.style.fontSize = "22px";
-            this.changeDiv17.nativeElement.style.fontSize = "22px";
-            this.changeDiv18.nativeElement.style.fontSize = "22px";
-            this.changeDiv19.nativeElement.style.fontSize = "22px";
-            this.changeDiv20.nativeElement.style.fontSize = "22px";
-            this.changeDiv21.nativeElement.style.fontSize = "22px";
-            this.changeDiv22.nativeElement.style.fontSize = "22px";
-            this.changeDiv23.nativeElement.style.fontSize = "22px";
-            this.changeDiv24.nativeElement.style.fontSize = "22px";
-            this.changeDiv25.nativeElement.style.fontSize = "22px";
-            this.changeDiv26.nativeElement.style.fontSize = "22px";
-            this.changeDiv27.nativeElement.style.fontSize = "22px";
-            this.changeDiv28.nativeElement.style.fontSize = "22px";
-            this.changeDiv29.nativeElement.style.fontSize = "22px";
-        } else if (e.value == 4) {
-            this.changeDiv.nativeElement.style.fontSize = "25px";
-            this.changeDiv1.nativeElement.style.fontSize = "25px";
-            this.changeDiv2.nativeElement.style.fontSize = "25px";
-            this.changeDiv3.nativeElement.style.fontSize = "25px";
-            this.changeDiv4.nativeElement.style.fontSize = "25px";
-            this.changeDiv5.nativeElement.style.fontSize = "25px";
-            this.changeDiv6.nativeElement.style.fontSize = "25px";
-            this.changeDiv7.nativeElement.style.fontSize = "25px";
-            this.changeDiv8.nativeElement.style.fontSize = "25px";
-            this.changeDiv9.nativeElement.style.fontSize = "25px";
-            this.changeDiv10.nativeElement.style.fontSize = "25px";
-            this.changeDiv11.nativeElement.style.fontSize = "25px";
-            this.changeDiv12.nativeElement.style.fontSize = "25px";
-            this.changeDiv13.nativeElement.style.fontSize = "25px";
-            this.changeDiv14.nativeElement.style.fontSize = "25px";
-            this.changeDiv15.nativeElement.style.fontSize = "25px";
-            this.changeDiv16.nativeElement.style.fontSize = "25px";
-            this.changeDiv17.nativeElement.style.fontSize = "25px";
-            this.changeDiv18.nativeElement.style.fontSize = "25px";
-            this.changeDiv19.nativeElement.style.fontSize = "25px";
-            this.changeDiv20.nativeElement.style.fontSize = "25px";
-            this.changeDiv21.nativeElement.style.fontSize = "25px";
-            this.changeDiv22.nativeElement.style.fontSize = "25px";
-            this.changeDiv23.nativeElement.style.fontSize = "25px";
-            this.changeDiv24.nativeElement.style.fontSize = "25px";
-            this.changeDiv25.nativeElement.style.fontSize = "25px";
-            this.changeDiv26.nativeElement.style.fontSize = "25px";
-            this.changeDiv27.nativeElement.style.fontSize = "25px";
-            this.changeDiv28.nativeElement.style.fontSize = "25px";
-            this.changeDiv29.nativeElement.style.fontSize = "25px";
-        } else if (e.value == 5) {
-            this.changeDiv.nativeElement.style.fontSize = "50px";
-            this.changeDiv1.nativeElement.style.fontSize = "50px";
-            this.changeDiv2.nativeElement.style.fontSize = "50px";
-            this.changeDiv3.nativeElement.style.fontSize = "50px";
-            this.changeDiv4.nativeElement.style.fontSize = "50px";
-            this.changeDiv5.nativeElement.style.fontSize = "50px";
-        }
+  }
+  sliderFunction(e) {
+    //
+    this.sliderValue = e.value;
+    if (e.value == 1) {
+      this.changeDiv.nativeElement.style.fontSize = "15px";
+      this.changeDiv1.nativeElement.style.fontSize = "15px";
+      this.changeDiv2.nativeElement.style.fontSize = "15px";
+      this.changeDiv3.nativeElement.style.fontSize = "15px";
+      this.changeDiv4.nativeElement.style.fontSize = "15px";
+      this.changeDiv5.nativeElement.style.fontSize = "15px";
+      this.changeDiv6.nativeElement.style.fontSize = "15px";
+      this.changeDiv7.nativeElement.style.fontSize = "15px";
+      this.changeDiv8.nativeElement.style.fontSize = "15px";
+      this.changeDiv9.nativeElement.style.fontSize = "15px";
+      this.changeDiv10.nativeElement.style.fontSize = "15px";
+      this.changeDiv11.nativeElement.style.fontSize = "15px";
+      this.changeDiv12.nativeElement.style.fontSize = "15px";
+      this.changeDiv13.nativeElement.style.fontSize = "15px";
+      this.changeDiv14.nativeElement.style.fontSize = "15px";
+      this.changeDiv15.nativeElement.style.fontSize = "15px";
+      this.changeDiv16.nativeElement.style.fontSize = "15px";
+      this.changeDiv17.nativeElement.style.fontSize = "15px";
+      this.changeDiv18.nativeElement.style.fontSize = "15px";
+      this.changeDiv19.nativeElement.style.fontSize = "15px";
+      this.changeDiv20.nativeElement.style.fontSize = "15px";
+      this.changeDiv21.nativeElement.style.fontSize = "15px";
+      this.changeDiv22.nativeElement.style.fontSize = "15px";
+      this.changeDiv23.nativeElement.style.fontSize = "15px";
+      this.changeDiv24.nativeElement.style.fontSize = "15px";
+      this.changeDiv25.nativeElement.style.fontSize = "15px";
+      this.changeDiv26.nativeElement.style.fontSize = "15px";
+      this.changeDiv27.nativeElement.style.fontSize = "15px";
+      this.changeDiv28.nativeElement.style.fontSize = "15px";
+      this.changeDiv29.nativeElement.style.fontSize = "15px";
+    } else if (e.value == 2) {
+      this.changeDiv.nativeElement.style.fontSize = "20px";
+      this.changeDiv1.nativeElement.style.fontSize = "20px";
+      this.changeDiv2.nativeElement.style.fontSize = "20px";
+      this.changeDiv3.nativeElement.style.fontSize = "20px";
+      this.changeDiv4.nativeElement.style.fontSize = "20px";
+      this.changeDiv5.nativeElement.style.fontSize = "20px";
+      this.changeDiv6.nativeElement.style.fontSize = "20px";
+      this.changeDiv7.nativeElement.style.fontSize = "20px";
+      this.changeDiv8.nativeElement.style.fontSize = "20px";
+      this.changeDiv9.nativeElement.style.fontSize = "20px";
+      this.changeDiv10.nativeElement.style.fontSize = "20px";
+      this.changeDiv11.nativeElement.style.fontSize = "20px";
+      this.changeDiv12.nativeElement.style.fontSize = "20px";
+      this.changeDiv13.nativeElement.style.fontSize = "20px";
+      this.changeDiv14.nativeElement.style.fontSize = "20px";
+      this.changeDiv15.nativeElement.style.fontSize = "20px";
+      this.changeDiv16.nativeElement.style.fontSize = "20px";
+      this.changeDiv17.nativeElement.style.fontSize = "20px";
+      this.changeDiv18.nativeElement.style.fontSize = "20px";
+      this.changeDiv19.nativeElement.style.fontSize = "20px";
+      this.changeDiv20.nativeElement.style.fontSize = "20px";
+      this.changeDiv21.nativeElement.style.fontSize = "20px";
+      this.changeDiv22.nativeElement.style.fontSize = "20px";
+      this.changeDiv23.nativeElement.style.fontSize = "20px";
+      this.changeDiv24.nativeElement.style.fontSize = "20px";
+      this.changeDiv25.nativeElement.style.fontSize = "20px";
+      this.changeDiv26.nativeElement.style.fontSize = "20px";
+      this.changeDiv27.nativeElement.style.fontSize = "20px";
+      this.changeDiv28.nativeElement.style.fontSize = "20px";
+      this.changeDiv29.nativeElement.style.fontSize = "20px";
+    } else if (e.value == 3) {
+      this.changeDiv.nativeElement.style.fontSize = "22px";
+      this.changeDiv1.nativeElement.style.fontSize = "22px";
+      this.changeDiv2.nativeElement.style.fontSize = "22px";
+      this.changeDiv3.nativeElement.style.fontSize = "22px";
+      this.changeDiv4.nativeElement.style.fontSize = "22px";
+      this.changeDiv5.nativeElement.style.fontSize = "22px";
+      this.changeDiv6.nativeElement.style.fontSize = "22px";
+      this.changeDiv7.nativeElement.style.fontSize = "22px";
+      this.changeDiv8.nativeElement.style.fontSize = "22px";
+      this.changeDiv9.nativeElement.style.fontSize = "22px";
+      this.changeDiv10.nativeElement.style.fontSize = "22px";
+      this.changeDiv11.nativeElement.style.fontSize = "22px";
+      this.changeDiv12.nativeElement.style.fontSize = "22px";
+      this.changeDiv13.nativeElement.style.fontSize = "22px";
+      this.changeDiv14.nativeElement.style.fontSize = "22px";
+      this.changeDiv15.nativeElement.style.fontSize = "22px";
+      this.changeDiv16.nativeElement.style.fontSize = "22px";
+      this.changeDiv17.nativeElement.style.fontSize = "22px";
+      this.changeDiv18.nativeElement.style.fontSize = "22px";
+      this.changeDiv19.nativeElement.style.fontSize = "22px";
+      this.changeDiv20.nativeElement.style.fontSize = "22px";
+      this.changeDiv21.nativeElement.style.fontSize = "22px";
+      this.changeDiv22.nativeElement.style.fontSize = "22px";
+      this.changeDiv23.nativeElement.style.fontSize = "22px";
+      this.changeDiv24.nativeElement.style.fontSize = "22px";
+      this.changeDiv25.nativeElement.style.fontSize = "22px";
+      this.changeDiv26.nativeElement.style.fontSize = "22px";
+      this.changeDiv27.nativeElement.style.fontSize = "22px";
+      this.changeDiv28.nativeElement.style.fontSize = "22px";
+      this.changeDiv29.nativeElement.style.fontSize = "22px";
+    } else if (e.value == 4) {
+      this.changeDiv.nativeElement.style.fontSize = "25px";
+      this.changeDiv1.nativeElement.style.fontSize = "25px";
+      this.changeDiv2.nativeElement.style.fontSize = "25px";
+      this.changeDiv3.nativeElement.style.fontSize = "25px";
+      this.changeDiv4.nativeElement.style.fontSize = "25px";
+      this.changeDiv5.nativeElement.style.fontSize = "25px";
+      this.changeDiv6.nativeElement.style.fontSize = "25px";
+      this.changeDiv7.nativeElement.style.fontSize = "25px";
+      this.changeDiv8.nativeElement.style.fontSize = "25px";
+      this.changeDiv9.nativeElement.style.fontSize = "25px";
+      this.changeDiv10.nativeElement.style.fontSize = "25px";
+      this.changeDiv11.nativeElement.style.fontSize = "25px";
+      this.changeDiv12.nativeElement.style.fontSize = "25px";
+      this.changeDiv13.nativeElement.style.fontSize = "25px";
+      this.changeDiv14.nativeElement.style.fontSize = "25px";
+      this.changeDiv15.nativeElement.style.fontSize = "25px";
+      this.changeDiv16.nativeElement.style.fontSize = "25px";
+      this.changeDiv17.nativeElement.style.fontSize = "25px";
+      this.changeDiv18.nativeElement.style.fontSize = "25px";
+      this.changeDiv19.nativeElement.style.fontSize = "25px";
+      this.changeDiv20.nativeElement.style.fontSize = "25px";
+      this.changeDiv21.nativeElement.style.fontSize = "25px";
+      this.changeDiv22.nativeElement.style.fontSize = "25px";
+      this.changeDiv23.nativeElement.style.fontSize = "25px";
+      this.changeDiv24.nativeElement.style.fontSize = "25px";
+      this.changeDiv25.nativeElement.style.fontSize = "25px";
+      this.changeDiv26.nativeElement.style.fontSize = "25px";
+      this.changeDiv27.nativeElement.style.fontSize = "25px";
+      this.changeDiv28.nativeElement.style.fontSize = "25px";
+      this.changeDiv29.nativeElement.style.fontSize = "25px";
+    } else if (e.value == 5) {
+      this.changeDiv.nativeElement.style.fontSize = "50px";
+      this.changeDiv1.nativeElement.style.fontSize = "50px";
+      this.changeDiv2.nativeElement.style.fontSize = "50px";
+      this.changeDiv3.nativeElement.style.fontSize = "50px";
+      this.changeDiv4.nativeElement.style.fontSize = "50px";
+      this.changeDiv5.nativeElement.style.fontSize = "50px";
     }
-    constructor(
-        private fb: FormBuilder,
-        private apiService: CPCQService,
-        private router: Router,
-        private formService: FirstForm,
-        private domSanitizer: DomSanitizer,
-        public dialog: MatDialog
-    ) {}
-    openDialog(i, j, id) {
+  }
+  constructor(
+    private fb: FormBuilder,
+    private apiService: CPCQService,
+    private router: Router,
+    private formService: FirstForm,
+    private domSanitizer: DomSanitizer,
+    public dialog: MatDialog
+  ) {}
+  openDialog(i, j, id) {
+    //
+
+    var arr = [];
+    arr.push(this.attributes[i]);
+    arr.push(j);
+    arr.push(this.columnHeadings[j]);
+    arr.push(id);
+    const dialogRef = this.dialog.open(DialogFormComponent, {
+      data: {
+        animal: arr,
+        status: "form",
+      },
+      disableClose: true,
+    });
+    dialogRef.afterClosed().subscribe((result) => {
+      if (this.responsesArray[i][j][1] == "colorbold") {
+        this.unpackedCount = this.unpackedCount + 1;
+      }
+    });
+  }
+
+  openWordDialog(i) {
+    //
+    this.buttonClick = true;
+    const dialogRef = this.dialog.open(DialogFormComponent, {
+      data: {
+        animal: i,
+        status: "word",
+      },
+      disableClose: true,
+    });
+
+    dialogRef.afterClosed().subscribe((result) => {
+      this.wordDescription = result;
+    });
+  }
+
+  helpDialog(i) {
+    //
+    this.dialog.open(DialogFormComponent, {
+      data: {
+        animal: i,
+        status: "help",
+      },
+    });
+  }
+
+  keyPressFunc(e) {
+    //
+    var numbersList = ["1"];
+    for (let key in this.attitudeForm.value) {
+      if (numbersList.indexOf(this.attitudeForm.value[key]) == -1) {
         //
+        return "Number";
+      }
+    }
+  }
+
+  getEmailError() {
+    return "Error";
+  }
+  responsesArray = [];
+  temp = [];
+  getResponses() {
+    this.apiService.getResponsesData().subscribe((res) => {
+      for (let key in res) {
+        this.temp = [];
+        for (let key1 in res[key]) {
+          this.temp.push(res[key][key1]);
+        }
+        this.responsesArray.push(this.temp);
+      }
+    });
+  }
+
+  getForm() {
+    var arr = [];
+    var arr1 = [];
+    var arr2 = [];
+    var i;
+    var attitudeResult = [];
+    var empathyResult = [];
+    var policyResult = [];
+    var profResult = [];
+    var teachingResult = [];
+    this.finalList = [[]];
+    this.boldList = [[]];
+    this.apiService.getFormData().subscribe((res) => {
+      for (let key in res) {
+        arr = [];
+        if (res[key]["topic"] == "Attitude") {
+          attitudeResult.push("Attitude");
+          arr.push("Attitude");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+        } else if (res[key]["topic"] == "Empathy") {
+          empathyResult.push("Empathy");
+          arr.push("Empathy");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+        } else if (res[key]["topic"] == "Policy") {
+          policyResult.push("Policy");
+          arr.push("Policy");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+
+          policyResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+        } else if (res[key]["topic"] == "Professionalism") {
+          profResult.push("Professionalism");
+          arr.push("Professionalism");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+
+          profResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+        } else if (res[key]["topic"] == "Teaching Practice") {
+          arr.push("Teaching Pracice");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+          teachingResult.push("Teaching Practice");
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+        }
 
-        var arr = [];
-        arr.push(this.attributes[i]);
-        arr.push(j);
-        arr.push(this.columnHeadings[j]);
-        arr.push(id);
-        const dialogRef = this.dialog.open(DialogFormComponent, {
-            data: {
-                animal: arr,
-                status: "form",
-            },
-            disableClose: true,
-        });
-        dialogRef.afterClosed().subscribe((result) => {
-            if (this.responsesArray[i][j][1] == "colorbold") {
-                this.unpackedCount = this.unpackedCount + 1;
+        this.boldList.push(arr);
+      }
+      this.finalList.push(attitudeResult);
+      this.finalList.push(empathyResult);
+      this.finalList.push(policyResult);
+      this.finalList.push(profResult);
+      this.finalList.push(teachingResult);
+    });
+    this.finalList.splice(0, 1);
+    this.boldList.splice(0, 1);
+    // this.getAllIndexes(this.finalList,1)
+  }
+
+  emoji: any;
+  changeEmojiSize(data) {
+    document.getElementById("angry").style.height = "30px";
+    document.getElementById("angry").style.width = "30px";
+    document.getElementById("sad").style.height = "30px";
+    document.getElementById("sad").style.width = "30px";
+    document.getElementById("neutral").style.height = "30px";
+    document.getElementById("neutral").style.width = "30px";
+    document.getElementById("smile").style.height = "30px";
+    document.getElementById("smile").style.width = "30px";
+    document.getElementById("heart").style.height = "30px";
+    document.getElementById("heart").style.width = "30px";
+    document.getElementById(data).style.height = "50px";
+    document.getElementById(data).style.width = "50px";
+
+    this.emoji = data;
+  }
+
+  thumbs: any;
+  changeThumbsSize(data) {
+    document.getElementById("thumbsup").style.height = "30px";
+    document.getElementById("thumbsup").style.width = "30px";
+    document.getElementById("thumbsdown").style.height = "30px";
+    document.getElementById("thumbsdown").style.width = "30px";
+
+    document.getElementById(data).style.height = "50px";
+    document.getElementById(data).style.width = "50px";
+    this.thumbs = data;
+  }
+  finalSubmit() {
+    this.finalFeedbackForm.value["q6"] = this.thumbs;
+    this.finalFeedbackForm.value["q7"] = this.emoji;
+
+    this.endTime = new Date();
+
+    this.durationTime = (this.endTime - this.startTime) / 1000;
+    this.durationTime = this.durationTime / 60;
+
+    this.apiService.patchStatus("finalfeedbackstatus").subscribe((res) => {});
+
+    this.apiService.postFeedbackForm(this.finalFeedbackForm.value).subscribe(
+      (res) => {
+        this.apiService.changeCPCQStatus().subscribe((res1) => {
+          Swal.fire({
+            text: "Submitted",
+            icon: "success",
+          }).then((res) => {
+            if (res["isConfirmed"]) {
+              this.router.navigateByUrl("/result");
             }
+          });
         });
-    }
-
-    openWordDialog(i) {
+      },
+      (err) => {}
+    );
+  }
+  ngOnInit(): void {
+    this.startTime = new Date();
+    this.finalFeedbackForm = this.fb.group({
+      q1: [""],
+      q2: [""],
+      q3: [""],
+      q4: [""],
+      q5: [""],
+      q6: [""],
+      q7: [""],
+    });
+
+    this.apiService.attitudeData().subscribe(
+      (res) => {
         //
-        this.buttonClick = true;
-        const dialogRef = this.dialog.open(DialogFormComponent, {
-            data: {
-                animal: i,
-                status: "word",
-            },
-            disableClose: true,
-        });
-
-        dialogRef.afterClosed().subscribe((result) => {
-            this.wordDescription = result;
-        });
-    }
-
-    helpDialog(i) {
+        this.attitude = res[0];
         //
-        this.dialog.open(DialogFormComponent, {
-            data: {
-                animal: i,
-                status: "help",
-            },
-        });
-    }
+      },
+      (err) => {}
+    );
 
-    keyPressFunc(e) {
+    this.apiService.empathyData().subscribe(
+      (res) => {
         //
-        var numbersList = ["1"];
-        for (let key in this.attitudeForm.value) {
-            if (numbersList.indexOf(this.attitudeForm.value[key]) == -1) {
-                //
-                return "Number";
+        this.empathy = res[0];
+        //
+      },
+      (err) => {}
+    );
+
+    this.apiService.policyData().subscribe(
+      (res) => {
+        this.policy = res[0];
+      },
+      (err) => {}
+    );
+
+    this.apiService.professionalismData().subscribe(
+      (res) => {
+        this.professionalism = res[0];
+      },
+      (err) => {}
+    );
+
+    this.apiService.teachingData().subscribe(
+      (res) => {
+        this.teachingPractice = res[0];
+      },
+      (err) => {}
+    );
+
+    this.attitudeForm = this.fb.group({
+      A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      description: ["", [Validators.required]],
+    });
+
+    this.empathyForm = this.fb.group({
+      A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+    });
+
+    this.policyForm = this.fb.group({
+      A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+    });
+
+    var arr = [];
+    var arr1 = [];
+    var arr2 = [];
+    var i;
+    for (var j = 0; j < 5; j++) {
+      arr = [];
+      arr1 = [];
+      arr2 = [];
+      i = 0;
+      while (i < 6) {
+        var item1 = Math.floor(Math.random() * (7 - 1) + 1);
+        if (arr1.indexOf(item1) == -1) {
+          if (i == 0) {
+            arr.push(this.attributes[j]);
+            arr.push(this.rowLetters[j][i] + ". " + item1);
+            arr1.push(item1);
+            if (arr1[arr1.length - 1] > 2) {
+              //
+              arr2.push("True");
+            } else {
+              arr2.push("False");
             }
+          } else {
+            arr.push(this.rowLetters[j][i] + ". " + item1);
+            arr1.push(item1);
+            if (i == 1) {
+              if (arr1[arr1.length - 1] > 3) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
+            } else if (i == 2) {
+              if (arr1[arr1.length - 1] > 4 || arr1[arr1.length - 1] == 1) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
+            } else if (i == 3) {
+              if (arr1[arr1.length - 1] > 5 || arr1[arr1.length - 1] < 4) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
+            } else if (i == 4) {
+              if (arr1[arr1.length - 1] < 4) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
+            } else if (i == 5) {
+              if (arr1[arr1.length - 1] < 5) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
+            }
+          }
+          i = i + 1;
+        } else {
+          continue;
         }
+      }
+      this.formValues.push(arr);
+      this.boldList.push(arr1);
+      this.randomList.push(arr2);
     }
-
-    getEmailError() {
-        return "Error";
-    }
-    responsesArray = [];
-    temp = [];
-    getResponses() {
-        this.apiService.getResponsesData().subscribe((res) => {
-            for (let key in res) {
-                this.temp = [];
-                for (let key1 in res[key]) {
-                    this.temp.push(res[key][key1]);
-                }
-                this.responsesArray.push(this.temp);
-            }
-        });
+    this.boldList.splice(0, 1);
+    this.randomList.splice(0, 1);
+
+    this.getAllIndexes(this.randomList, "True");
+    this.loaded = true;
+  }
+
+  getAllIndexes(arr, val) {
+    var indexes = [];
+    var i = -1;
+    for (var i = 0; i < arr.length; i++) {
+      for (var j = 0; j < arr[i].length; j++) {
+        if (arr[i][j] == "True") {
+          var arr1 = [];
+          arr1.push(i);
+          arr1.push(j);
+          indexes.push(arr1);
+        }
+      }
     }
 
-    getForm() {
-        var arr = [];
-        var arr1 = [];
-        var arr2 = [];
-        var i;
-        var attitudeResult = [];
-        var empathyResult = [];
-        var policyResult = [];
-        var profResult = [];
-        var teachingResult = [];
-        this.finalList = [[]];
-        this.boldList = [[]];
-        this.apiService.getFormData().subscribe((res) => {
-            for (let key in res) {
-                arr = [];
-                if (res[key]["topic"] == "Attitude") {
-                    attitudeResult.push("Attitude");
-                    arr.push("Attitude");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
-                    );
-                } else if (res[key]["topic"] == "Empathy") {
-                    empathyResult.push("Empathy");
-                    arr.push("Empathy");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
-                    );
-                } else if (res[key]["topic"] == "Policy") {
-                    policyResult.push("Policy");
-                    arr.push("Policy");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
-                    );
-                    policyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
-                    );
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
-                    );
-                } else if (res[key]["topic"] == "Professionalism") {
-                    profResult.push("Professionalism");
-                    arr.push("Professionalism");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-
-                    profResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    profResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
-                    profResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
-                    profResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    profResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
-                    profResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
-                } else if (res[key]["topic"] == "Teaching Practice") {
-                    arr.push("Teaching Pracice");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-                    teachingResult.push("Teaching Practice");
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
-                    );
-                }
-
-                this.boldList.push(arr);
-            }
-            this.finalList.push(attitudeResult);
-            this.finalList.push(empathyResult);
-            this.finalList.push(policyResult);
-            this.finalList.push(profResult);
-            this.finalList.push(teachingResult);
-        });
-        this.finalList.splice(0, 1);
-        this.boldList.splice(0, 1);
-        // this.getAllIndexes(this.finalList,1)
+    var arr1 = [];
+    for (var i = 0; i < indexes.length; i++) {
+      arr1.push(i);
     }
-
-    emoji: any;
-    changeEmojiSize(data) {
-        document.getElementById("angry").style.height = "30px";
-        document.getElementById("angry").style.width = "30px";
-        document.getElementById("sad").style.height = "30px";
-        document.getElementById("sad").style.width = "30px";
-        document.getElementById("neutral").style.height = "30px";
-        document.getElementById("neutral").style.width = "30px";
-        document.getElementById("smile").style.height = "30px";
-        document.getElementById("smile").style.width = "30px";
-        document.getElementById("heart").style.height = "30px";
-        document.getElementById("heart").style.width = "30px";
-        document.getElementById(data).style.height = "50px";
-        document.getElementById(data).style.width = "50px";
-
-        this.emoji = data;
+    var ranNums = [];
+    var i = arr1.length;
+    var j = 0;
+    var count = 0;
+    while (i--) {
+      if (count < 5) {
+        j = Math.floor(Math.random() * (i + 1));
+        ranNums.push(arr1[j]);
+        arr1.splice(j, 1);
+        count = count + 1;
+      } else {
+        break;
+      }
     }
 
-    thumbs: any;
-    changeThumbsSize(data) {
-        document.getElementById("thumbsup").style.height = "30px";
-        document.getElementById("thumbsup").style.width = "30px";
-        document.getElementById("thumbsdown").style.height = "30px";
-        document.getElementById("thumbsdown").style.width = "30px";
-
-        document.getElementById(data).style.height = "50px";
-        document.getElementById(data).style.width = "50px";
-        this.thumbs = data;
+    //
+    for (var i = 0; i < this.boldList.length; i++) {
+      var temp = [];
+      for (var j = 0; j < 6; j++) {
+        temp.push("False");
+      }
+      this.finalList1.push(temp);
     }
-    finalSubmit() {
-        this.finalFeedbackForm.value["q6"] = this.thumbs;
-        this.finalFeedbackForm.value["q7"] = this.emoji;
 
-        this.endTime = new Date();
-
-        this.durationTime = (this.endTime - this.startTime) / 1000;
-        this.durationTime = this.durationTime / 60;
+    for (var i = 0; i < ranNums.length; i++) {
+      var item = indexes[ranNums[i]];
 
-        this.apiService.patchStatus("finalfeedbackstatus").subscribe((res) => {});
-
-        this.apiService.postFeedbackForm(this.finalFeedbackForm.value).subscribe(
-            (res) => {
-                this.apiService.changeCPCQStatus().subscribe((res1) => {
-                    Swal.fire({
-                        text: "Submitted",
-                        icon: "success",
-                    }).then((res) => {
-                        if (res["isConfirmed"]) {
-                            this.router.navigateByUrl("/result");
-                        }
-                    });
-                });
-            },
-            (err) => {}
-        );
+      this.finalList1[item[0]][item[1]] = "True";
     }
-    ngOnInit(): void {
-        this.startTime = new Date();
-        this.finalFeedbackForm = this.fb.group({
-            q1: [""],
-            q2: [""],
-            q3: [""],
-            q4: [""],
-            q5: [""],
-            q6: [""],
-            q7: [""],
-        });
-
-        this.apiService.attitudeData().subscribe(
-            (res) => {
-                //
-                this.attitude = res[0];
-                //
-            },
-            (err) => {}
-        );
-
-        this.apiService.empathyData().subscribe(
-            (res) => {
-                //
-                this.empathy = res[0];
-                //
-            },
-            (err) => {}
-        );
-
-        this.apiService.policyData().subscribe(
-            (res) => {
-                this.policy = res[0];
-            },
-            (err) => {}
-        );
-
-        this.apiService.professionalismData().subscribe(
-            (res) => {
-                this.professionalism = res[0];
-            },
-            (err) => {}
-        );
-
-        this.apiService.teachingData().subscribe(
-            (res) => {
-                this.teachingPractice = res[0];
-            },
-            (err) => {}
-        );
-
-        this.attitudeForm = this.fb.group({
-            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            description: ["", [Validators.required]],
-        });
-
-        this.empathyForm = this.fb.group({
-            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-        });
-
-        this.policyForm = this.fb.group({
-            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-        });
-
-        var arr = [];
-        var arr1 = [];
-        var arr2 = [];
-        var i;
-        for (var j = 0; j < 5; j++) {
-            arr = [];
-            arr1 = [];
-            arr2 = [];
-            i = 0;
-            while (i < 6) {
-                var item1 = Math.floor(Math.random() * (7 - 1) + 1);
-                if (arr1.indexOf(item1) == -1) {
-                    if (i == 0) {
-                        arr.push(this.attributes[j]);
-                        arr.push(this.rowLetters[j][i] + ". " + item1);
-                        arr1.push(item1);
-                        if (arr1[arr1.length - 1] > 2) {
-                            //
-                            arr2.push("True");
-                        } else {
-                            arr2.push("False");
-                        }
-                    } else {
-                        arr.push(this.rowLetters[j][i] + ". " + item1);
-                        arr1.push(item1);
-                        if (i == 1) {
-                            if (arr1[arr1.length - 1] > 3) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        } else if (i == 2) {
-                            if (arr1[arr1.length - 1] > 4 || arr1[arr1.length - 1] == 1) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        } else if (i == 3) {
-                            if (arr1[arr1.length - 1] > 5 || arr1[arr1.length - 1] < 4) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        } else if (i == 4) {
-                            if (arr1[arr1.length - 1] < 4) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        } else if (i == 5) {
-                            if (arr1[arr1.length - 1] < 5) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        }
-                    }
-                    i = i + 1;
-                } else {
-                    continue;
-                }
-            }
-            this.formValues.push(arr);
-            this.boldList.push(arr1);
-            this.randomList.push(arr2);
-        }
-        this.boldList.splice(0, 1);
-        this.randomList.splice(0, 1);
-
-        this.getAllIndexes(this.randomList, "True");
-        this.loaded = true;
+    // this.finalList1.splice(0,1)
+  }
+  preSurvey() {
+    this.router.navigateByUrl("/preSurvey");
+  }
+
+  nextButton() {
+    if (this.selectedIndex == 0) {
+      this.selectedIndex = this.selectedIndex + 1;
+      return;
+    }
+    if (this.selectedIndex == 7) {
+      this.router.navigateByUrl("/dashboard");
+      return;
     }
 
-    getAllIndexes(arr, val) {
-        var indexes = [];
-        var i = -1;
-        for (var i = 0; i < arr.length; i++) {
-            for (var j = 0; j < arr[i].length; j++) {
-                if (arr[i][j] == "True") {
-                    var arr1 = [];
-                    arr1.push(i);
-                    arr1.push(j);
-                    indexes.push(arr1);
-                }
-            }
-        }
-
-        var arr1 = [];
-        for (var i = 0; i < indexes.length; i++) {
-            arr1.push(i);
-        }
-        var ranNums = [];
-        var i = arr1.length;
-        var j = 0;
-        var count = 0;
-        while (i--) {
-            if (count < 5) {
-                j = Math.floor(Math.random() * (i + 1));
-                ranNums.push(arr1[j]);
-                arr1.splice(j, 1);
-                count = count + 1;
-            } else {
-                break;
-            }
-        }
-
-        //
-        for (var i = 0; i < this.boldList.length; i++) {
-            var temp = [];
-            for (var j = 0; j < 6; j++) {
-                temp.push("False");
-            }
-            this.finalList1.push(temp);
-        }
-
-        for (var i = 0; i < ranNums.length; i++) {
-            var item = indexes[ranNums[i]];
-
-            this.finalList1[item[0]][item[1]] = "True";
-        }
-        // this.finalList1.splice(0,1)
+    var numberList = [];
+    var flag = true;
+    for (let key in this.attitudeForm.value) {
+      if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
+        flag = false;
+        Swal.fire({
+          text: "Please enter values from 1 through 6 only.",
+          icon: "warning",
+        }).then((res) => {});
+        break;
+      }
+      if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
+        numberList.push(this.attitudeForm.value[key]);
+      } else {
+        flag = false;
+        Swal.fire({
+          text: "The inputs have been repeated. Please enter values from 1 through 6.",
+          icon: "warning",
+        }).then((res) => {});
+        break;
+      }
     }
-    preSurvey() {
-        this.router.navigateByUrl("/preSurvey");
+    if (!this.buttonClick) {
+      flag = false;
+      Swal.fire({
+        text: "Click on the word '" + this.attributes[this.selectedIndex - 1] + "' and respond to the prompt.",
+        icon: "warning",
+      }).then((res) => {});
     }
-
-    nextButton() {
-        if (this.selectedIndex == 0) {
+    if (flag) {
+      if (this.selectedIndex == 7) {
+        this.router.navigateByUrl("/postSurvey");
+      }
+      this.sliderFunction1();
+      var formData = {};
+      formData["topic"] = this.attributes[this.selectedIndex - 1];
+      if (this.attributes[this.selectedIndex - 1] == "Attitude") {
+        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalCompetence"] = "F. " + this.attitudeForm.value["F"];
+        formData["culturalProficiency"] = "E. " + this.attitudeForm.value["E"];
+      } else if (this.attributes[this.selectedIndex - 1] == "Empathy") {
+        formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalBlindness"] = "F. " + this.attitudeForm.value["F"];
+        formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalCompetence"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalProficiency"] = "C. " + this.attitudeForm.value["C"];
+      } else if (this.attributes[this.selectedIndex - 1] == "Policy") {
+        formData["culturalDestructiveness"] = "F. " + this.attitudeForm.value["F"];
+        formData["culturalIncapacity"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalCompetence"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalProficiency"] = "A. " + this.attitudeForm.value["A"];
+      } else if (this.attributes[this.selectedIndex - 1] == "Professionalism") {
+        formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalCompetence"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+      } else if (this.attributes[this.selectedIndex - 1] == "Teaching Practice") {
+        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+      }
+
+      this.endTime = new Date();
+
+      this.durationTime = (this.endTime - this.startTime) / 1000;
+      this.durationTime = this.durationTime / 60;
+
+      formData["description"] = this.wordDescription;
+      formData["duration"] = this.durationTime;
+      this.apiService.postFormData(formData).subscribe(
+        (res) => {
+          //
+        },
+        (err) => {}
+      );
+      // this.getForm();
+      this.selectedIndex = this.selectedIndex + 1;
+      this.buttonClick = false;
+      this.startTime = new Date();
+      this.attitudeForm = this.fb.group({
+        A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      });
+    }
+  }
+
+  postSurvey() {
+    this.router.navigateByUrl("/postSurvey");
+  }
+
+  submitForm1() {
+    if (this.unpackedCount >= 5) {
+      this.endTime = new Date();
+
+      this.durationTime = (this.endTime - this.startTime) / 1000;
+      this.durationTime = this.durationTime / 60;
+      this.apiService.patchStatus("cpcqstatus").subscribe((res) => {
+        Swal.fire({
+          text: "Submitted",
+          icon: "success",
+        }).then((res) => {
+          if (res["isConfirmed"]) {
+            // this.getForm()
             this.selectedIndex = this.selectedIndex + 1;
-            return;
-        }
-        if (this.selectedIndex == 7) {
-            this.router.navigateByUrl("/dashboard");
-            return;
-        }
-
-        var numberList = [];
-        var flag = true;
-        for (let key in this.attitudeForm.value) {
-            if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
-                flag = false;
-                Swal.fire({
-                    text: "Please enter values from 1 through 6 only.",
-                    icon: "warning",
-                }).then((res) => {});
-                break;
-            }
-            if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
-                numberList.push(this.attitudeForm.value[key]);
-            } else {
-                flag = false;
-                Swal.fire({
-                    text: "The inputs have been repeated. Please enter values from 1 through 6.",
-                    icon: "warning",
-                }).then((res) => {});
-                break;
-            }
+          }
+        });
+      });
+    } else {
+      Swal.fire({
+        text: "Please click on all the yellow boxes and answer the questions in the prompt.",
+        icon: "warning",
+      }).then((res) => {});
+    }
+  }
+
+  submitForm() {
+    if (this.selectedIndex == 5) {
+      var numberList = [];
+      var flag = false;
+
+      for (let key in this.attitudeForm.value) {
+        if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
+          flag = true;
+          Swal.fire({
+            text: "Please enter values from 1 through 6 only.",
+            icon: "warning",
+          }).then((res) => {});
+          break;
         }
-        if (!this.buttonClick) {
-            flag = false;
-            Swal.fire({
-                text: "Click on the word '" + this.attributes[this.selectedIndex - 1] + "' and respond to the prompt.",
-                icon: "warning",
-            }).then((res) => {});
+        if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
+          numberList.push(this.attitudeForm.value[key]);
+        } else {
+          flag = true;
+          Swal.fire({
+            text: "The inputs have been repeated. Please enter values from 1 through 6.",
+            icon: "warning",
+          }).then((res) => {});
+          break;
         }
-        if (flag) {
-            if (this.selectedIndex == 7) {
-                this.router.navigateByUrl("/postSurvey");
-            }
-            this.sliderFunction1();
-            var formData = {};
-            formData["topic"] = this.attributes[this.selectedIndex - 1];
-            if (this.attributes[this.selectedIndex - 1] == "Attitude") {
-                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalCompetence"] = "F. " + this.attitudeForm.value["F"];
-                formData["culturalProficiency"] = "E. " + this.attitudeForm.value["E"];
-            } else if (this.attributes[this.selectedIndex - 1] == "Empathy") {
-                formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalBlindness"] = "F. " + this.attitudeForm.value["F"];
-                formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalCompetence"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalProficiency"] = "C. " + this.attitudeForm.value["C"];
-            } else if (this.attributes[this.selectedIndex - 1] == "Policy") {
-                formData["culturalDestructiveness"] = "F. " + this.attitudeForm.value["F"];
-                formData["culturalIncapacity"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalCompetence"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalProficiency"] = "A. " + this.attitudeForm.value["A"];
-            } else if (this.attributes[this.selectedIndex - 1] == "Professionalism") {
-                formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalCompetence"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
-            } else if (this.attributes[this.selectedIndex - 1] == "Teaching Practice") {
-                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
-            }
-
-            this.endTime = new Date();
-
-            this.durationTime = (this.endTime - this.startTime) / 1000;
-            this.durationTime = this.durationTime / 60;
+      }
+      if (!this.buttonClick) {
+        flag = true;
+        Swal.fire({
+          text: "Click on the word '" + this.attributes[this.selectedIndex - 1] + "' and respond to the prompt.",
+          icon: "warning",
+        }).then((res) => {});
+      }
+      if (!flag) {
+        //
+        var formData = {};
 
-            formData["description"] = this.wordDescription;
-            formData["duration"] = this.durationTime;
-            this.apiService.postFormData(formData).subscribe(
-                (res) => {
-                    //
-                },
-                (err) => {}
-            );
-            // this.getForm();
-            this.selectedIndex = this.selectedIndex + 1;
-            this.buttonClick = false;
-            this.startTime = new Date();
-            this.attitudeForm = this.fb.group({
-                A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            });
-        }
-    }
+        formData["topic"] = this.attributes[this.selectedIndex - 1];
+        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
 
-    postSurvey() {
-        this.router.navigateByUrl("/postSurvey");
-    }
+        formData["description"] = this.wordDescription;
+        this.endTime = new Date();
 
-    submitForm1() {
-        if (this.unpackedCount >= 5) {
-            this.endTime = new Date();
-
-            this.durationTime = (this.endTime - this.startTime) / 1000;
-            this.durationTime = this.durationTime / 60;
-            this.apiService.patchStatus("cpcqstatus").subscribe((res) => {
-                Swal.fire({
-                    text: "Submitted",
-                    icon: "success",
-                }).then((res) => {
-                    if (res["isConfirmed"]) {
-                        // this.getForm()
-                        this.selectedIndex = this.selectedIndex + 1;
-                    }
-                });
-            });
-        } else {
-            Swal.fire({
-                text: "Please click on all the yellow boxes and answer the questions in the prompt.",
-                icon: "warning",
-            }).then((res) => {});
-        }
-    }
+        this.durationTime = (this.endTime - this.startTime) / 1000;
+        this.durationTime = this.durationTime / 60;
 
-    submitForm() {
-        if (this.selectedIndex == 5) {
-            var numberList = [];
-            var flag = false;
-
-            for (let key in this.attitudeForm.value) {
-                if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
-                    flag = true;
-                    Swal.fire({
-                        text: "Please enter values from 1 through 6 only.",
-                        icon: "warning",
-                    }).then((res) => {});
-                    break;
-                }
-                if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
-                    numberList.push(this.attitudeForm.value[key]);
-                } else {
-                    flag = true;
-                    Swal.fire({
-                        text: "The inputs have been repeated. Please enter values from 1 through 6.",
-                        icon: "warning",
-                    }).then((res) => {});
-                    break;
+        formData["duration"] = this.durationTime;
+        this.apiService.postFormData(formData).subscribe(
+          (res) => {
+            //
+            this.apiService.patchStatus("responsesstatus").subscribe((res) => {
+              Swal.fire({
+                text: "Submitted",
+                icon: "success",
+              }).then((res) => {
+                if (res["isConfirmed"]) {
+                  // this.getForm()
+                  // this.getResponses()
+                  this.router.navigateByUrl("/unpacking");
+
+                  // this.selectedIndex = this.selectedIndex + 1;
+                  this.startTime = new Date();
                 }
-            }
-            if (!this.buttonClick) {
-                flag = true;
-                Swal.fire({
-                    text:
-                        "Click on the word '" +
-                        this.attributes[this.selectedIndex - 1] +
-                        "' and respond to the prompt.",
-                    icon: "warning",
-                }).then((res) => {});
-            }
-            if (!flag) {
-                //
-                var formData = {};
-
-                formData["topic"] = this.attributes[this.selectedIndex - 1];
-                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
-
-                formData["description"] = this.wordDescription;
-                this.endTime = new Date();
-
-                this.durationTime = (this.endTime - this.startTime) / 1000;
-                this.durationTime = this.durationTime / 60;
-
-                formData["duration"] = this.durationTime;
-                this.apiService.postFormData(formData).subscribe(
-                    (res) => {
-                        //
-                        this.apiService.patchStatus("responsesstatus").subscribe((res) => {
-                            Swal.fire({
-                                text: "Submitted",
-                                icon: "success",
-                            }).then((res) => {
-                                if (res["isConfirmed"]) {
-                                    // this.getForm()
-                                    // this.getResponses()
-                                    this.router.navigateByUrl("/unpacking");
-
-                                    // this.selectedIndex = this.selectedIndex + 1;
-                                    this.startTime = new Date();
-                                }
-                            });
-                        });
-                    },
-                    (err) => {}
-                );
-            }
-        }
-    }
-
-    submit() {
-        //
-        var tempDict;
-        this.responseList = [];
-        for (let key in this.firstForm.value) {
-            tempDict = {};
-            tempDict["question"] = key;
-            tempDict["response"] = this.firstForm.value[key];
-            this.responseList.push(tempDict);
-        }
-        //
-
-        this.formService.submitResponse(this.responseList).subscribe(
-            (res) => {
-                //
-                Swal.fire({
-                    text: "Submitted",
-                    icon: "success",
-                });
-                this.router.navigateByUrl("/game");
-            },
-            (err) => {
-                Swal.fire({
-                    text: "Duplicate Entries",
-                    icon: "warning",
-                });
-            }
+              });
+            });
+          },
+          (err) => {}
         );
+      }
     }
-
-    title = "micRecorder";
-    //Lets declare Record OBJ
-    record;
-    //Will use this flag for toggeling recording
-    recording = false;
-    //URL of Blob
-    url;
-    error;
-    sanitize(url: string) {
-        return this.domSanitizer.bypassSecurityTrustUrl(url);
-    }
-    /**
-     * Start recording.
-     */
-    initiateRecording() {
-        this.recording = true;
-        let mediaConstraints = {
-            video: false,
-            audio: true,
-        };
-        navigator.mediaDevices
-            .getUserMedia(mediaConstraints)
-            .then(this.successCallback.bind(this), this.errorCallback.bind(this));
+  }
+
+  submit() {
+    //
+    var tempDict;
+    this.responseList = [];
+    for (let key in this.firstForm.value) {
+      tempDict = {};
+      tempDict["question"] = key;
+      tempDict["response"] = this.firstForm.value[key];
+      this.responseList.push(tempDict);
     }
-    /**
-     * Will be called automatically.
-     */
-    successCallback(stream) {
-        var options = {
-            mimeType: "audio/wav",
-            numberOfAudioChannels: 1,
-            // sampleRate: 16000,
-        };
-        //Start Actuall Recording
-        var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
-        this.record = new StereoAudioRecorder(stream, options);
-        this.record.record();
-    }
-    /**
-     * Stop recording.
-     */
-    stopRecording() {
-        this.recording = false;
-        this.record.stop(this.processRecording.bind(this));
-    }
-    /**
-     * processRecording Do what ever you want with blob
-     * @param  {any} blob Blog
-     */
-    processRecording(blob) {
-        this.url = URL.createObjectURL(blob);
-        //
+    //
+
+    this.formService.submitResponse(this.responseList).subscribe(
+      (res) => {
         //
-    }
-    /**
-     * Process Error.
-     */
-    errorCallback(error) {
-        this.error = "Can not play audio in your browser";
-    }
+        Swal.fire({
+          text: "Submitted",
+          icon: "success",
+        });
+        this.router.navigateByUrl("/game");
+      },
+      (err) => {
+        Swal.fire({
+          text: "Duplicate Entries",
+          icon: "warning",
+        });
+      }
+    );
+  }
+
+  title = "micRecorder";
+  //Lets declare Record OBJ
+  record;
+  //Will use this flag for toggeling recording
+  recording = false;
+  //URL of Blob
+  url;
+  error;
+  sanitize(url: string) {
+    return this.domSanitizer.bypassSecurityTrustUrl(url);
+  }
+  /**
+   * Start recording.
+   */
+  initiateRecording() {
+    this.recording = true;
+    let mediaConstraints = {
+      video: false,
+      audio: true,
+    };
+    navigator.mediaDevices
+      .getUserMedia(mediaConstraints)
+      .then(this.successCallback.bind(this), this.errorCallback.bind(this));
+  }
+  /**
+   * Will be called automatically.
+   */
+  successCallback(stream) {
+    var options = {
+      mimeType: "audio/wav",
+      numberOfAudioChannels: 1,
+      // sampleRate: 16000,
+    };
+    //Start Actuall Recording
+    var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
+    this.record = new StereoAudioRecorder(stream, options);
+    this.record.record();
+  }
+  /**
+   * Stop recording.
+   */
+  stopRecording() {
+    this.recording = false;
+    this.record.stop(this.processRecording.bind(this));
+  }
+  /**
+   * processRecording Do what ever you want with blob
+   * @param  {any} blob Blog
+   */
+  processRecording(blob) {
+    this.url = URL.createObjectURL(blob);
+    //
+    //
+  }
+  /**
+   * Process Error.
+   */
+  errorCallback(error) {
+    this.error = "Can not play audio in your browser";
+  }
 }
diff --git a/src/app/components/cpcq-form/dialog-form/dialog-form.component.css b/src/app/components/cpcq-form/dialog-form/dialog-form.component.css
index aaa33e2..fae764a 100644
--- a/src/app/components/cpcq-form/dialog-form/dialog-form.component.css
+++ b/src/app/components/cpcq-form/dialog-form/dialog-form.component.css
@@ -1,32 +1,32 @@
 .home-wrap {
-    max-width: 500px;
+  max-width: 500px;
 }
 
 .help-wrap {
-    max-width: 700px;
+  max-width: 700px;
 }
 
 .word-wrap {
-    width: 500px;
+  width: 500px;
 }
 
 h6 {
-    /* color: #4050b5; */
+  /* color: #4050b5; */
 }
 
 p {
-    text-align: justify;
-    text-justify: inter-word;
+  text-align: justify;
+  text-justify: inter-word;
 }
 
 h2,
 h4 {
-    /* font-family: 'Loto', sans-serif; */
-    font-family: 'Loto', sans-serif;
-    /* color: #4050b5; */
+  /* font-family: 'Loto', sans-serif; */
+  font-family: "Loto", sans-serif;
+  /* color: #4050b5; */
 }
 
 .advice {
-    border: none;
-    background: none;
-}
\ No newline at end of file
+  border: none;
+  background: none;
+}
diff --git a/src/app/components/cpcq-form/dialog-form/dialog-form.component.html b/src/app/components/cpcq-form/dialog-form/dialog-form.component.html
index 42a3468..2576676 100644
--- a/src/app/components/cpcq-form/dialog-form/dialog-form.component.html
+++ b/src/app/components/cpcq-form/dialog-form/dialog-form.component.html
@@ -1,16 +1,18 @@
 <script src="https://unpkg.com/wavesurfer.js"></script>
 <div *ngIf="data.status == 'word'" class="word-wrap">
-    <div mat-dialog-content>
-        <form [formGroup]="wordDescriptionForm">
-        <h6>Define <span>{{data.animal}}</span> using your own words.</h6>
-        <mat-form-field appearance="outline" class="col-12" style="margin-top: 10px; margin-left: -10px;">
-            <mat-label>Describe </mat-label>
-            <textarea formControlName="answer" type="text" rows="6" matInput placeholder="" required></textarea>
-        </mat-form-field>
-        </form> 
-
-        <div>
-            <!-- <h6>Record your views in audio : <span>  <button *ngIf="!recording" mat-raised-button color="primary" style=" padding-right: -10px; " (click)="initiateRecording()">
+  <div mat-dialog-content>
+    <form [formGroup]="wordDescriptionForm">
+      <h6>
+        Define <span>{{ data.animal }}</span> using your own words.
+      </h6>
+      <mat-form-field appearance="outline" class="col-12" style="margin-top: 10px; margin-left: -10px">
+        <mat-label>Describe </mat-label>
+        <textarea formControlName="answer" type="text" rows="6" matInput placeholder="" required></textarea>
+      </mat-form-field>
+    </form>
+
+    <div>
+      <!-- <h6>Record your views in audio : <span>  <button *ngIf="!recording" mat-raised-button color="primary" style=" padding-right: -10px; " (click)="initiateRecording()">
                 Start Recording
                 <mat-icon>arrow_right_al</mat-icon>
 
@@ -20,99 +22,104 @@
                     <mat-icon>arrow_right_al</mat-icon>
     
                      </button></span> </h6> -->
-            <!-- <button (click)="initiateRecording()" class="btn btn-primary" *ngIf="!recording" style="cursor: pointer;background-color: green;color: white;font-size: 40px;"> Start Recording </button>
+      <!-- <button (click)="initiateRecording()" class="btn btn-primary" *ngIf="!recording" style="cursor: pointer;background-color: green;color: white;font-size: 40px;"> Start Recording </button>
             <button (click)="stopRecording()" class="btn btn-danger" *ngIf="recording" style="cursor: pointer;background-color: red;color: white;font-size: 40px;"> Stop Recording </button>
              -->
-            <!-- <audio controls="" *ngIf="url">
+      <!-- <audio controls="" *ngIf="url">
             <source [src]="sanitize(url)" type="audio/wav">
             </audio> -->
-            <!-- <ng-waveform *ngIf="url" #waveform class="waveform" [src]="url" [height]="150" [useRegion]="true" backgroundColor="#d3d3d3" regionBackgroundColor="rgba(255, 255, 255, 0.7)" regionStartStickColor="#21f032" regionEndStickColor="red" regionTextColor="#09417e"
+      <!-- <ng-waveform *ngIf="url" #waveform class="waveform" [src]="url" [height]="150" [useRegion]="true" backgroundColor="#d3d3d3" regionBackgroundColor="rgba(255, 255, 255, 0.7)" regionStartStickColor="#21f032" regionEndStickColor="red" regionTextColor="#09417e"
                 [withRegionLabels]="true" waveColor="#ff11ff" (trackLoaded)="onTrackLoaded($event)" (rendered)="onTrackRendered($event)" (durationChange)="onDurationChange($event)" (timeUpdate)="onTimeUpdate($event)" (paused)="onPauseButtonClick()" (regionChange)="onRegionChange($event)">
             </ng-waveform> -->
-            <!-- <button style="width: 100%; text-align: center;" *ngIf="url" (click)="onPlayButtonClick()" class="icon-button">
+      <!-- <button style="width: 100%; text-align: center;" *ngIf="url" (click)="onPlayButtonClick()" class="icon-button">
                 <svg style="width:24px;height:24px" viewBox="0 0 24 24">
                   <path fill="#000000" d="M8,5.14V19.14L19,12.14L8,5.14Z" />
                 </svg>
               </button> -->
 
-            <button mat-raised-button color="primary"  (click)="closeDialog()">
-                Submit
-
-                 </button>
-        </div>
+      <button mat-raised-button color="primary" (click)="closeDialog()">Submit</button>
     </div>
+  </div>
 </div>
 
 <div *ngIf="data.status == 'form'">
-    <div mat-dialog-content class="help-wrap">
-        <mat-tab-group [selectedIndex]="selectedIndex">
-            <mat-tab label="Cultural Blindness">
-            <form [formGroup]="unpackingForm">
-                <h4><span style="font-weight: bold;">{{word}} : </span>{{description}}</h4>
-                <p>1. Explain why this vignette above is understood to be <span>
-                    <button class="advice" style="color: blue;" (click)="describeFunc(tempStatus)">{{tempStatus}}.</button>
-                </span></p>
-                <p *ngIf="displayTextControl">{{displayText}}</p>
-                <mat-form-field appearance="outline" class="col-lg-12">
-                    <mat-label>Explain</mat-label>
-                    <textarea formControlName="response" rows="6" type="text" matInput placeholder="" required></textarea>
-                </mat-form-field>
-                <mat-error *ngIf="submit == true && errorField == true">Please enter this field</mat-error>
-
-            </form>
-            </mat-tab>
-            <mat-tab>
+  <div mat-dialog-content class="help-wrap">
+    <mat-tab-group [selectedIndex]="selectedIndex">
+      <mat-tab label="Cultural Blindness">
         <form [formGroup]="unpackingForm">
-                <h4>{{description}}</h4>
-                <p>2. What is the social problem in the vignette?                </p>
-                <mat-form-field appearance="outline" class="col-lg-12">
-                    <mat-label>Explain</mat-label>
-                    <textarea formControlName="response" rows="6" type="text" matInput placeholder="" required></textarea>
-                </mat-form-field>
-                <mat-error *ngIf="submit == true && errorField == true">Please enter this field</mat-error>
-
+          <h4>
+            <span style="font-weight: bold">{{ word }} : </span>{{ description }}
+          </h4>
+          <p>
+            1. Explain why this vignette above is understood to be
+            <span>
+              <button class="advice" style="color: blue" (click)="describeFunc(tempStatus)">{{ tempStatus }}.</button>
+            </span>
+          </p>
+          <p *ngIf="displayTextControl">{{ displayText }}</p>
+          <mat-form-field appearance="outline" class="col-lg-12">
+            <mat-label>Explain</mat-label>
+            <textarea formControlName="response" rows="6" type="text" matInput placeholder="" required></textarea>
+          </mat-form-field>
+          <mat-error *ngIf="submit == true && errorField == true">Please enter this field</mat-error>
         </form>
-            </mat-tab>
-            <mat-tab>
+      </mat-tab>
+      <mat-tab>
         <form [formGroup]="unpackingForm">
-                <h4>{{description}}</h4>
-                <p>3. What is the cause of the social problem in the vignette?
-                </p>
-                <mat-form-field appearance="outline" class="col-lg-12">
-                    <mat-label>Explain</mat-label>
-                    <textarea formControlName="response" rows="6" type="text" matInput placeholder="" required></textarea>
-                </mat-form-field>
-                <mat-error *ngIf="submit == true && errorField == true">Please enter this field</mat-error>
-
-                </form>
-            </mat-tab>
-            <mat-tab>
+          <h4>{{ description }}</h4>
+          <p>2. What is the social problem in the vignette?</p>
+          <mat-form-field appearance="outline" class="col-lg-12">
+            <mat-label>Explain</mat-label>
+            <textarea formControlName="response" rows="6" type="text" matInput placeholder="" required></textarea>
+          </mat-form-field>
+          <mat-error *ngIf="submit == true && errorField == true">Please enter this field</mat-error>
+        </form>
+      </mat-tab>
+      <mat-tab>
         <form [formGroup]="unpackingForm">
-                <h4>{{description}}</h4>
-                <p>4. What solutions would you offer to address the social problem in the vignette?
-
-                </p>
-                <mat-form-field appearance="outline" class="col-lg-12">
-                    <mat-label>Explain</mat-label>
-                    <textarea formControlName="response" rows="6" type="text" matInput placeholder="" required></textarea>
-                </mat-form-field>
-                <mat-error *ngIf="submit == true && errorField == true">Please enter this field</mat-error>
-
-            </form>
-            </mat-tab>
-        </mat-tab-group>
-        <button *ngIf="selectedIndex != 3 " mat-raised-button color="primary" style=" padding-right: -10px; " (click)="nextButton()">
-            NEXT
-            <mat-icon>arrow_right_al</mat-icon>
-
-             </button>
-        <button *ngIf="selectedIndex == 3 " mat-raised-button color="primary" style=" padding-right: -10px; " (click)="nextButton()">
-                SUBMIT
-                <mat-icon>done_outline</mat-icon>
-
-                 </button>
-    </div>
-    <!-- 
+          <h4>{{ description }}</h4>
+          <p>3. What is the cause of the social problem in the vignette?</p>
+          <mat-form-field appearance="outline" class="col-lg-12">
+            <mat-label>Explain</mat-label>
+            <textarea formControlName="response" rows="6" type="text" matInput placeholder="" required></textarea>
+          </mat-form-field>
+          <mat-error *ngIf="submit == true && errorField == true">Please enter this field</mat-error>
+        </form>
+      </mat-tab>
+      <mat-tab>
+        <form [formGroup]="unpackingForm">
+          <h4>{{ description }}</h4>
+          <p>4. What solutions would you offer to address the social problem in the vignette?</p>
+          <mat-form-field appearance="outline" class="col-lg-12">
+            <mat-label>Explain</mat-label>
+            <textarea formControlName="response" rows="6" type="text" matInput placeholder="" required></textarea>
+          </mat-form-field>
+          <mat-error *ngIf="submit == true && errorField == true">Please enter this field</mat-error>
+        </form>
+      </mat-tab>
+    </mat-tab-group>
+    <button
+      *ngIf="selectedIndex != 3"
+      mat-raised-button
+      color="primary"
+      style="padding-right: -10px"
+      (click)="nextButton()"
+    >
+      NEXT
+      <mat-icon>arrow_right_al</mat-icon>
+    </button>
+    <button
+      *ngIf="selectedIndex == 3"
+      mat-raised-button
+      color="primary"
+      style="padding-right: -10px"
+      (click)="nextButton()"
+    >
+      SUBMIT
+      <mat-icon>done_outline</mat-icon>
+    </button>
+  </div>
+  <!-- 
     <div *ngIf="data.animal[0] =='Empathy'" mat-dialog-content class="help-wrap">
         <mat-tab-group [selectedIndex]="selectedIndex">
             <mat-tab label="Cultural Blindness">
@@ -149,7 +156,7 @@
                  </button>
     </div> -->
 
-    <!-- <div *ngIf="data.animal[0] !='Empathy' && data.animal[0] != 'Attitude'" mat-dialog-content class="help-wrap">
+  <!-- <div *ngIf="data.animal[0] !='Empathy' && data.animal[0] != 'Attitude'" mat-dialog-content class="help-wrap">
         <mat-tab-group>
             <mat-tab label="Cultural Blindness">
                 <h4>Similar form for <span>{{data.animal}}</span></h4>
@@ -163,55 +170,56 @@
     </div> -->
 </div>
 
-
 <div *ngIf="data.status == 'form1'">
-    <div mat-dialog-content class="help-wrap">
-        <mat-tab-group [selectedIndex]="selectedIndex">
-            <mat-tab label="Cultural Blindness">
-
-                <h4><span style="font-weight: bold;">{{word}} : </span>{{description}}</h4>
-                <div *ngFor="let row of questions1; let i = index">
-                    <p>{{questions2[i]}}</p>
-                    <p >Answer : {{row}}</p>
-                    <p >Score : {{scores1[i]}}</p>
-                    <p >Comment : {{comments[i]}}</p>
-
-                </div>
-        <button mat-stroked-button color="primary">Your Cultural Proficiency is {{meanNumber}} or {{meanValue}}</button>
-
-
-
-
-
-
-
-            </mat-tab>
-
-        </mat-tab-group>
-    </div>
-</div>
-
-<div *ngIf="data.status == 'score'" class="help-wrap">
-    <div mat-dialog-content>
-        <h4><span style="font-weight: bold;">{{word}} : </span>{{description}}</h4>
+  <div mat-dialog-content class="help-wrap">
+    <mat-tab-group [selectedIndex]="selectedIndex">
+      <mat-tab label="Cultural Blindness">
+        <h4>
+          <span style="font-weight: bold">{{ word }} : </span>{{ description }}
+        </h4>
         <div *ngFor="let row of questions1; let i = index">
-            <p>{{questions2[i]}}</p>
-            <p >Answer : {{row}}</p>
-            <p >Score : {{scores1[i]}}</p>
+          <p>{{ questions2[i] }}</p>
+          <p>Answer : {{ row }}</p>
+          <p>Score : {{ scores1[i] }}</p>
+          <p>Comment : {{ comments[i] }}</p>
         </div>
-        <button mat-stroked-button color="primary">Your Cultural Proficiency is {{meanNumber}} or {{meanValue}}</button>
+        <button mat-stroked-button color="primary">
+          Your Cultural Proficiency is {{ meanNumber }} or {{ meanValue }}
+        </button>
+      </mat-tab>
+    </mat-tab-group>
+  </div>
+</div>
 
+<div *ngIf="data.status == 'score'" class="help-wrap">
+  <div mat-dialog-content>
+    <h4>
+      <span style="font-weight: bold">{{ word }} : </span>{{ description }}
+    </h4>
+    <div *ngFor="let row of questions1; let i = index">
+      <p>{{ questions2[i] }}</p>
+      <p>Answer : {{ row }}</p>
+      <p>Score : {{ scores1[i] }}</p>
     </div>
+    <button mat-stroked-button color="primary">Your Cultural Proficiency is {{ meanNumber }} or {{ meanValue }}</button>
+  </div>
 </div>
 
 <div *ngIf="data.status == 'help'" class="help-wrap">
-    <div mat-dialog-content>
-        <h2>Cultural Proficiency Continuum Q-Sort: Reacting to Sociocultural Reproductions that take place within Majority-Minority US Public Schools and Student Populations
-        </h2>
-        <p>Next are 30 sociocultural interactions situated within vignettes describing culturally proficient behaviors, which occur daily in majority-minority US public schools. There are six vignettes in each of the five categories: Attitude, Empathy, Policy,
-            Professionalism, and Teaching Practice. Your task is to prioritize these vignettes by numbering them 1 to 6 within each of the five categories according to your level of reaction. Assign the number 6 to the vignette that evoked the highest
-            level of reaction, 5 to the vignette that evoked the next highest level of reaction, 4 to the vignette that evoked the next highest level of reaction, and so on until you have assigned a number to all six vignettes within each category. When
-            you have completed this task, follow the directions in the rating guide to summarize your responses.</p>
-
-    </div>
-</div>
\ No newline at end of file
+  <div mat-dialog-content>
+    <h2>
+      Cultural Proficiency Continuum Q-Sort: Reacting to Sociocultural Reproductions that take place within
+      Majority-Minority US Public Schools and Student Populations
+    </h2>
+    <p>
+      Next are 30 sociocultural interactions situated within vignettes describing culturally proficient behaviors, which
+      occur daily in majority-minority US public schools. There are six vignettes in each of the five categories:
+      Attitude, Empathy, Policy, Professionalism, and Teaching Practice. Your task is to prioritize these vignettes by
+      numbering them 1 to 6 within each of the five categories according to your level of reaction. Assign the number 6
+      to the vignette that evoked the highest level of reaction, 5 to the vignette that evoked the next highest level of
+      reaction, 4 to the vignette that evoked the next highest level of reaction, and so on until you have assigned a
+      number to all six vignettes within each category. When you have completed this task, follow the directions in the
+      rating guide to summarize your responses.
+    </p>
+  </div>
+</div>
diff --git a/src/app/components/cpcq-form/dialog-form/dialog-form.component.spec.ts b/src/app/components/cpcq-form/dialog-form/dialog-form.component.spec.ts
index 89fecbe..43b42e4 100644
--- a/src/app/components/cpcq-form/dialog-form/dialog-form.component.spec.ts
+++ b/src/app/components/cpcq-form/dialog-form/dialog-form.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { DialogFormComponent } from './dialog-form.component';
+import { DialogFormComponent } from "./dialog-form.component";
 
-describe('DialogFormComponent', () => {
+describe("DialogFormComponent", () => {
   let component: DialogFormComponent;
   let fixture: ComponentFixture<DialogFormComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ DialogFormComponent ]
-    })
-    .compileComponents();
+      declarations: [DialogFormComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('DialogFormComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/cpcq-form/dialog-form/dialog-form.component.ts b/src/app/components/cpcq-form/dialog-form/dialog-form.component.ts
index a094c98..3378878 100644
--- a/src/app/components/cpcq-form/dialog-form/dialog-form.component.ts
+++ b/src/app/components/cpcq-form/dialog-form/dialog-form.component.ts
@@ -5,485 +5,483 @@ import { ITimeUpdateEvent, NgWaveformComponent, IRegionPositions } from "ng-wave
 import { FormBuilder, FormGroup, Validators } from "@angular/forms";
 import { CPCQService } from "src/app/services/cpcq.service";
 export interface DialogData {
-    animal;
-    status;
-    result;
+  animal;
+  status;
+  result;
 }
 
 declare var $: any;
 import * as RecordRTC from "recordrtc";
 import { DomSanitizer } from "@angular/platform-browser";
 @Component({
-    selector: "app-dialog-form",
-    templateUrl: "./dialog-form.component.html",
-    styleUrls: ["./dialog-form.component.css"],
+  selector: "app-dialog-form",
+  templateUrl: "./dialog-form.component.html",
+  styleUrls: ["./dialog-form.component.css"],
 })
 export class DialogFormComponent implements OnInit {
-    description;
-    word;
-    selectedIndex = 0;
-    displayTextControl = false;
-    displayText = "";
-    wordDescriptionForm: FormGroup;
-    unpackingForm: FormGroup;
+  description;
+  word;
+  selectedIndex = 0;
+  displayTextControl = false;
+  displayText = "";
+  wordDescriptionForm: FormGroup;
+  unpackingForm: FormGroup;
 
-    unpackingArray = {};
+  unpackingArray = {};
 
-    submit = false;
-    errorField = false;
+  submit = false;
+  errorField = false;
 
-    startTime: any;
-    endTime: any;
-    durationTime: any;
+  startTime: any;
+  endTime: any;
+  durationTime: any;
 
-    attitude = [
-        "D. It should be required for students to remove hair accessories that are associated with their culture, tribe, sexuality, or religion.",
-        "C. Students who wear dreadlocks as a hairstyle are a distraction in the classroom.",
-        "B. Black students have the same opportunities and access to attend college as their white peers.",
-        "A. Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.",
-        "F. All faculty and staff within a school setting have equal ability to transfer knowledge to students in regards to life, culture, character, and/or academic content.",
-        "E. All students who live in the United States deserve a quality public education, even those students whose parents are undocumented immigrants.",
-    ];
+  attitude = [
+    "D. It should be required for students to remove hair accessories that are associated with their culture, tribe, sexuality, or religion.",
+    "C. Students who wear dreadlocks as a hairstyle are a distraction in the classroom.",
+    "B. Black students have the same opportunities and access to attend college as their white peers.",
+    "A. Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.",
+    "F. All faculty and staff within a school setting have equal ability to transfer knowledge to students in regards to life, culture, character, and/or academic content.",
+    "E. All students who live in the United States deserve a quality public education, even those students whose parents are undocumented immigrants.",
+  ];
 
-    attitudeOrder = ["D", "C", "B", "A", "F", "E"];
-    empathy = [
-        "E. A school counselor advised a biracial student that they would appear more professional if they perm their hair (removing the kinks) for their upcoming college visits.",
-        "A. A 10th-grade male died as a result of a car accident during an illegal street race. A group of teachers will not attend the funeral because of the activity that led to the student’s cause of death.",
-        "F. Your colleague was pulled over by the police on the way to work this morning. You hear other colleagues in the break room discussing the reasons why they were pulled over, and all of the suspected reasons were related to what they may have done (i.e., speeding, running a stop sign, etc.), rather than acknowledging that they may have been pulled over for being a person of color driving a luxury car.",
-        "D. An Asian student scored an 85 percent on today’s math quiz. The teacher expressed disappointment in the student by saying, “Come on, you are Asian! You should’ve scored better than this.”",
-        "B. A public school Teacher is grounded by the philosophy of their religion. Throughout their career as an educator; they have learned to be welcoming to others’ cultural and religious beliefs even if those beliefs are in conflict with their own.",
-        "C. In two weeks, the 8th grade teaching cluster will be getting a new math teacher who is Muslim. Next week’s professional development is dedicated to learning about the customs and etiquette of Islam to ensure that the new colleague feels welcomed in their new school.",
-    ];
-    empathyOrder = ["E", "A", "F", "D", "B", "C"];
-    policy = [
-        "F. A member of the school board is proposing a policy where English is the official language for all school related business in a community where the majority of the students’ and families’ primary language is Spanish.",
-        "E.  Students in a high-poverty school who are absent 10 consecutive days in a marking period are referred to special education for excessive absenteeism.",
-        "B.  A school that does not consider factors related to culture and ethnicity in their decision-making process is more democratic than a school who does consider factors related to culture and ethnicity in their decision-making process.",
-        "C. A school leader makes a “diversity hire” to introduce new ideas around school culture, curriculum, leadership, and/or supervision.",
-        "D.  A principal implemented a policy that all faculty and staff have to participate in quarterly potlucks; they are to bring a traditional dish specific to their culture, as a way to facilitate cross-cultural discourse.",
-        "A. A group of teachers and students are protesting the athletic department at a high school for changing the school’s logo to a silhouette of a Native American in a headdress; they have secured a place on the agenda for the next school board meeting to give a presentation on why this logo is offensive and trivializes Native Americans.",
-    ];
-    policyOrder = ["F", "E", "B", "C", "D", "A"];
+  attitudeOrder = ["D", "C", "B", "A", "F", "E"];
+  empathy = [
+    "E. A school counselor advised a biracial student that they would appear more professional if they perm their hair (removing the kinks) for their upcoming college visits.",
+    "A. A 10th-grade male died as a result of a car accident during an illegal street race. A group of teachers will not attend the funeral because of the activity that led to the student’s cause of death.",
+    "F. Your colleague was pulled over by the police on the way to work this morning. You hear other colleagues in the break room discussing the reasons why they were pulled over, and all of the suspected reasons were related to what they may have done (i.e., speeding, running a stop sign, etc.), rather than acknowledging that they may have been pulled over for being a person of color driving a luxury car.",
+    "D. An Asian student scored an 85 percent on today’s math quiz. The teacher expressed disappointment in the student by saying, “Come on, you are Asian! You should’ve scored better than this.”",
+    "B. A public school Teacher is grounded by the philosophy of their religion. Throughout their career as an educator; they have learned to be welcoming to others’ cultural and religious beliefs even if those beliefs are in conflict with their own.",
+    "C. In two weeks, the 8th grade teaching cluster will be getting a new math teacher who is Muslim. Next week’s professional development is dedicated to learning about the customs and etiquette of Islam to ensure that the new colleague feels welcomed in their new school.",
+  ];
+  empathyOrder = ["E", "A", "F", "D", "B", "C"];
+  policy = [
+    "F. A member of the school board is proposing a policy where English is the official language for all school related business in a community where the majority of the students’ and families’ primary language is Spanish.",
+    "E.  Students in a high-poverty school who are absent 10 consecutive days in a marking period are referred to special education for excessive absenteeism.",
+    "B.  A school that does not consider factors related to culture and ethnicity in their decision-making process is more democratic than a school who does consider factors related to culture and ethnicity in their decision-making process.",
+    "C. A school leader makes a “diversity hire” to introduce new ideas around school culture, curriculum, leadership, and/or supervision.",
+    "D.  A principal implemented a policy that all faculty and staff have to participate in quarterly potlucks; they are to bring a traditional dish specific to their culture, as a way to facilitate cross-cultural discourse.",
+    "A. A group of teachers and students are protesting the athletic department at a high school for changing the school’s logo to a silhouette of a Native American in a headdress; they have secured a place on the agenda for the next school board meeting to give a presentation on why this logo is offensive and trivializes Native Americans.",
+  ];
+  policyOrder = ["F", "E", "B", "C", "D", "A"];
 
-    professionalism = [
-        "E. A history teacher refuses to acknowledge black history month and does not want to teach content about black history in the United States.",
-        "A. A teacher asked the class who has traveled out of the country. A Black male raises his hand and states “I have.”  The teacher asked the student three follow-up questions to corroborate his story.",
-        "B. During lunch duty, teachers had a discussion in the presence of students about tomorrow’s district-wide racial sensitivity training. A teacher commented, “Why do we have to attend this training; the United States is post-racial because we have a Black president.”",
-        "D. The reading specialist expressed some concerns to the Vice Principal about how her male students emasculates her during whole group instruction. The Vice Principal said, “Don’t worry about it, that's just how boys behave.” ",
-        "C. The social committee at an elementary school is planning an awards ceremony and dinner for the staff and faculty. Six of their colleagues are vegan because of their religious beliefs.  As a result, the committee has added a vegan selection to the menu to accommodate their colleagues’ religious beliefs.",
-        "F. An AP English teacher has assigned a research paper where the students were required to write about their religion. The teacher did not let their own religious beliefs cloud their judgement; the teacher researched the student’s religion while grading the paper to offer relevant constructive feedback back on the arguments made within the paper.",
-    ];
-    professionalismOrder = ["E", "A", "B", "D", "C", "F"];
-    teaching = [
-        "D. A teacher puts together a petition to request a textbook company to remove the narrative about the enslavement of Africans in the United States in their history textbook to accommodate teachers’ discomfort with discussing this sensitive topic.",
-        "C. A teacher created a seating chart that placed ‘unteachable students’ in the back of the classroom, all of whom were male: 2 Latinos and 6 African Americans. In the same seating chart, her ‘good students,' all white, were seated in preferential seating.",
-        "B. An algebra teacher who teaches in a school where the majority of the students are on free and reduced lunch requires that each student buy a specific graphing calculator for Algebra, which retails for over 100 dollars.",
-        "E. A teacher in a Title 1 school (high percentage of children from low-income families) checks homework for completeness rather than correctness as a strategy to improve student efficacy.",
-        "A. A novice teacher in a school where the majority of the students are African-American and Latino uses hip-hop as a way to make science relevant in the student's social and cultural context.",
-        "F. There is an increase of LGBTQIA+ students reporting that they are being harassed both verbally and physically in United States public schools. A group of students and teachers are researching the best practices to implement and create a supportive environment for these students to voice their concerns in their school.",
-    ];
-    teachingOrder = ["D", "C", "B", "E", "A", "F"];
+  professionalism = [
+    "E. A history teacher refuses to acknowledge black history month and does not want to teach content about black history in the United States.",
+    "A. A teacher asked the class who has traveled out of the country. A Black male raises his hand and states “I have.”  The teacher asked the student three follow-up questions to corroborate his story.",
+    "B. During lunch duty, teachers had a discussion in the presence of students about tomorrow’s district-wide racial sensitivity training. A teacher commented, “Why do we have to attend this training; the United States is post-racial because we have a Black president.”",
+    "D. The reading specialist expressed some concerns to the Vice Principal about how her male students emasculates her during whole group instruction. The Vice Principal said, “Don’t worry about it, that's just how boys behave.” ",
+    "C. The social committee at an elementary school is planning an awards ceremony and dinner for the staff and faculty. Six of their colleagues are vegan because of their religious beliefs.  As a result, the committee has added a vegan selection to the menu to accommodate their colleagues’ religious beliefs.",
+    "F. An AP English teacher has assigned a research paper where the students were required to write about their religion. The teacher did not let their own religious beliefs cloud their judgement; the teacher researched the student’s religion while grading the paper to offer relevant constructive feedback back on the arguments made within the paper.",
+  ];
+  professionalismOrder = ["E", "A", "B", "D", "C", "F"];
+  teaching = [
+    "D. A teacher puts together a petition to request a textbook company to remove the narrative about the enslavement of Africans in the United States in their history textbook to accommodate teachers’ discomfort with discussing this sensitive topic.",
+    "C. A teacher created a seating chart that placed ‘unteachable students’ in the back of the classroom, all of whom were male: 2 Latinos and 6 African Americans. In the same seating chart, her ‘good students,' all white, were seated in preferential seating.",
+    "B. An algebra teacher who teaches in a school where the majority of the students are on free and reduced lunch requires that each student buy a specific graphing calculator for Algebra, which retails for over 100 dollars.",
+    "E. A teacher in a Title 1 school (high percentage of children from low-income families) checks homework for completeness rather than correctness as a strategy to improve student efficacy.",
+    "A. A novice teacher in a school where the majority of the students are African-American and Latino uses hip-hop as a way to make science relevant in the student's social and cultural context.",
+    "F. There is an increase of LGBTQIA+ students reporting that they are being harassed both verbally and physically in United States public schools. A group of students and teachers are researching the best practices to implement and create a supportive environment for these students to voice their concerns in their school.",
+  ];
+  teachingOrder = ["D", "C", "B", "E", "A", "F"];
 
-    culturalStatus = [
-        "Cultural Destructiveness",
-        "Cultural Incapacity",
-        "Cultural Blindness",
-        "Cultural Pre-Competence",
-        "Cultural Competence",
-        "Cultural Proficiency",
-    ];
-    tempStatus = "";
-    @ViewChild("waveform", { static: false }) waveform: NgWaveformComponent;
-    constructor(
-        @Inject(MAT_DIALOG_DATA) public data: DialogData,
-        public dialogRef: MatDialogRef<DialogFormComponent>,
-        public dialog: MatDialog,
-        private fb: FormBuilder,
-        private domSanitizer: DomSanitizer,
-        public cpcqService: CPCQService
-    ) {}
+  culturalStatus = [
+    "Cultural Destructiveness",
+    "Cultural Incapacity",
+    "Cultural Blindness",
+    "Cultural Pre-Competence",
+    "Cultural Competence",
+    "Cultural Proficiency",
+  ];
+  tempStatus = "";
+  @ViewChild("waveform", { static: false }) waveform: NgWaveformComponent;
+  constructor(
+    @Inject(MAT_DIALOG_DATA) public data: DialogData,
+    public dialogRef: MatDialogRef<DialogFormComponent>,
+    public dialog: MatDialog,
+    private fb: FormBuilder,
+    private domSanitizer: DomSanitizer,
+    public cpcqService: CPCQService
+  ) {}
 
-    closeDialog() {
-        if (!this.wordDescriptionForm.valid) {
-        } else {
-            this.data.result = this.wordDescriptionForm.value["answer"];
-            this.dialogRef.close(this.wordDescriptionForm.value["answer"]);
-        }
+  closeDialog() {
+    if (!this.wordDescriptionForm.valid) {
+    } else {
+      this.data.result = this.wordDescriptionForm.value["answer"];
+      this.dialogRef.close(this.wordDescriptionForm.value["answer"]);
     }
+  }
 
-    describeFunc(temp) {
-        this.displayTextControl = this.displayTextControl == true ? false : true;
-        if (temp == "Cultural Destructiveness") {
-            this.displayText =
-                "When individuals or policies seek to eliminate all vestiges of others culture in educational and/or social contexts (Lindsey, Robins, & Terrell, 2009).";
-        } else if (temp == "Cultural Incapacity") {
-            this.displayText =
-                "Trivializing and stereotyping other cultures; seeking to make the cultures of others appear [incongruent with and] inferior to the dominant [or host] culture [within educational and/or social context] ";
-        } else if (temp == "Cultural Blindness") {
-            this.displayText = `Not noticing or acknowledging the culture of others and ignoring the [diverse] experiences of cultures within [educational and/or social context]; treating everyone in the system the same way without recognizing the needs that require differentiated [approaches] `;
-        } else if (temp == "Cultural Pre-Competence") {
-            this.displayText = `The awareness/ability to identify when an individual/institution does not know how to effectively engage families, students, and teachers in a culturally diverse educational and/or social context `;
-        } else if (temp == "Cultural Competence") {
-            this.displayText = `The practical/institutional alignment of an individual’s personal values and behaviors which are in agreement with educational policies and practices that honors cultures that are new, different, and/or a minority. Such an environment displays healthy and productive interactions that denote solidarity in the educational context. However, this level of the Cultural Proficiency Continuum may or may not be limited to educational context`;
-        } else {
-            this.displayText = `Espouses a vision that educational and social spaces are agents of social change and a model of a just democracy. These individual/institutions learn, teach, research, advocate, and champion for members of diverse and minoritized cultural groups. This level of the Cultural Proficiency Continuum is displayed and espoused in a variety of social constructions and contexts: educational, gender, professional, race, religious, and sexuality`;
-        }
+  describeFunc(temp) {
+    this.displayTextControl = this.displayTextControl == true ? false : true;
+    if (temp == "Cultural Destructiveness") {
+      this.displayText =
+        "When individuals or policies seek to eliminate all vestiges of others culture in educational and/or social contexts (Lindsey, Robins, & Terrell, 2009).";
+    } else if (temp == "Cultural Incapacity") {
+      this.displayText =
+        "Trivializing and stereotyping other cultures; seeking to make the cultures of others appear [incongruent with and] inferior to the dominant [or host] culture [within educational and/or social context] ";
+    } else if (temp == "Cultural Blindness") {
+      this.displayText = `Not noticing or acknowledging the culture of others and ignoring the [diverse] experiences of cultures within [educational and/or social context]; treating everyone in the system the same way without recognizing the needs that require differentiated [approaches] `;
+    } else if (temp == "Cultural Pre-Competence") {
+      this.displayText = `The awareness/ability to identify when an individual/institution does not know how to effectively engage families, students, and teachers in a culturally diverse educational and/or social context `;
+    } else if (temp == "Cultural Competence") {
+      this.displayText = `The practical/institutional alignment of an individual’s personal values and behaviors which are in agreement with educational policies and practices that honors cultures that are new, different, and/or a minority. Such an environment displays healthy and productive interactions that denote solidarity in the educational context. However, this level of the Cultural Proficiency Continuum may or may not be limited to educational context`;
+    } else {
+      this.displayText = `Espouses a vision that educational and social spaces are agents of social change and a model of a just democracy. These individual/institutions learn, teach, research, advocate, and champion for members of diverse and minoritized cultural groups. This level of the Cultural Proficiency Continuum is displayed and espoused in a variety of social constructions and contexts: educational, gender, professional, race, religious, and sexuality`;
     }
+  }
 
-    nextButton() {
-        this.submit = true;
-        if (!this.unpackingForm.valid) {
-            this.errorField = true;
-        } else {
-            this.submit = false;
-            this.errorField = false;
-            if (this.selectedIndex == 0) {
-                this.unpackingArray["1. Explain why this vignette above is understood to be " + this.tempStatus + "."] =
-                    this.unpackingForm.value["response"];
-            } else if (this.selectedIndex == 1) {
-                this.unpackingArray["2. What is the social problem in the vignette?"] =
-                    this.unpackingForm.value["response"];
-            } else if (this.selectedIndex == 2) {
-                this.unpackingArray["3. What is the cause of the social problem in the vignette?"] =
-                    this.unpackingForm.value["response"];
-            } else if (this.selectedIndex == 3) {
-                this.unpackingArray[
-                    "4. What solutions would you offer to address the social problem in the vignette?"
-                ] = this.unpackingForm.value["response"];
-            }
-            if (this.selectedIndex == 3) {
-                this.endTime = new Date();
-
-                this.durationTime = (this.endTime - this.startTime) / 1000;
-                this.durationTime = this.durationTime / 60;
+  nextButton() {
+    this.submit = true;
+    if (!this.unpackingForm.valid) {
+      this.errorField = true;
+    } else {
+      this.submit = false;
+      this.errorField = false;
+      if (this.selectedIndex == 0) {
+        this.unpackingArray["1. Explain why this vignette above is understood to be " + this.tempStatus + "."] =
+          this.unpackingForm.value["response"];
+      } else if (this.selectedIndex == 1) {
+        this.unpackingArray["2. What is the social problem in the vignette?"] = this.unpackingForm.value["response"];
+      } else if (this.selectedIndex == 2) {
+        this.unpackingArray["3. What is the cause of the social problem in the vignette?"] =
+          this.unpackingForm.value["response"];
+      } else if (this.selectedIndex == 3) {
+        this.unpackingArray["4. What solutions would you offer to address the social problem in the vignette?"] =
+          this.unpackingForm.value["response"];
+      }
+      if (this.selectedIndex == 3) {
+        this.endTime = new Date();
 
-                var arr = {};
-                arr["topic"] = this.word;
-                arr["duration"] = this.durationTime;
-                arr["response_id"] = this.data.animal[3];
-                arr[this.data.animal[2]] = this.unpackingArray;
-                // if(this.data.animal[2] == )
-                this.cpcqService.postUnpacking(arr).subscribe((res) => {
-                    this.dialogRef.close(res);
-                });
-            } else {
-                this.selectedIndex = this.selectedIndex + 1;
-                if (this.selectedIndex > 3) {
-                    this.selectedIndex = 3;
-                }
-            }
+        this.durationTime = (this.endTime - this.startTime) / 1000;
+        this.durationTime = this.durationTime / 60;
 
-            this.unpackingForm = this.fb.group({
-                response: ["", Validators.required],
-            });
+        var arr = {};
+        arr["topic"] = this.word;
+        arr["duration"] = this.durationTime;
+        arr["response_id"] = this.data.animal[3];
+        arr[this.data.animal[2]] = this.unpackingArray;
+        // if(this.data.animal[2] == )
+        this.cpcqService.postUnpacking(arr).subscribe((res) => {
+          this.dialogRef.close(res);
+        });
+      } else {
+        this.selectedIndex = this.selectedIndex + 1;
+        if (this.selectedIndex > 3) {
+          this.selectedIndex = 3;
         }
-    }
+      }
 
-    onPlayButtonClick() {
-        this.waveform.play();
-    }
-    onPauseButtonClick() {
-        this.waveform.pause();
+      this.unpackingForm = this.fb.group({
+        response: ["", Validators.required],
+      });
     }
+  }
 
-    onTrackLoaded(e) {}
+  onPlayButtonClick() {
+    this.waveform.play();
+  }
+  onPauseButtonClick() {
+    this.waveform.pause();
+  }
 
-    onTrackRendered(e) {}
+  onTrackLoaded(e) {}
 
-    onDurationChange(e) {}
+  onTrackRendered(e) {}
 
-    onTimeUpdate(e) {}
+  onDurationChange(e) {}
 
-    onRegionChange(e) {}
-    title = "micRecorder";
-    //Lets declare Record OBJ
-    record;
-    //Will use this flag for toggeling recording
-    recording = false;
-    //URL of Blob
-    url;
-    error;
-    sanitize(url: string) {
-        return this.domSanitizer.bypassSecurityTrustUrl(url);
-    }
-    /**
-     * Start recording.
-     */
-    initiateRecording() {
-        this.recording = true;
-        let mediaConstraints = {
-            video: false,
-            audio: true,
-        };
-        navigator.mediaDevices
-            .getUserMedia(mediaConstraints)
-            .then(this.successCallback.bind(this), this.errorCallback.bind(this));
-    }
-    /**
-     * Will be called automatically.
-     */
-    successCallback(stream) {
-        var options = {
-            mimeType: "audio/wav",
-            numberOfAudioChannels: 1,
-            // sampleRate: 16000,
-        };
-        //Start Actuall Recording
-        var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
-        this.record = new StereoAudioRecorder(stream, options);
-        this.record.record();
-    }
-    /**
-     * Stop recording.
-     */
-    stopRecording() {
-        this.recording = false;
-        this.record.stop(this.processRecording.bind(this));
-    }
-    /**
-     * processRecording Do what ever you want with blob
-     * @param  {any} blob Blog
-     */
-    processRecording(blob) {
-        this.url = URL.createObjectURL(blob);
-    }
-    /**
-     * Process Error.
-     */
-    errorCallback(error) {
-        this.error = "Can not play audio in your browser";
-    }
+  onTimeUpdate(e) {}
 
-    questions: any;
-    questions1: any;
-    questions2: any;
-    scores1: any;
-    comments: any;
-    meanValue: any;
-    meanNumber: any;
+  onRegionChange(e) {}
+  title = "micRecorder";
+  //Lets declare Record OBJ
+  record;
+  //Will use this flag for toggeling recording
+  recording = false;
+  //URL of Blob
+  url;
+  error;
+  sanitize(url: string) {
+    return this.domSanitizer.bypassSecurityTrustUrl(url);
+  }
+  /**
+   * Start recording.
+   */
+  initiateRecording() {
+    this.recording = true;
+    let mediaConstraints = {
+      video: false,
+      audio: true,
+    };
+    navigator.mediaDevices
+      .getUserMedia(mediaConstraints)
+      .then(this.successCallback.bind(this), this.errorCallback.bind(this));
+  }
+  /**
+   * Will be called automatically.
+   */
+  successCallback(stream) {
+    var options = {
+      mimeType: "audio/wav",
+      numberOfAudioChannels: 1,
+      // sampleRate: 16000,
+    };
+    //Start Actuall Recording
+    var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
+    this.record = new StereoAudioRecorder(stream, options);
+    this.record.record();
+  }
+  /**
+   * Stop recording.
+   */
+  stopRecording() {
+    this.recording = false;
+    this.record.stop(this.processRecording.bind(this));
+  }
+  /**
+   * processRecording Do what ever you want with blob
+   * @param  {any} blob Blog
+   */
+  processRecording(blob) {
+    this.url = URL.createObjectURL(blob);
+  }
+  /**
+   * Process Error.
+   */
+  errorCallback(error) {
+    this.error = "Can not play audio in your browser";
+  }
 
-    columnHeadings = [
-        "Cultural Destructiveness",
-        "Cultural Incapacity",
-        "Cultural Blindness",
-        "Cultural PreCompetence",
-        "Cultural Competence",
-        "Cultural Proficiency",
-    ];
+  questions: any;
+  questions1: any;
+  questions2: any;
+  scores1: any;
+  comments: any;
+  meanValue: any;
+  meanNumber: any;
 
-    scores: any;
-    ngOnInit(): void {
-        this.startTime = new Date();
-        this.wordDescriptionForm = this.fb.group({
-            answer: ["", [Validators.required]],
-        });
-        this.unpackingForm = this.fb.group({
-            response: ["", Validators.required],
-        });
-        if (this.data.status == "form") {
-            if (this.data.animal[0] == "Attitude") {
-                this.word = "Attitude";
-                this.description = this.attitude[this.data.animal[1]];
-                this.tempStatus = this.culturalStatus[this.data.animal[1]];
-            } else if (this.data.animal[0] == "Empathy") {
-                this.word = "Empathy";
-                this.description = this.empathy[this.data.animal[1]];
-                this.tempStatus = this.culturalStatus[this.data.animal[1]];
-            } else if (this.data.animal[0] == "Policy") {
-                this.word = "Policy";
-                this.description = this.policy[this.data.animal[1]];
-                this.tempStatus = this.culturalStatus[this.data.animal[1]];
-            } else if (this.data.animal[0] == "Professionalism") {
-                this.word = "Professionalism";
-                this.description = this.professionalism[this.data.animal[1]];
-                this.tempStatus = this.culturalStatus[this.data.animal[1]];
-            } else if (this.data.animal[0] == "Teaching Practice") {
-                this.word = "Teaching Practice";
-                this.description = this.teaching[this.data.animal[1]];
-                this.tempStatus = this.culturalStatus[this.data.animal[1]];
-            }
-        } else if (this.data.status == "score") {
-            if (this.data.animal[0] == "Attitude") {
-                this.word = "Attitude";
-                var i = this.attitudeOrder.indexOf(this.data.animal[1]);
-                this.description = this.attitude[i];
-                this.meanValue = this.data.animal[2];
-                this.scores = this.data.animal[3];
-                this.questions = this.data.animal[4];
-            } else if (this.data.animal[0] == "Empathy") {
-                this.word = "Empathy";
-                var i = this.empathyOrder.indexOf(this.data.animal[1]);
-                this.description = this.empathy[i];
-                this.meanValue = this.data.animal[2];
-                this.scores = this.data.animal[3];
-                this.questions = this.data.animal[4];
-            } else if (this.data.animal[0] == "Policy") {
-                this.word = "Policy";
-                var i = this.policyOrder.indexOf(this.data.animal[1]);
-                this.description = this.policy[i];
-                this.meanValue = this.data.animal[2];
-                this.scores = this.data.animal[3];
-                this.questions = this.data.animal[4];
-            } else if (this.data.animal[0] == "Professionalism") {
-                this.word = "Professionalism";
-                var i = this.professionalismOrder.indexOf(this.data.animal[1]);
-                this.description = this.professionalism[i];
-                this.meanValue = this.data.animal[2];
-                this.scores = this.data.animal[3];
-                this.questions = this.data.animal[4];
-            } else if (this.data.animal[0] == "Teaching Practice") {
-                this.word = "Teaching Practice";
-                var i = this.teachingOrder.indexOf(this.data.animal[1]);
-                this.description = this.teaching[i];
-                this.meanValue = this.data.animal[2];
-                this.scores = this.data.animal[3];
-                this.questions = this.data.animal[4];
-            }
-            this.meanNumber = this.meanValue;
+  columnHeadings = [
+    "Cultural Destructiveness",
+    "Cultural Incapacity",
+    "Cultural Blindness",
+    "Cultural PreCompetence",
+    "Cultural Competence",
+    "Cultural Proficiency",
+  ];
 
-            this.questions1 = [];
-            this.questions2 = [];
-            this.scores1 = [];
-            for (let key in this.scores) {
-                if (this.scores[key] == 1) {
-                    this.scores1[key] = this.columnHeadings[0];
-                }
-                if (this.scores[key] == 2) {
-                    this.scores1[key] = this.columnHeadings[1];
-                }
-                if (this.scores[key] == 3) {
-                    this.scores1[key] = this.columnHeadings[2];
-                }
-                if (this.scores[key] == 4) {
-                    this.scores1[key] = this.columnHeadings[3];
-                }
-                if (this.scores[key] == 5) {
-                    this.scores1[key] = this.columnHeadings[4];
-                }
-            }
+  scores: any;
+  ngOnInit(): void {
+    this.startTime = new Date();
+    this.wordDescriptionForm = this.fb.group({
+      answer: ["", [Validators.required]],
+    });
+    this.unpackingForm = this.fb.group({
+      response: ["", Validators.required],
+    });
+    if (this.data.status == "form") {
+      if (this.data.animal[0] == "Attitude") {
+        this.word = "Attitude";
+        this.description = this.attitude[this.data.animal[1]];
+        this.tempStatus = this.culturalStatus[this.data.animal[1]];
+      } else if (this.data.animal[0] == "Empathy") {
+        this.word = "Empathy";
+        this.description = this.empathy[this.data.animal[1]];
+        this.tempStatus = this.culturalStatus[this.data.animal[1]];
+      } else if (this.data.animal[0] == "Policy") {
+        this.word = "Policy";
+        this.description = this.policy[this.data.animal[1]];
+        this.tempStatus = this.culturalStatus[this.data.animal[1]];
+      } else if (this.data.animal[0] == "Professionalism") {
+        this.word = "Professionalism";
+        this.description = this.professionalism[this.data.animal[1]];
+        this.tempStatus = this.culturalStatus[this.data.animal[1]];
+      } else if (this.data.animal[0] == "Teaching Practice") {
+        this.word = "Teaching Practice";
+        this.description = this.teaching[this.data.animal[1]];
+        this.tempStatus = this.culturalStatus[this.data.animal[1]];
+      }
+    } else if (this.data.status == "score") {
+      if (this.data.animal[0] == "Attitude") {
+        this.word = "Attitude";
+        var i = this.attitudeOrder.indexOf(this.data.animal[1]);
+        this.description = this.attitude[i];
+        this.meanValue = this.data.animal[2];
+        this.scores = this.data.animal[3];
+        this.questions = this.data.animal[4];
+      } else if (this.data.animal[0] == "Empathy") {
+        this.word = "Empathy";
+        var i = this.empathyOrder.indexOf(this.data.animal[1]);
+        this.description = this.empathy[i];
+        this.meanValue = this.data.animal[2];
+        this.scores = this.data.animal[3];
+        this.questions = this.data.animal[4];
+      } else if (this.data.animal[0] == "Policy") {
+        this.word = "Policy";
+        var i = this.policyOrder.indexOf(this.data.animal[1]);
+        this.description = this.policy[i];
+        this.meanValue = this.data.animal[2];
+        this.scores = this.data.animal[3];
+        this.questions = this.data.animal[4];
+      } else if (this.data.animal[0] == "Professionalism") {
+        this.word = "Professionalism";
+        var i = this.professionalismOrder.indexOf(this.data.animal[1]);
+        this.description = this.professionalism[i];
+        this.meanValue = this.data.animal[2];
+        this.scores = this.data.animal[3];
+        this.questions = this.data.animal[4];
+      } else if (this.data.animal[0] == "Teaching Practice") {
+        this.word = "Teaching Practice";
+        var i = this.teachingOrder.indexOf(this.data.animal[1]);
+        this.description = this.teaching[i];
+        this.meanValue = this.data.animal[2];
+        this.scores = this.data.animal[3];
+        this.questions = this.data.animal[4];
+      }
+      this.meanNumber = this.meanValue;
 
-            if (this.meanValue >= 0 && this.meanValue <= 1) {
-                if (this.meanValue == 1) this.meanValue = this.columnHeadings[0];
-                else this.meanValue = " somewhere between Cultural Destructiveness and Cultural Incapacity";
-            }
-            if (this.meanValue > 1 && this.meanValue <= 2) {
-                if (this.meanValue == 2) this.meanValue = this.columnHeadings[1];
-                else this.meanValue = " somewhere between Cultural Incapacity and Cultural Blindness";
-            }
-            if (this.meanValue > 2 && this.meanValue <= 3) {
-                if (this.meanValue == 3) this.meanValue = this.columnHeadings[2];
-                else this.meanValue = " somewhere between Cultural Blindness and Cultural PreCompetence";
-            }
-            if (this.meanValue > 3 && this.meanValue <= 4) {
-                if (this.meanValue == 4) this.meanValue = this.columnHeadings[3];
-                else this.meanValue = " somewhere between Cultural PreCompetence and Cultural Competence";
-            }
-            if (this.meanValue > 4 && this.meanValue <= 5) {
-                if (this.meanValue == 5) this.meanValue = this.columnHeadings[4];
-                else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
-            }
-            if (this.meanValue > 5) {
-                if (this.meanValue == 5) this.meanValue = this.columnHeadings[4];
-                else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
-            }
-            for (let key in this.questions) {
-                this.questions2.push(key);
-                this.questions1.push(this.questions[key]);
-            }
-        } else if (this.data.status == "form1") {
-            if (this.data.animal[0] == "Attitude") {
-                this.word = "Attitude";
-                this.description = this.attitude[this.data.animal[1]];
-                this.tempStatus = this.culturalStatus[this.data.animal[1]];
-                this.questions = this.data.animal[4];
-                this.scores = this.data.animal[5];
-            } else if (this.data.animal[0] == "Empathy") {
-                this.word = "Empathy";
-                this.description = this.empathy[this.data.animal[1]];
-                this.tempStatus = this.culturalStatus[this.data.animal[1]];
-                this.questions = this.data.animal[4];
-                this.scores = this.data.animal[5];
-            } else if (this.data.animal[0] == "Policy") {
-                this.word = "Policy";
-                this.description = this.policy[this.data.animal[1]];
-                this.tempStatus = this.culturalStatus[this.data.animal[1]];
-                this.questions = this.data.animal[4];
-                this.scores = this.data.animal[5];
-            } else if (this.data.animal[0] == "Professionalism") {
-                this.word = "Professionalism";
-                this.description = this.professionalism[this.data.animal[1]];
-                this.tempStatus = this.culturalStatus[this.data.animal[1]];
-                this.questions = this.data.animal[4];
-                this.scores = this.data.animal[5];
-            } else if (this.data.animal[0] == "Teaching Practice") {
-                this.word = "Teaching Practice";
-                this.description = this.teaching[this.data.animal[1]];
-                this.tempStatus = this.culturalStatus[this.data.animal[1]];
-                this.questions = this.data.animal[4];
-                this.scores = this.data.animal[5];
-            }
-            this.questions1 = [];
-            this.questions2 = [];
-            this.scores1 = [];
-            this.comments = this.data.animal[6];
-            var temp = 0;
-            for (let key in this.scores) {
-                temp = temp + this.scores[key];
-                if (this.scores[key] == 1) {
-                    this.scores1[key] = this.columnHeadings[0];
-                }
-                if (this.scores[key] == 2) {
-                    this.scores1[key] = this.columnHeadings[1];
-                }
-                if (this.scores[key] == 3) {
-                    this.scores1[key] = this.columnHeadings[2];
-                }
-                if (this.scores[key] == 4) {
-                    this.scores1[key] = this.columnHeadings[3];
-                }
-                if (this.scores[key] == 5) {
-                    this.scores1[key] = this.columnHeadings[4];
-                }
-            }
-            this.meanValue = temp / 4.0;
-            this.meanNumber = temp / 4.0;
-            if (this.meanValue >= 0 && this.meanValue <= 1) {
-                if (this.meanValue == 1) this.meanValue = this.columnHeadings[0];
-                else this.meanValue = " somewhere between Cultural Destructiveness and Cultural Incapacity";
-            }
-            if (this.meanValue > 1 && this.meanValue <= 2) {
-                if (this.meanValue == 2) this.meanValue = this.columnHeadings[1];
-                else this.meanValue = " somewhere between Cultural Incapacity and Cultural Blindness";
-            }
-            if (this.meanValue > 2 && this.meanValue <= 3) {
-                if (this.meanValue == 3) this.meanValue = this.columnHeadings[2];
-                else this.meanValue = " somewhere between Cultural Blindness and Cultural PreCompetence";
-            }
-            if (this.meanValue > 3 && this.meanValue <= 4) {
-                if (this.meanValue == 4) this.meanValue = this.columnHeadings[3];
-                else this.meanValue = " somewhere between Cultural PreCompetence and Cultural Competence";
-            }
-            if (this.meanValue > 4 && this.meanValue <= 5) {
-                if (this.meanValue == 5) this.meanValue = this.columnHeadings[4];
-                else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
-            }
-            if (this.meanValue > 5) {
-                if (this.meanValue == 5) this.meanValue = this.columnHeadings[4];
-                else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
-            }
+      this.questions1 = [];
+      this.questions2 = [];
+      this.scores1 = [];
+      for (let key in this.scores) {
+        if (this.scores[key] == 1) {
+          this.scores1[key] = this.columnHeadings[0];
+        }
+        if (this.scores[key] == 2) {
+          this.scores1[key] = this.columnHeadings[1];
+        }
+        if (this.scores[key] == 3) {
+          this.scores1[key] = this.columnHeadings[2];
+        }
+        if (this.scores[key] == 4) {
+          this.scores1[key] = this.columnHeadings[3];
+        }
+        if (this.scores[key] == 5) {
+          this.scores1[key] = this.columnHeadings[4];
+        }
+      }
 
-            for (let key in this.questions) {
-                this.questions2.push(key);
-                this.questions1.push(this.questions[key]);
-            }
-        } else if (this.data.status == "word") {
-            if (this.data.animal == "Attitude") {
-                this.description =
-                    "Attitude B. (Cultural Blindness) - Black students have the same opportunities and access to attend college as their white peers.";
-            } else if (this.data.animal == "Empathy") {
-                this.description =
-                    "Empathy E. (Cultural Destructiveness) - A school counselor advised a biracial student that they would appear more professional if they perm their hair (removing the kinks) for their upcoming college visits.";
-            }
+      if (this.meanValue >= 0 && this.meanValue <= 1) {
+        if (this.meanValue == 1) this.meanValue = this.columnHeadings[0];
+        else this.meanValue = " somewhere between Cultural Destructiveness and Cultural Incapacity";
+      }
+      if (this.meanValue > 1 && this.meanValue <= 2) {
+        if (this.meanValue == 2) this.meanValue = this.columnHeadings[1];
+        else this.meanValue = " somewhere between Cultural Incapacity and Cultural Blindness";
+      }
+      if (this.meanValue > 2 && this.meanValue <= 3) {
+        if (this.meanValue == 3) this.meanValue = this.columnHeadings[2];
+        else this.meanValue = " somewhere between Cultural Blindness and Cultural PreCompetence";
+      }
+      if (this.meanValue > 3 && this.meanValue <= 4) {
+        if (this.meanValue == 4) this.meanValue = this.columnHeadings[3];
+        else this.meanValue = " somewhere between Cultural PreCompetence and Cultural Competence";
+      }
+      if (this.meanValue > 4 && this.meanValue <= 5) {
+        if (this.meanValue == 5) this.meanValue = this.columnHeadings[4];
+        else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
+      }
+      if (this.meanValue > 5) {
+        if (this.meanValue == 5) this.meanValue = this.columnHeadings[4];
+        else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
+      }
+      for (let key in this.questions) {
+        this.questions2.push(key);
+        this.questions1.push(this.questions[key]);
+      }
+    } else if (this.data.status == "form1") {
+      if (this.data.animal[0] == "Attitude") {
+        this.word = "Attitude";
+        this.description = this.attitude[this.data.animal[1]];
+        this.tempStatus = this.culturalStatus[this.data.animal[1]];
+        this.questions = this.data.animal[4];
+        this.scores = this.data.animal[5];
+      } else if (this.data.animal[0] == "Empathy") {
+        this.word = "Empathy";
+        this.description = this.empathy[this.data.animal[1]];
+        this.tempStatus = this.culturalStatus[this.data.animal[1]];
+        this.questions = this.data.animal[4];
+        this.scores = this.data.animal[5];
+      } else if (this.data.animal[0] == "Policy") {
+        this.word = "Policy";
+        this.description = this.policy[this.data.animal[1]];
+        this.tempStatus = this.culturalStatus[this.data.animal[1]];
+        this.questions = this.data.animal[4];
+        this.scores = this.data.animal[5];
+      } else if (this.data.animal[0] == "Professionalism") {
+        this.word = "Professionalism";
+        this.description = this.professionalism[this.data.animal[1]];
+        this.tempStatus = this.culturalStatus[this.data.animal[1]];
+        this.questions = this.data.animal[4];
+        this.scores = this.data.animal[5];
+      } else if (this.data.animal[0] == "Teaching Practice") {
+        this.word = "Teaching Practice";
+        this.description = this.teaching[this.data.animal[1]];
+        this.tempStatus = this.culturalStatus[this.data.animal[1]];
+        this.questions = this.data.animal[4];
+        this.scores = this.data.animal[5];
+      }
+      this.questions1 = [];
+      this.questions2 = [];
+      this.scores1 = [];
+      this.comments = this.data.animal[6];
+      var temp = 0;
+      for (let key in this.scores) {
+        temp = temp + this.scores[key];
+        if (this.scores[key] == 1) {
+          this.scores1[key] = this.columnHeadings[0];
+        }
+        if (this.scores[key] == 2) {
+          this.scores1[key] = this.columnHeadings[1];
+        }
+        if (this.scores[key] == 3) {
+          this.scores1[key] = this.columnHeadings[2];
         }
+        if (this.scores[key] == 4) {
+          this.scores1[key] = this.columnHeadings[3];
+        }
+        if (this.scores[key] == 5) {
+          this.scores1[key] = this.columnHeadings[4];
+        }
+      }
+      this.meanValue = temp / 4.0;
+      this.meanNumber = temp / 4.0;
+      if (this.meanValue >= 0 && this.meanValue <= 1) {
+        if (this.meanValue == 1) this.meanValue = this.columnHeadings[0];
+        else this.meanValue = " somewhere between Cultural Destructiveness and Cultural Incapacity";
+      }
+      if (this.meanValue > 1 && this.meanValue <= 2) {
+        if (this.meanValue == 2) this.meanValue = this.columnHeadings[1];
+        else this.meanValue = " somewhere between Cultural Incapacity and Cultural Blindness";
+      }
+      if (this.meanValue > 2 && this.meanValue <= 3) {
+        if (this.meanValue == 3) this.meanValue = this.columnHeadings[2];
+        else this.meanValue = " somewhere between Cultural Blindness and Cultural PreCompetence";
+      }
+      if (this.meanValue > 3 && this.meanValue <= 4) {
+        if (this.meanValue == 4) this.meanValue = this.columnHeadings[3];
+        else this.meanValue = " somewhere between Cultural PreCompetence and Cultural Competence";
+      }
+      if (this.meanValue > 4 && this.meanValue <= 5) {
+        if (this.meanValue == 5) this.meanValue = this.columnHeadings[4];
+        else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
+      }
+      if (this.meanValue > 5) {
+        if (this.meanValue == 5) this.meanValue = this.columnHeadings[4];
+        else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
+      }
+
+      for (let key in this.questions) {
+        this.questions2.push(key);
+        this.questions1.push(this.questions[key]);
+      }
+    } else if (this.data.status == "word") {
+      if (this.data.animal == "Attitude") {
+        this.description =
+          "Attitude B. (Cultural Blindness) - Black students have the same opportunities and access to attend college as their white peers.";
+      } else if (this.data.animal == "Empathy") {
+        this.description =
+          "Empathy E. (Cultural Destructiveness) - A school counselor advised a biracial student that they would appear more professional if they perm their hair (removing the kinks) for their upcoming college visits.";
+      }
     }
+  }
 }
diff --git a/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.css b/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.css
index 40f0e34..9999d07 100644
--- a/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.css
+++ b/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.css
@@ -1,119 +1,119 @@
 .w1-wrap {
-    background: linear-gradient(to bottom left, rgb(173, 178, 255), #d6f9ff);
-    width: 100%;
-    height: 96%;
-    top: 30px;
-    left: 0;
-    z-index: 1000;
-    overflow: auto;
-    text-align: center;
-    padding: 20px;
-    position: absolute;
+  background: linear-gradient(to bottom left, rgb(173, 178, 255), #d6f9ff);
+  width: 100%;
+  height: 96%;
+  top: 30px;
+  left: 0;
+  z-index: 1000;
+  overflow: auto;
+  text-align: center;
+  padding: 20px;
+  position: absolute;
 }
 
 h3 {
-    /* font-family: 'Loto', sans-serif; */
-    font-family: 'Loto', sans-serif;
+  /* font-family: 'Loto', sans-serif; */
+  font-family: "Loto", sans-serif;
 }
 
 .card-img-top {
-    width: 120px;
-    height: 120px;
+  width: 120px;
+  height: 120px;
 }
 
 .row {
-    margin: 0 !important;
-    text-align: center;
+  margin: 0 !important;
+  text-align: center;
 }
 
 .w1-wrap .col {
-    padding: 0 !important;
+  padding: 0 !important;
 }
 
 .header {
-    background-color: #d6f9ff;
-    font-size: 2vw;
-    color: rgb(173, 178, 255);
-    text-align: center;
-    padding: 1vw 0 !important;
-    line-height: 150%;
+  background-color: #d6f9ff;
+  font-size: 2vw;
+  color: rgb(173, 178, 255);
+  text-align: center;
+  padding: 1vw 0 !important;
+  line-height: 150%;
 }
 
 h2 {
-    font-size: 2vw;
-    line-height: 150%;
-    color: black;
-    line-height: 150%;
-    text-align: center;
+  font-size: 2vw;
+  line-height: 150%;
+  color: black;
+  line-height: 150%;
+  text-align: center;
 }
 
 .mat-card {
-    margin: 2vw 8vw;
-    padding: 0 !important;
+  margin: 2vw 8vw;
+  padding: 0 !important;
 }
 
 .content {
-    padding: 2vw;
+  padding: 2vw;
 }
 
 .col-2 {
-    text-align: center;
+  text-align: center;
 }
 
 @media screen and (min-width: 500px) {
-    .outer {
-        width: 6vw;
-        margin-top: 1vw;
-        display: inline-block;
-    }
-    .btn {
-        width: 6vw;
-        display: inline-block;
-    }
-    .btn:hover,
-    .btn:focus {
-        outline: none;
-        box-shadow: none;
-    }
-    .overlay {
-        position: absolute;
-        top: 1vw;
-        bottom: 0;
-        left: 9vw;
-        right: 0;
-        width: 6vw;
-        opacity: 0.6;
-        transition: .3s ease;
-        display: none;
-        background-color: rgb(208, 253, 208);
-    }
+  .outer {
+    width: 6vw;
+    margin-top: 1vw;
+    display: inline-block;
+  }
+  .btn {
+    width: 6vw;
+    display: inline-block;
+  }
+  .btn:hover,
+  .btn:focus {
+    outline: none;
+    box-shadow: none;
+  }
+  .overlay {
+    position: absolute;
+    top: 1vw;
+    bottom: 0;
+    left: 9vw;
+    right: 0;
+    width: 6vw;
+    opacity: 0.6;
+    transition: 0.3s ease;
+    display: none;
+    background-color: rgb(208, 253, 208);
+  }
 }
 
 @media screen and (max-width: 499px) {
-    .outer {
-        width: 13vw;
-        margin-top: 6vw;
-        display: inline-block;
-    }
-    .btn {
-        width: 13vw;
-        display: inline-block;
-    }
-    .btn:hover,
-    .btn:focus {
-        outline: none;
-        box-shadow: none;
-    }
-    .overlay {
-        position: absolute;
-        top: 6vw;
-        bottom: 0;
-        left: 4vw;
-        right: 0;
-        width: 13vw;
-        opacity: 0.6;
-        transition: .3s ease;
-        display: none;
-        background-color: rgb(208, 253, 208);
-    }
-}
\ No newline at end of file
+  .outer {
+    width: 13vw;
+    margin-top: 6vw;
+    display: inline-block;
+  }
+  .btn {
+    width: 13vw;
+    display: inline-block;
+  }
+  .btn:hover,
+  .btn:focus {
+    outline: none;
+    box-shadow: none;
+  }
+  .overlay {
+    position: absolute;
+    top: 6vw;
+    bottom: 0;
+    left: 4vw;
+    right: 0;
+    width: 13vw;
+    opacity: 0.6;
+    transition: 0.3s ease;
+    display: none;
+    background-color: rgb(208, 253, 208);
+  }
+}
diff --git a/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.html b/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.html
index d676788..d754a61 100644
--- a/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.html
+++ b/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.html
@@ -1,22 +1,17 @@
 <h1 mat-dialog-title>
-    <h3>Choose your Avatar</h3>
+  <h3>Choose your Avatar</h3>
 </h1>
 <div mat-dialog-content>
-
-
-    <div class="row col-12">
-        <div class="row">
-            <div class="col-3" *ngFor="let ball of arr1">
-                <div class="outer">
-                    <button class="btn" id="1{{ball}}">
-                    <img class="card-img-top" id="1{{ball}}" [src]="ball" (click) = "avatarClick(ball)">
-                </button>
-                    <div class="overlay" id="*{{ball}}">
-                    </div>
-                </div>
-            </div>
-
+  <div class="row col-12">
+    <div class="row">
+      <div class="col-3" *ngFor="let ball of arr1">
+        <div class="outer">
+          <button class="btn" id="1{{ ball }}">
+            <img class="card-img-top" id="1{{ ball }}" [src]="ball" (click)="avatarClick(ball)" />
+          </button>
+          <div class="overlay" id="*{{ ball }}"></div>
         </div>
+      </div>
     </div>
-
-</div>
\ No newline at end of file
+  </div>
+</div>
diff --git a/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.spec.ts b/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.spec.ts
index 2c1d31f..7d4b988 100644
--- a/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.spec.ts
+++ b/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { DashboardDialoComponent } from './dashboard-dialo.component';
+import { DashboardDialoComponent } from "./dashboard-dialo.component";
 
-describe('DashboardDialoComponent', () => {
+describe("DashboardDialoComponent", () => {
   let component: DashboardDialoComponent;
   let fixture: ComponentFixture<DashboardDialoComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ DashboardDialoComponent ]
-    })
-    .compileComponents();
+      declarations: [DashboardDialoComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('DashboardDialoComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.ts b/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.ts
index a2d3a49..130e889 100644
--- a/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.ts
+++ b/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.ts
@@ -4,41 +4,41 @@ import Swal from "sweetalert2";
 import { PreSurveyService } from "src/app/services/preSurvey.service";
 
 export interface DialogData {
-    animal;
+  animal;
 }
 @Component({
-    selector: "app-dashboard-dialo",
-    templateUrl: "./dashboard-dialo.component.html",
-    styleUrls: ["./dashboard-dialo.component.css"],
+  selector: "app-dashboard-dialo",
+  templateUrl: "./dashboard-dialo.component.html",
+  styleUrls: ["./dashboard-dialo.component.css"],
 })
 export class DashboardDialoComponent implements OnInit {
-    arr1 = [
-        "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar1.png?alt=media&token=43a091f7-a828-4f7b-9478-991de35a5f5c",
-        "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar2.png?alt=media&token=f2020833-12c5-4597-9b1c-b723c988d4d5",
-        "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar3.png?alt=media&token=66de0c48-1d0c-4511-ba34-94e6d6fdcf9a",
-        "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar4.jpeg?alt=media&token=2c1f1544-d5ee-4f2b-9bd8-c08b5cb7a1b6",
-        "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar5.png?alt=media&token=4ccb76eb-871b-4c6c-9390-f89023c88bde",
-        "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar6.png?alt=media&token=809414a2-fba6-4815-aae6-775bcb5c7a83",
-        "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar7.png?alt=media&token=405e6677-93d5-4f3b-9c84-fe65a4ddb0a7",
-        "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/dog.png?alt=media&token=4bf29ae2-7ddd-4eab-bb0e-749f885bda0b",
-    ];
-    constructor(
-        public dialogRef: MatDialogRef<DashboardDialoComponent>,
-        public profileService: PreSurveyService,
-        @Inject(MAT_DIALOG_DATA) public data: DialogData
-    ) {}
+  arr1 = [
+    "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar1.png?alt=media&token=43a091f7-a828-4f7b-9478-991de35a5f5c",
+    "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar2.png?alt=media&token=f2020833-12c5-4597-9b1c-b723c988d4d5",
+    "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar3.png?alt=media&token=66de0c48-1d0c-4511-ba34-94e6d6fdcf9a",
+    "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar4.jpeg?alt=media&token=2c1f1544-d5ee-4f2b-9bd8-c08b5cb7a1b6",
+    "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar5.png?alt=media&token=4ccb76eb-871b-4c6c-9390-f89023c88bde",
+    "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar6.png?alt=media&token=809414a2-fba6-4815-aae6-775bcb5c7a83",
+    "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar7.png?alt=media&token=405e6677-93d5-4f3b-9c84-fe65a4ddb0a7",
+    "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/dog.png?alt=media&token=4bf29ae2-7ddd-4eab-bb0e-749f885bda0b",
+  ];
+  constructor(
+    public dialogRef: MatDialogRef<DashboardDialoComponent>,
+    public profileService: PreSurveyService,
+    @Inject(MAT_DIALOG_DATA) public data: DialogData
+  ) {}
 
-    avatarClick(avatar) {
-        //
-        this.data.animal = avatar;
-        this.profileService.postProfile({ photo_profile: avatar, id: this.data["userID"] }).subscribe((res) => {
-            Swal.fire({
-                text: "Profile Picture Changed",
-                icon: "success",
-            }).then((res) => {});
-        });
+  avatarClick(avatar) {
+    //
+    this.data.animal = avatar;
+    this.profileService.postProfile({ photo_profile: avatar, id: this.data["userID"] }).subscribe((res) => {
+      Swal.fire({
+        text: "Profile Picture Changed",
+        icon: "success",
+      }).then((res) => {});
+    });
 
-        this.dialogRef.close(avatar);
-    }
-    ngOnInit(): void {}
+    this.dialogRef.close(avatar);
+  }
+  ngOnInit(): void {}
 }
diff --git a/src/app/components/dashboard/dashboard.component.css b/src/app/components/dashboard/dashboard.component.css
index 1e28f7d..ab51307 100644
--- a/src/app/components/dashboard/dashboard.component.css
+++ b/src/app/components/dashboard/dashboard.component.css
@@ -1,433 +1,431 @@
 @media screen and (min-width: 992px) {
-    .home-wrap {
-        padding-top: 100px;
-    }
+  .home-wrap {
+    padding-top: 100px;
+  }
 }
 
 .icon-select {
-    width: 0px;
+  width: 0px;
 }
 
 .icon-select .selected-box {
-    position: relative;
-    margin: 0px;
-    padding: 0px;
-    width: 70px;
-    height: 60px;
-    border: 1px solid #999999;
-    -webkit-border-radius: 3px;
-    -moz-border-radius: 3px;
-    border-radius: 3px;
+  position: relative;
+  margin: 0px;
+  padding: 0px;
+  width: 70px;
+  height: 60px;
+  border: 1px solid #999999;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
 }
 
 .icon-select .selected-box:hover {
-    position: relative;
-    margin: 0px;
-    padding: 0px;
-    width: 70px;
-    height: 60px;
-    border: 1px solid #000000;
-    background-color: #FFFFFF;
-    -webkit-border-radius: 3px;
-    -moz-border-radius: 3px;
-    border-radius: 3px;
+  position: relative;
+  margin: 0px;
+  padding: 0px;
+  width: 70px;
+  height: 60px;
+  border: 1px solid #000000;
+  background-color: #ffffff;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
 }
 
 .icon-select .selected-icon {
-    position: absolute;
-    margin: 0px;
-    padding: 0px;
-    top: 5px;
-    left: 5px;
-    width: 48px;
-    /* sil */
-    height: 48px;
-    /* sil */
-    -webkit-border-radius: 3px;
-    -moz-border-radius: 3px;
-    border-radius: 3px;
+  position: absolute;
+  margin: 0px;
+  padding: 0px;
+  top: 5px;
+  left: 5px;
+  width: 48px;
+  /* sil */
+  height: 48px;
+  /* sil */
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
 }
 
 .icon-select .component-icon {
-    position: absolute;
-    bottom: 5px;
-    right: 4px;
+  position: absolute;
+  bottom: 5px;
+  right: 4px;
 }
 
 .icon-select .box {
-    position: absolute;
-    top: 0px;
-    left: 71px;
-    margin: 0px;
-    padding: 0px;
-    width: 170px;
-    height: 170px;
-    border: 1px solid #EEEEEE;
-    background-color: #EEEEEE;
-    -webkit-border-radius: 3px;
-    -moz-border-radius: 3px;
-    border-radius: 3px;
-    overflow: auto;
+  position: absolute;
+  top: 0px;
+  left: 71px;
+  margin: 0px;
+  padding: 0px;
+  width: 170px;
+  height: 170px;
+  border: 1px solid #eeeeee;
+  background-color: #eeeeee;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+  overflow: auto;
 }
 
 .icon-select .icon {
-    position: relative;
-    margin: 5px 0px 0px 5px;
-    padding: 0px;
-    width: 48px;
-    height: 48px;
-    border: 1px solid #CCCCCC;
-    background-color: #FFFFFF;
-    -webkit-border-radius: 3px;
-    -moz-border-radius: 3px;
-    border-radius: 3px;
-    overflow: hidden;
-    float: left;
+  position: relative;
+  margin: 5px 0px 0px 5px;
+  padding: 0px;
+  width: 48px;
+  height: 48px;
+  border: 1px solid #cccccc;
+  background-color: #ffffff;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+  overflow: hidden;
+  float: left;
 }
 
 .icon-select .icon:hover {
-    border: 1px solid #000000;
+  border: 1px solid #000000;
 }
 
 .icon-select .icon.selected {
-    position: relative;
-    margin: 5px 0px 0px 5px;
-    padding: 0px;
-    width: 48px;
-    height: 48px;
-    border: 1px solid #EEEEEE;
-    background-color: #EEEEEE;
-    -webkit-border-radius: 3px;
-    -moz-border-radius: 3px;
-    border-radius: 3px;
-    overflow: hidden;
-    float: left;
+  position: relative;
+  margin: 5px 0px 0px 5px;
+  padding: 0px;
+  width: 48px;
+  height: 48px;
+  border: 1px solid #eeeeee;
+  background-color: #eeeeee;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+  overflow: hidden;
+  float: left;
 }
 
 .circle {
-    border-radius: 50%;
-    width: 150px;
-    height: 150px;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    margin-top: auto;
-    margin-bottom: auto;
+  border-radius: 50%;
+  width: 150px;
+  height: 150px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  margin-top: auto;
+  margin-bottom: auto;
 }
 
 img {
-    border-radius: 50%;
-    width: 60px;
-    height: 60px;
+  border-radius: 50%;
+  width: 60px;
+  height: 60px;
 }
 
 .initials {
-    color: #ffffff;
-    font-size: 20px;
-    line-height: 19px;
-    letter-spacing: 0.2625;
+  color: #ffffff;
+  font-size: 20px;
+  line-height: 19px;
+  letter-spacing: 0.2625;
 }
 
 .leftCards {
-    margin-bottom: 10px;
+  margin-bottom: 10px;
 }
 
 .profileImg {
-    border-radius: 50%;
-    display: block;
-    margin-left: auto;
-    margin-right: auto;
-    width: 150px;
-    height: 150px;
+  border-radius: 50%;
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+  width: 150px;
+  height: 150px;
 }
 
 .div-wrap {
-    width: 500px;
+  width: 500px;
 }
 
 p {
-    font-family: 'Loto', sans-serif;
+  font-family: "Loto", sans-serif;
 }
 
 li {
-    font-family: 'Loto', sans-serif;
-    font-size: 15px;
-    margin: 15px;
+  font-family: "Loto", sans-serif;
+  font-size: 15px;
+  margin: 15px;
 }
 
 h3 {
-    font-family: 'Loto', sans-serif;
-    margin-bottom: 40px;
+  font-family: "Loto", sans-serif;
+  margin-bottom: 40px;
 }
 
 .mat-card {
-    background-color: #edf6f9;
+  background-color: #edf6f9;
 }
 
 .inputField {
-    width: 100%;
+  width: 100%;
 }
 
-
 /* Chrome, Safari, Edge, Opera */
 
 input::-webkit-outer-spin-button,
 input::-webkit-inner-spin-button {
-    -webkit-appearance: none;
-    margin: 0;
+  -webkit-appearance: none;
+  margin: 0;
 }
 
-
 /* Firefox */
 
-input[type=number] {
-    -moz-appearance: textfield;
+input[type="number"] {
+  -moz-appearance: textfield;
 }
 
 ::ng-deep .mat-tab-header {
-    display: none !important;
+  display: none !important;
 }
 
 ::ng-deep .mat-tooltip {
-    font-size: 15px !important;
+  font-size: 15px !important;
 }
 
 p {
-    text-align: justify;
-    text-justify: inter-word;
-    font-size: 15px;
+  text-align: justify;
+  text-justify: inter-word;
+  font-size: 15px;
 }
 
 h2 {
-    /* font-family: 'Loto', sans-serif; */
-    font-family: 'Loto', sans-serif;
+  /* font-family: 'Loto', sans-serif; */
+  font-family: "Loto", sans-serif;
 }
 
 ::ng-deep .mat-checkbox-layout {
-    white-space: normal !important;
+  white-space: normal !important;
 }
 
 .title {
-    background-color: #f8c045;
-    text-align: center;
-    padding: 8px 0;
-    margin-bottom: 20px;
+  background-color: #f8c045;
+  text-align: center;
+  padding: 8px 0;
+  margin-bottom: 20px;
 }
 
 h1 {
-    margin-bottom: 5px !important;
-    margin-top: 5px;
-    font-size: 20px;
+  margin-bottom: 5px !important;
+  margin-top: 5px;
+  font-size: 20px;
 }
 
 ::ng-deep .custom-dialog .mat-dialog-container {
-    padding: 0 !important;
+  padding: 0 !important;
 }
 
 .dialog-wrap {
-    padding: 10px;
+  padding: 10px;
 }
 
 .mat-error {
-    text-align: center;
-    margin-bottom: 25px;
+  text-align: center;
+  margin-bottom: 25px;
 }
 
 input::-webkit-outer-spin-button,
 input::-webkit-inner-spin-button {
-    -webkit-appearance: none;
-    margin: 0;
+  -webkit-appearance: none;
+  margin: 0;
 }
 
 .row {
-    margin: 0 !important;
+  margin: 0 !important;
 }
 
 .col-lg-12 {
-    padding: 0 !important;
+  padding: 0 !important;
 }
 
 .btn {
-    background-color: #f8c045;
-    color: black;
-    padding: 5px;
-    margin-top: 5px;
-    float: right;
-    border-radius: 5px;
-    margin-bottom: 20px;
-    margin-right: 15px;
+  background-color: #f8c045;
+  color: black;
+  padding: 5px;
+  margin-top: 5px;
+  float: right;
+  border-radius: 5px;
+  margin-bottom: 20px;
+  margin-right: 15px;
 }
 
 .btn:hover,
 .btn:focus,
 .btn:active {
-    outline: none;
-    box-shadow: none;
+  outline: none;
+  box-shadow: none;
 }
 
 .close {
-    font-size: 25px;
-    color: red;
-    float: right;
-    margin-right: 20px;
-    margin-top: 10px;
-    cursor: pointer;
+  font-size: 25px;
+  color: red;
+  float: right;
+  margin-right: 20px;
+  margin-top: 10px;
+  cursor: pointer;
 }
 
 .outer {
-    padding: 10px 30px;
+  padding: 10px 30px;
 }
 
 .circles {
-    height: 45px;
-    width: 45px;
-    border: 2px solid #eeeeee;
-    background-color: #eeeeee;
-    border-radius: 50%;
-    display: inline-block;
-    cursor: pointer;
+  height: 45px;
+  width: 45px;
+  border: 2px solid #eeeeee;
+  background-color: #eeeeee;
+  border-radius: 50%;
+  display: inline-block;
+  cursor: pointer;
 }
 
 .active {
-    border: 2px solid rgb(5, 204, 5);
-    background-color: rgb(5, 204, 5);
-    width: 200px;
-    height: 5px;
-    margin-bottom: 13px;
-    display: inline-block;
-    text-align: center;
-    margin: "0 auto";
+  border: 2px solid rgb(5, 204, 5);
+  background-color: rgb(5, 204, 5);
+  width: 200px;
+  height: 5px;
+  margin-bottom: 13px;
+  display: inline-block;
+  text-align: center;
+  margin: "0 auto";
 }
 
 .current {
-    background-color: rgb(5, 204, 5);
-    cursor: no-drop;
+  background-color: rgb(5, 204, 5);
+  cursor: no-drop;
 }
 
 .bar {
-    width: 200px;
-    height: 5px;
-    margin-bottom: 13px;
-    border: 2px solid #e4e3e3;
-    background-color: #e4e3e3;
-    display: inline-block;
-    text-align: center;
-    margin: "0 auto";
+  width: 200px;
+  height: 5px;
+  margin-bottom: 13px;
+  border: 2px solid #e4e3e3;
+  background-color: #e4e3e3;
+  display: inline-block;
+  text-align: center;
+  margin: "0 auto";
 }
 
 .icon {
-    margin: 8px;
+  margin: 8px;
 }
 
 .chartsRadial {
-    margin-bottom: -200px;
+  margin-bottom: -200px;
 }
 
 .alert {
-    text-align: center;
+  text-align: center;
 }
 
 .alert .mat-card {
-    display: inline-block;
+  display: inline-block;
 }
 
 h3 {
-    font-size: 20px;
-    text-align: center;
+  font-size: 20px;
+  text-align: center;
 }
 
 .status-btn {
-    border: none;
-    background-color: #f8c045;
-    color: black;
-    padding: 10px 40px;
-    display: inline-block;
-    border-radius: 5px;
-    margin: 20px;
+  border: none;
+  background-color: #f8c045;
+  color: black;
+  padding: 10px 40px;
+  display: inline-block;
+  border-radius: 5px;
+  margin: 20px;
 }
 
 .status-btn:hover,
 .status-btn:focus,
 .status-btn:active {
-    border: none;
-    outline: none;
-    box-shadow: none;
+  border: none;
+  outline: none;
+  box-shadow: none;
 }
 
 .legend {
-    margin-bottom: 40px;
+  margin-bottom: 40px;
 }
 
 .color1 {
-    height: 15px;
-    width: 15px;
-    border: 2px solid #eeeeee;
-    background-color: #eeeeee;
-    border-radius: 50%;
-    display: inline-block;
+  height: 15px;
+  width: 15px;
+  border: 2px solid #eeeeee;
+  background-color: #eeeeee;
+  border-radius: 50%;
+  display: inline-block;
 }
 
 .color2 {
-    height: 15px;
-    width: 15px;
-    border: 2px solid #ffa500;
-    background-color: #ffa500;
-    border-radius: 50%;
-    display: inline-block;
+  height: 15px;
+  width: 15px;
+  border: 2px solid #ffa500;
+  background-color: #ffa500;
+  border-radius: 50%;
+  display: inline-block;
 }
 
 .color3 {
-    height: 15px;
-    width: 15px;
-    border: 2px solid rgb(5, 204, 5);
-    background-color: rgb(5, 204, 5);
-    border-radius: 50%;
-    display: inline-block;
+  height: 15px;
+  width: 15px;
+  border: 2px solid rgb(5, 204, 5);
+  background-color: rgb(5, 204, 5);
+  border-radius: 50%;
+  display: inline-block;
 }
 
 small {
-    margin-left: 10px;
+  margin-left: 10px;
 }
 
 .mat-hint {
-    color: rgb(0, 132, 255);
-    cursor: pointer;
+  color: rgb(0, 132, 255);
+  cursor: pointer;
 }
 
 ::ng-deep .mat-form-field-appearance-outline .mat-form-field-subscript-wrapper {
-    padding: 0 !important;
+  padding: 0 !important;
 }
 
 ::ng-deep .mat-datepicker-content-touch .mat-calendar {
-    width: 0 !important;
-    height: 0 !important;
+  width: 0 !important;
+  height: 0 !important;
 }
 
-.status{
-    margin-top: 40px;
+.status {
+  margin-top: 40px;
 }
 
-@media screen and (max-width: 991px){
-    .activity{
-        margin-top: 20px;
-    }
+@media screen and (max-width: 991px) {
+  .activity {
+    margin-top: 20px;
+  }
 }
 
-.profile .mat-card{
-    display: flex;
-    flex-direction: column;
-    height: 100%;
+.profile .mat-card {
+  display: flex;
+  flex-direction: column;
+  height: 100%;
 }
 
-.outer{
-    display: flex;
-    margin: 0 50px;
+.outer {
+  display: flex;
+  margin: 0 50px;
 }
 
-.content{
-    margin: 20px 50px;
+.content {
+  margin: 20px 50px;
 }
 
-.content .mat-card{
-    padding: 20px 50px;
+.content .mat-card {
+  padding: 20px 50px;
 }
diff --git a/src/app/components/dashboard/dashboard.component.html b/src/app/components/dashboard/dashboard.component.html
index 6485479..bf2b44a 100644
--- a/src/app/components/dashboard/dashboard.component.html
+++ b/src/app/components/dashboard/dashboard.component.html
@@ -1,149 +1,189 @@
 <div class="home-wrap">
-    <!-- <div class="row col-lg-12"> -->
-        <!-- <div class="col-lg-6"> -->
-            <div class="col-lg-12" *ngIf="profile">
-                <div class="row col-lg-12">
-                    <div class="col-lg-6">
-                        <mat-card>
-                            <img class="profileImg" src="../../assets/profile.jpg">
-                            <mat-card-content>
-                                <h2 style="width: 100%; text-align: center;">PROFILE</h2>
-                                <p>Name: John Doe</p>
-                                <p style="margin-top: -10px;">Email : john@gmail.com</p>
-                                <p style="margin-top: -10px;">Phone : (757)-339-1234</p>
-                            </mat-card-content>
-                        </mat-card>
-                    </div>
-                    <div class="col-lg-6">
-                        <mat-card>
-                            <h2>ACTIVITY</h2>
-                            <ul>
-                            <li>Completed Pre-Survey on <span style="color: red;"> March 25, 2021</span></li>
-                            <li>Completed CPCQ Form on <span style="color: red;"> March 26, 2021</span></li>
-                            <li>Started Unpacking of CPCQ Form answers on <span style="color: red;"> March 26, 2021</span></li>
-                            <li>You will receive an email notifying you to login into your profile and review your facilitator's comments by <span style="color: red;"> April 10, 2021</span></li>
-                            </ul>
-                        </mat-card>
-                    </div>
-
+  <!-- <div class="row col-lg-12"> -->
+  <!-- <div class="col-lg-6"> -->
+  <div class="col-lg-12" *ngIf="profile">
+    <div class="row col-lg-12">
+      <div class="col-lg-6">
+        <mat-card>
+          <img class="profileImg" src="../../assets/profile.jpg" />
+          <mat-card-content>
+            <h2 style="width: 100%; text-align: center">PROFILE</h2>
+            <p>Name: John Doe</p>
+            <p style="margin-top: -10px">Email : john@gmail.com</p>
+            <p style="margin-top: -10px">Phone : (757)-339-1234</p>
+          </mat-card-content>
+        </mat-card>
+      </div>
+      <div class="col-lg-6">
+        <mat-card>
+          <h2>ACTIVITY</h2>
+          <ul>
+            <li>Completed Pre-Survey on <span style="color: red"> March 25, 2021</span></li>
+            <li>Completed CPCQ Form on <span style="color: red"> March 26, 2021</span></li>
+            <li>Started Unpacking of CPCQ Form answers on <span style="color: red"> March 26, 2021</span></li>
+            <li>
+              You will receive an email notifying you to login into your profile and review your facilitator's comments
+              by <span style="color: red"> April 10, 2021</span>
+            </li>
+          </ul>
+        </mat-card>
+      </div>
+    </div>
+    <div class="col-lg-12">
+      <mat-card>
+        <mat-card-content>
+          <div class="col-lg-12">
+            <span *ngFor="let item of statusIcons; let i = index">
+              <span matTooltip="{{ statusNames[i] }}" class="circles" [class.current]="i <= currentStatus"
+                ><mat-icon class="icon">{{ item }}</mat-icon></span
+              >
+              <span
+                [class.bar]="i >= currentStatus"
+                [class.active]="i < currentStatus"
+                *ngIf="i != statusIcons.length - 1"
+                style="width: 65px"
+              ></span>
+            </span>
+          </div>
+        </mat-card-content>
+      </mat-card>
+    </div>
+  </div>
+
+  <div class="row outer" *ngIf="!profile">
+    <div class="col-lg-5 profile">
+      <mat-card>
+        <div class="row col-lg-12">
+          <div class="col-lg-4">
+            <script
+              type="text/javascript"
+              ng:autobind
+              src="http://code.angularjs.org/0.10.4/angular-0.10.4.js"
+            ></script>
+            <script type="text/javascript" src="http://bug7a.github.io/iconselect.js/sample/lib/iscroll.js"></script>
+            <div ng:controller="Ctrl">
+              <div id="my-icon-select"></div>
+            </div>
+            <img *ngIf="!showInitials" [src]="avatarLink" class="profileImg" (click)="openDialog()" />
+            <div *ngIf="showInitials" class="circle" style="background-color: #118ab2" (click)="openDialog()">
+              <div class="initials">
+                {{ initials }}
+              </div>
+            </div>
+            <br />
+            <p (click)="openDialog()" style="text-align: center; width: 100%">Choose Your Avatar</p>
+
+            <br />
+            <!-- <img class="profileImg" src="../../assets/profile.jpg"> -->
+          </div>
+          <div class="col-lg-8">
+            <mat-card-content>
+              <h2 style="width: 100%; text-align: center">USER PROFILE</h2>
+              <br />
+              <div class="row">
+                <div class="col-12">
+                  <p>Username: {{ userName }}</p>
                 </div>
-                <div class="col-lg-12">
-                    <mat-card>
-                        <mat-card-content>
-                            <div class="col-lg-12">
-                                <span *ngFor="let item of statusIcons; let i = index">
-                                <span matTooltip="{{statusNames[i]}}" class="circles" [class.current]="i <= currentStatus" ><mat-icon class="icon">{{item}}</mat-icon></span>
-                                <span [class.bar]="i >= currentStatus" [class.active]="i < currentStatus" *ngIf="(i != statusIcons.length-1)" style="width: 65px;"></span>
-                                </span>
-                            </div>
-                        </mat-card-content>
-                    </mat-card>
+                <div class="col-12">
+                  <p>Email: {{ email }}</p>
                 </div>
-            </div>
-
-            <div class="row outer" *ngIf="!profile">
-                <div class="col-lg-5 profile">
-                    <mat-card>
-                        <div class="row col-lg-12">
-                            <div class="col-lg-4">
-                                <script type="text/javascript" ng:autobind src="http://code.angularjs.org/0.10.4/angular-0.10.4.js"></script>
-                                <script type="text/javascript" src="http://bug7a.github.io/iconselect.js/sample/lib/iscroll.js"></script>
-                                <div ng:controller="Ctrl">
-
-                                    <div id="my-icon-select"></div>
-
-                                </div>
-                                <img *ngIf="!showInitials" [src]="avatarLink" class="profileImg" (click)="openDialog()">
-                                <div *ngIf="showInitials" class="circle" style="background-color:#118ab2;" (click)="openDialog()">
-
-                                    <div class="initials">
-                                        {{initials}}
-                                    </div>
-                                </div>
-                                <br/>
-                                <p  (click)="openDialog()" style="text-align: center; width: 100%;">Choose Your Avatar</p>
-
-                                <br>
-                                <!-- <img class="profileImg" src="../../assets/profile.jpg"> -->
-                            </div>
-                            <div class="col-lg-8">
-                                <mat-card-content>
-                                    <h2 style="width: 100%; text-align: center;"> USER PROFILE</h2>
-                                    <br>
-                                    <div class="row">
-                                        <div class="col-12">
-                                            <p>Username: {{userName}}</p>
-                                        </div>
-                                        <div class="col-12">
-                                            <p>Email: {{email}}</p>
-                                        </div>
-                                    </div>
-                                    <div class="row">
-                                        <div class="col-12">
-                                            <p>Gender: {{gender}}</p>
-                                        </div>
-                                        <div class="col-12">
-                                            <p>Location: {{location}}</p>
-                                        </div>
-                                    </div>
-                                </mat-card-content>
-                            </div>
-                        </div>
-                    </mat-card>
+              </div>
+              <div class="row">
+                <div class="col-12">
+                  <p>Gender: {{ gender }}</p>
                 </div>
-                <div class="col-lg-7 activity">
-                    <mat-card>
-                        <h2>CPCDP ACTIVITIES</h2>
-                        <ul>
-                            <li>Completed Pre-Survey on <span style="color: red;"> {{createdat}}.</span></li>
-                            <li *ngIf="currentStatus >= 1">Cultural Proficiency Continuum Q-Sort form completed on <span style="color: red;"> March 26, 2021.</span></li>
-                            <li *ngIf="!(currentStatus >= 1)">Cultural Proficiency Continuum Q-Sort form is pending your completion.</li>
-
-                            <li *ngIf="currentStatus >= 2">Cultural Proficiency Continuum Q-Sort reactions (i.e., unpacking) completed on <span style="color: red;"> March 26, 2021.</span></li>
-                            <li *ngIf="!(currentStatus >= 2)">Cultural Proficiency Continuum Q-Sort reactions (i.e., unpacking) are pending your completion.</li>
-                            
-                            <li *ngIf="(currentStatus >= 3)" >Your facilitator's comments on your reactions were completed on <span style="color: red;">{{createdat}}.</span></li>
-                            <li *ngIf="!(currentStatus >= 3)" >Your facilitator's comments on your reactions are pending the facilitator's completion. (You will receive an email notifying you to login into your profile and review your facilitator's reactions.</li>
-
-                            <li *ngIf="(currentStatus >= 4)" >Post-Survey completed on <span style="color: red;">{{createdat}}.</span></li>
-                            <li *ngIf="!(currentStatus >= 4)" >Post-Survey is pending your completion.</li>
-
-                        </ul>
-
-                        <div class="col-lg-12 status">
-                            <span *ngFor="let item of statusIcons; let i = index">
-                            <span matTooltip="{{statusNames[i]}}" class="circles" [class.current]="i <= currentStatus" ><mat-icon class="icon">{{item}}</mat-icon></span>
-                            <span [class.bar]="i >= currentStatus" [class.active]="i < currentStatus" *ngIf="(i != statusIcons.length-1)" style="width: 65px;"></span>
-                            </span>
-                        </div>
-                    </mat-card>
+                <div class="col-12">
+                  <p>Location: {{ location }}</p>
                 </div>
-            </div>
-        <!-- </div> -->
-
-        <div class="content">
-            <mat-card>
-                <mat-card-content>
-                    <h2>Cultural Proficiency Continuum Q-Sort: A Majority-Minority PreK-12 Schooling Context                    </h2>
-                    <p style="font-size: 20px;">Before engaging with the Cultural Proficiency Continuum Q-Sort (CPCQ), situate yourself as a new teacher in a U.S. public school that educates a <span matTooltip='Specific to the United States, a majority-minority student population is when the "number of one or more racial or ethnic minorities is greater than the White population" (Cormier, 2021, p. 17).'
-                            style="font-style: italic; font-weight: bold;">majority-minority student population</span>. You are at this school for an interview as a potential new teacher. The principal is taking you on a tour of the school during which you
-                        will observe a variety of culturally proficient interactions. While you are completing CPCQ, consider how you may react to these interactions during your tour.
-                    </p>
-                    <!-- <p><span style="font-weight: bold;">Note:</span> Your data and responses are confidential and will not be used for research or published without your signed consent. Thank you for your engagement and participation.</p> -->
-
-                    <ng-lottie speed="0.1" height="170px" [options]="options" (animationCreated)="animationCreated($event)"></ng-lottie>
-
-                </mat-card-content>
-                <mat-card-actions>
-                    <button mat-raised-button style="background-color: #29ABE2;" routerLink="/pcqform">
-                       CPCQ Directions
-                    </button>
-                </mat-card-actions>
-            </mat-card>
-
-
+              </div>
+            </mat-card-content>
+          </div>
         </div>
-
-    <!-- </div> -->
-
-</div>
\ No newline at end of file
+      </mat-card>
+    </div>
+    <div class="col-lg-7 activity">
+      <mat-card>
+        <h2>CPCDP ACTIVITIES</h2>
+        <ul>
+          <li>
+            Completed Pre-Survey on <span style="color: red"> {{ createdat }}.</span>
+          </li>
+          <li *ngIf="currentStatus >= 1">
+            Cultural Proficiency Continuum Q-Sort form completed on
+            <span style="color: red"> March 26, 2021.</span>
+          </li>
+          <li *ngIf="!(currentStatus >= 1)">Cultural Proficiency Continuum Q-Sort form is pending your completion.</li>
+
+          <li *ngIf="currentStatus >= 2">
+            Cultural Proficiency Continuum Q-Sort reactions (i.e., unpacking) completed on
+            <span style="color: red"> March 26, 2021.</span>
+          </li>
+          <li *ngIf="!(currentStatus >= 2)">
+            Cultural Proficiency Continuum Q-Sort reactions (i.e., unpacking) are pending your completion.
+          </li>
+
+          <li *ngIf="currentStatus >= 3">
+            Your facilitator's comments on your reactions were completed on
+            <span style="color: red">{{ createdat }}.</span>
+          </li>
+          <li *ngIf="!(currentStatus >= 3)">
+            Your facilitator's comments on your reactions are pending the facilitator's completion. (You will receive an
+            email notifying you to login into your profile and review your facilitator's reactions.
+          </li>
+
+          <li *ngIf="currentStatus >= 4">
+            Post-Survey completed on <span style="color: red">{{ createdat }}.</span>
+          </li>
+          <li *ngIf="!(currentStatus >= 4)">Post-Survey is pending your completion.</li>
+        </ul>
+
+        <div class="col-lg-12 status">
+          <span *ngFor="let item of statusIcons; let i = index">
+            <span matTooltip="{{ statusNames[i] }}" class="circles" [class.current]="i <= currentStatus"
+              ><mat-icon class="icon">{{ item }}</mat-icon></span
+            >
+            <span
+              [class.bar]="i >= currentStatus"
+              [class.active]="i < currentStatus"
+              *ngIf="i != statusIcons.length - 1"
+              style="width: 65px"
+            ></span>
+          </span>
+        </div>
+      </mat-card>
+    </div>
+  </div>
+  <!-- </div> -->
+
+  <div class="content">
+    <mat-card>
+      <mat-card-content>
+        <h2>Cultural Proficiency Continuum Q-Sort: A Majority-Minority PreK-12 Schooling Context</h2>
+        <p style="font-size: 20px">
+          Before engaging with the Cultural Proficiency Continuum Q-Sort (CPCQ), situate yourself as a new teacher in a
+          U.S. public school that educates a
+          <span
+            matTooltip='Specific to the United States, a majority-minority student population is when the "number of one or more racial or ethnic minorities is greater than the White population" (Cormier, 2021, p. 17).'
+            style="font-style: italic; font-weight: bold"
+            >majority-minority student population</span
+          >. You are at this school for an interview as a potential new teacher. The principal is taking you on a tour
+          of the school during which you will observe a variety of culturally proficient interactions. While you are
+          completing CPCQ, consider how you may react to these interactions during your tour.
+        </p>
+        <!-- <p><span style="font-weight: bold;">Note:</span> Your data and responses are confidential and will not be used for research or published without your signed consent. Thank you for your engagement and participation.</p> -->
+
+        <ng-lottie
+          speed="0.1"
+          height="170px"
+          [options]="options"
+          (animationCreated)="animationCreated($event)"
+        ></ng-lottie>
+      </mat-card-content>
+      <mat-card-actions>
+        <button mat-raised-button style="background-color: #29abe2" routerLink="/pcqform">CPCQ Directions</button>
+      </mat-card-actions>
+    </mat-card>
+  </div>
+
+  <!-- </div> -->
+</div>
diff --git a/src/app/components/dashboard/dashboard.component.spec.ts b/src/app/components/dashboard/dashboard.component.spec.ts
index 9c996c3..93afd51 100644
--- a/src/app/components/dashboard/dashboard.component.spec.ts
+++ b/src/app/components/dashboard/dashboard.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { DashboardComponent } from './dashboard.component';
+import { DashboardComponent } from "./dashboard.component";
 
-describe('DashboardComponent', () => {
+describe("DashboardComponent", () => {
   let component: DashboardComponent;
   let fixture: ComponentFixture<DashboardComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ DashboardComponent ]
-    })
-    .compileComponents();
+      declarations: [DashboardComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('DashboardComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/dashboard/dashboard.component.ts b/src/app/components/dashboard/dashboard.component.ts
index 5ceff27..e6d4ab4 100644
--- a/src/app/components/dashboard/dashboard.component.ts
+++ b/src/app/components/dashboard/dashboard.component.ts
@@ -7,353 +7,353 @@ import { AnimationOptions } from "ngx-lottie";
 import { PreSurveyService } from "src/app/services/preSurvey.service";
 import Swal from "sweetalert2";
 import {
-    ApexNonAxisChartSeries,
-    ApexPlotOptions,
-    ApexChart,
-    ApexFill,
-    ChartComponent,
-    ApexLegend,
-    ApexResponsive,
+  ApexNonAxisChartSeries,
+  ApexPlotOptions,
+  ApexChart,
+  ApexFill,
+  ChartComponent,
+  ApexLegend,
+  ApexResponsive,
 } from "ng-apexcharts";
 
 export interface DialogData {
-    animal;
+  animal;
 }
 
 export type ChartOptions2 = {
-    series: ApexNonAxisChartSeries;
-    chart: ApexChart;
-    labels: string[];
-    colors: string[];
-    legend: ApexLegend;
-    plotOptions: ApexPlotOptions;
-    responsive: ApexResponsive | ApexResponsive[];
+  series: ApexNonAxisChartSeries;
+  chart: ApexChart;
+  labels: string[];
+  colors: string[];
+  legend: ApexLegend;
+  plotOptions: ApexPlotOptions;
+  responsive: ApexResponsive | ApexResponsive[];
 };
 
 export type ChartOptions1 = {
-    series: ApexNonAxisChartSeries;
-    chart: ApexChart;
-    labels: string[];
-    plotOptions: ApexPlotOptions;
+  series: ApexNonAxisChartSeries;
+  chart: ApexChart;
+  labels: string[];
+  plotOptions: ApexPlotOptions;
 };
 
 export type ChartOptions = {
-    series: ApexNonAxisChartSeries;
-    chart: ApexChart;
-    labels: string[];
-    plotOptions: ApexPlotOptions;
-    fill: ApexFill;
+  series: ApexNonAxisChartSeries;
+  chart: ApexChart;
+  labels: string[];
+  plotOptions: ApexPlotOptions;
+  fill: ApexFill;
 };
 @Component({
-    selector: "app-dashboard",
-    templateUrl: "./dashboard.component.html",
-    styleUrls: ["./dashboard.component.css"],
+  selector: "app-dashboard",
+  templateUrl: "./dashboard.component.html",
+  styleUrls: ["./dashboard.component.css"],
 })
 export class DashboardComponent implements OnInit {
-    statusNames = ["Pre-Survey", "CPCQ Form", "Unpacking", "Feedback", "View Results", "Post Survey"];
-    statusIcons = ["edit", "developer_board", "add_comment", "edit", "bar_chart", "chrome_reader_mode"];
-    currentStatus = 0;
-    selectedSatus = 0;
-    profile = false;
-    avatarLink: string;
-    profileDetails: any;
-    userName: any;
-    email: any;
-    location: any;
-    gender: any;
-    createdat: any;
-    public photoUrl: string;
+  statusNames = ["Pre-Survey", "CPCQ Form", "Unpacking", "Feedback", "View Results", "Post Survey"];
+  statusIcons = ["edit", "developer_board", "add_comment", "edit", "bar_chart", "chrome_reader_mode"];
+  currentStatus = 0;
+  selectedSatus = 0;
+  profile = false;
+  avatarLink: string;
+  profileDetails: any;
+  userName: any;
+  email: any;
+  location: any;
+  gender: any;
+  createdat: any;
+  public photoUrl: string;
 
-    public name: string = "Nihaarika Jagadish";
+  public name: string = "Nihaarika Jagadish";
 
-    public showInitials = false;
-    public initials: string;
-    public circleColor: string;
+  public showInitials = false;
+  public initials: string;
+  public circleColor: string;
 
-    private colors = [
-        "#EB7181", // red
-        "#468547", // green
-        "#FFD558", // yellow
-        "#3670B2", // blue
-    ];
+  private colors = [
+    "#EB7181", // red
+    "#468547", // green
+    "#FFD558", // yellow
+    "#3670B2", // blue
+  ];
 
-    @ViewChild("chart") chart: ChartComponent;
-    public chartOptions: Partial<ChartOptions>;
-    public chartOptions1: Partial<ChartOptions1>;
-    public chartOptions2: Partial<ChartOptions2>;
+  @ViewChild("chart") chart: ChartComponent;
+  public chartOptions: Partial<ChartOptions>;
+  public chartOptions1: Partial<ChartOptions1>;
+  public chartOptions2: Partial<ChartOptions2>;
 
-    options: AnimationOptions = {
-        path: "https://assets4.lottiefiles.com/packages/lf20_6pzxbf3o/free_site_survey.json",
-    };
+  options: AnimationOptions = {
+    path: "https://assets4.lottiefiles.com/packages/lf20_6pzxbf3o/free_site_survey.json",
+  };
 
-    animationCreated(animationItem: AnimationItem): void {}
+  animationCreated(animationItem: AnimationItem): void {}
 
-    openDialog1(i) {
-        this.chartOptions2 = {
-            series: [76, 67, 61, 90, 56],
-            chart: {
-                height: 300,
-                type: "radialBar",
-                events: {
-                    legendClick: function (chartContext, seriesIndex, config) {
-                        if (seriesIndex == 0) {
-                            Swal.fire({
-                                title: "Attitude",
-                                html: "A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status. <br /> <br /> <span><b> B.4 </b> Black students have the same opportunities and access to attend college as their white peers. <br/> <br /><span><b> C.1 </b> Students who wear dreadlocks as a hairstyle are a distraction in the classroom. <br/> <br /> D.3 It should be required for students to remove hair accessories that are associated with their culture, tribe, sexuality, or religion. <br/> <br /> E.5 All students who live in the United States deserve a quality public education, even those students whose parents are undocumented immigrants. <br/> F.6 All faculty and staff within a school setting have equal ability to transfer knowledge to students in regards to life, culture, character, and/or academic content.",
-                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-                            }).then((res) => {
-                                window.location.reload();
-                            });
-                        } else if (seriesIndex == 1) {
-                            Swal.fire({
-                                title: "Empathy",
-                                html: "A.2 A 10th-grade male died as a result of a car accident during an illegal street race. A group of teachers will not attend the funeral because of the activity that led to the student’s cause of death. <br /> <br /> <span><b> B.4 </b> A public school Teacher is grounded by the philosophy of their religion. Throughout their career as an educator; they have learned to be welcoming to others’ cultural and religious beliefs even if those beliefs are in conflict with their own.<br/> <br /><span><b> C.1 </b> In two weeks, the 8th grade teaching cluster will be getting a new math teacher who is Muslim. Next week’s professional development is dedicated to learning about the customs and etiquette of Islam to ensure that the new colleague feels welcomed in their new school.<br/> <br /> D.3  An Asian student scored an 85 percent on today’s math quiz. The teacher expressed disappointment in the student by saying,Come on, you are Asian! You should’ve scored better than this. <br/> <br /> E.5  A school counselor advised a biracial student that they would appear more professional if they perm their hair (removing the kinks) for their upcoming college visits. <br/> F.6 Your colleague was pulled over by the police on the way to work this morning. You hear other colleagues in the break room discussing the reasons why they were pulled over, and all of the suspected reasons were related to what they may have done (i.e., speeding, running a stop sign, etc.), rather than acknowledging that they may have been pulled over for being a person of color driving a luxury car.",
-                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-                            }).then((res) => {
-                                window.location.reload();
-                            });
-                        } else if (seriesIndex == 2) {
-                            Swal.fire({
-                                title: "Policy",
-                                html: "A.2 A group of teachers and students are protesting the athletic department at a high school for changing the school’s logo to a silhouette of a Native American in a headdress; they have secured a place on the agenda for the next school board meeting to give a presentation on why this logo is offensive and trivializes Native Americans. <br /> <br /> <span><b> B.4 </b>  A school that does not consider factors related to culture and ethnicity in their decision-making process is more democratic than a school who does consider factors related to culture and ethnicity in their decision-making process.<br/> <br /><span><b> C.1 </b> A school leader makes a “diversity hire” to introduce new ideas around school culture, curriculum, leadership, and/or supervision. <br/> <br /> D.3 A principal implemented a policy that all faculty and staff have to participate in quarterly potlucks; they are to bring a traditional dish specific to their culture, as a way to facilitate cross-cultural discourse. <br/> <br /> E.5 Students in a high-poverty school who are absent 10 consecutive days in a marking period are referred to special education for excessive absenteeism. <br/> F.6A member of the school board is proposing a policy where English is the official language for all school related business in a community where the majority of the students’ and families’ primary language is Spanish.                ",
-                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-                            }).then((res) => {
-                                window.location.reload();
-                            });
-                        } else if (seriesIndex == 3) {
-                            Swal.fire({
-                                title: "Professionalism",
-                                html: "A.2A teacher asked the class who has traveled out of the country. A Black male raises his hand and states “I have.”  The teacher asked the student three follow-up questions to corroborate his story.                <br /> <br /> <span><b> B.4 </b> During lunch duty, teachers had a discussion in the presence of students about tomorrow’s district-wide racial sensitivity training. A teacher commented, Why do we have to attend this training; the United States is post-racial because we have a Black president.                <br/> <br /><span><b> C.1 </b> The social committee at an elementary school is planning an awards ceremony and dinner for the staff and faculty. Six of their colleagues are vegan because of their religious beliefs.  As a result, the committee has added a vegan selection to the menu to accommodate their colleagues’ religious beliefs. <br/> <br /> D.3  The reading specialist expressed some concerns to the Vice Principal about how her male students emasculates her during whole group instruction. The Vice Principal said, “Don’t worry about it, that's just how boys behave.”                 <br/> <br /> E.5  A history teacher refuses to acknowledge black history month and does not want to teach content about black history in the United States.                <br/> F.6 An AP English teacher has assigned a research paper where the students were required to write about their religion. The teacher did not let their own religious beliefs cloud their judgement; the teacher researched the student’s religion while grading the paper to offer relevant constructive feedback back on the arguments made within the paper.                ",
-                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-                            }).then((res) => {
-                                window.location.reload();
-                            });
-                        } else if (seriesIndex == 4) {
-                            Swal.fire({
-                                title: "Teaching Practice",
-                                html: "A.2 A novice teacher in a school where the majority of the students are African-American and Latino uses hip-hop as a way to make science relevant in the student's social and cultural context.                <br /> <br /> <span><b> B.4 </b>An algebra teacher who teaches in a school where the majority of the students are on free and reduced lunch requires that each student buy a specific graphing calculator for Algebra, which retails for over 100 dollars.                <br/> <br /><span><b> C.1 </b> A teacher created a seating chart that placed ‘unteachable students’ in the back of the classroom, all of whom were male: 2 Latinos and 6 African Americans.  In the same seating chart, her ‘good students,' all white, were seated in preferential seating.                <br/> <br /> D.3 A teacher puts together a petition to request a textbook company to remove the narrative about the enslavement of Africans in the United States in their history textbook to accommodate teachers’ discomfort with discussing this sensitive topic.                <br/> <br /> E.5  A teacher in a Title 1 school (high percentage of children from low-income families) checks homework for completeness rather than correctness as a strategy to improve student efficacy.                 <br/> F.6 There is an increase of LGBTQIA+ students reporting that they are being harassed both verbally and physically in United States public schools. A group of students and teachers are researching the best practices to implement and create a supportive environment for these students to voice their concerns in their school.",
-                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-                            }).then((res) => {
-                                window.location.reload();
-                            });
-                        }
-                    },
-                },
+  openDialog1(i) {
+    this.chartOptions2 = {
+      series: [76, 67, 61, 90, 56],
+      chart: {
+        height: 300,
+        type: "radialBar",
+        events: {
+          legendClick: function (chartContext, seriesIndex, config) {
+            if (seriesIndex == 0) {
+              Swal.fire({
+                title: "Attitude",
+                html: "A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status. <br /> <br /> <span><b> B.4 </b> Black students have the same opportunities and access to attend college as their white peers. <br/> <br /><span><b> C.1 </b> Students who wear dreadlocks as a hairstyle are a distraction in the classroom. <br/> <br /> D.3 It should be required for students to remove hair accessories that are associated with their culture, tribe, sexuality, or religion. <br/> <br /> E.5 All students who live in the United States deserve a quality public education, even those students whose parents are undocumented immigrants. <br/> F.6 All faculty and staff within a school setting have equal ability to transfer knowledge to students in regards to life, culture, character, and/or academic content.",
+                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+              }).then((res) => {
+                window.location.reload();
+              });
+            } else if (seriesIndex == 1) {
+              Swal.fire({
+                title: "Empathy",
+                html: "A.2 A 10th-grade male died as a result of a car accident during an illegal street race. A group of teachers will not attend the funeral because of the activity that led to the student’s cause of death. <br /> <br /> <span><b> B.4 </b> A public school Teacher is grounded by the philosophy of their religion. Throughout their career as an educator; they have learned to be welcoming to others’ cultural and religious beliefs even if those beliefs are in conflict with their own.<br/> <br /><span><b> C.1 </b> In two weeks, the 8th grade teaching cluster will be getting a new math teacher who is Muslim. Next week’s professional development is dedicated to learning about the customs and etiquette of Islam to ensure that the new colleague feels welcomed in their new school.<br/> <br /> D.3  An Asian student scored an 85 percent on today’s math quiz. The teacher expressed disappointment in the student by saying,Come on, you are Asian! You should’ve scored better than this. <br/> <br /> E.5  A school counselor advised a biracial student that they would appear more professional if they perm their hair (removing the kinks) for their upcoming college visits. <br/> F.6 Your colleague was pulled over by the police on the way to work this morning. You hear other colleagues in the break room discussing the reasons why they were pulled over, and all of the suspected reasons were related to what they may have done (i.e., speeding, running a stop sign, etc.), rather than acknowledging that they may have been pulled over for being a person of color driving a luxury car.",
+                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+              }).then((res) => {
+                window.location.reload();
+              });
+            } else if (seriesIndex == 2) {
+              Swal.fire({
+                title: "Policy",
+                html: "A.2 A group of teachers and students are protesting the athletic department at a high school for changing the school’s logo to a silhouette of a Native American in a headdress; they have secured a place on the agenda for the next school board meeting to give a presentation on why this logo is offensive and trivializes Native Americans. <br /> <br /> <span><b> B.4 </b>  A school that does not consider factors related to culture and ethnicity in their decision-making process is more democratic than a school who does consider factors related to culture and ethnicity in their decision-making process.<br/> <br /><span><b> C.1 </b> A school leader makes a “diversity hire” to introduce new ideas around school culture, curriculum, leadership, and/or supervision. <br/> <br /> D.3 A principal implemented a policy that all faculty and staff have to participate in quarterly potlucks; they are to bring a traditional dish specific to their culture, as a way to facilitate cross-cultural discourse. <br/> <br /> E.5 Students in a high-poverty school who are absent 10 consecutive days in a marking period are referred to special education for excessive absenteeism. <br/> F.6A member of the school board is proposing a policy where English is the official language for all school related business in a community where the majority of the students’ and families’ primary language is Spanish.                ",
+                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+              }).then((res) => {
+                window.location.reload();
+              });
+            } else if (seriesIndex == 3) {
+              Swal.fire({
+                title: "Professionalism",
+                html: "A.2A teacher asked the class who has traveled out of the country. A Black male raises his hand and states “I have.”  The teacher asked the student three follow-up questions to corroborate his story.                <br /> <br /> <span><b> B.4 </b> During lunch duty, teachers had a discussion in the presence of students about tomorrow’s district-wide racial sensitivity training. A teacher commented, Why do we have to attend this training; the United States is post-racial because we have a Black president.                <br/> <br /><span><b> C.1 </b> The social committee at an elementary school is planning an awards ceremony and dinner for the staff and faculty. Six of their colleagues are vegan because of their religious beliefs.  As a result, the committee has added a vegan selection to the menu to accommodate their colleagues’ religious beliefs. <br/> <br /> D.3  The reading specialist expressed some concerns to the Vice Principal about how her male students emasculates her during whole group instruction. The Vice Principal said, “Don’t worry about it, that's just how boys behave.”                 <br/> <br /> E.5  A history teacher refuses to acknowledge black history month and does not want to teach content about black history in the United States.                <br/> F.6 An AP English teacher has assigned a research paper where the students were required to write about their religion. The teacher did not let their own religious beliefs cloud their judgement; the teacher researched the student’s religion while grading the paper to offer relevant constructive feedback back on the arguments made within the paper.                ",
+                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+              }).then((res) => {
+                window.location.reload();
+              });
+            } else if (seriesIndex == 4) {
+              Swal.fire({
+                title: "Teaching Practice",
+                html: "A.2 A novice teacher in a school where the majority of the students are African-American and Latino uses hip-hop as a way to make science relevant in the student's social and cultural context.                <br /> <br /> <span><b> B.4 </b>An algebra teacher who teaches in a school where the majority of the students are on free and reduced lunch requires that each student buy a specific graphing calculator for Algebra, which retails for over 100 dollars.                <br/> <br /><span><b> C.1 </b> A teacher created a seating chart that placed ‘unteachable students’ in the back of the classroom, all of whom were male: 2 Latinos and 6 African Americans.  In the same seating chart, her ‘good students,' all white, were seated in preferential seating.                <br/> <br /> D.3 A teacher puts together a petition to request a textbook company to remove the narrative about the enslavement of Africans in the United States in their history textbook to accommodate teachers’ discomfort with discussing this sensitive topic.                <br/> <br /> E.5  A teacher in a Title 1 school (high percentage of children from low-income families) checks homework for completeness rather than correctness as a strategy to improve student efficacy.                 <br/> F.6 There is an increase of LGBTQIA+ students reporting that they are being harassed both verbally and physically in United States public schools. A group of students and teachers are researching the best practices to implement and create a supportive environment for these students to voice their concerns in their school.",
+                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+              }).then((res) => {
+                window.location.reload();
+              });
+            }
+          },
+        },
+      },
+      plotOptions: {
+        radialBar: {
+          offsetY: 0,
+          startAngle: 0,
+          endAngle: 270,
+          hollow: {
+            margin: 5,
+            size: "30%",
+            background: "transparent",
+            image: undefined,
+          },
+          dataLabels: {
+            name: {
+              show: false,
             },
-            plotOptions: {
-                radialBar: {
-                    offsetY: 0,
-                    startAngle: 0,
-                    endAngle: 270,
-                    hollow: {
-                        margin: 5,
-                        size: "30%",
-                        background: "transparent",
-                        image: undefined,
-                    },
-                    dataLabels: {
-                        name: {
-                            show: false,
-                        },
-                        value: {
-                            show: false,
-                        },
-                    },
-                },
+            value: {
+              show: false,
             },
-            colors: ["#1ab7ea", "#0084ff", "#39539E", "#0077B5"],
-            labels: ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"],
+          },
+        },
+      },
+      colors: ["#1ab7ea", "#0084ff", "#39539E", "#0077B5"],
+      labels: ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"],
+      legend: {
+        show: true,
+        floating: true,
+        fontSize: "13px",
+        position: "left",
+        labels: {
+          useSeriesColors: true,
+        },
+        formatter: function (seriesName, opts) {
+          return seriesName + ":  " + opts.w.globals.series[opts.seriesIndex];
+        },
+        itemMargin: {
+          horizontal: 3,
+        },
+      },
+      responsive: [
+        {
+          breakpoint: 480,
+          options: {
             legend: {
-                show: true,
-                floating: true,
-                fontSize: "13px",
-                position: "left",
-                labels: {
-                    useSeriesColors: true,
-                },
-                formatter: function (seriesName, opts) {
-                    return seriesName + ":  " + opts.w.globals.series[opts.seriesIndex];
-                },
-                itemMargin: {
-                    horizontal: 3,
-                },
+              show: false,
             },
-            responsive: [
-                {
-                    breakpoint: 480,
-                    options: {
-                        legend: {
-                            show: false,
-                        },
-                    },
-                },
-            ],
-        };
-    }
+          },
+        },
+      ],
+    };
+  }
 
-    openDialog() {
-        const dialogRef = this.dialog.open(DashboardDialoComponent, {
-            data: { userID: this.profileDetails[0]["id"] },
-            disableClose: true,
-        });
+  openDialog() {
+    const dialogRef = this.dialog.open(DashboardDialoComponent, {
+      data: { userID: this.profileDetails[0]["id"] },
+      disableClose: true,
+    });
 
-        dialogRef.afterClosed().subscribe((result) => {
-            this.showInitials = false;
-            this.avatarLink = result;
-        });
-    }
-    constructor(private router: Router, public dialog: MatDialog, private presurvey: PreSurveyService) {
-        this.openDialog1(1);
+    dialogRef.afterClosed().subscribe((result) => {
+      this.showInitials = false;
+      this.avatarLink = result;
+    });
+  }
+  constructor(private router: Router, public dialog: MatDialog, private presurvey: PreSurveyService) {
+    this.openDialog1(1);
 
-        this.chartOptions = {
-            series: [76],
-            chart: {
-                height: 300,
-                type: "radialBar",
-                offsetY: -20,
+    this.chartOptions = {
+      series: [76],
+      chart: {
+        height: 300,
+        type: "radialBar",
+        offsetY: -20,
+      },
+      plotOptions: {
+        radialBar: {
+          startAngle: -90,
+          endAngle: 90,
+          track: {
+            background: "#e7e7e7",
+            strokeWidth: "97%",
+            margin: 5, // margin is in pixels
+            dropShadow: {
+              enabled: true,
+              top: 2,
+              left: 0,
+              opacity: 0.31,
+              blur: 2,
             },
-            plotOptions: {
-                radialBar: {
-                    startAngle: -90,
-                    endAngle: 90,
-                    track: {
-                        background: "#e7e7e7",
-                        strokeWidth: "97%",
-                        margin: 5, // margin is in pixels
-                        dropShadow: {
-                            enabled: true,
-                            top: 2,
-                            left: 0,
-                            opacity: 0.31,
-                            blur: 2,
-                        },
-                    },
-                    dataLabels: {
-                        value: {
-                            // offsetY: -2,
-                            fontSize: "22px",
-                        },
-                        name: {
-                            show: true,
-                            fontSize: "13px",
-                            color: "green",
-                        },
-                    },
-                },
+          },
+          dataLabels: {
+            value: {
+              // offsetY: -2,
+              fontSize: "22px",
             },
-            fill: {
-                type: "gradient",
-                gradient: {
-                    shade: "light",
-                    shadeIntensity: 0.4,
-                    inverseColors: false,
-                    opacityFrom: 1,
-                    opacityTo: 1,
-                    stops: [0, 50, 53, 91],
-                },
+            name: {
+              show: true,
+              fontSize: "13px",
+              color: "green",
             },
-            labels: ["Culturally Competent"],
-        };
+          },
+        },
+      },
+      fill: {
+        type: "gradient",
+        gradient: {
+          shade: "light",
+          shadeIntensity: 0.4,
+          inverseColors: false,
+          opacityFrom: 1,
+          opacityTo: 1,
+          stops: [0, 50, 53, 91],
+        },
+      },
+      labels: ["Culturally Competent"],
+    };
 
-        this.chartOptions1 = {
-            series: [44, 55, 67, 83, 56],
-            chart: {
-                height: 200,
-                width: 300,
-                type: "radialBar",
-                events: {
-                    click: function (event, chartContext, config) {
-                        // The last parameter config contains additional information like `seriesIndex` and `dataPointIndex` for cartesian charts.
-                    },
-                },
+    this.chartOptions1 = {
+      series: [44, 55, 67, 83, 56],
+      chart: {
+        height: 200,
+        width: 300,
+        type: "radialBar",
+        events: {
+          click: function (event, chartContext, config) {
+            // The last parameter config contains additional information like `seriesIndex` and `dataPointIndex` for cartesian charts.
+          },
+        },
+      },
+      plotOptions: {
+        radialBar: {
+          dataLabels: {
+            name: {
+              fontSize: "22px",
             },
-            plotOptions: {
-                radialBar: {
-                    dataLabels: {
-                        name: {
-                            fontSize: "22px",
-                        },
-                        value: {
-                            fontSize: "16px",
-                        },
-                        total: {
-                            show: true,
-                            label: "Total",
-                            formatter: function (w) {
-                                return "249";
-                            },
-                        },
-                    },
-                },
+            value: {
+              fontSize: "16px",
             },
-            labels: ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"],
-        };
-    }
+            total: {
+              show: true,
+              label: "Total",
+              formatter: function (w) {
+                return "249";
+              },
+            },
+          },
+        },
+      },
+      labels: ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"],
+    };
+  }
 
-    public generateData(count, yrange) {
-        var i = 0;
-        var series = [];
-        while (i < count) {
-            var x = "w" + (i + 1).toString();
-            var y = Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min;
+  public generateData(count, yrange) {
+    var i = 0;
+    var series = [];
+    while (i < count) {
+      var x = "w" + (i + 1).toString();
+      var y = Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min;
 
-            series.push({
-                x: x,
-                y: y,
-            });
-            i++;
-        }
-        return series;
+      series.push({
+        x: x,
+        y: y,
+      });
+      i++;
     }
+    return series;
+  }
 
-    ngOnInit(): void {
-        if (!this.photoUrl) {
-            this.showInitials = true;
-            this.createInititals();
-
-            const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length));
-            this.circleColor = this.colors[randomIndex];
-        }
+  ngOnInit(): void {
+    if (!this.photoUrl) {
+      this.showInitials = true;
+      this.createInititals();
 
-        this.presurvey.profileData().subscribe((res) => {
-            this.profileDetails = res;
-            this.email = res[0]["email"];
-            this.location = res[0]["location"];
-            this.gender = res[0]["gender"];
-            this.userName = res[0]["first_name"];
-            this.createdat = new Date(res[0]["preSurveydate"]).toLocaleDateString("en-US", {
-                weekday: "long",
-                year: "numeric",
-                month: "long",
-                day: "numeric",
-            });
-            this.currentStatus = res[0]["status"].lastIndexOf(true);
-            //
-            if (res[0]["photo_profile"].length != 0) {
-                this.showInitials = false;
-                var lenSTr = res[0]["photo_profile"].length;
-                this.avatarLink = res[0]["photo_profile"];
-            }
-        });
+      const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length));
+      this.circleColor = this.colors[randomIndex];
     }
 
-    private createInititals(): void {
-        let initials = "";
+    this.presurvey.profileData().subscribe((res) => {
+      this.profileDetails = res;
+      this.email = res[0]["email"];
+      this.location = res[0]["location"];
+      this.gender = res[0]["gender"];
+      this.userName = res[0]["first_name"];
+      this.createdat = new Date(res[0]["preSurveydate"]).toLocaleDateString("en-US", {
+        weekday: "long",
+        year: "numeric",
+        month: "long",
+        day: "numeric",
+      });
+      this.currentStatus = res[0]["status"].lastIndexOf(true);
+      //
+      if (res[0]["photo_profile"].length != 0) {
+        this.showInitials = false;
+        var lenSTr = res[0]["photo_profile"].length;
+        this.avatarLink = res[0]["photo_profile"];
+      }
+    });
+  }
 
-        for (let i = 0; i < this.name.length; i++) {
-            if (this.name.charAt(i) === " ") {
-                continue;
-            }
+  private createInititals(): void {
+    let initials = "";
 
-            if (this.name.charAt(i) === this.name.charAt(i).toUpperCase()) {
-                initials += this.name.charAt(i);
+    for (let i = 0; i < this.name.length; i++) {
+      if (this.name.charAt(i) === " ") {
+        continue;
+      }
 
-                if (initials.length == 2) {
-                    break;
-                }
-            }
-        }
+      if (this.name.charAt(i) === this.name.charAt(i).toUpperCase()) {
+        initials += this.name.charAt(i);
 
-        this.initials = initials;
+        if (initials.length == 2) {
+          break;
+        }
+      }
     }
+
+    this.initials = initials;
+  }
 }
diff --git a/src/app/components/email-password/email-password.component.css b/src/app/components/email-password/email-password.component.css
index cb2e8a4..d0aa6e1 100644
--- a/src/app/components/email-password/email-password.component.css
+++ b/src/app/components/email-password/email-password.component.css
@@ -1,45 +1,45 @@
-.container{
-    text-align: center;
-    padding-bottom: 300px;
+.container {
+  text-align: center;
+  padding-bottom: 300px;
 }
 
 .example-card {
-    display: inline-block;
-    margin-top: 100px;
+  display: inline-block;
+  margin-top: 100px;
 }
 
 .intro {
-    top: 20%;
-    font-size: 35px;
-    text-align: center;
-    font-family: 'Loto', sans-serif, cursive;
-    color: black;
-    font-weight: bold;
+  top: 20%;
+  font-size: 35px;
+  text-align: center;
+  font-family: "Loto", sans-serif, cursive;
+  color: black;
+  font-weight: bold;
 }
 
 body {
-    font-family: 'Loto', sans-serif;
-    background-color: #f8fafb;
+  font-family: "Loto", sans-serif;
+  background-color: #f8fafb;
 }
 
-@media screen and (min-width: 992px){
-    p {
-        padding-top: 150px;
-        line-height: 150%;
-        color: #b3b3b3;
-        font-weight: 300;
-        margin: 0 20px;
-    }
+@media screen and (min-width: 992px) {
+  p {
+    padding-top: 150px;
+    line-height: 150%;
+    color: #b3b3b3;
+    font-weight: 300;
+    margin: 0 20px;
+  }
 }
 
-@media screen and (max-width: 991px){
-    p {
-        padding-top: 20px;
-        line-height: 150%;
-        color: #b3b3b3;
-        font-weight: 300;
-        margin: 0 20px;
-    }
+@media screen and (max-width: 991px) {
+  p {
+    padding-top: 20px;
+    line-height: 150%;
+    color: #b3b3b3;
+    font-weight: 300;
+    margin: 0 20px;
+  }
 }
 
 h1,
@@ -54,19 +54,19 @@ h6,
 .h4,
 .h5,
 .h6 {
-    font-family: 'Loto', sans-serif;
+  font-family: "Loto", sans-serif;
 }
 
 a {
-    -webkit-transition: .3s all ease;
-    -o-transition: .3s all ease;
-    transition: .3s all ease;
+  -webkit-transition: 0.3s all ease;
+  -o-transition: 0.3s all ease;
+  transition: 0.3s all ease;
 }
 
 a:hover {
-    text-decoration: none !important;
+  text-decoration: none !important;
 }
 
 h2 {
-    font-size: 20px;
-}
\ No newline at end of file
+  font-size: 20px;
+}
diff --git a/src/app/components/email-password/email-password.component.html b/src/app/components/email-password/email-password.component.html
index 52e97fa..8347067 100644
--- a/src/app/components/email-password/email-password.component.html
+++ b/src/app/components/email-password/email-password.component.html
@@ -1,34 +1,34 @@
 <div class="header-wrap">
-    <p class="intro">Cultural Proficiency Continuum Dialogic Protocol</p>
-    <div class="container">
-        <mat-card class="example-card">
-            <div class="mb-4">
-                <h3 style="text-align: center">Authentication Required</h3>
-            </div>
-            <form [formGroup]="forgotForm">
-                <mat-form-field appearance="outline" class="col-lg-12">
-                    <mat-label>Enter Password sent via e-mail</mat-label>
-                    <input matInput formControlName="password" [type]="hide ? 'password' : 'text'" required />
-                    <button
-                        mat-icon-button
-                        matSuffix
-                        (click)="hide = !hide"
-                        [attr.aria-label]="'Hide password'"
-                        [attr.aria-pressed]="hide"
-                    >
-                        <mat-icon>{{ hide ? "visibility_off" : "visibility" }}</mat-icon>
-                    </button>
-                    <mat-error *ngIf="forgotForm.controls.password.invalid">{{ getPasswordError() }}</mat-error>
-                </mat-form-field>
-                <input
-                    type="submit"
-                    value="Verify"
-                    class="btn text-white btn-block btn-primary"
-                    style="background-color: #29abe2; font-size: 20px"
-                    (click)="login()"
-                />
-            </form>
-        </mat-card>
-    </div>
+  <p class="intro">Cultural Proficiency Continuum Dialogic Protocol</p>
+  <div class="container">
+    <mat-card class="example-card">
+      <div class="mb-4">
+        <h3 style="text-align: center">Authentication Required</h3>
+      </div>
+      <form [formGroup]="forgotForm">
+        <mat-form-field appearance="outline" class="col-lg-12">
+          <mat-label>Enter Password sent via e-mail</mat-label>
+          <input matInput formControlName="password" [type]="hide ? 'password' : 'text'" required />
+          <button
+            mat-icon-button
+            matSuffix
+            (click)="hide = !hide"
+            [attr.aria-label]="'Hide password'"
+            [attr.aria-pressed]="hide"
+          >
+            <mat-icon>{{ hide ? "visibility_off" : "visibility" }}</mat-icon>
+          </button>
+          <mat-error *ngIf="forgotForm.controls.password.invalid">{{ getPasswordError() }}</mat-error>
+        </mat-form-field>
+        <input
+          type="submit"
+          value="Verify"
+          class="btn text-white btn-block btn-primary"
+          style="background-color: #29abe2; font-size: 20px"
+          (click)="login()"
+        />
+      </form>
+    </mat-card>
+  </div>
 </div>
 <app-footer></app-footer>
diff --git a/src/app/components/email-password/email-password.component.spec.ts b/src/app/components/email-password/email-password.component.spec.ts
index dc5de40..28c9471 100644
--- a/src/app/components/email-password/email-password.component.spec.ts
+++ b/src/app/components/email-password/email-password.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { EmailPasswordComponent } from './email-password.component';
+import { EmailPasswordComponent } from "./email-password.component";
 
-describe('EmailPasswordComponent', () => {
+describe("EmailPasswordComponent", () => {
   let component: EmailPasswordComponent;
   let fixture: ComponentFixture<EmailPasswordComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ EmailPasswordComponent ]
-    })
-    .compileComponents();
+      declarations: [EmailPasswordComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('EmailPasswordComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/email-password/email-password.component.ts b/src/app/components/email-password/email-password.component.ts
index 26ec448..8fbe0a1 100644
--- a/src/app/components/email-password/email-password.component.ts
+++ b/src/app/components/email-password/email-password.component.ts
@@ -5,65 +5,65 @@ import { Router } from "@angular/router";
 import Swal from "sweetalert2";
 import { LoginService } from "src/app/services/login.service";
 @Component({
-    selector: "app-email-password",
-    templateUrl: "./email-password.component.html",
-    styleUrls: ["./email-password.component.css"],
+  selector: "app-email-password",
+  templateUrl: "./email-password.component.html",
+  styleUrls: ["./email-password.component.css"],
 })
 export class EmailPasswordComponent implements OnInit {
-    forgotForm: FormGroup;
-    hide = true;
-    constructor(private fb: FormBuilder, private router: Router, private loginService: LoginService) {}
+  forgotForm: FormGroup;
+  hide = true;
+  constructor(private fb: FormBuilder, private router: Router, private loginService: LoginService) {}
 
-    ngOnInit(): void {
-        this.forgotForm = this.fb.group({
-            password: ["", [Validators.required]],
-            username: [""],
-        });
-    }
+  ngOnInit(): void {
+    this.forgotForm = this.fb.group({
+      password: ["", [Validators.required]],
+      username: [""],
+    });
+  }
 
-    getEmailError() {
-        if (this.forgotForm.controls.username.hasError("required")) {
-            return "Required";
-        } else {
-            return "";
-        }
+  getEmailError() {
+    if (this.forgotForm.controls.username.hasError("required")) {
+      return "Required";
+    } else {
+      return "";
     }
+  }
 
-    getPasswordError() {
-        if (this.forgotForm.controls.password.hasError("required")) {
-            return "Required";
-        } else {
-            return "";
-        }
+  getPasswordError() {
+    if (this.forgotForm.controls.password.hasError("required")) {
+      return "Required";
+    } else {
+      return "";
     }
+  }
 
-    login() {
-        if (!this.forgotForm.valid) {
-            Swal.fire({
-                text: "Please enter all the fields in the right format.",
-                icon: "error",
-            }).then((res) => {});
-        } else {
-            this.forgotForm.get("username").setValue(localStorage.getItem("username"));
-            this.loginService.login(this.forgotForm.value).subscribe(
-                (res) => {
-                    localStorage.setItem("user", res["token"]);
-                    // this.router.navigateByUrl("/changePassword")
+  login() {
+    if (!this.forgotForm.valid) {
+      Swal.fire({
+        text: "Please enter all the fields in the right format.",
+        icon: "error",
+      }).then((res) => {});
+    } else {
+      this.forgotForm.get("username").setValue(localStorage.getItem("username"));
+      this.loginService.login(this.forgotForm.value).subscribe(
+        (res) => {
+          localStorage.setItem("user", res["token"]);
+          // this.router.navigateByUrl("/changePassword")
 
-                    Swal.fire({
-                        text: "Verification Successful!",
-                        icon: "success",
-                    }).then((res) => {
-                        this.router.navigateByUrl("/changePassword");
-                    });
-                },
-                (err) => {
-                    Swal.fire({
-                        text: "Username and email do not match.",
-                        icon: "error",
-                    }).then((res) => {});
-                }
-            );
+          Swal.fire({
+            text: "Verification Successful!",
+            icon: "success",
+          }).then((res) => {
+            this.router.navigateByUrl("/changePassword");
+          });
+        },
+        (err) => {
+          Swal.fire({
+            text: "Username and email do not match.",
+            icon: "error",
+          }).then((res) => {});
         }
+      );
     }
+  }
 }
diff --git a/src/app/components/final-dashboard/final-dashboard.component.css b/src/app/components/final-dashboard/final-dashboard.component.css
index a365711..4cdb7fe 100644
--- a/src/app/components/final-dashboard/final-dashboard.component.css
+++ b/src/app/components/final-dashboard/final-dashboard.component.css
@@ -1,454 +1,452 @@
 @media screen and (min-width: 992px) {
-    .home-wrap {
-        padding-top: 100px;
-    }
+  .home-wrap {
+    padding-top: 100px;
+  }
 }
 
 .icon-select {
-    width: 0px;
+  width: 0px;
 }
 
 .icon-select .selected-box {
-    position: relative;
-    margin: 0px;
-    padding: 0px;
-    width: 70px;
-    /* sil */
-    height: 60px;
-    /* sil */
-    border: 1px solid #999999;
-    -webkit-border-radius: 3px;
-    -moz-border-radius: 3px;
-    border-radius: 3px;
+  position: relative;
+  margin: 0px;
+  padding: 0px;
+  width: 70px;
+  /* sil */
+  height: 60px;
+  /* sil */
+  border: 1px solid #999999;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
 }
 
 .icon-select .selected-box:hover {
-    position: relative;
-    margin: 0px;
-    padding: 0px;
-    width: 70px;
-    /* sil */
-    height: 60px;
-    /* sil */
-    border: 1px solid #000000;
-    background-color: #FFFFFF;
-    -webkit-border-radius: 3px;
-    -moz-border-radius: 3px;
-    border-radius: 3px;
+  position: relative;
+  margin: 0px;
+  padding: 0px;
+  width: 70px;
+  /* sil */
+  height: 60px;
+  /* sil */
+  border: 1px solid #000000;
+  background-color: #ffffff;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
 }
 
 .icon-select .selected-icon {
-    position: absolute;
-    margin: 0px;
-    padding: 0px;
-    top: 5px;
-    left: 5px;
-    width: 48px;
-    /* sil */
-    height: 48px;
-    /* sil */
-    -webkit-border-radius: 3px;
-    -moz-border-radius: 3px;
-    border-radius: 3px;
+  position: absolute;
+  margin: 0px;
+  padding: 0px;
+  top: 5px;
+  left: 5px;
+  width: 48px;
+  /* sil */
+  height: 48px;
+  /* sil */
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
 }
 
 .icon-select .component-icon {
-    position: absolute;
-    bottom: 5px;
-    right: 4px;
+  position: absolute;
+  bottom: 5px;
+  right: 4px;
 }
 
 .icon-select .box {
-    position: absolute;
-    top: 0px;
-    left: 71px;
-    margin: 0px;
-    padding: 0px;
-    width: 170px;
-    /* sil */
-    height: 170px;
-    /* sil */
-    border: 1px solid #EEEEEE;
-    background-color: #EEEEEE;
-    -webkit-border-radius: 3px;
-    -moz-border-radius: 3px;
-    border-radius: 3px;
-    overflow: auto;
-    /*
+  position: absolute;
+  top: 0px;
+  left: 71px;
+  margin: 0px;
+  padding: 0px;
+  width: 170px;
+  /* sil */
+  height: 170px;
+  /* sil */
+  border: 1px solid #eeeeee;
+  background-color: #eeeeee;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+  overflow: auto;
+  /*
      -webkit-overflow-scrolling: touch;
      */
 }
 
 .icon-select .icon {
-    position: relative;
-    margin: 5px 0px 0px 5px;
-    padding: 0px;
-    width: 48px;
-    /* sil */
-    height: 48px;
-    /* sil */
-    border: 1px solid #CCCCCC;
-    background-color: #FFFFFF;
-    -webkit-border-radius: 3px;
-    -moz-border-radius: 3px;
-    border-radius: 3px;
-    overflow: hidden;
-    float: left;
+  position: relative;
+  margin: 5px 0px 0px 5px;
+  padding: 0px;
+  width: 48px;
+  /* sil */
+  height: 48px;
+  /* sil */
+  border: 1px solid #cccccc;
+  background-color: #ffffff;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+  overflow: hidden;
+  float: left;
 }
 
 .icon-select .icon:hover {
-    border: 1px solid #000000;
+  border: 1px solid #000000;
 }
 
 .icon-select .icon.selected {
-    position: relative;
-    margin: 5px 0px 0px 5px;
-    padding: 0px;
-    width: 48px;
-    /* sil */
-    height: 48px;
-    /* sil */
-    border: 1px solid #EEEEEE;
-    background-color: #EEEEEE;
-    -webkit-border-radius: 3px;
-    -moz-border-radius: 3px;
-    border-radius: 3px;
-    overflow: hidden;
-    float: left;
+  position: relative;
+  margin: 5px 0px 0px 5px;
+  padding: 0px;
+  width: 48px;
+  /* sil */
+  height: 48px;
+  /* sil */
+  border: 1px solid #eeeeee;
+  background-color: #eeeeee;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+  overflow: hidden;
+  float: left;
 }
 
 .example-card {
-    /* max-width: 1000px;
+  /* max-width: 1000px;
      */
-    width: 1000px;
-    height: 570px;
-    position: absolute;
-    top: 50%;
-    left: 50%;
-    margin-right: -50%;
-    transform: translate(-50%, -50%);
+  width: 1000px;
+  height: 570px;
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  margin-right: -50%;
+  transform: translate(-50%, -50%);
 }
 
 .circle {
-    border-radius: 50%;
-    width: 150px;
-    height: 150px;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    /* margin-right: auto; */
-    /* margin-left: auto; */
-    margin-top: auto;
-    margin-bottom: auto;
+  border-radius: 50%;
+  width: 150px;
+  height: 150px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  /* margin-right: auto; */
+  /* margin-left: auto; */
+  margin-top: auto;
+  margin-bottom: auto;
 }
 
 img {
-    border-radius: 50%;
-    width: 60px;
-    height: 60px;
+  border-radius: 50%;
+  width: 60px;
+  height: 60px;
 }
 
 .initials {
-    color: #ffffff;
-    font-size: 20px;
-    line-height: 19px;
-    letter-spacing: 0.2625;
+  color: #ffffff;
+  font-size: 20px;
+  line-height: 19px;
+  letter-spacing: 0.2625;
 }
 
 .leftCards {
-    margin-bottom: 10px;
+  margin-bottom: 10px;
 }
 
 .profileImg {
-    border-radius: 50%;
-    display: block;
-    margin-left: auto;
-    margin-right: auto;
-    width: 150px;
-    height: 150px;
+  border-radius: 50%;
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+  width: 150px;
+  height: 150px;
 }
 
 .div-wrap {
-    width: 500px;
+  width: 500px;
 }
 
 p {
-    font-family: 'Loto', sans-serif;
+  font-family: "Loto", sans-serif;
 }
 
 li {
-    font-family: 'Loto', sans-serif;
-    font-size: 15px;
-    margin: 15px;
+  font-family: "Loto", sans-serif;
+  font-size: 15px;
+  margin: 15px;
 }
 
 h3 {
-    font-family: 'Loto', sans-serif;
-    margin-bottom: 40px;
+  font-family: "Loto", sans-serif;
+  margin-bottom: 40px;
 }
 
 .mat-card {
-    background-color: #edf6f9;
+  background-color: #edf6f9;
 }
 
 .inputField {
-    width: 100%;
+  width: 100%;
 }
 
-
 /* Chrome, Safari, Edge, Opera */
 
 input::-webkit-outer-spin-button,
 input::-webkit-inner-spin-button {
-    -webkit-appearance: none;
-    margin: 0;
+  -webkit-appearance: none;
+  margin: 0;
 }
 
-
 /* Firefox */
 
-input[type=number] {
-    -moz-appearance: textfield;
+input[type="number"] {
+  -moz-appearance: textfield;
 }
 
 ::ng-deep .mat-tab-header {
-    display: none !important;
+  display: none !important;
 }
 
 p {
-    text-align: justify;
-    text-justify: inter-word;
+  text-align: justify;
+  text-justify: inter-word;
 }
 
 h2 {
-    /* font-family: 'Loto', sans-serif; */
-    font-family: 'Loto', sans-serif;
+  /* font-family: 'Loto', sans-serif; */
+  font-family: "Loto", sans-serif;
 }
 
 ::ng-deep .mat-checkbox-layout {
-    white-space: normal !important;
+  white-space: normal !important;
 }
 
 .title {
-    background-color: #f8c045;
-    text-align: center;
-    padding: 8px 0;
-    margin-bottom: 20px;
+  background-color: #f8c045;
+  text-align: center;
+  padding: 8px 0;
+  margin-bottom: 20px;
 }
 
 h1 {
-    margin-bottom: 5px !important;
-    margin-top: 5px;
+  margin-bottom: 5px !important;
+  margin-top: 5px;
 }
 
 ::ng-deep .custom-dialog .mat-dialog-container {
-    padding: 0 !important;
+  padding: 0 !important;
 }
 
 .dialog-wrap {
-    padding: 10px;
+  padding: 10px;
 }
 
 .mat-error {
-    text-align: center;
-    margin-bottom: 25px;
+  text-align: center;
+  margin-bottom: 25px;
 }
 
 input::-webkit-outer-spin-button,
 input::-webkit-inner-spin-button {
-    -webkit-appearance: none;
-    margin: 0;
+  -webkit-appearance: none;
+  margin: 0;
 }
 
 .row {
-    margin: 0 !important;
+  margin: 0 !important;
 }
 
 .col-lg-12 {
-    padding: 0 !important;
+  padding: 0 !important;
 }
 
 .btn {
-    background-color: #f8c045;
-    color: black;
-    padding: 5px;
-    margin-top: 5px;
-    float: right;
-    border-radius: 5px;
-    margin-bottom: 20px;
-    margin-right: 15px;
+  background-color: #f8c045;
+  color: black;
+  padding: 5px;
+  margin-top: 5px;
+  float: right;
+  border-radius: 5px;
+  margin-bottom: 20px;
+  margin-right: 15px;
 }
 
 .btn:hover,
 .btn:focus,
 .btn:active {
-    outline: none;
-    box-shadow: none;
+  outline: none;
+  box-shadow: none;
 }
 
 .close {
-    font-size: 25px;
-    color: red;
-    float: right;
-    margin-right: 20px;
-    margin-top: 10px;
-    cursor: pointer;
+  font-size: 25px;
+  color: red;
+  float: right;
+  margin-right: 20px;
+  margin-top: 10px;
+  cursor: pointer;
 }
 
 .outer {
-    padding: 10px 30px;
+  padding: 10px 30px;
 }
 
 .circles {
-    height: 45px;
-    width: 45px;
-    border: 2px solid #eeeeee;
-    background-color: #eeeeee;
-    border-radius: 50%;
-    display: inline-block;
-    cursor: pointer;
+  height: 45px;
+  width: 45px;
+  border: 2px solid #eeeeee;
+  background-color: #eeeeee;
+  border-radius: 50%;
+  display: inline-block;
+  cursor: pointer;
 }
 
 .active {
-    border: 2px solid rgb(5, 204, 5);
-    background-color: rgb(5, 204, 5);
-    width: 200px;
-    height: 5px;
-    margin-bottom: 13px;
-    display: inline-block;
-    text-align: center;
-    margin: "0 auto";
+  border: 2px solid rgb(5, 204, 5);
+  background-color: rgb(5, 204, 5);
+  width: 200px;
+  height: 5px;
+  margin-bottom: 13px;
+  display: inline-block;
+  text-align: center;
+  margin: "0 auto";
 }
 
 .current {
-    background-color: rgb(5, 204, 5);
-    cursor: no-drop;
+  background-color: rgb(5, 204, 5);
+  cursor: no-drop;
 }
 
 .bar {
-    width: 200px;
-    height: 5px;
-    margin-bottom: 13px;
-    border: 2px solid #e4e3e3;
-    background-color: #e4e3e3;
-    display: inline-block;
-    text-align: center;
-    margin: "0 auto";
+  width: 200px;
+  height: 5px;
+  margin-bottom: 13px;
+  border: 2px solid #e4e3e3;
+  background-color: #e4e3e3;
+  display: inline-block;
+  text-align: center;
+  margin: "0 auto";
 }
 
 .icon {
-    margin: 8px;
+  margin: 8px;
 }
 
 .chartsRadial {
-    margin-bottom: -200px;
+  margin-bottom: -200px;
 }
 
 .alert {
-    text-align: center;
+  text-align: center;
 }
 
 .alert .mat-card {
-    display: inline-block;
+  display: inline-block;
 }
 
 h3 {
-    font-size: 20px;
-    text-align: center;
+  font-size: 20px;
+  text-align: center;
 }
 
 .status-btn {
-    border: none;
-    background-color: #f8c045;
-    color: black;
-    padding: 10px 40px;
-    display: inline-block;
-    border-radius: 5px;
-    margin: 20px;
+  border: none;
+  background-color: #f8c045;
+  color: black;
+  padding: 10px 40px;
+  display: inline-block;
+  border-radius: 5px;
+  margin: 20px;
 }
 
 .status-btn:hover,
 .status-btn:focus,
 .status-btn:active {
-    border: none;
-    outline: none;
-    box-shadow: none;
+  border: none;
+  outline: none;
+  box-shadow: none;
 }
 
 .legend {
-    margin-bottom: 40px;
+  margin-bottom: 40px;
 }
 
 .color1 {
-    height: 15px;
-    width: 15px;
-    border: 2px solid #eeeeee;
-    background-color: #eeeeee;
-    border-radius: 50%;
-    display: inline-block;
+  height: 15px;
+  width: 15px;
+  border: 2px solid #eeeeee;
+  background-color: #eeeeee;
+  border-radius: 50%;
+  display: inline-block;
 }
 
 .color2 {
-    height: 15px;
-    width: 15px;
-    border: 2px solid #ffa500;
-    background-color: #ffa500;
-    border-radius: 50%;
-    display: inline-block;
+  height: 15px;
+  width: 15px;
+  border: 2px solid #ffa500;
+  background-color: #ffa500;
+  border-radius: 50%;
+  display: inline-block;
 }
 
 .color3 {
-    height: 15px;
-    width: 15px;
-    border: 2px solid rgb(5, 204, 5);
-    background-color: rgb(5, 204, 5);
-    border-radius: 50%;
-    display: inline-block;
+  height: 15px;
+  width: 15px;
+  border: 2px solid rgb(5, 204, 5);
+  background-color: rgb(5, 204, 5);
+  border-radius: 50%;
+  display: inline-block;
 }
 
 small {
-    margin-left: 10px;
+  margin-left: 10px;
 }
 
 .mat-hint {
-    color: rgb(0, 132, 255);
-    cursor: pointer;
+  color: rgb(0, 132, 255);
+  cursor: pointer;
 }
 
 ::ng-deep .mat-form-field-appearance-outline .mat-form-field-subscript-wrapper {
-    padding: 0 !important;
+  padding: 0 !important;
 }
 
 ::ng-deep .mat-datepicker-content-touch .mat-calendar {
-    width: 0 !important;
-    height: 0 !important;
+  width: 0 !important;
+  height: 0 !important;
 }
 
-.status{
-    margin-top: 40px;
+.status {
+  margin-top: 40px;
 }
 
-@media screen and (max-width: 991px){
-    .activity{
-        margin-top: 20px;
-    }
+@media screen and (max-width: 991px) {
+  .activity {
+    margin-top: 20px;
+  }
 }
 
-.profile .mat-card{
-    display: flex;
-    flex-direction: column;
-    height: 100%;
+.profile .mat-card {
+  display: flex;
+  flex-direction: column;
+  height: 100%;
 }
 
-.outer{
-    display: flex;
-    margin: 0 50px;
+.outer {
+  display: flex;
+  margin: 0 50px;
 }
 
-.content{
-    margin: 20px 50px;
+.content {
+  margin: 20px 50px;
 }
 
-.content .mat-card{
-    padding: 20px 50px;
-}
\ No newline at end of file
+.content .mat-card {
+  padding: 20px 50px;
+}
diff --git a/src/app/components/final-dashboard/final-dashboard.component.html b/src/app/components/final-dashboard/final-dashboard.component.html
index b582a74..6e088cf 100644
--- a/src/app/components/final-dashboard/final-dashboard.component.html
+++ b/src/app/components/final-dashboard/final-dashboard.component.html
@@ -1,98 +1,129 @@
 <div class="home-wrap">
-
-    <div *ngIf="!profile">
-        <div class="row outer">
-            <div class="col-lg-5 profile">
-                <mat-card class="leftCards">
-                    <div class="row col-lg-12">
-                        <div class="col-lg-4">
-                            <script type="text/javascript" ng:autobind src="http://code.angularjs.org/0.10.4/angular-0.10.4.js"></script>
-                            <script type="text/javascript" src="http://bug7a.github.io/iconselect.js/sample/lib/iscroll.js"></script>
-                            <div ng:controller="Ctrl">
-
-                                <div id="my-icon-select"></div>
-
-                            </div>
-                            <img *ngIf="!showInitials" [src]="avatarLink" class="profileImg" (click)="openDialog()">
-                            <div *ngIf="showInitials" class="circle" style="background-color:#118ab2;" (click)="openDialog()">
-
-                                <div class="initials">
-                                    {{initials}}
-                                </div>
-                            </div>
-                            <br/>
-                            <p  (click)="openDialog()" style="width: 100%; text-align: center;">Choose Your Avatar</p>
-                        </div>
-                        <div class="col-lg-8">
-                            <mat-card-content>
-                                <h2 style="width: 100%; text-align: center;">USER PROFILE</h2>
-                                <br>
-                                <div class="row">
-                                    <div class="col-12">
-                                        <p>Username: {{userName}}</p>
-                                    </div>
-                                    <div class="col-12">
-                                        <p>Email: {{email}}</p>
-                                    </div>
-                                </div>
-                                <div class="row">
-                                    <div class="col-12">
-                                        <p>Gender: {{gender}}</p>
-                                    </div>
-                                    <div class="col-12">
-                                        <p>Location: {{location}}</p>
-                                    </div>
-                                </div>
-                            </mat-card-content>
-                        </div>
-                    </div>
-                </mat-card>
+  <div *ngIf="!profile">
+    <div class="row outer">
+      <div class="col-lg-5 profile">
+        <mat-card class="leftCards">
+          <div class="row col-lg-12">
+            <div class="col-lg-4">
+              <script
+                type="text/javascript"
+                ng:autobind
+                src="http://code.angularjs.org/0.10.4/angular-0.10.4.js"
+              ></script>
+              <script type="text/javascript" src="http://bug7a.github.io/iconselect.js/sample/lib/iscroll.js"></script>
+              <div ng:controller="Ctrl">
+                <div id="my-icon-select"></div>
+              </div>
+              <img *ngIf="!showInitials" [src]="avatarLink" class="profileImg" (click)="openDialog()" />
+              <div *ngIf="showInitials" class="circle" style="background-color: #118ab2" (click)="openDialog()">
+                <div class="initials">
+                  {{ initials }}
+                </div>
+              </div>
+              <br />
+              <p (click)="openDialog()" style="width: 100%; text-align: center">Choose Your Avatar</p>
             </div>
-            <div class="col-lg-7 activity">
-                <mat-card class="leftCards">
-                    <h2>CPCDP ACTIVITIES</h2>
-                    <ul>
-                        <li>Completed Pre-Survey on <span style="color: red;"> {{preSurveyDate}}.</span></li>
-                        <li *ngIf="currentStatus >= 1">Cultural Proficiency Continuum Q-Sort form completed on <span style="color: red;">{{responsesDate}}.</span></li>
-                        <li *ngIf="!(currentStatus >= 1)">Cultural Proficiency Continuum Q-Sort form is pending your completion.</li>
-
-                        <li *ngIf="currentStatus >= 2">Cultural Proficiency Continuum Q-Sort reactions (i.e., unpacking) completed on <span style="color: red;">{{cpcqDate}}.</span></li>
-                        <li *ngIf="!(currentStatus >= 2)">Cultural Proficiency Continuum Q-Sort reactions (i.e., unpacking) are pending your completion.</li>
-                        
-                        <li *ngIf="(currentStatus >= 3)" >Your facilitator's comments on your reactions were completed on <span style="color: red;">{{scoreDate}}.</span></li>
-                        <li *ngIf="!(currentStatus >= 3)" >Your facilitator's comments on your reactions are pending the facilitator's completion. (You will receive an email notifying you to login into your profile and review your facilitator's reactions.</li>
-
-                        <li *ngIf="(currentStatus >= 4)" >Post-Survey completed on <span style="color: red;">{{postSurveyDate}}.</span></li>
-                        <li *ngIf="!(currentStatus >= 4)" >Post-Survey is pending your completion.</li>
-
-                    </ul>
-                    <div class="col-lg-12 status">
-                        <span *ngFor="let item of statusIcons; let i = index">
-                        <span matTooltip="{{statusNames[i]}}" class="circles" [class.current]="i <= currentStatus" ><mat-icon class="icon">{{item}}</mat-icon></span>
-                        <span [class.bar]="i >= currentStatus" [class.active]="i < currentStatus" *ngIf="(i != statusIcons.length-1)" style="width: 65px;"></span>
-                        </span>
-                    </div>
-                </mat-card>
+            <div class="col-lg-8">
+              <mat-card-content>
+                <h2 style="width: 100%; text-align: center">USER PROFILE</h2>
+                <br />
+                <div class="row">
+                  <div class="col-12">
+                    <p>Username: {{ userName }}</p>
+                  </div>
+                  <div class="col-12">
+                    <p>Email: {{ email }}</p>
+                  </div>
+                </div>
+                <div class="row">
+                  <div class="col-12">
+                    <p>Gender: {{ gender }}</p>
+                  </div>
+                  <div class="col-12">
+                    <p>Location: {{ location }}</p>
+                  </div>
+                </div>
+              </mat-card-content>
             </div>
-        </div>
-    </div>
-    <div class="content">
-        <mat-card>
-            <mat-card-content>
-                <h2>Cultural Proficiency Continuum Q-Sort: A Majority-Minority PreK-12 Schooling Context
+          </div>
+        </mat-card>
+      </div>
+      <div class="col-lg-7 activity">
+        <mat-card class="leftCards">
+          <h2>CPCDP ACTIVITIES</h2>
+          <ul>
+            <li>
+              Completed Pre-Survey on <span style="color: red"> {{ preSurveyDate }}.</span>
+            </li>
+            <li *ngIf="currentStatus >= 1">
+              Cultural Proficiency Continuum Q-Sort form completed on
+              <span style="color: red">{{ responsesDate }}.</span>
+            </li>
+            <li *ngIf="!(currentStatus >= 1)">
+              Cultural Proficiency Continuum Q-Sort form is pending your completion.
+            </li>
 
-                </h2>
-                <p style="font-size: 20px;">Thank you for engaging with the Cultural Proficiency Continuum Web-Based Dialogic Protocol. At this stage, you have completed the Pre-Survey, reacted to and unpacked a host of Culturally Proficient interactions, reviewed your facilitator's feedback and scores, and completed the Post-Survey. Thank you again, and we look forward to providing you with opportunities in the future to assess and codify your cultural competence. 
+            <li *ngIf="currentStatus >= 2">
+              Cultural Proficiency Continuum Q-Sort reactions (i.e., unpacking) completed on
+              <span style="color: red">{{ cpcqDate }}.</span>
+            </li>
+            <li *ngIf="!(currentStatus >= 2)">
+              Cultural Proficiency Continuum Q-Sort reactions (i.e., unpacking) are pending your completion.
+            </li>
 
-                </p>
-                <ng-lottie speed="0.1" height="280px" [options]="options" (animationCreated)="animationCreated($event)"></ng-lottie>
-            </mat-card-content>
-            <mat-card-actions>
-                    <button mat-raised-button style="background-color: #29ABE2;" routerLink="/score">
-                        View Facilitator's Comments
-                    </button>
+            <li *ngIf="currentStatus >= 3">
+              Your facilitator's comments on your reactions were completed on
+              <span style="color: red">{{ scoreDate }}.</span>
+            </li>
+            <li *ngIf="!(currentStatus >= 3)">
+              Your facilitator's comments on your reactions are pending the facilitator's completion. (You will receive
+              an email notifying you to login into your profile and review your facilitator's reactions.
+            </li>
 
-            </mat-card-actions>
+            <li *ngIf="currentStatus >= 4">
+              Post-Survey completed on <span style="color: red">{{ postSurveyDate }}.</span>
+            </li>
+            <li *ngIf="!(currentStatus >= 4)">Post-Survey is pending your completion.</li>
+          </ul>
+          <div class="col-lg-12 status">
+            <span *ngFor="let item of statusIcons; let i = index">
+              <span matTooltip="{{ statusNames[i] }}" class="circles" [class.current]="i <= currentStatus"
+                ><mat-icon class="icon">{{ item }}</mat-icon></span
+              >
+              <span
+                [class.bar]="i >= currentStatus"
+                [class.active]="i < currentStatus"
+                *ngIf="i != statusIcons.length - 1"
+                style="width: 65px"
+              ></span>
+            </span>
+          </div>
         </mat-card>
+      </div>
     </div>
-</div>
\ No newline at end of file
+  </div>
+  <div class="content">
+    <mat-card>
+      <mat-card-content>
+        <h2>Cultural Proficiency Continuum Q-Sort: A Majority-Minority PreK-12 Schooling Context</h2>
+        <p style="font-size: 20px">
+          Thank you for engaging with the Cultural Proficiency Continuum Web-Based Dialogic Protocol. At this stage, you
+          have completed the Pre-Survey, reacted to and unpacked a host of Culturally Proficient interactions, reviewed
+          your facilitator's feedback and scores, and completed the Post-Survey. Thank you again, and we look forward to
+          providing you with opportunities in the future to assess and codify your cultural competence.
+        </p>
+        <ng-lottie
+          speed="0.1"
+          height="280px"
+          [options]="options"
+          (animationCreated)="animationCreated($event)"
+        ></ng-lottie>
+      </mat-card-content>
+      <mat-card-actions>
+        <button mat-raised-button style="background-color: #29abe2" routerLink="/score">
+          View Facilitator's Comments
+        </button>
+      </mat-card-actions>
+    </mat-card>
+  </div>
+</div>
diff --git a/src/app/components/final-dashboard/final-dashboard.component.spec.ts b/src/app/components/final-dashboard/final-dashboard.component.spec.ts
index 4566376..ed79f7d 100644
--- a/src/app/components/final-dashboard/final-dashboard.component.spec.ts
+++ b/src/app/components/final-dashboard/final-dashboard.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { FinalDashboardComponent } from './final-dashboard.component';
+import { FinalDashboardComponent } from "./final-dashboard.component";
 
-describe('FinalDashboardComponent', () => {
+describe("FinalDashboardComponent", () => {
   let component: FinalDashboardComponent;
   let fixture: ComponentFixture<FinalDashboardComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ FinalDashboardComponent ]
-    })
-    .compileComponents();
+      declarations: [FinalDashboardComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('FinalDashboardComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/final-dashboard/final-dashboard.component.ts b/src/app/components/final-dashboard/final-dashboard.component.ts
index 2a1cedf..3bb76ba 100644
--- a/src/app/components/final-dashboard/final-dashboard.component.ts
+++ b/src/app/components/final-dashboard/final-dashboard.component.ts
@@ -8,394 +8,394 @@ import { PreSurveyService } from "src/app/services/preSurvey.service";
 import { CPCQService } from "src/app/services/cpcq.service";
 import { AnimationOptions } from "ngx-lottie";
 import {
-    ApexNonAxisChartSeries,
-    ApexPlotOptions,
-    ApexChart,
-    ApexFill,
-    ChartComponent,
-    ApexLegend,
-    ApexResponsive,
+  ApexNonAxisChartSeries,
+  ApexPlotOptions,
+  ApexChart,
+  ApexFill,
+  ChartComponent,
+  ApexLegend,
+  ApexResponsive,
 } from "ng-apexcharts";
 
 export interface DialogData {
-    animal;
+  animal;
 }
 
 export type ChartOptions2 = {
-    series: ApexNonAxisChartSeries;
-    chart: ApexChart;
-    labels: string[];
-    colors: string[];
-    legend: ApexLegend;
-    plotOptions: ApexPlotOptions;
-    responsive: ApexResponsive | ApexResponsive[];
+  series: ApexNonAxisChartSeries;
+  chart: ApexChart;
+  labels: string[];
+  colors: string[];
+  legend: ApexLegend;
+  plotOptions: ApexPlotOptions;
+  responsive: ApexResponsive | ApexResponsive[];
 };
 
 export type ChartOptions1 = {
-    series: ApexNonAxisChartSeries;
-    chart: ApexChart;
-    labels: string[];
-    plotOptions: ApexPlotOptions;
+  series: ApexNonAxisChartSeries;
+  chart: ApexChart;
+  labels: string[];
+  plotOptions: ApexPlotOptions;
 };
 
 export type ChartOptions = {
-    series: ApexNonAxisChartSeries;
-    chart: ApexChart;
-    labels: string[];
-    plotOptions: ApexPlotOptions;
-    fill: ApexFill;
+  series: ApexNonAxisChartSeries;
+  chart: ApexChart;
+  labels: string[];
+  plotOptions: ApexPlotOptions;
+  fill: ApexFill;
 };
 @Component({
-    selector: "app-final-dashboard",
-    templateUrl: "./final-dashboard.component.html",
-    styleUrls: ["./final-dashboard.component.css"],
+  selector: "app-final-dashboard",
+  templateUrl: "./final-dashboard.component.html",
+  styleUrls: ["./final-dashboard.component.css"],
 })
 export class FinalDashboardComponent implements OnInit {
-    statusNames = ["Pre-Survey", "CPCQ Form", "Unpacking", "Feedback", "View Results", "Post Survey"];
-    statusIcons = ["edit", "developer_board", "add_comment", "edit", "bar_chart", "chrome_reader_mode"];
-    currentStatus = 5;
-    selectedSatus = 0;
-    profile = false;
-    avatarLink: string;
+  statusNames = ["Pre-Survey", "CPCQ Form", "Unpacking", "Feedback", "View Results", "Post Survey"];
+  statusIcons = ["edit", "developer_board", "add_comment", "edit", "bar_chart", "chrome_reader_mode"];
+  currentStatus = 5;
+  selectedSatus = 0;
+  profile = false;
+  avatarLink: string;
 
-    public photoUrl: string;
+  public photoUrl: string;
 
-    public name: string = "Nihaarika Jagadish";
+  public name: string = "Nihaarika Jagadish";
 
-    public showInitials = false;
-    public initials: string;
-    public circleColor: string;
-    public profileDetails: any;
-    public email: any;
-    public location: any;
-    public gender: any;
-    public userName: any;
-    public preSurveyDate: any;
-    public responsesDate: any;
-    public cpcqDate: any;
-    public postSurveyDate: any;
-    public scoreDate: any;
-    public finalDate: any;
+  public showInitials = false;
+  public initials: string;
+  public circleColor: string;
+  public profileDetails: any;
+  public email: any;
+  public location: any;
+  public gender: any;
+  public userName: any;
+  public preSurveyDate: any;
+  public responsesDate: any;
+  public cpcqDate: any;
+  public postSurveyDate: any;
+  public scoreDate: any;
+  public finalDate: any;
 
-    private colors = [
-        "#EB7181", // red
-        "#468547", // green
-        "#FFD558", // yellow
-        "#3670B2", // blue
-    ];
+  private colors = [
+    "#EB7181", // red
+    "#468547", // green
+    "#FFD558", // yellow
+    "#3670B2", // blue
+  ];
 
-    @ViewChild("chart") chart: ChartComponent;
-    public chartOptions: Partial<ChartOptions>;
-    public chartOptions1: Partial<ChartOptions1>;
-    public chartOptions2: Partial<ChartOptions2>;
+  @ViewChild("chart") chart: ChartComponent;
+  public chartOptions: Partial<ChartOptions>;
+  public chartOptions1: Partial<ChartOptions1>;
+  public chartOptions2: Partial<ChartOptions2>;
 
-    options: AnimationOptions = {
-        path: "https://assets4.lottiefiles.com/packages/lf20_t7jtcf8d.json",
-    };
+  options: AnimationOptions = {
+    path: "https://assets4.lottiefiles.com/packages/lf20_t7jtcf8d.json",
+  };
 
-    animationCreated(animationItem: AnimationItem): void {}
+  animationCreated(animationItem: AnimationItem): void {}
 
-    openDialog1(i) {
-        this.chartOptions2 = {
-            series: [76, 67, 61, 90, 56],
-            chart: {
-                height: 300,
-                type: "radialBar",
-                events: {
-                    legendClick: function (chartContext, seriesIndex, config) {
-                        if (seriesIndex == 0) {
-                            Swal.fire({
-                                title: "Attitude",
-                                html: "A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status. <br /> <br /> <span><b> B.4 </b> Black students have the same opportunities and access to attend college as their white peers. <br/> <br /><span><b> C.1 </b> Students who wear dreadlocks as a hairstyle are a distraction in the classroom. <br/> <br /> D.3 It should be required for students to remove hair accessories that are associated with their culture, tribe, sexuality, or religion. <br/> <br /> E.5 All students who live in the United States deserve a quality public education, even those students whose parents are undocumented immigrants. <br/> F.6 All faculty and staff within a school setting have equal ability to transfer knowledge to students in regards to life, culture, character, and/or academic content.",
-                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-                            }).then((res) => {
-                                window.location.reload();
-                            });
-                        } else if (seriesIndex == 1) {
-                            Swal.fire({
-                                title: "Empathy",
-                                html: "A.2 A 10th-grade male died as a result of a car accident during an illegal street race. A group of teachers will not attend the funeral because of the activity that led to the student’s cause of death. <br /> <br /> <span><b> B.4 </b> A public school Teacher is grounded by the philosophy of their religion. Throughout their career as an educator; they have learned to be welcoming to others’ cultural and religious beliefs even if those beliefs are in conflict with their own.<br/> <br /><span><b> C.1 </b> In two weeks, the 8th grade teaching cluster will be getting a new math teacher who is Muslim. Next week’s professional development is dedicated to learning about the customs and etiquette of Islam to ensure that the new colleague feels welcomed in their new school.<br/> <br /> D.3  An Asian student scored an 85 percent on today’s math quiz. The teacher expressed disappointment in the student by saying,Come on, you are Asian! You should’ve scored better than this. <br/> <br /> E.5  A school counselor advised a biracial student that they would appear more professional if they perm their hair (removing the kinks) for their upcoming college visits. <br/> F.6 Your colleague was pulled over by the police on the way to work this morning. You hear other colleagues in the break room discussing the reasons why they were pulled over, and all of the suspected reasons were related to what they may have done (i.e., speeding, running a stop sign, etc.), rather than acknowledging that they may have been pulled over for being a person of color driving a luxury car.",
-                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-                            }).then((res) => {
-                                window.location.reload();
-                            });
-                        } else if (seriesIndex == 2) {
-                            Swal.fire({
-                                title: "Policy",
-                                html: "A.2 A group of teachers and students are protesting the athletic department at a high school for changing the school’s logo to a silhouette of a Native American in a headdress; they have secured a place on the agenda for the next school board meeting to give a presentation on why this logo is offensive and trivializes Native Americans. <br /> <br /> <span><b> B.4 </b>  A school that does not consider factors related to culture and ethnicity in their decision-making process is more democratic than a school who does consider factors related to culture and ethnicity in their decision-making process.<br/> <br /><span><b> C.1 </b> A school leader makes a “diversity hire” to introduce new ideas around school culture, curriculum, leadership, and/or supervision. <br/> <br /> D.3 A principal implemented a policy that all faculty and staff have to participate in quarterly potlucks; they are to bring a traditional dish specific to their culture, as a way to facilitate cross-cultural discourse. <br/> <br /> E.5 Students in a high-poverty school who are absent 10 consecutive days in a marking period are referred to special education for excessive absenteeism. <br/> F.6A member of the school board is proposing a policy where English is the official language for all school related business in a community where the majority of the students’ and families’ primary language is Spanish.                ",
-                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-                            }).then((res) => {
-                                window.location.reload();
-                            });
-                        } else if (seriesIndex == 3) {
-                            Swal.fire({
-                                title: "Professionalism",
-                                html: "A.2A teacher asked the class who has traveled out of the country. A Black male raises his hand and states “I have.”  The teacher asked the student three follow-up questions to corroborate his story.                <br /> <br /> <span><b> B.4 </b> During lunch duty, teachers had a discussion in the presence of students about tomorrow’s district-wide racial sensitivity training. A teacher commented, Why do we have to attend this training; the United States is post-racial because we have a Black president.                <br/> <br /><span><b> C.1 </b> The social committee at an elementary school is planning an awards ceremony and dinner for the staff and faculty. Six of their colleagues are vegan because of their religious beliefs.  As a result, the committee has added a vegan selection to the menu to accommodate their colleagues’ religious beliefs. <br/> <br /> D.3  The reading specialist expressed some concerns to the Vice Principal about how her male students emasculates her during whole group instruction. The Vice Principal said, “Don’t worry about it, that's just how boys behave.”                 <br/> <br /> E.5  A history teacher refuses to acknowledge black history month and does not want to teach content about black history in the United States.                <br/> F.6 An AP English teacher has assigned a research paper where the students were required to write about their religion. The teacher did not let their own religious beliefs cloud their judgement; the teacher researched the student’s religion while grading the paper to offer relevant constructive feedback back on the arguments made within the paper.                ",
-                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-                            }).then((res) => {
-                                window.location.reload();
-                            });
-                        } else if (seriesIndex == 4) {
-                            Swal.fire({
-                                title: "Teaching Practice",
-                                html: "A.2 A novice teacher in a school where the majority of the students are African-American and Latino uses hip-hop as a way to make science relevant in the student's social and cultural context.                <br /> <br /> <span><b> B.4 </b>An algebra teacher who teaches in a school where the majority of the students are on free and reduced lunch requires that each student buy a specific graphing calculator for Algebra, which retails for over 100 dollars.                <br/> <br /><span><b> C.1 </b> A teacher created a seating chart that placed ‘unteachable students’ in the back of the classroom, all of whom were male: 2 Latinos and 6 African Americans.  In the same seating chart, her ‘good students,' all white, were seated in preferential seating.                <br/> <br /> D.3 A teacher puts together a petition to request a textbook company to remove the narrative about the enslavement of Africans in the United States in their history textbook to accommodate teachers’ discomfort with discussing this sensitive topic.                <br/> <br /> E.5  A teacher in a Title 1 school (high percentage of children from low-income families) checks homework for completeness rather than correctness as a strategy to improve student efficacy.                 <br/> F.6 There is an increase of LGBTQIA+ students reporting that they are being harassed both verbally and physically in United States public schools. A group of students and teachers are researching the best practices to implement and create a supportive environment for these students to voice their concerns in their school.",
-                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-                            }).then((res) => {
-                                window.location.reload();
-                            });
-                        }
-                    },
-                },
+  openDialog1(i) {
+    this.chartOptions2 = {
+      series: [76, 67, 61, 90, 56],
+      chart: {
+        height: 300,
+        type: "radialBar",
+        events: {
+          legendClick: function (chartContext, seriesIndex, config) {
+            if (seriesIndex == 0) {
+              Swal.fire({
+                title: "Attitude",
+                html: "A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status. <br /> <br /> <span><b> B.4 </b> Black students have the same opportunities and access to attend college as their white peers. <br/> <br /><span><b> C.1 </b> Students who wear dreadlocks as a hairstyle are a distraction in the classroom. <br/> <br /> D.3 It should be required for students to remove hair accessories that are associated with their culture, tribe, sexuality, or religion. <br/> <br /> E.5 All students who live in the United States deserve a quality public education, even those students whose parents are undocumented immigrants. <br/> F.6 All faculty and staff within a school setting have equal ability to transfer knowledge to students in regards to life, culture, character, and/or academic content.",
+                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+              }).then((res) => {
+                window.location.reload();
+              });
+            } else if (seriesIndex == 1) {
+              Swal.fire({
+                title: "Empathy",
+                html: "A.2 A 10th-grade male died as a result of a car accident during an illegal street race. A group of teachers will not attend the funeral because of the activity that led to the student’s cause of death. <br /> <br /> <span><b> B.4 </b> A public school Teacher is grounded by the philosophy of their religion. Throughout their career as an educator; they have learned to be welcoming to others’ cultural and religious beliefs even if those beliefs are in conflict with their own.<br/> <br /><span><b> C.1 </b> In two weeks, the 8th grade teaching cluster will be getting a new math teacher who is Muslim. Next week’s professional development is dedicated to learning about the customs and etiquette of Islam to ensure that the new colleague feels welcomed in their new school.<br/> <br /> D.3  An Asian student scored an 85 percent on today’s math quiz. The teacher expressed disappointment in the student by saying,Come on, you are Asian! You should’ve scored better than this. <br/> <br /> E.5  A school counselor advised a biracial student that they would appear more professional if they perm their hair (removing the kinks) for their upcoming college visits. <br/> F.6 Your colleague was pulled over by the police on the way to work this morning. You hear other colleagues in the break room discussing the reasons why they were pulled over, and all of the suspected reasons were related to what they may have done (i.e., speeding, running a stop sign, etc.), rather than acknowledging that they may have been pulled over for being a person of color driving a luxury car.",
+                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+              }).then((res) => {
+                window.location.reload();
+              });
+            } else if (seriesIndex == 2) {
+              Swal.fire({
+                title: "Policy",
+                html: "A.2 A group of teachers and students are protesting the athletic department at a high school for changing the school’s logo to a silhouette of a Native American in a headdress; they have secured a place on the agenda for the next school board meeting to give a presentation on why this logo is offensive and trivializes Native Americans. <br /> <br /> <span><b> B.4 </b>  A school that does not consider factors related to culture and ethnicity in their decision-making process is more democratic than a school who does consider factors related to culture and ethnicity in their decision-making process.<br/> <br /><span><b> C.1 </b> A school leader makes a “diversity hire” to introduce new ideas around school culture, curriculum, leadership, and/or supervision. <br/> <br /> D.3 A principal implemented a policy that all faculty and staff have to participate in quarterly potlucks; they are to bring a traditional dish specific to their culture, as a way to facilitate cross-cultural discourse. <br/> <br /> E.5 Students in a high-poverty school who are absent 10 consecutive days in a marking period are referred to special education for excessive absenteeism. <br/> F.6A member of the school board is proposing a policy where English is the official language for all school related business in a community where the majority of the students’ and families’ primary language is Spanish.                ",
+                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+              }).then((res) => {
+                window.location.reload();
+              });
+            } else if (seriesIndex == 3) {
+              Swal.fire({
+                title: "Professionalism",
+                html: "A.2A teacher asked the class who has traveled out of the country. A Black male raises his hand and states “I have.”  The teacher asked the student three follow-up questions to corroborate his story.                <br /> <br /> <span><b> B.4 </b> During lunch duty, teachers had a discussion in the presence of students about tomorrow’s district-wide racial sensitivity training. A teacher commented, Why do we have to attend this training; the United States is post-racial because we have a Black president.                <br/> <br /><span><b> C.1 </b> The social committee at an elementary school is planning an awards ceremony and dinner for the staff and faculty. Six of their colleagues are vegan because of their religious beliefs.  As a result, the committee has added a vegan selection to the menu to accommodate their colleagues’ religious beliefs. <br/> <br /> D.3  The reading specialist expressed some concerns to the Vice Principal about how her male students emasculates her during whole group instruction. The Vice Principal said, “Don’t worry about it, that's just how boys behave.”                 <br/> <br /> E.5  A history teacher refuses to acknowledge black history month and does not want to teach content about black history in the United States.                <br/> F.6 An AP English teacher has assigned a research paper where the students were required to write about their religion. The teacher did not let their own religious beliefs cloud their judgement; the teacher researched the student’s religion while grading the paper to offer relevant constructive feedback back on the arguments made within the paper.                ",
+                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+              }).then((res) => {
+                window.location.reload();
+              });
+            } else if (seriesIndex == 4) {
+              Swal.fire({
+                title: "Teaching Practice",
+                html: "A.2 A novice teacher in a school where the majority of the students are African-American and Latino uses hip-hop as a way to make science relevant in the student's social and cultural context.                <br /> <br /> <span><b> B.4 </b>An algebra teacher who teaches in a school where the majority of the students are on free and reduced lunch requires that each student buy a specific graphing calculator for Algebra, which retails for over 100 dollars.                <br/> <br /><span><b> C.1 </b> A teacher created a seating chart that placed ‘unteachable students’ in the back of the classroom, all of whom were male: 2 Latinos and 6 African Americans.  In the same seating chart, her ‘good students,' all white, were seated in preferential seating.                <br/> <br /> D.3 A teacher puts together a petition to request a textbook company to remove the narrative about the enslavement of Africans in the United States in their history textbook to accommodate teachers’ discomfort with discussing this sensitive topic.                <br/> <br /> E.5  A teacher in a Title 1 school (high percentage of children from low-income families) checks homework for completeness rather than correctness as a strategy to improve student efficacy.                 <br/> F.6 There is an increase of LGBTQIA+ students reporting that they are being harassed both verbally and physically in United States public schools. A group of students and teachers are researching the best practices to implement and create a supportive environment for these students to voice their concerns in their school.",
+                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+              }).then((res) => {
+                window.location.reload();
+              });
+            }
+          },
+        },
+      },
+      plotOptions: {
+        radialBar: {
+          offsetY: 0,
+          startAngle: 0,
+          endAngle: 270,
+          hollow: {
+            margin: 5,
+            size: "30%",
+            background: "transparent",
+            image: undefined,
+          },
+          dataLabels: {
+            name: {
+              show: false,
             },
-            plotOptions: {
-                radialBar: {
-                    offsetY: 0,
-                    startAngle: 0,
-                    endAngle: 270,
-                    hollow: {
-                        margin: 5,
-                        size: "30%",
-                        background: "transparent",
-                        image: undefined,
-                    },
-                    dataLabels: {
-                        name: {
-                            show: false,
-                        },
-                        value: {
-                            show: false,
-                        },
-                    },
-                },
+            value: {
+              show: false,
             },
-            colors: ["#1ab7ea", "#0084ff", "#39539E", "#0077B5"],
-            labels: ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"],
+          },
+        },
+      },
+      colors: ["#1ab7ea", "#0084ff", "#39539E", "#0077B5"],
+      labels: ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"],
+      legend: {
+        show: true,
+        floating: true,
+        fontSize: "13px",
+        position: "left",
+        labels: {
+          useSeriesColors: true,
+        },
+        formatter: function (seriesName, opts) {
+          return seriesName + ":  " + opts.w.globals.series[opts.seriesIndex];
+        },
+        itemMargin: {
+          horizontal: 3,
+        },
+      },
+      responsive: [
+        {
+          breakpoint: 480,
+          options: {
             legend: {
-                show: true,
-                floating: true,
-                fontSize: "13px",
-                position: "left",
-                labels: {
-                    useSeriesColors: true,
-                },
-                formatter: function (seriesName, opts) {
-                    return seriesName + ":  " + opts.w.globals.series[opts.seriesIndex];
-                },
-                itemMargin: {
-                    horizontal: 3,
-                },
+              show: false,
             },
-            responsive: [
-                {
-                    breakpoint: 480,
-                    options: {
-                        legend: {
-                            show: false,
-                        },
-                    },
-                },
-            ],
-        };
-    }
+          },
+        },
+      ],
+    };
+  }
 
-    openDialog() {
-        const dialogRef = this.dialog.open(DashboardDialoComponent, {
-            data: { userID: this.profileDetails[0]["id"] },
-        });
+  openDialog() {
+    const dialogRef = this.dialog.open(DashboardDialoComponent, {
+      data: { userID: this.profileDetails[0]["id"] },
+    });
 
-        dialogRef.afterClosed().subscribe((result) => {
-            this.showInitials = false;
-            this.avatarLink = result;
-        });
-    }
-    constructor(
-        private router: Router,
-        public dialog: MatDialog,
-        public PreSurService: PreSurveyService,
-        public cpcqService: CPCQService
-    ) {
-        this.openDialog1(1);
+    dialogRef.afterClosed().subscribe((result) => {
+      this.showInitials = false;
+      this.avatarLink = result;
+    });
+  }
+  constructor(
+    private router: Router,
+    public dialog: MatDialog,
+    public PreSurService: PreSurveyService,
+    public cpcqService: CPCQService
+  ) {
+    this.openDialog1(1);
 
-        this.chartOptions = {
-            series: [76],
-            chart: {
-                height: 300,
-                type: "radialBar",
-                offsetY: -20,
+    this.chartOptions = {
+      series: [76],
+      chart: {
+        height: 300,
+        type: "radialBar",
+        offsetY: -20,
+      },
+      plotOptions: {
+        radialBar: {
+          startAngle: -90,
+          endAngle: 90,
+          track: {
+            background: "#e7e7e7",
+            strokeWidth: "97%",
+            margin: 5, // margin is in pixels
+            dropShadow: {
+              enabled: true,
+              top: 2,
+              left: 0,
+              opacity: 0.31,
+              blur: 2,
             },
-            plotOptions: {
-                radialBar: {
-                    startAngle: -90,
-                    endAngle: 90,
-                    track: {
-                        background: "#e7e7e7",
-                        strokeWidth: "97%",
-                        margin: 5, // margin is in pixels
-                        dropShadow: {
-                            enabled: true,
-                            top: 2,
-                            left: 0,
-                            opacity: 0.31,
-                            blur: 2,
-                        },
-                    },
-                    dataLabels: {
-                        value: {
-                            // offsetY: -2,
-                            fontSize: "22px",
-                        },
-                        name: {
-                            show: true,
-                            fontSize: "13px",
-                            color: "green",
-                        },
-                    },
-                },
+          },
+          dataLabels: {
+            value: {
+              // offsetY: -2,
+              fontSize: "22px",
             },
-            fill: {
-                type: "gradient",
-                gradient: {
-                    shade: "light",
-                    shadeIntensity: 0.4,
-                    inverseColors: false,
-                    opacityFrom: 1,
-                    opacityTo: 1,
-                    stops: [0, 50, 53, 91],
-                },
+            name: {
+              show: true,
+              fontSize: "13px",
+              color: "green",
             },
-            labels: ["Culturally Competent"],
-        };
+          },
+        },
+      },
+      fill: {
+        type: "gradient",
+        gradient: {
+          shade: "light",
+          shadeIntensity: 0.4,
+          inverseColors: false,
+          opacityFrom: 1,
+          opacityTo: 1,
+          stops: [0, 50, 53, 91],
+        },
+      },
+      labels: ["Culturally Competent"],
+    };
 
-        this.chartOptions1 = {
-            series: [44, 55, 67, 83, 56],
-            chart: {
-                height: 200,
-                width: 300,
-                type: "radialBar",
-                events: {
-                    click: function (event, chartContext, config) {
-                        // The last parameter config contains additional information like `seriesIndex` and `dataPointIndex` for cartesian charts.
-                    },
-                },
+    this.chartOptions1 = {
+      series: [44, 55, 67, 83, 56],
+      chart: {
+        height: 200,
+        width: 300,
+        type: "radialBar",
+        events: {
+          click: function (event, chartContext, config) {
+            // The last parameter config contains additional information like `seriesIndex` and `dataPointIndex` for cartesian charts.
+          },
+        },
+      },
+      plotOptions: {
+        radialBar: {
+          dataLabels: {
+            name: {
+              fontSize: "22px",
             },
-            plotOptions: {
-                radialBar: {
-                    dataLabels: {
-                        name: {
-                            fontSize: "22px",
-                        },
-                        value: {
-                            fontSize: "16px",
-                        },
-                        total: {
-                            show: true,
-                            label: "Total",
-                            formatter: function (w) {
-                                return "249";
-                            },
-                        },
-                    },
-                },
+            value: {
+              fontSize: "16px",
             },
-            labels: ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"],
-        };
-    }
+            total: {
+              show: true,
+              label: "Total",
+              formatter: function (w) {
+                return "249";
+              },
+            },
+          },
+        },
+      },
+      labels: ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"],
+    };
+  }
 
-    public generateData(count, yrange) {
-        var i = 0;
-        var series = [];
-        while (i < count) {
-            var x = "w" + (i + 1).toString();
-            var y = Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min;
+  public generateData(count, yrange) {
+    var i = 0;
+    var series = [];
+    while (i < count) {
+      var x = "w" + (i + 1).toString();
+      var y = Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min;
 
-            series.push({
-                x: x,
-                y: y,
-            });
-            i++;
-        }
-        return series;
+      series.push({
+        x: x,
+        y: y,
+      });
+      i++;
     }
+    return series;
+  }
 
-    ngOnInit(): void {
-        if (!this.photoUrl) {
-            this.showInitials = true;
-            this.createInititals();
+  ngOnInit(): void {
+    if (!this.photoUrl) {
+      this.showInitials = true;
+      this.createInititals();
 
-            const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length));
-            this.circleColor = this.colors[randomIndex];
-        }
-        this.PreSurService.profileData().subscribe((res) => {
-            this.profileDetails = res;
-            this.email = res[0]["email"];
-            this.location = res[0]["location"];
-            this.gender = res[0]["gender"];
-            this.userName = res[0]["first_name"];
-            this.preSurveyDate = new Date(res[0]["preSurveydate"]).toLocaleDateString("en-US", {
-                weekday: "long",
-                year: "numeric",
-                month: "long",
-                day: "numeric",
-            });
-            this.responsesDate = new Date(res[0]["responsesdate"]).toLocaleDateString("en-US", {
-                weekday: "long",
-                year: "numeric",
-                month: "long",
-                day: "numeric",
-            });
-            this.cpcqDate = new Date(res[0]["cpcqdate"]).toLocaleDateString("en-US", {
-                weekday: "long",
-                year: "numeric",
-                month: "long",
-                day: "numeric",
-            });
-            this.scoreDate = new Date(res[0]["scoredate"]).toLocaleDateString("en-US", {
-                weekday: "long",
-                year: "numeric",
-                month: "long",
-                day: "numeric",
-            });
-            this.postSurveyDate = new Date(res[0]["postSurveydate"]).toLocaleDateString("en-US", {
-                weekday: "long",
-                year: "numeric",
-                month: "long",
-                day: "numeric",
-            });
+      const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length));
+      this.circleColor = this.colors[randomIndex];
+    }
+    this.PreSurService.profileData().subscribe((res) => {
+      this.profileDetails = res;
+      this.email = res[0]["email"];
+      this.location = res[0]["location"];
+      this.gender = res[0]["gender"];
+      this.userName = res[0]["first_name"];
+      this.preSurveyDate = new Date(res[0]["preSurveydate"]).toLocaleDateString("en-US", {
+        weekday: "long",
+        year: "numeric",
+        month: "long",
+        day: "numeric",
+      });
+      this.responsesDate = new Date(res[0]["responsesdate"]).toLocaleDateString("en-US", {
+        weekday: "long",
+        year: "numeric",
+        month: "long",
+        day: "numeric",
+      });
+      this.cpcqDate = new Date(res[0]["cpcqdate"]).toLocaleDateString("en-US", {
+        weekday: "long",
+        year: "numeric",
+        month: "long",
+        day: "numeric",
+      });
+      this.scoreDate = new Date(res[0]["scoredate"]).toLocaleDateString("en-US", {
+        weekday: "long",
+        year: "numeric",
+        month: "long",
+        day: "numeric",
+      });
+      this.postSurveyDate = new Date(res[0]["postSurveydate"]).toLocaleDateString("en-US", {
+        weekday: "long",
+        year: "numeric",
+        month: "long",
+        day: "numeric",
+      });
 
-            // this.currentStatus = res[0]["status"].lastIndexOf(true)
-            //
-            if (res[0]["photo_profile"].length != 0) {
-                this.showInitials = false;
-                var lenSTr = res[0]["photo_profile"].length;
-                this.avatarLink = res[0]["photo_profile"];
-            }
-        });
+      // this.currentStatus = res[0]["status"].lastIndexOf(true)
+      //
+      if (res[0]["photo_profile"].length != 0) {
+        this.showInitials = false;
+        var lenSTr = res[0]["photo_profile"].length;
+        this.avatarLink = res[0]["photo_profile"];
+      }
+    });
 
-        this.cpcqService.getCPCQStatus().subscribe((res) => {
-            this.finalDate = new Date(res[0]["created"]).toDateString();
-        });
-    }
+    this.cpcqService.getCPCQStatus().subscribe((res) => {
+      this.finalDate = new Date(res[0]["created"]).toDateString();
+    });
+  }
 
-    private createInititals(): void {
-        let initials = "";
+  private createInititals(): void {
+    let initials = "";
 
-        for (let i = 0; i < this.name.length; i++) {
-            if (this.name.charAt(i) === " ") {
-                continue;
-            }
+    for (let i = 0; i < this.name.length; i++) {
+      if (this.name.charAt(i) === " ") {
+        continue;
+      }
 
-            if (this.name.charAt(i) === this.name.charAt(i).toUpperCase()) {
-                initials += this.name.charAt(i);
+      if (this.name.charAt(i) === this.name.charAt(i).toUpperCase()) {
+        initials += this.name.charAt(i);
 
-                if (initials.length == 2) {
-                    break;
-                }
-            }
+        if (initials.length == 2) {
+          break;
         }
-
-        this.initials = initials;
-    }
-    preSurvey() {
-        this.router.navigateByUrl("/preSurvey");
+      }
     }
+
+    this.initials = initials;
+  }
+  preSurvey() {
+    this.router.navigateByUrl("/preSurvey");
+  }
 }
diff --git a/src/app/components/final-feedback/final-feedback.component.css b/src/app/components/final-feedback/final-feedback.component.css
index 24eb341..5ba7b67 100644
--- a/src/app/components/final-feedback/final-feedback.component.css
+++ b/src/app/components/final-feedback/final-feedback.component.css
@@ -1,166 +1,164 @@
 .divClass {
-    padding-top: 10px;
+  padding-top: 10px;
 }
 
 .example-card {
-    /* max-height: 700px; */
-    /* width: 1000px; */
-    /* height: 570px; */
-    position: absolute;
-    top: 55%;
-    left: 50%;
-    transform: translate(-50%, -50%);
-    width: 80%;
+  /* max-height: 700px; */
+  /* width: 1000px; */
+  /* height: 570px; */
+  position: absolute;
+  top: 55%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+  width: 80%;
 }
 
 ::ng-deep .mat-tab-body-content {
-    max-height: 500px !important;
+  max-height: 500px !important;
 }
 
 .table-responsive {
-    height: 310px;
+  height: 310px;
 }
 
 .div-wrap {
-    width: 500px;
+  width: 500px;
 }
 
 p {
-    /* font-family: Georgia, 'Times New Roman', Times, serif; */
-    font-family: 'Loto', sans-serif;
-    font-size: 15px;
+  /* font-family: Georgia, 'Times New Roman', Times, serif; */
+  font-family: "Loto", sans-serif;
+  font-size: 15px;
 }
 
 h3 {
-    /* font-family: Georgia, 'Times New Roman', Times, serif; */
-    font-family: 'Loto', sans-serif;
-    margin-bottom: 40px;
+  /* font-family: Georgia, 'Times New Roman', Times, serif; */
+  font-family: "Loto", sans-serif;
+  margin-bottom: 40px;
 }
 
 .mat-card {
-    background-color: #edf6f9;
+  background-color: #edf6f9;
 }
 
 .inputField {
-    width: 100%;
+  width: 100%;
 }
 
-
 /* Chrome, Safari, Edge, Opera */
 
 input::-webkit-outer-spin-button,
 input::-webkit-inner-spin-button {
-    -webkit-appearance: none;
-    margin: 0;
+  -webkit-appearance: none;
+  margin: 0;
 }
 
-
 /* Firefox */
 
-input[type=number] {
-    -moz-appearance: textfield;
+input[type="number"] {
+  -moz-appearance: textfield;
 }
 
 ::ng-deep .mat-tab-header {
-    display: none !important;
+  display: none !important;
 }
 
 p {
-    text-align: justify;
-    text-justify: inter-word;
+  text-align: justify;
+  text-justify: inter-word;
 }
 
 h2 {
-    /* font-family: 'Loto', sans-serif; */
-    font-family: 'Loto', sans-serif;
+  /* font-family: 'Loto', sans-serif; */
+  font-family: "Loto", sans-serif;
 }
 
 mat-slider {
-    width: 350px;
+  width: 350px;
 }
 
 .mat-slider-thumb-label {
-    transform: rotate(45deg) !important;
-    border-radius: 50% 50% 0 !important;
+  transform: rotate(45deg) !important;
+  border-radius: 50% 50% 0 !important;
 }
 
 .mat-slider-thumb {
-    transform: scale(0) !important;
+  transform: scale(0) !important;
 }
 
 .mat-slider-thumb-label-text {
-    opacity: 1 !important;
+  opacity: 1 !important;
 }
 
 .advice {
-    border: none;
-    background: none;
+  border: none;
+  background: none;
 }
 
 ::ng-deep .mat-checkbox-layout {
-    white-space: normal !important;
+  white-space: normal !important;
 }
 
 mat-form-field {
-    width: 100%;
-    height: 5%;
+  width: 100%;
+  height: 5%;
 }
 
-::ng-deep .mat-form-field-flex>.mat-form-field-infix {
-    padding: 0.4em 0px !important;
+::ng-deep .mat-form-field-flex > .mat-form-field-infix {
+  padding: 0.4em 0px !important;
 }
 
 ::ng-deep .mat-form-field-label-wrapper {
-    top: -1.5em;
+  top: -1.5em;
 }
 
-::ng-deep .mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label {
-    transform: translateY(-1.1em) scale(.75);
-    width: 133.33333%;
-    color: black !important;
-    border: black;
+::ng-deep
+  .mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float
+  .mat-form-field-label {
+  transform: translateY(-1.1em) scale(0.75);
+  width: 133.33333%;
+  color: black !important;
+  border: black;
 }
 
 .example-h2 {
-    margin: 10px;
+  margin: 10px;
 }
 
 .example-section {
-    display: flex;
-    align-content: center;
-    align-items: center;
-    height: 60px;
+  display: flex;
+  align-content: center;
+  align-items: center;
+  height: 60px;
 }
 
 .example-margin {
-    margin: 0 10px;
+  margin: 0 10px;
 }
 
 .imgClass {
-    width: 30px;
-    height: 30px
+  width: 30px;
+  height: 30px;
 }
 
 .zoom {
-    transition: transform .2s;
-    border: none;
-    background: none;
-    /* Animation */
-    margin: 0 auto;
+  transition: transform 0.2s;
+  border: none;
+  background: none;
+  /* Animation */
+  margin: 0 auto;
 }
 
 .zoom:hover {
-    transform: scale(1.5);
-    /* (150% zoom - Note: if the zoom is too large, it will go outside of the viewport) */
+  transform: scale(1.5);
+  /* (150% zoom - Note: if the zoom is too large, it will go outside of the viewport) */
 }
 
-
 ::ng-deep .mat-tooltip {
-    font-size: 15px !important;
+  font-size: 15px !important;
 }
 
-
 /* 
 p {
     font-family: 'roboto';
-} */
\ No newline at end of file
+} */
diff --git a/src/app/components/final-feedback/final-feedback.component.html b/src/app/components/final-feedback/final-feedback.component.html
index cb81e04..cbee85a 100644
--- a/src/app/components/final-feedback/final-feedback.component.html
+++ b/src/app/components/final-feedback/final-feedback.component.html
@@ -1,546 +1,858 @@
 <div class="divClass">
-    <mat-card class="example-card ">
-
-        <mat-card-content>
-            <div style="margin-bottom: 10px; margin-left: -10px;">
-                <mat-progress-bar *ngIf="selectedIndex > 0 && selectedIndex <6" class="example-margin" style="width: 100%;" [mode]="mode" [value]="selectedIndex*20" [bufferValue]="bufferValue">
-                </mat-progress-bar>
-            </div>
-
-
-            <mat-tab-group [selectedIndex]="selectedIndex" style="margin: 0px;">
-                <mat-tab label="Second">
-                    <h2>Cultural Proficiency Continuum Q-Sort: Reacting to interactions that take place within Majority-Minority U.S. PreK-12 Schools
-
-                    </h2>
-                    <p style="font-size: 24px;"><span style="font-weight: bold;">Directions: </span> In the upcoming activity, you will engage with 30 vignettes situated in five categories that illustrate culturally proficient interactions that have taken place in U.S. public schools.
-                        Your task is to assign a level of reaction using numbers 1 - 6 to each vignette within each category. Specifically, you are to assign the number 6 to the vignette that evokes the highest level of reaction from you, 5 to the vignette
-                        that evokes the next highest level of reaction from you, and so on until you have assigned the number 1 to the vignette that evokes the least level of reaction from you.
-                    </p>
-                    <p style="font-size: 20px;">
-                        <span style="font-weight: bold;">    Note: </span> There are no correct or wrong ways to react to vignettes; your level of reaction (negative or positive) is unique to you. If you need to see the directions after beginning the Q-Sort, click the <span style="color: #4050b5;" color="primary"><mat-icon>info</mat-icon></span> in the upper right-hand corner. 
-
-
-
-                    </p>
-                </mat-tab>
-                <mat-tab label="Third">
-                    <button class="advice" (click)="openWordDialog('Attitude')">
-                         <span><h2><u>Attitude</u></h2></span></button>
-                    <button style="float: right;" mat-icon-button color="primary" aria-label="Example icon button with a delete icon" (click)="helpDialog('Attitude')">
-                            <mat-icon>info</mat-icon>
-                          </button>
-                    <p style="color: #4050b5;">*Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number only once. Click on the word "Attitude" and respond to the prompt.</p>
-                    <form [formGroup]="attitudeForm">
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="A" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv>{{attitude['question1']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="B" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv1>{{attitude['question2']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="C" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv2>{{attitude['question3']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="D" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv3>{{attitude['question4']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="E" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv4>{{attitude['question5']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="F" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv5>{{attitude['question6']}}</p>
-                            </div>
-                        </div>
-                    </form>
-
-
-                    <p style="margin-top: 20px; font-size: 15px;"> The singular pronouns: “their” or “they” are used as gender-neutral pronouns.
-                    </p>
-
-
-
-                </mat-tab>
-                <mat-tab label="Fourth">
-                    <button class="advice" (click)="openWordDialog('Empathy')">
-                        <span><h2><u>Empathy</u></h2></span></button>
-                    <button style="float: right;" mat-icon-button color="primary" aria-label="Example icon button with a delete icon" (click)="helpDialog('Empathy')">
-                            <mat-icon>info</mat-icon>
-                          </button>
-                    <p style="color: #4050b5;">*Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number only once. Click on the word "Empathy" and respond to the prompt.
-                    </p>
-
-                    <form [formGroup]="attitudeForm">
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="A" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv6>{{empathy['question1']}}</p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="B" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv7>{{empathy['question2']}}
-                                </p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="C" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv8>{{empathy['question3']}}</p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="D" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv9>{{empathy['question4']}}</p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="E" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv10>{{empathy['question5']}}</p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="F" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv11>{{empathy['question6']}}</p>
-                            </div>
-                        </div>
-                    </form>
-
-                </mat-tab>
-
-                <mat-tab label="Fourth">
-                    <button class="advice" (click)="openWordDialog('Policy')">
-                        <span><h2><u>Policy</u></h2></span></button>
-                    <button style="float: right;" mat-icon-button color="primary" aria-label="Example icon button with a delete icon" (click)="helpDialog('Policy')">
-                            <mat-icon>info</mat-icon>
-                          </button>
-                    <p style="color: #4050b5;">*Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number only once. Click on the word "Policy" and respond to the prompt.</p>
-
-                    <form [formGroup]="attitudeForm">
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="A" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv12>{{policy['question1']}}</p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="B" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv13>{{policy['question2']}}
-
-                                </p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="C" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv14>{{policy['question3']}}
-                                </p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="D" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv15>{{policy['question4']}}
-                                </p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="E" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv16>{{policy['question5']}}</p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="F" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv17>{{policy['question6']}} </p>
-                            </div>
-                        </div>
-                    </form>
-                </mat-tab>
-
-                <mat-tab label="Fifth">
-                    <button class="advice" (click)="openWordDialog('Professionalism')">
-                        <span><h2><u>Professionalism</u></h2></span></button>
-                    <button style="float: right;" mat-icon-button color="primary" aria-label="Example icon button with a delete icon" (click)="helpDialog('Professionalism')">
-                            <mat-icon>info</mat-icon>
-                          </button>
-                    <p style="color: #4050b5;">*Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number only once. Click on the word "Professionalism" and respond to the prompt.</p>
-                    <form [formGroup]="attitudeForm">
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="A" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv18>{{professionalism['question1']}}
-                                </p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="B" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv19>{{professionalism['question2']}}
-                                </p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="C" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv20>{{professionalism['question3']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="D" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv21>{{professionalism['question4']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="E" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv22>{{professionalism['question5']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="F" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv23>{{professionalism['question6']}} </p>
-                            </div>
-                        </div>
-
-                    </form>
-                </mat-tab>
-
-                <mat-tab label="Sixth">
-                    <button class="advice" (click)="openWordDialog('Teaching Practice')">
-                        <span><h2><u>Teaching Practice</u></h2></span></button>
-                    <button style="float: right;" mat-icon-button color="primary" aria-label="Example icon button with a delete icon" (click)="helpDialog('Teaching Practice')">
-                            <mat-icon>info</mat-icon>
-                          </button>
-                    <p style="color: #4050b5;">*Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number only once. Click on the word "Teaching Practice" and respond to the prompt.</p>
-                    <form [formGroup]="attitudeForm">
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="A" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv24> {{teachingPractice['question1']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="B" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv25>{{teachingPractice['question2']}}
-                                </p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="C" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv26>{{teachingPractice['question3']}}
-                                </p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="D" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv27>{{teachingPractice['question4']}}
-                                </p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="E" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv28>{{teachingPractice['question5']}}
-                                </p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="F" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv29>{{teachingPractice['question6']}}</p>
-                            </div>
-                        </div>
-                    </form>
-                </mat-tab>
-                <mat-tab label="Seventh">
-                    <h2>Cultural Proficiency Continuum Q-Sort: Unpacking your Reactions
-                    </h2>
-                    <!-- <p>Below are the results of the CPCQ forms filled by you. The numbers that you assigned to each vignette within each of the five categories to the right of the corresponding letter—A, B, C, D, E, F—in the spaces are provided below in
+  <mat-card class="example-card">
+    <mat-card-content>
+      <div style="margin-bottom: 10px; margin-left: -10px">
+        <mat-progress-bar
+          *ngIf="selectedIndex > 0 && selectedIndex < 6"
+          class="example-margin"
+          style="width: 100%"
+          [mode]="mode"
+          [value]="selectedIndex * 20"
+          [bufferValue]="bufferValue"
+        >
+        </mat-progress-bar>
+      </div>
+
+      <mat-tab-group [selectedIndex]="selectedIndex" style="margin: 0px">
+        <mat-tab label="Second">
+          <h2>
+            Cultural Proficiency Continuum Q-Sort: Reacting to interactions that take place within Majority-Minority
+            U.S. PreK-12 Schools
+          </h2>
+          <p style="font-size: 24px">
+            <span style="font-weight: bold">Directions: </span> In the upcoming activity, you will engage with 30
+            vignettes situated in five categories that illustrate culturally proficient interactions that have taken
+            place in U.S. public schools. Your task is to assign a level of reaction using numbers 1 - 6 to each
+            vignette within each category. Specifically, you are to assign the number 6 to the vignette that evokes the
+            highest level of reaction from you, 5 to the vignette that evokes the next highest level of reaction from
+            you, and so on until you have assigned the number 1 to the vignette that evokes the least level of reaction
+            from you.
+          </p>
+          <p style="font-size: 20px">
+            <span style="font-weight: bold"> Note: </span> There are no correct or wrong ways to react to vignettes;
+            your level of reaction (negative or positive) is unique to you. If you need to see the directions after
+            beginning the Q-Sort, click the
+            <span style="color: #4050b5" color="primary"><mat-icon>info</mat-icon></span> in the upper right-hand
+            corner.
+          </p>
+        </mat-tab>
+        <mat-tab label="Third">
+          <button class="advice" (click)="openWordDialog('Attitude')">
+            <span
+              ><h2><u>Attitude</u></h2></span
+            >
+          </button>
+          <button
+            style="float: right"
+            mat-icon-button
+            color="primary"
+            aria-label="Example icon button with a delete icon"
+            (click)="helpDialog('Attitude')"
+          >
+            <mat-icon>info</mat-icon>
+          </button>
+          <p style="color: #4050b5">
+            *Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number
+            only once. Click on the word "Attitude" and respond to the prompt.
+          </p>
+          <form [formGroup]="attitudeForm">
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="A"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv>{{ attitude["question1"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="B"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv1>{{ attitude["question2"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="C"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv2>{{ attitude["question3"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="D"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv3>{{ attitude["question4"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="E"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv4>{{ attitude["question5"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="F"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv5>{{ attitude["question6"] }}</p>
+              </div>
+            </div>
+          </form>
+
+          <p style="margin-top: 20px; font-size: 15px">
+            The singular pronouns: “their” or “they” are used as gender-neutral pronouns.
+          </p>
+        </mat-tab>
+        <mat-tab label="Fourth">
+          <button class="advice" (click)="openWordDialog('Empathy')">
+            <span
+              ><h2><u>Empathy</u></h2></span
+            >
+          </button>
+          <button
+            style="float: right"
+            mat-icon-button
+            color="primary"
+            aria-label="Example icon button with a delete icon"
+            (click)="helpDialog('Empathy')"
+          >
+            <mat-icon>info</mat-icon>
+          </button>
+          <p style="color: #4050b5">
+            *Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number
+            only once. Click on the word "Empathy" and respond to the prompt.
+          </p>
+
+          <form [formGroup]="attitudeForm">
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="A"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv6>{{ empathy["question1"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="B"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv7>{{ empathy["question2"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="C"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv8>{{ empathy["question3"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="D"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv9>{{ empathy["question4"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="E"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv10>{{ empathy["question5"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="F"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv11>{{ empathy["question6"] }}</p>
+              </div>
+            </div>
+          </form>
+        </mat-tab>
+
+        <mat-tab label="Fourth">
+          <button class="advice" (click)="openWordDialog('Policy')">
+            <span
+              ><h2><u>Policy</u></h2></span
+            >
+          </button>
+          <button
+            style="float: right"
+            mat-icon-button
+            color="primary"
+            aria-label="Example icon button with a delete icon"
+            (click)="helpDialog('Policy')"
+          >
+            <mat-icon>info</mat-icon>
+          </button>
+          <p style="color: #4050b5">
+            *Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number
+            only once. Click on the word "Policy" and respond to the prompt.
+          </p>
+
+          <form [formGroup]="attitudeForm">
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="A"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv12>{{ policy["question1"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="B"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv13>{{ policy["question2"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="C"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv14>{{ policy["question3"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="D"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv15>{{ policy["question4"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="E"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv16>{{ policy["question5"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="F"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv17>{{ policy["question6"] }}</p>
+              </div>
+            </div>
+          </form>
+        </mat-tab>
+
+        <mat-tab label="Fifth">
+          <button class="advice" (click)="openWordDialog('Professionalism')">
+            <span
+              ><h2><u>Professionalism</u></h2></span
+            >
+          </button>
+          <button
+            style="float: right"
+            mat-icon-button
+            color="primary"
+            aria-label="Example icon button with a delete icon"
+            (click)="helpDialog('Professionalism')"
+          >
+            <mat-icon>info</mat-icon>
+          </button>
+          <p style="color: #4050b5">
+            *Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number
+            only once. Click on the word "Professionalism" and respond to the prompt.
+          </p>
+          <form [formGroup]="attitudeForm">
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="A"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv18>{{ professionalism["question1"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="B"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv19>{{ professionalism["question2"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="C"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv20>{{ professionalism["question3"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="D"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv21>{{ professionalism["question4"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="E"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv22>{{ professionalism["question5"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="F"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv23>{{ professionalism["question6"] }}</p>
+              </div>
+            </div>
+          </form>
+        </mat-tab>
+
+        <mat-tab label="Sixth">
+          <button class="advice" (click)="openWordDialog('Teaching Practice')">
+            <span
+              ><h2><u>Teaching Practice</u></h2></span
+            >
+          </button>
+          <button
+            style="float: right"
+            mat-icon-button
+            color="primary"
+            aria-label="Example icon button with a delete icon"
+            (click)="helpDialog('Teaching Practice')"
+          >
+            <mat-icon>info</mat-icon>
+          </button>
+          <p style="color: #4050b5">
+            *Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number
+            only once. Click on the word "Teaching Practice" and respond to the prompt.
+          </p>
+          <form [formGroup]="attitudeForm">
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="A"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv24>{{ teachingPractice["question1"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="B"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv25>{{ teachingPractice["question2"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="C"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv26>{{ teachingPractice["question3"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="D"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv27>{{ teachingPractice["question4"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="E"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv28>{{ teachingPractice["question5"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="F"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv29>{{ teachingPractice["question6"] }}</p>
+              </div>
+            </div>
+          </form>
+        </mat-tab>
+        <mat-tab label="Seventh">
+          <h2>Cultural Proficiency Continuum Q-Sort: Unpacking your Reactions</h2>
+          <!-- <p>Below are the results of the CPCQ forms filled by you. The numbers that you assigned to each vignette within each of the five categories to the right of the corresponding letter—A, B, C, D, E, F—in the spaces are provided below in
                         the rating guide. Ideally, the final results in each row would read 1, 2, 3, 4, 5, 6, but because Cultural Proficiency is a fluid and dynamic phenomenon, these numbers may not align in numerical order. The final step in your analysis
                         is to locate the culturally proficient interactions, which are 2 or more points higher or lower than the ideal number by each letter. For example, if a row reads 2, 1, 5, 4, 6, 3, then the numbers 5 and 3 are bold and clickable.
                         Each number you bolded in each row represents an opportunity for inquiry and Dialogic for that particular culturally proficient behavior. Please click on the bolded numbers to unpack your views. Remember, this is not a judgment,
                         but rather an opportunity for you to make inquiries and have a conversation about the sociocultural interactions that take place within majority-minority US Prek-12 schools. </p> -->
-                    <p><span><b>Directions: </b> Each bolded number represents an opportunity for you to unpack your reaction to the vignette and the corresponding culturally proficient interaction. Above each column is a link to the definition for each culturally proficient interaction; review the definitions before unpacking your reactions. After, begin unpacking your reactions by clicking each of the items highlighted yellow. You can also click other bolded items not highlighted yellow if you wish to unpack additional vignettes.
-
-                    </span></p>
-                    <div class="table-responsive">
-                        <table class="table">
-                            <thead class="thead-dark" style="font-size: 15px;">
-                                <tr>
-                                    <th></th>
-                                    <th matTooltip="When individuals or policies seek to eliminate all vestiges of others culture in educational and/or social contexts (Lindsey, Robins, & Terrell, 2009). ">Cultural Destructiveness</th>
-                                    <th matTooltip="Trivializing and stereotyping other cultures; seeking to make the cultures of others appear [incongruent with and] inferior to the dominant [or host] culture [within educational and/or social context] ">Cultural Incapacity</th>
-                                    <th matTooltip="Not noticing or acknowledging the culture of others and ignoring the [diverse] experiences of cultures within [educational and/or social context]; treating everyone in the system the same way without recognizing the needs that require differentiated [approaches] ">Cultural Blindness</th>
-                                    <th matTooltip="The awareness/ability to identify when an individual/institution does not know how to effectively engage families, students, and teachers in a culturally diverse educational and/or social context ">
-                                        Cultural Pre-Competence </th>
-                                    <th matTooltip="The practical/institutional alignment of an individual’s personal values and behaviors which are in agreement with educational policies and practices that honors cultures that are new, different, and/or a minority. Such an environment displays healthy and productive interactions that denote solidarity in the educational context. However, this level of the Cultural Proficiency Continuum may or may not be limited to educational context ">Cultural Competence</th>
-                                    <th matTooltip="Espouses a vision that educational and social spaces are agents of social change and a model of a just democracy. These individual/institutions learn, teach, research, advocate, and champion for members of diverse and minoritized cultural groups. This level of the Cultural Proficiency Continuum is displayed and espoused in a variety of social constructions and contexts: educational, gender, professional, race, religious, and sexuality ">Cultural Proficiency</th>
-                                </tr>
-                            </thead>
-                            <tbody *ngFor="let row of responsesArray; let i = index">
-                                <tr>
-                                    <td> {{row[7]}} </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[0][1] == 'colorbold'" (click)="openDialog(i,0,row[6])">
-                                        {{row[0][0]}}
-                                    </td>
-                                    <td style="font-weight: bold;" *ngIf="row[0][1] == 'bold'" (click)="openDialog(i,0,row[6])">
-                                        {{row[0][0]}}
-                                    </td>
-                                    <td  *ngIf="row[0][1] == 'nobold'">
-                                        {{row[0][0]}}
-                                    </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[1][1] == 'colorbold'" (click)="openDialog(i,1,row[6])">
-                                        {{row[1][0]}}
-                                    </td>
-                                    <td style="font-weight: bold;" *ngIf="row[1][1] == 'bold'" (click)="openDialog(i,1,row[6])">
-                                        {{row[1][0]}}
-                                    </td>
-                                    <td  *ngIf="row[1][1] == 'nobold'">
-                                        {{row[1][0]}}
-                                    </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[2][1] == 'colorbold'" (click)="openDialog(i,2,row[6])">
-                                        {{row[2][0]}}
-                                    </td>
-                                    <td style="font-weight: bold;" *ngIf="row[2][1] == 'bold'" (click)="openDialog(i,2,row[6])">
-                                        {{row[2][0]}}
-                                    </td>
-                                    <td  *ngIf="row[2][1] == 'nobold'">
-                                        {{row[2][0]}}
-                                    </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[3][1] == 'colorbold'" (click)="openDialog(i,3,row[6])">
-                                        {{row[3][0]}}
-                                    </td>
-                                    <td style="font-weight: bold;" *ngIf="row[3][1] == 'bold'" (click)="openDialog(i,3,row[6])">
-                                        {{row[3][0]}}
-                                    </td>
-                                    <td  *ngIf="row[3][1] == 'nobold'">
-                                        {{row[3][0]}}
-                                    </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[4][1] == 'colorbold'" (click)="openDialog(i,4,row[6])">
-                                        {{row[4][0]}}
-                                    </td>
-                                    <td style="font-weight: bold;" *ngIf="row[4][1] == 'bold'" (click)="openDialog(i,4,row[6])">
-                                        {{row[4][0]}}
-                                    </td>
-                                    <td  *ngIf="row[4][1] == 'nobold'">
-                                        {{row[4][0]}}
-                                    </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[5][1] == 'colorbold'" (click)="openDialog(i,5,row[6])">
-                                        {{row[5][0]}}
-                                    </td>
-                                    <td style="font-weight: bold;" *ngIf="row[5][1] == 'bold'" (click)="openDialog(i,5,row[6])">
-                                        {{row[5][0]}}
-                                    </td>
-                                    <td  *ngIf="row[5][1] == 'nobold'">
-                                        {{row[5][0]}}
-                                    </td>
-
-
-
-                                </tr>                                
-
-                            </tbody>
-                            <!-- <tbody *ngFor="let row of formValues; let i = index">
+          <p>
+            <span
+              ><b>Directions: </b> Each bolded number represents an opportunity for you to unpack your reaction to the
+              vignette and the corresponding culturally proficient interaction. Above each column is a link to the
+              definition for each culturally proficient interaction; review the definitions before unpacking your
+              reactions. After, begin unpacking your reactions by clicking each of the items highlighted yellow. You can
+              also click other bolded items not highlighted yellow if you wish to unpack additional vignettes.
+            </span>
+          </p>
+          <div class="table-responsive">
+            <table class="table">
+              <thead class="thead-dark" style="font-size: 15px">
+                <tr>
+                  <th></th>
+                  <th
+                    matTooltip="When individuals or policies seek to eliminate all vestiges of others culture in educational and/or social contexts (Lindsey, Robins, & Terrell, 2009). "
+                  >
+                    Cultural Destructiveness
+                  </th>
+                  <th
+                    matTooltip="Trivializing and stereotyping other cultures; seeking to make the cultures of others appear [incongruent with and] inferior to the dominant [or host] culture [within educational and/or social context] "
+                  >
+                    Cultural Incapacity
+                  </th>
+                  <th
+                    matTooltip="Not noticing or acknowledging the culture of others and ignoring the [diverse] experiences of cultures within [educational and/or social context]; treating everyone in the system the same way without recognizing the needs that require differentiated [approaches] "
+                  >
+                    Cultural Blindness
+                  </th>
+                  <th
+                    matTooltip="The awareness/ability to identify when an individual/institution does not know how to effectively engage families, students, and teachers in a culturally diverse educational and/or social context "
+                  >
+                    Cultural Pre-Competence
+                  </th>
+                  <th
+                    matTooltip="The practical/institutional alignment of an individual’s personal values and behaviors which are in agreement with educational policies and practices that honors cultures that are new, different, and/or a minority. Such an environment displays healthy and productive interactions that denote solidarity in the educational context. However, this level of the Cultural Proficiency Continuum may or may not be limited to educational context "
+                  >
+                    Cultural Competence
+                  </th>
+                  <th
+                    matTooltip="Espouses a vision that educational and social spaces are agents of social change and a model of a just democracy. These individual/institutions learn, teach, research, advocate, and champion for members of diverse and minoritized cultural groups. This level of the Cultural Proficiency Continuum is displayed and espoused in a variety of social constructions and contexts: educational, gender, professional, race, religious, and sexuality "
+                  >
+                    Cultural Proficiency
+                  </th>
+                </tr>
+              </thead>
+              <tbody *ngFor="let row of responsesArray; let i = index">
+                <tr>
+                  <td>{{ row[7] }}</td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[0][1] == 'colorbold'"
+                    (click)="openDialog(i, 0, row[6])"
+                  >
+                    {{ row[0][0] }}
+                  </td>
+                  <td style="font-weight: bold" *ngIf="row[0][1] == 'bold'" (click)="openDialog(i, 0, row[6])">
+                    {{ row[0][0] }}
+                  </td>
+                  <td *ngIf="row[0][1] == 'nobold'">
+                    {{ row[0][0] }}
+                  </td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[1][1] == 'colorbold'"
+                    (click)="openDialog(i, 1, row[6])"
+                  >
+                    {{ row[1][0] }}
+                  </td>
+                  <td style="font-weight: bold" *ngIf="row[1][1] == 'bold'" (click)="openDialog(i, 1, row[6])">
+                    {{ row[1][0] }}
+                  </td>
+                  <td *ngIf="row[1][1] == 'nobold'">
+                    {{ row[1][0] }}
+                  </td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[2][1] == 'colorbold'"
+                    (click)="openDialog(i, 2, row[6])"
+                  >
+                    {{ row[2][0] }}
+                  </td>
+                  <td style="font-weight: bold" *ngIf="row[2][1] == 'bold'" (click)="openDialog(i, 2, row[6])">
+                    {{ row[2][0] }}
+                  </td>
+                  <td *ngIf="row[2][1] == 'nobold'">
+                    {{ row[2][0] }}
+                  </td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[3][1] == 'colorbold'"
+                    (click)="openDialog(i, 3, row[6])"
+                  >
+                    {{ row[3][0] }}
+                  </td>
+                  <td style="font-weight: bold" *ngIf="row[3][1] == 'bold'" (click)="openDialog(i, 3, row[6])">
+                    {{ row[3][0] }}
+                  </td>
+                  <td *ngIf="row[3][1] == 'nobold'">
+                    {{ row[3][0] }}
+                  </td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[4][1] == 'colorbold'"
+                    (click)="openDialog(i, 4, row[6])"
+                  >
+                    {{ row[4][0] }}
+                  </td>
+                  <td style="font-weight: bold" *ngIf="row[4][1] == 'bold'" (click)="openDialog(i, 4, row[6])">
+                    {{ row[4][0] }}
+                  </td>
+                  <td *ngIf="row[4][1] == 'nobold'">
+                    {{ row[4][0] }}
+                  </td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[5][1] == 'colorbold'"
+                    (click)="openDialog(i, 5, row[6])"
+                  >
+                    {{ row[5][0] }}
+                  </td>
+                  <td style="font-weight: bold" *ngIf="row[5][1] == 'bold'" (click)="openDialog(i, 5, row[6])">
+                    {{ row[5][0] }}
+                  </td>
+                  <td *ngIf="row[5][1] == 'nobold'">
+                    {{ row[5][0] }}
+                  </td>
+                </tr>
+              </tbody>
+              <!-- <tbody *ngFor="let row of formValues; let i = index">
                                 <tr>
                                     <td> {{row[0]}} </td>
                                     <td style="font-weight: bold; background-color:#face70;" *ngIf="boldList[i][0] >2 && finalList1[i][0] == 'True'" (click)="openDialog(i,0) "> {{row[1]}} </td>
@@ -568,9 +880,9 @@
                                     <td *ngIf="boldList[i][5]>=5"> {{row[6]}} </td>
                                 </tr>
                             </tbody> -->
-                        </table>
-                    </div>
-                    <!-- <div style="text-align:center;">
+            </table>
+          </div>
+          <!-- <div style="text-align:center;">
                         <button mat-raised-button color="primary" (click)="initiateRecording()" *ngIf="!recording"> Start Recording </button>
                         <button mat-raised-button color="primary" (click)="stopRecording()" class="btn btn-danger" *ngIf="recording"> Stop Recording </button>
                         <p></p>
@@ -578,142 +890,119 @@
                         <source [src]="sanitize(url)" type="audio/wav">
                         </audio>
                     </div> -->
-                </mat-tab>
-                <mat-tab>
-                    <h2>Cultural Proficiency Continuum Q-Sort: Additional Inquires and Reflections
-                    </h2>
-                    <p>Directions: Read and respond to each question below.
-                    </p>
-                <div [formGroup]="finalFeedbackForm" class="questions">
-
-
-                    <p>1. What are your overall impressions of this activity?
-
-                    </p>
-                    <mat-form-field appearance="outline" class="col-lg-12">
-                        <mat-label>Explain</mat-label>
-                        <input formControlName="q1" type="text" matInput placeholder="" required>
-                    </mat-form-field>
-
-
-
-                    <p style="margin-top: 15px;">2. Were there any challenges that came up while completing this activity?
-
-                    </p>
-                    <mat-form-field appearance="outline" class="col-lg-12">
-                        <mat-label>Explain</mat-label>
-                        <input formControlName="q2" type="text" matInput placeholder="" required>
-                    </mat-form-field>
-
-                    <p style="margin-top: 15px;">3. Were there any feelings that came up while completing this activity?
-
-                    </p>
-                    <mat-form-field appearance="outline" class="col-lg-12">
-                        <mat-label>Explain</mat-label>
-                        <input formControlName="q3" type="text" matInput placeholder="" required>
-                    </mat-form-field>
-
-                    <p style="margin-top: 15px;">4. Has this activity (i.e., reacting to and unpacking vignettes) increased your awareness of the different types of culturally proficient interactions and how they affect students from diverse racial, ethnic, and cultural backgrounds?
-
-                    </p>
-                    <mat-form-field appearance="outline" class="col-lg-12">
-                        <mat-label>Explain</mat-label>
-                        <input formControlName="q4" type="text" matInput placeholder="" required>
-                    </mat-form-field>
-
-                    <p style="margin-top: 15px;">5. After engaging with the activity (i.e., reacting to and unpacking vignettes), where would you place yourself on the Cultural Proficiency Continuum? 
-                    </p>
-                    <mat-radio-group formControlName="q5" class="example-radio-group">
-                        <div class="row">
-                            <div class="col-4">
-                                <mat-radio-button value="Cultural Destructiveness">Cultural Destructiveness
-                                </mat-radio-button>
-                            </div>
-                            <div class="col-4">
-                                <mat-radio-button value="Cultural Incapacity">Cultural Incapacity
-                                </mat-radio-button>
-                            </div>
-                            <div class="col-4">
-                                <mat-radio-button value="Cultural Blindness">Cultural Blindness
-                                </mat-radio-button>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-4">
-                                <mat-radio-button value="Cultural Pre-Competence">Cultural Pre-Competence
-                                </mat-radio-button>
-                            </div>
-                            <div class="col-4">
-                                <mat-radio-button value="Cultural Competence">Cultural Competence
-                                </mat-radio-button>
-                            </div>
-                            <div class="col-4">
-                                <mat-radio-button value="Cultural Proficiency">Cultural Proficiency
-                                </mat-radio-button>
-                            </div>
-                        </div>
-                    </mat-radio-group>
-                    
-                    <p style="margin-top: 15px;">6. How would you rate the design of our website?
-                    </p>
-                    <div class="row">
-                        <div class="col-1">
-                            <button  class="zoom" (click)="changeEmojiSize('angry')">
-                                <img id="angry" class="imgClass" src="../../assets/angry.png"/>
-                            </button>
-                            <p>Very poor</p>
-
-                        </div>
-                        <div class="col-1">
-                            <button  class="zoom" (click)="changeEmojiSize('sad')">
-                                <img id="sad" class="imgClass" src="../../assets/sad.png"/>
-                            </button>
-                            <p>Poor</p>
-                        </div>
-                        <div class="col-1">
-                            <button  class="zoom" (click)="changeEmojiSize('neutral')">
-                                <img id="neutral" class="imgClass" src="../../assets/neutral.png" />
-                            </button>
-                            <p style="text-align: justify;">Fair</p>
-                        </div>
-                        <div class="col-1">
-                            <button  class="zoom" (click)="changeEmojiSize('smile')">
-                                <img id="smile" class="imgClass" src="../../assets/smile.png"/>
-                            </button>
-                            <p>Good</p>
-                        </div>
-                        <div class="col-1">
-                            <button  class="zoom" (click)="changeEmojiSize('heart')">
-                                <img id="heart" class="imgClass" src="../../assets/heart.webp"/>
-                            </button>
-                            <p>Excellent</p>
-                        </div>
-                    </div>
-
-                    <br>
-                    <p style="margin-top: 15px;">7. Was our website easy to use and understand?
-                    </p>
-                    <div class="row">
-
-
-
-                        <div class="col-1">
-                            <button class="zoom" (click) ="changeThumbsSize('thumbsup')">
-                                <img id="thumbsup"  class="imgClass" src="../../assets/thumbsup.png"/>
-                            </button>
-                        </div>
-                        <div class="col-1">
-                            <button  class="zoom" (click) ="changeThumbsSize('thumbsdown')">
-                                <img  id="thumbsdown" class="imgClass" src="../../assets/thumbsdown.png"/>
-                            </button>
-                        </div>
-                    </div>
-
-                    </div>
+        </mat-tab>
+        <mat-tab>
+          <h2>Cultural Proficiency Continuum Q-Sort: Additional Inquires and Reflections</h2>
+          <p>Directions: Read and respond to each question below.</p>
+          <div [formGroup]="finalFeedbackForm" class="questions">
+            <p>1. What are your overall impressions of this activity?</p>
+            <mat-form-field appearance="outline" class="col-lg-12">
+              <mat-label>Explain</mat-label>
+              <input formControlName="q1" type="text" matInput placeholder="" required />
+            </mat-form-field>
+
+            <p style="margin-top: 15px">2. Were there any challenges that came up while completing this activity?</p>
+            <mat-form-field appearance="outline" class="col-lg-12">
+              <mat-label>Explain</mat-label>
+              <input formControlName="q2" type="text" matInput placeholder="" required />
+            </mat-form-field>
+
+            <p style="margin-top: 15px">3. Were there any feelings that came up while completing this activity?</p>
+            <mat-form-field appearance="outline" class="col-lg-12">
+              <mat-label>Explain</mat-label>
+              <input formControlName="q3" type="text" matInput placeholder="" required />
+            </mat-form-field>
+
+            <p style="margin-top: 15px">
+              4. Has this activity (i.e., reacting to and unpacking vignettes) increased your awareness of the different
+              types of culturally proficient interactions and how they affect students from diverse racial, ethnic, and
+              cultural backgrounds?
+            </p>
+            <mat-form-field appearance="outline" class="col-lg-12">
+              <mat-label>Explain</mat-label>
+              <input formControlName="q4" type="text" matInput placeholder="" required />
+            </mat-form-field>
+
+            <p style="margin-top: 15px">
+              5. After engaging with the activity (i.e., reacting to and unpacking vignettes), where would you place
+              yourself on the Cultural Proficiency Continuum?
+            </p>
+            <mat-radio-group formControlName="q5" class="example-radio-group">
+              <div class="row">
+                <div class="col-4">
+                  <mat-radio-button value="Cultural Destructiveness">Cultural Destructiveness </mat-radio-button>
+                </div>
+                <div class="col-4">
+                  <mat-radio-button value="Cultural Incapacity">Cultural Incapacity </mat-radio-button>
+                </div>
+                <div class="col-4">
+                  <mat-radio-button value="Cultural Blindness">Cultural Blindness </mat-radio-button>
+                </div>
+              </div>
+              <div class="row">
+                <div class="col-4">
+                  <mat-radio-button value="Cultural Pre-Competence">Cultural Pre-Competence </mat-radio-button>
+                </div>
+                <div class="col-4">
+                  <mat-radio-button value="Cultural Competence">Cultural Competence </mat-radio-button>
+                </div>
+                <div class="col-4">
+                  <mat-radio-button value="Cultural Proficiency">Cultural Proficiency </mat-radio-button>
+                </div>
+              </div>
+            </mat-radio-group>
 
+            <p style="margin-top: 15px">6. How would you rate the design of our website?</p>
+            <div class="row">
+              <div class="col-1">
+                <button class="zoom" (click)="changeEmojiSize('angry')">
+                  <img id="angry" class="imgClass" src="../../assets/angry.png" />
+                </button>
+                <p>Very poor</p>
+              </div>
+              <div class="col-1">
+                <button class="zoom" (click)="changeEmojiSize('sad')">
+                  <img id="sad" class="imgClass" src="../../assets/sad.png" />
+                </button>
+                <p>Poor</p>
+              </div>
+              <div class="col-1">
+                <button class="zoom" (click)="changeEmojiSize('neutral')">
+                  <img id="neutral" class="imgClass" src="../../assets/neutral.png" />
+                </button>
+                <p style="text-align: justify">Fair</p>
+              </div>
+              <div class="col-1">
+                <button class="zoom" (click)="changeEmojiSize('smile')">
+                  <img id="smile" class="imgClass" src="../../assets/smile.png" />
+                </button>
+                <p>Good</p>
+              </div>
+              <div class="col-1">
+                <button class="zoom" (click)="changeEmojiSize('heart')">
+                  <img id="heart" class="imgClass" src="../../assets/heart.webp" />
+                </button>
+                <p>Excellent</p>
+              </div>
+            </div>
 
-                </mat-tab>
-                <!-- <mat-tab label="Eight">
+            <br />
+            <p style="margin-top: 15px">7. Was our website easy to use and understand?</p>
+            <div class="row">
+              <div class="col-1">
+                <button class="zoom" (click)="changeThumbsSize('thumbsup')">
+                  <img id="thumbsup" class="imgClass" src="../../assets/thumbsup.png" />
+                </button>
+              </div>
+              <div class="col-1">
+                <button class="zoom" (click)="changeThumbsSize('thumbsdown')">
+                  <img id="thumbsdown" class="imgClass" src="../../assets/thumbsdown.png" />
+                </button>
+              </div>
+            </div>
+          </div>
+        </mat-tab>
+        <!-- <mat-tab label="Eight">
                     <h2>Sample of Audio Answer</h2>
                     <p>Please press the button below to start recording your answer.</p>
                     <div style="text-align:center;margin-top: 200px;">
@@ -725,46 +1014,64 @@
                         </audio>
                     </div>
                 </mat-tab> -->
-            </mat-tab-group>
-
-
-
-        </mat-card-content>
-
-
-
-        <mat-card-actions>
-            <div class="row">
-                <div class="col-8">
-                    <button *ngIf="selectedIndex != 5 && selectedIndex != 6 && selectedIndex !=7" mat-raised-button color="primary" style=" padding-right: -10px; " (click)="nextButton()">
-                        NEXT
-                        <mat-icon>arrow_right_al</mat-icon>
-        
-                         </button>
-
-                    <button *ngIf="selectedIndex == 5" mat-raised-button style=" padding-right: -10px; background-color: green; color: white;" (click)="submitForm()">
+      </mat-tab-group>
+    </mat-card-content>
+
+    <mat-card-actions>
+      <div class="row">
+        <div class="col-8">
+          <button
+            *ngIf="selectedIndex != 5 && selectedIndex != 6 && selectedIndex != 7"
+            mat-raised-button
+            color="primary"
+            style="padding-right: -10px"
+            (click)="nextButton()"
+          >
+            NEXT
+            <mat-icon>arrow_right_al</mat-icon>
+          </button>
+
+          <button
+            *ngIf="selectedIndex == 5"
+            mat-raised-button
+            style="padding-right: -10px; background-color: green; color: white"
+            (click)="submitForm()"
+          >
             SUBMIT
-                            <mat-icon>done_outline</mat-icon>
-                             </button>
-                             <button *ngIf="selectedIndex == 6" mat-raised-button style=" padding-right: -10px; background-color: green; color: white;" (click)="submitForm1()">
-                                SUBMIT
-                                                <mat-icon>done_outline</mat-icon>
-                                            </button>
-                    <button *ngIf="selectedIndex == 7" mat-raised-button style=" padding-right: -10px; background-color:#29ABE2; color: white; margin-top: -100px;" (click) = "finalSubmit()">
-                                Go to Dashboard
-                    </button>
-                </div>
-                <div *ngIf="selectedIndex != 6 && selectedIndex != 7 && selectedIndex != 0" class="col-4">
-                    <p style="font-size: 10px; margin:-10px; margin-left: 20px;">Use this bar to increase or decrease the font size</p>
-                    <mat-slider color="primary" min="0" max="4" value="1" tickInterval="1" (input)="sliderFunction($event)"></mat-slider>
-
-
-                </div>
-
-            </div>
-
-
-
-        </mat-card-actions>
-    </mat-card>
-</div>
\ No newline at end of file
+            <mat-icon>done_outline</mat-icon>
+          </button>
+          <button
+            *ngIf="selectedIndex == 6"
+            mat-raised-button
+            style="padding-right: -10px; background-color: green; color: white"
+            (click)="submitForm1()"
+          >
+            SUBMIT
+            <mat-icon>done_outline</mat-icon>
+          </button>
+          <button
+            *ngIf="selectedIndex == 7"
+            mat-raised-button
+            style="padding-right: -10px; background-color: #29abe2; color: white; margin-top: -100px"
+            (click)="finalSubmit()"
+          >
+            Go to Dashboard
+          </button>
+        </div>
+        <div *ngIf="selectedIndex != 6 && selectedIndex != 7 && selectedIndex != 0" class="col-4">
+          <p style="font-size: 10px; margin: -10px; margin-left: 20px">
+            Use this bar to increase or decrease the font size
+          </p>
+          <mat-slider
+            color="primary"
+            min="0"
+            max="4"
+            value="1"
+            tickInterval="1"
+            (input)="sliderFunction($event)"
+          ></mat-slider>
+        </div>
+      </div>
+    </mat-card-actions>
+  </mat-card>
+</div>
diff --git a/src/app/components/final-feedback/final-feedback.component.spec.ts b/src/app/components/final-feedback/final-feedback.component.spec.ts
index 9fc9a6d..192cb29 100644
--- a/src/app/components/final-feedback/final-feedback.component.spec.ts
+++ b/src/app/components/final-feedback/final-feedback.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { FinalFeedbackComponent } from './final-feedback.component';
+import { FinalFeedbackComponent } from "./final-feedback.component";
 
-describe('FinalFeedbackComponent', () => {
+describe("FinalFeedbackComponent", () => {
   let component: FinalFeedbackComponent;
   let fixture: ComponentFixture<FinalFeedbackComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ FinalFeedbackComponent ]
-    })
-    .compileComponents();
+      declarations: [FinalFeedbackComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('FinalFeedbackComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/final-feedback/final-feedback.component.ts b/src/app/components/final-feedback/final-feedback.component.ts
index c994abe..75d508b 100644
--- a/src/app/components/final-feedback/final-feedback.component.ts
+++ b/src/app/components/final-feedback/final-feedback.component.ts
@@ -15,1192 +15,1139 @@ import { DialogFormComponent } from "../cpcq-form/dialog-form/dialog-form.compon
 import { CPCQService } from "src/app/services/cpcq.service";
 
 export interface DialogData {
-    animal: "panda" | "unicorn" | "lion";
-    status;
-    result;
+  animal: "panda" | "unicorn" | "lion";
+  status;
+  result;
 }
 @Component({
-    selector: "app-final-feedback",
-    templateUrl: "./final-feedback.component.html",
-    styleUrls: ["./final-feedback.component.css"],
+  selector: "app-final-feedback",
+  templateUrl: "./final-feedback.component.html",
+  styleUrls: ["./final-feedback.component.css"],
 })
 export class FinalFeedbackComponent implements OnInit, AfterViewInit {
-    firstForm: FormGroup;
-    responseList: any;
-    loaded = false;
-
-    questionArray = [
-        ["Enter First Name", "text"],
-        ["Enter Last Name", "text"],
-        ["Enter Age", "number"],
-    ];
-    statusCheck = false;
-    buttonClick = false;
-
-    sliderValue = 0;
-
-    selectedIndex = 7;
-
-    color: ThemePalette = "primary";
-    mode: ProgressBarMode = "buffer";
-    value1 = 50;
-    bufferValue = 100;
-
-    formValues = [];
-    attributes = ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"];
-    columnHeadings = [
-        "culturalDestructivenessresponse",
-        "culturalIncapacityresponse",
-        "culturalBlindnessresponse",
-        "culturalPreCompetenceresponse",
-        "culturalCompetenceresponse",
-        "culturalProficiencyresponse",
-    ];
-    rowLetters = [
-        ["D", "C", "B", "A", "F", "E"],
-        ["E", "A", "F", "D", "B", "C"],
-        ["F", "E", "B", "C", "D", "A"],
-        ["E", "A", "B", "D", "C", "F"],
-        ["D", "C", "B", "E", "A", "F"],
-    ];
-    boldList = [[]];
-    randomList = [[]];
-    finalList = [[]];
-    finalList1 = [];
-    attitudeForm: FormGroup;
-    empathyForm: FormGroup;
-    policyForm: FormGroup;
-
-    finalFeedbackForm: FormGroup;
-
-    //arrays of data getting from the backend
-
-    attitude: any;
-    empathy: any;
-    policy: any;
-    professionalism: any;
-    teachingPractice: any;
-    wordDescription: any;
-    unpackedCount = 0;
-
-    startTime: any;
-    endTime: any;
-    durationTime: any;
-
-    @ViewChild("changeDiv") changeDiv: ElementRef;
-    @ViewChild("changeDiv1") changeDiv1: ElementRef;
-    @ViewChild("changeDiv2") changeDiv2: ElementRef;
-    @ViewChild("changeDiv3") changeDiv3: ElementRef;
-    @ViewChild("changeDiv4") changeDiv4: ElementRef;
-    @ViewChild("changeDiv5") changeDiv5: ElementRef;
-    @ViewChild("changeDiv6") changeDiv6: ElementRef;
-    @ViewChild("changeDiv7") changeDiv7: ElementRef;
-    @ViewChild("changeDiv8") changeDiv8: ElementRef;
-    @ViewChild("changeDiv9") changeDiv9: ElementRef;
-    @ViewChild("changeDiv10") changeDiv10: ElementRef;
-    @ViewChild("changeDiv11") changeDiv11: ElementRef;
-    @ViewChild("changeDiv12") changeDiv12: ElementRef;
-    @ViewChild("changeDiv13") changeDiv13: ElementRef;
-    @ViewChild("changeDiv14") changeDiv14: ElementRef;
-    @ViewChild("changeDiv15") changeDiv15: ElementRef;
-    @ViewChild("changeDiv16") changeDiv16: ElementRef;
-    @ViewChild("changeDiv17") changeDiv17: ElementRef;
-    @ViewChild("changeDiv18") changeDiv18: ElementRef;
-    @ViewChild("changeDiv19") changeDiv19: ElementRef;
-    @ViewChild("changeDiv20") changeDiv20: ElementRef;
-    @ViewChild("changeDiv21") changeDiv21: ElementRef;
-    @ViewChild("changeDiv22") changeDiv22: ElementRef;
-    @ViewChild("changeDiv23") changeDiv23: ElementRef;
-    @ViewChild("changeDiv24") changeDiv24: ElementRef;
-    @ViewChild("changeDiv25") changeDiv25: ElementRef;
-    @ViewChild("changeDiv26") changeDiv26: ElementRef;
-    @ViewChild("changeDiv27") changeDiv27: ElementRef;
-    @ViewChild("changeDiv28") changeDiv28: ElementRef;
-    @ViewChild("changeDiv29") changeDiv29: ElementRef;
-
-    ngAfterViewInit() {}
-
-    sliderFunction1() {
-        if (this.sliderValue == 1) {
-            this.changeDiv.nativeElement.style.fontSize = "15px";
-            this.changeDiv1.nativeElement.style.fontSize = "15px";
-            this.changeDiv2.nativeElement.style.fontSize = "15px";
-            this.changeDiv3.nativeElement.style.fontSize = "15px";
-            this.changeDiv4.nativeElement.style.fontSize = "15px";
-            this.changeDiv5.nativeElement.style.fontSize = "15px";
-            this.changeDiv6.nativeElement.style.fontSize = "15px";
-            this.changeDiv7.nativeElement.style.fontSize = "15px";
-            this.changeDiv8.nativeElement.style.fontSize = "15px";
-            this.changeDiv9.nativeElement.style.fontSize = "15px";
-            this.changeDiv10.nativeElement.style.fontSize = "15px";
-            this.changeDiv11.nativeElement.style.fontSize = "15px";
-            this.changeDiv12.nativeElement.style.fontSize = "15px";
-            this.changeDiv13.nativeElement.style.fontSize = "15px";
-            this.changeDiv14.nativeElement.style.fontSize = "15px";
-            this.changeDiv15.nativeElement.style.fontSize = "15px";
-            this.changeDiv16.nativeElement.style.fontSize = "15px";
-            this.changeDiv17.nativeElement.style.fontSize = "15px";
-            this.changeDiv18.nativeElement.style.fontSize = "15px";
-            this.changeDiv19.nativeElement.style.fontSize = "15px";
-            this.changeDiv20.nativeElement.style.fontSize = "15px";
-            this.changeDiv21.nativeElement.style.fontSize = "15px";
-            this.changeDiv22.nativeElement.style.fontSize = "15px";
-            this.changeDiv23.nativeElement.style.fontSize = "15px";
-            this.changeDiv24.nativeElement.style.fontSize = "15px";
-            this.changeDiv25.nativeElement.style.fontSize = "15px";
-            this.changeDiv26.nativeElement.style.fontSize = "15px";
-            this.changeDiv27.nativeElement.style.fontSize = "15px";
-            this.changeDiv28.nativeElement.style.fontSize = "15px";
-            this.changeDiv29.nativeElement.style.fontSize = "15px";
-        } else if (this.sliderValue == 2) {
-            this.changeDiv.nativeElement.style.fontSize = "20px";
-            this.changeDiv1.nativeElement.style.fontSize = "20px";
-            this.changeDiv2.nativeElement.style.fontSize = "20px";
-            this.changeDiv3.nativeElement.style.fontSize = "20px";
-            this.changeDiv4.nativeElement.style.fontSize = "20px";
-            this.changeDiv5.nativeElement.style.fontSize = "20px";
-            this.changeDiv6.nativeElement.style.fontSize = "20px";
-            this.changeDiv7.nativeElement.style.fontSize = "20px";
-            this.changeDiv8.nativeElement.style.fontSize = "20px";
-            this.changeDiv9.nativeElement.style.fontSize = "20px";
-            this.changeDiv10.nativeElement.style.fontSize = "20px";
-            this.changeDiv11.nativeElement.style.fontSize = "20px";
-            this.changeDiv12.nativeElement.style.fontSize = "20px";
-            this.changeDiv13.nativeElement.style.fontSize = "20px";
-            this.changeDiv14.nativeElement.style.fontSize = "20px";
-            this.changeDiv15.nativeElement.style.fontSize = "20px";
-            this.changeDiv16.nativeElement.style.fontSize = "20px";
-            this.changeDiv17.nativeElement.style.fontSize = "20px";
-            this.changeDiv18.nativeElement.style.fontSize = "20px";
-            this.changeDiv19.nativeElement.style.fontSize = "20px";
-            this.changeDiv20.nativeElement.style.fontSize = "20px";
-            this.changeDiv21.nativeElement.style.fontSize = "20px";
-            this.changeDiv22.nativeElement.style.fontSize = "20px";
-            this.changeDiv23.nativeElement.style.fontSize = "20px";
-            this.changeDiv24.nativeElement.style.fontSize = "20px";
-            this.changeDiv25.nativeElement.style.fontSize = "20px";
-            this.changeDiv26.nativeElement.style.fontSize = "20px";
-            this.changeDiv27.nativeElement.style.fontSize = "20px";
-            this.changeDiv28.nativeElement.style.fontSize = "20px";
-            this.changeDiv29.nativeElement.style.fontSize = "20px";
-        } else if (this.sliderValue == 3) {
-            this.changeDiv.nativeElement.style.fontSize = "22px";
-            this.changeDiv1.nativeElement.style.fontSize = "22px";
-            this.changeDiv2.nativeElement.style.fontSize = "22px";
-            this.changeDiv3.nativeElement.style.fontSize = "22px";
-            this.changeDiv4.nativeElement.style.fontSize = "22px";
-            this.changeDiv5.nativeElement.style.fontSize = "22px";
-            this.changeDiv6.nativeElement.style.fontSize = "22px";
-            this.changeDiv7.nativeElement.style.fontSize = "22px";
-            this.changeDiv8.nativeElement.style.fontSize = "22px";
-            this.changeDiv9.nativeElement.style.fontSize = "22px";
-            this.changeDiv10.nativeElement.style.fontSize = "22px";
-            this.changeDiv11.nativeElement.style.fontSize = "22px";
-            this.changeDiv12.nativeElement.style.fontSize = "22px";
-            this.changeDiv13.nativeElement.style.fontSize = "22px";
-            this.changeDiv14.nativeElement.style.fontSize = "22px";
-            this.changeDiv15.nativeElement.style.fontSize = "22px";
-            this.changeDiv16.nativeElement.style.fontSize = "22px";
-            this.changeDiv17.nativeElement.style.fontSize = "22px";
-            this.changeDiv18.nativeElement.style.fontSize = "22px";
-            this.changeDiv19.nativeElement.style.fontSize = "22px";
-            this.changeDiv20.nativeElement.style.fontSize = "22px";
-            this.changeDiv21.nativeElement.style.fontSize = "22px";
-            this.changeDiv22.nativeElement.style.fontSize = "22px";
-            this.changeDiv23.nativeElement.style.fontSize = "22px";
-            this.changeDiv24.nativeElement.style.fontSize = "22px";
-            this.changeDiv25.nativeElement.style.fontSize = "22px";
-            this.changeDiv26.nativeElement.style.fontSize = "22px";
-            this.changeDiv27.nativeElement.style.fontSize = "22px";
-            this.changeDiv28.nativeElement.style.fontSize = "22px";
-            this.changeDiv29.nativeElement.style.fontSize = "22px";
-        } else if (this.sliderValue == 4) {
-            this.changeDiv.nativeElement.style.fontSize = "25px";
-            this.changeDiv1.nativeElement.style.fontSize = "25px";
-            this.changeDiv2.nativeElement.style.fontSize = "25px";
-            this.changeDiv3.nativeElement.style.fontSize = "25px";
-            this.changeDiv4.nativeElement.style.fontSize = "25px";
-            this.changeDiv5.nativeElement.style.fontSize = "25px";
-            this.changeDiv6.nativeElement.style.fontSize = "25px";
-            this.changeDiv7.nativeElement.style.fontSize = "25px";
-            this.changeDiv8.nativeElement.style.fontSize = "25px";
-            this.changeDiv9.nativeElement.style.fontSize = "25px";
-            this.changeDiv10.nativeElement.style.fontSize = "25px";
-            this.changeDiv11.nativeElement.style.fontSize = "25px";
-            this.changeDiv12.nativeElement.style.fontSize = "25px";
-            this.changeDiv13.nativeElement.style.fontSize = "25px";
-            this.changeDiv14.nativeElement.style.fontSize = "25px";
-            this.changeDiv15.nativeElement.style.fontSize = "25px";
-            this.changeDiv16.nativeElement.style.fontSize = "25px";
-            this.changeDiv17.nativeElement.style.fontSize = "25px";
-            this.changeDiv18.nativeElement.style.fontSize = "25px";
-            this.changeDiv19.nativeElement.style.fontSize = "25px";
-            this.changeDiv20.nativeElement.style.fontSize = "25px";
-            this.changeDiv21.nativeElement.style.fontSize = "25px";
-            this.changeDiv22.nativeElement.style.fontSize = "25px";
-            this.changeDiv23.nativeElement.style.fontSize = "25px";
-            this.changeDiv24.nativeElement.style.fontSize = "25px";
-            this.changeDiv25.nativeElement.style.fontSize = "25px";
-            this.changeDiv26.nativeElement.style.fontSize = "25px";
-            this.changeDiv27.nativeElement.style.fontSize = "25px";
-            this.changeDiv28.nativeElement.style.fontSize = "25px";
-            this.changeDiv29.nativeElement.style.fontSize = "25px";
-        } else if (this.sliderValue == 5) {
-            this.changeDiv.nativeElement.style.fontSize = "50px";
-            this.changeDiv1.nativeElement.style.fontSize = "50px";
-            this.changeDiv2.nativeElement.style.fontSize = "50px";
-            this.changeDiv3.nativeElement.style.fontSize = "50px";
-            this.changeDiv4.nativeElement.style.fontSize = "50px";
-            this.changeDiv5.nativeElement.style.fontSize = "50px";
-        }
+  firstForm: FormGroup;
+  responseList: any;
+  loaded = false;
+
+  questionArray = [
+    ["Enter First Name", "text"],
+    ["Enter Last Name", "text"],
+    ["Enter Age", "number"],
+  ];
+  statusCheck = false;
+  buttonClick = false;
+
+  sliderValue = 0;
+
+  selectedIndex = 7;
+
+  color: ThemePalette = "primary";
+  mode: ProgressBarMode = "buffer";
+  value1 = 50;
+  bufferValue = 100;
+
+  formValues = [];
+  attributes = ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"];
+  columnHeadings = [
+    "culturalDestructivenessresponse",
+    "culturalIncapacityresponse",
+    "culturalBlindnessresponse",
+    "culturalPreCompetenceresponse",
+    "culturalCompetenceresponse",
+    "culturalProficiencyresponse",
+  ];
+  rowLetters = [
+    ["D", "C", "B", "A", "F", "E"],
+    ["E", "A", "F", "D", "B", "C"],
+    ["F", "E", "B", "C", "D", "A"],
+    ["E", "A", "B", "D", "C", "F"],
+    ["D", "C", "B", "E", "A", "F"],
+  ];
+  boldList = [[]];
+  randomList = [[]];
+  finalList = [[]];
+  finalList1 = [];
+  attitudeForm: FormGroup;
+  empathyForm: FormGroup;
+  policyForm: FormGroup;
+
+  finalFeedbackForm: FormGroup;
+
+  //arrays of data getting from the backend
+
+  attitude: any;
+  empathy: any;
+  policy: any;
+  professionalism: any;
+  teachingPractice: any;
+  wordDescription: any;
+  unpackedCount = 0;
+
+  startTime: any;
+  endTime: any;
+  durationTime: any;
+
+  @ViewChild("changeDiv") changeDiv: ElementRef;
+  @ViewChild("changeDiv1") changeDiv1: ElementRef;
+  @ViewChild("changeDiv2") changeDiv2: ElementRef;
+  @ViewChild("changeDiv3") changeDiv3: ElementRef;
+  @ViewChild("changeDiv4") changeDiv4: ElementRef;
+  @ViewChild("changeDiv5") changeDiv5: ElementRef;
+  @ViewChild("changeDiv6") changeDiv6: ElementRef;
+  @ViewChild("changeDiv7") changeDiv7: ElementRef;
+  @ViewChild("changeDiv8") changeDiv8: ElementRef;
+  @ViewChild("changeDiv9") changeDiv9: ElementRef;
+  @ViewChild("changeDiv10") changeDiv10: ElementRef;
+  @ViewChild("changeDiv11") changeDiv11: ElementRef;
+  @ViewChild("changeDiv12") changeDiv12: ElementRef;
+  @ViewChild("changeDiv13") changeDiv13: ElementRef;
+  @ViewChild("changeDiv14") changeDiv14: ElementRef;
+  @ViewChild("changeDiv15") changeDiv15: ElementRef;
+  @ViewChild("changeDiv16") changeDiv16: ElementRef;
+  @ViewChild("changeDiv17") changeDiv17: ElementRef;
+  @ViewChild("changeDiv18") changeDiv18: ElementRef;
+  @ViewChild("changeDiv19") changeDiv19: ElementRef;
+  @ViewChild("changeDiv20") changeDiv20: ElementRef;
+  @ViewChild("changeDiv21") changeDiv21: ElementRef;
+  @ViewChild("changeDiv22") changeDiv22: ElementRef;
+  @ViewChild("changeDiv23") changeDiv23: ElementRef;
+  @ViewChild("changeDiv24") changeDiv24: ElementRef;
+  @ViewChild("changeDiv25") changeDiv25: ElementRef;
+  @ViewChild("changeDiv26") changeDiv26: ElementRef;
+  @ViewChild("changeDiv27") changeDiv27: ElementRef;
+  @ViewChild("changeDiv28") changeDiv28: ElementRef;
+  @ViewChild("changeDiv29") changeDiv29: ElementRef;
+
+  ngAfterViewInit() {}
+
+  sliderFunction1() {
+    if (this.sliderValue == 1) {
+      this.changeDiv.nativeElement.style.fontSize = "15px";
+      this.changeDiv1.nativeElement.style.fontSize = "15px";
+      this.changeDiv2.nativeElement.style.fontSize = "15px";
+      this.changeDiv3.nativeElement.style.fontSize = "15px";
+      this.changeDiv4.nativeElement.style.fontSize = "15px";
+      this.changeDiv5.nativeElement.style.fontSize = "15px";
+      this.changeDiv6.nativeElement.style.fontSize = "15px";
+      this.changeDiv7.nativeElement.style.fontSize = "15px";
+      this.changeDiv8.nativeElement.style.fontSize = "15px";
+      this.changeDiv9.nativeElement.style.fontSize = "15px";
+      this.changeDiv10.nativeElement.style.fontSize = "15px";
+      this.changeDiv11.nativeElement.style.fontSize = "15px";
+      this.changeDiv12.nativeElement.style.fontSize = "15px";
+      this.changeDiv13.nativeElement.style.fontSize = "15px";
+      this.changeDiv14.nativeElement.style.fontSize = "15px";
+      this.changeDiv15.nativeElement.style.fontSize = "15px";
+      this.changeDiv16.nativeElement.style.fontSize = "15px";
+      this.changeDiv17.nativeElement.style.fontSize = "15px";
+      this.changeDiv18.nativeElement.style.fontSize = "15px";
+      this.changeDiv19.nativeElement.style.fontSize = "15px";
+      this.changeDiv20.nativeElement.style.fontSize = "15px";
+      this.changeDiv21.nativeElement.style.fontSize = "15px";
+      this.changeDiv22.nativeElement.style.fontSize = "15px";
+      this.changeDiv23.nativeElement.style.fontSize = "15px";
+      this.changeDiv24.nativeElement.style.fontSize = "15px";
+      this.changeDiv25.nativeElement.style.fontSize = "15px";
+      this.changeDiv26.nativeElement.style.fontSize = "15px";
+      this.changeDiv27.nativeElement.style.fontSize = "15px";
+      this.changeDiv28.nativeElement.style.fontSize = "15px";
+      this.changeDiv29.nativeElement.style.fontSize = "15px";
+    } else if (this.sliderValue == 2) {
+      this.changeDiv.nativeElement.style.fontSize = "20px";
+      this.changeDiv1.nativeElement.style.fontSize = "20px";
+      this.changeDiv2.nativeElement.style.fontSize = "20px";
+      this.changeDiv3.nativeElement.style.fontSize = "20px";
+      this.changeDiv4.nativeElement.style.fontSize = "20px";
+      this.changeDiv5.nativeElement.style.fontSize = "20px";
+      this.changeDiv6.nativeElement.style.fontSize = "20px";
+      this.changeDiv7.nativeElement.style.fontSize = "20px";
+      this.changeDiv8.nativeElement.style.fontSize = "20px";
+      this.changeDiv9.nativeElement.style.fontSize = "20px";
+      this.changeDiv10.nativeElement.style.fontSize = "20px";
+      this.changeDiv11.nativeElement.style.fontSize = "20px";
+      this.changeDiv12.nativeElement.style.fontSize = "20px";
+      this.changeDiv13.nativeElement.style.fontSize = "20px";
+      this.changeDiv14.nativeElement.style.fontSize = "20px";
+      this.changeDiv15.nativeElement.style.fontSize = "20px";
+      this.changeDiv16.nativeElement.style.fontSize = "20px";
+      this.changeDiv17.nativeElement.style.fontSize = "20px";
+      this.changeDiv18.nativeElement.style.fontSize = "20px";
+      this.changeDiv19.nativeElement.style.fontSize = "20px";
+      this.changeDiv20.nativeElement.style.fontSize = "20px";
+      this.changeDiv21.nativeElement.style.fontSize = "20px";
+      this.changeDiv22.nativeElement.style.fontSize = "20px";
+      this.changeDiv23.nativeElement.style.fontSize = "20px";
+      this.changeDiv24.nativeElement.style.fontSize = "20px";
+      this.changeDiv25.nativeElement.style.fontSize = "20px";
+      this.changeDiv26.nativeElement.style.fontSize = "20px";
+      this.changeDiv27.nativeElement.style.fontSize = "20px";
+      this.changeDiv28.nativeElement.style.fontSize = "20px";
+      this.changeDiv29.nativeElement.style.fontSize = "20px";
+    } else if (this.sliderValue == 3) {
+      this.changeDiv.nativeElement.style.fontSize = "22px";
+      this.changeDiv1.nativeElement.style.fontSize = "22px";
+      this.changeDiv2.nativeElement.style.fontSize = "22px";
+      this.changeDiv3.nativeElement.style.fontSize = "22px";
+      this.changeDiv4.nativeElement.style.fontSize = "22px";
+      this.changeDiv5.nativeElement.style.fontSize = "22px";
+      this.changeDiv6.nativeElement.style.fontSize = "22px";
+      this.changeDiv7.nativeElement.style.fontSize = "22px";
+      this.changeDiv8.nativeElement.style.fontSize = "22px";
+      this.changeDiv9.nativeElement.style.fontSize = "22px";
+      this.changeDiv10.nativeElement.style.fontSize = "22px";
+      this.changeDiv11.nativeElement.style.fontSize = "22px";
+      this.changeDiv12.nativeElement.style.fontSize = "22px";
+      this.changeDiv13.nativeElement.style.fontSize = "22px";
+      this.changeDiv14.nativeElement.style.fontSize = "22px";
+      this.changeDiv15.nativeElement.style.fontSize = "22px";
+      this.changeDiv16.nativeElement.style.fontSize = "22px";
+      this.changeDiv17.nativeElement.style.fontSize = "22px";
+      this.changeDiv18.nativeElement.style.fontSize = "22px";
+      this.changeDiv19.nativeElement.style.fontSize = "22px";
+      this.changeDiv20.nativeElement.style.fontSize = "22px";
+      this.changeDiv21.nativeElement.style.fontSize = "22px";
+      this.changeDiv22.nativeElement.style.fontSize = "22px";
+      this.changeDiv23.nativeElement.style.fontSize = "22px";
+      this.changeDiv24.nativeElement.style.fontSize = "22px";
+      this.changeDiv25.nativeElement.style.fontSize = "22px";
+      this.changeDiv26.nativeElement.style.fontSize = "22px";
+      this.changeDiv27.nativeElement.style.fontSize = "22px";
+      this.changeDiv28.nativeElement.style.fontSize = "22px";
+      this.changeDiv29.nativeElement.style.fontSize = "22px";
+    } else if (this.sliderValue == 4) {
+      this.changeDiv.nativeElement.style.fontSize = "25px";
+      this.changeDiv1.nativeElement.style.fontSize = "25px";
+      this.changeDiv2.nativeElement.style.fontSize = "25px";
+      this.changeDiv3.nativeElement.style.fontSize = "25px";
+      this.changeDiv4.nativeElement.style.fontSize = "25px";
+      this.changeDiv5.nativeElement.style.fontSize = "25px";
+      this.changeDiv6.nativeElement.style.fontSize = "25px";
+      this.changeDiv7.nativeElement.style.fontSize = "25px";
+      this.changeDiv8.nativeElement.style.fontSize = "25px";
+      this.changeDiv9.nativeElement.style.fontSize = "25px";
+      this.changeDiv10.nativeElement.style.fontSize = "25px";
+      this.changeDiv11.nativeElement.style.fontSize = "25px";
+      this.changeDiv12.nativeElement.style.fontSize = "25px";
+      this.changeDiv13.nativeElement.style.fontSize = "25px";
+      this.changeDiv14.nativeElement.style.fontSize = "25px";
+      this.changeDiv15.nativeElement.style.fontSize = "25px";
+      this.changeDiv16.nativeElement.style.fontSize = "25px";
+      this.changeDiv17.nativeElement.style.fontSize = "25px";
+      this.changeDiv18.nativeElement.style.fontSize = "25px";
+      this.changeDiv19.nativeElement.style.fontSize = "25px";
+      this.changeDiv20.nativeElement.style.fontSize = "25px";
+      this.changeDiv21.nativeElement.style.fontSize = "25px";
+      this.changeDiv22.nativeElement.style.fontSize = "25px";
+      this.changeDiv23.nativeElement.style.fontSize = "25px";
+      this.changeDiv24.nativeElement.style.fontSize = "25px";
+      this.changeDiv25.nativeElement.style.fontSize = "25px";
+      this.changeDiv26.nativeElement.style.fontSize = "25px";
+      this.changeDiv27.nativeElement.style.fontSize = "25px";
+      this.changeDiv28.nativeElement.style.fontSize = "25px";
+      this.changeDiv29.nativeElement.style.fontSize = "25px";
+    } else if (this.sliderValue == 5) {
+      this.changeDiv.nativeElement.style.fontSize = "50px";
+      this.changeDiv1.nativeElement.style.fontSize = "50px";
+      this.changeDiv2.nativeElement.style.fontSize = "50px";
+      this.changeDiv3.nativeElement.style.fontSize = "50px";
+      this.changeDiv4.nativeElement.style.fontSize = "50px";
+      this.changeDiv5.nativeElement.style.fontSize = "50px";
     }
-    sliderFunction(e) {
-        //
-        this.sliderValue = e.value;
-        if (e.value == 1) {
-            this.changeDiv.nativeElement.style.fontSize = "15px";
-            this.changeDiv1.nativeElement.style.fontSize = "15px";
-            this.changeDiv2.nativeElement.style.fontSize = "15px";
-            this.changeDiv3.nativeElement.style.fontSize = "15px";
-            this.changeDiv4.nativeElement.style.fontSize = "15px";
-            this.changeDiv5.nativeElement.style.fontSize = "15px";
-            this.changeDiv6.nativeElement.style.fontSize = "15px";
-            this.changeDiv7.nativeElement.style.fontSize = "15px";
-            this.changeDiv8.nativeElement.style.fontSize = "15px";
-            this.changeDiv9.nativeElement.style.fontSize = "15px";
-            this.changeDiv10.nativeElement.style.fontSize = "15px";
-            this.changeDiv11.nativeElement.style.fontSize = "15px";
-            this.changeDiv12.nativeElement.style.fontSize = "15px";
-            this.changeDiv13.nativeElement.style.fontSize = "15px";
-            this.changeDiv14.nativeElement.style.fontSize = "15px";
-            this.changeDiv15.nativeElement.style.fontSize = "15px";
-            this.changeDiv16.nativeElement.style.fontSize = "15px";
-            this.changeDiv17.nativeElement.style.fontSize = "15px";
-            this.changeDiv18.nativeElement.style.fontSize = "15px";
-            this.changeDiv19.nativeElement.style.fontSize = "15px";
-            this.changeDiv20.nativeElement.style.fontSize = "15px";
-            this.changeDiv21.nativeElement.style.fontSize = "15px";
-            this.changeDiv22.nativeElement.style.fontSize = "15px";
-            this.changeDiv23.nativeElement.style.fontSize = "15px";
-            this.changeDiv24.nativeElement.style.fontSize = "15px";
-            this.changeDiv25.nativeElement.style.fontSize = "15px";
-            this.changeDiv26.nativeElement.style.fontSize = "15px";
-            this.changeDiv27.nativeElement.style.fontSize = "15px";
-            this.changeDiv28.nativeElement.style.fontSize = "15px";
-            this.changeDiv29.nativeElement.style.fontSize = "15px";
-        } else if (e.value == 2) {
-            this.changeDiv.nativeElement.style.fontSize = "20px";
-            this.changeDiv1.nativeElement.style.fontSize = "20px";
-            this.changeDiv2.nativeElement.style.fontSize = "20px";
-            this.changeDiv3.nativeElement.style.fontSize = "20px";
-            this.changeDiv4.nativeElement.style.fontSize = "20px";
-            this.changeDiv5.nativeElement.style.fontSize = "20px";
-            this.changeDiv6.nativeElement.style.fontSize = "20px";
-            this.changeDiv7.nativeElement.style.fontSize = "20px";
-            this.changeDiv8.nativeElement.style.fontSize = "20px";
-            this.changeDiv9.nativeElement.style.fontSize = "20px";
-            this.changeDiv10.nativeElement.style.fontSize = "20px";
-            this.changeDiv11.nativeElement.style.fontSize = "20px";
-            this.changeDiv12.nativeElement.style.fontSize = "20px";
-            this.changeDiv13.nativeElement.style.fontSize = "20px";
-            this.changeDiv14.nativeElement.style.fontSize = "20px";
-            this.changeDiv15.nativeElement.style.fontSize = "20px";
-            this.changeDiv16.nativeElement.style.fontSize = "20px";
-            this.changeDiv17.nativeElement.style.fontSize = "20px";
-            this.changeDiv18.nativeElement.style.fontSize = "20px";
-            this.changeDiv19.nativeElement.style.fontSize = "20px";
-            this.changeDiv20.nativeElement.style.fontSize = "20px";
-            this.changeDiv21.nativeElement.style.fontSize = "20px";
-            this.changeDiv22.nativeElement.style.fontSize = "20px";
-            this.changeDiv23.nativeElement.style.fontSize = "20px";
-            this.changeDiv24.nativeElement.style.fontSize = "20px";
-            this.changeDiv25.nativeElement.style.fontSize = "20px";
-            this.changeDiv26.nativeElement.style.fontSize = "20px";
-            this.changeDiv27.nativeElement.style.fontSize = "20px";
-            this.changeDiv28.nativeElement.style.fontSize = "20px";
-            this.changeDiv29.nativeElement.style.fontSize = "20px";
-        } else if (e.value == 3) {
-            this.changeDiv.nativeElement.style.fontSize = "22px";
-            this.changeDiv1.nativeElement.style.fontSize = "22px";
-            this.changeDiv2.nativeElement.style.fontSize = "22px";
-            this.changeDiv3.nativeElement.style.fontSize = "22px";
-            this.changeDiv4.nativeElement.style.fontSize = "22px";
-            this.changeDiv5.nativeElement.style.fontSize = "22px";
-            this.changeDiv6.nativeElement.style.fontSize = "22px";
-            this.changeDiv7.nativeElement.style.fontSize = "22px";
-            this.changeDiv8.nativeElement.style.fontSize = "22px";
-            this.changeDiv9.nativeElement.style.fontSize = "22px";
-            this.changeDiv10.nativeElement.style.fontSize = "22px";
-            this.changeDiv11.nativeElement.style.fontSize = "22px";
-            this.changeDiv12.nativeElement.style.fontSize = "22px";
-            this.changeDiv13.nativeElement.style.fontSize = "22px";
-            this.changeDiv14.nativeElement.style.fontSize = "22px";
-            this.changeDiv15.nativeElement.style.fontSize = "22px";
-            this.changeDiv16.nativeElement.style.fontSize = "22px";
-            this.changeDiv17.nativeElement.style.fontSize = "22px";
-            this.changeDiv18.nativeElement.style.fontSize = "22px";
-            this.changeDiv19.nativeElement.style.fontSize = "22px";
-            this.changeDiv20.nativeElement.style.fontSize = "22px";
-            this.changeDiv21.nativeElement.style.fontSize = "22px";
-            this.changeDiv22.nativeElement.style.fontSize = "22px";
-            this.changeDiv23.nativeElement.style.fontSize = "22px";
-            this.changeDiv24.nativeElement.style.fontSize = "22px";
-            this.changeDiv25.nativeElement.style.fontSize = "22px";
-            this.changeDiv26.nativeElement.style.fontSize = "22px";
-            this.changeDiv27.nativeElement.style.fontSize = "22px";
-            this.changeDiv28.nativeElement.style.fontSize = "22px";
-            this.changeDiv29.nativeElement.style.fontSize = "22px";
-        } else if (e.value == 4) {
-            this.changeDiv.nativeElement.style.fontSize = "25px";
-            this.changeDiv1.nativeElement.style.fontSize = "25px";
-            this.changeDiv2.nativeElement.style.fontSize = "25px";
-            this.changeDiv3.nativeElement.style.fontSize = "25px";
-            this.changeDiv4.nativeElement.style.fontSize = "25px";
-            this.changeDiv5.nativeElement.style.fontSize = "25px";
-            this.changeDiv6.nativeElement.style.fontSize = "25px";
-            this.changeDiv7.nativeElement.style.fontSize = "25px";
-            this.changeDiv8.nativeElement.style.fontSize = "25px";
-            this.changeDiv9.nativeElement.style.fontSize = "25px";
-            this.changeDiv10.nativeElement.style.fontSize = "25px";
-            this.changeDiv11.nativeElement.style.fontSize = "25px";
-            this.changeDiv12.nativeElement.style.fontSize = "25px";
-            this.changeDiv13.nativeElement.style.fontSize = "25px";
-            this.changeDiv14.nativeElement.style.fontSize = "25px";
-            this.changeDiv15.nativeElement.style.fontSize = "25px";
-            this.changeDiv16.nativeElement.style.fontSize = "25px";
-            this.changeDiv17.nativeElement.style.fontSize = "25px";
-            this.changeDiv18.nativeElement.style.fontSize = "25px";
-            this.changeDiv19.nativeElement.style.fontSize = "25px";
-            this.changeDiv20.nativeElement.style.fontSize = "25px";
-            this.changeDiv21.nativeElement.style.fontSize = "25px";
-            this.changeDiv22.nativeElement.style.fontSize = "25px";
-            this.changeDiv23.nativeElement.style.fontSize = "25px";
-            this.changeDiv24.nativeElement.style.fontSize = "25px";
-            this.changeDiv25.nativeElement.style.fontSize = "25px";
-            this.changeDiv26.nativeElement.style.fontSize = "25px";
-            this.changeDiv27.nativeElement.style.fontSize = "25px";
-            this.changeDiv28.nativeElement.style.fontSize = "25px";
-            this.changeDiv29.nativeElement.style.fontSize = "25px";
-        } else if (e.value == 5) {
-            this.changeDiv.nativeElement.style.fontSize = "50px";
-            this.changeDiv1.nativeElement.style.fontSize = "50px";
-            this.changeDiv2.nativeElement.style.fontSize = "50px";
-            this.changeDiv3.nativeElement.style.fontSize = "50px";
-            this.changeDiv4.nativeElement.style.fontSize = "50px";
-            this.changeDiv5.nativeElement.style.fontSize = "50px";
-        }
+  }
+  sliderFunction(e) {
+    //
+    this.sliderValue = e.value;
+    if (e.value == 1) {
+      this.changeDiv.nativeElement.style.fontSize = "15px";
+      this.changeDiv1.nativeElement.style.fontSize = "15px";
+      this.changeDiv2.nativeElement.style.fontSize = "15px";
+      this.changeDiv3.nativeElement.style.fontSize = "15px";
+      this.changeDiv4.nativeElement.style.fontSize = "15px";
+      this.changeDiv5.nativeElement.style.fontSize = "15px";
+      this.changeDiv6.nativeElement.style.fontSize = "15px";
+      this.changeDiv7.nativeElement.style.fontSize = "15px";
+      this.changeDiv8.nativeElement.style.fontSize = "15px";
+      this.changeDiv9.nativeElement.style.fontSize = "15px";
+      this.changeDiv10.nativeElement.style.fontSize = "15px";
+      this.changeDiv11.nativeElement.style.fontSize = "15px";
+      this.changeDiv12.nativeElement.style.fontSize = "15px";
+      this.changeDiv13.nativeElement.style.fontSize = "15px";
+      this.changeDiv14.nativeElement.style.fontSize = "15px";
+      this.changeDiv15.nativeElement.style.fontSize = "15px";
+      this.changeDiv16.nativeElement.style.fontSize = "15px";
+      this.changeDiv17.nativeElement.style.fontSize = "15px";
+      this.changeDiv18.nativeElement.style.fontSize = "15px";
+      this.changeDiv19.nativeElement.style.fontSize = "15px";
+      this.changeDiv20.nativeElement.style.fontSize = "15px";
+      this.changeDiv21.nativeElement.style.fontSize = "15px";
+      this.changeDiv22.nativeElement.style.fontSize = "15px";
+      this.changeDiv23.nativeElement.style.fontSize = "15px";
+      this.changeDiv24.nativeElement.style.fontSize = "15px";
+      this.changeDiv25.nativeElement.style.fontSize = "15px";
+      this.changeDiv26.nativeElement.style.fontSize = "15px";
+      this.changeDiv27.nativeElement.style.fontSize = "15px";
+      this.changeDiv28.nativeElement.style.fontSize = "15px";
+      this.changeDiv29.nativeElement.style.fontSize = "15px";
+    } else if (e.value == 2) {
+      this.changeDiv.nativeElement.style.fontSize = "20px";
+      this.changeDiv1.nativeElement.style.fontSize = "20px";
+      this.changeDiv2.nativeElement.style.fontSize = "20px";
+      this.changeDiv3.nativeElement.style.fontSize = "20px";
+      this.changeDiv4.nativeElement.style.fontSize = "20px";
+      this.changeDiv5.nativeElement.style.fontSize = "20px";
+      this.changeDiv6.nativeElement.style.fontSize = "20px";
+      this.changeDiv7.nativeElement.style.fontSize = "20px";
+      this.changeDiv8.nativeElement.style.fontSize = "20px";
+      this.changeDiv9.nativeElement.style.fontSize = "20px";
+      this.changeDiv10.nativeElement.style.fontSize = "20px";
+      this.changeDiv11.nativeElement.style.fontSize = "20px";
+      this.changeDiv12.nativeElement.style.fontSize = "20px";
+      this.changeDiv13.nativeElement.style.fontSize = "20px";
+      this.changeDiv14.nativeElement.style.fontSize = "20px";
+      this.changeDiv15.nativeElement.style.fontSize = "20px";
+      this.changeDiv16.nativeElement.style.fontSize = "20px";
+      this.changeDiv17.nativeElement.style.fontSize = "20px";
+      this.changeDiv18.nativeElement.style.fontSize = "20px";
+      this.changeDiv19.nativeElement.style.fontSize = "20px";
+      this.changeDiv20.nativeElement.style.fontSize = "20px";
+      this.changeDiv21.nativeElement.style.fontSize = "20px";
+      this.changeDiv22.nativeElement.style.fontSize = "20px";
+      this.changeDiv23.nativeElement.style.fontSize = "20px";
+      this.changeDiv24.nativeElement.style.fontSize = "20px";
+      this.changeDiv25.nativeElement.style.fontSize = "20px";
+      this.changeDiv26.nativeElement.style.fontSize = "20px";
+      this.changeDiv27.nativeElement.style.fontSize = "20px";
+      this.changeDiv28.nativeElement.style.fontSize = "20px";
+      this.changeDiv29.nativeElement.style.fontSize = "20px";
+    } else if (e.value == 3) {
+      this.changeDiv.nativeElement.style.fontSize = "22px";
+      this.changeDiv1.nativeElement.style.fontSize = "22px";
+      this.changeDiv2.nativeElement.style.fontSize = "22px";
+      this.changeDiv3.nativeElement.style.fontSize = "22px";
+      this.changeDiv4.nativeElement.style.fontSize = "22px";
+      this.changeDiv5.nativeElement.style.fontSize = "22px";
+      this.changeDiv6.nativeElement.style.fontSize = "22px";
+      this.changeDiv7.nativeElement.style.fontSize = "22px";
+      this.changeDiv8.nativeElement.style.fontSize = "22px";
+      this.changeDiv9.nativeElement.style.fontSize = "22px";
+      this.changeDiv10.nativeElement.style.fontSize = "22px";
+      this.changeDiv11.nativeElement.style.fontSize = "22px";
+      this.changeDiv12.nativeElement.style.fontSize = "22px";
+      this.changeDiv13.nativeElement.style.fontSize = "22px";
+      this.changeDiv14.nativeElement.style.fontSize = "22px";
+      this.changeDiv15.nativeElement.style.fontSize = "22px";
+      this.changeDiv16.nativeElement.style.fontSize = "22px";
+      this.changeDiv17.nativeElement.style.fontSize = "22px";
+      this.changeDiv18.nativeElement.style.fontSize = "22px";
+      this.changeDiv19.nativeElement.style.fontSize = "22px";
+      this.changeDiv20.nativeElement.style.fontSize = "22px";
+      this.changeDiv21.nativeElement.style.fontSize = "22px";
+      this.changeDiv22.nativeElement.style.fontSize = "22px";
+      this.changeDiv23.nativeElement.style.fontSize = "22px";
+      this.changeDiv24.nativeElement.style.fontSize = "22px";
+      this.changeDiv25.nativeElement.style.fontSize = "22px";
+      this.changeDiv26.nativeElement.style.fontSize = "22px";
+      this.changeDiv27.nativeElement.style.fontSize = "22px";
+      this.changeDiv28.nativeElement.style.fontSize = "22px";
+      this.changeDiv29.nativeElement.style.fontSize = "22px";
+    } else if (e.value == 4) {
+      this.changeDiv.nativeElement.style.fontSize = "25px";
+      this.changeDiv1.nativeElement.style.fontSize = "25px";
+      this.changeDiv2.nativeElement.style.fontSize = "25px";
+      this.changeDiv3.nativeElement.style.fontSize = "25px";
+      this.changeDiv4.nativeElement.style.fontSize = "25px";
+      this.changeDiv5.nativeElement.style.fontSize = "25px";
+      this.changeDiv6.nativeElement.style.fontSize = "25px";
+      this.changeDiv7.nativeElement.style.fontSize = "25px";
+      this.changeDiv8.nativeElement.style.fontSize = "25px";
+      this.changeDiv9.nativeElement.style.fontSize = "25px";
+      this.changeDiv10.nativeElement.style.fontSize = "25px";
+      this.changeDiv11.nativeElement.style.fontSize = "25px";
+      this.changeDiv12.nativeElement.style.fontSize = "25px";
+      this.changeDiv13.nativeElement.style.fontSize = "25px";
+      this.changeDiv14.nativeElement.style.fontSize = "25px";
+      this.changeDiv15.nativeElement.style.fontSize = "25px";
+      this.changeDiv16.nativeElement.style.fontSize = "25px";
+      this.changeDiv17.nativeElement.style.fontSize = "25px";
+      this.changeDiv18.nativeElement.style.fontSize = "25px";
+      this.changeDiv19.nativeElement.style.fontSize = "25px";
+      this.changeDiv20.nativeElement.style.fontSize = "25px";
+      this.changeDiv21.nativeElement.style.fontSize = "25px";
+      this.changeDiv22.nativeElement.style.fontSize = "25px";
+      this.changeDiv23.nativeElement.style.fontSize = "25px";
+      this.changeDiv24.nativeElement.style.fontSize = "25px";
+      this.changeDiv25.nativeElement.style.fontSize = "25px";
+      this.changeDiv26.nativeElement.style.fontSize = "25px";
+      this.changeDiv27.nativeElement.style.fontSize = "25px";
+      this.changeDiv28.nativeElement.style.fontSize = "25px";
+      this.changeDiv29.nativeElement.style.fontSize = "25px";
+    } else if (e.value == 5) {
+      this.changeDiv.nativeElement.style.fontSize = "50px";
+      this.changeDiv1.nativeElement.style.fontSize = "50px";
+      this.changeDiv2.nativeElement.style.fontSize = "50px";
+      this.changeDiv3.nativeElement.style.fontSize = "50px";
+      this.changeDiv4.nativeElement.style.fontSize = "50px";
+      this.changeDiv5.nativeElement.style.fontSize = "50px";
     }
-    constructor(
-        private fb: FormBuilder,
-        private apiService: CPCQService,
-        private router: Router,
-        private formService: FirstForm,
-        private domSanitizer: DomSanitizer,
-        public dialog: MatDialog
-    ) {}
-    openDialog(i, j, id) {
+  }
+  constructor(
+    private fb: FormBuilder,
+    private apiService: CPCQService,
+    private router: Router,
+    private formService: FirstForm,
+    private domSanitizer: DomSanitizer,
+    public dialog: MatDialog
+  ) {}
+  openDialog(i, j, id) {
+    //
+
+    var arr = [];
+    arr.push(this.attributes[i]);
+    arr.push(j);
+    arr.push(this.columnHeadings[j]);
+    arr.push(id);
+    const dialogRef = this.dialog.open(DialogFormComponent, {
+      data: {
+        animal: arr,
+        status: "form",
+      },
+      disableClose: true,
+    });
+    dialogRef.afterClosed().subscribe((result) => {
+      if (this.responsesArray[i][j][1] == "colorbold") {
+        this.unpackedCount = this.unpackedCount + 1;
+      }
+    });
+  }
+
+  openWordDialog(i) {
+    //
+    this.buttonClick = true;
+    const dialogRef = this.dialog.open(DialogFormComponent, {
+      data: {
+        animal: i,
+        status: "word",
+      },
+      disableClose: true,
+    });
+
+    dialogRef.afterClosed().subscribe((result) => {
+      this.wordDescription = result;
+    });
+  }
+
+  helpDialog(i) {
+    //
+    this.dialog.open(DialogFormComponent, {
+      data: {
+        animal: i,
+        status: "help",
+      },
+    });
+  }
+
+  keyPressFunc(e) {
+    //
+    var numbersList = ["1"];
+    for (let key in this.attitudeForm.value) {
+      if (numbersList.indexOf(this.attitudeForm.value[key]) == -1) {
         //
+        return "Number";
+      }
+    }
+  }
+
+  getEmailError() {
+    return "Error";
+  }
+  responsesArray = [];
+  temp = [];
+  getResponses() {
+    this.apiService.getResponsesData().subscribe((res) => {
+      for (let key in res) {
+        this.temp = [];
+        for (let key1 in res[key]) {
+          this.temp.push(res[key][key1]);
+        }
+        this.responsesArray.push(this.temp);
+      }
+    });
+  }
+
+  getForm() {
+    var arr = [];
+    var arr1 = [];
+    var arr2 = [];
+    var i;
+    var attitudeResult = [];
+    var empathyResult = [];
+    var policyResult = [];
+    var profResult = [];
+    var teachingResult = [];
+    this.finalList = [[]];
+    this.boldList = [[]];
+    this.apiService.getFormData().subscribe((res) => {
+      for (let key in res) {
+        arr = [];
+        if (res[key]["topic"] == "Attitude") {
+          attitudeResult.push("Attitude");
+          arr.push("Attitude");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+        } else if (res[key]["topic"] == "Empathy") {
+          empathyResult.push("Empathy");
+          arr.push("Empathy");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+        } else if (res[key]["topic"] == "Policy") {
+          policyResult.push("Policy");
+          arr.push("Policy");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+
+          policyResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+        } else if (res[key]["topic"] == "Professionalism") {
+          profResult.push("Professionalism");
+          arr.push("Professionalism");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+
+          profResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+        } else if (res[key]["topic"] == "Teaching Practice") {
+          arr.push("Teaching Pracice");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+          teachingResult.push("Teaching Practice");
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+        }
 
-        var arr = [];
-        arr.push(this.attributes[i]);
-        arr.push(j);
-        arr.push(this.columnHeadings[j]);
-        arr.push(id);
-        const dialogRef = this.dialog.open(DialogFormComponent, {
-            data: {
-                animal: arr,
-                status: "form",
-            },
-            disableClose: true,
-        });
-        dialogRef.afterClosed().subscribe((result) => {
-            if (this.responsesArray[i][j][1] == "colorbold") {
-                this.unpackedCount = this.unpackedCount + 1;
+        this.boldList.push(arr);
+      }
+      this.finalList.push(attitudeResult);
+      this.finalList.push(empathyResult);
+      this.finalList.push(policyResult);
+      this.finalList.push(profResult);
+      this.finalList.push(teachingResult);
+    });
+    this.finalList.splice(0, 1);
+    this.boldList.splice(0, 1);
+    // this.getAllIndexes(this.finalList,1)
+  }
+
+  emoji: any;
+  changeEmojiSize(data) {
+    document.getElementById("angry").style.height = "30px";
+    document.getElementById("angry").style.width = "30px";
+    document.getElementById("sad").style.height = "30px";
+    document.getElementById("sad").style.width = "30px";
+    document.getElementById("neutral").style.height = "30px";
+    document.getElementById("neutral").style.width = "30px";
+    document.getElementById("smile").style.height = "30px";
+    document.getElementById("smile").style.width = "30px";
+    document.getElementById("heart").style.height = "30px";
+    document.getElementById("heart").style.width = "30px";
+    document.getElementById(data).style.height = "50px";
+    document.getElementById(data).style.width = "50px";
+
+    this.emoji = data;
+  }
+
+  thumbs: any;
+  changeThumbsSize(data) {
+    document.getElementById("thumbsup").style.height = "30px";
+    document.getElementById("thumbsup").style.width = "30px";
+    document.getElementById("thumbsdown").style.height = "30px";
+    document.getElementById("thumbsdown").style.width = "30px";
+
+    document.getElementById(data).style.height = "50px";
+    document.getElementById(data).style.width = "50px";
+    this.thumbs = data;
+  }
+  finalSubmit() {
+    this.finalFeedbackForm.value["q6"] = this.thumbs;
+    this.finalFeedbackForm.value["q7"] = this.emoji;
+
+    this.endTime = new Date();
+
+    this.durationTime = (this.endTime - this.startTime) / 1000;
+    this.durationTime = this.durationTime / 60;
+
+    this.apiService.patchStatus("finalfeedbackstatus").subscribe((res) => {});
+
+    this.apiService.postFeedbackForm(this.finalFeedbackForm.value).subscribe(
+      (res) => {
+        this.apiService.changeCPCQStatus().subscribe((res1) => {
+          Swal.fire({
+            text: "Submitted",
+            icon: "success",
+          }).then((res) => {
+            if (res["isConfirmed"]) {
+              this.router.navigateByUrl("/result");
             }
+          });
         });
-    }
-
-    openWordDialog(i) {
+      },
+      (err) => {}
+    );
+  }
+  ngOnInit(): void {
+    this.startTime = new Date();
+    this.finalFeedbackForm = this.fb.group({
+      q1: [""],
+      q2: [""],
+      q3: [""],
+      q4: [""],
+      q5: [""],
+      q6: [""],
+      q7: [""],
+    });
+
+    this.apiService.attitudeData().subscribe(
+      (res) => {
         //
-        this.buttonClick = true;
-        const dialogRef = this.dialog.open(DialogFormComponent, {
-            data: {
-                animal: i,
-                status: "word",
-            },
-            disableClose: true,
-        });
-
-        dialogRef.afterClosed().subscribe((result) => {
-            this.wordDescription = result;
-        });
-    }
-
-    helpDialog(i) {
+        this.attitude = res[0];
         //
-        this.dialog.open(DialogFormComponent, {
-            data: {
-                animal: i,
-                status: "help",
-            },
-        });
-    }
+      },
+      (err) => {}
+    );
 
-    keyPressFunc(e) {
+    this.apiService.empathyData().subscribe(
+      (res) => {
         //
-        var numbersList = ["1"];
-        for (let key in this.attitudeForm.value) {
-            if (numbersList.indexOf(this.attitudeForm.value[key]) == -1) {
-                //
-                return "Number";
+        this.empathy = res[0];
+        //
+      },
+      (err) => {}
+    );
+
+    this.apiService.policyData().subscribe(
+      (res) => {
+        this.policy = res[0];
+      },
+      (err) => {}
+    );
+
+    this.apiService.professionalismData().subscribe(
+      (res) => {
+        this.professionalism = res[0];
+      },
+      (err) => {}
+    );
+
+    this.apiService.teachingData().subscribe(
+      (res) => {
+        this.teachingPractice = res[0];
+      },
+      (err) => {}
+    );
+
+    this.attitudeForm = this.fb.group({
+      A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      description: ["", [Validators.required]],
+    });
+
+    this.empathyForm = this.fb.group({
+      A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+    });
+
+    this.policyForm = this.fb.group({
+      A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+    });
+
+    var arr = [];
+    var arr1 = [];
+    var arr2 = [];
+    var i;
+    for (var j = 0; j < 5; j++) {
+      arr = [];
+      arr1 = [];
+      arr2 = [];
+      i = 0;
+      while (i < 6) {
+        var item1 = Math.floor(Math.random() * (7 - 1) + 1);
+        if (arr1.indexOf(item1) == -1) {
+          if (i == 0) {
+            arr.push(this.attributes[j]);
+            arr.push(this.rowLetters[j][i] + ". " + item1);
+            arr1.push(item1);
+            if (arr1[arr1.length - 1] > 2) {
+              //
+              arr2.push("True");
+            } else {
+              arr2.push("False");
             }
+          } else {
+            arr.push(this.rowLetters[j][i] + ". " + item1);
+            arr1.push(item1);
+            if (i == 1) {
+              if (arr1[arr1.length - 1] > 3) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
+            } else if (i == 2) {
+              if (arr1[arr1.length - 1] > 4 || arr1[arr1.length - 1] == 1) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
+            } else if (i == 3) {
+              if (arr1[arr1.length - 1] > 5 || arr1[arr1.length - 1] < 4) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
+            } else if (i == 4) {
+              if (arr1[arr1.length - 1] < 4) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
+            } else if (i == 5) {
+              if (arr1[arr1.length - 1] < 5) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
+            }
+          }
+          i = i + 1;
+        } else {
+          continue;
         }
+      }
+      this.formValues.push(arr);
+      this.boldList.push(arr1);
+      this.randomList.push(arr2);
     }
-
-    getEmailError() {
-        return "Error";
-    }
-    responsesArray = [];
-    temp = [];
-    getResponses() {
-        this.apiService.getResponsesData().subscribe((res) => {
-            for (let key in res) {
-                this.temp = [];
-                for (let key1 in res[key]) {
-                    this.temp.push(res[key][key1]);
-                }
-                this.responsesArray.push(this.temp);
-            }
-        });
+    this.boldList.splice(0, 1);
+    this.randomList.splice(0, 1);
+
+    this.getAllIndexes(this.randomList, "True");
+    this.loaded = true;
+  }
+
+  getAllIndexes(arr, val) {
+    var indexes = [];
+    var i = -1;
+    for (var i = 0; i < arr.length; i++) {
+      for (var j = 0; j < arr[i].length; j++) {
+        if (arr[i][j] == "True") {
+          var arr1 = [];
+          arr1.push(i);
+          arr1.push(j);
+          indexes.push(arr1);
+        }
+      }
     }
 
-    getForm() {
-        var arr = [];
-        var arr1 = [];
-        var arr2 = [];
-        var i;
-        var attitudeResult = [];
-        var empathyResult = [];
-        var policyResult = [];
-        var profResult = [];
-        var teachingResult = [];
-        this.finalList = [[]];
-        this.boldList = [[]];
-        this.apiService.getFormData().subscribe((res) => {
-            for (let key in res) {
-                arr = [];
-                if (res[key]["topic"] == "Attitude") {
-                    attitudeResult.push("Attitude");
-                    arr.push("Attitude");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
-                    );
-                } else if (res[key]["topic"] == "Empathy") {
-                    empathyResult.push("Empathy");
-                    arr.push("Empathy");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
-                    );
-                } else if (res[key]["topic"] == "Policy") {
-                    policyResult.push("Policy");
-                    arr.push("Policy");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
-                    );
-                    policyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
-                    );
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
-                    );
-                } else if (res[key]["topic"] == "Professionalism") {
-                    profResult.push("Professionalism");
-                    arr.push("Professionalism");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-
-                    profResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    profResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
-                    profResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
-                    profResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    profResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
-                    profResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
-                } else if (res[key]["topic"] == "Teaching Practice") {
-                    arr.push("Teaching Pracice");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-                    teachingResult.push("Teaching Practice");
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
-                    );
-                }
-
-                this.boldList.push(arr);
-            }
-            this.finalList.push(attitudeResult);
-            this.finalList.push(empathyResult);
-            this.finalList.push(policyResult);
-            this.finalList.push(profResult);
-            this.finalList.push(teachingResult);
-        });
-        this.finalList.splice(0, 1);
-        this.boldList.splice(0, 1);
-        // this.getAllIndexes(this.finalList,1)
+    var arr1 = [];
+    for (var i = 0; i < indexes.length; i++) {
+      arr1.push(i);
     }
-
-    emoji: any;
-    changeEmojiSize(data) {
-        document.getElementById("angry").style.height = "30px";
-        document.getElementById("angry").style.width = "30px";
-        document.getElementById("sad").style.height = "30px";
-        document.getElementById("sad").style.width = "30px";
-        document.getElementById("neutral").style.height = "30px";
-        document.getElementById("neutral").style.width = "30px";
-        document.getElementById("smile").style.height = "30px";
-        document.getElementById("smile").style.width = "30px";
-        document.getElementById("heart").style.height = "30px";
-        document.getElementById("heart").style.width = "30px";
-        document.getElementById(data).style.height = "50px";
-        document.getElementById(data).style.width = "50px";
-
-        this.emoji = data;
+    var ranNums = [];
+    var i = arr1.length;
+    var j = 0;
+    var count = 0;
+    while (i--) {
+      if (count < 5) {
+        j = Math.floor(Math.random() * (i + 1));
+        ranNums.push(arr1[j]);
+        arr1.splice(j, 1);
+        count = count + 1;
+      } else {
+        break;
+      }
     }
 
-    thumbs: any;
-    changeThumbsSize(data) {
-        document.getElementById("thumbsup").style.height = "30px";
-        document.getElementById("thumbsup").style.width = "30px";
-        document.getElementById("thumbsdown").style.height = "30px";
-        document.getElementById("thumbsdown").style.width = "30px";
-
-        document.getElementById(data).style.height = "50px";
-        document.getElementById(data).style.width = "50px";
-        this.thumbs = data;
+    //
+    for (var i = 0; i < this.boldList.length; i++) {
+      var temp = [];
+      for (var j = 0; j < 6; j++) {
+        temp.push("False");
+      }
+      this.finalList1.push(temp);
     }
-    finalSubmit() {
-        this.finalFeedbackForm.value["q6"] = this.thumbs;
-        this.finalFeedbackForm.value["q7"] = this.emoji;
 
-        this.endTime = new Date();
-
-        this.durationTime = (this.endTime - this.startTime) / 1000;
-        this.durationTime = this.durationTime / 60;
+    for (var i = 0; i < ranNums.length; i++) {
+      var item = indexes[ranNums[i]];
 
-        this.apiService.patchStatus("finalfeedbackstatus").subscribe((res) => {});
-
-        this.apiService.postFeedbackForm(this.finalFeedbackForm.value).subscribe(
-            (res) => {
-                this.apiService.changeCPCQStatus().subscribe((res1) => {
-                    Swal.fire({
-                        text: "Submitted",
-                        icon: "success",
-                    }).then((res) => {
-                        if (res["isConfirmed"]) {
-                            this.router.navigateByUrl("/result");
-                        }
-                    });
-                });
-            },
-            (err) => {}
-        );
+      this.finalList1[item[0]][item[1]] = "True";
     }
-    ngOnInit(): void {
-        this.startTime = new Date();
-        this.finalFeedbackForm = this.fb.group({
-            q1: [""],
-            q2: [""],
-            q3: [""],
-            q4: [""],
-            q5: [""],
-            q6: [""],
-            q7: [""],
-        });
-
-        this.apiService.attitudeData().subscribe(
-            (res) => {
-                //
-                this.attitude = res[0];
-                //
-            },
-            (err) => {}
-        );
-
-        this.apiService.empathyData().subscribe(
-            (res) => {
-                //
-                this.empathy = res[0];
-                //
-            },
-            (err) => {}
-        );
-
-        this.apiService.policyData().subscribe(
-            (res) => {
-                this.policy = res[0];
-            },
-            (err) => {}
-        );
-
-        this.apiService.professionalismData().subscribe(
-            (res) => {
-                this.professionalism = res[0];
-            },
-            (err) => {}
-        );
-
-        this.apiService.teachingData().subscribe(
-            (res) => {
-                this.teachingPractice = res[0];
-            },
-            (err) => {}
-        );
-
-        this.attitudeForm = this.fb.group({
-            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            description: ["", [Validators.required]],
-        });
-
-        this.empathyForm = this.fb.group({
-            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-        });
-
-        this.policyForm = this.fb.group({
-            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-        });
-
-        var arr = [];
-        var arr1 = [];
-        var arr2 = [];
-        var i;
-        for (var j = 0; j < 5; j++) {
-            arr = [];
-            arr1 = [];
-            arr2 = [];
-            i = 0;
-            while (i < 6) {
-                var item1 = Math.floor(Math.random() * (7 - 1) + 1);
-                if (arr1.indexOf(item1) == -1) {
-                    if (i == 0) {
-                        arr.push(this.attributes[j]);
-                        arr.push(this.rowLetters[j][i] + ". " + item1);
-                        arr1.push(item1);
-                        if (arr1[arr1.length - 1] > 2) {
-                            //
-                            arr2.push("True");
-                        } else {
-                            arr2.push("False");
-                        }
-                    } else {
-                        arr.push(this.rowLetters[j][i] + ". " + item1);
-                        arr1.push(item1);
-                        if (i == 1) {
-                            if (arr1[arr1.length - 1] > 3) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        } else if (i == 2) {
-                            if (arr1[arr1.length - 1] > 4 || arr1[arr1.length - 1] == 1) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        } else if (i == 3) {
-                            if (arr1[arr1.length - 1] > 5 || arr1[arr1.length - 1] < 4) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        } else if (i == 4) {
-                            if (arr1[arr1.length - 1] < 4) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        } else if (i == 5) {
-                            if (arr1[arr1.length - 1] < 5) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        }
-                    }
-                    i = i + 1;
-                } else {
-                    continue;
-                }
-            }
-            this.formValues.push(arr);
-            this.boldList.push(arr1);
-            this.randomList.push(arr2);
-        }
-        this.boldList.splice(0, 1);
-        this.randomList.splice(0, 1);
-
-        this.getAllIndexes(this.randomList, "True");
-        this.loaded = true;
+    // this.finalList1.splice(0,1)
+  }
+  preSurvey() {
+    this.router.navigateByUrl("/preSurvey");
+  }
+
+  nextButton() {
+    if (this.selectedIndex == 0) {
+      this.selectedIndex = this.selectedIndex + 1;
+      return;
+    }
+    if (this.selectedIndex == 7) {
+      this.router.navigateByUrl("/dashboard");
+      return;
     }
 
-    getAllIndexes(arr, val) {
-        var indexes = [];
-        var i = -1;
-        for (var i = 0; i < arr.length; i++) {
-            for (var j = 0; j < arr[i].length; j++) {
-                if (arr[i][j] == "True") {
-                    var arr1 = [];
-                    arr1.push(i);
-                    arr1.push(j);
-                    indexes.push(arr1);
-                }
-            }
-        }
-
-        var arr1 = [];
-        for (var i = 0; i < indexes.length; i++) {
-            arr1.push(i);
-        }
-        var ranNums = [];
-        var i = arr1.length;
-        var j = 0;
-        var count = 0;
-        while (i--) {
-            if (count < 5) {
-                j = Math.floor(Math.random() * (i + 1));
-                ranNums.push(arr1[j]);
-                arr1.splice(j, 1);
-                count = count + 1;
-            } else {
-                break;
-            }
-        }
-
-        //
-        for (var i = 0; i < this.boldList.length; i++) {
-            var temp = [];
-            for (var j = 0; j < 6; j++) {
-                temp.push("False");
-            }
-            this.finalList1.push(temp);
-        }
-
-        for (var i = 0; i < ranNums.length; i++) {
-            var item = indexes[ranNums[i]];
-
-            this.finalList1[item[0]][item[1]] = "True";
-        }
-        // this.finalList1.splice(0,1)
+    var numberList = [];
+    var flag = true;
+    for (let key in this.attitudeForm.value) {
+      if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
+        flag = false;
+        Swal.fire({
+          text: "Please enter values from 1 through 6 only.",
+          icon: "warning",
+        }).then((res) => {});
+        break;
+      }
+      if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
+        numberList.push(this.attitudeForm.value[key]);
+      } else {
+        flag = false;
+        Swal.fire({
+          text: "The inputs have been repeated. Please enter values from 1 through 6.",
+          icon: "warning",
+        }).then((res) => {});
+        break;
+      }
     }
-    preSurvey() {
-        this.router.navigateByUrl("/preSurvey");
+    if (!this.buttonClick) {
+      flag = false;
+      Swal.fire({
+        text: "Click on the word '" + this.attributes[this.selectedIndex - 1] + "' and respond to the prompt.",
+        icon: "warning",
+      }).then((res) => {});
     }
-
-    nextButton() {
-        if (this.selectedIndex == 0) {
+    if (flag) {
+      if (this.selectedIndex == 7) {
+        this.router.navigateByUrl("/postSurvey");
+      }
+      this.sliderFunction1();
+      var formData = {};
+      formData["topic"] = this.attributes[this.selectedIndex - 1];
+      if (this.attributes[this.selectedIndex - 1] == "Attitude") {
+        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalCompetence"] = "F. " + this.attitudeForm.value["F"];
+        formData["culturalProficiency"] = "E. " + this.attitudeForm.value["E"];
+      } else if (this.attributes[this.selectedIndex - 1] == "Empathy") {
+        formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalBlindness"] = "F. " + this.attitudeForm.value["F"];
+        formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalCompetence"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalProficiency"] = "C. " + this.attitudeForm.value["C"];
+      } else if (this.attributes[this.selectedIndex - 1] == "Policy") {
+        formData["culturalDestructiveness"] = "F. " + this.attitudeForm.value["F"];
+        formData["culturalIncapacity"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalCompetence"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalProficiency"] = "A. " + this.attitudeForm.value["A"];
+      } else if (this.attributes[this.selectedIndex - 1] == "Professionalism") {
+        formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalCompetence"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+      } else if (this.attributes[this.selectedIndex - 1] == "Teaching Practice") {
+        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+      }
+
+      this.endTime = new Date();
+
+      this.durationTime = (this.endTime - this.startTime) / 1000;
+      this.durationTime = this.durationTime / 60;
+
+      formData["description"] = this.wordDescription;
+      formData["duration"] = this.durationTime;
+      this.apiService.postFormData(formData).subscribe(
+        (res) => {
+          //
+        },
+        (err) => {}
+      );
+      // this.getForm();
+      this.selectedIndex = this.selectedIndex + 1;
+      this.buttonClick = false;
+      this.startTime = new Date();
+      this.attitudeForm = this.fb.group({
+        A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      });
+    }
+  }
+
+  postSurvey() {
+    this.router.navigateByUrl("/postSurvey");
+  }
+
+  submitForm1() {
+    if (this.unpackedCount >= 5) {
+      this.endTime = new Date();
+
+      this.durationTime = (this.endTime - this.startTime) / 1000;
+      this.durationTime = this.durationTime / 60;
+      this.apiService.patchStatus("cpcqstatus").subscribe((res) => {
+        Swal.fire({
+          text: "Submitted",
+          icon: "success",
+        }).then((res) => {
+          if (res["isConfirmed"]) {
+            // this.getForm()
             this.selectedIndex = this.selectedIndex + 1;
-            return;
-        }
-        if (this.selectedIndex == 7) {
-            this.router.navigateByUrl("/dashboard");
-            return;
-        }
-
-        var numberList = [];
-        var flag = true;
-        for (let key in this.attitudeForm.value) {
-            if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
-                flag = false;
-                Swal.fire({
-                    text: "Please enter values from 1 through 6 only.",
-                    icon: "warning",
-                }).then((res) => {});
-                break;
-            }
-            if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
-                numberList.push(this.attitudeForm.value[key]);
-            } else {
-                flag = false;
-                Swal.fire({
-                    text: "The inputs have been repeated. Please enter values from 1 through 6.",
-                    icon: "warning",
-                }).then((res) => {});
-                break;
-            }
+          }
+        });
+      });
+    } else {
+      Swal.fire({
+        text: "Please click on all the yellow boxes and answer the questions in the prompt.",
+        icon: "warning",
+      }).then((res) => {});
+    }
+  }
+
+  submitForm() {
+    if (this.selectedIndex == 5) {
+      var numberList = [];
+      var flag = false;
+
+      for (let key in this.attitudeForm.value) {
+        if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
+          flag = true;
+          Swal.fire({
+            text: "Please enter values from 1 through 6 only.",
+            icon: "warning",
+          }).then((res) => {});
+          break;
         }
-        if (!this.buttonClick) {
-            flag = false;
-            Swal.fire({
-                text: "Click on the word '" + this.attributes[this.selectedIndex - 1] + "' and respond to the prompt.",
-                icon: "warning",
-            }).then((res) => {});
+        if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
+          numberList.push(this.attitudeForm.value[key]);
+        } else {
+          flag = true;
+          Swal.fire({
+            text: "The inputs have been repeated. Please enter values from 1 through 6.",
+            icon: "warning",
+          }).then((res) => {});
+          break;
         }
-        if (flag) {
-            if (this.selectedIndex == 7) {
-                this.router.navigateByUrl("/postSurvey");
-            }
-            this.sliderFunction1();
-            var formData = {};
-            formData["topic"] = this.attributes[this.selectedIndex - 1];
-            if (this.attributes[this.selectedIndex - 1] == "Attitude") {
-                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalCompetence"] = "F. " + this.attitudeForm.value["F"];
-                formData["culturalProficiency"] = "E. " + this.attitudeForm.value["E"];
-            } else if (this.attributes[this.selectedIndex - 1] == "Empathy") {
-                formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalBlindness"] = "F. " + this.attitudeForm.value["F"];
-                formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalCompetence"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalProficiency"] = "C. " + this.attitudeForm.value["C"];
-            } else if (this.attributes[this.selectedIndex - 1] == "Policy") {
-                formData["culturalDestructiveness"] = "F. " + this.attitudeForm.value["F"];
-                formData["culturalIncapacity"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalCompetence"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalProficiency"] = "A. " + this.attitudeForm.value["A"];
-            } else if (this.attributes[this.selectedIndex - 1] == "Professionalism") {
-                formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalCompetence"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
-            } else if (this.attributes[this.selectedIndex - 1] == "Teaching Practice") {
-                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
-            }
-
-            this.endTime = new Date();
-
-            this.durationTime = (this.endTime - this.startTime) / 1000;
-            this.durationTime = this.durationTime / 60;
+      }
+      if (!this.buttonClick) {
+        flag = true;
+        Swal.fire({
+          text: "Click on the word '" + this.attributes[this.selectedIndex - 1] + "' and respond to the prompt.",
+          icon: "warning",
+        }).then((res) => {});
+      }
+      if (!flag) {
+        //
+        var formData = {};
 
-            formData["description"] = this.wordDescription;
-            formData["duration"] = this.durationTime;
-            this.apiService.postFormData(formData).subscribe(
-                (res) => {
-                    //
-                },
-                (err) => {}
-            );
-            // this.getForm();
-            this.selectedIndex = this.selectedIndex + 1;
-            this.buttonClick = false;
-            this.startTime = new Date();
-            this.attitudeForm = this.fb.group({
-                A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            });
-        }
-    }
+        formData["topic"] = this.attributes[this.selectedIndex - 1];
+        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
 
-    postSurvey() {
-        this.router.navigateByUrl("/postSurvey");
-    }
+        formData["description"] = this.wordDescription;
+        this.endTime = new Date();
 
-    submitForm1() {
-        if (this.unpackedCount >= 5) {
-            this.endTime = new Date();
-
-            this.durationTime = (this.endTime - this.startTime) / 1000;
-            this.durationTime = this.durationTime / 60;
-            this.apiService.patchStatus("cpcqstatus").subscribe((res) => {
-                Swal.fire({
-                    text: "Submitted",
-                    icon: "success",
-                }).then((res) => {
-                    if (res["isConfirmed"]) {
-                        // this.getForm()
-                        this.selectedIndex = this.selectedIndex + 1;
-                    }
-                });
-            });
-        } else {
-            Swal.fire({
-                text: "Please click on all the yellow boxes and answer the questions in the prompt.",
-                icon: "warning",
-            }).then((res) => {});
-        }
-    }
+        this.durationTime = (this.endTime - this.startTime) / 1000;
+        this.durationTime = this.durationTime / 60;
 
-    submitForm() {
-        if (this.selectedIndex == 5) {
-            var numberList = [];
-            var flag = false;
-
-            for (let key in this.attitudeForm.value) {
-                if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
-                    flag = true;
-                    Swal.fire({
-                        text: "Please enter values from 1 through 6 only.",
-                        icon: "warning",
-                    }).then((res) => {});
-                    break;
-                }
-                if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
-                    numberList.push(this.attitudeForm.value[key]);
-                } else {
-                    flag = true;
-                    Swal.fire({
-                        text: "The inputs have been repeated. Please enter values from 1 through 6.",
-                        icon: "warning",
-                    }).then((res) => {});
-                    break;
+        formData["duration"] = this.durationTime;
+        this.apiService.postFormData(formData).subscribe(
+          (res) => {
+            //
+            this.apiService.patchStatus("responsesstatus").subscribe((res) => {
+              Swal.fire({
+                text: "Submitted",
+                icon: "success",
+              }).then((res) => {
+                if (res["isConfirmed"]) {
+                  // this.getForm()
+                  // this.getResponses()
+                  this.router.navigateByUrl("/unpacking");
+
+                  // this.selectedIndex = this.selectedIndex + 1;
+                  this.startTime = new Date();
                 }
-            }
-            if (!this.buttonClick) {
-                flag = true;
-                Swal.fire({
-                    text:
-                        "Click on the word '" +
-                        this.attributes[this.selectedIndex - 1] +
-                        "' and respond to the prompt.",
-                    icon: "warning",
-                }).then((res) => {});
-            }
-            if (!flag) {
-                //
-                var formData = {};
-
-                formData["topic"] = this.attributes[this.selectedIndex - 1];
-                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
-
-                formData["description"] = this.wordDescription;
-                this.endTime = new Date();
-
-                this.durationTime = (this.endTime - this.startTime) / 1000;
-                this.durationTime = this.durationTime / 60;
-
-                formData["duration"] = this.durationTime;
-                this.apiService.postFormData(formData).subscribe(
-                    (res) => {
-                        //
-                        this.apiService.patchStatus("responsesstatus").subscribe((res) => {
-                            Swal.fire({
-                                text: "Submitted",
-                                icon: "success",
-                            }).then((res) => {
-                                if (res["isConfirmed"]) {
-                                    // this.getForm()
-                                    // this.getResponses()
-                                    this.router.navigateByUrl("/unpacking");
-
-                                    // this.selectedIndex = this.selectedIndex + 1;
-                                    this.startTime = new Date();
-                                }
-                            });
-                        });
-                    },
-                    (err) => {}
-                );
-            }
-        }
-    }
-
-    submit() {
-        //
-        var tempDict;
-        this.responseList = [];
-        for (let key in this.firstForm.value) {
-            tempDict = {};
-            tempDict["question"] = key;
-            tempDict["response"] = this.firstForm.value[key];
-            this.responseList.push(tempDict);
-        }
-        //
-
-        this.formService.submitResponse(this.responseList).subscribe(
-            (res) => {
-                //
-                Swal.fire({
-                    text: "Submitted",
-                    icon: "success",
-                });
-                this.router.navigateByUrl("/game");
-            },
-            (err) => {
-                Swal.fire({
-                    text: "Duplicate Entries",
-                    icon: "warning",
-                });
-            }
+              });
+            });
+          },
+          (err) => {}
         );
+      }
     }
-
-    title = "micRecorder";
-    //Lets declare Record OBJ
-    record;
-    //Will use this flag for toggeling recording
-    recording = false;
-    //URL of Blob
-    url;
-    error;
-    sanitize(url: string) {
-        return this.domSanitizer.bypassSecurityTrustUrl(url);
-    }
-    /**
-     * Start recording.
-     */
-    initiateRecording() {
-        this.recording = true;
-        let mediaConstraints = {
-            video: false,
-            audio: true,
-        };
-        navigator.mediaDevices
-            .getUserMedia(mediaConstraints)
-            .then(this.successCallback.bind(this), this.errorCallback.bind(this));
+  }
+
+  submit() {
+    //
+    var tempDict;
+    this.responseList = [];
+    for (let key in this.firstForm.value) {
+      tempDict = {};
+      tempDict["question"] = key;
+      tempDict["response"] = this.firstForm.value[key];
+      this.responseList.push(tempDict);
     }
-    /**
-     * Will be called automatically.
-     */
-    successCallback(stream) {
-        var options = {
-            mimeType: "audio/wav",
-            numberOfAudioChannels: 1,
-            // sampleRate: 16000,
-        };
-        //Start Actuall Recording
-        var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
-        this.record = new StereoAudioRecorder(stream, options);
-        this.record.record();
-    }
-    /**
-     * Stop recording.
-     */
-    stopRecording() {
-        this.recording = false;
-        this.record.stop(this.processRecording.bind(this));
-    }
-    /**
-     * processRecording Do what ever you want with blob
-     * @param  {any} blob Blog
-     */
-    processRecording(blob) {
-        this.url = URL.createObjectURL(blob);
-        //
+    //
+
+    this.formService.submitResponse(this.responseList).subscribe(
+      (res) => {
         //
-    }
-    /**
-     * Process Error.
-     */
-    errorCallback(error) {
-        this.error = "Can not play audio in your browser";
-    }
+        Swal.fire({
+          text: "Submitted",
+          icon: "success",
+        });
+        this.router.navigateByUrl("/game");
+      },
+      (err) => {
+        Swal.fire({
+          text: "Duplicate Entries",
+          icon: "warning",
+        });
+      }
+    );
+  }
+
+  title = "micRecorder";
+  //Lets declare Record OBJ
+  record;
+  //Will use this flag for toggeling recording
+  recording = false;
+  //URL of Blob
+  url;
+  error;
+  sanitize(url: string) {
+    return this.domSanitizer.bypassSecurityTrustUrl(url);
+  }
+  /**
+   * Start recording.
+   */
+  initiateRecording() {
+    this.recording = true;
+    let mediaConstraints = {
+      video: false,
+      audio: true,
+    };
+    navigator.mediaDevices
+      .getUserMedia(mediaConstraints)
+      .then(this.successCallback.bind(this), this.errorCallback.bind(this));
+  }
+  /**
+   * Will be called automatically.
+   */
+  successCallback(stream) {
+    var options = {
+      mimeType: "audio/wav",
+      numberOfAudioChannels: 1,
+      // sampleRate: 16000,
+    };
+    //Start Actuall Recording
+    var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
+    this.record = new StereoAudioRecorder(stream, options);
+    this.record.record();
+  }
+  /**
+   * Stop recording.
+   */
+  stopRecording() {
+    this.recording = false;
+    this.record.stop(this.processRecording.bind(this));
+  }
+  /**
+   * processRecording Do what ever you want with blob
+   * @param  {any} blob Blog
+   */
+  processRecording(blob) {
+    this.url = URL.createObjectURL(blob);
+    //
+    //
+  }
+  /**
+   * Process Error.
+   */
+  errorCallback(error) {
+    this.error = "Can not play audio in your browser";
+  }
 }
diff --git a/src/app/components/first-form/first-form.component.css b/src/app/components/first-form/first-form.component.css
index cfc7747..c18f89f 100644
--- a/src/app/components/first-form/first-form.component.css
+++ b/src/app/components/first-form/first-form.component.css
@@ -1,16 +1,15 @@
 .example-card {
-    /* max-width: 1000px;
+  /* max-width: 1000px;
      */
-    width: 1000px;
-    height: 570px;
-    position: absolute;
-    top: 50%;
-    left: 50%;
-    margin-right: -50%;
-    transform: translate(-50%, -50%);
+  width: 1000px;
+  height: 570px;
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  margin-right: -50%;
+  transform: translate(-50%, -50%);
 }
 
-
 /* .inputButton {
     position: absolute;
     right: 0;
@@ -24,60 +23,57 @@
 } */
 
 .div-wrap {
-    width: 500px;
+  width: 500px;
 }
 
 p {
-    /* font-family: Georgia, 'Times New Roman', Times, serif; */
-    font-family: 'Loto', sans-serif;
-    font-size: 15px;
+  /* font-family: Georgia, 'Times New Roman', Times, serif; */
+  font-family: "Loto", sans-serif;
+  font-size: 15px;
 }
 
 h3 {
-    /* font-family: Georgia, 'Times New Roman', Times, serif; */
-    font-family: 'Loto', sans-serif;
-    margin-bottom: 40px;
+  /* font-family: Georgia, 'Times New Roman', Times, serif; */
+  font-family: "Loto", sans-serif;
+  margin-bottom: 40px;
 }
 
 .mat-card {
-    background-color: #edf6f9;
+  background-color: #edf6f9;
 }
 
 .inputField {
-    width: 100%;
+  width: 100%;
 }
 
-
 /* Chrome, Safari, Edge, Opera */
 
 input::-webkit-outer-spin-button,
 input::-webkit-inner-spin-button {
-    -webkit-appearance: none;
-    margin: 0;
+  -webkit-appearance: none;
+  margin: 0;
 }
 
-
 /* Firefox */
 
-input[type=number] {
-    -moz-appearance: textfield;
+input[type="number"] {
+  -moz-appearance: textfield;
 }
 
 ::ng-deep .mat-tab-header {
-    display: none !important;
+  display: none !important;
 }
 
 p {
-    text-align: justify;
-    text-justify: inter-word;
+  text-align: justify;
+  text-justify: inter-word;
 }
 
 h2 {
-    /* font-family: 'Loto', sans-serif; */
-    font-family: 'Loto', sans-serif;
-
+  /* font-family: 'Loto', sans-serif; */
+  font-family: "Loto", sans-serif;
 }
 
 ::ng-deep .mat-checkbox-layout {
-    white-space: normal !important;
-}
\ No newline at end of file
+  white-space: normal !important;
+}
diff --git a/src/app/components/first-form/first-form.component.html b/src/app/components/first-form/first-form.component.html
index b05054c..75fe186 100644
--- a/src/app/components/first-form/first-form.component.html
+++ b/src/app/components/first-form/first-form.component.html
@@ -1,226 +1,259 @@
 <app-header></app-header>
 <div>
-    <mat-card class="example-card ">
-
-        <mat-card-content>
-            <mat-tab-group [selectedIndex]="selectedIndex">
-                <mat-tab label="First">
-                    <h2>Cultural Proficiency Continuum Q-Sort: Contextualizing, Setting Norms, and Creating a Professional and Safe Space</h2>
-                    <p>Before you engage with the Cultural Proficiency Continuum Q-Sort (CPCQ), situate yourself as a new teacher in a US public school that educates a majority-minority student population. You are at this school for an interview as a potential
-                        new teacher. The principal is taking you on a tour of the school during which you will observe a variety of sociocultural interactions. While you are completing CPCQ, consider how you may react to the sociocultural interactions
-                        you will observe during the tour. Please understand that this is not a "gotcha moment" and do not try to anticipate what the facilitator may want to hear, but rather give an honest response. Thank you for your cooperation and trust
-                        the process; this will make this experience more impactful.
-                    </p>
-                    <p>
-                        Setting norms for Dialogic, creating a professional and safe environment, with Glenn E, Singleton’s (2015) Four Agreements of Courageous Conversations. They are as follows:
-                    </p>
-                    <p>1. Stay engaged.</p>
-                    <p>2. Speak your truth.</p>
-                    <p>3. Experience discomfort..</p>
-                    <p>4. Expect and accept non-closure. </p>
-
-
-
-                    <p>Your data and responses are confidential and will not be used for research or published without your signed consent. Thank you for your engagement and participation.</p>
-                    <button mat-raised-button style="float: right; padding-right: -10px; background-color: #29ABE2;" (click)="preSurvey()">
-                        Take The Pre-Survey
-        
-                         </button>
-                </mat-tab>
-                <mat-tab label="Second">
-                    <h2>Cultural Proficiency Continuum Q-Sort: Reacting to Sociocultural Reproductions that take place within Majority-Minority US Public Schools and Student Populations
-                    </h2>
-                    <p>Next are 30 sociocultural interactions situated within vignettes describing culturally proficient behaviors, which occur daily in majority-minority US public schools. There are six vignettes in each of the five categories: Attitude,
-                        Empathy, Policy, Professionalism, and Teaching Practice. Your task is to prioritize these vignettes by numbering them 1 to 6 within each of the five categories according to your level of reaction. Assign the number 6 to the vignette
-                        that evoked the highest level of reaction, 5 to the vignette that evoked the next highest level of reaction, 4 to the vignette that evoked the next highest level of reaction, and so on until you have assigned a number to all six
-                        vignettes within each category. When you have completed this task, follow the directions in the rating guide to summarize your responses.</p>
-                </mat-tab>
-                <mat-tab label="Third">
-                    <h2>Attitude</h2>
-                    <div>
-                        <mat-checkbox class="example-margin">A. Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.
-
-                        </mat-checkbox>
-                    </div>
-                    <div>
-                        <mat-checkbox class="example-margin">B. Black students have the same opportunities and access to attend college as their white peers.
-                        </mat-checkbox>
-
-                    </div>
-                    <div>
-                        <mat-checkbox class="example-margin">C. Students who wear dreadlocks as a hairstyle are a distraction in the classroom.
-                        </mat-checkbox>
-
-                    </div>
-                    <div>
-                        <mat-checkbox class="example-margin">D. It should be required for students to remove hair accessories that are associated with their culture, tribe, sexuality, or religion.
-                        </mat-checkbox>
-                    </div>
-                    <div>
-                        <mat-checkbox class="example-margin">E. All students who live in the United States deserve a quality public education, even those students whose parents are undocumented immigrants.</mat-checkbox>
-
-                    </div>
-                    <div>
-                        <mat-checkbox class="example-margin">F. All faculty and staff within a school setting have equal ability to transfer knowledge to students in regards to life, culture, character, and/or academic content.</mat-checkbox>
-
-                    </div>
-
-                    <p style="margin-top: 20px; font-size: 15px;"> The singular pronouns: “their” or “they” are used as gender-neutral pronouns.
-                    </p>
-
-
-
-                </mat-tab>
-                <mat-tab label="Fourth">
-                    <h2>Empathy</h2>
-                    <div>
-                        <mat-checkbox class="example-margin">
-                            A. A 10th-grade male died as a result of a car accident during an illegal street race. A group of teachers will not attend the funeral because of the activity that led to the student’s cause of death.
-                        </mat-checkbox>
-                    </div>
-                    <div>
-                        <mat-checkbox class="example-margin">B. A public school Teacher is grounded by the philosophy of their religion. Throughout their career as an educator; they have learned to be welcoming to others’ cultural and religious beliefs even if those beliefs are in conflict
-                            with their own.
-
-                        </mat-checkbox>
-
-                    </div>
-                    <div>
-                        <mat-checkbox class="example-margin">C. In two weeks, the 8th grade teaching cluster will be getting a new math teacher who is Muslim. Next week’s professional development is dedicated to learning about the customs and etiquette of Islam to ensure that the new colleague
-                            feels welcomed in their new school.
-
-                        </mat-checkbox>
-
-                    </div>
-                    <div>
-                        <mat-checkbox class="example-margin">D. An Asian student scored an 85 percent on today’s math quiz. The teacher expressed disappointment in the student by saying, “Come on, you are Asian! You should’ve scored better than this.”
-
-                        </mat-checkbox>
-                    </div>
-                    <div>
-                        <mat-checkbox class="example-margin">E. A school counselor advised a biracial student that they would appear more professional if they perm their hair (removing the kinks) for their upcoming college visits.
-                        </mat-checkbox>
-
-                    </div>
-                    <div>
-                        <mat-checkbox class="example-margin">F. Your colleague was pulled over by the police on the way to work this morning. You hear other colleagues in the break room discussing the reasons why they were pulled over, and all of the suspected reasons were related to what
-                            they may have done (i.e., speeding, running a stop sign, etc.), rather than acknowledging that they may have been pulled over for being a person of color driving a luxury car.
-                        </mat-checkbox>
-
-                    </div>
-                </mat-tab>
-
-                <mat-tab label="Fifth">
-                    <h2>Professionalism</h2>
-                    <div>
-                        <mat-checkbox class="example-margin">
-                            A. A teacher asked the class who has traveled out of the country. A Black male raises his hand and states “I have.” The teacher asked the student three follow-up questions to corroborate his story.
-
-                        </mat-checkbox>
-                    </div>
-                    <div>
-                        <mat-checkbox class="example-margin">B. During lunch duty, teachers had a discussion in the presence of students about tomorrow’s district-wide racial sensitivity training. A teacher commented, “Why do we have to attend this training; the United States is post-racial
-                            because we have a Black president.”
-
-
-                        </mat-checkbox>
-
-                    </div>
-                    <div>
-                        <mat-checkbox class="example-margin">C. The social committee at an elementary school is planning an awards ceremony and dinner for the staff and faculty. Six of their colleagues are vegan because of their religious beliefs. As a result, the committee has added a vegan
-                            selection to the menu to accommodate their colleagues’ religious beliefs
-                        </mat-checkbox>
-
-                    </div>
-                    <div>
-                        <mat-checkbox class="example-margin">D. The reading specialist expressed some concerns to the Vice Principal about how her male students emasculates her during whole group instruction. The Vice Principal said, “Don’t worry about it, that's just how boys behave.”
-
-                        </mat-checkbox>
-                    </div>
-                    <div>
-                        <mat-checkbox class="example-margin">E. A history teacher refuses to acknowledge black history month and does not want to teach content about black history in the United States.
-
-                        </mat-checkbox>
-
-                    </div>
-                    <div>
-                        <mat-checkbox class="example-margin"> F. An AP English teacher has assigned a research paper where the students were required to write about their religion. The teacher did not let their own religious beliefs cloud their judgement; the teacher researched the student’s
-                            religion while grading the paper to offer relevant constructive feedback back on the arguments made within the paper.
-
-
-                        </mat-checkbox>
-
-                    </div>
-
-                </mat-tab>
-
-                <mat-tab label="Sixth">
-                    <h2>Teaching Practice
-                    </h2>
-                    <div>
-                        <mat-checkbox class="example-margin">
-                            A. A novice teacher in a school where the majority of the students are African-American and Latino uses hip-hop as a way to make science relevant in the student's social and cultural context.
-
-
-                        </mat-checkbox>
-                    </div>
-                    <div>
-                        <mat-checkbox class="example-margin">B. An algebra teacher who teaches in a school where the majority of the students are on free and reduced lunch requires that each student buy a specific graphing calculator for Algebra, which retails for over 100 dollars.
-
-
-                        </mat-checkbox>
-
-                    </div>
-                    <div>
-                        <mat-checkbox class="example-margin">C. A teacher created a seating chart that placed ‘unteachable students’ in the back of the classroom, all of whom were male: 2 Latinos and 6 African Americans. In the same seating chart, her ‘good students,' all white, were seated
-                            in preferential seating.
-
-                        </mat-checkbox>
-
-                    </div>
-                    <div>
-                        <mat-checkbox class="example-margin">D. A teacher puts together a petition to request a textbook company to remove the narrative about the enslavement of Africans in the United States in their history textbook to accommodate teachers’ discomfort with discussing this
-                            sensitive topic.
-
-
-
-                        </mat-checkbox>
-                    </div>
-                    <div>
-                        <mat-checkbox class="example-margin">E. A teacher in a Title 1 school (high percentage of children from low-income families) checks homework for completeness rather than correctness as a strategy to improve student efficacy.
-
-
-                        </mat-checkbox>
-
-                    </div>
-                    <div>
-                        <mat-checkbox class="example-margin"> F. There is an increase of LGBTQIA+ students reporting that they are being harassed both verbally and physically in United States public schools. A group of students and teachers are researching the best practices to implement
-                            and create a supportive environment for these students to voice their concerns in their school.
-
-
-                        </mat-checkbox>
-
-                    </div>
-
-                </mat-tab>
-                <mat-tab label="Seventh">
-                    <h2>Sample of Audio Answer</h2>
-                    <p>Please press the button below to start recording your answer.</p>
-                    <div style="text-align:center;margin-top: 200px;">
-                        <button mat-raised-button color="primary" (click)="initiateRecording()" *ngIf="!recording"> Start Recording </button>
-                        <button mat-raised-button color="primary" (click)="stopRecording()" class="btn btn-danger" *ngIf="recording"> Stop Recording </button>
-                        <p></p>
-                        <audio controls="" *ngIf="url">
-                        <source [src]="sanitize(url)" type="audio/wav">
-                        </audio>
-                    </div>
-                </mat-tab>
-            </mat-tab-group>
-
-
-
-        </mat-card-content>
-        <!-- 
+  <mat-card class="example-card">
+    <mat-card-content>
+      <mat-tab-group [selectedIndex]="selectedIndex">
+        <mat-tab label="First">
+          <h2>
+            Cultural Proficiency Continuum Q-Sort: Contextualizing, Setting Norms, and Creating a Professional and Safe
+            Space
+          </h2>
+          <p>
+            Before you engage with the Cultural Proficiency Continuum Q-Sort (CPCQ), situate yourself as a new teacher
+            in a US public school that educates a majority-minority student population. You are at this school for an
+            interview as a potential new teacher. The principal is taking you on a tour of the school during which you
+            will observe a variety of sociocultural interactions. While you are completing CPCQ, consider how you may
+            react to the sociocultural interactions you will observe during the tour. Please understand that this is not
+            a "gotcha moment" and do not try to anticipate what the facilitator may want to hear, but rather give an
+            honest response. Thank you for your cooperation and trust the process; this will make this experience more
+            impactful.
+          </p>
+          <p>
+            Setting norms for Dialogic, creating a professional and safe environment, with Glenn E, Singleton’s (2015)
+            Four Agreements of Courageous Conversations. They are as follows:
+          </p>
+          <p>1. Stay engaged.</p>
+          <p>2. Speak your truth.</p>
+          <p>3. Experience discomfort..</p>
+          <p>4. Expect and accept non-closure.</p>
+
+          <p>
+            Your data and responses are confidential and will not be used for research or published without your signed
+            consent. Thank you for your engagement and participation.
+          </p>
+          <button
+            mat-raised-button
+            style="float: right; padding-right: -10px; background-color: #29abe2"
+            (click)="preSurvey()"
+          >
+            Take The Pre-Survey
+          </button>
+        </mat-tab>
+        <mat-tab label="Second">
+          <h2>
+            Cultural Proficiency Continuum Q-Sort: Reacting to Sociocultural Reproductions that take place within
+            Majority-Minority US Public Schools and Student Populations
+          </h2>
+          <p>
+            Next are 30 sociocultural interactions situated within vignettes describing culturally proficient behaviors,
+            which occur daily in majority-minority US public schools. There are six vignettes in each of the five
+            categories: Attitude, Empathy, Policy, Professionalism, and Teaching Practice. Your task is to prioritize
+            these vignettes by numbering them 1 to 6 within each of the five categories according to your level of
+            reaction. Assign the number 6 to the vignette that evoked the highest level of reaction, 5 to the vignette
+            that evoked the next highest level of reaction, 4 to the vignette that evoked the next highest level of
+            reaction, and so on until you have assigned a number to all six vignettes within each category. When you
+            have completed this task, follow the directions in the rating guide to summarize your responses.
+          </p>
+        </mat-tab>
+        <mat-tab label="Third">
+          <h2>Attitude</h2>
+          <div>
+            <mat-checkbox class="example-margin"
+              >A. Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT
+              has received a scholarship from an Ivy League School due to their socioeconomic status.
+            </mat-checkbox>
+          </div>
+          <div>
+            <mat-checkbox class="example-margin"
+              >B. Black students have the same opportunities and access to attend college as their white peers.
+            </mat-checkbox>
+          </div>
+          <div>
+            <mat-checkbox class="example-margin"
+              >C. Students who wear dreadlocks as a hairstyle are a distraction in the classroom.
+            </mat-checkbox>
+          </div>
+          <div>
+            <mat-checkbox class="example-margin"
+              >D. It should be required for students to remove hair accessories that are associated with their culture,
+              tribe, sexuality, or religion.
+            </mat-checkbox>
+          </div>
+          <div>
+            <mat-checkbox class="example-margin"
+              >E. All students who live in the United States deserve a quality public education, even those students
+              whose parents are undocumented immigrants.</mat-checkbox
+            >
+          </div>
+          <div>
+            <mat-checkbox class="example-margin"
+              >F. All faculty and staff within a school setting have equal ability to transfer knowledge to students in
+              regards to life, culture, character, and/or academic content.</mat-checkbox
+            >
+          </div>
+
+          <p style="margin-top: 20px; font-size: 15px">
+            The singular pronouns: “their” or “they” are used as gender-neutral pronouns.
+          </p>
+        </mat-tab>
+        <mat-tab label="Fourth">
+          <h2>Empathy</h2>
+          <div>
+            <mat-checkbox class="example-margin">
+              A. A 10th-grade male died as a result of a car accident during an illegal street race. A group of teachers
+              will not attend the funeral because of the activity that led to the student’s cause of death.
+            </mat-checkbox>
+          </div>
+          <div>
+            <mat-checkbox class="example-margin"
+              >B. A public school Teacher is grounded by the philosophy of their religion. Throughout their career as an
+              educator; they have learned to be welcoming to others’ cultural and religious beliefs even if those
+              beliefs are in conflict with their own.
+            </mat-checkbox>
+          </div>
+          <div>
+            <mat-checkbox class="example-margin"
+              >C. In two weeks, the 8th grade teaching cluster will be getting a new math teacher who is Muslim. Next
+              week’s professional development is dedicated to learning about the customs and etiquette of Islam to
+              ensure that the new colleague feels welcomed in their new school.
+            </mat-checkbox>
+          </div>
+          <div>
+            <mat-checkbox class="example-margin"
+              >D. An Asian student scored an 85 percent on today’s math quiz. The teacher expressed disappointment in
+              the student by saying, “Come on, you are Asian! You should’ve scored better than this.”
+            </mat-checkbox>
+          </div>
+          <div>
+            <mat-checkbox class="example-margin"
+              >E. A school counselor advised a biracial student that they would appear more professional if they perm
+              their hair (removing the kinks) for their upcoming college visits.
+            </mat-checkbox>
+          </div>
+          <div>
+            <mat-checkbox class="example-margin"
+              >F. Your colleague was pulled over by the police on the way to work this morning. You hear other
+              colleagues in the break room discussing the reasons why they were pulled over, and all of the suspected
+              reasons were related to what they may have done (i.e., speeding, running a stop sign, etc.), rather than
+              acknowledging that they may have been pulled over for being a person of color driving a luxury car.
+            </mat-checkbox>
+          </div>
+        </mat-tab>
+
+        <mat-tab label="Fifth">
+          <h2>Professionalism</h2>
+          <div>
+            <mat-checkbox class="example-margin">
+              A. A teacher asked the class who has traveled out of the country. A Black male raises his hand and states
+              “I have.” The teacher asked the student three follow-up questions to corroborate his story.
+            </mat-checkbox>
+          </div>
+          <div>
+            <mat-checkbox class="example-margin"
+              >B. During lunch duty, teachers had a discussion in the presence of students about tomorrow’s
+              district-wide racial sensitivity training. A teacher commented, “Why do we have to attend this training;
+              the United States is post-racial because we have a Black president.”
+            </mat-checkbox>
+          </div>
+          <div>
+            <mat-checkbox class="example-margin"
+              >C. The social committee at an elementary school is planning an awards ceremony and dinner for the staff
+              and faculty. Six of their colleagues are vegan because of their religious beliefs. As a result, the
+              committee has added a vegan selection to the menu to accommodate their colleagues’ religious beliefs
+            </mat-checkbox>
+          </div>
+          <div>
+            <mat-checkbox class="example-margin"
+              >D. The reading specialist expressed some concerns to the Vice Principal about how her male students
+              emasculates her during whole group instruction. The Vice Principal said, “Don’t worry about it, that's
+              just how boys behave.”
+            </mat-checkbox>
+          </div>
+          <div>
+            <mat-checkbox class="example-margin"
+              >E. A history teacher refuses to acknowledge black history month and does not want to teach content about
+              black history in the United States.
+            </mat-checkbox>
+          </div>
+          <div>
+            <mat-checkbox class="example-margin">
+              F. An AP English teacher has assigned a research paper where the students were required to write about
+              their religion. The teacher did not let their own religious beliefs cloud their judgement; the teacher
+              researched the student’s religion while grading the paper to offer relevant constructive feedback back on
+              the arguments made within the paper.
+            </mat-checkbox>
+          </div>
+        </mat-tab>
+
+        <mat-tab label="Sixth">
+          <h2>Teaching Practice</h2>
+          <div>
+            <mat-checkbox class="example-margin">
+              A. A novice teacher in a school where the majority of the students are African-American and Latino uses
+              hip-hop as a way to make science relevant in the student's social and cultural context.
+            </mat-checkbox>
+          </div>
+          <div>
+            <mat-checkbox class="example-margin"
+              >B. An algebra teacher who teaches in a school where the majority of the students are on free and reduced
+              lunch requires that each student buy a specific graphing calculator for Algebra, which retails for over
+              100 dollars.
+            </mat-checkbox>
+          </div>
+          <div>
+            <mat-checkbox class="example-margin"
+              >C. A teacher created a seating chart that placed ‘unteachable students’ in the back of the classroom, all
+              of whom were male: 2 Latinos and 6 African Americans. In the same seating chart, her ‘good students,' all
+              white, were seated in preferential seating.
+            </mat-checkbox>
+          </div>
+          <div>
+            <mat-checkbox class="example-margin"
+              >D. A teacher puts together a petition to request a textbook company to remove the narrative about the
+              enslavement of Africans in the United States in their history textbook to accommodate teachers’ discomfort
+              with discussing this sensitive topic.
+            </mat-checkbox>
+          </div>
+          <div>
+            <mat-checkbox class="example-margin"
+              >E. A teacher in a Title 1 school (high percentage of children from low-income families) checks homework
+              for completeness rather than correctness as a strategy to improve student efficacy.
+            </mat-checkbox>
+          </div>
+          <div>
+            <mat-checkbox class="example-margin">
+              F. There is an increase of LGBTQIA+ students reporting that they are being harassed both verbally and
+              physically in United States public schools. A group of students and teachers are researching the best
+              practices to implement and create a supportive environment for these students to voice their concerns in
+              their school.
+            </mat-checkbox>
+          </div>
+        </mat-tab>
+        <mat-tab label="Seventh">
+          <h2>Sample of Audio Answer</h2>
+          <p>Please press the button below to start recording your answer.</p>
+          <div style="text-align: center; margin-top: 200px">
+            <button mat-raised-button color="primary" (click)="initiateRecording()" *ngIf="!recording">
+              Start Recording
+            </button>
+            <button
+              mat-raised-button
+              color="primary"
+              (click)="stopRecording()"
+              class="btn btn-danger"
+              *ngIf="recording"
+            >
+              Stop Recording
+            </button>
+            <p></p>
+            <audio controls="" *ngIf="url">
+              <source [src]="sanitize(url)" type="audio/wav" />
+            </audio>
+          </div>
+        </mat-tab>
+      </mat-tab-group>
+    </mat-card-content>
+    <!-- 
         <div class="inputButton1">
             <button mat-raised-button color="primary" style="float: left; padding-right: -10px;" (click)="prevButton()">
                 <mat-icon>arrow_left_al</mat-icon>
@@ -234,6 +267,5 @@
 
                  </button>
         </div> -->
-
-    </mat-card>
-</div>
\ No newline at end of file
+  </mat-card>
+</div>
diff --git a/src/app/components/first-form/first-form.component.spec.ts b/src/app/components/first-form/first-form.component.spec.ts
index 77b0051..a06820b 100644
--- a/src/app/components/first-form/first-form.component.spec.ts
+++ b/src/app/components/first-form/first-form.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { FirstFormComponent } from './first-form.component';
+import { FirstFormComponent } from "./first-form.component";
 
-describe('FirstFormComponent', () => {
+describe("FirstFormComponent", () => {
   let component: FirstFormComponent;
   let fixture: ComponentFixture<FirstFormComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ FirstFormComponent ]
-    })
-    .compileComponents();
+      declarations: [FirstFormComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('FirstFormComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/first-form/first-form.component.ts b/src/app/components/first-form/first-form.component.ts
index 1b172d7..dfe755f 100644
--- a/src/app/components/first-form/first-form.component.ts
+++ b/src/app/components/first-form/first-form.component.ts
@@ -8,140 +8,140 @@ import * as RecordRTC from "recordrtc";
 import { DomSanitizer } from "@angular/platform-browser";
 
 @Component({
-    selector: "app-first-form",
-    templateUrl: "./first-form.component.html",
-    styleUrls: ["./first-form.component.css"],
+  selector: "app-first-form",
+  templateUrl: "./first-form.component.html",
+  styleUrls: ["./first-form.component.css"],
 })
 export class FirstFormComponent implements OnInit {
-    firstForm: FormGroup;
-    responseList: any;
+  firstForm: FormGroup;
+  responseList: any;
 
-    questionArray = [
-        ["Enter First Name", "text"],
-        ["Enter Last Name", "text"],
-        ["Enter Age", "number"],
-    ];
-    statusCheck = false;
+  questionArray = [
+    ["Enter First Name", "text"],
+    ["Enter Last Name", "text"],
+    ["Enter Age", "number"],
+  ];
+  statusCheck = false;
 
-    selectedIndex = 0;
+  selectedIndex = 0;
 
-    constructor(private router: Router, private formService: FirstForm, private domSanitizer: DomSanitizer) {}
+  constructor(private router: Router, private formService: FirstForm, private domSanitizer: DomSanitizer) {}
 
-    ngOnInit(): void {
-        // let group={}
-        // this.formService.firstForm().subscribe((res) => {
-        //
-        //   this.questionArray = res[0]["question_instance"];
-        //
-        //   this.questionArray.forEach(input_template=>{
-        //
-        //     group[input_template["id"]]=new FormControl('');
-        //   })
-        //   this.firstForm = new FormGroup(group);
-        //   this.statusCheck = true;
-        //
-        // },(err) =>{
-        //
-        // })
-    }
+  ngOnInit(): void {
+    // let group={}
+    // this.formService.firstForm().subscribe((res) => {
+    //
+    //   this.questionArray = res[0]["question_instance"];
+    //
+    //   this.questionArray.forEach(input_template=>{
+    //
+    //     group[input_template["id"]]=new FormControl('');
+    //   })
+    //   this.firstForm = new FormGroup(group);
+    //   this.statusCheck = true;
+    //
+    // },(err) =>{
+    //
+    // })
+  }
 
-    preSurvey() {
-        this.router.navigateByUrl("/preSurvey");
-    }
+  preSurvey() {
+    this.router.navigateByUrl("/preSurvey");
+  }
 
-    nextButton() {
-        this.selectedIndex = this.selectedIndex + 1;
-    }
-    prevButton() {
-        this.selectedIndex = this.selectedIndex - 1;
-        if (this.selectedIndex < 0) {
-            this.selectedIndex = 0;
-        }
+  nextButton() {
+    this.selectedIndex = this.selectedIndex + 1;
+  }
+  prevButton() {
+    this.selectedIndex = this.selectedIndex - 1;
+    if (this.selectedIndex < 0) {
+      this.selectedIndex = 0;
     }
+  }
 
-    submit() {
-        var tempDict;
-        this.responseList = [];
-        for (let key in this.firstForm.value) {
-            tempDict = {};
-            tempDict["question"] = key;
-            tempDict["response"] = this.firstForm.value[key];
-            this.responseList.push(tempDict);
-        }
-
-        this.formService.submitResponse(this.responseList).subscribe(
-            (res) => {
-                Swal.fire({
-                    text: "Submitted",
-                    icon: "success",
-                });
-                this.router.navigateByUrl("/game");
-            },
-            (err) => {
-                Swal.fire({
-                    text: "Duplicate Entries",
-                    icon: "warning",
-                });
-            }
-        );
+  submit() {
+    var tempDict;
+    this.responseList = [];
+    for (let key in this.firstForm.value) {
+      tempDict = {};
+      tempDict["question"] = key;
+      tempDict["response"] = this.firstForm.value[key];
+      this.responseList.push(tempDict);
     }
 
-    title = "micRecorder";
-    //Lets declare Record OBJ
-    record;
-    //Will use this flag for toggeling recording
-    recording = false;
-    //URL of Blob
-    url;
-    error;
-    sanitize(url: string) {
-        return this.domSanitizer.bypassSecurityTrustUrl(url);
-    }
-    /**
-     * Start recording.
-     */
-    initiateRecording() {
-        this.recording = true;
-        let mediaConstraints = {
-            video: false,
-            audio: true,
-        };
-        navigator.mediaDevices
-            .getUserMedia(mediaConstraints)
-            .then(this.successCallback.bind(this), this.errorCallback.bind(this));
-    }
-    /**
-     * Will be called automatically.
-     */
-    successCallback(stream) {
-        var options = {
-            mimeType: "audio/wav",
-            numberOfAudioChannels: 1,
-            // sampleRate: 16000,
-        };
-        //Start Actuall Recording
-        var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
-        this.record = new StereoAudioRecorder(stream, options);
-        this.record.record();
-    }
-    /**
-     * Stop recording.
-     */
-    stopRecording() {
-        this.recording = false;
-        this.record.stop(this.processRecording.bind(this));
-    }
-    /**
-     * processRecording Do what ever you want with blob
-     * @param  {any} blob Blog
-     */
-    processRecording(blob) {
-        this.url = URL.createObjectURL(blob);
-    }
-    /**
-     * Process Error.
-     */
-    errorCallback(error) {
-        this.error = "Can not play audio in your browser";
-    }
+    this.formService.submitResponse(this.responseList).subscribe(
+      (res) => {
+        Swal.fire({
+          text: "Submitted",
+          icon: "success",
+        });
+        this.router.navigateByUrl("/game");
+      },
+      (err) => {
+        Swal.fire({
+          text: "Duplicate Entries",
+          icon: "warning",
+        });
+      }
+    );
+  }
+
+  title = "micRecorder";
+  //Lets declare Record OBJ
+  record;
+  //Will use this flag for toggeling recording
+  recording = false;
+  //URL of Blob
+  url;
+  error;
+  sanitize(url: string) {
+    return this.domSanitizer.bypassSecurityTrustUrl(url);
+  }
+  /**
+   * Start recording.
+   */
+  initiateRecording() {
+    this.recording = true;
+    let mediaConstraints = {
+      video: false,
+      audio: true,
+    };
+    navigator.mediaDevices
+      .getUserMedia(mediaConstraints)
+      .then(this.successCallback.bind(this), this.errorCallback.bind(this));
+  }
+  /**
+   * Will be called automatically.
+   */
+  successCallback(stream) {
+    var options = {
+      mimeType: "audio/wav",
+      numberOfAudioChannels: 1,
+      // sampleRate: 16000,
+    };
+    //Start Actuall Recording
+    var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
+    this.record = new StereoAudioRecorder(stream, options);
+    this.record.record();
+  }
+  /**
+   * Stop recording.
+   */
+  stopRecording() {
+    this.recording = false;
+    this.record.stop(this.processRecording.bind(this));
+  }
+  /**
+   * processRecording Do what ever you want with blob
+   * @param  {any} blob Blog
+   */
+  processRecording(blob) {
+    this.url = URL.createObjectURL(blob);
+  }
+  /**
+   * Process Error.
+   */
+  errorCallback(error) {
+    this.error = "Can not play audio in your browser";
+  }
 }
diff --git a/src/app/components/footer/footer.component.css b/src/app/components/footer/footer.component.css
index 00d6b22..62a3361 100644
--- a/src/app/components/footer/footer.component.css
+++ b/src/app/components/footer/footer.component.css
@@ -1,107 +1,106 @@
-@media screen and (min-width: 992px){
-    .footer-wrap {
-        /* background-color: #fcd581; */
-        padding-top: 25px;
-        /* position: fixed; */
-        left: 0;
-        bottom: 0;
-        width: 100%;
-    }
+@media screen and (min-width: 992px) {
+  .footer-wrap {
+    /* background-color: #fcd581; */
+    padding-top: 25px;
+    /* position: fixed; */
+    left: 0;
+    bottom: 0;
+    width: 100%;
+  }
 }
 
-@media screen and (max-height: 991px){
-    .footer-wrap {
-        /* background-color: #fcd581; */
-        padding-top: 25px;
-        left: 0;
-        bottom: 0;
-        width: 100%;
-    }
+@media screen and (max-height: 991px) {
+  .footer-wrap {
+    /* background-color: #fcd581; */
+    padding-top: 25px;
+    left: 0;
+    bottom: 0;
+    width: 100%;
+  }
 }
 
-
 .logo {
-    margin-top: 15px;
-    margin-left: 5px;
-    /* padding-bottom: 30px; */
-    /* color: #fcb913; */
-    font-size: 30px;
-    font-weight: bold;
-    font-family: 'Loto', sans-serif;
+  margin-top: 15px;
+  margin-left: 5px;
+  /* padding-bottom: 30px; */
+  /* color: #fcb913; */
+  font-size: 30px;
+  font-weight: bold;
+  font-family: "Loto", sans-serif;
 }
 
 .outer-div {
-    text-align: center;
+  text-align: center;
 }
 
 .inner-div {
-    display: inline-block;
+  display: inline-block;
 }
 
 h2 {
-    color: #3C096C;
-    font-family: 'Loto', sans-serif;
-    text-align: right;
-    font-size: 15px;
-    margin: 0 !important;
+  color: #3c096c;
+  font-family: "Loto", sans-serif;
+  text-align: right;
+  font-size: 15px;
+  margin: 0 !important;
 }
 
 hr {
-    border: 1px solid rgb(224, 224, 224);
+  border: 1px solid rgb(224, 224, 224);
 }
 
-p{
-    color: black;
-    text-align: center;
-    text-decoration: none;
+p {
+  color: black;
+  text-align: center;
+  text-decoration: none;
 }
 
 .mat-icon {
-    font-size: 15px;
+  font-size: 15px;
 }
 
 .outer {
-    text-align: center;
+  text-align: center;
 }
 
 .icons {
-    display: inline-block;
+  display: inline-block;
 }
 
 .icons a {
-    font-size: 20px;
-    margin-left: 10px;
-    margin-right: 10px;
-    margin-bottom: 20px;
+  font-size: 20px;
+  margin-left: 10px;
+  margin-right: 10px;
+  margin-bottom: 20px;
 }
 
 .link-div {
-    text-align: center;
+  text-align: center;
 }
 
 .links {
-    display: inline-block;
+  display: inline-block;
 }
 
 .copyrights {
-    margin-top: 20px;
-    width: 100%;
+  margin-top: 20px;
+  width: 100%;
 }
 
 h1 {
-    font-family: 'Loto', sans-serif;
-    text-align: center;
-    font-size: 12px;
+  font-family: "Loto", sans-serif;
+  text-align: center;
+  font-size: 12px;
 }
 
 .row {
-    margin: 0 !important;
+  margin: 0 !important;
 }
 
 mat-form-field.mat-form-field {
-    width: 80%;
+  width: 80%;
 }
 
 .buttonClass {
-    height: 100%;
-}
\ No newline at end of file
+  height: 100%;
+}
diff --git a/src/app/components/footer/footer.component.html b/src/app/components/footer/footer.component.html
index c34e8fa..6803189 100644
--- a/src/app/components/footer/footer.component.html
+++ b/src/app/components/footer/footer.component.html
@@ -1,12 +1,15 @@
 <div class="footer-wrap">
-    <div>
-        <div class="row col-lg-12">
-            <div class="col-lg-12">
-                <!-- <h2>The Cultural Proficiency Continuum Web-Based Dialogic Protocol was designed using Dwayne Ray Cormier (2019) <a href="https://etda.libraries.psu.edu/catalog/16331drc5411" target="_blank"> Dissertation Research</a></h2> -->
-                <h2>Website Developed by the <a target="_blank" href="https://handson.cs.odu.edu/">Hands-On Lab</a> at <a target="_blank" href="https://odu.edu/">Old Dominion University.</a> </h2>
-                <h2>Copyright © 2021. Dwayne Ray Cormier. All rights reserved. </h2>
-                <br/>
-            </div>
-        </div>
+  <div>
+    <div class="row col-lg-12">
+      <div class="col-lg-12">
+        <!-- <h2>The Cultural Proficiency Continuum Web-Based Dialogic Protocol was designed using Dwayne Ray Cormier (2019) <a href="https://etda.libraries.psu.edu/catalog/16331drc5411" target="_blank"> Dissertation Research</a></h2> -->
+        <h2>
+          Website Developed by the <a target="_blank" href="https://handson.cs.odu.edu/">Hands-On Lab</a> at
+          <a target="_blank" href="https://odu.edu/">Old Dominion University.</a>
+        </h2>
+        <h2>Copyright © 2021. Dwayne Ray Cormier. All rights reserved.</h2>
+        <br />
+      </div>
     </div>
+  </div>
 </div>
diff --git a/src/app/components/footer/footer.component.spec.ts b/src/app/components/footer/footer.component.spec.ts
index 2ca6c45..5489c5d 100644
--- a/src/app/components/footer/footer.component.spec.ts
+++ b/src/app/components/footer/footer.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { FooterComponent } from './footer.component';
+import { FooterComponent } from "./footer.component";
 
-describe('FooterComponent', () => {
+describe("FooterComponent", () => {
   let component: FooterComponent;
   let fixture: ComponentFixture<FooterComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ FooterComponent ]
-    })
-    .compileComponents();
+      declarations: [FooterComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('FooterComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/footer/footer.component.ts b/src/app/components/footer/footer.component.ts
index d004296..747b94e 100644
--- a/src/app/components/footer/footer.component.ts
+++ b/src/app/components/footer/footer.component.ts
@@ -1,38 +1,30 @@
-
-import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
-import { Component, OnInit } from '@angular/core';
-import { Observable } from 'rxjs';
-import { map, shareReplay } from 'rxjs/operators';
+import { BreakpointObserver, Breakpoints } from "@angular/cdk/layout";
+import { Component, OnInit } from "@angular/core";
+import { Observable } from "rxjs";
+import { map, shareReplay } from "rxjs/operators";
 
 @Component({
-  selector: 'app-footer',
-  templateUrl: './footer.component.html',
-  styleUrls: ['./footer.component.css']
+  selector: "app-footer",
+  templateUrl: "./footer.component.html",
+  styleUrls: ["./footer.component.css"],
 })
 export class FooterComponent implements OnInit {
-
-
-  isHandset: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Handset)
-  .pipe(
-    map(result => result.matches),
+  isHandset: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Handset).pipe(
+    map((result) => result.matches),
     shareReplay()
   );
 
-isTablet: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Tablet)
-  .pipe(
-    map(result => result.matches),
+  isTablet: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Tablet).pipe(
+    map((result) => result.matches),
     shareReplay()
   );
 
-  isMedium: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Medium)
-  .pipe(
-    map(result => result.matches),
+  isMedium: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Medium).pipe(
+    map((result) => result.matches),
     shareReplay()
   );
-  
-  constructor(private breakpointObserver: BreakpointObserver) { }
 
-  ngOnInit(): void {
-  }
+  constructor(private breakpointObserver: BreakpointObserver) {}
 
-}
\ No newline at end of file
+  ngOnInit(): void {}
+}
diff --git a/src/app/components/forgot-password/forgot-password.component.css b/src/app/components/forgot-password/forgot-password.component.css
index cb2e8a4..d0aa6e1 100644
--- a/src/app/components/forgot-password/forgot-password.component.css
+++ b/src/app/components/forgot-password/forgot-password.component.css
@@ -1,45 +1,45 @@
-.container{
-    text-align: center;
-    padding-bottom: 300px;
+.container {
+  text-align: center;
+  padding-bottom: 300px;
 }
 
 .example-card {
-    display: inline-block;
-    margin-top: 100px;
+  display: inline-block;
+  margin-top: 100px;
 }
 
 .intro {
-    top: 20%;
-    font-size: 35px;
-    text-align: center;
-    font-family: 'Loto', sans-serif, cursive;
-    color: black;
-    font-weight: bold;
+  top: 20%;
+  font-size: 35px;
+  text-align: center;
+  font-family: "Loto", sans-serif, cursive;
+  color: black;
+  font-weight: bold;
 }
 
 body {
-    font-family: 'Loto', sans-serif;
-    background-color: #f8fafb;
+  font-family: "Loto", sans-serif;
+  background-color: #f8fafb;
 }
 
-@media screen and (min-width: 992px){
-    p {
-        padding-top: 150px;
-        line-height: 150%;
-        color: #b3b3b3;
-        font-weight: 300;
-        margin: 0 20px;
-    }
+@media screen and (min-width: 992px) {
+  p {
+    padding-top: 150px;
+    line-height: 150%;
+    color: #b3b3b3;
+    font-weight: 300;
+    margin: 0 20px;
+  }
 }
 
-@media screen and (max-width: 991px){
-    p {
-        padding-top: 20px;
-        line-height: 150%;
-        color: #b3b3b3;
-        font-weight: 300;
-        margin: 0 20px;
-    }
+@media screen and (max-width: 991px) {
+  p {
+    padding-top: 20px;
+    line-height: 150%;
+    color: #b3b3b3;
+    font-weight: 300;
+    margin: 0 20px;
+  }
 }
 
 h1,
@@ -54,19 +54,19 @@ h6,
 .h4,
 .h5,
 .h6 {
-    font-family: 'Loto', sans-serif;
+  font-family: "Loto", sans-serif;
 }
 
 a {
-    -webkit-transition: .3s all ease;
-    -o-transition: .3s all ease;
-    transition: .3s all ease;
+  -webkit-transition: 0.3s all ease;
+  -o-transition: 0.3s all ease;
+  transition: 0.3s all ease;
 }
 
 a:hover {
-    text-decoration: none !important;
+  text-decoration: none !important;
 }
 
 h2 {
-    font-size: 20px;
-}
\ No newline at end of file
+  font-size: 20px;
+}
diff --git a/src/app/components/forgot-password/forgot-password.component.html b/src/app/components/forgot-password/forgot-password.component.html
index 09580c6..d3b68c0 100644
--- a/src/app/components/forgot-password/forgot-password.component.html
+++ b/src/app/components/forgot-password/forgot-password.component.html
@@ -1,18 +1,24 @@
 <div class="header-wrap">
-    <p class="intro">Cultural Proficiency Continuum Dialogic Protocol</p>
-    <div class="container">
-        <mat-card class="example-card ">
-            <div class="mb-4">
-                <h3 style="text-align: center;">Forgot Password</h3>
-            </div>
-            <form [formGroup]="forgotForm">
-                <mat-form-field appearance="outline" class="col-lg-12">
-                    <mat-label>Enter Username/e-mail</mat-label>
-                    <input type="text" matInput placeholder="joe" formControlName="username" required>
-                </mat-form-field>
-                <input type="submit" value="Send Email" class="btn text-white btn-block btn-primary" style="background-color: #29ABE2; font-size: 20px;" (click)="login()">
-            </form>
-        </mat-card>
-    </div>
+  <p class="intro">Cultural Proficiency Continuum Dialogic Protocol</p>
+  <div class="container">
+    <mat-card class="example-card">
+      <div class="mb-4">
+        <h3 style="text-align: center">Forgot Password</h3>
+      </div>
+      <form [formGroup]="forgotForm">
+        <mat-form-field appearance="outline" class="col-lg-12">
+          <mat-label>Enter Username/e-mail</mat-label>
+          <input type="text" matInput placeholder="joe" formControlName="username" required />
+        </mat-form-field>
+        <input
+          type="submit"
+          value="Send Email"
+          class="btn text-white btn-block btn-primary"
+          style="background-color: #29abe2; font-size: 20px"
+          (click)="login()"
+        />
+      </form>
+    </mat-card>
+  </div>
 </div>
-<app-footer></app-footer>
\ No newline at end of file
+<app-footer></app-footer>
diff --git a/src/app/components/forgot-password/forgot-password.component.spec.ts b/src/app/components/forgot-password/forgot-password.component.spec.ts
index 9c1a932..7e9a8a0 100644
--- a/src/app/components/forgot-password/forgot-password.component.spec.ts
+++ b/src/app/components/forgot-password/forgot-password.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { ForgotPasswordComponent } from './forgot-password.component';
+import { ForgotPasswordComponent } from "./forgot-password.component";
 
-describe('ForgotPasswordComponent', () => {
+describe("ForgotPasswordComponent", () => {
   let component: ForgotPasswordComponent;
   let fixture: ComponentFixture<ForgotPasswordComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ ForgotPasswordComponent ]
-    })
-    .compileComponents();
+      declarations: [ForgotPasswordComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('ForgotPasswordComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/forgot-password/forgot-password.component.ts b/src/app/components/forgot-password/forgot-password.component.ts
index eaf4018..49c2d8e 100644
--- a/src/app/components/forgot-password/forgot-password.component.ts
+++ b/src/app/components/forgot-password/forgot-password.component.ts
@@ -5,61 +5,61 @@ import { Router } from "@angular/router";
 import Swal from "sweetalert2";
 import { LoginService } from "src/app/services/login.service";
 @Component({
-    selector: "app-forgot-password",
-    templateUrl: "./forgot-password.component.html",
-    styleUrls: ["./forgot-password.component.css"],
+  selector: "app-forgot-password",
+  templateUrl: "./forgot-password.component.html",
+  styleUrls: ["./forgot-password.component.css"],
 })
 export class ForgotPasswordComponent implements OnInit {
-    forgotForm: FormGroup;
-    hide = true;
-    constructor(private fb: FormBuilder, private router: Router, private loginService: LoginService) {}
+  forgotForm: FormGroup;
+  hide = true;
+  constructor(private fb: FormBuilder, private router: Router, private loginService: LoginService) {}
 
-    ngOnInit(): void {
-        this.forgotForm = this.fb.group({
-            username: ["", [Validators.required]],
-        });
-    }
+  ngOnInit(): void {
+    this.forgotForm = this.fb.group({
+      username: ["", [Validators.required]],
+    });
+  }
 
-    getEmailError() {
-        if (this.forgotForm.controls.username.hasError("required")) {
-            return "Required";
-        } else {
-            return "";
-        }
+  getEmailError() {
+    if (this.forgotForm.controls.username.hasError("required")) {
+      return "Required";
+    } else {
+      return "";
     }
+  }
 
-    getPasswordError() {
-        if (this.forgotForm.controls.password.hasError("required")) {
-            return "Required";
-        } else {
-            return "";
-        }
+  getPasswordError() {
+    if (this.forgotForm.controls.password.hasError("required")) {
+      return "Required";
+    } else {
+      return "";
     }
+  }
 
-    login() {
-        if (!this.forgotForm.valid) {
-            Swal.fire({
-                text: "Please enter all the fields in the right format.",
-                icon: "error",
-            }).then((res) => {});
-        } else {
-            this.loginService.forgotpassword(this.forgotForm.value).subscribe(
-                (res) => {
-                    localStorage.setItem("username", this.forgotForm.get("username").value);
-                    Swal.fire({
-                        text: "e-mail sent successfully!",
-                        icon: "success",
-                    }).then((res) => {
-                        this.router.navigateByUrl("/emailPass");
-                    });
-                },
-                (err) => {
-                    Swal.fire({
-                        text: "Username/e-mail not found!",
-                        icon: "error",
-                    }).then((res) => {});
-                }
-            );
+  login() {
+    if (!this.forgotForm.valid) {
+      Swal.fire({
+        text: "Please enter all the fields in the right format.",
+        icon: "error",
+      }).then((res) => {});
+    } else {
+      this.loginService.forgotpassword(this.forgotForm.value).subscribe(
+        (res) => {
+          localStorage.setItem("username", this.forgotForm.get("username").value);
+          Swal.fire({
+            text: "e-mail sent successfully!",
+            icon: "success",
+          }).then((res) => {
+            this.router.navigateByUrl("/emailPass");
+          });
+        },
+        (err) => {
+          Swal.fire({
+            text: "Username/e-mail not found!",
+            icon: "error",
+          }).then((res) => {});
         }
+      );
     }
+  }
 }
diff --git a/src/app/components/graph-page/graph-page.component.css b/src/app/components/graph-page/graph-page.component.css
index 24eb341..5ba7b67 100644
--- a/src/app/components/graph-page/graph-page.component.css
+++ b/src/app/components/graph-page/graph-page.component.css
@@ -1,166 +1,164 @@
 .divClass {
-    padding-top: 10px;
+  padding-top: 10px;
 }
 
 .example-card {
-    /* max-height: 700px; */
-    /* width: 1000px; */
-    /* height: 570px; */
-    position: absolute;
-    top: 55%;
-    left: 50%;
-    transform: translate(-50%, -50%);
-    width: 80%;
+  /* max-height: 700px; */
+  /* width: 1000px; */
+  /* height: 570px; */
+  position: absolute;
+  top: 55%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+  width: 80%;
 }
 
 ::ng-deep .mat-tab-body-content {
-    max-height: 500px !important;
+  max-height: 500px !important;
 }
 
 .table-responsive {
-    height: 310px;
+  height: 310px;
 }
 
 .div-wrap {
-    width: 500px;
+  width: 500px;
 }
 
 p {
-    /* font-family: Georgia, 'Times New Roman', Times, serif; */
-    font-family: 'Loto', sans-serif;
-    font-size: 15px;
+  /* font-family: Georgia, 'Times New Roman', Times, serif; */
+  font-family: "Loto", sans-serif;
+  font-size: 15px;
 }
 
 h3 {
-    /* font-family: Georgia, 'Times New Roman', Times, serif; */
-    font-family: 'Loto', sans-serif;
-    margin-bottom: 40px;
+  /* font-family: Georgia, 'Times New Roman', Times, serif; */
+  font-family: "Loto", sans-serif;
+  margin-bottom: 40px;
 }
 
 .mat-card {
-    background-color: #edf6f9;
+  background-color: #edf6f9;
 }
 
 .inputField {
-    width: 100%;
+  width: 100%;
 }
 
-
 /* Chrome, Safari, Edge, Opera */
 
 input::-webkit-outer-spin-button,
 input::-webkit-inner-spin-button {
-    -webkit-appearance: none;
-    margin: 0;
+  -webkit-appearance: none;
+  margin: 0;
 }
 
-
 /* Firefox */
 
-input[type=number] {
-    -moz-appearance: textfield;
+input[type="number"] {
+  -moz-appearance: textfield;
 }
 
 ::ng-deep .mat-tab-header {
-    display: none !important;
+  display: none !important;
 }
 
 p {
-    text-align: justify;
-    text-justify: inter-word;
+  text-align: justify;
+  text-justify: inter-word;
 }
 
 h2 {
-    /* font-family: 'Loto', sans-serif; */
-    font-family: 'Loto', sans-serif;
+  /* font-family: 'Loto', sans-serif; */
+  font-family: "Loto", sans-serif;
 }
 
 mat-slider {
-    width: 350px;
+  width: 350px;
 }
 
 .mat-slider-thumb-label {
-    transform: rotate(45deg) !important;
-    border-radius: 50% 50% 0 !important;
+  transform: rotate(45deg) !important;
+  border-radius: 50% 50% 0 !important;
 }
 
 .mat-slider-thumb {
-    transform: scale(0) !important;
+  transform: scale(0) !important;
 }
 
 .mat-slider-thumb-label-text {
-    opacity: 1 !important;
+  opacity: 1 !important;
 }
 
 .advice {
-    border: none;
-    background: none;
+  border: none;
+  background: none;
 }
 
 ::ng-deep .mat-checkbox-layout {
-    white-space: normal !important;
+  white-space: normal !important;
 }
 
 mat-form-field {
-    width: 100%;
-    height: 5%;
+  width: 100%;
+  height: 5%;
 }
 
-::ng-deep .mat-form-field-flex>.mat-form-field-infix {
-    padding: 0.4em 0px !important;
+::ng-deep .mat-form-field-flex > .mat-form-field-infix {
+  padding: 0.4em 0px !important;
 }
 
 ::ng-deep .mat-form-field-label-wrapper {
-    top: -1.5em;
+  top: -1.5em;
 }
 
-::ng-deep .mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label {
-    transform: translateY(-1.1em) scale(.75);
-    width: 133.33333%;
-    color: black !important;
-    border: black;
+::ng-deep
+  .mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float
+  .mat-form-field-label {
+  transform: translateY(-1.1em) scale(0.75);
+  width: 133.33333%;
+  color: black !important;
+  border: black;
 }
 
 .example-h2 {
-    margin: 10px;
+  margin: 10px;
 }
 
 .example-section {
-    display: flex;
-    align-content: center;
-    align-items: center;
-    height: 60px;
+  display: flex;
+  align-content: center;
+  align-items: center;
+  height: 60px;
 }
 
 .example-margin {
-    margin: 0 10px;
+  margin: 0 10px;
 }
 
 .imgClass {
-    width: 30px;
-    height: 30px
+  width: 30px;
+  height: 30px;
 }
 
 .zoom {
-    transition: transform .2s;
-    border: none;
-    background: none;
-    /* Animation */
-    margin: 0 auto;
+  transition: transform 0.2s;
+  border: none;
+  background: none;
+  /* Animation */
+  margin: 0 auto;
 }
 
 .zoom:hover {
-    transform: scale(1.5);
-    /* (150% zoom - Note: if the zoom is too large, it will go outside of the viewport) */
+  transform: scale(1.5);
+  /* (150% zoom - Note: if the zoom is too large, it will go outside of the viewport) */
 }
 
-
 ::ng-deep .mat-tooltip {
-    font-size: 15px !important;
+  font-size: 15px !important;
 }
 
-
 /* 
 p {
     font-family: 'roboto';
-} */
\ No newline at end of file
+} */
diff --git a/src/app/components/graph-page/graph-page.component.html b/src/app/components/graph-page/graph-page.component.html
index cd3cd7c..dd56995 100644
--- a/src/app/components/graph-page/graph-page.component.html
+++ b/src/app/components/graph-page/graph-page.component.html
@@ -1,77 +1,72 @@
 <div class="divClass">
-    <mat-card class="example-card ">
-
-        <mat-card-content>
-            <div style="margin-bottom: 10px; margin-left: -10px;">
-                <mat-progress-bar *ngIf="selectedIndex > 0 && selectedIndex <6" class="example-margin" style="width: 100%;" [mode]="mode" [value]="selectedIndex*20" [bufferValue]="bufferValue">
-                </mat-progress-bar>
-            </div>
-
-
-            <mat-tab-group [selectedIndex]="selectedIndex" style="margin: 0px;">
-                <mat-tab label="Seventh">
-                    <h2>Cultural Proficiency Continuum Q-Sort: Score Visualization
-                    </h2>
-                    <!-- <p>Below are the results of the CPCQ forms filled by you. The numbers that you assigned to each vignette within each of the five categories to the right of the corresponding letter—A, B, C, D, E, F—in the spaces are provided below in
+  <mat-card class="example-card">
+    <mat-card-content>
+      <div style="margin-bottom: 10px; margin-left: -10px">
+        <mat-progress-bar
+          *ngIf="selectedIndex > 0 && selectedIndex < 6"
+          class="example-margin"
+          style="width: 100%"
+          [mode]="mode"
+          [value]="selectedIndex * 20"
+          [bufferValue]="bufferValue"
+        >
+        </mat-progress-bar>
+      </div>
+
+      <mat-tab-group [selectedIndex]="selectedIndex" style="margin: 0px">
+        <mat-tab label="Seventh">
+          <h2>Cultural Proficiency Continuum Q-Sort: Score Visualization</h2>
+          <!-- <p>Below are the results of the CPCQ forms filled by you. The numbers that you assigned to each vignette within each of the five categories to the right of the corresponding letter—A, B, C, D, E, F—in the spaces are provided below in
                         the rating guide. Ideally, the final results in each row would read 1, 2, 3, 4, 5, 6, but because Cultural Proficiency is a fluid and dynamic phenomenon, these numbers may not align in numerical order. The final step in your analysis
                         is to locate the culturally proficient interactions, which are 2 or more points higher or lower than the ideal number by each letter. For example, if a row reads 2, 1, 5, 4, 6, 3, then the numbers 5 and 3 are bold and clickable.
                         Each number you bolded in each row represents an opportunity for inquiry and Dialogic for that particular culturally proficient behavior. Please click on the bolded numbers to unpack your views. Remember, this is not a judgment,
                         but rather an opportunity for you to make inquiries and have a conversation about the sociocultural interactions that take place within majority-minority US Prek-12 schools. </p> -->
-                    <p><span><b>Info: </b> Each of the Bars indicate the overall score awarded by your rater for the vignette you unpacked. Click on the bar if you wish to see the score for each of the four questions that you answered in each vignette.
-                    </span>
-                </p>
-                <button mat-button color="primary">Your level of cultural proficiency at this time is {{meanNumber}} or {{meanValue}}</button>
-
-        <br/>
-
-                    <div id="chart">
-                        <apx-chart
-                          [series]="chartOptions.series"
-                          [chart]="chartOptions.chart"
-                          [dataLabels]="chartOptions.dataLabels"
-                          [plotOptions]="chartOptions.plotOptions"
-                          [yaxis]="chartOptions.yaxis"
-                          [xaxis]="chartOptions.xaxis"
-                          [fill]="chartOptions.fill"
-                          [title]="chartOptions.title"
-                        ></apx-chart>
-                      </div>
-                </mat-tab>
-            </mat-tab-group>
-
-
-
-        </mat-card-content>
-
-
-
-        <mat-card-actions>
-            <div class="row">
-                <div class="col-8">
-
-                    <button *ngIf = "!postSurveyFlag" mat-raised-button style="background-color: #29ABE2;" routerLink="/postSurvey">
+          <p>
+            <span
+              ><b>Info: </b> Each of the Bars indicate the overall score awarded by your rater for the vignette you
+              unpacked. Click on the bar if you wish to see the score for each of the four questions that you answered
+              in each vignette.
+            </span>
+          </p>
+          <button mat-button color="primary">
+            Your level of cultural proficiency at this time is {{ meanNumber }} or {{ meanValue }}
+          </button>
+
+          <br />
+
+          <div id="chart">
+            <apx-chart
+              [series]="chartOptions.series"
+              [chart]="chartOptions.chart"
+              [dataLabels]="chartOptions.dataLabels"
+              [plotOptions]="chartOptions.plotOptions"
+              [yaxis]="chartOptions.yaxis"
+              [xaxis]="chartOptions.xaxis"
+              [fill]="chartOptions.fill"
+              [title]="chartOptions.title"
+            ></apx-chart>
+          </div>
+        </mat-tab>
+      </mat-tab-group>
+    </mat-card-content>
+
+    <mat-card-actions>
+      <div class="row">
+        <div class="col-8">
+          <button *ngIf="!postSurveyFlag" mat-raised-button style="background-color: #29abe2" routerLink="/postSurvey">
             POST SURVEY
-                             </button>
-                </div>
-
-            </div>
-
-
-
-        </mat-card-actions>
-        <mat-card-actions>
-            <div class="row">
-                <div class="col-8">
-
-                    <button *ngIf = "postSurveyFlag" mat-raised-button style="background-color: #29ABE2;" routerLink="/final">
+          </button>
+        </div>
+      </div>
+    </mat-card-actions>
+    <mat-card-actions>
+      <div class="row">
+        <div class="col-8">
+          <button *ngIf="postSurveyFlag" mat-raised-button style="background-color: #29abe2" routerLink="/final">
             DASHBOARD
-                             </button>
-                </div>
-
-            </div>
-
-
-
-        </mat-card-actions>
-    </mat-card>
-</div>
\ No newline at end of file
+          </button>
+        </div>
+      </div>
+    </mat-card-actions>
+  </mat-card>
+</div>
diff --git a/src/app/components/graph-page/graph-page.component.spec.ts b/src/app/components/graph-page/graph-page.component.spec.ts
index 15d9eba..fe9a6fb 100644
--- a/src/app/components/graph-page/graph-page.component.spec.ts
+++ b/src/app/components/graph-page/graph-page.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { GraphPageComponent } from './graph-page.component';
+import { GraphPageComponent } from "./graph-page.component";
 
-describe('GraphPageComponent', () => {
+describe("GraphPageComponent", () => {
   let component: GraphPageComponent;
   let fixture: ComponentFixture<GraphPageComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ GraphPageComponent ]
-    })
-    .compileComponents();
+      declarations: [GraphPageComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('GraphPageComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/graph-page/graph-page.component.ts b/src/app/components/graph-page/graph-page.component.ts
index f829185..9941211 100644
--- a/src/app/components/graph-page/graph-page.component.ts
+++ b/src/app/components/graph-page/graph-page.component.ts
@@ -16,1474 +16,1421 @@ import { CPCQService } from "src/app/services/cpcq.service";
 
 import { LoginService } from "src/app/services/login.service";
 export interface DialogData {
-    animal: "panda" | "unicorn" | "lion";
-    status;
-    result;
+  animal: "panda" | "unicorn" | "lion";
+  status;
+  result;
 }
 import {
-    ApexAxisChartSeries,
-    ApexChart,
-    ChartComponent,
-    ApexDataLabels,
-    ApexPlotOptions,
-    ApexYAxis,
-    ApexTitleSubtitle,
-    ApexXAxis,
-    ApexFill,
+  ApexAxisChartSeries,
+  ApexChart,
+  ChartComponent,
+  ApexDataLabels,
+  ApexPlotOptions,
+  ApexYAxis,
+  ApexTitleSubtitle,
+  ApexXAxis,
+  ApexFill,
 } from "ng-apexcharts";
 
 export type ChartOptions = {
-    series: ApexAxisChartSeries;
-    chart: ApexChart;
-    dataLabels: ApexDataLabels;
-    plotOptions: ApexPlotOptions;
-    yaxis: ApexYAxis;
-    xaxis: ApexXAxis;
-    fill: ApexFill;
-    title: ApexTitleSubtitle;
+  series: ApexAxisChartSeries;
+  chart: ApexChart;
+  dataLabels: ApexDataLabels;
+  plotOptions: ApexPlotOptions;
+  yaxis: ApexYAxis;
+  xaxis: ApexXAxis;
+  fill: ApexFill;
+  title: ApexTitleSubtitle;
 };
 @Component({
-    selector: "app-graph-page",
-    templateUrl: "./graph-page.component.html",
-    styleUrls: ["./graph-page.component.css"],
+  selector: "app-graph-page",
+  templateUrl: "./graph-page.component.html",
+  styleUrls: ["./graph-page.component.css"],
 })
 export class GraphPageComponent implements OnInit {
-    firstForm: FormGroup;
-    responseList: any;
-    loaded = false;
-
-    questionArray = [
-        ["Enter First Name", "text"],
-        ["Enter Last Name", "text"],
-        ["Enter Age", "number"],
-    ];
-    statusCheck = false;
-    buttonClick = false;
-
-    sliderValue = 0;
-
-    selectedIndex = 0;
-
-    color: ThemePalette = "primary";
-    mode: ProgressBarMode = "buffer";
-    value1 = 50;
-    bufferValue = 100;
-
-    formValues = [];
-    attributes = ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"];
-    columnHeadings = [
-        "culturalDestructivenessresponse",
-        "culturalIncapacityresponse",
-        "culturalBlindnessresponse",
-        "culturalPreCompetenceresponse",
-        "culturalCompetenceresponse",
-        "culturalProficiencyresponse",
-    ];
-    columnHeadings1 = [
-        "Cultural Destructiveness",
-        "Cultural Incapacity",
-        "Cultural Blindness",
-        "Cultural PreCompetence",
-        "Cultural Competence",
-        "Cultural Proficiency",
-    ];
-
-    rowLetters = [
-        ["D", "C", "B", "A", "F", "E"],
-        ["E", "A", "F", "D", "B", "C"],
-        ["F", "E", "B", "C", "D", "A"],
-        ["E", "A", "B", "D", "C", "F"],
-        ["D", "C", "B", "E", "A", "F"],
-    ];
-    boldList = [[]];
-    randomList = [[]];
-    finalList = [[]];
-    finalList1 = [];
-    attitudeForm: FormGroup;
-    empathyForm: FormGroup;
-    policyForm: FormGroup;
-
-    finalFeedbackForm: FormGroup;
-
-    //arrays of data getting from the backend
-
-    attitude: any;
-    empathy: any;
-    policy: any;
-    professionalism: any;
-    teachingPractice: any;
-    wordDescription: any;
-    unpackedCount = 0;
-
-    startTime: any;
-    endTime: any;
-    durationTime: any;
-
-    @ViewChild("changeDiv") changeDiv: ElementRef;
-    @ViewChild("changeDiv1") changeDiv1: ElementRef;
-    @ViewChild("changeDiv2") changeDiv2: ElementRef;
-    @ViewChild("changeDiv3") changeDiv3: ElementRef;
-    @ViewChild("changeDiv4") changeDiv4: ElementRef;
-    @ViewChild("changeDiv5") changeDiv5: ElementRef;
-    @ViewChild("changeDiv6") changeDiv6: ElementRef;
-    @ViewChild("changeDiv7") changeDiv7: ElementRef;
-    @ViewChild("changeDiv8") changeDiv8: ElementRef;
-    @ViewChild("changeDiv9") changeDiv9: ElementRef;
-    @ViewChild("changeDiv10") changeDiv10: ElementRef;
-    @ViewChild("changeDiv11") changeDiv11: ElementRef;
-    @ViewChild("changeDiv12") changeDiv12: ElementRef;
-    @ViewChild("changeDiv13") changeDiv13: ElementRef;
-    @ViewChild("changeDiv14") changeDiv14: ElementRef;
-    @ViewChild("changeDiv15") changeDiv15: ElementRef;
-    @ViewChild("changeDiv16") changeDiv16: ElementRef;
-    @ViewChild("changeDiv17") changeDiv17: ElementRef;
-    @ViewChild("changeDiv18") changeDiv18: ElementRef;
-    @ViewChild("changeDiv19") changeDiv19: ElementRef;
-    @ViewChild("changeDiv20") changeDiv20: ElementRef;
-    @ViewChild("changeDiv21") changeDiv21: ElementRef;
-    @ViewChild("changeDiv22") changeDiv22: ElementRef;
-    @ViewChild("changeDiv23") changeDiv23: ElementRef;
-    @ViewChild("changeDiv24") changeDiv24: ElementRef;
-    @ViewChild("changeDiv25") changeDiv25: ElementRef;
-    @ViewChild("changeDiv26") changeDiv26: ElementRef;
-    @ViewChild("changeDiv27") changeDiv27: ElementRef;
-    @ViewChild("changeDiv28") changeDiv28: ElementRef;
-    @ViewChild("changeDiv29") changeDiv29: ElementRef;
-
-    @ViewChild("chart") chart: ChartComponent;
-    public chartOptions: Partial<ChartOptions>;
-
-    ngAfterViewInit() {}
-
-    sliderFunction1() {
-        if (this.sliderValue == 1) {
-            this.changeDiv.nativeElement.style.fontSize = "15px";
-            this.changeDiv1.nativeElement.style.fontSize = "15px";
-            this.changeDiv2.nativeElement.style.fontSize = "15px";
-            this.changeDiv3.nativeElement.style.fontSize = "15px";
-            this.changeDiv4.nativeElement.style.fontSize = "15px";
-            this.changeDiv5.nativeElement.style.fontSize = "15px";
-            this.changeDiv6.nativeElement.style.fontSize = "15px";
-            this.changeDiv7.nativeElement.style.fontSize = "15px";
-            this.changeDiv8.nativeElement.style.fontSize = "15px";
-            this.changeDiv9.nativeElement.style.fontSize = "15px";
-            this.changeDiv10.nativeElement.style.fontSize = "15px";
-            this.changeDiv11.nativeElement.style.fontSize = "15px";
-            this.changeDiv12.nativeElement.style.fontSize = "15px";
-            this.changeDiv13.nativeElement.style.fontSize = "15px";
-            this.changeDiv14.nativeElement.style.fontSize = "15px";
-            this.changeDiv15.nativeElement.style.fontSize = "15px";
-            this.changeDiv16.nativeElement.style.fontSize = "15px";
-            this.changeDiv17.nativeElement.style.fontSize = "15px";
-            this.changeDiv18.nativeElement.style.fontSize = "15px";
-            this.changeDiv19.nativeElement.style.fontSize = "15px";
-            this.changeDiv20.nativeElement.style.fontSize = "15px";
-            this.changeDiv21.nativeElement.style.fontSize = "15px";
-            this.changeDiv22.nativeElement.style.fontSize = "15px";
-            this.changeDiv23.nativeElement.style.fontSize = "15px";
-            this.changeDiv24.nativeElement.style.fontSize = "15px";
-            this.changeDiv25.nativeElement.style.fontSize = "15px";
-            this.changeDiv26.nativeElement.style.fontSize = "15px";
-            this.changeDiv27.nativeElement.style.fontSize = "15px";
-            this.changeDiv28.nativeElement.style.fontSize = "15px";
-            this.changeDiv29.nativeElement.style.fontSize = "15px";
-        } else if (this.sliderValue == 2) {
-            this.changeDiv.nativeElement.style.fontSize = "20px";
-            this.changeDiv1.nativeElement.style.fontSize = "20px";
-            this.changeDiv2.nativeElement.style.fontSize = "20px";
-            this.changeDiv3.nativeElement.style.fontSize = "20px";
-            this.changeDiv4.nativeElement.style.fontSize = "20px";
-            this.changeDiv5.nativeElement.style.fontSize = "20px";
-            this.changeDiv6.nativeElement.style.fontSize = "20px";
-            this.changeDiv7.nativeElement.style.fontSize = "20px";
-            this.changeDiv8.nativeElement.style.fontSize = "20px";
-            this.changeDiv9.nativeElement.style.fontSize = "20px";
-            this.changeDiv10.nativeElement.style.fontSize = "20px";
-            this.changeDiv11.nativeElement.style.fontSize = "20px";
-            this.changeDiv12.nativeElement.style.fontSize = "20px";
-            this.changeDiv13.nativeElement.style.fontSize = "20px";
-            this.changeDiv14.nativeElement.style.fontSize = "20px";
-            this.changeDiv15.nativeElement.style.fontSize = "20px";
-            this.changeDiv16.nativeElement.style.fontSize = "20px";
-            this.changeDiv17.nativeElement.style.fontSize = "20px";
-            this.changeDiv18.nativeElement.style.fontSize = "20px";
-            this.changeDiv19.nativeElement.style.fontSize = "20px";
-            this.changeDiv20.nativeElement.style.fontSize = "20px";
-            this.changeDiv21.nativeElement.style.fontSize = "20px";
-            this.changeDiv22.nativeElement.style.fontSize = "20px";
-            this.changeDiv23.nativeElement.style.fontSize = "20px";
-            this.changeDiv24.nativeElement.style.fontSize = "20px";
-            this.changeDiv25.nativeElement.style.fontSize = "20px";
-            this.changeDiv26.nativeElement.style.fontSize = "20px";
-            this.changeDiv27.nativeElement.style.fontSize = "20px";
-            this.changeDiv28.nativeElement.style.fontSize = "20px";
-            this.changeDiv29.nativeElement.style.fontSize = "20px";
-        } else if (this.sliderValue == 3) {
-            this.changeDiv.nativeElement.style.fontSize = "22px";
-            this.changeDiv1.nativeElement.style.fontSize = "22px";
-            this.changeDiv2.nativeElement.style.fontSize = "22px";
-            this.changeDiv3.nativeElement.style.fontSize = "22px";
-            this.changeDiv4.nativeElement.style.fontSize = "22px";
-            this.changeDiv5.nativeElement.style.fontSize = "22px";
-            this.changeDiv6.nativeElement.style.fontSize = "22px";
-            this.changeDiv7.nativeElement.style.fontSize = "22px";
-            this.changeDiv8.nativeElement.style.fontSize = "22px";
-            this.changeDiv9.nativeElement.style.fontSize = "22px";
-            this.changeDiv10.nativeElement.style.fontSize = "22px";
-            this.changeDiv11.nativeElement.style.fontSize = "22px";
-            this.changeDiv12.nativeElement.style.fontSize = "22px";
-            this.changeDiv13.nativeElement.style.fontSize = "22px";
-            this.changeDiv14.nativeElement.style.fontSize = "22px";
-            this.changeDiv15.nativeElement.style.fontSize = "22px";
-            this.changeDiv16.nativeElement.style.fontSize = "22px";
-            this.changeDiv17.nativeElement.style.fontSize = "22px";
-            this.changeDiv18.nativeElement.style.fontSize = "22px";
-            this.changeDiv19.nativeElement.style.fontSize = "22px";
-            this.changeDiv20.nativeElement.style.fontSize = "22px";
-            this.changeDiv21.nativeElement.style.fontSize = "22px";
-            this.changeDiv22.nativeElement.style.fontSize = "22px";
-            this.changeDiv23.nativeElement.style.fontSize = "22px";
-            this.changeDiv24.nativeElement.style.fontSize = "22px";
-            this.changeDiv25.nativeElement.style.fontSize = "22px";
-            this.changeDiv26.nativeElement.style.fontSize = "22px";
-            this.changeDiv27.nativeElement.style.fontSize = "22px";
-            this.changeDiv28.nativeElement.style.fontSize = "22px";
-            this.changeDiv29.nativeElement.style.fontSize = "22px";
-        } else if (this.sliderValue == 4) {
-            this.changeDiv.nativeElement.style.fontSize = "25px";
-            this.changeDiv1.nativeElement.style.fontSize = "25px";
-            this.changeDiv2.nativeElement.style.fontSize = "25px";
-            this.changeDiv3.nativeElement.style.fontSize = "25px";
-            this.changeDiv4.nativeElement.style.fontSize = "25px";
-            this.changeDiv5.nativeElement.style.fontSize = "25px";
-            this.changeDiv6.nativeElement.style.fontSize = "25px";
-            this.changeDiv7.nativeElement.style.fontSize = "25px";
-            this.changeDiv8.nativeElement.style.fontSize = "25px";
-            this.changeDiv9.nativeElement.style.fontSize = "25px";
-            this.changeDiv10.nativeElement.style.fontSize = "25px";
-            this.changeDiv11.nativeElement.style.fontSize = "25px";
-            this.changeDiv12.nativeElement.style.fontSize = "25px";
-            this.changeDiv13.nativeElement.style.fontSize = "25px";
-            this.changeDiv14.nativeElement.style.fontSize = "25px";
-            this.changeDiv15.nativeElement.style.fontSize = "25px";
-            this.changeDiv16.nativeElement.style.fontSize = "25px";
-            this.changeDiv17.nativeElement.style.fontSize = "25px";
-            this.changeDiv18.nativeElement.style.fontSize = "25px";
-            this.changeDiv19.nativeElement.style.fontSize = "25px";
-            this.changeDiv20.nativeElement.style.fontSize = "25px";
-            this.changeDiv21.nativeElement.style.fontSize = "25px";
-            this.changeDiv22.nativeElement.style.fontSize = "25px";
-            this.changeDiv23.nativeElement.style.fontSize = "25px";
-            this.changeDiv24.nativeElement.style.fontSize = "25px";
-            this.changeDiv25.nativeElement.style.fontSize = "25px";
-            this.changeDiv26.nativeElement.style.fontSize = "25px";
-            this.changeDiv27.nativeElement.style.fontSize = "25px";
-            this.changeDiv28.nativeElement.style.fontSize = "25px";
-            this.changeDiv29.nativeElement.style.fontSize = "25px";
-        } else if (this.sliderValue == 5) {
-            this.changeDiv.nativeElement.style.fontSize = "50px";
-            this.changeDiv1.nativeElement.style.fontSize = "50px";
-            this.changeDiv2.nativeElement.style.fontSize = "50px";
-            this.changeDiv3.nativeElement.style.fontSize = "50px";
-            this.changeDiv4.nativeElement.style.fontSize = "50px";
-            this.changeDiv5.nativeElement.style.fontSize = "50px";
-        }
+  firstForm: FormGroup;
+  responseList: any;
+  loaded = false;
+
+  questionArray = [
+    ["Enter First Name", "text"],
+    ["Enter Last Name", "text"],
+    ["Enter Age", "number"],
+  ];
+  statusCheck = false;
+  buttonClick = false;
+
+  sliderValue = 0;
+
+  selectedIndex = 0;
+
+  color: ThemePalette = "primary";
+  mode: ProgressBarMode = "buffer";
+  value1 = 50;
+  bufferValue = 100;
+
+  formValues = [];
+  attributes = ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"];
+  columnHeadings = [
+    "culturalDestructivenessresponse",
+    "culturalIncapacityresponse",
+    "culturalBlindnessresponse",
+    "culturalPreCompetenceresponse",
+    "culturalCompetenceresponse",
+    "culturalProficiencyresponse",
+  ];
+  columnHeadings1 = [
+    "Cultural Destructiveness",
+    "Cultural Incapacity",
+    "Cultural Blindness",
+    "Cultural PreCompetence",
+    "Cultural Competence",
+    "Cultural Proficiency",
+  ];
+
+  rowLetters = [
+    ["D", "C", "B", "A", "F", "E"],
+    ["E", "A", "F", "D", "B", "C"],
+    ["F", "E", "B", "C", "D", "A"],
+    ["E", "A", "B", "D", "C", "F"],
+    ["D", "C", "B", "E", "A", "F"],
+  ];
+  boldList = [[]];
+  randomList = [[]];
+  finalList = [[]];
+  finalList1 = [];
+  attitudeForm: FormGroup;
+  empathyForm: FormGroup;
+  policyForm: FormGroup;
+
+  finalFeedbackForm: FormGroup;
+
+  //arrays of data getting from the backend
+
+  attitude: any;
+  empathy: any;
+  policy: any;
+  professionalism: any;
+  teachingPractice: any;
+  wordDescription: any;
+  unpackedCount = 0;
+
+  startTime: any;
+  endTime: any;
+  durationTime: any;
+
+  @ViewChild("changeDiv") changeDiv: ElementRef;
+  @ViewChild("changeDiv1") changeDiv1: ElementRef;
+  @ViewChild("changeDiv2") changeDiv2: ElementRef;
+  @ViewChild("changeDiv3") changeDiv3: ElementRef;
+  @ViewChild("changeDiv4") changeDiv4: ElementRef;
+  @ViewChild("changeDiv5") changeDiv5: ElementRef;
+  @ViewChild("changeDiv6") changeDiv6: ElementRef;
+  @ViewChild("changeDiv7") changeDiv7: ElementRef;
+  @ViewChild("changeDiv8") changeDiv8: ElementRef;
+  @ViewChild("changeDiv9") changeDiv9: ElementRef;
+  @ViewChild("changeDiv10") changeDiv10: ElementRef;
+  @ViewChild("changeDiv11") changeDiv11: ElementRef;
+  @ViewChild("changeDiv12") changeDiv12: ElementRef;
+  @ViewChild("changeDiv13") changeDiv13: ElementRef;
+  @ViewChild("changeDiv14") changeDiv14: ElementRef;
+  @ViewChild("changeDiv15") changeDiv15: ElementRef;
+  @ViewChild("changeDiv16") changeDiv16: ElementRef;
+  @ViewChild("changeDiv17") changeDiv17: ElementRef;
+  @ViewChild("changeDiv18") changeDiv18: ElementRef;
+  @ViewChild("changeDiv19") changeDiv19: ElementRef;
+  @ViewChild("changeDiv20") changeDiv20: ElementRef;
+  @ViewChild("changeDiv21") changeDiv21: ElementRef;
+  @ViewChild("changeDiv22") changeDiv22: ElementRef;
+  @ViewChild("changeDiv23") changeDiv23: ElementRef;
+  @ViewChild("changeDiv24") changeDiv24: ElementRef;
+  @ViewChild("changeDiv25") changeDiv25: ElementRef;
+  @ViewChild("changeDiv26") changeDiv26: ElementRef;
+  @ViewChild("changeDiv27") changeDiv27: ElementRef;
+  @ViewChild("changeDiv28") changeDiv28: ElementRef;
+  @ViewChild("changeDiv29") changeDiv29: ElementRef;
+
+  @ViewChild("chart") chart: ChartComponent;
+  public chartOptions: Partial<ChartOptions>;
+
+  ngAfterViewInit() {}
+
+  sliderFunction1() {
+    if (this.sliderValue == 1) {
+      this.changeDiv.nativeElement.style.fontSize = "15px";
+      this.changeDiv1.nativeElement.style.fontSize = "15px";
+      this.changeDiv2.nativeElement.style.fontSize = "15px";
+      this.changeDiv3.nativeElement.style.fontSize = "15px";
+      this.changeDiv4.nativeElement.style.fontSize = "15px";
+      this.changeDiv5.nativeElement.style.fontSize = "15px";
+      this.changeDiv6.nativeElement.style.fontSize = "15px";
+      this.changeDiv7.nativeElement.style.fontSize = "15px";
+      this.changeDiv8.nativeElement.style.fontSize = "15px";
+      this.changeDiv9.nativeElement.style.fontSize = "15px";
+      this.changeDiv10.nativeElement.style.fontSize = "15px";
+      this.changeDiv11.nativeElement.style.fontSize = "15px";
+      this.changeDiv12.nativeElement.style.fontSize = "15px";
+      this.changeDiv13.nativeElement.style.fontSize = "15px";
+      this.changeDiv14.nativeElement.style.fontSize = "15px";
+      this.changeDiv15.nativeElement.style.fontSize = "15px";
+      this.changeDiv16.nativeElement.style.fontSize = "15px";
+      this.changeDiv17.nativeElement.style.fontSize = "15px";
+      this.changeDiv18.nativeElement.style.fontSize = "15px";
+      this.changeDiv19.nativeElement.style.fontSize = "15px";
+      this.changeDiv20.nativeElement.style.fontSize = "15px";
+      this.changeDiv21.nativeElement.style.fontSize = "15px";
+      this.changeDiv22.nativeElement.style.fontSize = "15px";
+      this.changeDiv23.nativeElement.style.fontSize = "15px";
+      this.changeDiv24.nativeElement.style.fontSize = "15px";
+      this.changeDiv25.nativeElement.style.fontSize = "15px";
+      this.changeDiv26.nativeElement.style.fontSize = "15px";
+      this.changeDiv27.nativeElement.style.fontSize = "15px";
+      this.changeDiv28.nativeElement.style.fontSize = "15px";
+      this.changeDiv29.nativeElement.style.fontSize = "15px";
+    } else if (this.sliderValue == 2) {
+      this.changeDiv.nativeElement.style.fontSize = "20px";
+      this.changeDiv1.nativeElement.style.fontSize = "20px";
+      this.changeDiv2.nativeElement.style.fontSize = "20px";
+      this.changeDiv3.nativeElement.style.fontSize = "20px";
+      this.changeDiv4.nativeElement.style.fontSize = "20px";
+      this.changeDiv5.nativeElement.style.fontSize = "20px";
+      this.changeDiv6.nativeElement.style.fontSize = "20px";
+      this.changeDiv7.nativeElement.style.fontSize = "20px";
+      this.changeDiv8.nativeElement.style.fontSize = "20px";
+      this.changeDiv9.nativeElement.style.fontSize = "20px";
+      this.changeDiv10.nativeElement.style.fontSize = "20px";
+      this.changeDiv11.nativeElement.style.fontSize = "20px";
+      this.changeDiv12.nativeElement.style.fontSize = "20px";
+      this.changeDiv13.nativeElement.style.fontSize = "20px";
+      this.changeDiv14.nativeElement.style.fontSize = "20px";
+      this.changeDiv15.nativeElement.style.fontSize = "20px";
+      this.changeDiv16.nativeElement.style.fontSize = "20px";
+      this.changeDiv17.nativeElement.style.fontSize = "20px";
+      this.changeDiv18.nativeElement.style.fontSize = "20px";
+      this.changeDiv19.nativeElement.style.fontSize = "20px";
+      this.changeDiv20.nativeElement.style.fontSize = "20px";
+      this.changeDiv21.nativeElement.style.fontSize = "20px";
+      this.changeDiv22.nativeElement.style.fontSize = "20px";
+      this.changeDiv23.nativeElement.style.fontSize = "20px";
+      this.changeDiv24.nativeElement.style.fontSize = "20px";
+      this.changeDiv25.nativeElement.style.fontSize = "20px";
+      this.changeDiv26.nativeElement.style.fontSize = "20px";
+      this.changeDiv27.nativeElement.style.fontSize = "20px";
+      this.changeDiv28.nativeElement.style.fontSize = "20px";
+      this.changeDiv29.nativeElement.style.fontSize = "20px";
+    } else if (this.sliderValue == 3) {
+      this.changeDiv.nativeElement.style.fontSize = "22px";
+      this.changeDiv1.nativeElement.style.fontSize = "22px";
+      this.changeDiv2.nativeElement.style.fontSize = "22px";
+      this.changeDiv3.nativeElement.style.fontSize = "22px";
+      this.changeDiv4.nativeElement.style.fontSize = "22px";
+      this.changeDiv5.nativeElement.style.fontSize = "22px";
+      this.changeDiv6.nativeElement.style.fontSize = "22px";
+      this.changeDiv7.nativeElement.style.fontSize = "22px";
+      this.changeDiv8.nativeElement.style.fontSize = "22px";
+      this.changeDiv9.nativeElement.style.fontSize = "22px";
+      this.changeDiv10.nativeElement.style.fontSize = "22px";
+      this.changeDiv11.nativeElement.style.fontSize = "22px";
+      this.changeDiv12.nativeElement.style.fontSize = "22px";
+      this.changeDiv13.nativeElement.style.fontSize = "22px";
+      this.changeDiv14.nativeElement.style.fontSize = "22px";
+      this.changeDiv15.nativeElement.style.fontSize = "22px";
+      this.changeDiv16.nativeElement.style.fontSize = "22px";
+      this.changeDiv17.nativeElement.style.fontSize = "22px";
+      this.changeDiv18.nativeElement.style.fontSize = "22px";
+      this.changeDiv19.nativeElement.style.fontSize = "22px";
+      this.changeDiv20.nativeElement.style.fontSize = "22px";
+      this.changeDiv21.nativeElement.style.fontSize = "22px";
+      this.changeDiv22.nativeElement.style.fontSize = "22px";
+      this.changeDiv23.nativeElement.style.fontSize = "22px";
+      this.changeDiv24.nativeElement.style.fontSize = "22px";
+      this.changeDiv25.nativeElement.style.fontSize = "22px";
+      this.changeDiv26.nativeElement.style.fontSize = "22px";
+      this.changeDiv27.nativeElement.style.fontSize = "22px";
+      this.changeDiv28.nativeElement.style.fontSize = "22px";
+      this.changeDiv29.nativeElement.style.fontSize = "22px";
+    } else if (this.sliderValue == 4) {
+      this.changeDiv.nativeElement.style.fontSize = "25px";
+      this.changeDiv1.nativeElement.style.fontSize = "25px";
+      this.changeDiv2.nativeElement.style.fontSize = "25px";
+      this.changeDiv3.nativeElement.style.fontSize = "25px";
+      this.changeDiv4.nativeElement.style.fontSize = "25px";
+      this.changeDiv5.nativeElement.style.fontSize = "25px";
+      this.changeDiv6.nativeElement.style.fontSize = "25px";
+      this.changeDiv7.nativeElement.style.fontSize = "25px";
+      this.changeDiv8.nativeElement.style.fontSize = "25px";
+      this.changeDiv9.nativeElement.style.fontSize = "25px";
+      this.changeDiv10.nativeElement.style.fontSize = "25px";
+      this.changeDiv11.nativeElement.style.fontSize = "25px";
+      this.changeDiv12.nativeElement.style.fontSize = "25px";
+      this.changeDiv13.nativeElement.style.fontSize = "25px";
+      this.changeDiv14.nativeElement.style.fontSize = "25px";
+      this.changeDiv15.nativeElement.style.fontSize = "25px";
+      this.changeDiv16.nativeElement.style.fontSize = "25px";
+      this.changeDiv17.nativeElement.style.fontSize = "25px";
+      this.changeDiv18.nativeElement.style.fontSize = "25px";
+      this.changeDiv19.nativeElement.style.fontSize = "25px";
+      this.changeDiv20.nativeElement.style.fontSize = "25px";
+      this.changeDiv21.nativeElement.style.fontSize = "25px";
+      this.changeDiv22.nativeElement.style.fontSize = "25px";
+      this.changeDiv23.nativeElement.style.fontSize = "25px";
+      this.changeDiv24.nativeElement.style.fontSize = "25px";
+      this.changeDiv25.nativeElement.style.fontSize = "25px";
+      this.changeDiv26.nativeElement.style.fontSize = "25px";
+      this.changeDiv27.nativeElement.style.fontSize = "25px";
+      this.changeDiv28.nativeElement.style.fontSize = "25px";
+      this.changeDiv29.nativeElement.style.fontSize = "25px";
+    } else if (this.sliderValue == 5) {
+      this.changeDiv.nativeElement.style.fontSize = "50px";
+      this.changeDiv1.nativeElement.style.fontSize = "50px";
+      this.changeDiv2.nativeElement.style.fontSize = "50px";
+      this.changeDiv3.nativeElement.style.fontSize = "50px";
+      this.changeDiv4.nativeElement.style.fontSize = "50px";
+      this.changeDiv5.nativeElement.style.fontSize = "50px";
     }
-    sliderFunction(e) {
-        //
-        this.sliderValue = e.value;
-        if (e.value == 1) {
-            this.changeDiv.nativeElement.style.fontSize = "15px";
-            this.changeDiv1.nativeElement.style.fontSize = "15px";
-            this.changeDiv2.nativeElement.style.fontSize = "15px";
-            this.changeDiv3.nativeElement.style.fontSize = "15px";
-            this.changeDiv4.nativeElement.style.fontSize = "15px";
-            this.changeDiv5.nativeElement.style.fontSize = "15px";
-            this.changeDiv6.nativeElement.style.fontSize = "15px";
-            this.changeDiv7.nativeElement.style.fontSize = "15px";
-            this.changeDiv8.nativeElement.style.fontSize = "15px";
-            this.changeDiv9.nativeElement.style.fontSize = "15px";
-            this.changeDiv10.nativeElement.style.fontSize = "15px";
-            this.changeDiv11.nativeElement.style.fontSize = "15px";
-            this.changeDiv12.nativeElement.style.fontSize = "15px";
-            this.changeDiv13.nativeElement.style.fontSize = "15px";
-            this.changeDiv14.nativeElement.style.fontSize = "15px";
-            this.changeDiv15.nativeElement.style.fontSize = "15px";
-            this.changeDiv16.nativeElement.style.fontSize = "15px";
-            this.changeDiv17.nativeElement.style.fontSize = "15px";
-            this.changeDiv18.nativeElement.style.fontSize = "15px";
-            this.changeDiv19.nativeElement.style.fontSize = "15px";
-            this.changeDiv20.nativeElement.style.fontSize = "15px";
-            this.changeDiv21.nativeElement.style.fontSize = "15px";
-            this.changeDiv22.nativeElement.style.fontSize = "15px";
-            this.changeDiv23.nativeElement.style.fontSize = "15px";
-            this.changeDiv24.nativeElement.style.fontSize = "15px";
-            this.changeDiv25.nativeElement.style.fontSize = "15px";
-            this.changeDiv26.nativeElement.style.fontSize = "15px";
-            this.changeDiv27.nativeElement.style.fontSize = "15px";
-            this.changeDiv28.nativeElement.style.fontSize = "15px";
-            this.changeDiv29.nativeElement.style.fontSize = "15px";
-        } else if (e.value == 2) {
-            this.changeDiv.nativeElement.style.fontSize = "20px";
-            this.changeDiv1.nativeElement.style.fontSize = "20px";
-            this.changeDiv2.nativeElement.style.fontSize = "20px";
-            this.changeDiv3.nativeElement.style.fontSize = "20px";
-            this.changeDiv4.nativeElement.style.fontSize = "20px";
-            this.changeDiv5.nativeElement.style.fontSize = "20px";
-            this.changeDiv6.nativeElement.style.fontSize = "20px";
-            this.changeDiv7.nativeElement.style.fontSize = "20px";
-            this.changeDiv8.nativeElement.style.fontSize = "20px";
-            this.changeDiv9.nativeElement.style.fontSize = "20px";
-            this.changeDiv10.nativeElement.style.fontSize = "20px";
-            this.changeDiv11.nativeElement.style.fontSize = "20px";
-            this.changeDiv12.nativeElement.style.fontSize = "20px";
-            this.changeDiv13.nativeElement.style.fontSize = "20px";
-            this.changeDiv14.nativeElement.style.fontSize = "20px";
-            this.changeDiv15.nativeElement.style.fontSize = "20px";
-            this.changeDiv16.nativeElement.style.fontSize = "20px";
-            this.changeDiv17.nativeElement.style.fontSize = "20px";
-            this.changeDiv18.nativeElement.style.fontSize = "20px";
-            this.changeDiv19.nativeElement.style.fontSize = "20px";
-            this.changeDiv20.nativeElement.style.fontSize = "20px";
-            this.changeDiv21.nativeElement.style.fontSize = "20px";
-            this.changeDiv22.nativeElement.style.fontSize = "20px";
-            this.changeDiv23.nativeElement.style.fontSize = "20px";
-            this.changeDiv24.nativeElement.style.fontSize = "20px";
-            this.changeDiv25.nativeElement.style.fontSize = "20px";
-            this.changeDiv26.nativeElement.style.fontSize = "20px";
-            this.changeDiv27.nativeElement.style.fontSize = "20px";
-            this.changeDiv28.nativeElement.style.fontSize = "20px";
-            this.changeDiv29.nativeElement.style.fontSize = "20px";
-        } else if (e.value == 3) {
-            this.changeDiv.nativeElement.style.fontSize = "22px";
-            this.changeDiv1.nativeElement.style.fontSize = "22px";
-            this.changeDiv2.nativeElement.style.fontSize = "22px";
-            this.changeDiv3.nativeElement.style.fontSize = "22px";
-            this.changeDiv4.nativeElement.style.fontSize = "22px";
-            this.changeDiv5.nativeElement.style.fontSize = "22px";
-            this.changeDiv6.nativeElement.style.fontSize = "22px";
-            this.changeDiv7.nativeElement.style.fontSize = "22px";
-            this.changeDiv8.nativeElement.style.fontSize = "22px";
-            this.changeDiv9.nativeElement.style.fontSize = "22px";
-            this.changeDiv10.nativeElement.style.fontSize = "22px";
-            this.changeDiv11.nativeElement.style.fontSize = "22px";
-            this.changeDiv12.nativeElement.style.fontSize = "22px";
-            this.changeDiv13.nativeElement.style.fontSize = "22px";
-            this.changeDiv14.nativeElement.style.fontSize = "22px";
-            this.changeDiv15.nativeElement.style.fontSize = "22px";
-            this.changeDiv16.nativeElement.style.fontSize = "22px";
-            this.changeDiv17.nativeElement.style.fontSize = "22px";
-            this.changeDiv18.nativeElement.style.fontSize = "22px";
-            this.changeDiv19.nativeElement.style.fontSize = "22px";
-            this.changeDiv20.nativeElement.style.fontSize = "22px";
-            this.changeDiv21.nativeElement.style.fontSize = "22px";
-            this.changeDiv22.nativeElement.style.fontSize = "22px";
-            this.changeDiv23.nativeElement.style.fontSize = "22px";
-            this.changeDiv24.nativeElement.style.fontSize = "22px";
-            this.changeDiv25.nativeElement.style.fontSize = "22px";
-            this.changeDiv26.nativeElement.style.fontSize = "22px";
-            this.changeDiv27.nativeElement.style.fontSize = "22px";
-            this.changeDiv28.nativeElement.style.fontSize = "22px";
-            this.changeDiv29.nativeElement.style.fontSize = "22px";
-        } else if (e.value == 4) {
-            this.changeDiv.nativeElement.style.fontSize = "25px";
-            this.changeDiv1.nativeElement.style.fontSize = "25px";
-            this.changeDiv2.nativeElement.style.fontSize = "25px";
-            this.changeDiv3.nativeElement.style.fontSize = "25px";
-            this.changeDiv4.nativeElement.style.fontSize = "25px";
-            this.changeDiv5.nativeElement.style.fontSize = "25px";
-            this.changeDiv6.nativeElement.style.fontSize = "25px";
-            this.changeDiv7.nativeElement.style.fontSize = "25px";
-            this.changeDiv8.nativeElement.style.fontSize = "25px";
-            this.changeDiv9.nativeElement.style.fontSize = "25px";
-            this.changeDiv10.nativeElement.style.fontSize = "25px";
-            this.changeDiv11.nativeElement.style.fontSize = "25px";
-            this.changeDiv12.nativeElement.style.fontSize = "25px";
-            this.changeDiv13.nativeElement.style.fontSize = "25px";
-            this.changeDiv14.nativeElement.style.fontSize = "25px";
-            this.changeDiv15.nativeElement.style.fontSize = "25px";
-            this.changeDiv16.nativeElement.style.fontSize = "25px";
-            this.changeDiv17.nativeElement.style.fontSize = "25px";
-            this.changeDiv18.nativeElement.style.fontSize = "25px";
-            this.changeDiv19.nativeElement.style.fontSize = "25px";
-            this.changeDiv20.nativeElement.style.fontSize = "25px";
-            this.changeDiv21.nativeElement.style.fontSize = "25px";
-            this.changeDiv22.nativeElement.style.fontSize = "25px";
-            this.changeDiv23.nativeElement.style.fontSize = "25px";
-            this.changeDiv24.nativeElement.style.fontSize = "25px";
-            this.changeDiv25.nativeElement.style.fontSize = "25px";
-            this.changeDiv26.nativeElement.style.fontSize = "25px";
-            this.changeDiv27.nativeElement.style.fontSize = "25px";
-            this.changeDiv28.nativeElement.style.fontSize = "25px";
-            this.changeDiv29.nativeElement.style.fontSize = "25px";
-        } else if (e.value == 5) {
-            this.changeDiv.nativeElement.style.fontSize = "50px";
-            this.changeDiv1.nativeElement.style.fontSize = "50px";
-            this.changeDiv2.nativeElement.style.fontSize = "50px";
-            this.changeDiv3.nativeElement.style.fontSize = "50px";
-            this.changeDiv4.nativeElement.style.fontSize = "50px";
-            this.changeDiv5.nativeElement.style.fontSize = "50px";
-        }
+  }
+  sliderFunction(e) {
+    //
+    this.sliderValue = e.value;
+    if (e.value == 1) {
+      this.changeDiv.nativeElement.style.fontSize = "15px";
+      this.changeDiv1.nativeElement.style.fontSize = "15px";
+      this.changeDiv2.nativeElement.style.fontSize = "15px";
+      this.changeDiv3.nativeElement.style.fontSize = "15px";
+      this.changeDiv4.nativeElement.style.fontSize = "15px";
+      this.changeDiv5.nativeElement.style.fontSize = "15px";
+      this.changeDiv6.nativeElement.style.fontSize = "15px";
+      this.changeDiv7.nativeElement.style.fontSize = "15px";
+      this.changeDiv8.nativeElement.style.fontSize = "15px";
+      this.changeDiv9.nativeElement.style.fontSize = "15px";
+      this.changeDiv10.nativeElement.style.fontSize = "15px";
+      this.changeDiv11.nativeElement.style.fontSize = "15px";
+      this.changeDiv12.nativeElement.style.fontSize = "15px";
+      this.changeDiv13.nativeElement.style.fontSize = "15px";
+      this.changeDiv14.nativeElement.style.fontSize = "15px";
+      this.changeDiv15.nativeElement.style.fontSize = "15px";
+      this.changeDiv16.nativeElement.style.fontSize = "15px";
+      this.changeDiv17.nativeElement.style.fontSize = "15px";
+      this.changeDiv18.nativeElement.style.fontSize = "15px";
+      this.changeDiv19.nativeElement.style.fontSize = "15px";
+      this.changeDiv20.nativeElement.style.fontSize = "15px";
+      this.changeDiv21.nativeElement.style.fontSize = "15px";
+      this.changeDiv22.nativeElement.style.fontSize = "15px";
+      this.changeDiv23.nativeElement.style.fontSize = "15px";
+      this.changeDiv24.nativeElement.style.fontSize = "15px";
+      this.changeDiv25.nativeElement.style.fontSize = "15px";
+      this.changeDiv26.nativeElement.style.fontSize = "15px";
+      this.changeDiv27.nativeElement.style.fontSize = "15px";
+      this.changeDiv28.nativeElement.style.fontSize = "15px";
+      this.changeDiv29.nativeElement.style.fontSize = "15px";
+    } else if (e.value == 2) {
+      this.changeDiv.nativeElement.style.fontSize = "20px";
+      this.changeDiv1.nativeElement.style.fontSize = "20px";
+      this.changeDiv2.nativeElement.style.fontSize = "20px";
+      this.changeDiv3.nativeElement.style.fontSize = "20px";
+      this.changeDiv4.nativeElement.style.fontSize = "20px";
+      this.changeDiv5.nativeElement.style.fontSize = "20px";
+      this.changeDiv6.nativeElement.style.fontSize = "20px";
+      this.changeDiv7.nativeElement.style.fontSize = "20px";
+      this.changeDiv8.nativeElement.style.fontSize = "20px";
+      this.changeDiv9.nativeElement.style.fontSize = "20px";
+      this.changeDiv10.nativeElement.style.fontSize = "20px";
+      this.changeDiv11.nativeElement.style.fontSize = "20px";
+      this.changeDiv12.nativeElement.style.fontSize = "20px";
+      this.changeDiv13.nativeElement.style.fontSize = "20px";
+      this.changeDiv14.nativeElement.style.fontSize = "20px";
+      this.changeDiv15.nativeElement.style.fontSize = "20px";
+      this.changeDiv16.nativeElement.style.fontSize = "20px";
+      this.changeDiv17.nativeElement.style.fontSize = "20px";
+      this.changeDiv18.nativeElement.style.fontSize = "20px";
+      this.changeDiv19.nativeElement.style.fontSize = "20px";
+      this.changeDiv20.nativeElement.style.fontSize = "20px";
+      this.changeDiv21.nativeElement.style.fontSize = "20px";
+      this.changeDiv22.nativeElement.style.fontSize = "20px";
+      this.changeDiv23.nativeElement.style.fontSize = "20px";
+      this.changeDiv24.nativeElement.style.fontSize = "20px";
+      this.changeDiv25.nativeElement.style.fontSize = "20px";
+      this.changeDiv26.nativeElement.style.fontSize = "20px";
+      this.changeDiv27.nativeElement.style.fontSize = "20px";
+      this.changeDiv28.nativeElement.style.fontSize = "20px";
+      this.changeDiv29.nativeElement.style.fontSize = "20px";
+    } else if (e.value == 3) {
+      this.changeDiv.nativeElement.style.fontSize = "22px";
+      this.changeDiv1.nativeElement.style.fontSize = "22px";
+      this.changeDiv2.nativeElement.style.fontSize = "22px";
+      this.changeDiv3.nativeElement.style.fontSize = "22px";
+      this.changeDiv4.nativeElement.style.fontSize = "22px";
+      this.changeDiv5.nativeElement.style.fontSize = "22px";
+      this.changeDiv6.nativeElement.style.fontSize = "22px";
+      this.changeDiv7.nativeElement.style.fontSize = "22px";
+      this.changeDiv8.nativeElement.style.fontSize = "22px";
+      this.changeDiv9.nativeElement.style.fontSize = "22px";
+      this.changeDiv10.nativeElement.style.fontSize = "22px";
+      this.changeDiv11.nativeElement.style.fontSize = "22px";
+      this.changeDiv12.nativeElement.style.fontSize = "22px";
+      this.changeDiv13.nativeElement.style.fontSize = "22px";
+      this.changeDiv14.nativeElement.style.fontSize = "22px";
+      this.changeDiv15.nativeElement.style.fontSize = "22px";
+      this.changeDiv16.nativeElement.style.fontSize = "22px";
+      this.changeDiv17.nativeElement.style.fontSize = "22px";
+      this.changeDiv18.nativeElement.style.fontSize = "22px";
+      this.changeDiv19.nativeElement.style.fontSize = "22px";
+      this.changeDiv20.nativeElement.style.fontSize = "22px";
+      this.changeDiv21.nativeElement.style.fontSize = "22px";
+      this.changeDiv22.nativeElement.style.fontSize = "22px";
+      this.changeDiv23.nativeElement.style.fontSize = "22px";
+      this.changeDiv24.nativeElement.style.fontSize = "22px";
+      this.changeDiv25.nativeElement.style.fontSize = "22px";
+      this.changeDiv26.nativeElement.style.fontSize = "22px";
+      this.changeDiv27.nativeElement.style.fontSize = "22px";
+      this.changeDiv28.nativeElement.style.fontSize = "22px";
+      this.changeDiv29.nativeElement.style.fontSize = "22px";
+    } else if (e.value == 4) {
+      this.changeDiv.nativeElement.style.fontSize = "25px";
+      this.changeDiv1.nativeElement.style.fontSize = "25px";
+      this.changeDiv2.nativeElement.style.fontSize = "25px";
+      this.changeDiv3.nativeElement.style.fontSize = "25px";
+      this.changeDiv4.nativeElement.style.fontSize = "25px";
+      this.changeDiv5.nativeElement.style.fontSize = "25px";
+      this.changeDiv6.nativeElement.style.fontSize = "25px";
+      this.changeDiv7.nativeElement.style.fontSize = "25px";
+      this.changeDiv8.nativeElement.style.fontSize = "25px";
+      this.changeDiv9.nativeElement.style.fontSize = "25px";
+      this.changeDiv10.nativeElement.style.fontSize = "25px";
+      this.changeDiv11.nativeElement.style.fontSize = "25px";
+      this.changeDiv12.nativeElement.style.fontSize = "25px";
+      this.changeDiv13.nativeElement.style.fontSize = "25px";
+      this.changeDiv14.nativeElement.style.fontSize = "25px";
+      this.changeDiv15.nativeElement.style.fontSize = "25px";
+      this.changeDiv16.nativeElement.style.fontSize = "25px";
+      this.changeDiv17.nativeElement.style.fontSize = "25px";
+      this.changeDiv18.nativeElement.style.fontSize = "25px";
+      this.changeDiv19.nativeElement.style.fontSize = "25px";
+      this.changeDiv20.nativeElement.style.fontSize = "25px";
+      this.changeDiv21.nativeElement.style.fontSize = "25px";
+      this.changeDiv22.nativeElement.style.fontSize = "25px";
+      this.changeDiv23.nativeElement.style.fontSize = "25px";
+      this.changeDiv24.nativeElement.style.fontSize = "25px";
+      this.changeDiv25.nativeElement.style.fontSize = "25px";
+      this.changeDiv26.nativeElement.style.fontSize = "25px";
+      this.changeDiv27.nativeElement.style.fontSize = "25px";
+      this.changeDiv28.nativeElement.style.fontSize = "25px";
+      this.changeDiv29.nativeElement.style.fontSize = "25px";
+    } else if (e.value == 5) {
+      this.changeDiv.nativeElement.style.fontSize = "50px";
+      this.changeDiv1.nativeElement.style.fontSize = "50px";
+      this.changeDiv2.nativeElement.style.fontSize = "50px";
+      this.changeDiv3.nativeElement.style.fontSize = "50px";
+      this.changeDiv4.nativeElement.style.fontSize = "50px";
+      this.changeDiv5.nativeElement.style.fontSize = "50px";
     }
-    openScoreDialog(responseID, topic) {
-        var questAns = {};
-        var scores = [];
-
-        var arr = ["hello"];
-        const dialogRef = this.dialog.open(DialogFormComponent, {
-            data: {
+  }
+  openScoreDialog(responseID, topic) {
+    var questAns = {};
+    var scores = [];
+
+    var arr = ["hello"];
+    const dialogRef = this.dialog.open(DialogFormComponent, {
+      data: {
+        animal: arr,
+        status: "score",
+      },
+      disableClose: true,
+    });
+    dialogRef.afterClosed().subscribe((result) => {});
+  }
+  // this.chartOptionsInitial(this.dialog, categoryConcat, data, this.scoresCategory,this.scoreSeries,this.scorePK, this.scoreValues, this.scoreTopic, this.scoreType)
+
+  chartOptionsInitial(d, joinedCategory, data, category, score, scorePK, scoreValues, scoreTopic, scoreType) {
+    this.chartOptions = {
+      series: [
+        {
+          name: "Cultural Proficiency",
+          data: data,
+        },
+      ],
+      chart: {
+        height: 350,
+        type: "bar",
+        events: {
+          dataPointSelection: function (event, chartContext, config) {
+            let i = config["selectedDataPoints"][0][0];
+            var arr = [];
+            arr.push(scoreTopic[i]);
+            arr.push(category[i][0]);
+            arr.push(data[i]);
+            arr.push(scoreValues[i]);
+            arr.push(scoreType[i]);
+
+            const dialogRef = d.open(DialogFormComponent, {
+              data: {
                 animal: arr,
                 status: "score",
+              },
+              disableClose: false,
+            });
+          },
+        },
+      },
+      plotOptions: {
+        bar: {
+          dataLabels: {
+            position: "top", // top, center, bottom
+          },
+        },
+      },
+      dataLabels: {
+        enabled: true,
+        formatter: function (val) {
+          return "Mean: " + val;
+        },
+        offsetY: -20,
+        style: {
+          fontSize: "12px",
+          colors: ["#304758"],
+        },
+      },
+
+      xaxis: {
+        categories: joinedCategory,
+        // categories: ["jan","feb","jan"],
+        position: "top",
+        labels: {
+          offsetY: -18,
+        },
+        axisBorder: {
+          show: false,
+        },
+        axisTicks: {
+          show: false,
+        },
+        crosshairs: {
+          fill: {
+            type: "gradient",
+            gradient: {
+              colorFrom: "#D8E3F0",
+              colorTo: "#BED1E6",
+              stops: [0, 100],
+              opacityFrom: 0.4,
+              opacityTo: 0.5,
             },
-            disableClose: true,
-        });
-        dialogRef.afterClosed().subscribe((result) => {});
+          },
+        },
+        tooltip: {
+          enabled: true,
+          offsetY: -35,
+        },
+      },
+      fill: {
+        type: "gradient",
+        gradient: {
+          shade: "light",
+          type: "horizontal",
+          shadeIntensity: 0.25,
+          gradientToColors: undefined,
+          inverseColors: true,
+          opacityFrom: 1,
+          opacityTo: 1,
+          stops: [50, 0, 100, 100],
+        },
+      },
+      yaxis: {
+        axisBorder: {
+          show: false,
+        },
+        axisTicks: {
+          show: false,
+        },
+        labels: {
+          show: false,
+          formatter: function (val) {
+            if (val <= 1) return val + ", Culturally Destructive";
+            else if (val > 1 && val <= 2) return val + ", Culturally Incapacitive";
+            else if (val > 2 && val <= 3) return val + ", Culturally Blind";
+            else if (val > 3 && val <= 4) return val + ", Culturally Pre-Competent";
+            else if (val > 4 && val <= 5) return val + ", Culturally Competent";
+            else if (val > 5 && val <= 6) return val + ", Culturally Proficient";
+            else return val + " ";
+          },
+        },
+      },
+      title: {
+        text: "Scores for Each Vignette Answered",
+        offsetY: 320,
+        align: "center",
+        style: {
+          color: "#444",
+        },
+      },
+    };
+  }
+
+  constructor(
+    private fb: FormBuilder,
+    private apiService: CPCQService,
+    private router: Router,
+    private formService: FirstForm,
+    private domSanitizer: DomSanitizer,
+    public dialog: MatDialog,
+    private loginService: LoginService
+  ) {}
+
+  openDialog(i, j, id) {
+    var questAns = {};
+    var scores = [];
+    for (let key in this.scoreRes) {
+      if (this.scoreRes[key]["topic"] == this.attributes[i]) {
+        questAns = this.scoreRes[key][this.columnHeadings[j]];
+        scores = this.scoreRes[key]["scores"][id];
+      }
     }
-    // this.chartOptionsInitial(this.dialog, categoryConcat, data, this.scoresCategory,this.scoreSeries,this.scorePK, this.scoreValues, this.scoreTopic, this.scoreType)
-
-    chartOptionsInitial(d, joinedCategory, data, category, score, scorePK, scoreValues, scoreTopic, scoreType) {
-        this.chartOptions = {
-            series: [
-                {
-                    name: "Cultural Proficiency",
-                    data: data,
-                },
-            ],
-            chart: {
-                height: 350,
-                type: "bar",
-                events: {
-                    dataPointSelection: function (event, chartContext, config) {
-                        let i = config["selectedDataPoints"][0][0];
-                        var arr = [];
-                        arr.push(scoreTopic[i]);
-                        arr.push(category[i][0]);
-                        arr.push(data[i]);
-                        arr.push(scoreValues[i]);
-                        arr.push(scoreType[i]);
-
-                        const dialogRef = d.open(DialogFormComponent, {
-                            data: {
-                                animal: arr,
-                                status: "score",
-                            },
-                            disableClose: false,
-                        });
-                    },
-                },
-            },
-            plotOptions: {
-                bar: {
-                    dataLabels: {
-                        position: "top", // top, center, bottom
-                    },
-                },
-            },
-            dataLabels: {
-                enabled: true,
-                formatter: function (val) {
-                    return "Mean: " + val;
-                },
-                offsetY: -20,
-                style: {
-                    fontSize: "12px",
-                    colors: ["#304758"],
-                },
-            },
 
-            xaxis: {
-                categories: joinedCategory,
-                // categories: ["jan","feb","jan"],
-                position: "top",
-                labels: {
-                    offsetY: -18,
-                },
-                axisBorder: {
-                    show: false,
-                },
-                axisTicks: {
-                    show: false,
-                },
-                crosshairs: {
-                    fill: {
-                        type: "gradient",
-                        gradient: {
-                            colorFrom: "#D8E3F0",
-                            colorTo: "#BED1E6",
-                            stops: [0, 100],
-                            opacityFrom: 0.4,
-                            opacityTo: 0.5,
-                        },
-                    },
-                },
-                tooltip: {
-                    enabled: true,
-                    offsetY: -35,
-                },
-            },
-            fill: {
-                type: "gradient",
-                gradient: {
-                    shade: "light",
-                    type: "horizontal",
-                    shadeIntensity: 0.25,
-                    gradientToColors: undefined,
-                    inverseColors: true,
-                    opacityFrom: 1,
-                    opacityTo: 1,
-                    stops: [50, 0, 100, 100],
-                },
-            },
-            yaxis: {
-                axisBorder: {
-                    show: false,
-                },
-                axisTicks: {
-                    show: false,
-                },
-                labels: {
-                    show: false,
-                    formatter: function (val) {
-                        if (val <= 1) return val + ", Culturally Destructive";
-                        else if (val > 1 && val <= 2) return val + ", Culturally Incapacitive";
-                        else if (val > 2 && val <= 3) return val + ", Culturally Blind";
-                        else if (val > 3 && val <= 4) return val + ", Culturally Pre-Competent";
-                        else if (val > 4 && val <= 5) return val + ", Culturally Competent";
-                        else if (val > 5 && val <= 6) return val + ", Culturally Proficient";
-                        else return val + " ";
-                    },
-                },
-            },
-            title: {
-                text: "Scores for Each Vignette Answered",
-                offsetY: 320,
-                align: "center",
-                style: {
-                    color: "#444",
-                },
-            },
-        };
+    var arr = [];
+    arr.push(this.attributes[i]);
+    arr.push(j);
+    arr.push(this.columnHeadings[j]);
+    arr.push(id);
+    arr.push(questAns);
+    arr.push(scores);
+    const dialogRef = this.dialog.open(DialogFormComponent, {
+      data: {
+        animal: arr,
+        status: "form1",
+      },
+      disableClose: true,
+    });
+    dialogRef.afterClosed().subscribe((result) => {
+      if (this.responsesArray[i][j][1] == "colorbold") {
+        this.unpackedCount = this.unpackedCount + 1;
+      }
+    });
+  }
+
+  openWordDialog(i) {
+    //
+    this.buttonClick = true;
+    const dialogRef = this.dialog.open(DialogFormComponent, {
+      data: {
+        animal: i,
+        status: "word",
+      },
+      disableClose: true,
+    });
+
+    dialogRef.afterClosed().subscribe((result) => {
+      this.wordDescription = result;
+    });
+  }
+
+  helpDialog(i) {
+    //
+    this.dialog.open(DialogFormComponent, {
+      data: {
+        animal: i,
+        status: "help",
+      },
+    });
+  }
+
+  keyPressFunc(e) {
+    //
+    var numbersList = ["1"];
+    for (let key in this.attitudeForm.value) {
+      if (numbersList.indexOf(this.attitudeForm.value[key]) == -1) {
+        //
+        return "Number";
+      }
     }
-
-    constructor(
-        private fb: FormBuilder,
-        private apiService: CPCQService,
-        private router: Router,
-        private formService: FirstForm,
-        private domSanitizer: DomSanitizer,
-        public dialog: MatDialog,
-        private loginService: LoginService
-    ) {}
-
-    openDialog(i, j, id) {
-        var questAns = {};
-        var scores = [];
-        for (let key in this.scoreRes) {
-            if (this.scoreRes[key]["topic"] == this.attributes[i]) {
-                questAns = this.scoreRes[key][this.columnHeadings[j]];
-                scores = this.scoreRes[key]["scores"][id];
-            }
+  }
+
+  getEmailError() {
+    return "Error";
+  }
+  getResponses() {
+    this.apiService.getResponsesData().subscribe((res) => {
+      for (let key in res) {
+        this.temp = [];
+        for (let key1 in res[key]) {
+          this.temp.push(res[key][key1]);
+        }
+        this.responsesArray.push(this.temp);
+      }
+    });
+  }
+
+  getForm() {
+    var arr = [];
+    var arr1 = [];
+    var arr2 = [];
+    var i;
+    var attitudeResult = [];
+    var empathyResult = [];
+    var policyResult = [];
+    var profResult = [];
+    var teachingResult = [];
+    this.finalList = [[]];
+    this.boldList = [[]];
+    this.apiService.getFormData().subscribe((res) => {
+      for (let key in res) {
+        arr = [];
+        if (res[key]["topic"] == "Attitude") {
+          attitudeResult.push("Attitude");
+          arr.push("Attitude");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+        } else if (res[key]["topic"] == "Empathy") {
+          empathyResult.push("Empathy");
+          arr.push("Empathy");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+        } else if (res[key]["topic"] == "Policy") {
+          policyResult.push("Policy");
+          arr.push("Policy");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+
+          policyResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+        } else if (res[key]["topic"] == "Professionalism") {
+          profResult.push("Professionalism");
+          arr.push("Professionalism");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+
+          profResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+        } else if (res[key]["topic"] == "Teaching Practice") {
+          arr.push("Teaching Pracice");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+          teachingResult.push("Teaching Practice");
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
         }
 
-        var arr = [];
-        arr.push(this.attributes[i]);
-        arr.push(j);
-        arr.push(this.columnHeadings[j]);
-        arr.push(id);
-        arr.push(questAns);
-        arr.push(scores);
-        const dialogRef = this.dialog.open(DialogFormComponent, {
-            data: {
-                animal: arr,
-                status: "form1",
-            },
-            disableClose: true,
-        });
-        dialogRef.afterClosed().subscribe((result) => {
-            if (this.responsesArray[i][j][1] == "colorbold") {
-                this.unpackedCount = this.unpackedCount + 1;
+        this.boldList.push(arr);
+      }
+      this.finalList.push(attitudeResult);
+      this.finalList.push(empathyResult);
+      this.finalList.push(policyResult);
+      this.finalList.push(profResult);
+      this.finalList.push(teachingResult);
+    });
+    this.finalList.splice(0, 1);
+    this.boldList.splice(0, 1);
+    // this.getAllIndexes(this.finalList,1)
+  }
+
+  emoji: any;
+  changeEmojiSize(data) {
+    document.getElementById("angry").style.height = "30px";
+    document.getElementById("angry").style.width = "30px";
+    document.getElementById("sad").style.height = "30px";
+    document.getElementById("sad").style.width = "30px";
+    document.getElementById("neutral").style.height = "30px";
+    document.getElementById("neutral").style.width = "30px";
+    document.getElementById("smile").style.height = "30px";
+    document.getElementById("smile").style.width = "30px";
+    document.getElementById("heart").style.height = "30px";
+    document.getElementById("heart").style.width = "30px";
+    document.getElementById(data).style.height = "50px";
+    document.getElementById(data).style.width = "50px";
+
+    this.emoji = data;
+  }
+
+  thumbs: any;
+  changeThumbsSize(data) {
+    document.getElementById("thumbsup").style.height = "30px";
+    document.getElementById("thumbsup").style.width = "30px";
+    document.getElementById("thumbsdown").style.height = "30px";
+    document.getElementById("thumbsdown").style.width = "30px";
+
+    document.getElementById(data).style.height = "50px";
+    document.getElementById(data).style.width = "50px";
+    this.thumbs = data;
+  }
+  finalSubmit() {
+    this.finalFeedbackForm.value["q6"] = this.thumbs;
+    this.finalFeedbackForm.value["q7"] = this.emoji;
+
+    this.endTime = new Date();
+
+    this.durationTime = (this.endTime - this.startTime) / 1000;
+    this.durationTime = this.durationTime / 60;
+
+    this.apiService.postFeedbackForm(this.finalFeedbackForm.value).subscribe(
+      (res) => {
+        this.apiService.changeCPCQStatus().subscribe((res1) => {
+          Swal.fire({
+            text: "Submitted",
+            icon: "success",
+          }).then((res) => {
+            if (res["isConfirmed"]) {
+              this.router.navigateByUrl("/result");
             }
+          });
         });
-    }
+      },
+      (err) => {}
+    );
+  }
+  responsesArray = [];
+  temp = [];
+  scoreRes: any;
+
+  scoresCategory: any;
+  scoreSeries: any;
+  scorePK: any;
+  scoreValues: any;
+  scoreType: any;
+  scoreTopic: any;
+  meanValue: any = 0;
+  meanNumber: any = 0;
+  postSurveyFlag: any;
+  ngOnInit(): void {
+    this.loginService.checkStatus().subscribe((res) => {
+      this.postSurveyFlag = res[0]["postsurveystatus"];
+
+      // if(res[0]["postsurveystatus"]){
+      //
+      //   this.postSurveyFlag = false;
+      // }
+      // else{
+      //
+      //   this.postSurveyFlag = true
+      // }
+    });
+
+    this.apiService.getScoreVisualization().subscribe((res) => {
+      this.scoresCategory = res["category"];
+      this.scoreSeries = res["series"];
+      this.scorePK = res["pk"];
+      this.scoreValues = res["scores"];
+      this.scoreTopic = res["topic"];
+      this.scoreType = res["type"];
+      var categoryConcat = [];
+      var data = [];
+      var temp = 0;
+      for (var i = 0; i < this.scoresCategory.length; i++) {
+        categoryConcat.push(res["topic"][i] + " " + this.scoresCategory[i]);
+        data.push(this.scoreSeries[i]["data"]);
+        temp = temp + this.scoreSeries[i]["data"];
+      }
+      this.meanValue = temp / 4.0;
+      this.meanNumber = temp / 4.0;
+      if (this.meanValue >= 0 && this.meanValue <= 1) {
+        if (this.meanValue == 1) this.meanValue = this.columnHeadings1[0];
+        else this.meanValue = " somewhere between Cultural Destructiveness and Cultural Incapacity";
+      }
+      if (this.meanValue > 1 && this.meanValue <= 2) {
+        if (this.meanValue == 2) this.meanValue = this.columnHeadings1[1];
+        else this.meanValue = " somewhere between Cultural Incapacity and Cultural Blindness";
+      }
+      if (this.meanValue > 2 && this.meanValue <= 3) {
+        if (this.meanValue == 3) this.meanValue = this.columnHeadings1[2];
+        else this.meanValue = " somewhere between Cultural Blindness and Cultural PreCompetence";
+      }
+      if (this.meanValue > 3 && this.meanValue <= 4) {
+        if (this.meanValue == 4) this.meanValue = this.columnHeadings1[3];
+        else this.meanValue = " somewhere between Cultural PreCompetence and Cultural Competence";
+      }
+      if (this.meanValue > 4 && this.meanValue <= 5) {
+        if (this.meanValue == 5) this.meanValue = this.columnHeadings1[4];
+        else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
+      }
+      if (this.meanValue > 5) {
+        if (this.meanValue == 5) this.meanValue = this.columnHeadings1[4];
+        else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
+      }
+      this.chartOptionsInitial(
+        this.dialog,
+        categoryConcat,
+        data,
+        this.scoresCategory,
+        this.scoreSeries,
+        this.scorePK,
+        this.scoreValues,
+        this.scoreTopic,
+        this.scoreType
+      );
+    });
+
+    this.startTime = new Date();
+    this.finalFeedbackForm = this.fb.group({
+      q1: [""],
+      q2: [""],
+      q3: [""],
+      q4: [""],
+      q5: [""],
+      q6: [""],
+      q7: [""],
+    });
+    this.apiService.getResponsesData().subscribe((res) => {
+      for (let key in res) {
+        this.temp = [];
+        for (let key1 in res[key]) {
+          this.temp.push(res[key][key1]);
+        }
+        this.responsesArray.push(this.temp);
+      }
+    });
 
-    openWordDialog(i) {
-        //
-        this.buttonClick = true;
-        const dialogRef = this.dialog.open(DialogFormComponent, {
-            data: {
-                animal: i,
-                status: "word",
-            },
-            disableClose: true,
-        });
+    this.apiService.getScoreInfo().subscribe((res) => {
+      this.scoreRes = res;
 
-        dialogRef.afterClosed().subscribe((result) => {
-            this.wordDescription = result;
-        });
-    }
+      for (let key in res) {
+        for (let category in res[key]["scores"]["category"]) {
+          var firstIndex = this.attributes.indexOf(res[key]["topic"]);
 
-    helpDialog(i) {
+          var secondIndex = this.columnHeadings.indexOf(res[key]["scores"]["category"][category]);
+
+          if (firstIndex != -1 && secondIndex != -1) {
+            this.responsesArray[firstIndex][secondIndex][1] = "Colored";
+          }
+        }
+      }
+    });
+
+    this.apiService.attitudeData().subscribe(
+      (res) => {
         //
-        this.dialog.open(DialogFormComponent, {
-            data: {
-                animal: i,
-                status: "help",
-            },
-        });
-    }
+        this.attitude = res[0];
+        //
+      },
+      (err) => {}
+    );
 
-    keyPressFunc(e) {
+    this.apiService.empathyData().subscribe(
+      (res) => {
+        //
+        this.empathy = res[0];
         //
-        var numbersList = ["1"];
-        for (let key in this.attitudeForm.value) {
-            if (numbersList.indexOf(this.attitudeForm.value[key]) == -1) {
-                //
-                return "Number";
+      },
+      (err) => {}
+    );
+
+    this.apiService.policyData().subscribe(
+      (res) => {
+        this.policy = res[0];
+      },
+      (err) => {}
+    );
+
+    this.apiService.professionalismData().subscribe(
+      (res) => {
+        this.professionalism = res[0];
+      },
+      (err) => {}
+    );
+
+    this.apiService.teachingData().subscribe(
+      (res) => {
+        this.teachingPractice = res[0];
+      },
+      (err) => {}
+    );
+
+    this.attitudeForm = this.fb.group({
+      A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      description: ["", [Validators.required]],
+    });
+
+    this.empathyForm = this.fb.group({
+      A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+    });
+
+    this.policyForm = this.fb.group({
+      A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+    });
+
+    var arr = [];
+    var arr1 = [];
+    var arr2 = [];
+    var i;
+    for (var j = 0; j < 5; j++) {
+      arr = [];
+      arr1 = [];
+      arr2 = [];
+      i = 0;
+      while (i < 6) {
+        var item1 = Math.floor(Math.random() * (7 - 1) + 1);
+        if (arr1.indexOf(item1) == -1) {
+          if (i == 0) {
+            arr.push(this.attributes[j]);
+            arr.push(this.rowLetters[j][i] + ". " + item1);
+            arr1.push(item1);
+            if (arr1[arr1.length - 1] > 2) {
+              //
+              arr2.push("True");
+            } else {
+              arr2.push("False");
+            }
+          } else {
+            arr.push(this.rowLetters[j][i] + ". " + item1);
+            arr1.push(item1);
+            if (i == 1) {
+              if (arr1[arr1.length - 1] > 3) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
+            } else if (i == 2) {
+              if (arr1[arr1.length - 1] > 4 || arr1[arr1.length - 1] == 1) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
+            } else if (i == 3) {
+              if (arr1[arr1.length - 1] > 5 || arr1[arr1.length - 1] < 4) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
+            } else if (i == 4) {
+              if (arr1[arr1.length - 1] < 4) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
+            } else if (i == 5) {
+              if (arr1[arr1.length - 1] < 5) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
             }
+          }
+          i = i + 1;
+        } else {
+          continue;
         }
+      }
+      this.formValues.push(arr);
+      this.boldList.push(arr1);
+      this.randomList.push(arr2);
     }
-
-    getEmailError() {
-        return "Error";
-    }
-    getResponses() {
-        this.apiService.getResponsesData().subscribe((res) => {
-            for (let key in res) {
-                this.temp = [];
-                for (let key1 in res[key]) {
-                    this.temp.push(res[key][key1]);
-                }
-                this.responsesArray.push(this.temp);
-            }
-        });
+    this.boldList.splice(0, 1);
+    this.randomList.splice(0, 1);
+
+    this.getAllIndexes(this.randomList, "True");
+    this.loaded = true;
+  }
+
+  getAllIndexes(arr, val) {
+    var indexes = [];
+    var i = -1;
+    for (var i = 0; i < arr.length; i++) {
+      for (var j = 0; j < arr[i].length; j++) {
+        if (arr[i][j] == "True") {
+          var arr1 = [];
+          arr1.push(i);
+          arr1.push(j);
+          indexes.push(arr1);
+        }
+      }
     }
 
-    getForm() {
-        var arr = [];
-        var arr1 = [];
-        var arr2 = [];
-        var i;
-        var attitudeResult = [];
-        var empathyResult = [];
-        var policyResult = [];
-        var profResult = [];
-        var teachingResult = [];
-        this.finalList = [[]];
-        this.boldList = [[]];
-        this.apiService.getFormData().subscribe((res) => {
-            for (let key in res) {
-                arr = [];
-                if (res[key]["topic"] == "Attitude") {
-                    attitudeResult.push("Attitude");
-                    arr.push("Attitude");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
-                    );
-                } else if (res[key]["topic"] == "Empathy") {
-                    empathyResult.push("Empathy");
-                    arr.push("Empathy");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
-                    );
-                } else if (res[key]["topic"] == "Policy") {
-                    policyResult.push("Policy");
-                    arr.push("Policy");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
-                    );
-                    policyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
-                    );
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
-                    );
-                } else if (res[key]["topic"] == "Professionalism") {
-                    profResult.push("Professionalism");
-                    arr.push("Professionalism");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-
-                    profResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    profResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
-                    profResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
-                    profResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    profResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
-                    profResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
-                } else if (res[key]["topic"] == "Teaching Practice") {
-                    arr.push("Teaching Pracice");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-                    teachingResult.push("Teaching Practice");
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
-                    );
-                }
-
-                this.boldList.push(arr);
-            }
-            this.finalList.push(attitudeResult);
-            this.finalList.push(empathyResult);
-            this.finalList.push(policyResult);
-            this.finalList.push(profResult);
-            this.finalList.push(teachingResult);
-        });
-        this.finalList.splice(0, 1);
-        this.boldList.splice(0, 1);
-        // this.getAllIndexes(this.finalList,1)
+    var arr1 = [];
+    for (var i = 0; i < indexes.length; i++) {
+      arr1.push(i);
     }
-
-    emoji: any;
-    changeEmojiSize(data) {
-        document.getElementById("angry").style.height = "30px";
-        document.getElementById("angry").style.width = "30px";
-        document.getElementById("sad").style.height = "30px";
-        document.getElementById("sad").style.width = "30px";
-        document.getElementById("neutral").style.height = "30px";
-        document.getElementById("neutral").style.width = "30px";
-        document.getElementById("smile").style.height = "30px";
-        document.getElementById("smile").style.width = "30px";
-        document.getElementById("heart").style.height = "30px";
-        document.getElementById("heart").style.width = "30px";
-        document.getElementById(data).style.height = "50px";
-        document.getElementById(data).style.width = "50px";
-
-        this.emoji = data;
+    var ranNums = [];
+    var i = arr1.length;
+    var j = 0;
+    var count = 0;
+    while (i--) {
+      if (count < 5) {
+        j = Math.floor(Math.random() * (i + 1));
+        ranNums.push(arr1[j]);
+        arr1.splice(j, 1);
+        count = count + 1;
+      } else {
+        break;
+      }
     }
 
-    thumbs: any;
-    changeThumbsSize(data) {
-        document.getElementById("thumbsup").style.height = "30px";
-        document.getElementById("thumbsup").style.width = "30px";
-        document.getElementById("thumbsdown").style.height = "30px";
-        document.getElementById("thumbsdown").style.width = "30px";
-
-        document.getElementById(data).style.height = "50px";
-        document.getElementById(data).style.width = "50px";
-        this.thumbs = data;
+    //
+    for (var i = 0; i < this.boldList.length; i++) {
+      var temp = [];
+      for (var j = 0; j < 6; j++) {
+        temp.push("False");
+      }
+      this.finalList1.push(temp);
     }
-    finalSubmit() {
-        this.finalFeedbackForm.value["q6"] = this.thumbs;
-        this.finalFeedbackForm.value["q7"] = this.emoji;
 
-        this.endTime = new Date();
+    for (var i = 0; i < ranNums.length; i++) {
+      var item = indexes[ranNums[i]];
 
-        this.durationTime = (this.endTime - this.startTime) / 1000;
-        this.durationTime = this.durationTime / 60;
-
-        this.apiService.postFeedbackForm(this.finalFeedbackForm.value).subscribe(
-            (res) => {
-                this.apiService.changeCPCQStatus().subscribe((res1) => {
-                    Swal.fire({
-                        text: "Submitted",
-                        icon: "success",
-                    }).then((res) => {
-                        if (res["isConfirmed"]) {
-                            this.router.navigateByUrl("/result");
-                        }
-                    });
-                });
-            },
-            (err) => {}
-        );
+      this.finalList1[item[0]][item[1]] = "True";
     }
-    responsesArray = [];
-    temp = [];
-    scoreRes: any;
-
-    scoresCategory: any;
-    scoreSeries: any;
-    scorePK: any;
-    scoreValues: any;
-    scoreType: any;
-    scoreTopic: any;
-    meanValue: any = 0;
-    meanNumber: any = 0;
-    postSurveyFlag: any;
-    ngOnInit(): void {
-        this.loginService.checkStatus().subscribe((res) => {
-            this.postSurveyFlag = res[0]["postsurveystatus"];
-
-            // if(res[0]["postsurveystatus"]){
-            //
-            //   this.postSurveyFlag = false;
-            // }
-            // else{
-            //
-            //   this.postSurveyFlag = true
-            // }
-        });
-
-        this.apiService.getScoreVisualization().subscribe((res) => {
-            this.scoresCategory = res["category"];
-            this.scoreSeries = res["series"];
-            this.scorePK = res["pk"];
-            this.scoreValues = res["scores"];
-            this.scoreTopic = res["topic"];
-            this.scoreType = res["type"];
-            var categoryConcat = [];
-            var data = [];
-            var temp = 0;
-            for (var i = 0; i < this.scoresCategory.length; i++) {
-                categoryConcat.push(res["topic"][i] + " " + this.scoresCategory[i]);
-                data.push(this.scoreSeries[i]["data"]);
-                temp = temp + this.scoreSeries[i]["data"];
-            }
-            this.meanValue = temp / 4.0;
-            this.meanNumber = temp / 4.0;
-            if (this.meanValue >= 0 && this.meanValue <= 1) {
-                if (this.meanValue == 1) this.meanValue = this.columnHeadings1[0];
-                else this.meanValue = " somewhere between Cultural Destructiveness and Cultural Incapacity";
-            }
-            if (this.meanValue > 1 && this.meanValue <= 2) {
-                if (this.meanValue == 2) this.meanValue = this.columnHeadings1[1];
-                else this.meanValue = " somewhere between Cultural Incapacity and Cultural Blindness";
-            }
-            if (this.meanValue > 2 && this.meanValue <= 3) {
-                if (this.meanValue == 3) this.meanValue = this.columnHeadings1[2];
-                else this.meanValue = " somewhere between Cultural Blindness and Cultural PreCompetence";
-            }
-            if (this.meanValue > 3 && this.meanValue <= 4) {
-                if (this.meanValue == 4) this.meanValue = this.columnHeadings1[3];
-                else this.meanValue = " somewhere between Cultural PreCompetence and Cultural Competence";
-            }
-            if (this.meanValue > 4 && this.meanValue <= 5) {
-                if (this.meanValue == 5) this.meanValue = this.columnHeadings1[4];
-                else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
-            }
-            if (this.meanValue > 5) {
-                if (this.meanValue == 5) this.meanValue = this.columnHeadings1[4];
-                else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
-            }
-            this.chartOptionsInitial(
-                this.dialog,
-                categoryConcat,
-                data,
-                this.scoresCategory,
-                this.scoreSeries,
-                this.scorePK,
-                this.scoreValues,
-                this.scoreTopic,
-                this.scoreType
-            );
-        });
-
-        this.startTime = new Date();
-        this.finalFeedbackForm = this.fb.group({
-            q1: [""],
-            q2: [""],
-            q3: [""],
-            q4: [""],
-            q5: [""],
-            q6: [""],
-            q7: [""],
-        });
-        this.apiService.getResponsesData().subscribe((res) => {
-            for (let key in res) {
-                this.temp = [];
-                for (let key1 in res[key]) {
-                    this.temp.push(res[key][key1]);
-                }
-                this.responsesArray.push(this.temp);
-            }
-        });
-
-        this.apiService.getScoreInfo().subscribe((res) => {
-            this.scoreRes = res;
-
-            for (let key in res) {
-                for (let category in res[key]["scores"]["category"]) {
-                    var firstIndex = this.attributes.indexOf(res[key]["topic"]);
-
-                    var secondIndex = this.columnHeadings.indexOf(res[key]["scores"]["category"][category]);
-
-                    if (firstIndex != -1 && secondIndex != -1) {
-                        this.responsesArray[firstIndex][secondIndex][1] = "Colored";
-                    }
-                }
-            }
-        });
-
-        this.apiService.attitudeData().subscribe(
-            (res) => {
-                //
-                this.attitude = res[0];
-                //
-            },
-            (err) => {}
-        );
-
-        this.apiService.empathyData().subscribe(
-            (res) => {
-                //
-                this.empathy = res[0];
-                //
-            },
-            (err) => {}
-        );
-
-        this.apiService.policyData().subscribe(
-            (res) => {
-                this.policy = res[0];
-            },
-            (err) => {}
-        );
-
-        this.apiService.professionalismData().subscribe(
-            (res) => {
-                this.professionalism = res[0];
-            },
-            (err) => {}
-        );
-
-        this.apiService.teachingData().subscribe(
-            (res) => {
-                this.teachingPractice = res[0];
-            },
-            (err) => {}
-        );
-
-        this.attitudeForm = this.fb.group({
-            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            description: ["", [Validators.required]],
-        });
-
-        this.empathyForm = this.fb.group({
-            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-        });
-
-        this.policyForm = this.fb.group({
-            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-        });
-
-        var arr = [];
-        var arr1 = [];
-        var arr2 = [];
-        var i;
-        for (var j = 0; j < 5; j++) {
-            arr = [];
-            arr1 = [];
-            arr2 = [];
-            i = 0;
-            while (i < 6) {
-                var item1 = Math.floor(Math.random() * (7 - 1) + 1);
-                if (arr1.indexOf(item1) == -1) {
-                    if (i == 0) {
-                        arr.push(this.attributes[j]);
-                        arr.push(this.rowLetters[j][i] + ". " + item1);
-                        arr1.push(item1);
-                        if (arr1[arr1.length - 1] > 2) {
-                            //
-                            arr2.push("True");
-                        } else {
-                            arr2.push("False");
-                        }
-                    } else {
-                        arr.push(this.rowLetters[j][i] + ". " + item1);
-                        arr1.push(item1);
-                        if (i == 1) {
-                            if (arr1[arr1.length - 1] > 3) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        } else if (i == 2) {
-                            if (arr1[arr1.length - 1] > 4 || arr1[arr1.length - 1] == 1) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        } else if (i == 3) {
-                            if (arr1[arr1.length - 1] > 5 || arr1[arr1.length - 1] < 4) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        } else if (i == 4) {
-                            if (arr1[arr1.length - 1] < 4) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        } else if (i == 5) {
-                            if (arr1[arr1.length - 1] < 5) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        }
-                    }
-                    i = i + 1;
-                } else {
-                    continue;
-                }
-            }
-            this.formValues.push(arr);
-            this.boldList.push(arr1);
-            this.randomList.push(arr2);
-        }
-        this.boldList.splice(0, 1);
-        this.randomList.splice(0, 1);
-
-        this.getAllIndexes(this.randomList, "True");
-        this.loaded = true;
+    // this.finalList1.splice(0,1)
+  }
+  preSurvey() {
+    this.router.navigateByUrl("/preSurvey");
+  }
+
+  nextButton() {
+    if (this.selectedIndex == 0) {
+      this.selectedIndex = this.selectedIndex + 1;
+      return;
+    }
+    if (this.selectedIndex == 7) {
+      this.router.navigateByUrl("/dashboard");
+      return;
     }
 
-    getAllIndexes(arr, val) {
-        var indexes = [];
-        var i = -1;
-        for (var i = 0; i < arr.length; i++) {
-            for (var j = 0; j < arr[i].length; j++) {
-                if (arr[i][j] == "True") {
-                    var arr1 = [];
-                    arr1.push(i);
-                    arr1.push(j);
-                    indexes.push(arr1);
-                }
-            }
-        }
-
-        var arr1 = [];
-        for (var i = 0; i < indexes.length; i++) {
-            arr1.push(i);
-        }
-        var ranNums = [];
-        var i = arr1.length;
-        var j = 0;
-        var count = 0;
-        while (i--) {
-            if (count < 5) {
-                j = Math.floor(Math.random() * (i + 1));
-                ranNums.push(arr1[j]);
-                arr1.splice(j, 1);
-                count = count + 1;
-            } else {
-                break;
-            }
-        }
-
-        //
-        for (var i = 0; i < this.boldList.length; i++) {
-            var temp = [];
-            for (var j = 0; j < 6; j++) {
-                temp.push("False");
-            }
-            this.finalList1.push(temp);
-        }
-
-        for (var i = 0; i < ranNums.length; i++) {
-            var item = indexes[ranNums[i]];
-
-            this.finalList1[item[0]][item[1]] = "True";
-        }
-        // this.finalList1.splice(0,1)
+    var numberList = [];
+    var flag = true;
+    for (let key in this.attitudeForm.value) {
+      if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
+        flag = false;
+        Swal.fire({
+          text: "Please enter values from 1 through 6 only.",
+          icon: "warning",
+        }).then((res) => {});
+        break;
+      }
+      if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
+        numberList.push(this.attitudeForm.value[key]);
+      } else {
+        flag = false;
+        Swal.fire({
+          text: "The inputs have been repeated. Please enter values from 1 through 6.",
+          icon: "warning",
+        }).then((res) => {});
+        break;
+      }
     }
-    preSurvey() {
-        this.router.navigateByUrl("/preSurvey");
+    if (!this.buttonClick) {
+      flag = false;
+      Swal.fire({
+        text: "Click on the word '" + this.attributes[this.selectedIndex - 1] + "' and respond to the prompt.",
+        icon: "warning",
+      }).then((res) => {});
     }
-
-    nextButton() {
-        if (this.selectedIndex == 0) {
-            this.selectedIndex = this.selectedIndex + 1;
-            return;
-        }
-        if (this.selectedIndex == 7) {
-            this.router.navigateByUrl("/dashboard");
-            return;
-        }
-
-        var numberList = [];
-        var flag = true;
-        for (let key in this.attitudeForm.value) {
-            if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
-                flag = false;
-                Swal.fire({
-                    text: "Please enter values from 1 through 6 only.",
-                    icon: "warning",
-                }).then((res) => {});
-                break;
-            }
-            if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
-                numberList.push(this.attitudeForm.value[key]);
-            } else {
-                flag = false;
-                Swal.fire({
-                    text: "The inputs have been repeated. Please enter values from 1 through 6.",
-                    icon: "warning",
-                }).then((res) => {});
-                break;
-            }
+    if (flag) {
+      if (this.selectedIndex == 7) {
+        this.router.navigateByUrl("/postSurvey");
+      }
+      this.sliderFunction1();
+      var formData = {};
+      formData["topic"] = this.attributes[this.selectedIndex - 1];
+      if (this.attributes[this.selectedIndex - 1] == "Attitude") {
+        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalCompetence"] = "F. " + this.attitudeForm.value["F"];
+        formData["culturalProficiency"] = "E. " + this.attitudeForm.value["E"];
+      } else if (this.attributes[this.selectedIndex - 1] == "Empathy") {
+        formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalBlindness"] = "F. " + this.attitudeForm.value["F"];
+        formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalCompetence"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalProficiency"] = "C. " + this.attitudeForm.value["C"];
+      } else if (this.attributes[this.selectedIndex - 1] == "Policy") {
+        formData["culturalDestructiveness"] = "F. " + this.attitudeForm.value["F"];
+        formData["culturalIncapacity"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalCompetence"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalProficiency"] = "A. " + this.attitudeForm.value["A"];
+      } else if (this.attributes[this.selectedIndex - 1] == "Professionalism") {
+        formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalCompetence"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+      } else if (this.attributes[this.selectedIndex - 1] == "Teaching Practice") {
+        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+      }
+
+      this.endTime = new Date();
+
+      this.durationTime = (this.endTime - this.startTime) / 1000;
+      this.durationTime = this.durationTime / 60;
+
+      formData["description"] = this.wordDescription;
+      formData["duration"] = this.durationTime;
+      this.apiService.postFormData(formData).subscribe(
+        (res) => {
+          //
+        },
+        (err) => {}
+      );
+      // this.getForm();
+      this.selectedIndex = this.selectedIndex + 1;
+      this.buttonClick = false;
+      this.startTime = new Date();
+      this.attitudeForm = this.fb.group({
+        A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      });
+    }
+  }
+
+  postSurvey() {
+    this.router.navigateByUrl("/postSurvey");
+  }
+
+  submitForm1() {
+    if (this.unpackedCount == 5) {
+      this.endTime = new Date();
+
+      this.durationTime = (this.endTime - this.startTime) / 1000;
+      this.durationTime = this.durationTime / 60;
+
+      Swal.fire({
+        text: "Submitted",
+        icon: "success",
+      }).then((res) => {
+        if (res["isConfirmed"]) {
+          // this.getForm()
+          this.selectedIndex = this.selectedIndex + 1;
         }
-        if (!this.buttonClick) {
-            flag = false;
-            Swal.fire({
-                text: "Click on the word '" + this.attributes[this.selectedIndex - 1] + "' and respond to the prompt.",
-                icon: "warning",
-            }).then((res) => {});
+      });
+    } else {
+      Swal.fire({
+        text: "Please click on all the yellow boxes and answer the questions in the prompt.",
+        icon: "warning",
+      }).then((res) => {});
+    }
+  }
+
+  submitForm() {
+    if (this.selectedIndex == 5) {
+      var numberList = [];
+      var flag = false;
+
+      for (let key in this.attitudeForm.value) {
+        if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
+          flag = true;
+          Swal.fire({
+            text: "Please enter values from 1 through 6 only.",
+            icon: "warning",
+          }).then((res) => {});
+          break;
         }
-        if (flag) {
-            if (this.selectedIndex == 7) {
-                this.router.navigateByUrl("/postSurvey");
-            }
-            this.sliderFunction1();
-            var formData = {};
-            formData["topic"] = this.attributes[this.selectedIndex - 1];
-            if (this.attributes[this.selectedIndex - 1] == "Attitude") {
-                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalCompetence"] = "F. " + this.attitudeForm.value["F"];
-                formData["culturalProficiency"] = "E. " + this.attitudeForm.value["E"];
-            } else if (this.attributes[this.selectedIndex - 1] == "Empathy") {
-                formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalBlindness"] = "F. " + this.attitudeForm.value["F"];
-                formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalCompetence"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalProficiency"] = "C. " + this.attitudeForm.value["C"];
-            } else if (this.attributes[this.selectedIndex - 1] == "Policy") {
-                formData["culturalDestructiveness"] = "F. " + this.attitudeForm.value["F"];
-                formData["culturalIncapacity"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalCompetence"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalProficiency"] = "A. " + this.attitudeForm.value["A"];
-            } else if (this.attributes[this.selectedIndex - 1] == "Professionalism") {
-                formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalCompetence"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
-            } else if (this.attributes[this.selectedIndex - 1] == "Teaching Practice") {
-                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
-            }
-
-            this.endTime = new Date();
-
-            this.durationTime = (this.endTime - this.startTime) / 1000;
-            this.durationTime = this.durationTime / 60;
-
-            formData["description"] = this.wordDescription;
-            formData["duration"] = this.durationTime;
-            this.apiService.postFormData(formData).subscribe(
-                (res) => {
-                    //
-                },
-                (err) => {}
-            );
-            // this.getForm();
-            this.selectedIndex = this.selectedIndex + 1;
-            this.buttonClick = false;
-            this.startTime = new Date();
-            this.attitudeForm = this.fb.group({
-                A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            });
+        if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
+          numberList.push(this.attitudeForm.value[key]);
+        } else {
+          flag = true;
+          Swal.fire({
+            text: "The inputs have been repeated. Please enter values from 1 through 6.",
+            icon: "warning",
+          }).then((res) => {});
+          break;
         }
-    }
+      }
+      if (!this.buttonClick) {
+        flag = true;
+        Swal.fire({
+          text: "Click on the word '" + this.attributes[this.selectedIndex - 1] + "' and respond to the prompt.",
+          icon: "warning",
+        }).then((res) => {});
+      }
+      if (!flag) {
+        //
+        var formData = {};
 
-    postSurvey() {
-        this.router.navigateByUrl("/postSurvey");
-    }
+        formData["topic"] = this.attributes[this.selectedIndex - 1];
+        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
 
-    submitForm1() {
-        if (this.unpackedCount == 5) {
-            this.endTime = new Date();
+        formData["description"] = this.wordDescription;
+        this.endTime = new Date();
 
-            this.durationTime = (this.endTime - this.startTime) / 1000;
-            this.durationTime = this.durationTime / 60;
+        this.durationTime = (this.endTime - this.startTime) / 1000;
+        this.durationTime = this.durationTime / 60;
 
+        formData["duration"] = this.durationTime;
+        this.apiService.postFormData(formData).subscribe(
+          (res) => {
+            //
             Swal.fire({
-                text: "Submitted",
-                icon: "success",
+              text: "Submitted",
+              icon: "success",
             }).then((res) => {
-                if (res["isConfirmed"]) {
-                    // this.getForm()
-                    this.selectedIndex = this.selectedIndex + 1;
-                }
-            });
-        } else {
-            Swal.fire({
-                text: "Please click on all the yellow boxes and answer the questions in the prompt.",
-                icon: "warning",
-            }).then((res) => {});
-        }
-    }
+              if (res["isConfirmed"]) {
+                // this.getForm()
+                this.getResponses();
 
-    submitForm() {
-        if (this.selectedIndex == 5) {
-            var numberList = [];
-            var flag = false;
-
-            for (let key in this.attitudeForm.value) {
-                if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
-                    flag = true;
-                    Swal.fire({
-                        text: "Please enter values from 1 through 6 only.",
-                        icon: "warning",
-                    }).then((res) => {});
-                    break;
-                }
-                if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
-                    numberList.push(this.attitudeForm.value[key]);
-                } else {
-                    flag = true;
-                    Swal.fire({
-                        text: "The inputs have been repeated. Please enter values from 1 through 6.",
-                        icon: "warning",
-                    }).then((res) => {});
-                    break;
-                }
-            }
-            if (!this.buttonClick) {
-                flag = true;
-                Swal.fire({
-                    text:
-                        "Click on the word '" +
-                        this.attributes[this.selectedIndex - 1] +
-                        "' and respond to the prompt.",
-                    icon: "warning",
-                }).then((res) => {});
-            }
-            if (!flag) {
-                //
-                var formData = {};
-
-                formData["topic"] = this.attributes[this.selectedIndex - 1];
-                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
-
-                formData["description"] = this.wordDescription;
-                this.endTime = new Date();
-
-                this.durationTime = (this.endTime - this.startTime) / 1000;
-                this.durationTime = this.durationTime / 60;
-
-                formData["duration"] = this.durationTime;
-                this.apiService.postFormData(formData).subscribe(
-                    (res) => {
-                        //
-                        Swal.fire({
-                            text: "Submitted",
-                            icon: "success",
-                        }).then((res) => {
-                            if (res["isConfirmed"]) {
-                                // this.getForm()
-                                this.getResponses();
-
-                                this.selectedIndex = this.selectedIndex + 1;
-                                this.startTime = new Date();
-                            }
-                        });
-                    },
-                    (err) => {}
-                );
-            }
-        }
-    }
-
-    submit() {
-        //
-        var tempDict;
-        this.responseList = [];
-        for (let key in this.firstForm.value) {
-            tempDict = {};
-            tempDict["question"] = key;
-            tempDict["response"] = this.firstForm.value[key];
-            this.responseList.push(tempDict);
-        }
-        //
-
-        this.formService.submitResponse(this.responseList).subscribe(
-            (res) => {
-                //
-                Swal.fire({
-                    text: "Submitted",
-                    icon: "success",
-                });
-                this.router.navigateByUrl("/game");
-            },
-            (err) => {
-                Swal.fire({
-                    text: "Duplicate Entries",
-                    icon: "warning",
-                });
-            }
+                this.selectedIndex = this.selectedIndex + 1;
+                this.startTime = new Date();
+              }
+            });
+          },
+          (err) => {}
         );
+      }
     }
-
-    title = "micRecorder";
-    //Lets declare Record OBJ
-    record;
-    //Will use this flag for toggeling recording
-    recording = false;
-    //URL of Blob
-    url;
-    error;
-    sanitize(url: string) {
-        return this.domSanitizer.bypassSecurityTrustUrl(url);
-    }
-    /**
-     * Start recording.
-     */
-    initiateRecording() {
-        this.recording = true;
-        let mediaConstraints = {
-            video: false,
-            audio: true,
-        };
-        navigator.mediaDevices
-            .getUserMedia(mediaConstraints)
-            .then(this.successCallback.bind(this), this.errorCallback.bind(this));
-    }
-    /**
-     * Will be called automatically.
-     */
-    successCallback(stream) {
-        var options = {
-            mimeType: "audio/wav",
-            numberOfAudioChannels: 1,
-            // sampleRate: 16000,
-        };
-        //Start Actuall Recording
-        var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
-        this.record = new StereoAudioRecorder(stream, options);
-        this.record.record();
+  }
+
+  submit() {
+    //
+    var tempDict;
+    this.responseList = [];
+    for (let key in this.firstForm.value) {
+      tempDict = {};
+      tempDict["question"] = key;
+      tempDict["response"] = this.firstForm.value[key];
+      this.responseList.push(tempDict);
     }
-    /**
-     * Stop recording.
-     */
-    stopRecording() {
-        this.recording = false;
-        this.record.stop(this.processRecording.bind(this));
-    }
-    /**
-     * processRecording Do what ever you want with blob
-     * @param  {any} blob Blog
-     */
-    processRecording(blob) {
-        this.url = URL.createObjectURL(blob);
-        //
+    //
+
+    this.formService.submitResponse(this.responseList).subscribe(
+      (res) => {
         //
-    }
-    /**
-     * Process Error.
-     */
-    errorCallback(error) {
-        this.error = "Can not play audio in your browser";
-    }
+        Swal.fire({
+          text: "Submitted",
+          icon: "success",
+        });
+        this.router.navigateByUrl("/game");
+      },
+      (err) => {
+        Swal.fire({
+          text: "Duplicate Entries",
+          icon: "warning",
+        });
+      }
+    );
+  }
+
+  title = "micRecorder";
+  //Lets declare Record OBJ
+  record;
+  //Will use this flag for toggeling recording
+  recording = false;
+  //URL of Blob
+  url;
+  error;
+  sanitize(url: string) {
+    return this.domSanitizer.bypassSecurityTrustUrl(url);
+  }
+  /**
+   * Start recording.
+   */
+  initiateRecording() {
+    this.recording = true;
+    let mediaConstraints = {
+      video: false,
+      audio: true,
+    };
+    navigator.mediaDevices
+      .getUserMedia(mediaConstraints)
+      .then(this.successCallback.bind(this), this.errorCallback.bind(this));
+  }
+  /**
+   * Will be called automatically.
+   */
+  successCallback(stream) {
+    var options = {
+      mimeType: "audio/wav",
+      numberOfAudioChannels: 1,
+      // sampleRate: 16000,
+    };
+    //Start Actuall Recording
+    var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
+    this.record = new StereoAudioRecorder(stream, options);
+    this.record.record();
+  }
+  /**
+   * Stop recording.
+   */
+  stopRecording() {
+    this.recording = false;
+    this.record.stop(this.processRecording.bind(this));
+  }
+  /**
+   * processRecording Do what ever you want with blob
+   * @param  {any} blob Blog
+   */
+  processRecording(blob) {
+    this.url = URL.createObjectURL(blob);
+    //
+    //
+  }
+  /**
+   * Process Error.
+   */
+  errorCallback(error) {
+    this.error = "Can not play audio in your browser";
+  }
 }
diff --git a/src/app/components/header/header.component.css b/src/app/components/header/header.component.css
index 66ff44b..3ce4f98 100644
--- a/src/app/components/header/header.component.css
+++ b/src/app/components/header/header.component.css
@@ -1,123 +1,123 @@
 @media screen and (min-width: 1024px) {
-    .mat-toolbar {
-        background-color: white;
-        height: 70px;
-        z-index: -1;
-        box-shadow: 3px 0 6px rgba(0, 0, 0, 0.24);
-    }
+  .mat-toolbar {
+    background-color: white;
+    height: 70px;
+    z-index: -1;
+    box-shadow: 3px 0 6px rgba(0, 0, 0, 0.24);
+  }
 }
 
 @media screen and (min-width: 992px) {
-    .mat-sidenav-container {
-        position: fixed;
-        width: 100%;
-        box-shadow: 6px 0 6px rgb(206, 206, 206);
-    }
+  .mat-sidenav-container {
+    position: fixed;
+    width: 100%;
+    box-shadow: 6px 0 6px rgb(206, 206, 206);
+  }
 }
 
 @media screen and (max-width: 1023px) {
-    .mat-toolbar {
-        background-color: white;
-        height: 70px;
-        z-index: -1;
-        box-shadow: 3px 0 6px rgba(0, 0, 0, 0.24);
-    }
+  .mat-toolbar {
+    background-color: white;
+    height: 70px;
+    z-index: -1;
+    box-shadow: 3px 0 6px rgba(0, 0, 0, 0.24);
+  }
 }
 
 .sidenav {
-    width: 200px;
-    box-shadow: 3px 0 6px rgba(0, 0, 0, 0.24);
-    position: fixed;
+  width: 200px;
+  box-shadow: 3px 0 6px rgba(0, 0, 0, 0.24);
+  position: fixed;
 }
 
 .hidden {
-    display: none;
+  display: none;
 }
 
 .textHeader {
-    margin-top: 15px;
-    margin-left: 5px;
-    /* color: #45087e; */
-    color: #fcb913;
-    font-size: 22px;
-    font-weight: bold;
-    font-family: "Loto", sans-serif;
+  margin-top: 15px;
+  margin-left: 5px;
+  /* color: #45087e; */
+  color: #fcb913;
+  font-size: 22px;
+  font-weight: bold;
+  font-family: "Loto", sans-serif;
 }
 
 img {
-    margin-top: 10px;
-    margin-bottom: 8px;
-    margin-left: 10px;
-    /* width: 60px; */
-    height: 60px;
+  margin-top: 10px;
+  margin-bottom: 8px;
+  margin-left: 10px;
+  /* width: 60px; */
+  height: 60px;
 }
 
 .mat-toolbar a {
-    display: inline-block;
-    color: black;
-    text-decoration: none;
-    padding: 0 20px;
-    font-size: 16px;
-    font-family: "Lato", sans-serif;
-    cursor: pointer;
-    font-weight: bold;
+  display: inline-block;
+  color: black;
+  text-decoration: none;
+  padding: 0 20px;
+  font-size: 16px;
+  font-family: "Lato", sans-serif;
+  cursor: pointer;
+  font-weight: bold;
 }
 
 .mat-toolbar a:hover,
 .mat-toolbar a:focus,
 .mat-toolbar a:active {
-    display: inline-block;
-    color: white;
-    background-color: #29abe2;
-    padding: 0 20px;
-    border-radius: 5px;
-    text-decoration: none;
-    font-size: 16px;
-    font-family: "Lato", sans-serif;
+  display: inline-block;
+  color: white;
+  background-color: #29abe2;
+  padding: 0 20px;
+  border-radius: 5px;
+  text-decoration: none;
+  font-size: 16px;
+  font-family: "Lato", sans-serif;
 }
 
 .menu {
-    text-decoration: none;
-    font-size: 16px;
-    font-family: "Lato", sans-serif;
-    color: black;
+  text-decoration: none;
+  font-size: 16px;
+  font-family: "Lato", sans-serif;
+  color: black;
 }
 
 .menu:hover,
 .menu:focus,
 .menu:active {
-    color: black;
-    text-decoration: none;
-    font-size: 16px;
-    font-family: "Lato", sans-serif;
-    border: none;
-    outline: none;
-    box-shadow: none;
+  color: black;
+  text-decoration: none;
+  font-size: 16px;
+  font-family: "Lato", sans-serif;
+  border: none;
+  outline: none;
+  box-shadow: none;
 }
 
 .mat-nav-list {
-    margin-top: 60px;
+  margin-top: 60px;
 }
 
 .mat-nav-list a {
-    display: inline-block;
-    margin: 0 10px;
-    color: black;
-    text-decoration: none;
-    font-size: 15px;
+  display: inline-block;
+  margin: 0 10px;
+  color: black;
+  text-decoration: none;
+  font-size: 15px;
 }
 
 .mat-nav-list a:hover,
 .mat-nav-list a:focus,
 .mat-nav-list a:active {
-    display: inline-block;
-    margin: 0 10px;
-    font-weight: bold;
-    text-decoration: none;
-    font-size: 15px;
+  display: inline-block;
+  margin: 0 10px;
+  font-weight: bold;
+  text-decoration: none;
+  font-size: 15px;
 }
 .profile {
-    width: 40px;
-    height: 40px;
-    border-radius: 20px;
+  width: 40px;
+  height: 40px;
+  border-radius: 20px;
 }
diff --git a/src/app/components/header/header.component.html b/src/app/components/header/header.component.html
index 2ffd31f..cc9db68 100644
--- a/src/app/components/header/header.component.html
+++ b/src/app/components/header/header.component.html
@@ -1,79 +1,69 @@
 <mat-sidenav-container class="sidenav-container">
-    <mat-sidenav
-        #drawer
-        class="sidenav"
-        fixedInViewport="false"
-        [attr.role]="((isHandset | async) || (isTablet | async)) && !(isMedium | async) ? 'dialog' : 'navigation'"
-        [mode]="((isHandset | async) || (isTablet | async)) && !(isMedium | async) ? 'over' : 'side'"
-        [opened]="(!(isHandset | async) && !(isTablet | async)) || (isMedium | async)"
-        [ngClass]="{ hidden: (isMedium | async) || (!(isHandset | async) && !(isTablet | async)) }"
-    >
-        <mat-toolbar class="matToolbar">
-            <button
-                type="button"
-                class="menu-btn"
-                aria-label="Toggle sidenav"
-                mat-icon-button
-                (click)="drawer.toggle()"
-            >
-                <mat-icon aria-label="Side nav toggle icon">close</mat-icon>
-            </button>
-        </mat-toolbar>
-        <mat-nav-list>
-            <a routerLink="/" mat-list-item>HOME</a>
-            <a routerLink="/about" mat-list-item>ABOUT US</a>
-            <a (click)="auth.loginWithRedirect()" *ngIf="!currentUser" mat-list-item>LOGIN</a>
-            <a (click)="auth.logout({ returnTo: document.location.origin })" *ngIf="currentUser" mat-list-item
-                >LOGOUT</a
-            >
+  <mat-sidenav
+    #drawer
+    class="sidenav"
+    fixedInViewport="false"
+    [attr.role]="((isHandset | async) || (isTablet | async)) && !(isMedium | async) ? 'dialog' : 'navigation'"
+    [mode]="((isHandset | async) || (isTablet | async)) && !(isMedium | async) ? 'over' : 'side'"
+    [opened]="(!(isHandset | async) && !(isTablet | async)) || (isMedium | async)"
+    [ngClass]="{ hidden: (isMedium | async) || (!(isHandset | async) && !(isTablet | async)) }"
+  >
+    <mat-toolbar class="matToolbar">
+      <button type="button" class="menu-btn" aria-label="Toggle sidenav" mat-icon-button (click)="drawer.toggle()">
+        <mat-icon aria-label="Side nav toggle icon">close</mat-icon>
+      </button>
+    </mat-toolbar>
+    <mat-nav-list>
+      <a routerLink="/" mat-list-item>HOME</a>
+      <a routerLink="/about" mat-list-item>ABOUT US</a>
+      <a (click)="auth.loginWithRedirect()" *ngIf="!currentUser" mat-list-item>LOGIN</a>
+      <a (click)="auth.logout({ returnTo: document.location.origin })" *ngIf="currentUser" mat-list-item>LOGOUT</a>
 
-            <button
-                *ngIf="currentUser"
-                mat-icon-button
-                class="example-icon favorite-icon"
-                aria-label="Example icon-button with heart icon"
-                (click)="auth.logout({ returnTo: document.location.origin })"
-            >
-                <mat-icon style="color: white">logout</mat-icon>
-            </button>
-        </mat-nav-list>
-    </mat-sidenav>
-    <mat-sidenav-content>
-        <mat-toolbar class="matToolbar">
-            <button
-                type="button"
-                class="menu-btn"
-                aria-label="Toggle sidenav"
-                mat-icon-button
-                (click)="drawer.toggle()"
-                *ngIf="((isHandset | async) || (isTablet | async)) && !(isMedium | async)"
-            >
-                <mat-icon aria-label="Side nav toggle icon">menu</mat-icon>
-            </button>
-            <span><img src="../../assets/vcu.png" /></span>
-            <span class="spacer"></span>
-            <div
-                *ngIf="(!(isHandset | async) && !(isTablet | async)) || (isMedium | async)"
-                style="margin-right: 10px; margin-left: auto"
-            >
-                <a routerLink="/" id="home" (click)="activate('home')">HOME</a>
-                <a routerLink="/about" id="about" (click)="activate('about')">ABOUT US</a>
-                <a (click)="auth.loginWithRedirect()" id="login" *ngIf="!currentUser" (click)="activate('login')"
-                    >LOGIN</a
-                >
-                <a
-                    (click)="auth.logout({ returnTo: document.location.origin })"
-                    id="logout"
-                    *ngIf="currentUser"
-                    (click)="activate('login')"
-                    >LOGOUT</a
-                >
+      <button
+        *ngIf="currentUser"
+        mat-icon-button
+        class="example-icon favorite-icon"
+        aria-label="Example icon-button with heart icon"
+        (click)="auth.logout({ returnTo: document.location.origin })"
+      >
+        <mat-icon style="color: white">logout</mat-icon>
+      </button>
+    </mat-nav-list>
+  </mat-sidenav>
+  <mat-sidenav-content>
+    <mat-toolbar class="matToolbar">
+      <button
+        type="button"
+        class="menu-btn"
+        aria-label="Toggle sidenav"
+        mat-icon-button
+        (click)="drawer.toggle()"
+        *ngIf="((isHandset | async) || (isTablet | async)) && !(isMedium | async)"
+      >
+        <mat-icon aria-label="Side nav toggle icon">menu</mat-icon>
+      </button>
+      <span><img src="../../assets/vcu.png" /></span>
+      <span class="spacer"></span>
+      <div
+        *ngIf="(!(isHandset | async) && !(isTablet | async)) || (isMedium | async)"
+        style="margin-right: 10px; margin-left: auto"
+      >
+        <a routerLink="/" id="home" (click)="activate('home')">HOME</a>
+        <a routerLink="/about" id="about" (click)="activate('about')">ABOUT US</a>
+        <a (click)="auth.loginWithRedirect()" id="login" *ngIf="!currentUser" (click)="activate('login')">LOGIN</a>
+        <a
+          (click)="auth.logout({ returnTo: document.location.origin })"
+          id="logout"
+          *ngIf="currentUser"
+          (click)="activate('login')"
+          >LOGOUT</a
+        >
 
-                <a *ngIf="currentUser">
-                    <img class="profile" src="{{ currentUser.picture }}" />
-                </a>
-            </div>
-        </mat-toolbar>
-        <ng-content></ng-content>
-    </mat-sidenav-content>
+        <a *ngIf="currentUser">
+          <img class="profile" src="{{ currentUser.picture }}" />
+        </a>
+      </div>
+    </mat-toolbar>
+    <ng-content></ng-content>
+  </mat-sidenav-content>
 </mat-sidenav-container>
diff --git a/src/app/components/header/header.component.spec.ts b/src/app/components/header/header.component.spec.ts
index 9348a51..bddd367 100644
--- a/src/app/components/header/header.component.spec.ts
+++ b/src/app/components/header/header.component.spec.ts
@@ -3,22 +3,22 @@ import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 import { HeaderComponent } from "./header.component";
 
 describe("HeaderComponent", () => {
-    let component: HeaderComponent;
-    let fixture: ComponentFixture<HeaderComponent>;
+  let component: HeaderComponent;
+  let fixture: ComponentFixture<HeaderComponent>;
 
-    beforeEach(async(() => {
-        TestBed.configureTestingModule({
-            declarations: [HeaderComponent],
-        }).compileComponents();
-    }));
+  beforeEach(async(() => {
+    TestBed.configureTestingModule({
+      declarations: [HeaderComponent],
+    }).compileComponents();
+  }));
 
-    beforeEach(() => {
-        fixture = TestBed.createComponent(HeaderComponent);
-        component = fixture.componentInstance;
-        fixture.detectChanges();
-    });
+  beforeEach(() => {
+    fixture = TestBed.createComponent(HeaderComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
 
-    it("should create", () => {
-        expect(component).toBeTruthy();
-    });
+  it("should create", () => {
+    expect(component).toBeTruthy();
+  });
 });
diff --git a/src/app/components/header/header.component.ts b/src/app/components/header/header.component.ts
index 9933349..91367fe 100644
--- a/src/app/components/header/header.component.ts
+++ b/src/app/components/header/header.component.ts
@@ -8,76 +8,76 @@ import { AuthService, User } from "@auth0/auth0-angular";
 import { DOCUMENT } from "@angular/common";
 
 @Component({
-    selector: "app-header",
-    templateUrl: "./header.component.html",
-    styleUrls: ["./header.component.css"],
+  selector: "app-header",
+  templateUrl: "./header.component.html",
+  styleUrls: ["./header.component.css"],
 })
 export class HeaderComponent implements OnInit {
-    currentUser: User;
-    isHandset: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Handset).pipe(
-        map((result) => result.matches),
-        shareReplay()
-    );
-
-    isTablet: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Tablet).pipe(
-        map((result) => result.matches),
-        shareReplay()
-    );
+  currentUser: User;
+  isHandset: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Handset).pipe(
+    map((result) => result.matches),
+    shareReplay()
+  );
 
-    isMedium: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Medium).pipe(
-        map((result) => result.matches),
-        shareReplay()
-    );
+  isTablet: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Tablet).pipe(
+    map((result) => result.matches),
+    shareReplay()
+  );
 
-    constructor(
-        @Inject(DOCUMENT) public document: Document,
-        public auth: AuthService,
-        private breakpointObserver: BreakpointObserver,
-        private router: Router,
-        private loginService: LoginService
-    ) {
-        auth.user$.subscribe((user: User) => {
-            this.currentUser = user;
-            console.log(this.currentUser);
-        });
-    }
+  isMedium: Observable<boolean> = this.breakpointObserver.observe(Breakpoints.Medium).pipe(
+    map((result) => result.matches),
+    shareReplay()
+  );
 
-    ngOnInit(): void {
-        this.auth.idTokenClaims$.subscribe(async (claims) => {
-            console.log(claims, "claims");
-            if (claims && claims?.__raw) {
-                this.loginService.getTestUsers(claims?.__raw).subscribe(
-                    (res) => {
-                        console.log("got success");
-                        console.log(res);
-                    },
-                    (error) => {
-                        console.log("got error");
-                        console.log(error);
-                    }
-                );
-            }
-        });
-    }
+  constructor(
+    @Inject(DOCUMENT) public document: Document,
+    public auth: AuthService,
+    private breakpointObserver: BreakpointObserver,
+    private router: Router,
+    private loginService: LoginService
+  ) {
+    auth.user$.subscribe((user: User) => {
+      this.currentUser = user;
+      console.log(this.currentUser);
+    });
+  }
 
-    logout() {
-        this.loginService.logout().subscribe(
-            (res) => {
-                localStorage.removeItem("token");
-                this.router.navigateByUrl("/");
-            },
-            (err) => {
-                localStorage.removeItem("token");
-                this.router.navigateByUrl("/");
-            }
+  ngOnInit(): void {
+    this.auth.idTokenClaims$.subscribe(async (claims) => {
+      console.log(claims, "claims");
+      if (claims && claims?.__raw) {
+        this.loginService.getTestUsers(claims?.__raw).subscribe(
+          (res) => {
+            console.log("got success");
+            console.log(res);
+          },
+          (error) => {
+            console.log("got error");
+            console.log(error);
+          }
         );
-    }
+      }
+    });
+  }
+
+  logout() {
+    this.loginService.logout().subscribe(
+      (res) => {
+        localStorage.removeItem("token");
+        this.router.navigateByUrl("/");
+      },
+      (err) => {
+        localStorage.removeItem("token");
+        this.router.navigateByUrl("/");
+      }
+    );
+  }
 
-    activate(e) {
-        (<HTMLInputElement>document.getElementById("home")).style.backgroundColor = "none";
-        (<HTMLInputElement>document.getElementById("about")).style.backgroundColor = "none";
-        (<HTMLInputElement>document.getElementById("login")).style.backgroundColor = "none";
-        (<HTMLInputElement>document.getElementById("logout")).style.backgroundColor = "none";
-        (<HTMLInputElement>document.getElementById(e)).style.backgroundColor = "#face70";
-    }
+  activate(e) {
+    (<HTMLInputElement>document.getElementById("home")).style.backgroundColor = "none";
+    (<HTMLInputElement>document.getElementById("about")).style.backgroundColor = "none";
+    (<HTMLInputElement>document.getElementById("login")).style.backgroundColor = "none";
+    (<HTMLInputElement>document.getElementById("logout")).style.backgroundColor = "none";
+    (<HTMLInputElement>document.getElementById(e)).style.backgroundColor = "#face70";
+  }
 }
diff --git a/src/app/components/home-page/home-page.component.css b/src/app/components/home-page/home-page.component.css
index ed28b11..c714794 100644
--- a/src/app/components/home-page/home-page.component.css
+++ b/src/app/components/home-page/home-page.component.css
@@ -1,485 +1,485 @@
 h1 {
-    font-size: 40px;
-    padding-bottom: 40px;
+  font-size: 40px;
+  padding-bottom: 40px;
 }
 
 .example-card {
-    width: 60%;
-    text-align: center;
-    margin-left: 20%;
+  width: 60%;
+  text-align: center;
+  margin-left: 20%;
 }
 
 .sectionClass {
-    background-color: #fff1e6;
+  background-color: #fff1e6;
 }
 
 .example-card1 {
-    width: 100%;
-    text-align: center;
-    margin-top: 100px;
+  width: 100%;
+  text-align: center;
+  margin-top: 100px;
 }
 
 .text-label {
-    font-size: 20px;
-    /* font-family: Arial, Helvetica, sans-serif; */
-    font-family: "Loto", sans-serif;
-    font-weight: 300;
-    padding-right: 10px;
-    margin-right: 20%;
+  font-size: 20px;
+  /* font-family: Arial, Helvetica, sans-serif; */
+  font-family: "Loto", sans-serif;
+  font-weight: 300;
+  padding-right: 10px;
+  margin-right: 20%;
 }
 
 .btn-custom {
-    background-color: #00b4d8;
-    width: 30%;
-    font-size: 20px;
+  background-color: #00b4d8;
+  width: 30%;
+  font-size: 20px;
 }
 
 .matcard-Div {
-    padding-top: 10%;
+  padding-top: 10%;
 }
 
 input::-webkit-outer-spin-button,
 input::-webkit-inner-spin-button {
-    -webkit-appearance: none;
-    margin: 0;
+  -webkit-appearance: none;
+  margin: 0;
 }
 
 /* Firefox */
 
 input[type="number"] {
-    -moz-appearance: textfield;
+  -moz-appearance: textfield;
 }
 
 ul {
-    display: block;
-    list-style-type: disc;
-    margin-block-start: 1em;
-    margin-block-end: 1em;
-    margin-inline-start: 0px;
-    margin-inline-end: 0px;
-    padding-inline-start: 40px;
+  display: block;
+  list-style-type: disc;
+  margin-block-start: 1em;
+  margin-block-end: 1em;
+  margin-inline-start: 0px;
+  margin-inline-end: 0px;
+  padding-inline-start: 40px;
 }
 
 li {
-    font-size: 30px;
+  font-size: 30px;
 }
 
 @media screen and (min-width: 992px) {
-    .home-wrap {
-        padding-top: 70px;
-    }
+  .home-wrap {
+    padding-top: 70px;
+  }
 }
 
 .home-wrap {
-    padding-bottom: 200px;
+  padding-bottom: 200px;
 }
 
 .home {
-    background-color: white;
+  background-color: white;
 }
 
 .buttons {
-    display: inline-block;
+  display: inline-block;
 }
 
 @media screen and (min-width: 1024px) {
-    .overlay {
-        padding: 60px !important;
-        text-align: center;
-    }
-    .intro {
-        margin-top: 130px;
-        font-family: "Lato", sans-serif;
-        color: #283618;
-        font-size: 50px;
-        /* text-shadow: 4px 4px 8px rgba(202, 199, 199, 0.95); */
-        margin-bottom: 0 !important;
-    }
-    .tag {
-        font-family: "Lato", sans-serif;
-        color: #3c096c;
-        font-size: 20px;
-        font-style: italic;
-        margin-top: 20px;
-        /* text-shadow: 4px 4px 8px rgba(202, 199, 199, 0.95); */
-        margin-bottom: 0 !important;
-    }
-    .btn {
-        color: white;
-        font-family: "Lato", sans-serif;
-        padding: 10px;
-        border-radius: 5px;
-        /* width: 200px; */
-        font-size: 20px;
-        margin-top: 30px;
-        margin-right: 10px;
-        margin-left: 10px;
-    }
-    .slides {
-        margin-top: 80px;
-        width: 100%;
-        height: 500px;
-    }
+  .overlay {
+    padding: 60px !important;
+    text-align: center;
+  }
+  .intro {
+    margin-top: 130px;
+    font-family: "Lato", sans-serif;
+    color: #283618;
+    font-size: 50px;
+    /* text-shadow: 4px 4px 8px rgba(202, 199, 199, 0.95); */
+    margin-bottom: 0 !important;
+  }
+  .tag {
+    font-family: "Lato", sans-serif;
+    color: #3c096c;
+    font-size: 20px;
+    font-style: italic;
+    margin-top: 20px;
+    /* text-shadow: 4px 4px 8px rgba(202, 199, 199, 0.95); */
+    margin-bottom: 0 !important;
+  }
+  .btn {
+    color: white;
+    font-family: "Lato", sans-serif;
+    padding: 10px;
+    border-radius: 5px;
+    /* width: 200px; */
+    font-size: 20px;
+    margin-top: 30px;
+    margin-right: 10px;
+    margin-left: 10px;
+  }
+  .slides {
+    margin-top: 80px;
+    width: 100%;
+    height: 500px;
+  }
 }
 
 ::ng-deep .mat-tab-header {
-    display: none !important;
+  display: none !important;
 }
 
 .mat-tab-group {
-    position: sticky;
+  position: sticky;
 }
 
 @media screen and (max-width: 1023px) and (min-width: 480px) {
-    .overlay {
-        padding: 20px 20px 60px 20px !important;
-        text-align: center;
-    }
-    .intro {
-        font-weight: bold;
-        font-family: "Lato", sans-serif;
-        font-size: 50px;
-        padding: 10px;
-        color: #3c096c;
-        margin: 0 !important;
-    }
-    .tag {
-        font-family: "Lato", sans-serif;
-        color: #3c096c;
-        font-size: 16px;
-        font-style: italic;
-        /* text-shadow: 4px 4px 8px rgba(202, 199, 199, 0.95); */
-        margin: 0 !important;
-    }
-    .slides {
-        width: 100%;
-        height: 400px;
-        overflow: hidden;
-    }
-    .btn {
-        background-color: black;
-        color: white;
-        font-family: "Lato", sans-serif;
-        padding: 2px;
-        /* width: 200px; */
-        border-radius: 5px;
-        margin-top: 30px;
-        margin-right: 10px;
-    }
+  .overlay {
+    padding: 20px 20px 60px 20px !important;
+    text-align: center;
+  }
+  .intro {
+    font-weight: bold;
+    font-family: "Lato", sans-serif;
+    font-size: 50px;
+    padding: 10px;
+    color: #3c096c;
+    margin: 0 !important;
+  }
+  .tag {
+    font-family: "Lato", sans-serif;
+    color: #3c096c;
+    font-size: 16px;
+    font-style: italic;
+    /* text-shadow: 4px 4px 8px rgba(202, 199, 199, 0.95); */
+    margin: 0 !important;
+  }
+  .slides {
+    width: 100%;
+    height: 400px;
+    overflow: hidden;
+  }
+  .btn {
+    background-color: black;
+    color: white;
+    font-family: "Lato", sans-serif;
+    padding: 2px;
+    /* width: 200px; */
+    border-radius: 5px;
+    margin-top: 30px;
+    margin-right: 10px;
+  }
 }
 
 @media screen and (max-width: 479px) {
-    .overlay {
-        padding: 20px 20px 60px 20px !important;
-        text-align: center;
-    }
-    .intro {
-        font-weight: bold;
-        font-family: "Lato", sans-serif;
-        font-size: 30px;
-        padding: 10px;
-        color: #3c096c;
-        margin: 0 !important;
-    }
-    .tag {
-        font-family: "Lato", sans-serif;
-        color: #3c096c;
-        font-size: 18px;
-        font-style: italic;
-        /* text-shadow: 4px 4px 8px rgba(202, 199, 199, 0.95); */
-        margin: 0 !important;
-    }
-    .slides {
-        width: 100%;
-        height: 400px;
-        overflow: hidden;
-    }
-    .btn {
-        color: white;
-        font-family: "Lato", sans-serif;
-        padding: 2px;
-        /* width: 200px; */
-        border-radius: 5px;
-        margin-top: 10px;
-    }
+  .overlay {
+    padding: 20px 20px 60px 20px !important;
+    text-align: center;
+  }
+  .intro {
+    font-weight: bold;
+    font-family: "Lato", sans-serif;
+    font-size: 30px;
+    padding: 10px;
+    color: #3c096c;
+    margin: 0 !important;
+  }
+  .tag {
+    font-family: "Lato", sans-serif;
+    color: #3c096c;
+    font-size: 18px;
+    font-style: italic;
+    /* text-shadow: 4px 4px 8px rgba(202, 199, 199, 0.95); */
+    margin: 0 !important;
+  }
+  .slides {
+    width: 100%;
+    height: 400px;
+    overflow: hidden;
+  }
+  .btn {
+    color: white;
+    font-family: "Lato", sans-serif;
+    padding: 2px;
+    /* width: 200px; */
+    border-radius: 5px;
+    margin-top: 10px;
+  }
 }
 
 .row {
-    margin: 0 !important;
-    padding: 0 !important;
+  margin: 0 !important;
+  padding: 0 !important;
 }
 
 .col-lg-6 {
-    padding: 0 !important;
+  padding: 0 !important;
 }
 
 .test {
-    background-color: black;
+  background-color: black;
 }
 
 .test h2 {
-    color: white;
-    font-family: "Lato", sans-serif;
-    margin: 0 !important;
-    padding: 30px 20px;
-    text-align: center;
-    font-size: 18px;
+  color: white;
+  font-family: "Lato", sans-serif;
+  margin: 0 !important;
+  padding: 30px 20px;
+  text-align: center;
+  font-size: 18px;
 }
 
 .test-btn {
-    cursor: pointer;
+  cursor: pointer;
 }
 
 .test-btn:hover,
 .test-btn:focus {
-    outline: none;
-    box-shadow: none;
+  outline: none;
+  box-shadow: none;
 }
 
 .content-div {
-    padding: 40px;
+  padding: 40px;
 }
 
 .vision {
-    background-color: #3c096c;
+  background-color: #3c096c;
 }
 
 .mission {
-    background-color: #00ab96;
+  background-color: #00ab96;
 }
 
 .content {
-    background-color: #f5f5f6;
+  background-color: #f5f5f6;
 }
 
 h1 {
-    padding-top: 40px;
-    text-align: center;
-    font-size: 40px;
-    color: white;
-    font-family: "Lato", sans-serif;
-    text-align: center;
+  padding-top: 40px;
+  text-align: center;
+  font-size: 40px;
+  color: white;
+  font-family: "Lato", sans-serif;
+  text-align: center;
 }
 
 p {
-    margin-top: 40px;
-    margin-bottom: 40px;
-    text-align: center;
-    color: white;
-    font-family: "Lato", sans-serif;
-    text-align: center;
-    font-size: 16px;
-    line-height: 150%;
+  margin-top: 40px;
+  margin-bottom: 40px;
+  text-align: center;
+  color: white;
+  font-family: "Lato", sans-serif;
+  text-align: center;
+  font-size: 16px;
+  line-height: 150%;
 }
 
 .content h1,
 .about h1 {
-    color: rgb(65, 64, 64);
-    font-size: 35px;
-    line-height: 150%;
+  color: rgb(65, 64, 64);
+  font-size: 35px;
+  line-height: 150%;
 }
 
 .content p {
-    color: rgb(65, 64, 64);
+  color: rgb(65, 64, 64);
 }
 
 .btn:hover,
 .btn:focus {
-    background-color: #f5f5f6 !important;
-    color: black;
-    outline: none;
-    box-shadow: none;
+  background-color: #f5f5f6 !important;
+  color: black;
+  outline: none;
+  box-shadow: none;
 }
 
 .about {
-    margin: 40px;
-    text-align: center;
+  margin: 40px;
+  text-align: center;
 }
 
 .detail {
-    margin-top: 40px !important;
+  margin-top: 40px !important;
 }
 
 .blog,
 .feedback,
 .video {
-    margin-top: 80px;
-    position: sticky;
+  margin-top: 80px;
+  position: sticky;
 }
 
 @media screen and (min-width: 1024px) {
-    .blog-img {
-        width: 80%;
-        height: 450px;
-        box-shadow: 10px 11px 46px 0px rgba(15, 8, 49, 0.2);
-    }
+  .blog-img {
+    width: 80%;
+    height: 450px;
+    box-shadow: 10px 11px 46px 0px rgba(15, 8, 49, 0.2);
+  }
 }
 
 @media screen and (max-width: 1023px) {
-    .blog-img {
-        width: 100%;
-        height: 380px;
-        box-shadow: 10px 11px 46px 0px rgba(15, 8, 49, 0.2);
-    }
+  .blog-img {
+    width: 100%;
+    height: 380px;
+    box-shadow: 10px 11px 46px 0px rgba(15, 8, 49, 0.2);
+  }
 }
 
 @media screen and (max-width: 967px) {
-    .blog-content {
-        margin-top: 50px;
-    }
+  .blog-content {
+    margin-top: 50px;
+  }
 }
 
 .blog-content h2 {
-    font-size: 30px;
-    color: black;
-    font-family: "Lato", sans-serif;
-    font-weight: bold;
-    line-height: 150%;
+  font-size: 30px;
+  color: black;
+  font-family: "Lato", sans-serif;
+  font-weight: bold;
+  line-height: 150%;
 }
 
 .blog-content h5 {
-    font-size: 20px;
-    font-family: "Lato", sans-serif;
-    color: rgb(190, 190, 190);
+  font-size: 20px;
+  font-family: "Lato", sans-serif;
+  color: rgb(190, 190, 190);
 }
 
 .blog-content p {
-    height: 210px;
-    font-family: "Lato", sans-serif;
-    text-align: left;
-    margin-top: 20px;
-    line-height: 150%;
-    font-size: 16px;
-    overflow: hidden;
-    color: rgb(59, 59, 59);
+  height: 210px;
+  font-family: "Lato", sans-serif;
+  text-align: left;
+  margin-top: 20px;
+  line-height: 150%;
+  font-size: 16px;
+  overflow: hidden;
+  color: rgb(59, 59, 59);
 }
 
 .blog-btn {
-    background-color: #00ab96;
-    color: white;
-    font-family: "Lato", sans-serif;
-    margin-top: 30px;
-    font-size: 15px;
+  background-color: #00ab96;
+  color: white;
+  font-family: "Lato", sans-serif;
+  margin-top: 30px;
+  font-size: 15px;
 }
 
 .blog-btn:hover,
 .blog-btn:focus {
-    outline: none;
-    box-shadow: 4px 4px 8px rgba(202, 199, 199, 0.2);
-    transform: scale(1.1);
+  outline: none;
+  box-shadow: 4px 4px 8px rgba(202, 199, 199, 0.2);
+  transform: scale(1.1);
 }
 
 .feedback {
-    background-color: #f5f5f6;
-    position: sticky;
+  background-color: #f5f5f6;
+  position: sticky;
 }
 
 .feedback h1 {
-    padding-top: 60px;
-    padding-bottom: 40px;
-    color: rgb(65, 64, 64);
-    margin-bottom: 0 !important;
-    font-family: "Lato", sans-serif;
-    font-size: 36px;
+  padding-top: 60px;
+  padding-bottom: 40px;
+  color: rgb(65, 64, 64);
+  margin-bottom: 0 !important;
+  font-family: "Lato", sans-serif;
+  font-size: 36px;
 }
 
 .feedback p {
-    font-size: 22px;
-    text-align: center;
-    font-style: italic;
-    color: #3c096c;
-    padding-bottom: 30px;
-    font-family: "Lato", sans-serif;
+  font-size: 22px;
+  text-align: center;
+  font-style: italic;
+  color: #3c096c;
+  padding-bottom: 30px;
+  font-family: "Lato", sans-serif;
 }
 
 ::ng-deep .feedback .carousel-control-next-icon,
 ::ng-deep .feedback .carousel-control-prev-icon {
-    display: none !important;
+  display: none !important;
 }
 
 .video {
-    margin-top: 80px;
-    margin-bottom: 40px;
+  margin-top: 80px;
+  margin-bottom: 40px;
 }
 
 .video-content h2 {
-    margin-top: 30px;
-    font-size: 30px;
-    line-height: 150%;
-    color: black;
-    font-family: "Lato", sans-serif;
+  margin-top: 30px;
+  font-size: 30px;
+  line-height: 150%;
+  color: black;
+  font-family: "Lato", sans-serif;
 }
 
 .video-content p {
-    font-family: "Lato", sans-serif;
-    text-align: left;
-    margin-top: 20px;
-    line-height: 150%;
-    font-size: 16px;
-    overflow: hidden;
-    color: rgb(59, 59, 59);
+  font-family: "Lato", sans-serif;
+  text-align: left;
+  margin-top: 20px;
+  line-height: 150%;
+  font-size: 16px;
+  overflow: hidden;
+  color: rgb(59, 59, 59);
 }
 
 .collaborations {
-    margin-top: 60px;
-    padding-right: 70px;
-    position: sticky;
+  margin-top: 60px;
+  padding-right: 70px;
+  position: sticky;
 }
 
 .collaborations h1 {
-    font-family: "Lato", sans-serif;
-    color: #3c096c;
-    font-size: 35px;
-    /* text-shadow: 4px 4px 8px rgba(202, 199, 199, 0.95); */
-    margin-bottom: 0 !important;
+  font-family: "Lato", sans-serif;
+  color: #3c096c;
+  font-size: 35px;
+  /* text-shadow: 4px 4px 8px rgba(202, 199, 199, 0.95); */
+  margin-bottom: 0 !important;
 }
 
 .collaborations .mat-card {
-    text-align: center;
-    margin: 20px;
-    padding: 30px;
+  text-align: center;
+  margin: 20px;
+  padding: 30px;
 }
 
 .collaborations img {
-    display: inline-block;
+  display: inline-block;
 }
 
 @media screen and (min-width: 1024px) {
-    .contact-wrap {
-        margin-top: 10px;
-        margin-bottom: 50px;
-        background-color: #f0efeb;
-    }
+  .contact-wrap {
+    margin-top: 10px;
+    margin-bottom: 50px;
+    background-color: #f0efeb;
+  }
 }
 
 .outer-div {
-    text-align: center;
+  text-align: center;
 }
 
 .buttons {
-    margin-top: 10px !important;
-    text-align: center;
-    margin-bottom: 10px !important;
+  margin-top: 10px !important;
+  text-align: center;
+  margin-bottom: 10px !important;
 }
 
 .mat-input-element {
-    margin-top: 15px;
+  margin-top: 15px;
 }
 
 ::ng-deep .contact-wrap .mat-form-field {
-    background-color: #ffffff;
-    border-radius: 50px;
-    color: black;
-    box-shadow: 3px 5px 5px 0px rgba(98, 96, 107, 0.2);
-    margin-bottom: 30px;
+  background-color: #ffffff;
+  border-radius: 50px;
+  color: black;
+  box-shadow: 3px 5px 5px 0px rgba(98, 96, 107, 0.2);
+  margin-bottom: 30px;
 }
 
 .textAreaClass {
-    border-radius: 10px;
+  border-radius: 10px;
 }
 
 ::ng-deep .contact-wrap .mat-form-field-infix {
-    padding: 0 !important;
-    border: none !important;
-    box-shadow: black;
+  padding: 0 !important;
+  border: none !important;
+  box-shadow: black;
 }
diff --git a/src/app/components/home-page/home-page.component.html b/src/app/components/home-page/home-page.component.html
index 1cf75de..2c9621a 100644
--- a/src/app/components/home-page/home-page.component.html
+++ b/src/app/components/home-page/home-page.component.html
@@ -1,27 +1,25 @@
 <div class="home-wrap">
-    <div class="row home">
-        <div class="overlay col-lg-7">
-            <p class="intro">Cultural Proficiency Continuum Dialogic Protocol</p>
-            <p class="tag">
-                An exploration of culturally proficient behaviors and interactions that take place within U.S. PreK-12
-                schools and classrooms.
-            </p>
-            <div class="row buttons">
-                <a routerLink="/login"
-                    ><button mat-raised-button class="btn" style="background-color: #29abe2">
-                        Login to Begin Protocol
-                    </button></a
-                >
-            </div>
-        </div>
-        <div class="slideshow col-lg-5">
-            <mat-tab-group [selectedIndex]="selectedIndex" style="margin: 0px">
-                <mat-tab> <img class="slides" src="../../assets/image1.jpeg" /></mat-tab>
-                <mat-tab><img class="slides" src="../../assets/image3.jpeg" /></mat-tab>
-                <mat-tab><img class="slides" src="../../assets/image4.jpeg" /></mat-tab>
-                <mat-tab><img class="slides" src="../../assets/image5.jpeg" /></mat-tab>
-            </mat-tab-group>
-        </div>
+  <div class="row home">
+    <div class="overlay col-lg-7">
+      <p class="intro">Cultural Proficiency Continuum Dialogic Protocol</p>
+      <p class="tag">
+        An exploration of culturally proficient behaviors and interactions that take place within U.S. PreK-12 schools
+        and classrooms.
+      </p>
+      <div class="row buttons">
+        <a routerLink="/login"
+          ><button mat-raised-button class="btn" style="background-color: #29abe2">Login to Begin Protocol</button></a
+        >
+      </div>
     </div>
+    <div class="slideshow col-lg-5">
+      <mat-tab-group [selectedIndex]="selectedIndex" style="margin: 0px">
+        <mat-tab> <img class="slides" src="../../assets/image1.jpeg" /></mat-tab>
+        <mat-tab><img class="slides" src="../../assets/image3.jpeg" /></mat-tab>
+        <mat-tab><img class="slides" src="../../assets/image4.jpeg" /></mat-tab>
+        <mat-tab><img class="slides" src="../../assets/image5.jpeg" /></mat-tab>
+      </mat-tab-group>
+    </div>
+  </div>
 </div>
 <app-footer></app-footer>
diff --git a/src/app/components/home-page/home-page.component.spec.ts b/src/app/components/home-page/home-page.component.spec.ts
index c043eac..7051ef7 100644
--- a/src/app/components/home-page/home-page.component.spec.ts
+++ b/src/app/components/home-page/home-page.component.spec.ts
@@ -3,22 +3,22 @@ import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 import { HomePageComponent } from "./home-page.component";
 
 describe("HomePageComponent", () => {
-    let component: HomePageComponent;
-    let fixture: ComponentFixture<HomePageComponent>;
+  let component: HomePageComponent;
+  let fixture: ComponentFixture<HomePageComponent>;
 
-    beforeEach(async(() => {
-        TestBed.configureTestingModule({
-            declarations: [HomePageComponent],
-        }).compileComponents();
-    }));
+  beforeEach(async(() => {
+    TestBed.configureTestingModule({
+      declarations: [HomePageComponent],
+    }).compileComponents();
+  }));
 
-    beforeEach(() => {
-        fixture = TestBed.createComponent(HomePageComponent);
-        component = fixture.componentInstance;
-        fixture.detectChanges();
-    });
+  beforeEach(() => {
+    fixture = TestBed.createComponent(HomePageComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
 
-    it("should create", () => {
-        expect(component).toBeTruthy();
-    });
+  it("should create", () => {
+    expect(component).toBeTruthy();
+  });
 });
diff --git a/src/app/components/home-page/home-page.component.ts b/src/app/components/home-page/home-page.component.ts
index 627552a..e3450f8 100644
--- a/src/app/components/home-page/home-page.component.ts
+++ b/src/app/components/home-page/home-page.component.ts
@@ -1,24 +1,24 @@
 import { Component, OnInit } from "@angular/core";
 
 @Component({
-    selector: "app-home-page",
-    templateUrl: "./home-page.component.html",
-    styleUrls: ["./home-page.component.css"],
+  selector: "app-home-page",
+  templateUrl: "./home-page.component.html",
+  styleUrls: ["./home-page.component.css"],
 })
 export class HomePageComponent implements OnInit {
-    selectedIndex = 0;
-    id: any;
-    constructor() {}
+  selectedIndex = 0;
+  id: any;
+  constructor() {}
 
-    changeCount() {
-        this.selectedIndex = this.selectedIndex + 1;
-        if (this.selectedIndex > 4) {
-            this.selectedIndex = 0;
-        }
-    }
-    ngOnInit(): void {
-        this.id = setInterval(() => {
-            this.changeCount();
-        }, 3000);
+  changeCount() {
+    this.selectedIndex = this.selectedIndex + 1;
+    if (this.selectedIndex > 4) {
+      this.selectedIndex = 0;
     }
+  }
+  ngOnInit(): void {
+    this.id = setInterval(() => {
+      this.changeCount();
+    }, 3000);
+  }
 }
diff --git a/src/app/components/login/login.component.css b/src/app/components/login/login.component.css
index 9f807ae..4bba1b8 100644
--- a/src/app/components/login/login.component.css
+++ b/src/app/components/login/login.component.css
@@ -1,46 +1,46 @@
-.container{
-    text-align: center;
-    padding-bottom: 300px;
+.container {
+  text-align: center;
+  padding-bottom: 300px;
 }
 
 .example-card {
-    height: 370px;
-    display: inline-block;
-    margin-top: 100px;
+  height: 370px;
+  display: inline-block;
+  margin-top: 100px;
 }
 
 .intro {
-    top: 20%;
-    font-size: 35px;
-    text-align: center;
-    font-family: 'Loto', sans-serif, cursive;
-    color: black;
-    font-weight: bold;
+  top: 20%;
+  font-size: 35px;
+  text-align: center;
+  font-family: "Loto", sans-serif, cursive;
+  color: black;
+  font-weight: bold;
 }
 
 body {
-    font-family: 'Loto', sans-serif;
-    background-color: #f8fafb;
+  font-family: "Loto", sans-serif;
+  background-color: #f8fafb;
 }
 
-@media screen and (min-width: 992px){
-    p {
-        padding-top: 150px;
-        line-height: 150%;
-        color: #b3b3b3;
-        font-weight: 300;
-        margin: 0 20px;
-    }
+@media screen and (min-width: 992px) {
+  p {
+    padding-top: 150px;
+    line-height: 150%;
+    color: #b3b3b3;
+    font-weight: 300;
+    margin: 0 20px;
+  }
 }
 
-@media screen and (max-width: 991px){
-    p {
-        padding-top: 20px;
-        line-height: 150%;
-        color: #b3b3b3;
-        font-weight: 300;
-        margin: 0 20px;
-    }
+@media screen and (max-width: 991px) {
+  p {
+    padding-top: 20px;
+    line-height: 150%;
+    color: #b3b3b3;
+    font-weight: 300;
+    margin: 0 20px;
+  }
 }
 
 h1,
@@ -55,19 +55,19 @@ h6,
 .h4,
 .h5,
 .h6 {
-    font-family: 'Loto', sans-serif;
+  font-family: "Loto", sans-serif;
 }
 
 a {
-    -webkit-transition: .3s all ease;
-    -o-transition: .3s all ease;
-    transition: .3s all ease;
+  -webkit-transition: 0.3s all ease;
+  -o-transition: 0.3s all ease;
+  transition: 0.3s all ease;
 }
 
 a:hover {
-    text-decoration: none !important;
+  text-decoration: none !important;
 }
 
 h2 {
-    font-size: 20px;
+  font-size: 20px;
 }
diff --git a/src/app/components/login/login.component.html b/src/app/components/login/login.component.html
index ed23c50..a456f5e 100644
--- a/src/app/components/login/login.component.html
+++ b/src/app/components/login/login.component.html
@@ -1,46 +1,46 @@
 <div class="home-warp">
-    <p class="intro">Cultural Proficiency Continuum Dialogic Protocol</p>
-    <div class="container">
-        <mat-card class="example-card">
-            <div class="mb-4">
-                <h3 style="text-align: center">Login</h3>
-            </div>
-            <form [formGroup]="loginForm">
-                <mat-form-field appearance="outline" class="col-lg-12">
-                    <mat-label>Enter Username </mat-label>
-                    <input type="email" matInput placeholder="John" formControlName="username" required />
-                    <mat-error *ngIf="loginForm.controls.username.invalid">{{ getEmailError() }}</mat-error>
-                </mat-form-field>
-                <mat-form-field appearance="outline" class="col-lg-12">
-                    <mat-label>Enter your password</mat-label>
-                    <input matInput formControlName="password" [type]="hide ? 'password' : 'text'" required />
-                    <button
-                        mat-icon-button
-                        matSuffix
-                        (click)="hide = !hide"
-                        [attr.aria-label]="'Hide password'"
-                        [attr.aria-pressed]="hide"
-                    >
-                        <mat-icon>{{ hide ? "visibility_off" : "visibility" }}</mat-icon>
-                    </button>
-                    <mat-error *ngIf="loginForm.controls.password.invalid">{{ getPasswordError() }}</mat-error>
-                </mat-form-field>
+  <p class="intro">Cultural Proficiency Continuum Dialogic Protocol</p>
+  <div class="container">
+    <mat-card class="example-card">
+      <div class="mb-4">
+        <h3 style="text-align: center">Login</h3>
+      </div>
+      <form [formGroup]="loginForm">
+        <mat-form-field appearance="outline" class="col-lg-12">
+          <mat-label>Enter Username </mat-label>
+          <input type="email" matInput placeholder="John" formControlName="username" required />
+          <mat-error *ngIf="loginForm.controls.username.invalid">{{ getEmailError() }}</mat-error>
+        </mat-form-field>
+        <mat-form-field appearance="outline" class="col-lg-12">
+          <mat-label>Enter your password</mat-label>
+          <input matInput formControlName="password" [type]="hide ? 'password' : 'text'" required />
+          <button
+            mat-icon-button
+            matSuffix
+            (click)="hide = !hide"
+            [attr.aria-label]="'Hide password'"
+            [attr.aria-pressed]="hide"
+          >
+            <mat-icon>{{ hide ? "visibility_off" : "visibility" }}</mat-icon>
+          </button>
+          <mat-error *ngIf="loginForm.controls.password.invalid">{{ getPasswordError() }}</mat-error>
+        </mat-form-field>
 
-                <input
-                    type="submit"
-                    value="Login"
-                    class="btn text-white btn-block btn-primary"
-                    style="background-color: #29abe2; font-size: 20px"
-                    (click)="login()"
-                />
-            </form>
-            <small>Don't have an account?<a routerLink="/register">Click here</a></small>
-            <br />
-            <small>Forgot password?<a routerLink="/forgotPassword">Click here</a></small>
-            <br />
-            <small>Login as admin?<a href="https://cpcdpvcu.bhoomee.org/admin">Click here</a></small>
-        </mat-card>
-    </div>
+        <input
+          type="submit"
+          value="Login"
+          class="btn text-white btn-block btn-primary"
+          style="background-color: #29abe2; font-size: 20px"
+          (click)="login()"
+        />
+      </form>
+      <small>Don't have an account?<a routerLink="/register">Click here</a></small>
+      <br />
+      <small>Forgot password?<a routerLink="/forgotPassword">Click here</a></small>
+      <br />
+      <small>Login as admin?<a href="https://cpcdpvcu.bhoomee.org/admin">Click here</a></small>
+    </mat-card>
+  </div>
 </div>
 
 <app-footer></app-footer>
diff --git a/src/app/components/login/login.component.spec.ts b/src/app/components/login/login.component.spec.ts
index d6d85a8..e08691e 100644
--- a/src/app/components/login/login.component.spec.ts
+++ b/src/app/components/login/login.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { LoginComponent } from './login.component';
+import { LoginComponent } from "./login.component";
 
-describe('LoginComponent', () => {
+describe("LoginComponent", () => {
   let component: LoginComponent;
   let fixture: ComponentFixture<LoginComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ LoginComponent ]
-    })
-    .compileComponents();
+      declarations: [LoginComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('LoginComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/login/login.component.ts b/src/app/components/login/login.component.ts
index ed92bee..02d9ad0 100644
--- a/src/app/components/login/login.component.ts
+++ b/src/app/components/login/login.component.ts
@@ -6,81 +6,81 @@ import Swal from "sweetalert2";
 import { LoginService } from "src/app/services/login.service";
 
 @Component({
-    selector: "app-login",
-    templateUrl: "./login.component.html",
-    styleUrls: ["./login.component.css"],
+  selector: "app-login",
+  templateUrl: "./login.component.html",
+  styleUrls: ["./login.component.css"],
 })
 export class LoginComponent implements OnInit {
-    loginForm: FormGroup;
-    hide = true;
-    constructor(private fb: FormBuilder, private router: Router, private loginService: LoginService) {}
+  loginForm: FormGroup;
+  hide = true;
+  constructor(private fb: FormBuilder, private router: Router, private loginService: LoginService) {}
 
-    ngOnInit(): void {
-        this.loginForm = this.fb.group({
-            username: ["", [Validators.required]],
-            password: ["", [Validators.required]],
-        });
-    }
+  ngOnInit(): void {
+    this.loginForm = this.fb.group({
+      username: ["", [Validators.required]],
+      password: ["", [Validators.required]],
+    });
+  }
 
-    getEmailError() {
-        if (this.loginForm.controls.username.hasError("required")) {
-            return "Required";
-        } else {
-            return "";
-        }
+  getEmailError() {
+    if (this.loginForm.controls.username.hasError("required")) {
+      return "Required";
+    } else {
+      return "";
     }
+  }
 
-    getPasswordError() {
-        if (this.loginForm.controls.password.hasError("required")) {
-            return "Required";
-        } else {
-            return "";
-        }
+  getPasswordError() {
+    if (this.loginForm.controls.password.hasError("required")) {
+      return "Required";
+    } else {
+      return "";
     }
+  }
 
-    login() {
-        if (this.loginForm.invalid) {
-            Swal.fire({
-                text: "Please enter all the fields in the right format.",
-                icon: "error",
-            }).then((res) => {});
-        } else {
-            this.loginService.login(this.loginForm.value).subscribe(
-                (res) => {
-                    localStorage.setItem("user", res["token"]);
-                    localStorage.setItem("study", res["user"]["study_id"]);
-                    Swal.fire({
-                        text: "Login Successful",
-                        icon: "success",
-                    }).then((res) => {
-                        this.loginService.checkStatus().subscribe((res) => {
-                            if (res[0] == undefined) {
-                                this.router.navigateByUrl("/preSurvey");
-                            } else {
-                                if (res[0]["postsurveystatus"] == true) {
-                                    this.router.navigateByUrl("/final");
-                                } else if (res[0]["scoresstatus"] == true) {
-                                    this.router.navigateByUrl("/score");
-                                } else if (res[0]["finalfeedbackstatus"] == true) {
-                                    this.router.navigateByUrl("/result");
-                                } else if (res[0]["cpcqstatus"] == true) {
-                                    this.router.navigateByUrl("/finalFeedback");
-                                } else if (res[0]["responsesstatus"] == true) {
-                                    this.router.navigateByUrl("/unpacking");
-                                } else if (res[0]["presurveystatus"] == true) {
-                                    this.router.navigateByUrl("/dashboard");
-                                }
-                            }
-                        });
-                    });
-                },
-                (err) => {
-                    Swal.fire({
-                        text: "Wrong credentials",
-                        icon: "error",
-                    }).then((res) => {});
+  login() {
+    if (this.loginForm.invalid) {
+      Swal.fire({
+        text: "Please enter all the fields in the right format.",
+        icon: "error",
+      }).then((res) => {});
+    } else {
+      this.loginService.login(this.loginForm.value).subscribe(
+        (res) => {
+          localStorage.setItem("user", res["token"]);
+          localStorage.setItem("study", res["user"]["study_id"]);
+          Swal.fire({
+            text: "Login Successful",
+            icon: "success",
+          }).then((res) => {
+            this.loginService.checkStatus().subscribe((res) => {
+              if (res[0] == undefined) {
+                this.router.navigateByUrl("/preSurvey");
+              } else {
+                if (res[0]["postsurveystatus"] == true) {
+                  this.router.navigateByUrl("/final");
+                } else if (res[0]["scoresstatus"] == true) {
+                  this.router.navigateByUrl("/score");
+                } else if (res[0]["finalfeedbackstatus"] == true) {
+                  this.router.navigateByUrl("/result");
+                } else if (res[0]["cpcqstatus"] == true) {
+                  this.router.navigateByUrl("/finalFeedback");
+                } else if (res[0]["responsesstatus"] == true) {
+                  this.router.navigateByUrl("/unpacking");
+                } else if (res[0]["presurveystatus"] == true) {
+                  this.router.navigateByUrl("/dashboard");
                 }
-            );
+              }
+            });
+          });
+        },
+        (err) => {
+          Swal.fire({
+            text: "Wrong credentials",
+            icon: "error",
+          }).then((res) => {});
         }
+      );
     }
+  }
 }
diff --git a/src/app/components/main-game/dialog/dialog.component.html b/src/app/components/main-game/dialog/dialog.component.html
index 1cfc776..eb42d30 100644
--- a/src/app/components/main-game/dialog/dialog.component.html
+++ b/src/app/components/main-game/dialog/dialog.component.html
@@ -1,15 +1,9 @@
 <h1 mat-dialog-title>Favorite Animal</h1>
 <div mat-dialog-content>
-    My favorite animal is:
-    <ul>
-        <li>
-            <span *ngIf="data.animal === 'panda'">&#10003;</span> Panda
-        </li>
-        <li>
-            <span *ngIf="data.animal === 'unicorn'">&#10003;</span> Unicorn
-        </li>
-        <li>
-            <span *ngIf="data.animal === 'lion'">&#10003;</span> Lion
-        </li>
-    </ul>
-</div>
\ No newline at end of file
+  My favorite animal is:
+  <ul>
+    <li><span *ngIf="data.animal === 'panda'">&#10003;</span> Panda</li>
+    <li><span *ngIf="data.animal === 'unicorn'">&#10003;</span> Unicorn</li>
+    <li><span *ngIf="data.animal === 'lion'">&#10003;</span> Lion</li>
+  </ul>
+</div>
diff --git a/src/app/components/main-game/dialog/dialog.component.spec.ts b/src/app/components/main-game/dialog/dialog.component.spec.ts
index a6bce8d..f9a6561 100644
--- a/src/app/components/main-game/dialog/dialog.component.spec.ts
+++ b/src/app/components/main-game/dialog/dialog.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { DialogComponent } from './dialog.component';
+import { DialogComponent } from "./dialog.component";
 
-describe('DialogComponent', () => {
+describe("DialogComponent", () => {
   let component: DialogComponent;
   let fixture: ComponentFixture<DialogComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ DialogComponent ]
-    })
-    .compileComponents();
+      declarations: [DialogComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('DialogComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/main-game/dialog/dialog.component.ts b/src/app/components/main-game/dialog/dialog.component.ts
index 074fa74..4c96039 100644
--- a/src/app/components/main-game/dialog/dialog.component.ts
+++ b/src/app/components/main-game/dialog/dialog.component.ts
@@ -1,19 +1,16 @@
-import { Component, OnInit, Inject } from '@angular/core';
-import {MatDialog, MAT_DIALOG_DATA} from '@angular/material/dialog';
+import { Component, OnInit, Inject } from "@angular/core";
+import { MatDialog, MAT_DIALOG_DATA } from "@angular/material/dialog";
 
 export interface DialogData {
-  animal: 'panda' | 'unicorn' | 'lion';
+  animal: "panda" | "unicorn" | "lion";
 }
 @Component({
-  selector: 'app-dialog',
-  templateUrl: './dialog.component.html',
-  styleUrls: ['./dialog.component.css']
+  selector: "app-dialog",
+  templateUrl: "./dialog.component.html",
+  styleUrls: ["./dialog.component.css"],
 })
 export class DialogComponent implements OnInit {
+  constructor(@Inject(MAT_DIALOG_DATA) public data: DialogData) {}
 
-  constructor(@Inject(MAT_DIALOG_DATA) public data: DialogData) { }
-
-  ngOnInit(): void {
-  }
-
+  ngOnInit(): void {}
 }
diff --git a/src/app/components/main-game/main-game.component.css b/src/app/components/main-game/main-game.component.css
index aa8bff7..3f2b17d 100644
--- a/src/app/components/main-game/main-game.component.css
+++ b/src/app/components/main-game/main-game.component.css
@@ -1,104 +1,104 @@
 .home-wrap {
-    /* background: linear-gradient(to bottom left, rgb(173, 178, 255), #d6f9ff); */
-    background-color: green;
-    width: 100%;
-    height: 100%;
-    left: 0;
-    z-index: 1000;
-    overflow: auto;
-    text-align: center;
-    padding: 20px;
-    position: absolute;
+  /* background: linear-gradient(to bottom left, rgb(173, 178, 255), #d6f9ff); */
+  background-color: green;
+  width: 100%;
+  height: 100%;
+  left: 0;
+  z-index: 1000;
+  overflow: auto;
+  text-align: center;
+  padding: 20px;
+  position: absolute;
 }
 
 .example-card {
-    max-width: 300px;
-    position: absolute;
-    top: 50%;
-    left: 50%;
-    margin-right: -50%;
-    transform: translate(-50%, -50%);
+  max-width: 300px;
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  margin-right: -50%;
+  transform: translate(-50%, -50%);
 }
 
 p {
-    font-size: 1rem;
-    text-align: left;
+  font-size: 1rem;
+  text-align: left;
 }
 
 h3 {
-    text-align: left;
+  text-align: left;
 }
 
 .dealerRow {
-    top: 50px;
-    left: 10px;
-    z-index: 1;
+  top: 50px;
+  left: 10px;
+  z-index: 1;
 }
 
 .firstRow {
-    /* width: 200px; */
-    /* height: 200px; */
-    /* position: relative; */
-    top: 10px;
-    left: 0px;
-    z-index: 1;
+  /* width: 200px; */
+  /* height: 200px; */
+  /* position: relative; */
+  top: 10px;
+  left: 0px;
+  z-index: 1;
 }
 
 .secondRow {
-    /* width: 200px;
+  /* width: 200px;
     height: 200px; */
-    position: absolute;
-    top: 420px;
-    left: 40px;
-    z-index: 2;
+  position: absolute;
+  top: 420px;
+  left: 40px;
+  z-index: 2;
 }
 
 .thirdRow {
-    /* width: 200px;
+  /* width: 200px;
     height: 200px; */
-    position: absolute;
-    top: 480px;
-    left: 60px;
-    z-index: 2;
+  position: absolute;
+  top: 480px;
+  left: 60px;
+  z-index: 2;
 }
 
 .deck {
-    float: right;
-    top: 50px;
+  float: right;
+  top: 50px;
 }
 
 .mat-card {
-    background-color: #edf6f9;
+  background-color: #edf6f9;
 }
 
 section {
-    display: table;
+  display: table;
 }
 
 .example-label {
-    display: table-cell;
-    font-size: 14px;
-    margin-left: 8px;
-    min-width: 120px;
+  display: table-cell;
+  font-size: 14px;
+  margin-left: 8px;
+  min-width: 120px;
 }
 
 .example-button-row {
-    display: table-cell;
-    width: 490px;
+  display: table-cell;
+  width: 490px;
 }
 
 .example-button-row .mat-button-base {
-    margin: 8px 8px 8px 0;
+  margin: 8px 8px 8px 0;
 }
 
 .example-flex-container {
-    display: flex;
-    justify-content: space-between;
-    flex-wrap: wrap;
+  display: flex;
+  justify-content: space-between;
+  flex-wrap: wrap;
 }
 
 .example-button-container {
-    display: flex;
-    justify-content: center;
-    width: 120px;
-}
\ No newline at end of file
+  display: flex;
+  justify-content: center;
+  width: 120px;
+}
diff --git a/src/app/components/main-game/main-game.component.html b/src/app/components/main-game/main-game.component.html
index 47c6254..ca5f756 100644
--- a/src/app/components/main-game/main-game.component.html
+++ b/src/app/components/main-game/main-game.component.html
@@ -1,66 +1,58 @@
 <!-- <app-header></app-header> -->
 
 <div class="home-wrap">
-    <div class="row">
-        <div class="row col-2 dealerRow">
-            <div class="col-1" *ngFor="let card of dealer[0]">
-                <img [src]="card">
-            </div>
-        </div>
-        <div class="col-2">
-
-        </div>
-        <div class="col-4" style="margin-top: 50px;">
-            <mat-card class="example-card ">
-
-                <mat-card-content>
-                    <h3>Your Game Scores</h3>
-                    <countdown [config]="{leftTime: timeForTotalGame}" (event)="totalTimeEvent($event)"></countdown>
-                    <p>Attempt Number : 3</p>
-                    <p>Total wins : 2</p>
-                    <p>Winning percentage : 55%</p>
-                    <p>Performance goal : 21</p>
-                    <p>Score of bust : 21</p>
-                    <!-- <button mat-button (click)="openDialog()"> Click</button> -->
-
-                </mat-card-content>
-            </mat-card>
-        </div>
-        <div class="col-2">
+  <div class="row">
+    <div class="row col-2 dealerRow">
+      <div class="col-1" *ngFor="let card of dealer[0]">
+        <img [src]="card" />
+      </div>
+    </div>
+    <div class="col-2"></div>
+    <div class="col-4" style="margin-top: 50px">
+      <mat-card class="example-card">
+        <mat-card-content>
+          <h3>Your Game Scores</h3>
+          <countdown [config]="{ leftTime: timeForTotalGame }" (event)="totalTimeEvent($event)"></countdown>
+          <p>Attempt Number : 3</p>
+          <p>Total wins : 2</p>
+          <p>Winning percentage : 55%</p>
+          <p>Performance goal : 21</p>
+          <p>Score of bust : 21</p>
+          <!-- <button mat-button (click)="openDialog()"> Click</button> -->
+        </mat-card-content>
+      </mat-card>
+    </div>
+    <div class="col-2"></div>
 
+    <div class="col-2 deck">
+      <div>
+        <img src="../../assets/cards/BACKY.png" style="margin-right: 20px" />
+      </div>
+      <div class="row" style="margin-top: 10px">
+        <div class="col-6">
+          <button mat-raised-button style="background-color: #fae1dd">STAND</button>
         </div>
-
-        <div class="col-2 deck">
-            <div>
-                <img src="../../assets/cards/BACKY.png" style="margin-right: 20px;">
-            </div>
-            <div class="row" style="margin-top: 10px;">
-                <div class="col-6">
-                    <button mat-raised-button style="background-color: #fae1dd;">STAND</button>
-                </div>
-                <div class="col-6">
-                    <button mat-raised-button style="background-color: #fae1dd;" (click)="addCard()">HIT</button>
-                </div>
-            </div>
+        <div class="col-6">
+          <button mat-raised-button style="background-color: #fae1dd" (click)="addCard()">HIT</button>
         </div>
+      </div>
     </div>
+  </div>
 
-
-    <div class="row col-10 firstRow">
-        <div class="col-1" *ngFor="let card of player[0]">
-            <img [src]="card">
-        </div>
+  <div class="row col-10 firstRow">
+    <div class="col-1" *ngFor="let card of player[0]">
+      <img [src]="card" />
     </div>
+  </div>
 
-    <div class="row col-10 secondRow" *ngIf="totalCardsofPlayer > 10">
-        <div class="col-1" *ngFor="let card of player[1]">
-            <img [src]="card">
-        </div>
+  <div class="row col-10 secondRow" *ngIf="totalCardsofPlayer > 10">
+    <div class="col-1" *ngFor="let card of player[1]">
+      <img [src]="card" />
     </div>
-    <div class="row col-10 thirdRow" *ngIf="totalCardsofPlayer > 20">
-        <div class="col-1" *ngFor="let card of player[2]">
-            <img [src]="card">
-        </div>
+  </div>
+  <div class="row col-10 thirdRow" *ngIf="totalCardsofPlayer > 20">
+    <div class="col-1" *ngFor="let card of player[2]">
+      <img [src]="card" />
     </div>
-
-</div>
\ No newline at end of file
+  </div>
+</div>
diff --git a/src/app/components/main-game/main-game.component.spec.ts b/src/app/components/main-game/main-game.component.spec.ts
index f956219..29a9125 100644
--- a/src/app/components/main-game/main-game.component.spec.ts
+++ b/src/app/components/main-game/main-game.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { MainGameComponent } from './main-game.component';
+import { MainGameComponent } from "./main-game.component";
 
-describe('MainGameComponent', () => {
+describe("MainGameComponent", () => {
   let component: MainGameComponent;
   let fixture: ComponentFixture<MainGameComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ MainGameComponent ]
-    })
-    .compileComponents();
+      declarations: [MainGameComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('MainGameComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/main-game/main-game.component.ts b/src/app/components/main-game/main-game.component.ts
index 24c2acb..baf38dd 100644
--- a/src/app/components/main-game/main-game.component.ts
+++ b/src/app/components/main-game/main-game.component.ts
@@ -4,88 +4,88 @@ import { MatDialog, MAT_DIALOG_DATA } from "@angular/material/dialog";
 import { DialogComponent } from "./dialog/dialog.component";
 import { MainGame } from "src/app/services/mainGame.service";
 @Component({
-    selector: "app-main-game",
-    templateUrl: "./main-game.component.html",
-    styleUrls: ["./main-game.component.css"],
-    encapsulation: ViewEncapsulation.None,
+  selector: "app-main-game",
+  templateUrl: "./main-game.component.html",
+  styleUrls: ["./main-game.component.css"],
+  encapsulation: ViewEncapsulation.None,
 })
 export class MainGameComponent implements OnInit {
-    firstLetter = ["2", "3", "4", "5", "6", "7", "8", "9", "10", "A", "J", "K", "Q"];
-    lastLetter = ["C", "D", "H", "S"];
-    player = [[], [], []];
-    dealer = [[]];
-    totalCardsofPlayer;
-    handGoal = 21;
-    score = 21;
-    limitOfCards = 30;
-    timeForTotalGame = 3;
-    timeForEachDraw = 0;
-    repitionOfCards = true;
-    numberOfCardsStartingDealer = 1;
-    numberOfCardsStartingPlayer = 2;
-    valueOfAce = 1;
-    scoreObtainedPlayer = 0;
-    scoreObtainedDealer = 0;
-    constructor(private dialog: MatDialog, private gameService: MainGame) {}
+  firstLetter = ["2", "3", "4", "5", "6", "7", "8", "9", "10", "A", "J", "K", "Q"];
+  lastLetter = ["C", "D", "H", "S"];
+  player = [[], [], []];
+  dealer = [[]];
+  totalCardsofPlayer;
+  handGoal = 21;
+  score = 21;
+  limitOfCards = 30;
+  timeForTotalGame = 3;
+  timeForEachDraw = 0;
+  repitionOfCards = true;
+  numberOfCardsStartingDealer = 1;
+  numberOfCardsStartingPlayer = 2;
+  valueOfAce = 1;
+  scoreObtainedPlayer = 0;
+  scoreObtainedDealer = 0;
+  constructor(private dialog: MatDialog, private gameService: MainGame) {}
 
-    ngOnInit(): void {
-        for (var i = 0; i < this.numberOfCardsStartingDealer; i++) {
-            var item1 = this.firstLetter[Math.floor(Math.random() * this.firstLetter.length)];
-            var item2 = this.lastLetter[Math.floor(Math.random() * this.lastLetter.length)];
-            var finalString = "../../assets/cards/" + item1 + item2 + ".png";
-            this.dealer[0].push(finalString);
-        }
-        this.dealer[0].push("../../assets/cards/BLANK.png");
-        for (var i = 0; i < this.numberOfCardsStartingPlayer; i++) {
-            var item1 = this.firstLetter[Math.floor(Math.random() * this.firstLetter.length)];
-            var item2 = this.lastLetter[Math.floor(Math.random() * this.lastLetter.length)];
-            var finalString = "../../assets/cards/" + item1 + item2 + ".png";
-            this.player[0].push(finalString);
-        }
-        this.totalCardsofPlayer = 2;
+  ngOnInit(): void {
+    for (var i = 0; i < this.numberOfCardsStartingDealer; i++) {
+      var item1 = this.firstLetter[Math.floor(Math.random() * this.firstLetter.length)];
+      var item2 = this.lastLetter[Math.floor(Math.random() * this.lastLetter.length)];
+      var finalString = "../../assets/cards/" + item1 + item2 + ".png";
+      this.dealer[0].push(finalString);
     }
-
-    openDialog() {
-        this.dialog.open(DialogComponent, {
-            data: {
-                animal: "panda",
-            },
-        });
+    this.dealer[0].push("../../assets/cards/BLANK.png");
+    for (var i = 0; i < this.numberOfCardsStartingPlayer; i++) {
+      var item1 = this.firstLetter[Math.floor(Math.random() * this.firstLetter.length)];
+      var item2 = this.lastLetter[Math.floor(Math.random() * this.lastLetter.length)];
+      var finalString = "../../assets/cards/" + item1 + item2 + ".png";
+      this.player[0].push(finalString);
     }
+    this.totalCardsofPlayer = 2;
+  }
+
+  openDialog() {
+    this.dialog.open(DialogComponent, {
+      data: {
+        animal: "panda",
+      },
+    });
+  }
 
-    addCard() {
-        var item1 = this.firstLetter[Math.floor(Math.random() * this.firstLetter.length)];
-        var item2 = this.lastLetter[Math.floor(Math.random() * this.lastLetter.length)];
-        var finalString = "../../assets/cards/" + item1 + item2 + ".png";
-        if (this.totalCardsofPlayer < 10 && this.totalCardsofPlayer < this.limitOfCards) {
-            this.player[0].push(finalString);
-            this.totalCardsofPlayer = this.totalCardsofPlayer + 1;
-        } else if (
-            this.totalCardsofPlayer >= 10 &&
-            this.totalCardsofPlayer < 20 &&
-            this.totalCardsofPlayer < this.limitOfCards
-        ) {
-            this.player[1].push(finalString);
-            this.totalCardsofPlayer = this.totalCardsofPlayer + 1;
-        } else if (
-            this.totalCardsofPlayer >= 20 &&
-            this.totalCardsofPlayer < this.limitOfCards &&
-            this.totalCardsofPlayer < this.limitOfCards
-        ) {
-            this.player[2].push(finalString);
-            this.totalCardsofPlayer = this.totalCardsofPlayer + 1;
-        }
+  addCard() {
+    var item1 = this.firstLetter[Math.floor(Math.random() * this.firstLetter.length)];
+    var item2 = this.lastLetter[Math.floor(Math.random() * this.lastLetter.length)];
+    var finalString = "../../assets/cards/" + item1 + item2 + ".png";
+    if (this.totalCardsofPlayer < 10 && this.totalCardsofPlayer < this.limitOfCards) {
+      this.player[0].push(finalString);
+      this.totalCardsofPlayer = this.totalCardsofPlayer + 1;
+    } else if (
+      this.totalCardsofPlayer >= 10 &&
+      this.totalCardsofPlayer < 20 &&
+      this.totalCardsofPlayer < this.limitOfCards
+    ) {
+      this.player[1].push(finalString);
+      this.totalCardsofPlayer = this.totalCardsofPlayer + 1;
+    } else if (
+      this.totalCardsofPlayer >= 20 &&
+      this.totalCardsofPlayer < this.limitOfCards &&
+      this.totalCardsofPlayer < this.limitOfCards
+    ) {
+      this.player[2].push(finalString);
+      this.totalCardsofPlayer = this.totalCardsofPlayer + 1;
     }
+  }
 
-    totalTimeEvent(event) {
-        if (event["action"] == "done") {
-            Swal.fire({
-                text: "You have used up all the time alloted!!",
-                icon: "warning",
-                showCancelButton: false,
-                confirmButtonText: "Okay",
-                confirmButtonColor: "red",
-            }).then((result) => {});
-        }
+  totalTimeEvent(event) {
+    if (event["action"] == "done") {
+      Swal.fire({
+        text: "You have used up all the time alloted!!",
+        icon: "warning",
+        showCancelButton: false,
+        confirmButtonText: "Okay",
+        confirmButtonColor: "red",
+      }).then((result) => {});
     }
+  }
 }
diff --git a/src/app/components/post-survey/post-survey.component.css b/src/app/components/post-survey/post-survey.component.css
index d29c565..0395881 100644
--- a/src/app/components/post-survey/post-survey.component.css
+++ b/src/app/components/post-survey/post-survey.component.css
@@ -1,62 +1,62 @@
-@media screen and (min-width:1024px) {
-    .form-wrap {
-        padding-top: 70px;
-    }
+@media screen and (min-width: 1024px) {
+  .form-wrap {
+    padding-top: 70px;
+  }
 }
 
 .example-radio-group {
-    display: flex;
-    flex-direction: column;
-    margin: 15px 0;
+  display: flex;
+  flex-direction: column;
+  margin: 15px 0;
 }
 
 h4 {
-    font-size: 20px;
-    line-height: 150%;
-    font-weight: bold;
+  font-size: 20px;
+  line-height: 150%;
+  font-weight: bold;
 }
 
 p {
-    font-size: 18px;
-    line-height: 150%;
+  font-size: 18px;
+  line-height: 150%;
 }
 
 .mat-card {
-    margin: 20px 60px;
-    padding: 0;
+  margin: 20px 60px;
+  padding: 0;
 }
 
 h1 {
-    background-color: #efe9ae;
-    color: black;
-    line-height: 150%;
-    text-align: center;
-    padding: 10px 0;
+  background-color: #efe9ae;
+  color: black;
+  line-height: 150%;
+  text-align: center;
+  padding: 10px 0;
 }
 
 .questions {
-    padding: 20px;
+  padding: 20px;
 }
 
 .sign1 {
-    border: 1px solid black;
-    margin: 20px 5px !important;
+  border: 1px solid black;
+  margin: 20px 5px !important;
 }
 
 .buttons {
-    margin-bottom: 50px;
-    text-align: center;
+  margin-bottom: 50px;
+  text-align: center;
 }
 
 .btn {
-    width: 200px;
-    background-color: #00b4d8;
-    color: white;
-    display: inline-block;
-    padding: 10px;
-    margin-bottom: 20px;
+  width: 200px;
+  background-color: #00b4d8;
+  color: white;
+  display: inline-block;
+  padding: 10px;
+  margin-bottom: 20px;
 }
 
 ::ng-deep .mat-tooltip {
-    font-size: 15px !important;
-}
\ No newline at end of file
+  font-size: 15px !important;
+}
diff --git a/src/app/components/post-survey/post-survey.component.html b/src/app/components/post-survey/post-survey.component.html
index 9d27d9f..0817e23 100644
--- a/src/app/components/post-survey/post-survey.component.html
+++ b/src/app/components/post-survey/post-survey.component.html
@@ -1,328 +1,308 @@
 <div class="form-wrap">
-    <mat-card class="">
-        <div>
-            <h1>Cultural Proficiency Continuum Dialogic Protocol: Post-Survey
-            </h1>
-            <div [formGroup]="postSurveyForm" class="questions">
-                <h4 *ngIf="!consentFlag">Your responses are confidential and will not be used for research or published without your informed and signed consent. 
-                    <span><p style="font-weight: 400; color: blue;" (click)="irbFunction()" >Click here to review the <span style="font-style: italic;">Research Participant Information and Consent Form.</span></p></span>
-                </h4>
-
-                <h4 *ngIf="consentFlag"></h4>
-                <br>
-
-                <table class="table">
-                    <thead style="text-align:center">
-                        <tr>
-                            <th>
-
-                            </th>
-                            <div class="row">
-
-                                    <th  class="col-2" >
-                                        Strongly Agree
-                                    </th>
-                                    <th  class="col-2" >
-                                        Agree
-                                    </th>
-                                    <th  class="col-3" >
-                                        Neither Agree<br> nor disagree
-                                    </th>
-                                    <th  class="col-3" >
-                                        Disagree
-                                    </th>
-                                    <th  class="col-2" >
-                                        Strongly Disagree
-                                    </th>
-                            </div>
-
-                        </tr>
-                    </thead>
-                    <tbody>
-                        <tr>
-                            <td>
-                                {{formQuestion['question1'][0]}} <span style="font-weight: bold;">gender inequality.</span> 
-                            </td>
-                            <mat-radio-group formControlName="q1">
-
-                            <td>
-                                <mat-radio-button class="col-lg-2" value="Strongly Agree"></mat-radio-button>
-                            </td>
-                            <td>
-                                <mat-radio-button class="col-lg-2" value="Agree"></mat-radio-button>
-                            </td>
-                            <td>
-                                <mat-radio-button class="col-lg-2" value="Neither Agree nor Disagree"></mat-radio-button>
-                            </td>
-                            <td>
-                                <mat-radio-button class="col-lg-2" value="Disagree"></mat-radio-button>
-                            </td>
-                            <td>
-                                <mat-radio-button class="col-lg-2" value="Strongly Disagree"></mat-radio-button>
-                            </td>
-                            </mat-radio-group>
-                        </tr>
-                        <br>
-
-                        <tr>
-                            <td>
-                                {{formQuestion['question2'][0]}} <span style="font-weight: bold;">LGBTQA+.</span>
-
-                            </td>
-                            <mat-radio-group formControlName="q2">
-
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Strongly Agree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Agree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Neither Agree nor Disagree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Disagree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Strongly Disagree"></mat-radio-button>
-                                </td>
-                                </mat-radio-group>
-                        </tr>
-                        <br>
-
-
-                        <tr>
-                            <td>
-                                {{formQuestion['question3'][0]}} <span style="font-weight: bold;">ableism.</span>
-
-                            </td>
-                            <mat-radio-group formControlName="q3">
-
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Strongly Agree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Agree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Neither Agree nor Disagree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Disagree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Strongly Disagree"></mat-radio-button>
-                                </td>
-                                </mat-radio-group>
-                        </tr>
-                        <br>
-
-
-                        <tr>
-                            <td>
-                                {{formQuestion['question4'][0]}} <span style="font-weight: bold;">Teaching English to Speakers of Other Languages (TESOL).</span>
-
-                            </td>
-                            <mat-radio-group formControlName="q4">
-
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Strongly Agree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Agree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Neither Agree nor Disagree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Disagree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Strongly Disagree"></mat-radio-button>
-                                </td>
-                                </mat-radio-group>
-                        </tr>
-                        <br>
-
-
-                        <tr>
-                            <td>
-                                {{formQuestion['question5'][0]}} <span style="font-weight: bold;">race or ethnicity.</span>
-
-                            </td>
-                            <mat-radio-group formControlName="q5">
-
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Strongly Agree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Agree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Neither Agree nor Disagree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Disagree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Strongly Disagree"></mat-radio-button>
-                                </td>
-                                </mat-radio-group>
-                        </tr>
-                        <br>
-
-                        <tr>
-                            <td>
-                                {{formQuestion['question6'][0]}} <span style="font-weight: bold;">culture.</span>
-                            </td>
-                            <mat-radio-group formControlName="q6">
-
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Strongly Agree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Agree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Neither Agree nor Disagree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Disagree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Strongly Disagree"></mat-radio-button>
-                                </td>
-                                </mat-radio-group>
-                        </tr>
-                        <br>
-
-                        <tr>
-                            <td>
-                                {{formQuestion['question7'][0]}} <span style="font-weight: bold;">diversity, equity, and inclusion (DEI).</span>
-                            </td>
-                            <mat-radio-group formControlName="q7">
-
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Strongly Agree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Agree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Neither Agree nor Disagree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Disagree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Strongly Disagree"></mat-radio-button>
-                                </td>
-                                </mat-radio-group>
-                        </tr>
-                        <br>
-
-                        <tr>
-                            <td>
-                                {{formQuestion['question8'][0]}} <span style="font-weight: bold;">racial, ethnic, and cultural</span> {{formQuestion['question8'][1]}}
-
-                            </td>
-                            <mat-radio-group formControlName="q8">
-
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Strongly Agree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Agree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Neither Agree nor Disagree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Disagree"></mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="Strongly Disagree"></mat-radio-button>
-                                </td>
-                                </mat-radio-group>
-                        </tr>
-                        <br>
-
-                    </tbody>
-                </table>
-
-
-                <p>{{formQuestion['question9']}}
-
-                </p>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Abolitionist Teaching')">Abolitionist Teaching
-
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('AsianCrit')">AsianCrit
-
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Courageous Conversations About Race')">Courageous Conversations About Race
-
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Critical Pedagogy')"> Critical Pedagogy
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Critical Race Theory')">Critical Race Theory
-
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Cultural Proficiency')">Cultural Proficiency
-
-
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Culturally Relevant Teaching')">Culturally Relevant Teaching
-                </mat-checkbox>
-
-
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Culturally Responsive School Leadership')">Culturally Responsive School Leadership
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Culturally Responsive Teaching')">Culturally Responsive Teaching
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Culturally Sustaining Pedagogies')">Culturally Sustaining Pedagogies
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Reality Pedagogy')">Reality Pedagogy
-
-                </mat-checkbox>
-
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('(Dis)Crit')">(Dis)Crit
-
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Hip-Hop Education')">Hip-Hop Education
-
-
-                </mat-checkbox>
-
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('LatCrit')">LatCrit
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Multicultural Education')">Multicultural Education
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6" >Other (please specify)
-                </mat-checkbox>
-                <mat-form-field appearance="outline" class="col-lg-4">
-                    <mat-label>Please specify</mat-label>
-                    <input formControlName = "other9" type="text" matInput placeholder="">
-                </mat-form-field>
-
-
-                <p>{{formQuestion['question10'][0]}}<span style="font-weight: bold; font-style: italic;" matTooltip="Cultural competence is the ability to successfully teach students who come from a culture or cultures other than our own (Moule, 2011)."> cultural competence? </span>                    {{formQuestion['question10'][1]}}
-                </p>
-                <mat-form-field appearance="outline" class="col-lg-4">
-                    <mat-label>Describe</mat-label>
-                    <input formControlName="q10" type="text" matInput placeholder="" required>
-                </mat-form-field>
-
-                <p>{{formQuestion['question11']}}
-                </p>
-                <mat-form-field appearance="outline" class="col-lg-4">
-                    <mat-label>Describe</mat-label>
-                    <input formControlName="q11" type="text" matInput placeholder="" required>
-                </mat-form-field>
-            </div>
-            <div class="buttons">
-                <button class="btn" style="background-color: #29ABE2;" (click)="submit()">Submit</button>
-            </div>
-        </div>
-    </mat-card>
-</div>
\ No newline at end of file
+  <mat-card class="">
+    <div>
+      <h1>Cultural Proficiency Continuum Dialogic Protocol: Post-Survey</h1>
+      <div [formGroup]="postSurveyForm" class="questions">
+        <h4 *ngIf="!consentFlag">
+          Your responses are confidential and will not be used for research or published without your informed and
+          signed consent.
+          <span
+            ><p style="font-weight: 400; color: blue" (click)="irbFunction()">
+              Click here to review the
+              <span style="font-style: italic">Research Participant Information and Consent Form.</span>
+            </p></span
+          >
+        </h4>
+
+        <h4 *ngIf="consentFlag"></h4>
+        <br />
+
+        <table class="table">
+          <thead style="text-align: center">
+            <tr>
+              <th></th>
+              <div class="row">
+                <th class="col-2">Strongly Agree</th>
+                <th class="col-2">Agree</th>
+                <th class="col-3">
+                  Neither Agree<br />
+                  nor disagree
+                </th>
+                <th class="col-3">Disagree</th>
+                <th class="col-2">Strongly Disagree</th>
+              </div>
+            </tr>
+          </thead>
+          <tbody>
+            <tr>
+              <td>
+                {{ formQuestion["question1"][0] }}
+                <span style="font-weight: bold">gender inequality.</span>
+              </td>
+              <mat-radio-group formControlName="q1">
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Strongly Agree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Agree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Neither Agree nor Disagree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Disagree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Strongly Disagree"></mat-radio-button>
+                </td>
+              </mat-radio-group>
+            </tr>
+            <br />
+
+            <tr>
+              <td>{{ formQuestion["question2"][0] }} <span style="font-weight: bold">LGBTQA+.</span></td>
+              <mat-radio-group formControlName="q2">
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Strongly Agree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Agree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Neither Agree nor Disagree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Disagree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Strongly Disagree"></mat-radio-button>
+                </td>
+              </mat-radio-group>
+            </tr>
+            <br />
+
+            <tr>
+              <td>{{ formQuestion["question3"][0] }} <span style="font-weight: bold">ableism.</span></td>
+              <mat-radio-group formControlName="q3">
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Strongly Agree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Agree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Neither Agree nor Disagree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Disagree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Strongly Disagree"></mat-radio-button>
+                </td>
+              </mat-radio-group>
+            </tr>
+            <br />
+
+            <tr>
+              <td>
+                {{ formQuestion["question4"][0] }}
+                <span style="font-weight: bold">Teaching English to Speakers of Other Languages (TESOL).</span>
+              </td>
+              <mat-radio-group formControlName="q4">
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Strongly Agree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Agree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Neither Agree nor Disagree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Disagree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Strongly Disagree"></mat-radio-button>
+                </td>
+              </mat-radio-group>
+            </tr>
+            <br />
+
+            <tr>
+              <td>
+                {{ formQuestion["question5"][0] }}
+                <span style="font-weight: bold">race or ethnicity.</span>
+              </td>
+              <mat-radio-group formControlName="q5">
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Strongly Agree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Agree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Neither Agree nor Disagree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Disagree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Strongly Disagree"></mat-radio-button>
+                </td>
+              </mat-radio-group>
+            </tr>
+            <br />
+
+            <tr>
+              <td>{{ formQuestion["question6"][0] }} <span style="font-weight: bold">culture.</span></td>
+              <mat-radio-group formControlName="q6">
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Strongly Agree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Agree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Neither Agree nor Disagree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Disagree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Strongly Disagree"></mat-radio-button>
+                </td>
+              </mat-radio-group>
+            </tr>
+            <br />
+
+            <tr>
+              <td>
+                {{ formQuestion["question7"][0] }}
+                <span style="font-weight: bold">diversity, equity, and inclusion (DEI).</span>
+              </td>
+              <mat-radio-group formControlName="q7">
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Strongly Agree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Agree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Neither Agree nor Disagree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Disagree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Strongly Disagree"></mat-radio-button>
+                </td>
+              </mat-radio-group>
+            </tr>
+            <br />
+
+            <tr>
+              <td>
+                {{ formQuestion["question8"][0] }}
+                <span style="font-weight: bold">racial, ethnic, and cultural</span>
+                {{ formQuestion["question8"][1] }}
+              </td>
+              <mat-radio-group formControlName="q8">
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Strongly Agree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Agree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Neither Agree nor Disagree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Disagree"></mat-radio-button>
+                </td>
+                <td>
+                  <mat-radio-button class="col-lg-2" value="Strongly Disagree"></mat-radio-button>
+                </td>
+              </mat-radio-group>
+            </tr>
+            <br />
+          </tbody>
+        </table>
+
+        <p>{{ formQuestion["question9"] }}</p>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('Abolitionist Teaching')"
+          >Abolitionist Teaching
+        </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('AsianCrit')">AsianCrit </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('Courageous Conversations About Race')"
+          >Courageous Conversations About Race
+        </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('Critical Pedagogy')">
+          Critical Pedagogy
+        </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('Critical Race Theory')"
+          >Critical Race Theory
+        </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('Cultural Proficiency')"
+          >Cultural Proficiency
+        </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('Culturally Relevant Teaching')"
+          >Culturally Relevant Teaching
+        </mat-checkbox>
+
+        <mat-checkbox
+          class="example-margin col-lg-6"
+          (click)="checkBoxFunction('Culturally Responsive School Leadership')"
+          >Culturally Responsive School Leadership
+        </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('Culturally Responsive Teaching')"
+          >Culturally Responsive Teaching
+        </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('Culturally Sustaining Pedagogies')"
+          >Culturally Sustaining Pedagogies
+        </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('Reality Pedagogy')"
+          >Reality Pedagogy
+        </mat-checkbox>
+
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('(Dis)Crit')">(Dis)Crit </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('Hip-Hop Education')"
+          >Hip-Hop Education
+        </mat-checkbox>
+
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('LatCrit')">LatCrit </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('Multicultural Education')"
+          >Multicultural Education
+        </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6">Other (please specify) </mat-checkbox>
+        <mat-form-field appearance="outline" class="col-lg-4">
+          <mat-label>Please specify</mat-label>
+          <input formControlName="other9" type="text" matInput placeholder="" />
+        </mat-form-field>
+
+        <p>
+          {{ formQuestion["question10"][0]
+          }}<span
+            style="font-weight: bold; font-style: italic"
+            matTooltip="Cultural competence is the ability to successfully teach students who come from a culture or cultures other than our own (Moule, 2011)."
+          >
+            cultural competence?
+          </span>
+          {{ formQuestion["question10"][1] }}
+        </p>
+        <mat-form-field appearance="outline" class="col-lg-4">
+          <mat-label>Describe</mat-label>
+          <input formControlName="q10" type="text" matInput placeholder="" required />
+        </mat-form-field>
+
+        <p>{{ formQuestion["question11"] }}</p>
+        <mat-form-field appearance="outline" class="col-lg-4">
+          <mat-label>Describe</mat-label>
+          <input formControlName="q11" type="text" matInput placeholder="" required />
+        </mat-form-field>
+      </div>
+      <div class="buttons">
+        <button class="btn" style="background-color: #29abe2" (click)="submit()">Submit</button>
+      </div>
+    </div>
+  </mat-card>
+</div>
diff --git a/src/app/components/post-survey/post-survey.component.spec.ts b/src/app/components/post-survey/post-survey.component.spec.ts
index f2c6664..44ee456 100644
--- a/src/app/components/post-survey/post-survey.component.spec.ts
+++ b/src/app/components/post-survey/post-survey.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { PostSurveyComponent } from './post-survey.component';
+import { PostSurveyComponent } from "./post-survey.component";
 
-describe('PostSurveyComponent', () => {
+describe("PostSurveyComponent", () => {
   let component: PostSurveyComponent;
   let fixture: ComponentFixture<PostSurveyComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ PostSurveyComponent ]
-    })
-    .compileComponents();
+      declarations: [PostSurveyComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('PostSurveyComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/post-survey/post-survey.component.ts b/src/app/components/post-survey/post-survey.component.ts
index 3900f41..4ded338 100644
--- a/src/app/components/post-survey/post-survey.component.ts
+++ b/src/app/components/post-survey/post-survey.component.ts
@@ -8,134 +8,130 @@ import { DialogPDfComponent } from "../pre-survey/dialog-pdf/dialog-pdf.componen
 import { CPCQService } from "src/app/services/cpcq.service";
 
 @Component({
-    selector: "app-post-survey",
-    templateUrl: "./post-survey.component.html",
-    styleUrls: ["./post-survey.component.css"],
+  selector: "app-post-survey",
+  templateUrl: "./post-survey.component.html",
+  styleUrls: ["./post-survey.component.css"],
 })
 export class PostSurveyComponent implements OnInit {
-    postSurveyForm: FormGroup;
+  postSurveyForm: FormGroup;
 
-    consentFlag: boolean;
-    formQuestion: any;
+  consentFlag: boolean;
+  formQuestion: any;
 
-    constructor(
-        private router: Router,
-        public dialog: MatDialog,
-        private fb: FormBuilder,
-        private presurvey: PreSurveyService,
-        private apiService: CPCQService
-    ) {}
+  constructor(
+    private router: Router,
+    public dialog: MatDialog,
+    private fb: FormBuilder,
+    private presurvey: PreSurveyService,
+    private apiService: CPCQService
+  ) {}
 
-    ngOnInit(): void {
-        this.postSurveyForm = this.fb.group({
-            q1: [""],
-            q2: [""],
-            q3: [""],
-            q4: [""],
-            q5: [""],
-            q6: [""],
-            q7: [""],
-            q8: [""],
-            q9: [""],
-            q10: [""],
-            q11: [""],
-            other9: [""],
-        });
+  ngOnInit(): void {
+    this.postSurveyForm = this.fb.group({
+      q1: [""],
+      q2: [""],
+      q3: [""],
+      q4: [""],
+      q5: [""],
+      q6: [""],
+      q7: [""],
+      q8: [""],
+      q9: [""],
+      q10: [""],
+      q11: [""],
+      other9: [""],
+    });
 
-        this.presurvey.getPreSurveyAnswer().subscribe((res) => {
-            this.consentFlag = res[0]["consent"];
-        });
+    this.presurvey.getPreSurveyAnswer().subscribe((res) => {
+      this.consentFlag = res[0]["consent"];
+    });
 
-        // if(localStorage.getItem("consent") == "true"){
-        //   this.consentFlag = true
-        // }
-        // else{
-        //   this.consentFlag = false
-        // }
-        this.presurvey.getPostSurveyFormQuestions().subscribe(
-            (res) => {
-                this.formQuestion = res[0];
-                for (let key in this.formQuestion) {
-                    if (this.formQuestion[key].indexOf("gender inequality") != -1) {
-                        this.formQuestion[key] = this.formQuestion[key].split("gender inequality.");
-                    } else if (this.formQuestion[key].indexOf("LGBTQA+.") != -1) {
-                        this.formQuestion[key] = this.formQuestion[key].split("LGBTQA+.");
-                    } else if (this.formQuestion[key].indexOf("ableism.") != -1) {
-                        this.formQuestion[key] = this.formQuestion[key].split("ableism.");
-                    } else if (
-                        this.formQuestion[key].indexOf("Teaching English to Speakers of Other Languages (TESOL).") != -1
-                    ) {
-                        this.formQuestion[key] = this.formQuestion[key].split(
-                            "Teaching English to Speakers of Other Languages (TESOL)."
-                        );
-                    } else if (this.formQuestion[key].indexOf("race or ethnicity.") != -1) {
-                        this.formQuestion[key] = this.formQuestion[key].split("race or ethnicity.");
-                    } else if (this.formQuestion[key].indexOf("culture.") != -1) {
-                        this.formQuestion[key] = this.formQuestion[key].split("culture.");
-                    } else if (this.formQuestion[key].indexOf("diversity, equity, and inclusion (DEI).") != -1) {
-                        this.formQuestion[key] = this.formQuestion[key].split(
-                            "diversity, equity, and inclusion (DEI)."
-                        );
-                    } else if (this.formQuestion[key].indexOf("racial, ethnic, and cultural") != -1) {
-                        this.formQuestion[key] = this.formQuestion[key].split("racial, ethnic, and cultural");
-                    } else if (this.formQuestion[key].indexOf("cultural competence?")) {
-                        this.formQuestion[key] = this.formQuestion[key].split("cultural competence?");
-                    }
-                }
-            },
-            (err) => {}
-        );
-    }
-
-    irbFunction() {
-        this.dialog.open(DialogPDfComponent, {
-            data: {
-                animal: "panda",
-            },
-        });
-    }
-    checkBoxAnswers = [];
-    checkBoxFunction(e) {
-        if (this.checkBoxAnswers.indexOf(e) == -1) {
-            this.checkBoxAnswers.push(e);
-        } else {
-            var index = this.checkBoxAnswers.indexOf(e);
-            this.checkBoxAnswers.splice(index, 1);
+    // if(localStorage.getItem("consent") == "true"){
+    //   this.consentFlag = true
+    // }
+    // else{
+    //   this.consentFlag = false
+    // }
+    this.presurvey.getPostSurveyFormQuestions().subscribe(
+      (res) => {
+        this.formQuestion = res[0];
+        for (let key in this.formQuestion) {
+          if (this.formQuestion[key].indexOf("gender inequality") != -1) {
+            this.formQuestion[key] = this.formQuestion[key].split("gender inequality.");
+          } else if (this.formQuestion[key].indexOf("LGBTQA+.") != -1) {
+            this.formQuestion[key] = this.formQuestion[key].split("LGBTQA+.");
+          } else if (this.formQuestion[key].indexOf("ableism.") != -1) {
+            this.formQuestion[key] = this.formQuestion[key].split("ableism.");
+          } else if (this.formQuestion[key].indexOf("Teaching English to Speakers of Other Languages (TESOL).") != -1) {
+            this.formQuestion[key] = this.formQuestion[key].split(
+              "Teaching English to Speakers of Other Languages (TESOL)."
+            );
+          } else if (this.formQuestion[key].indexOf("race or ethnicity.") != -1) {
+            this.formQuestion[key] = this.formQuestion[key].split("race or ethnicity.");
+          } else if (this.formQuestion[key].indexOf("culture.") != -1) {
+            this.formQuestion[key] = this.formQuestion[key].split("culture.");
+          } else if (this.formQuestion[key].indexOf("diversity, equity, and inclusion (DEI).") != -1) {
+            this.formQuestion[key] = this.formQuestion[key].split("diversity, equity, and inclusion (DEI).");
+          } else if (this.formQuestion[key].indexOf("racial, ethnic, and cultural") != -1) {
+            this.formQuestion[key] = this.formQuestion[key].split("racial, ethnic, and cultural");
+          } else if (this.formQuestion[key].indexOf("cultural competence?")) {
+            this.formQuestion[key] = this.formQuestion[key].split("cultural competence?");
+          }
         }
+      },
+      (err) => {}
+    );
+  }
+
+  irbFunction() {
+    this.dialog.open(DialogPDfComponent, {
+      data: {
+        animal: "panda",
+      },
+    });
+  }
+  checkBoxAnswers = [];
+  checkBoxFunction(e) {
+    if (this.checkBoxAnswers.indexOf(e) == -1) {
+      this.checkBoxAnswers.push(e);
+    } else {
+      var index = this.checkBoxAnswers.indexOf(e);
+      this.checkBoxAnswers.splice(index, 1);
     }
-    submit() {
-        if (!this.postSurveyForm.valid) {
-            Swal.fire({
-                text: "Please fill all the fields",
-                icon: "error",
-            }).then((res) => {});
-        } else {
-            this.postSurveyForm.get("q9").setValue(this.checkBoxAnswers);
+  }
+  submit() {
+    if (!this.postSurveyForm.valid) {
+      Swal.fire({
+        text: "Please fill all the fields",
+        icon: "error",
+      }).then((res) => {});
+    } else {
+      this.postSurveyForm.get("q9").setValue(this.checkBoxAnswers);
 
-            if (this.postSurveyForm.value["other9"].length != 0) {
-                this.checkBoxAnswers.push(this.postSurveyForm.value["other9"]);
-                this.postSurveyForm.get("q9").setValue(this.checkBoxAnswers);
-            }
-            this.postSurveyForm.removeControl("other9");
+      if (this.postSurveyForm.value["other9"].length != 0) {
+        this.checkBoxAnswers.push(this.postSurveyForm.value["other9"]);
+        this.postSurveyForm.get("q9").setValue(this.checkBoxAnswers);
+      }
+      this.postSurveyForm.removeControl("other9");
 
-            this.presurvey.submitPostSurvey(this.postSurveyForm.value).subscribe(
-                (res) => {
-                    this.apiService.patchStatus("postsurveystatus").subscribe((res) => {
-                        Swal.fire({
-                            text: "Submitted!",
-                            icon: "success",
-                        }).then((res) => {
-                            this.router.navigateByUrl("/final");
-                        });
-                    });
-                },
-                (err) => {
-                    Swal.fire({
-                        text: "Failed to submit form.",
-                        icon: "error",
-                    }).then((res) => {});
-                }
-            );
+      this.presurvey.submitPostSurvey(this.postSurveyForm.value).subscribe(
+        (res) => {
+          this.apiService.patchStatus("postsurveystatus").subscribe((res) => {
+            Swal.fire({
+              text: "Submitted!",
+              icon: "success",
+            }).then((res) => {
+              this.router.navigateByUrl("/final");
+            });
+          });
+        },
+        (err) => {
+          Swal.fire({
+            text: "Failed to submit form.",
+            icon: "error",
+          }).then((res) => {});
         }
+      );
     }
+  }
 }
diff --git a/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.css b/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.css
index 0b867c4..c08b69a 100644
--- a/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.css
+++ b/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.css
@@ -1,16 +1,16 @@
 .buttons {
-    margin-top: 20px;
-    display: -webkit-flex;
-             display: flex;
-             -webkit-justify-content: space-between;
-             justify-content: space-between;
+  margin-top: 20px;
+  display: -webkit-flex;
+  display: flex;
+  -webkit-justify-content: space-between;
+  justify-content: space-between;
 }
 
 .btn {
-    width: 200px;
-    background-color: #00b4d8;
-    color: white;
-    display: inline-block;
-    padding: 10px;
-    margin-bottom: 20px;
-}
\ No newline at end of file
+  width: 200px;
+  background-color: #00b4d8;
+  color: white;
+  display: inline-block;
+  padding: 10px;
+  margin-bottom: 20px;
+}
diff --git a/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.html b/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.html
index 8f2d88e..2d8c926 100644
--- a/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.html
+++ b/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.html
@@ -3,6 +3,6 @@
   <pdf-viewer src="../../../assets/consent.pdf"></pdf-viewer>
 </div>
 <div class="buttons">
-    <button class="btn" style="background-color: #43aa8b;" mat-dialog-close (click) = "agree()" >I AGREE</button>
-    <button class="btn" style="background-color: #f94144;" mat-dialog-close (click) = "disagree()">I DISAGREE</button>
+  <button class="btn" style="background-color: #43aa8b" mat-dialog-close (click)="agree()">I AGREE</button>
+  <button class="btn" style="background-color: #f94144" mat-dialog-close (click)="disagree()">I DISAGREE</button>
 </div>
diff --git a/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.spec.ts b/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.spec.ts
index 5c0b586..29b768d 100644
--- a/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.spec.ts
+++ b/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { DialogPDfComponent } from './dialog-pdf.component';
+import { DialogPDfComponent } from "./dialog-pdf.component";
 
-describe('DialogPDfComponent', () => {
+describe("DialogPDfComponent", () => {
   let component: DialogPDfComponent;
   let fixture: ComponentFixture<DialogPDfComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ DialogPDfComponent ]
-    })
-    .compileComponents();
+      declarations: [DialogPDfComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('DialogPDfComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.ts b/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.ts
index a941935..5ae9162 100644
--- a/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.ts
+++ b/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.ts
@@ -1,29 +1,26 @@
-import { Component, OnInit, Inject } from '@angular/core';
-import Swal from 'sweetalert2';
-import { Router } from '@angular/router';
-import {MatDialog, MAT_DIALOG_DATA} from '@angular/material/dialog';
-import { PdfViewerModule } from 'ng2-pdf-viewer';
+import { Component, OnInit, Inject } from "@angular/core";
+import Swal from "sweetalert2";
+import { Router } from "@angular/router";
+import { MatDialog, MAT_DIALOG_DATA } from "@angular/material/dialog";
+import { PdfViewerModule } from "ng2-pdf-viewer";
 
 export interface DialogData {
-  animal: 'panda' | 'unicorn' | 'lion';
+  animal: "panda" | "unicorn" | "lion";
 }
 @Component({
-  selector: 'app-dialog-pdf',
-  templateUrl: './dialog-pdf.component.html',
-  styleUrls: ['./dialog-pdf.component.css']
+  selector: "app-dialog-pdf",
+  templateUrl: "./dialog-pdf.component.html",
+  styleUrls: ["./dialog-pdf.component.css"],
 })
 export class DialogPDfComponent implements OnInit {
-
   constructor(@Inject(MAT_DIALOG_DATA) public data: DialogData) {}
 
-  ngOnInit(): void {
-  }
+  ngOnInit(): void {}
 
-  agree(){
-    localStorage.setItem("consent","true")
+  agree() {
+    localStorage.setItem("consent", "true");
   }
-  disagree(){
-    localStorage.setItem("consent","false")
+  disagree() {
+    localStorage.setItem("consent", "false");
   }
-
 }
diff --git a/src/app/components/pre-survey/pre-survey.component.css b/src/app/components/pre-survey/pre-survey.component.css
index 01158b0..4182aef 100644
--- a/src/app/components/pre-survey/pre-survey.component.css
+++ b/src/app/components/pre-survey/pre-survey.component.css
@@ -1,58 +1,58 @@
-@media screen and (min-width:1024px) {
-    .form-wrap {
-        padding-top: 100px;
-    }
+@media screen and (min-width: 1024px) {
+  .form-wrap {
+    padding-top: 100px;
+  }
 }
 
 .example-radio-group {
-    display: flex;
-    flex-direction: column;
-    margin: 15px 0;
+  display: flex;
+  flex-direction: column;
+  margin: 15px 0;
 }
 
 h4 {
-    font-size: 20px;
-    line-height: 150%;
-    font-weight: bold;
+  font-size: 20px;
+  line-height: 150%;
+  font-weight: bold;
 }
 
 p {
-    font-size: 18px;
-    line-height: 150%;
+  font-size: 18px;
+  line-height: 150%;
 }
 
 .mat-card {
-    margin: 20px 60px;
-    padding: 0;
+  margin: 20px 60px;
+  padding: 0;
 }
 
 h1 {
-    background-color: #efe9ae;
-    color: black;
-    line-height: 150%;
-    text-align: center;
-    padding: 10px 0;
+  background-color: #efe9ae;
+  color: black;
+  line-height: 150%;
+  text-align: center;
+  padding: 10px 0;
 }
 
 .questions {
-    padding: 20px;
+  padding: 20px;
 }
 
 .sign1 {
-    border: 1px solid black;
-    margin: 20px 5px !important;
+  border: 1px solid black;
+  margin: 20px 5px !important;
 }
 
 .buttons {
-    margin-bottom: 50px;
-    text-align: center;
+  margin-bottom: 50px;
+  text-align: center;
 }
 
 .btn {
-    width: 200px;
-    background-color: #00b4d8;
-    color: white;
-    display: inline-block;
-    padding: 10px;
-    margin-bottom: 20px;
-}
\ No newline at end of file
+  width: 200px;
+  background-color: #00b4d8;
+  color: white;
+  display: inline-block;
+  padding: 10px;
+  margin-bottom: 20px;
+}
diff --git a/src/app/components/pre-survey/pre-survey.component.html b/src/app/components/pre-survey/pre-survey.component.html
index b437d7e..a3b5032 100644
--- a/src/app/components/pre-survey/pre-survey.component.html
+++ b/src/app/components/pre-survey/pre-survey.component.html
@@ -1,621 +1,674 @@
 <div class="form-wrap">
-    <mat-card class="">
-        <div>
-            <h1>Cultural Proficiency Continuum Dialogic Protocol: Pre-Survey</h1>
-            <div [formGroup]="preSurveyForm" class="questions">
-                <h4 >Your responses are confidential and will not be used for research or published without your informed and signed consent. 
-                    <span><p style="font-weight: 400; color: blue;" (click)="irbFunction()" >Click here to review the <span style="font-style: italic;">Research Participant Information and Consent Form.</span></p></span>
-                </h4>
-                <br>
-                <br>
-
-                <div class="row">
+  <mat-card class="">
+    <div>
+      <h1>Cultural Proficiency Continuum Dialogic Protocol: Pre-Survey</h1>
+      <div [formGroup]="preSurveyForm" class="questions">
+        <h4>
+          Your responses are confidential and will not be used for research or published without your informed and
+          signed consent.
+          <span
+            ><p style="font-weight: 400; color: blue" (click)="irbFunction()">
+              Click here to review the
+              <span style="font-style: italic">Research Participant Information and Consent Form.</span>
+            </p></span
+          >
+        </h4>
+        <br />
+        <br />
+
+        <div class="row">
+          <div class="col-6">
+            <p>{{ formQuestion["question1"] }}</p>
+            <mat-form-field appearance="outline" class="col-lg-8">
+              <mat-label>Enter Last Name</mat-label>
+              <input value="nedjnd" formControlName="q1" type="text" matInput placeholder="Last Name" required />
+            </mat-form-field>
+          </div>
+          <div class="col-6">
+            <p>{{ formQuestion["question2"] }}</p>
+            <mat-form-field appearance="outline" class="col-lg-8">
+              <mat-label>Enter First Name</mat-label>
+              <input formControlName="q2" type="text" matInput placeholder="First Name" />
+            </mat-form-field>
+          </div>
+        </div>
+        <div class="row">
+          <div class="col-6">
+            <p>{{ formQuestion["question3"] }}</p>
+            <mat-form-field appearance="outline" class="col-lg-6">
+              <mat-label>Enter email</mat-label>
+              <input formControlName="q3" type="email" matInput placeholder="name@example.com" required />
+            </mat-form-field>
+          </div>
+          <div class="col-6">
+            <p>{{ formQuestion["question4"] }}</p>
+            <mat-form-field appearance="outline" class="col-lg-6">
+              <mat-label>State</mat-label>
+              <select formControlName="q4" matNativeControl required id="state" name="state">
+                <option value="---">---</option>
+                <option value="Alabama">Alabama</option>
+                <option value="Alaska">Alaska</option>
+                <option value="Arizona">Arizona</option>
+                <option value="Arkansas">Arkansas</option>
+                <option value="California">California</option>
+                <option value="Colorado">Colorado</option>
+                <option value="Connecticut">Connecticut</option>
+                <option value="Delaware">Delaware</option>
+                <option value="District of Columbia">District of Columbia</option>
+                <option value="Florida">Florida</option>
+                <option value="Georgia">Georgia</option>
+                <option value="Guam">Guam</option>
+                <option value="Hawaii">Hawaii</option>
+                <option value="Idaho">Idaho</option>
+                <option value="Illinois">Illinois</option>
+                <option value="Indiana">Indiana</option>
+                <option value="Iowa">Iowa</option>
+                <option value="Kansas">Kansas</option>
+                <option value="Kentucky">Kentucky</option>
+                <option value="Louisiana">Louisiana</option>
+                <option value="Maine">Maine</option>
+                <option value="Maryland">Maryland</option>
+                <option value="Massachusetts">Massachusetts</option>
+                <option value="Michigan">Michigan</option>
+                <option value="Minnesota">Minnesota</option>
+                <option value="Mississippi">Mississippi</option>
+                <option value="Missouri">Missouri</option>
+                <option value="Montana">Montana</option>
+                <option value="Nebraska">Nebraska</option>
+                <option value="Nevada">Nevada</option>
+                <option value="New Hampshire">New Hampshire</option>
+                <option value="New Jersey">New Jersey</option>
+                <option value="New Mexico">New Mexico</option>
+                <option value="New York">New York</option>
+                <option value="North Carolina">North Carolina</option>
+                <option value="North Dakota">North Dakota</option>
+                <option value="Northern Marianas Islands">Northern Marianas Islands</option>
+                <option value="Ohio">Ohio</option>
+                <option value="Oklahoma">Oklahoma</option>
+                <option value="Oregon">Oregon</option>
+                <option value="Pennsylvania">Pennsylvania</option>
+                <option value="Puerto Rico">Puerto Rico</option>
+                <option value="Rhode Island">Rhode Island</option>
+                <option value="South Carolina">South Carolina</option>
+                <option value="South Dakota">South Dakota</option>
+                <option value="Tennessee">Tennessee</option>
+                <option value="Texas">Texas</option>
+                <option value="Utah">Utah</option>
+                <option value="Vermont">Vermont</option>
+                <option value="Virginia">Virginia</option>
+                <option value="Virgin Islands">Virgin Islands</option>
+                <option value="Washington">Washington</option>
+                <option value="West Virginia">West Virginia</option>
+                <option value="Wisconsin">Wisconsin</option>
+                <option value="Wyoming">Wyoming</option>
+              </select>
+            </mat-form-field>
+          </div>
+        </div>
 
-                    <div class="col-6">
-                        <p>{{formQuestion['question1']}}</p>
-                        <mat-form-field  appearance="outline" class="col-lg-8">
-                            <mat-label>Enter Last Name</mat-label>
-                            <input value="nedjnd" formControlName="q1" type="text" matInput placeholder="Last Name" required>
-                        </mat-form-field>
-                    </div>
-                    <div class="col-6">
-                        <p>{{formQuestion['question2']}}</p>
-                        <mat-form-field  appearance="outline" class="col-lg-8">
-                            <mat-label>Enter First Name</mat-label>
-                            <input formControlName="q2" type="text" matInput placeholder="First Name">
-                        </mat-form-field>
-                    </div>
+        <p>{{ formQuestion["question5"] }}</p>
+        <mat-radio-group formControlName="q5" class="example-radio-group">
+          <div class="row">
+            <mat-radio-button
+              class="col-lg-3"
+              value="Pre-Service Teacher (with clinical, field, or practicum experience)"
+              ><span style="white-space: normal"
+                >Pre-Service Teacher (with clinical, field, or practicum experience)</span
+              >
+            </mat-radio-button>
+            <mat-radio-button
+              class="col-lg-3"
+              value="Pre-Service Teacher (without clinical, field, or practicum  experience)"
+              ><span style="white-space: normal"
+                >Pre-Service Teacher (without clinical, field, or practicum experience)</span
+              >
+            </mat-radio-button>
+          </div>
+          <div class="row">
+            <mat-radio-button class="col-lg-3" value="In-service Teacher (1-2 years of experience)"
+              ><span style="white-space: normal">In-service Teacher (1-2 years of experience)</span>
+            </mat-radio-button>
+            <mat-radio-button class="col-lg-3" value="In-service Teacher (3-5 years of experience)"
+              ><span style="white-space: normal">In-service Teacher (3-5 years of experience)</span>
+            </mat-radio-button>
+          </div>
+          <div class="row">
+            <mat-radio-button class="col-lg-3" value="In-service Teacher (6-10 years of experience)"
+              ><span style="white-space: normal">In-service Teacher (6-10 years of experience)</span>
+            </mat-radio-button>
+            <mat-radio-button class="col-lg-3" value="In-service Teacher (11-15 years of experience)"
+              ><span style="white-space: normal">In-service Teacher (11-15 years of experience)</span>
+            </mat-radio-button>
+          </div>
+          <div class="row">
+            <mat-radio-button class="col-lg-3" value="In-service Teacher (more than 15 years of experience)"
+              ><span style="white-space: normal">In-service Teacher (more than 15 years of experience)</span>
+            </mat-radio-button>
+            <mat-radio-button class="col-lg-3" value="Graduate Student"
+              ><span style="white-space: normal">Graduate Student</span>
+            </mat-radio-button>
+          </div>
+          <div class="row">
+            <mat-radio-button class="col-lg-3" value="Teacher Educator"
+              ><span style="white-space: normal">Teacher Educator</span>
+            </mat-radio-button>
+            <mat-radio-button class="col-lg-3" value="School Leader"
+              ><span style="white-space: normal">School Leader</span>
+            </mat-radio-button>
+          </div>
+          <div class="row">
+            <mat-radio-button class="col-lg-3" value="Mentor Teacher"
+              ><span style="white-space: normal">Mentor Teacher</span>
+            </mat-radio-button>
+            <mat-radio-button class="col-lg-3" value="Other in Question 5 (please specify)"
+              ><span style="white-space: normal">Other (please specify) </span>
+            </mat-radio-button>
+          </div>
+        </mat-radio-group>
+        <mat-form-field appearance="outline" class="col-lg-6">
+          <mat-label>Please specify</mat-label>
+          <input formControlName="other5" type="text" matInput placeholder="" />
+        </mat-form-field>
+
+        <p></p>
+        <p>{{ formQuestion["question6"] }}</p>
+        <mat-radio-group formControlName="q6" class="example-radio-group">
+          <mat-radio-button value="Four-Year Degree"
+            ><span style="white-space: normal">Four-Year Degree</span>
+          </mat-radio-button>
+          <mat-radio-button value="Five-Year Degree"
+            ><span style="white-space: normal">Five-Year Degree</span>
+          </mat-radio-button>
+          <mat-radio-button value="Alternative Teaching Certification at a university or college (e.g., M.A.T., M.Ed.)"
+            ><span style="white-space: normal"
+              >Alternative Teaching Certification at a university or college (e.g., M.A.T., M.Ed.)</span
+            >
+          </mat-radio-button>
+          <mat-radio-button
+            value="Alternative Teaching Certification through a non-profit or for-profit organization (e.g., Teach for America, Troops for Teachers)"
+            ><span style="white-space: normal"
+              >Alternative Teaching Certification through a non-profit or for-profit organization (e.g., Teach for
+              America, Troops for Teachers)</span
+            >
+          </mat-radio-button>
+          <mat-radio-button value="Other in question 6 (please specify)"
+            ><span style="white-space: normal">Other (please specify)</span>
+          </mat-radio-button>
+        </mat-radio-group>
+        <mat-form-field appearance="outline" class="col-lg-4">
+          <mat-label>Please specify</mat-label>
+          <input formControlName="other6" type="text" matInput placeholder="" />
+        </mat-form-field>
+
+        <p>{{ formQuestion["question7"] }}</p>
+
+        <div class="row">
+          <mat-checkbox
+            class="col-lg-3"
+            value="Early Childhood Education"
+            (click)="checkBox7Function('Early Childhood Education')"
+            ><span style="white-space: normal">Early Childhood Education</span>
+          </mat-checkbox>
+          <mat-checkbox
+            class="col-lg-3"
+            value="Elementary Education"
+            (click)="checkBox7Function('Elementary Education')"
+            ><span style="white-space: normal">Elementary Education</span>
+          </mat-checkbox>
+        </div>
+        <div class="row">
+          <mat-checkbox
+            class="col-lg-3"
+            value="Middle School Education"
+            (click)="checkBox7Function('Middle School Education')"
+            ><span style="white-space: normal">Middle School Education</span>
+          </mat-checkbox>
+          <mat-checkbox class="col-lg-3" value="Secondary Education" (click)="checkBox7Function('Secondary Education')"
+            ><span style="white-space: normal">Secondary Education</span>
+          </mat-checkbox>
+        </div>
+        <div class="row">
+          <mat-checkbox
+            class="col-lg-3"
+            value="Special Education (SPED)"
+            (click)="checkBox7Function('Special Education (SPED)')"
+            ><span style="white-space: normal">Special Education (SPED)</span>
+          </mat-checkbox>
+          <mat-checkbox
+            class="col-lg-3"
+            value="English as a Second Language (ESL)"
+            (click)="checkBox7Function('English as a Second Language (ESL)')"
+            ><span style="white-space: normal">English as a Second Language (ESL)</span>
+          </mat-checkbox>
+        </div>
+        <div class="row">
+          <mat-checkbox class="col-lg-3" value="Reading Specialist" (click)="checkBox7Function('Reading Specialist')"
+            ><span style="white-space: normal">Reading Specialist</span>
+          </mat-checkbox>
+          <mat-checkbox
+            class="col-lg-3"
+            value="Principal Certification"
+            (click)="checkBox7Function('Principal Certification')"
+            ><span style="white-space: normal">Principal Certification</span>
+          </mat-checkbox>
+        </div>
+        <div class="row">
+          <mat-checkbox class="col-lg-3" value="Other in Question 7 (please specify)"
+            ><span style="white-space: normal">Other (please specify)</span>
+          </mat-checkbox>
+          <mat-form-field appearance="outline" class="col-lg-7">
+            <mat-label>Please specify</mat-label>
+            <input formControlName="other7" type="text" matInput placeholder="" />
+          </mat-form-field>
+        </div>
 
-                </div>
+        <p>{{ formQuestion["question8"] }}</p>
+        <mat-radio-group formControlName="q8" class="example-radio-group">
+          <mat-radio-button value="Male">Male</mat-radio-button>
+          <mat-radio-button value="Female">Female</mat-radio-button>
+          <mat-radio-button value="Transgender Female">Transgender Female</mat-radio-button>
+          <mat-radio-button value="Transgender Male">Transgender Male</mat-radio-button>
+          <mat-radio-button value="Gender-Non-Conforming">Gender-Non-Conforming</mat-radio-button>
+          <mat-radio-button value="Prefer Not to Answer">Prefer Not to Answer </mat-radio-button>
+          <mat-radio-button value="Others in Question 8 (Please Specify)">Others (Please Specify)</mat-radio-button>
+          <mat-form-field appearance="outline" class="col-lg-4">
+            <mat-label>Please specify</mat-label>
+            <input formControlName="other8" type="text" matInput placeholder="" />
+          </mat-form-field>
+        </mat-radio-group>
+
+        <p>{{ formQuestion["question9"] }}</p>
+        <mat-radio-group formControlName="q9" class="example-radio-group">
+          <div class="row">
+            <mat-radio-button class="col-lg-2" value="18-24">18-24</mat-radio-button>
+            <mat-radio-button class="col-lg-2" value="25-34">25-34</mat-radio-button>
+            <mat-radio-button class="col-lg-2" value="35-44">35-44</mat-radio-button>
+          </div>
+          <div class="row">
+            <mat-radio-button class="col-lg-2" value="45-54">45-54</mat-radio-button>
+            <mat-radio-button class="col-lg-2" value="55-64">55-64</mat-radio-button>
+            <mat-radio-button class="col-lg-2" value="65+">65+</mat-radio-button>
+          </div>
+        </mat-radio-group>
+
+        <p>{{ formQuestion["question10"] }}</p>
+        <mat-radio-group formControlName="q10" class="example-radio-group">
+          <div class="row">
+            <mat-radio-button class="col-lg-3" value="White"
+              ><span style="white-space: normal">White</span>
+            </mat-radio-button>
+            <mat-radio-button class="col-lg-3" value="Black or African American"
+              ><span style="white-space: normal">Black or African American</span>
+            </mat-radio-button>
+          </div>
+          <div class="row">
+            <mat-radio-button class="col-lg-3" value="Hispanic or Latino"
+              ><span style="white-space: normal">Hispanic or Latino</span>
+            </mat-radio-button>
+            <mat-radio-button class="col-lg-3" value="American Indian or Alaska Native"
+              ><span style="white-space: normal">American Indian or Alaska Native</span>
+            </mat-radio-button>
+          </div>
+          <div class="row">
+            <mat-radio-button class="col-lg-3" value="Biracial (two races/ethnicities)"
+              ><span style="white-space: normal">Biracial (two races/ethnicities)</span>
+            </mat-radio-button>
+            <mat-radio-button class="col-lg-3" value="Multiracial (more than two races/ethnicities)"
+              ><span style="white-space: normal">Multiracial (more than two races/ethnicities)</span>
+            </mat-radio-button>
+          </div>
+          <div class="row">
+            <mat-radio-button class="col-lg-3" value="Another Race/Ethnicity (please specify)"
+              ><span style="white-space: normal">Another Race/Ethnicity (please specify)</span>
+            </mat-radio-button>
+            <mat-form-field appearance="outline" class="col-lg-4">
+              <mat-label>Please specify</mat-label>
+              <input formControlName="other10" type="text" matInput placeholder="" />
+            </mat-form-field>
+          </div>
+        </mat-radio-group>
+
+        <p></p>
+
+        <p>{{ formQuestion["question11"] }}</p>
+        <mat-radio-group formControlName="q11" class="example-radio-group">
+          <div class="row">
+            <mat-radio-button class="col-lg-2" value="Poor">Poor </mat-radio-button>
+            <mat-radio-button class="col-lg-2" value="Working Poor">Working Poor </mat-radio-button>
+            <mat-radio-button class="col-lg-2" value="Lower Middle Class"> Lower Middle Class </mat-radio-button>
+          </div>
+          <div class="row">
+            <mat-radio-button class="col-lg-2" value="Middle Class">Middle Class </mat-radio-button>
+            <mat-radio-button class="col-lg-2" value="Upper Middle Class">Upper Middle Class </mat-radio-button>
+            <mat-radio-button class="col-lg-2" value="Wealthy">Wealthy</mat-radio-button>
+          </div>
+        </mat-radio-group>
+
+        <p>{{ formQuestion["question12"] }}</p>
+        <mat-radio-group formControlName="q12" class="example-radio-group">
+          <div class="row">
+            <mat-radio-button class="col-lg-2" value="Liberal">Liberal </mat-radio-button>
+            <mat-radio-button class="col-lg-2" value="Conservative">Conservative </mat-radio-button>
+            <mat-radio-button class="col-lg-2" value="Independent"> Independent </mat-radio-button>
+          </div>
+          <div class="row">
+            <mat-radio-button class="col-lg-2" value="Other in Question 12 (please specify)"
+              >Other (please specify)
+            </mat-radio-button>
+          </div>
+          <mat-form-field appearance="outline" class="col-lg-4">
+            <mat-label>Please specify</mat-label>
+            <input formControlName="other12" type="text" matInput placeholder="" />
+          </mat-form-field>
+        </mat-radio-group>
+
+        <p>{{ formQuestion["question13"] }}</p>
+        <mat-radio-group formControlName="q13" class="example-radio-group">
+          <div class="row">
+            <mat-radio-button class="col-lg-3" value="Christianity"
+              ><span style="white-space: normal">Christianity</span>
+            </mat-radio-button>
+            <mat-radio-button class="col-lg-3" value="Catholicism"
+              ><span style="white-space: normal">Catholicism</span>
+            </mat-radio-button>
+            <mat-radio-button class="col-lg-3" value="Protestantism"
+              ><span style="white-space: normal">Protestantism</span>
+            </mat-radio-button>
+          </div>
+          <div class="row">
+            <mat-radio-button class="col-lg-3" value="Judaism"
+              ><span style="white-space: normal">Judaism</span>
+            </mat-radio-button>
+            <mat-radio-button class="col-lg-3" value="Islam"
+              ><span style="white-space: normal">Islam</span>
+            </mat-radio-button>
+            <mat-radio-button class="col-lg-3" value="Hinduism"
+              ><span style="white-space: normal">Hinduism</span>
+            </mat-radio-button>
+          </div>
+          <div class="row">
+            <mat-radio-button class="col-lg-3" value="Buddhism"
+              ><span style="white-space: normal">Buddhism</span>
+            </mat-radio-button>
+            <mat-radio-button class="col-lg-3" value="African traditional and Diasporic"
+              ><span style="white-space: normal">African traditional and Diasporic</span>
+            </mat-radio-button>
+            <mat-radio-button class="col-lg-3" value="Chinese traditional religion"
+              ><span style="white-space: normal">Chinese traditional religion</span>
+            </mat-radio-button>
+          </div>
+          <div class="row">
+            <mat-radio-button class="col-lg-3" value="Spiritual Nonreligious (e.g., Secular/Atheist)"
+              ><span style="white-space: normal">Spiritual Nonreligious (e.g., Secular/Atheist)</span>
+            </mat-radio-button>
+            <mat-radio-button class="col-lg-3" value="Other in question 13 (please specify)"
+              ><span style="white-space: normal">Other (please specify)</span>
+            </mat-radio-button>
+            <mat-form-field appearance="outline" class="col-lg-4">
+              <mat-label>Please specify</mat-label>
+              <input formControlName="other13" type="text" matInput placeholder="" />
+            </mat-form-field>
+          </div>
+        </mat-radio-group>
+        <div class="table-responsive">
+          <table class="table">
+            <thead style="text-align: center">
+              <tr>
+                <th></th>
                 <div class="row">
-                    <div class="col-6">
-                        <p>{{formQuestion['question3']}}</p>
-                        <mat-form-field  appearance="outline" class="col-lg-6">
-                            <mat-label>Enter email</mat-label>
-                            <input formControlName="q3" type="email" matInput placeholder="name@example.com" required>
-                        </mat-form-field>
-                    </div>
-                    <div class="col-6">
-                        <p>{{formQuestion['question4']}}</p>
-                        <mat-form-field  appearance="outline" class="col-lg-6">
-                            <mat-label>State</mat-label>
-                            <select formControlName="q4" matNativeControl required id="state" name="state"><option value="---">---</option><option value="Alabama">Alabama</option><option value="Alaska">Alaska</option><option value="Arizona">Arizona</option><option value="Arkansas">Arkansas</option><option value="California">California</option><option value="Colorado">Colorado</option><option value="Connecticut">Connecticut</option><option value="Delaware">Delaware</option><option value="District of Columbia">District of Columbia</option><option value="Florida">Florida</option><option value="Georgia">Georgia</option><option value="Guam">Guam</option><option value="Hawaii">Hawaii</option><option value="Idaho">Idaho</option><option value="Illinois">Illinois</option><option value="Indiana">Indiana</option><option value="Iowa">Iowa</option><option value="Kansas">Kansas</option><option value="Kentucky">Kentucky</option><option value="Louisiana">Louisiana</option><option value="Maine">Maine</option><option value="Maryland">Maryland</option><option value="Massachusetts">Massachusetts</option><option value="Michigan">Michigan</option><option value="Minnesota">Minnesota</option><option value="Mississippi">Mississippi</option><option value="Missouri">Missouri</option><option value="Montana">Montana</option><option value="Nebraska">Nebraska</option><option value="Nevada">Nevada</option><option value="New Hampshire">New Hampshire</option><option value="New Jersey">New Jersey</option><option value="New Mexico">New Mexico</option><option value="New York">New York</option><option value="North Carolina">North Carolina</option><option value="North Dakota">North Dakota</option><option value="Northern Marianas Islands">Northern Marianas Islands</option><option value="Ohio">Ohio</option><option value="Oklahoma">Oklahoma</option><option value="Oregon">Oregon</option><option value="Pennsylvania">Pennsylvania</option><option value="Puerto Rico">Puerto Rico</option><option value="Rhode Island">Rhode Island</option><option value="South Carolina">South Carolina</option><option value="South Dakota">South Dakota</option><option value="Tennessee">Tennessee</option><option value="Texas">Texas</option><option value="Utah">Utah</option><option value="Vermont">Vermont</option><option value="Virginia">Virginia</option><option value="Virgin Islands">Virgin Islands</option><option value="Washington">Washington</option><option value="West Virginia">West Virginia</option><option value="Wisconsin">Wisconsin</option><option value="Wyoming">Wyoming</option></select>
-                        </mat-form-field>
-                    </div>
+                  <th class="col-3">None</th>
+                  <th class="col-2">1</th>
+                  <th class="col-2">2</th>
+                  <th class="col-2">3</th>
+                  <th class="col-2">4 or more</th>
                 </div>
-
-                <p>{{formQuestion['question5']}}</p>
-                <mat-radio-group formControlName="q5" class="example-radio-group">
-                    <div class="row">
-                        <mat-radio-button class="col-lg-3" value="Pre-Service Teacher (with clinical, field, or practicum experience)"><span style="white-space: normal;">Pre-Service Teacher (with clinical, field, or practicum experience)</span>
-                        </mat-radio-button>
-                        <mat-radio-button class="col-lg-3" value="Pre-Service Teacher (without clinical, field, or practicum  experience)"><span style="white-space: normal;">Pre-Service Teacher (without clinical, field, or practicum  experience)</span>
-                        </mat-radio-button>
-                        
-                    </div>
-                    <div class="row">
-                        <mat-radio-button class="col-lg-3" value="In-service Teacher (1-2 years of experience)"><span style="white-space: normal;">In-service Teacher (1-2 years of experience)</span>
-                        </mat-radio-button>
-                        <mat-radio-button class="col-lg-3" value="In-service Teacher (3-5 years of experience)"><span style="white-space: normal;">In-service Teacher (3-5 years of experience)</span>
-                        </mat-radio-button>
-                    </div>
-                    <div class="row">
-                        <mat-radio-button class="col-lg-3" value="In-service Teacher (6-10 years of experience)"><span style="white-space: normal;">In-service Teacher (6-10 years of experience)</span>
-                        </mat-radio-button>
-                        <mat-radio-button class="col-lg-3" value="In-service Teacher (11-15 years of experience)"><span style="white-space: normal;">In-service Teacher (11-15 years of experience)</span>
-                        </mat-radio-button>
-                    </div>
-                    <div class="row">
-                        <mat-radio-button class="col-lg-3" value="In-service Teacher (more than 15 years of experience)"><span style="white-space: normal;">In-service Teacher (more than 15 years of experience)</span>
-                        </mat-radio-button>
-                        <mat-radio-button class="col-lg-3" value="Graduate Student"><span style="white-space: normal;">Graduate Student</span>
-                        </mat-radio-button>
-                    </div>
-                    <div class="row">
-                        <mat-radio-button class="col-lg-3" value="Teacher Educator"><span style="white-space: normal;">Teacher Educator</span>
-                        </mat-radio-button>
-                        <mat-radio-button class="col-lg-3" value="School Leader"><span style="white-space: normal;">School Leader</span>
-                        </mat-radio-button>
-                    </div>
-                    <div class="row">
-                        <mat-radio-button class="col-lg-3" value="Mentor Teacher"><span style="white-space: normal;">Mentor Teacher</span>
-                        </mat-radio-button>
-                        <mat-radio-button class="col-lg-3" value="Other in Question 5 (please specify)"><span style="white-space: normal;">Other (please specify) </span>
-                        </mat-radio-button>
-                    </div>
+              </tr>
+            </thead>
+            <tbody>
+              <tr>
+                <td>
+                  {{ formQuestion["question14"][0] }}
+                  <span style="font-weight: bold">gender inequality</span>
+                  {{ formQuestion["question14"][1] }}
+                </td>
+                <mat-radio-group formControlName="q14">
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="None"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="1"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="2"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="3"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="4 or more"> </mat-radio-button>
+                  </td>
                 </mat-radio-group>
-                <mat-form-field appearance="outline" class="col-lg-6">
-                    <mat-label>Please specify</mat-label>
-                    <input formControlName="other5" type="text" matInput placeholder="">
-                </mat-form-field>
-
-
-                <p></p>
-                <p>{{formQuestion['question6']}}
-                </p>
-                <mat-radio-group formControlName="q6" class="example-radio-group">
-                    <mat-radio-button value="Four-Year Degree"><span style="white-space: normal;">Four-Year Degree</span>
-                    </mat-radio-button>
-                    <mat-radio-button value="Five-Year Degree"><span style="white-space: normal;">Five-Year Degree</span>
-                    </mat-radio-button>
-                    <mat-radio-button value="Alternative Teaching Certification at a university or college (e.g., M.A.T., M.Ed.)"><span style="white-space: normal;">Alternative Teaching Certification at a university or college (e.g., M.A.T., M.Ed.)</span>
-                    </mat-radio-button>
-                    <mat-radio-button value="Alternative Teaching Certification through a non-profit or for-profit organization (e.g., Teach for America, Troops for Teachers)"><span style="white-space: normal;">Alternative Teaching Certification through a non-profit or for-profit organization (e.g., Teach for America, Troops for Teachers)</span>
-                    </mat-radio-button>
-                    <mat-radio-button value="Other in question 6 (please specify)"><span style="white-space: normal;">Other (please specify)</span>
-                    </mat-radio-button>
+              </tr>
+              <br />
+              <tr>
+                <td>
+                  {{ formQuestion["question15"][0] }} <span style="font-weight: bold"> LGBTQA+</span>
+                  {{ formQuestion["question15"][1] }}
+                </td>
+                <mat-radio-group formControlName="q15">
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="None"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="1"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="2"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="3"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="4 or more"> </mat-radio-button>
+                  </td>
                 </mat-radio-group>
-                <mat-form-field appearance="outline" class="col-lg-4">
-                    <mat-label>Please specify</mat-label>
-                    <input formControlName="other6" type="text" matInput placeholder="">
-                </mat-form-field>
-
-                <p>{{formQuestion['question7']}} </p>
-
-                    <div class="row">
-                        <mat-checkbox class="col-lg-3" value="Early Childhood Education" (click) = "checkBox7Function('Early Childhood Education')"><span style="white-space: normal;">Early Childhood Education</span>
-                        </mat-checkbox>
-                        <mat-checkbox class="col-lg-3" value="Elementary Education" (click) = "checkBox7Function('Elementary Education')"><span style="white-space: normal;">Elementary Education</span>
-                        </mat-checkbox>
-                    </div>
-                    <div class="row">
-                        <mat-checkbox class="col-lg-3" value="Middle School Education" (click) = "checkBox7Function('Middle School Education')"><span style="white-space: normal;">Middle School Education</span>
-                        </mat-checkbox>
-                        <mat-checkbox class="col-lg-3" value="Secondary Education" (click) = "checkBox7Function('Secondary Education')"><span style="white-space: normal;">Secondary Education</span>
-                        </mat-checkbox>
-                    </div>
-                    <div class="row">
-                        <mat-checkbox class="col-lg-3" value="Special Education (SPED)" (click) = "checkBox7Function('Special Education (SPED)')"><span style="white-space: normal;">Special Education (SPED)</span>
-                        </mat-checkbox>
-                        <mat-checkbox class="col-lg-3" value="English as a Second Language (ESL)" (click) = "checkBox7Function('English as a Second Language (ESL)')"><span style="white-space: normal;">English as a Second Language (ESL)</span>
-                        </mat-checkbox>
-                    </div>
-                    <div class="row">
-                        <mat-checkbox class="col-lg-3" value="Reading Specialist" (click) = "checkBox7Function('Reading Specialist')"><span style="white-space: normal;">Reading Specialist</span>
-                        </mat-checkbox>
-                        <mat-checkbox class="col-lg-3" value="Principal Certification" (click) = "checkBox7Function('Principal Certification')"><span style="white-space: normal;">Principal Certification</span>
-                        </mat-checkbox>
-                    </div>
-                    <div class="row">
-                        <mat-checkbox class="col-lg-3" value="Other in Question 7 (please specify)"><span style="white-space: normal;">Other (please specify)</span>
-                        </mat-checkbox>
-                        <mat-form-field appearance="outline" class="col-lg-7">
-                            <mat-label>Please specify</mat-label>
-                            <input formControlName="other7" type="text" matInput placeholder="">
-                        </mat-form-field>
-                    </div>
-
-
-                <p>{{formQuestion['question8']}} </p>
-                <mat-radio-group formControlName="q8" class="example-radio-group">
-                    <mat-radio-button value="Male">Male</mat-radio-button>
-                    <mat-radio-button value="Female">Female</mat-radio-button>
-                    <mat-radio-button value="Transgender Female">Transgender Female</mat-radio-button>
-                    <mat-radio-button value="Transgender Male">Transgender Male</mat-radio-button>
-                    <mat-radio-button value="Gender-Non-Conforming">Gender-Non-Conforming</mat-radio-button>
-                    <mat-radio-button value="Prefer Not to Answer">Prefer Not to Answer </mat-radio-button>
-                    <mat-radio-button value="Others in Question 8 (Please Specify)">Others (Please Specify)</mat-radio-button>
-                    <mat-form-field appearance="outline" class="col-lg-4">
-                        <mat-label>Please specify</mat-label>
-                        <input formControlName="other8" type="text" matInput placeholder="">
-                    </mat-form-field>
+              </tr>
+              <br />
+
+              <tr>
+                <td>
+                  {{ formQuestion["question16"][0] }}<span style="font-weight: bold"> ableism</span>
+                  {{ formQuestion["question16"][1] }}
+                </td>
+                <mat-radio-group formControlName="q16">
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="None"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="1"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="2"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="3"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="4 or more"> </mat-radio-button>
+                  </td>
                 </mat-radio-group>
-
-
-                <p>{{formQuestion['question9']}}</p>
-                <mat-radio-group formControlName="q9" class="example-radio-group">
-                    <div class="row">
-                        <mat-radio-button class="col-lg-2" value="18-24">18-24</mat-radio-button>
-                        <mat-radio-button class="col-lg-2" value="25-34">25-34</mat-radio-button>
-                        <mat-radio-button class="col-lg-2" value="35-44">35-44</mat-radio-button>
-                    </div>
-                    <div class="row">
-                        <mat-radio-button class="col-lg-2" value="45-54">45-54</mat-radio-button>
-                        <mat-radio-button class="col-lg-2" value="55-64">55-64</mat-radio-button>
-                        <mat-radio-button class="col-lg-2" value="65+">65+</mat-radio-button>
-                    </div>
-
-                </mat-radio-group>
-
-                <p>{{formQuestion['question10']}}</p>
-                <mat-radio-group formControlName="q10" class="example-radio-group">
-                    <div class="row">
-                        <mat-radio-button class="col-lg-3" value="White"><span style="white-space: normal;">White</span>
-                        </mat-radio-button>
-                        <mat-radio-button class="col-lg-3" value="Black or African American"><span style="white-space: normal;">Black or African American</span>
-                        </mat-radio-button>
-                    </div>
-                    <div class="row">
-                        <mat-radio-button class="col-lg-3" value="Hispanic or Latino"><span style="white-space: normal;">Hispanic or Latino</span>
-                        </mat-radio-button>
-                        <mat-radio-button class="col-lg-3" value="American Indian or Alaska Native"><span style="white-space: normal;">American Indian or Alaska Native</span>
-                        </mat-radio-button>
-                    </div>
-                    <div class="row">
-                        <mat-radio-button class="col-lg-3" value="Biracial (two races/ethnicities)"><span style="white-space: normal;">Biracial (two races/ethnicities)</span>
-                        </mat-radio-button>
-                        <mat-radio-button class="col-lg-3" value="Multiracial (more than two races/ethnicities)"><span style="white-space: normal;">Multiracial (more than two races/ethnicities)</span>
-                        </mat-radio-button>
-                    </div>
-                    <div class="row">
-                        <mat-radio-button class="col-lg-3" value="Another Race/Ethnicity (please specify)"><span style="white-space: normal;">Another Race/Ethnicity (please specify)</span>
-                        </mat-radio-button>
-                        <mat-form-field appearance="outline" class="col-lg-4">
-                            <mat-label>Please specify</mat-label>
-                            <input formControlName="other10" type="text" matInput placeholder="">
-                        </mat-form-field>
-                    </div>
+              </tr>
+              <br />
+
+              <tr>
+                <td>
+                  {{ formQuestion["question17"][0] }}
+                  <span style="font-weight: bold">Teaching English to Speakers of Other Languages (TESOL)</span>
+                  {{ formQuestion["question17"][1] }}
+                </td>
+                <mat-radio-group formControlName="q17">
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="None"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="1"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="2"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="3"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="4 or more"> </mat-radio-button>
+                  </td>
                 </mat-radio-group>
-                
-
-                <p></p>
-
-
-                <p>{{formQuestion['question11']}}</p>
-                <mat-radio-group formControlName="q11" class="example-radio-group">
-                    <div class="row">
-                        <mat-radio-button class="col-lg-2" value="Poor">Poor
-                        </mat-radio-button>
-                        <mat-radio-button class="col-lg-2" value="Working Poor">Working Poor
-                        </mat-radio-button>
-                        <mat-radio-button class="col-lg-2" value="Lower Middle Class"> Lower Middle Class
-                        </mat-radio-button>
-                    </div>
-                    <div class="row">
-                        <mat-radio-button class="col-lg-2" value="Middle Class">Middle Class
-                        </mat-radio-button>
-                        <mat-radio-button class="col-lg-2" value="Upper Middle Class">Upper Middle Class
-                        </mat-radio-button>
-                        <mat-radio-button class="col-lg-2" value="Wealthy">Wealthy</mat-radio-button>
-                    </div>
+              </tr>
+
+              <br />
+              <tr>
+                <td>
+                  {{ formQuestion["question18"][0] }}
+                  <span style="font-weight: bold">race or ethnicity</span>
+                  {{ formQuestion["question18"][1] }}
+                </td>
+                <mat-radio-group formControlName="q18">
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="None"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="1"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="2"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="3"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="4 or more"> </mat-radio-button>
+                  </td>
                 </mat-radio-group>
-
-                <p>{{formQuestion['question12']}}</p>
-                <mat-radio-group formControlName="q12" class="example-radio-group">
-                    <div class="row">
-                        <mat-radio-button class="col-lg-2" value="Liberal">Liberal
-                        </mat-radio-button>
-                        <mat-radio-button class="col-lg-2" value="Conservative">Conservative
-                        </mat-radio-button>
-                        <mat-radio-button class="col-lg-2" value="Independent"> Independent
-                        </mat-radio-button>
-                    </div>
-                    <div class="row">
-                        <mat-radio-button class="col-lg-2" value="Other in Question 12 (please specify)">Other (please specify)
-                        </mat-radio-button>
-                    </div>
-                    <mat-form-field appearance="outline" class="col-lg-4">
-                        <mat-label>Please specify</mat-label>
-                        <input formControlName="other12" type="text" matInput placeholder="">
-                    </mat-form-field>
+              </tr>
+
+              <br />
+
+              <tr>
+                <td>
+                  {{ formQuestion["question19"][0] }} <span style="font-weight: bold">culture</span>
+                  {{ formQuestion["question19"][1] }}
+                </td>
+                <mat-radio-group formControlName="q19">
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="None"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="1"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="2"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="3"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="4 or more"> </mat-radio-button>
+                  </td>
                 </mat-radio-group>
-
-                <p>{{formQuestion['question13']}}</p>
-                <mat-radio-group formControlName="q13" class="example-radio-group">
-                    <div class="row">
-                        <mat-radio-button class="col-lg-3" value="Christianity"><span style="white-space: normal;">Christianity</span>
-                        </mat-radio-button>
-                        <mat-radio-button class="col-lg-3" value="Catholicism"><span style="white-space: normal;">Catholicism</span>
-                        </mat-radio-button>
-                        <mat-radio-button class="col-lg-3" value="Protestantism"><span style="white-space: normal;">Protestantism</span>
-                        </mat-radio-button>
-                    </div>
-                    <div class="row">
-                        <mat-radio-button class="col-lg-3" value="Judaism"><span style="white-space: normal;">Judaism</span>
-                        </mat-radio-button>
-                        <mat-radio-button class="col-lg-3" value="Islam"><span style="white-space: normal;">Islam</span>
-                        </mat-radio-button>
-                        <mat-radio-button class="col-lg-3" value="Hinduism"><span style="white-space: normal;">Hinduism</span>
-                        </mat-radio-button>
-                    </div>
-                    <div class="row">
-                        <mat-radio-button class="col-lg-3" value="Buddhism"><span style="white-space: normal;">Buddhism</span>
-                        </mat-radio-button>
-                        <mat-radio-button class="col-lg-3" value="African traditional and Diasporic"><span style="white-space: normal;">African traditional and Diasporic</span>
-                        </mat-radio-button>
-                        <mat-radio-button class="col-lg-3" value="Chinese traditional religion"><span style="white-space: normal;">Chinese traditional religion</span>
-                        </mat-radio-button>
-                    </div>
-                    <div class="row">
-                        <mat-radio-button class="col-lg-3" value="Spiritual Nonreligious (e.g., Secular/Atheist)"><span style="white-space: normal;">Spiritual Nonreligious (e.g., Secular/Atheist)</span>
-                        </mat-radio-button>
-                        <mat-radio-button class="col-lg-3" value="Other in question 13 (please specify)"><span style="white-space: normal;">Other (please specify)</span>
-                        </mat-radio-button>
-                        <mat-form-field appearance="outline" class="col-lg-4">
-                            <mat-label>Please specify</mat-label>
-                            <input formControlName="other13" type="text" matInput placeholder="">
-                        </mat-form-field>
-                    </div>
+              </tr>
+              <tr>
+                <td>
+                  {{ formQuestion["question20"][0] }}
+                  <span style="font-weight: bold">diversity, equity, and inclusion (DEI)</span>
+                  {{ formQuestion["question20"][1] }}
+                </td>
+                <mat-radio-group formControlName="q20">
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="None"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="1"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="2"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="3"> </mat-radio-button>
+                  </td>
+                  <td>
+                    <mat-radio-button class="col-lg-2" value="4 or more"> </mat-radio-button>
+                  </td>
                 </mat-radio-group>
-                <div class="table-responsive">
-                    <table class="table">
-                        <thead style="text-align:center">
-                            <tr>
-                                <th>
-
-                                </th>
-                                <div class="row">
-                                    <th class="col-3" >
-                                        None
-                                    </th>
-                                    <th class="col-2">
-                                        1
-                                    </th>
-                                    <th class="col-2">
-                                        2
-                                    </th>
-                                    <th class="col-2">
-                                        3
-                                    </th>
-                                    <th class="col-2">
-                                        4 or more
-                                    </th>
-                                </div>
-                            </tr>
-                        </thead>
-                        <tbody>
-                            <tr>
-                                <td>
-                                  {{formQuestion['question14'][0]}} <span style="font-weight: bold;">gender inequality</span> {{formQuestion['question14'][1]}}
-
-                                </td>
-                                <mat-radio-group formControlName="q14">
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="None">
-                                    </mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="1">
-                                    </mat-radio-button>
-
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="2">
-                                    </mat-radio-button>
-
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="3">
-                                    </mat-radio-button>
-
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="4 or more">
-                                    </mat-radio-button>
-
-                                </td>
-                            </mat-radio-group>
-                            </tr>
-                            <br>
-                            <tr>
-                                <td>
-                                    {{formQuestion['question15'][0]}} <span style="font-weight: bold;"> LGBTQA+</span> {{formQuestion['question15'][1]}}
-
-                                </td>
-                            <mat-radio-group formControlName="q15">
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="None">
-                                    </mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="1">
-                                    </mat-radio-button>
-
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="2">
-                                    </mat-radio-button>
-
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="3">
-                                    </mat-radio-button>
-
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="4 or more">
-                                    </mat-radio-button>
-
-                                </td>
-                            </mat-radio-group>
-                            </tr>
-                            <br>
-
-                            <tr>
-                                <td>
-                                    {{formQuestion['question16'][0]}}<span style="font-weight: bold;"> ableism</span>  {{formQuestion['question16'][1]}}
-
-
-                                </td>
-                                <mat-radio-group formControlName="q16">
-                                    <td>
-                                        <mat-radio-button class="col-lg-2" value="None">
-                                        </mat-radio-button>
-                                    </td>
-                                    <td>
-                                        <mat-radio-button class="col-lg-2" value="1">
-                                        </mat-radio-button>
-    
-                                    </td>
-                                    <td>
-                                        <mat-radio-button class="col-lg-2" value="2">
-                                        </mat-radio-button>
-    
-                                    </td>
-                                    <td>
-                                        <mat-radio-button class="col-lg-2" value="3">
-                                        </mat-radio-button>
-    
-                                    </td>
-                                    <td>
-                                        <mat-radio-button class="col-lg-2" value="4 or more">
-                                        </mat-radio-button>
-    
-                                    </td>
-                            </mat-radio-group>
-                            </tr>
-                            <br>
-
-
-                            <tr>
-                                <td>
-                                    {{formQuestion['question17'][0]}} <span style="font-weight: bold;">Teaching English to Speakers of Other Languages (TESOL)</span> {{formQuestion['question17'][1]}}
-
-                                </td>
-                            <mat-radio-group formControlName="q17">
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="None">
-                                    </mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="1">
-                                    </mat-radio-button>
-
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="2">
-                                    </mat-radio-button>
-
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="3">
-                                    </mat-radio-button>
-
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="4 or more">
-                                    </mat-radio-button>
-
-                                </td>
-                            </mat-radio-group>
-                            </tr>
-
-
-
-                            <br>
-                            <tr>
-                                <td>
-                                    {{formQuestion['question18'][0]}} <span style="font-weight: bold;">race or ethnicity</span> {{formQuestion['question18'][1]}} 
-
-
-                                </td>
-                            <mat-radio-group formControlName="q18">
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="None">
-                                    </mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="1">
-                                    </mat-radio-button>
-
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="2">
-                                    </mat-radio-button>
-
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="3">
-                                    </mat-radio-button>
-
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="4 or more">
-                                    </mat-radio-button>
-
-                                </td>
-                            </mat-radio-group>
-                            </tr>
-
-                            <br>
-
-                            <tr>
-                                <td>
-                                    {{formQuestion['question19'][0]}} <span style="font-weight: bold;">culture</span> {{formQuestion['question19'][1]}}
-
-                                </td>
-                            <mat-radio-group formControlName="q19">
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="None">
-                                    </mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="1">
-                                    </mat-radio-button>
-
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="2">
-                                    </mat-radio-button>
-
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="3">
-                                    </mat-radio-button>
-
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="4 or more">
-                                    </mat-radio-button>
-
-                                </td>
-                            </mat-radio-group>
-                            </tr>
-                            <tr>
-                                <td>
-                                    {{formQuestion['question20'][0]}} <span style="font-weight: bold;">diversity, equity, and inclusion (DEI)</span> {{formQuestion['question20'][1]}}
-
-                                </td>
-                            <mat-radio-group formControlName="q20">
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="None">
-                                    </mat-radio-button>
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="1">
-                                    </mat-radio-button>
-
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="2">
-                                    </mat-radio-button>
-
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="3">
-                                    </mat-radio-button>
-
-                                </td>
-                                <td>
-                                    <mat-radio-button class="col-lg-2" value="4 or more">
-                                    </mat-radio-button>
-
-                                </td>
-                            </mat-radio-group>
-                            </tr>
-                            <br>
-                        </tbody>
-                    </table>
-                </div>
-
-                <br/>
-
-
-                <p>{{formQuestion['question21']}}</p>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Abolitionist Teaching')"><span style="white-space: normal;" >Abolitionist Teaching</span>
-
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('AsianCrit')"><span style="white-space: normal;">AsianCrit</span>
-
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Courageous Conversations About Race')"><span style="white-space: normal;">Courageous Conversations About Race</span>
-
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Critical Pedagogy')"><span style="white-space: normal;">Critical Pedagogy</span>
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Critical Race Theory')"><span style="white-space: normal;">Critical Race Theory</span>
-
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Cultural Proficiency')"><span style="white-space: normal;">Cultural Proficiency</span>
-
-
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Culturally Relevant Teaching')"><span style="white-space: normal;">Culturally Relevant Teaching</span>
-                </mat-checkbox>
-
-
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Culturally Responsive School Leadership')"><span style="white-space: normal;">Culturally Responsive School Leadership</span>
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Culturally Responsive Teaching')"><span style="white-space: normal;">Culturally Responsive Teaching</span>
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Culturally Sustaining Pedagogies')"><span style="white-space: normal;">Culturally Sustaining Pedagogies</span>
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Reality Pedagogy')"><span style="white-space: normal;">Reality Pedagogy</span>
-
-                </mat-checkbox>
-
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('(Dis)Crit')"><span style="white-space: normal;">(Dis)Crit</span>
-
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Hip-Hop Education')"><span style="white-space: normal;">Hip-Hop Education</span>
-
-
-                </mat-checkbox>
-
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('LatCrit')"><span style="white-space: normal;">LatCrit</span>
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6" (click) = "checkBoxFunction('Multicultural Education')"><span style="white-space: normal;">Multicultural Education</span>
-                </mat-checkbox>
-                <mat-checkbox class="example-margin col-lg-6"><span style="white-space: normal;">Other (please specify)</span>
-                </mat-checkbox>
-                <mat-form-field appearance="outline" class="col-lg-4">
-                    <mat-label>Please specify</mat-label>
-                    <input formControlName="other21" type="text" matInput placeholder="">
-                </mat-form-field>            
-            </div>
-            <div class="buttons">
-                <button class="btn" style="background-color: #29ABE2;" (click)="submit()">Submit</button>
-            </div>
+              </tr>
+              <br />
+            </tbody>
+          </table>
         </div>
-    </mat-card>
-</div>
\ No newline at end of file
+
+        <br />
+
+        <p>{{ formQuestion["question21"] }}</p>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('Abolitionist Teaching')"
+          ><span style="white-space: normal">Abolitionist Teaching</span>
+        </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('AsianCrit')"
+          ><span style="white-space: normal">AsianCrit</span>
+        </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('Courageous Conversations About Race')"
+          ><span style="white-space: normal">Courageous Conversations About Race</span>
+        </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('Critical Pedagogy')"
+          ><span style="white-space: normal">Critical Pedagogy</span>
+        </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('Critical Race Theory')"
+          ><span style="white-space: normal">Critical Race Theory</span>
+        </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('Cultural Proficiency')"
+          ><span style="white-space: normal">Cultural Proficiency</span>
+        </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('Culturally Relevant Teaching')"
+          ><span style="white-space: normal">Culturally Relevant Teaching</span>
+        </mat-checkbox>
+
+        <mat-checkbox
+          class="example-margin col-lg-6"
+          (click)="checkBoxFunction('Culturally Responsive School Leadership')"
+          ><span style="white-space: normal">Culturally Responsive School Leadership</span>
+        </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('Culturally Responsive Teaching')"
+          ><span style="white-space: normal">Culturally Responsive Teaching</span>
+        </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('Culturally Sustaining Pedagogies')"
+          ><span style="white-space: normal">Culturally Sustaining Pedagogies</span>
+        </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('Reality Pedagogy')"
+          ><span style="white-space: normal">Reality Pedagogy</span>
+        </mat-checkbox>
+
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('(Dis)Crit')"
+          ><span style="white-space: normal">(Dis)Crit</span>
+        </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('Hip-Hop Education')"
+          ><span style="white-space: normal">Hip-Hop Education</span>
+        </mat-checkbox>
+
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('LatCrit')"
+          ><span style="white-space: normal">LatCrit</span>
+        </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6" (click)="checkBoxFunction('Multicultural Education')"
+          ><span style="white-space: normal">Multicultural Education</span>
+        </mat-checkbox>
+        <mat-checkbox class="example-margin col-lg-6"
+          ><span style="white-space: normal">Other (please specify)</span>
+        </mat-checkbox>
+        <mat-form-field appearance="outline" class="col-lg-4">
+          <mat-label>Please specify</mat-label>
+          <input formControlName="other21" type="text" matInput placeholder="" />
+        </mat-form-field>
+      </div>
+      <div class="buttons">
+        <button class="btn" style="background-color: #29abe2" (click)="submit()">Submit</button>
+      </div>
+    </div>
+  </mat-card>
+</div>
diff --git a/src/app/components/pre-survey/pre-survey.component.spec.ts b/src/app/components/pre-survey/pre-survey.component.spec.ts
index 764bb5e..cff052a 100644
--- a/src/app/components/pre-survey/pre-survey.component.spec.ts
+++ b/src/app/components/pre-survey/pre-survey.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { PreSurveyComponent } from './pre-survey.component';
+import { PreSurveyComponent } from "./pre-survey.component";
 
-describe('PreSurveyComponent', () => {
+describe("PreSurveyComponent", () => {
   let component: PreSurveyComponent;
   let fixture: ComponentFixture<PreSurveyComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ PreSurveyComponent ]
-    })
-    .compileComponents();
+      declarations: [PreSurveyComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('PreSurveyComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/pre-survey/pre-survey.component.ts b/src/app/components/pre-survey/pre-survey.component.ts
index 2ed85ea..4196e1a 100644
--- a/src/app/components/pre-survey/pre-survey.component.ts
+++ b/src/app/components/pre-survey/pre-survey.component.ts
@@ -6,194 +6,192 @@ import { DialogPDfComponent } from "./dialog-pdf/dialog-pdf.component";
 import { FormBuilder, FormGroup, FormControl, Validators } from "@angular/forms";
 import { PreSurveyService } from "src/app/services/preSurvey.service";
 export interface DialogData {
-    animal: "panda" | "unicorn" | "lion";
+  animal: "panda" | "unicorn" | "lion";
 }
 @Component({
-    selector: "app-pre-survey",
-    templateUrl: "./pre-survey.component.html",
-    styleUrls: ["./pre-survey.component.css"],
+  selector: "app-pre-survey",
+  templateUrl: "./pre-survey.component.html",
+  styleUrls: ["./pre-survey.component.css"],
 })
 export class PreSurveyComponent implements OnInit {
-    preSurveyForm: FormGroup;
-    email: any;
-    startTime: any;
-    endTime: any;
-    durationTime: any;
-    formQuestion: any;
-    constructor(
-        private router: Router,
-        public dialog: MatDialog,
-        private fb: FormBuilder,
-        private presurvey: PreSurveyService
-    ) {}
+  preSurveyForm: FormGroup;
+  email: any;
+  startTime: any;
+  endTime: any;
+  durationTime: any;
+  formQuestion: any;
+  constructor(
+    private router: Router,
+    public dialog: MatDialog,
+    private fb: FormBuilder,
+    private presurvey: PreSurveyService
+  ) {}
 
-    ngOnInit(): void {
-        this.startTime = new Date();
+  ngOnInit(): void {
+    this.startTime = new Date();
 
-        this.preSurveyForm = this.fb.group({
-            q1: [""],
-            q2: [""],
-            q3: [""],
-            q4: [""],
-            q5: [""],
-            q6: [""],
-            q7: [""],
-            q8: [""],
-            q9: [""],
-            q10: [""],
-            q11: [""],
-            q12: [""],
-            q13: [""],
-            q14: [""],
-            q15: [""],
-            q16: [""],
-            q17: [""],
-            q18: [""],
-            q19: [""],
-            q20: [""],
-            q21: [""],
-            other5: "",
-            other6: "",
-            other7: "",
-            other8: "",
-            other10: "",
-            other12: "",
-            other13: "",
-            other21: "",
-            consent: "",
-        });
+    this.preSurveyForm = this.fb.group({
+      q1: [""],
+      q2: [""],
+      q3: [""],
+      q4: [""],
+      q5: [""],
+      q6: [""],
+      q7: [""],
+      q8: [""],
+      q9: [""],
+      q10: [""],
+      q11: [""],
+      q12: [""],
+      q13: [""],
+      q14: [""],
+      q15: [""],
+      q16: [""],
+      q17: [""],
+      q18: [""],
+      q19: [""],
+      q20: [""],
+      q21: [""],
+      other5: "",
+      other6: "",
+      other7: "",
+      other8: "",
+      other10: "",
+      other12: "",
+      other13: "",
+      other21: "",
+      consent: "",
+    });
 
-        this.presurvey.getFormQuestions().subscribe(
-            (res) => {
-                this.formQuestion = res[0];
-                for (let key in this.formQuestion) {
-                    if (this.formQuestion[key].indexOf("gender inequality") != -1) {
-                        this.formQuestion[key] = this.formQuestion[key].split("gender inequality");
-                    } else if (this.formQuestion[key].indexOf("LGBTQA+") != -1) {
-                        this.formQuestion[key] = this.formQuestion[key].split("LGBTQA+");
-                    } else if (this.formQuestion[key].indexOf("ableism") != -1) {
-                        this.formQuestion[key] = this.formQuestion[key].split("ableism");
-                    } else if (
-                        this.formQuestion[key].indexOf("Teaching English to Speakers of Other Languages (TESOL)") != -1
-                    ) {
-                        this.formQuestion[key] = this.formQuestion[key].split(
-                            "Teaching English to Speakers of Other Languages (TESOL)"
-                        );
-                    } else if (this.formQuestion[key].indexOf("race or ethnicity") != -1) {
-                        this.formQuestion[key] = this.formQuestion[key].split("race or ethnicity");
-                    } else if (this.formQuestion[key].indexOf("culture") != -1) {
-                        this.formQuestion[key] = this.formQuestion[key].split("culture");
-                    } else if (this.formQuestion[key].indexOf("diversity, equity, and inclusion (DEI)") != -1) {
-                        this.formQuestion[key] = this.formQuestion[key].split("diversity, equity, and inclusion (DEI)");
-                    }
-                }
-                this.presurvey.userData().subscribe(
-                    (res) => {
-                        this.preSurveyForm.get("q1").setValue(res["last_name"]);
-                        this.preSurveyForm.get("q2").setValue(res["first_name"]);
-                        this.preSurveyForm.get("q3").setValue(res["email"]);
-                    },
-                    (err) => {}
-                );
-            },
-            (err) => {}
+    this.presurvey.getFormQuestions().subscribe(
+      (res) => {
+        this.formQuestion = res[0];
+        for (let key in this.formQuestion) {
+          if (this.formQuestion[key].indexOf("gender inequality") != -1) {
+            this.formQuestion[key] = this.formQuestion[key].split("gender inequality");
+          } else if (this.formQuestion[key].indexOf("LGBTQA+") != -1) {
+            this.formQuestion[key] = this.formQuestion[key].split("LGBTQA+");
+          } else if (this.formQuestion[key].indexOf("ableism") != -1) {
+            this.formQuestion[key] = this.formQuestion[key].split("ableism");
+          } else if (this.formQuestion[key].indexOf("Teaching English to Speakers of Other Languages (TESOL)") != -1) {
+            this.formQuestion[key] = this.formQuestion[key].split(
+              "Teaching English to Speakers of Other Languages (TESOL)"
+            );
+          } else if (this.formQuestion[key].indexOf("race or ethnicity") != -1) {
+            this.formQuestion[key] = this.formQuestion[key].split("race or ethnicity");
+          } else if (this.formQuestion[key].indexOf("culture") != -1) {
+            this.formQuestion[key] = this.formQuestion[key].split("culture");
+          } else if (this.formQuestion[key].indexOf("diversity, equity, and inclusion (DEI)") != -1) {
+            this.formQuestion[key] = this.formQuestion[key].split("diversity, equity, and inclusion (DEI)");
+          }
+        }
+        this.presurvey.userData().subscribe(
+          (res) => {
+            this.preSurveyForm.get("q1").setValue(res["last_name"]);
+            this.preSurveyForm.get("q2").setValue(res["first_name"]);
+            this.preSurveyForm.get("q3").setValue(res["email"]);
+          },
+          (err) => {}
         );
-    }
+      },
+      (err) => {}
+    );
+  }
 
-    checkBox21 = [];
-    checkBoxFunction(e) {
-        if (this.checkBox21.indexOf(e) == -1) {
-            this.checkBox21.push(e);
-        } else {
-            var index = this.checkBox21.indexOf(e);
-            this.checkBox21.splice(index, 1);
-        }
+  checkBox21 = [];
+  checkBoxFunction(e) {
+    if (this.checkBox21.indexOf(e) == -1) {
+      this.checkBox21.push(e);
+    } else {
+      var index = this.checkBox21.indexOf(e);
+      this.checkBox21.splice(index, 1);
     }
+  }
 
-    checkBox7 = [];
-    checkBox7Function(e) {
-        if (this.checkBox7.indexOf(e) == -1) {
-            this.checkBox7.push(e);
-        } else {
-            var index = this.checkBox7.indexOf(e);
-            this.checkBox7.splice(index, 1);
-        }
+  checkBox7 = [];
+  checkBox7Function(e) {
+    if (this.checkBox7.indexOf(e) == -1) {
+      this.checkBox7.push(e);
+    } else {
+      var index = this.checkBox7.indexOf(e);
+      this.checkBox7.splice(index, 1);
     }
+  }
 
-    irbFunction() {
-        this.dialog.open(DialogPDfComponent, {
-            data: {
-                animal: "panda",
-            },
-        });
-    }
+  irbFunction() {
+    this.dialog.open(DialogPDfComponent, {
+      data: {
+        animal: "panda",
+      },
+    });
+  }
 
-    submit() {
-        if (!this.preSurveyForm.valid) {
-            Swal.fire({
-                text: "Please fill all the fields",
-                icon: "error",
-            }).then((res) => {});
-        } else {
-            this.preSurveyForm.get("q7").setValue(this.checkBox7);
-            this.preSurveyForm.get("q21").setValue(this.checkBox21);
+  submit() {
+    if (!this.preSurveyForm.valid) {
+      Swal.fire({
+        text: "Please fill all the fields",
+        icon: "error",
+      }).then((res) => {});
+    } else {
+      this.preSurveyForm.get("q7").setValue(this.checkBox7);
+      this.preSurveyForm.get("q21").setValue(this.checkBox21);
 
-            if (this.preSurveyForm.value["other5"].length != 0) {
-                this.preSurveyForm.get("q5").setValue(this.preSurveyForm.value["other5"]);
-            }
-            if (this.preSurveyForm.value["other6"].length != 0) {
-                this.preSurveyForm.get("q6").setValue(this.preSurveyForm.value["other6"]);
-            }
-            if (this.preSurveyForm.value["other7"].length != 0) {
-                this.checkBox7.push(this.preSurveyForm.value["other7"]);
-                this.preSurveyForm.get("q7").setValue(this.checkBox7);
-            }
-            if (this.preSurveyForm.value["other8"].length != 0) {
-                this.preSurveyForm.get("q8").setValue(this.preSurveyForm.value["other8"]);
-            }
-            if (this.preSurveyForm.value["other10"].length != 0) {
-                this.preSurveyForm.get("q10").setValue(this.preSurveyForm.value["other10"]);
-            }
-            if (this.preSurveyForm.value["other12"].length != 0) {
-                this.preSurveyForm.get("q12").setValue(this.preSurveyForm.value["other12"]);
-            }
-            if (this.preSurveyForm.value["other13"].length != 0) {
-                this.preSurveyForm.get("q13").setValue(this.preSurveyForm.value["other13"]);
-            }
-            if (this.preSurveyForm.value["other21"].length != 0) {
-                this.checkBox21.push(this.preSurveyForm.value["other21"]);
-                this.preSurveyForm.get("q21").setValue(this.checkBox21);
-            }
-            this.preSurveyForm.removeControl("other5");
-            this.preSurveyForm.removeControl("other6");
-            this.preSurveyForm.removeControl("other7");
-            this.preSurveyForm.removeControl("other8");
-            this.preSurveyForm.removeControl("other10");
-            this.preSurveyForm.removeControl("other12");
-            this.preSurveyForm.removeControl("other13");
-            this.preSurveyForm.removeControl("other21");
-            if (localStorage.getItem("consent") == "true") {
-                this.preSurveyForm.get("consent").setValue(true);
-            } else {
-                this.preSurveyForm.get("consent").setValue(false);
-            }
+      if (this.preSurveyForm.value["other5"].length != 0) {
+        this.preSurveyForm.get("q5").setValue(this.preSurveyForm.value["other5"]);
+      }
+      if (this.preSurveyForm.value["other6"].length != 0) {
+        this.preSurveyForm.get("q6").setValue(this.preSurveyForm.value["other6"]);
+      }
+      if (this.preSurveyForm.value["other7"].length != 0) {
+        this.checkBox7.push(this.preSurveyForm.value["other7"]);
+        this.preSurveyForm.get("q7").setValue(this.checkBox7);
+      }
+      if (this.preSurveyForm.value["other8"].length != 0) {
+        this.preSurveyForm.get("q8").setValue(this.preSurveyForm.value["other8"]);
+      }
+      if (this.preSurveyForm.value["other10"].length != 0) {
+        this.preSurveyForm.get("q10").setValue(this.preSurveyForm.value["other10"]);
+      }
+      if (this.preSurveyForm.value["other12"].length != 0) {
+        this.preSurveyForm.get("q12").setValue(this.preSurveyForm.value["other12"]);
+      }
+      if (this.preSurveyForm.value["other13"].length != 0) {
+        this.preSurveyForm.get("q13").setValue(this.preSurveyForm.value["other13"]);
+      }
+      if (this.preSurveyForm.value["other21"].length != 0) {
+        this.checkBox21.push(this.preSurveyForm.value["other21"]);
+        this.preSurveyForm.get("q21").setValue(this.checkBox21);
+      }
+      this.preSurveyForm.removeControl("other5");
+      this.preSurveyForm.removeControl("other6");
+      this.preSurveyForm.removeControl("other7");
+      this.preSurveyForm.removeControl("other8");
+      this.preSurveyForm.removeControl("other10");
+      this.preSurveyForm.removeControl("other12");
+      this.preSurveyForm.removeControl("other13");
+      this.preSurveyForm.removeControl("other21");
+      if (localStorage.getItem("consent") == "true") {
+        this.preSurveyForm.get("consent").setValue(true);
+      } else {
+        this.preSurveyForm.get("consent").setValue(false);
+      }
 
-            this.endTime = new Date();
+      this.endTime = new Date();
 
-            this.durationTime = (this.endTime - this.startTime) / 1000;
-            this.durationTime = this.durationTime / 60;
-            this.preSurveyForm.value["duration"] = this.durationTime;
-            this.presurvey.submitForm(this.preSurveyForm.value).subscribe(
-                (res) => {
-                    Swal.fire({
-                        text: "Submitted",
-                        icon: "success",
-                    }).then((res) => {
-                        this.router.navigateByUrl("/dashboard");
-                    });
-                },
-                (err) => {}
-            );
-        }
+      this.durationTime = (this.endTime - this.startTime) / 1000;
+      this.durationTime = this.durationTime / 60;
+      this.preSurveyForm.value["duration"] = this.durationTime;
+      this.presurvey.submitForm(this.preSurveyForm.value).subscribe(
+        (res) => {
+          Swal.fire({
+            text: "Submitted",
+            icon: "success",
+          }).then((res) => {
+            this.router.navigateByUrl("/dashboard");
+          });
+        },
+        (err) => {}
+      );
     }
+  }
 }
diff --git a/src/app/components/register-component/register-component.component.css b/src/app/components/register-component/register-component.component.css
index cb2e8a4..d0aa6e1 100644
--- a/src/app/components/register-component/register-component.component.css
+++ b/src/app/components/register-component/register-component.component.css
@@ -1,45 +1,45 @@
-.container{
-    text-align: center;
-    padding-bottom: 300px;
+.container {
+  text-align: center;
+  padding-bottom: 300px;
 }
 
 .example-card {
-    display: inline-block;
-    margin-top: 100px;
+  display: inline-block;
+  margin-top: 100px;
 }
 
 .intro {
-    top: 20%;
-    font-size: 35px;
-    text-align: center;
-    font-family: 'Loto', sans-serif, cursive;
-    color: black;
-    font-weight: bold;
+  top: 20%;
+  font-size: 35px;
+  text-align: center;
+  font-family: "Loto", sans-serif, cursive;
+  color: black;
+  font-weight: bold;
 }
 
 body {
-    font-family: 'Loto', sans-serif;
-    background-color: #f8fafb;
+  font-family: "Loto", sans-serif;
+  background-color: #f8fafb;
 }
 
-@media screen and (min-width: 992px){
-    p {
-        padding-top: 150px;
-        line-height: 150%;
-        color: #b3b3b3;
-        font-weight: 300;
-        margin: 0 20px;
-    }
+@media screen and (min-width: 992px) {
+  p {
+    padding-top: 150px;
+    line-height: 150%;
+    color: #b3b3b3;
+    font-weight: 300;
+    margin: 0 20px;
+  }
 }
 
-@media screen and (max-width: 991px){
-    p {
-        padding-top: 20px;
-        line-height: 150%;
-        color: #b3b3b3;
-        font-weight: 300;
-        margin: 0 20px;
-    }
+@media screen and (max-width: 991px) {
+  p {
+    padding-top: 20px;
+    line-height: 150%;
+    color: #b3b3b3;
+    font-weight: 300;
+    margin: 0 20px;
+  }
 }
 
 h1,
@@ -54,19 +54,19 @@ h6,
 .h4,
 .h5,
 .h6 {
-    font-family: 'Loto', sans-serif;
+  font-family: "Loto", sans-serif;
 }
 
 a {
-    -webkit-transition: .3s all ease;
-    -o-transition: .3s all ease;
-    transition: .3s all ease;
+  -webkit-transition: 0.3s all ease;
+  -o-transition: 0.3s all ease;
+  transition: 0.3s all ease;
 }
 
 a:hover {
-    text-decoration: none !important;
+  text-decoration: none !important;
 }
 
 h2 {
-    font-size: 20px;
-}
\ No newline at end of file
+  font-size: 20px;
+}
diff --git a/src/app/components/register-component/register-component.component.html b/src/app/components/register-component/register-component.component.html
index 906ba83..8b8073f 100644
--- a/src/app/components/register-component/register-component.component.html
+++ b/src/app/components/register-component/register-component.component.html
@@ -1,36 +1,42 @@
 <div class="header-wrap">
-    <p class="intro">Cultural Proficiency Continuum Dialogic Protocol</p>
-    <div class="container">
-        <mat-card class="example-card ">
-            <div class="mb-4">
-                <h3 style="text-align: center;">Register</h3>
-            </div>
-            <form [formGroup]="loginForm">
-                <mat-form-field appearance="outline" class="col-lg-12">
-                    <mat-label>Enter Email Address</mat-label>
-                    <input type="email" matInput placeholder="joe@example.com" formControlName="email" required>
-                </mat-form-field>
-                <mat-form-field appearance="outline" class="col-lg-12">
-                    <mat-label>Enter First Name</mat-label>
-                    <input type="text" matInput placeholder="John" formControlName="first_name" required>
-                </mat-form-field>
-                <mat-form-field appearance="outline" class="col-lg-12">
-                    <mat-label>Enter Last Name</mat-label>
-                    <input type="text" matInput placeholder="" formControlName="last_name" >
-                </mat-form-field>
-                <mat-form-field appearance="outline" class="col-lg-12">
-                    <mat-label>Enter Username</mat-label>
-                    <input type="email" matInput placeholder="joe@example.com" formControlName="username" required>
-                </mat-form-field>
-                <mat-form-field appearance="outline" class="col-lg-12">
-                    <mat-label>Enter your password</mat-label>
-                    <input matInput formControlName="password" [type]="hide ? 'password' : 'text'" required>
-                    <button mat-icon-button matSuffix (click)="hide = !hide" [attr.aria-label]="'Hide password'" [attr.aria-pressed]="hide">
-                <mat-icon>{{hide ? 'visibility_off' : 'visibility'}}</mat-icon>
-                </button>
-                    <mat-error *ngIf="loginForm.controls.password.invalid">{{getPasswordError()}}</mat-error>
-                </mat-form-field>
-                <!-- <mat-form-field appearance="outline" class="col-lg-12">
+  <p class="intro">Cultural Proficiency Continuum Dialogic Protocol</p>
+  <div class="container">
+    <mat-card class="example-card">
+      <div class="mb-4">
+        <h3 style="text-align: center">Register</h3>
+      </div>
+      <form [formGroup]="loginForm">
+        <mat-form-field appearance="outline" class="col-lg-12">
+          <mat-label>Enter Email Address</mat-label>
+          <input type="email" matInput placeholder="joe@example.com" formControlName="email" required />
+        </mat-form-field>
+        <mat-form-field appearance="outline" class="col-lg-12">
+          <mat-label>Enter First Name</mat-label>
+          <input type="text" matInput placeholder="John" formControlName="first_name" required />
+        </mat-form-field>
+        <mat-form-field appearance="outline" class="col-lg-12">
+          <mat-label>Enter Last Name</mat-label>
+          <input type="text" matInput placeholder="" formControlName="last_name" />
+        </mat-form-field>
+        <mat-form-field appearance="outline" class="col-lg-12">
+          <mat-label>Enter Username</mat-label>
+          <input type="email" matInput placeholder="joe@example.com" formControlName="username" required />
+        </mat-form-field>
+        <mat-form-field appearance="outline" class="col-lg-12">
+          <mat-label>Enter your password</mat-label>
+          <input matInput formControlName="password" [type]="hide ? 'password' : 'text'" required />
+          <button
+            mat-icon-button
+            matSuffix
+            (click)="hide = !hide"
+            [attr.aria-label]="'Hide password'"
+            [attr.aria-pressed]="hide"
+          >
+            <mat-icon>{{ hide ? "visibility_off" : "visibility" }}</mat-icon>
+          </button>
+          <mat-error *ngIf="loginForm.controls.password.invalid">{{ getPasswordError() }}</mat-error>
+        </mat-form-field>
+        <!-- <mat-form-field appearance="outline" class="col-lg-12">
                     <mat-label>Confirm your password</mat-label>
                     <input matInput formControlName="password" [type]="hide ? 'password' : 'text'" required>
                     <button mat-icon-button matSuffix (click)="hide = !hide" [attr.aria-label]="'Hide password'" [attr.aria-pressed]="hide">
@@ -39,9 +45,15 @@
                     <mat-error *ngIf="loginForm.controls.password.invalid">{{getPasswordError()}}</mat-error>
                 </mat-form-field> -->
 
-                <input type="submit" value="Register" class="btn text-white btn-block btn-primary" style="background-color: #29ABE2; font-size: 20px;" (click)="login()">
-            </form>
-        </mat-card>
-    </div>
+        <input
+          type="submit"
+          value="Register"
+          class="btn text-white btn-block btn-primary"
+          style="background-color: #29abe2; font-size: 20px"
+          (click)="login()"
+        />
+      </form>
+    </mat-card>
+  </div>
 </div>
-<app-footer></app-footer>
\ No newline at end of file
+<app-footer></app-footer>
diff --git a/src/app/components/register-component/register-component.component.spec.ts b/src/app/components/register-component/register-component.component.spec.ts
index 85e1c45..2bd0621 100644
--- a/src/app/components/register-component/register-component.component.spec.ts
+++ b/src/app/components/register-component/register-component.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { RegisterComponentComponent } from './register-component.component';
+import { RegisterComponentComponent } from "./register-component.component";
 
-describe('RegisterComponentComponent', () => {
+describe("RegisterComponentComponent", () => {
   let component: RegisterComponentComponent;
   let fixture: ComponentFixture<RegisterComponentComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ RegisterComponentComponent ]
-    })
-    .compileComponents();
+      declarations: [RegisterComponentComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('RegisterComponentComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/register-component/register-component.component.ts b/src/app/components/register-component/register-component.component.ts
index c02aff2..b034cd9 100644
--- a/src/app/components/register-component/register-component.component.ts
+++ b/src/app/components/register-component/register-component.component.ts
@@ -5,65 +5,65 @@ import { Router } from "@angular/router";
 import Swal from "sweetalert2";
 import { LoginService } from "src/app/services/login.service";
 @Component({
-    selector: "app-register-component",
-    templateUrl: "./register-component.component.html",
-    styleUrls: ["./register-component.component.css"],
+  selector: "app-register-component",
+  templateUrl: "./register-component.component.html",
+  styleUrls: ["./register-component.component.css"],
 })
 export class RegisterComponentComponent implements OnInit {
-    loginForm: FormGroup;
-    hide = true;
-    constructor(private fb: FormBuilder, private router: Router, private loginService: LoginService) {}
+  loginForm: FormGroup;
+  hide = true;
+  constructor(private fb: FormBuilder, private router: Router, private loginService: LoginService) {}
 
-    ngOnInit(): void {
-        this.loginForm = this.fb.group({
-            username: ["", [Validators.required]],
-            email: ["", [Validators.required, Validators.email]],
-            password: ["", [Validators.required]],
-            first_name: ["", [Validators.required]],
-            last_name: [""],
-        });
-    }
+  ngOnInit(): void {
+    this.loginForm = this.fb.group({
+      username: ["", [Validators.required]],
+      email: ["", [Validators.required, Validators.email]],
+      password: ["", [Validators.required]],
+      first_name: ["", [Validators.required]],
+      last_name: [""],
+    });
+  }
 
-    getEmailError() {
-        if (this.loginForm.controls.username.hasError("required")) {
-            return "Required";
-        } else {
-            return "";
-        }
+  getEmailError() {
+    if (this.loginForm.controls.username.hasError("required")) {
+      return "Required";
+    } else {
+      return "";
     }
+  }
 
-    getPasswordError() {
-        if (this.loginForm.controls.password.hasError("required")) {
-            return "Required";
-        } else {
-            return "";
-        }
+  getPasswordError() {
+    if (this.loginForm.controls.password.hasError("required")) {
+      return "Required";
+    } else {
+      return "";
     }
+  }
 
-    login() {
-        if (!this.loginForm.valid) {
-            Swal.fire({
-                text: "Please enter all the fields in the right format.",
-                icon: "error",
-            }).then((res) => {});
-        } else {
-            this.loginService.register(this.loginForm.value).subscribe(
-                (res) => {
-                    localStorage.setItem("user", res["token"]);
-                    Swal.fire({
-                        text: "Registration Successful",
-                        icon: "success",
-                    }).then((res) => {
-                        this.router.navigateByUrl("/preSurvey");
-                    });
-                },
-                (err) => {
-                    Swal.fire({
-                        text: "Username/Email already exists",
-                        icon: "error",
-                    }).then((res) => {});
-                }
-            );
+  login() {
+    if (!this.loginForm.valid) {
+      Swal.fire({
+        text: "Please enter all the fields in the right format.",
+        icon: "error",
+      }).then((res) => {});
+    } else {
+      this.loginService.register(this.loginForm.value).subscribe(
+        (res) => {
+          localStorage.setItem("user", res["token"]);
+          Swal.fire({
+            text: "Registration Successful",
+            icon: "success",
+          }).then((res) => {
+            this.router.navigateByUrl("/preSurvey");
+          });
+        },
+        (err) => {
+          Swal.fire({
+            text: "Username/Email already exists",
+            icon: "error",
+          }).then((res) => {});
         }
+      );
     }
+  }
 }
diff --git a/src/app/components/result-dashboard/result-dashboard.component.css b/src/app/components/result-dashboard/result-dashboard.component.css
index 1e28f7d..ab51307 100644
--- a/src/app/components/result-dashboard/result-dashboard.component.css
+++ b/src/app/components/result-dashboard/result-dashboard.component.css
@@ -1,433 +1,431 @@
 @media screen and (min-width: 992px) {
-    .home-wrap {
-        padding-top: 100px;
-    }
+  .home-wrap {
+    padding-top: 100px;
+  }
 }
 
 .icon-select {
-    width: 0px;
+  width: 0px;
 }
 
 .icon-select .selected-box {
-    position: relative;
-    margin: 0px;
-    padding: 0px;
-    width: 70px;
-    height: 60px;
-    border: 1px solid #999999;
-    -webkit-border-radius: 3px;
-    -moz-border-radius: 3px;
-    border-radius: 3px;
+  position: relative;
+  margin: 0px;
+  padding: 0px;
+  width: 70px;
+  height: 60px;
+  border: 1px solid #999999;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
 }
 
 .icon-select .selected-box:hover {
-    position: relative;
-    margin: 0px;
-    padding: 0px;
-    width: 70px;
-    height: 60px;
-    border: 1px solid #000000;
-    background-color: #FFFFFF;
-    -webkit-border-radius: 3px;
-    -moz-border-radius: 3px;
-    border-radius: 3px;
+  position: relative;
+  margin: 0px;
+  padding: 0px;
+  width: 70px;
+  height: 60px;
+  border: 1px solid #000000;
+  background-color: #ffffff;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
 }
 
 .icon-select .selected-icon {
-    position: absolute;
-    margin: 0px;
-    padding: 0px;
-    top: 5px;
-    left: 5px;
-    width: 48px;
-    /* sil */
-    height: 48px;
-    /* sil */
-    -webkit-border-radius: 3px;
-    -moz-border-radius: 3px;
-    border-radius: 3px;
+  position: absolute;
+  margin: 0px;
+  padding: 0px;
+  top: 5px;
+  left: 5px;
+  width: 48px;
+  /* sil */
+  height: 48px;
+  /* sil */
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
 }
 
 .icon-select .component-icon {
-    position: absolute;
-    bottom: 5px;
-    right: 4px;
+  position: absolute;
+  bottom: 5px;
+  right: 4px;
 }
 
 .icon-select .box {
-    position: absolute;
-    top: 0px;
-    left: 71px;
-    margin: 0px;
-    padding: 0px;
-    width: 170px;
-    height: 170px;
-    border: 1px solid #EEEEEE;
-    background-color: #EEEEEE;
-    -webkit-border-radius: 3px;
-    -moz-border-radius: 3px;
-    border-radius: 3px;
-    overflow: auto;
+  position: absolute;
+  top: 0px;
+  left: 71px;
+  margin: 0px;
+  padding: 0px;
+  width: 170px;
+  height: 170px;
+  border: 1px solid #eeeeee;
+  background-color: #eeeeee;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+  overflow: auto;
 }
 
 .icon-select .icon {
-    position: relative;
-    margin: 5px 0px 0px 5px;
-    padding: 0px;
-    width: 48px;
-    height: 48px;
-    border: 1px solid #CCCCCC;
-    background-color: #FFFFFF;
-    -webkit-border-radius: 3px;
-    -moz-border-radius: 3px;
-    border-radius: 3px;
-    overflow: hidden;
-    float: left;
+  position: relative;
+  margin: 5px 0px 0px 5px;
+  padding: 0px;
+  width: 48px;
+  height: 48px;
+  border: 1px solid #cccccc;
+  background-color: #ffffff;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+  overflow: hidden;
+  float: left;
 }
 
 .icon-select .icon:hover {
-    border: 1px solid #000000;
+  border: 1px solid #000000;
 }
 
 .icon-select .icon.selected {
-    position: relative;
-    margin: 5px 0px 0px 5px;
-    padding: 0px;
-    width: 48px;
-    height: 48px;
-    border: 1px solid #EEEEEE;
-    background-color: #EEEEEE;
-    -webkit-border-radius: 3px;
-    -moz-border-radius: 3px;
-    border-radius: 3px;
-    overflow: hidden;
-    float: left;
+  position: relative;
+  margin: 5px 0px 0px 5px;
+  padding: 0px;
+  width: 48px;
+  height: 48px;
+  border: 1px solid #eeeeee;
+  background-color: #eeeeee;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+  overflow: hidden;
+  float: left;
 }
 
 .circle {
-    border-radius: 50%;
-    width: 150px;
-    height: 150px;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    margin-top: auto;
-    margin-bottom: auto;
+  border-radius: 50%;
+  width: 150px;
+  height: 150px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  margin-top: auto;
+  margin-bottom: auto;
 }
 
 img {
-    border-radius: 50%;
-    width: 60px;
-    height: 60px;
+  border-radius: 50%;
+  width: 60px;
+  height: 60px;
 }
 
 .initials {
-    color: #ffffff;
-    font-size: 20px;
-    line-height: 19px;
-    letter-spacing: 0.2625;
+  color: #ffffff;
+  font-size: 20px;
+  line-height: 19px;
+  letter-spacing: 0.2625;
 }
 
 .leftCards {
-    margin-bottom: 10px;
+  margin-bottom: 10px;
 }
 
 .profileImg {
-    border-radius: 50%;
-    display: block;
-    margin-left: auto;
-    margin-right: auto;
-    width: 150px;
-    height: 150px;
+  border-radius: 50%;
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+  width: 150px;
+  height: 150px;
 }
 
 .div-wrap {
-    width: 500px;
+  width: 500px;
 }
 
 p {
-    font-family: 'Loto', sans-serif;
+  font-family: "Loto", sans-serif;
 }
 
 li {
-    font-family: 'Loto', sans-serif;
-    font-size: 15px;
-    margin: 15px;
+  font-family: "Loto", sans-serif;
+  font-size: 15px;
+  margin: 15px;
 }
 
 h3 {
-    font-family: 'Loto', sans-serif;
-    margin-bottom: 40px;
+  font-family: "Loto", sans-serif;
+  margin-bottom: 40px;
 }
 
 .mat-card {
-    background-color: #edf6f9;
+  background-color: #edf6f9;
 }
 
 .inputField {
-    width: 100%;
+  width: 100%;
 }
 
-
 /* Chrome, Safari, Edge, Opera */
 
 input::-webkit-outer-spin-button,
 input::-webkit-inner-spin-button {
-    -webkit-appearance: none;
-    margin: 0;
+  -webkit-appearance: none;
+  margin: 0;
 }
 
-
 /* Firefox */
 
-input[type=number] {
-    -moz-appearance: textfield;
+input[type="number"] {
+  -moz-appearance: textfield;
 }
 
 ::ng-deep .mat-tab-header {
-    display: none !important;
+  display: none !important;
 }
 
 ::ng-deep .mat-tooltip {
-    font-size: 15px !important;
+  font-size: 15px !important;
 }
 
 p {
-    text-align: justify;
-    text-justify: inter-word;
-    font-size: 15px;
+  text-align: justify;
+  text-justify: inter-word;
+  font-size: 15px;
 }
 
 h2 {
-    /* font-family: 'Loto', sans-serif; */
-    font-family: 'Loto', sans-serif;
+  /* font-family: 'Loto', sans-serif; */
+  font-family: "Loto", sans-serif;
 }
 
 ::ng-deep .mat-checkbox-layout {
-    white-space: normal !important;
+  white-space: normal !important;
 }
 
 .title {
-    background-color: #f8c045;
-    text-align: center;
-    padding: 8px 0;
-    margin-bottom: 20px;
+  background-color: #f8c045;
+  text-align: center;
+  padding: 8px 0;
+  margin-bottom: 20px;
 }
 
 h1 {
-    margin-bottom: 5px !important;
-    margin-top: 5px;
-    font-size: 20px;
+  margin-bottom: 5px !important;
+  margin-top: 5px;
+  font-size: 20px;
 }
 
 ::ng-deep .custom-dialog .mat-dialog-container {
-    padding: 0 !important;
+  padding: 0 !important;
 }
 
 .dialog-wrap {
-    padding: 10px;
+  padding: 10px;
 }
 
 .mat-error {
-    text-align: center;
-    margin-bottom: 25px;
+  text-align: center;
+  margin-bottom: 25px;
 }
 
 input::-webkit-outer-spin-button,
 input::-webkit-inner-spin-button {
-    -webkit-appearance: none;
-    margin: 0;
+  -webkit-appearance: none;
+  margin: 0;
 }
 
 .row {
-    margin: 0 !important;
+  margin: 0 !important;
 }
 
 .col-lg-12 {
-    padding: 0 !important;
+  padding: 0 !important;
 }
 
 .btn {
-    background-color: #f8c045;
-    color: black;
-    padding: 5px;
-    margin-top: 5px;
-    float: right;
-    border-radius: 5px;
-    margin-bottom: 20px;
-    margin-right: 15px;
+  background-color: #f8c045;
+  color: black;
+  padding: 5px;
+  margin-top: 5px;
+  float: right;
+  border-radius: 5px;
+  margin-bottom: 20px;
+  margin-right: 15px;
 }
 
 .btn:hover,
 .btn:focus,
 .btn:active {
-    outline: none;
-    box-shadow: none;
+  outline: none;
+  box-shadow: none;
 }
 
 .close {
-    font-size: 25px;
-    color: red;
-    float: right;
-    margin-right: 20px;
-    margin-top: 10px;
-    cursor: pointer;
+  font-size: 25px;
+  color: red;
+  float: right;
+  margin-right: 20px;
+  margin-top: 10px;
+  cursor: pointer;
 }
 
 .outer {
-    padding: 10px 30px;
+  padding: 10px 30px;
 }
 
 .circles {
-    height: 45px;
-    width: 45px;
-    border: 2px solid #eeeeee;
-    background-color: #eeeeee;
-    border-radius: 50%;
-    display: inline-block;
-    cursor: pointer;
+  height: 45px;
+  width: 45px;
+  border: 2px solid #eeeeee;
+  background-color: #eeeeee;
+  border-radius: 50%;
+  display: inline-block;
+  cursor: pointer;
 }
 
 .active {
-    border: 2px solid rgb(5, 204, 5);
-    background-color: rgb(5, 204, 5);
-    width: 200px;
-    height: 5px;
-    margin-bottom: 13px;
-    display: inline-block;
-    text-align: center;
-    margin: "0 auto";
+  border: 2px solid rgb(5, 204, 5);
+  background-color: rgb(5, 204, 5);
+  width: 200px;
+  height: 5px;
+  margin-bottom: 13px;
+  display: inline-block;
+  text-align: center;
+  margin: "0 auto";
 }
 
 .current {
-    background-color: rgb(5, 204, 5);
-    cursor: no-drop;
+  background-color: rgb(5, 204, 5);
+  cursor: no-drop;
 }
 
 .bar {
-    width: 200px;
-    height: 5px;
-    margin-bottom: 13px;
-    border: 2px solid #e4e3e3;
-    background-color: #e4e3e3;
-    display: inline-block;
-    text-align: center;
-    margin: "0 auto";
+  width: 200px;
+  height: 5px;
+  margin-bottom: 13px;
+  border: 2px solid #e4e3e3;
+  background-color: #e4e3e3;
+  display: inline-block;
+  text-align: center;
+  margin: "0 auto";
 }
 
 .icon {
-    margin: 8px;
+  margin: 8px;
 }
 
 .chartsRadial {
-    margin-bottom: -200px;
+  margin-bottom: -200px;
 }
 
 .alert {
-    text-align: center;
+  text-align: center;
 }
 
 .alert .mat-card {
-    display: inline-block;
+  display: inline-block;
 }
 
 h3 {
-    font-size: 20px;
-    text-align: center;
+  font-size: 20px;
+  text-align: center;
 }
 
 .status-btn {
-    border: none;
-    background-color: #f8c045;
-    color: black;
-    padding: 10px 40px;
-    display: inline-block;
-    border-radius: 5px;
-    margin: 20px;
+  border: none;
+  background-color: #f8c045;
+  color: black;
+  padding: 10px 40px;
+  display: inline-block;
+  border-radius: 5px;
+  margin: 20px;
 }
 
 .status-btn:hover,
 .status-btn:focus,
 .status-btn:active {
-    border: none;
-    outline: none;
-    box-shadow: none;
+  border: none;
+  outline: none;
+  box-shadow: none;
 }
 
 .legend {
-    margin-bottom: 40px;
+  margin-bottom: 40px;
 }
 
 .color1 {
-    height: 15px;
-    width: 15px;
-    border: 2px solid #eeeeee;
-    background-color: #eeeeee;
-    border-radius: 50%;
-    display: inline-block;
+  height: 15px;
+  width: 15px;
+  border: 2px solid #eeeeee;
+  background-color: #eeeeee;
+  border-radius: 50%;
+  display: inline-block;
 }
 
 .color2 {
-    height: 15px;
-    width: 15px;
-    border: 2px solid #ffa500;
-    background-color: #ffa500;
-    border-radius: 50%;
-    display: inline-block;
+  height: 15px;
+  width: 15px;
+  border: 2px solid #ffa500;
+  background-color: #ffa500;
+  border-radius: 50%;
+  display: inline-block;
 }
 
 .color3 {
-    height: 15px;
-    width: 15px;
-    border: 2px solid rgb(5, 204, 5);
-    background-color: rgb(5, 204, 5);
-    border-radius: 50%;
-    display: inline-block;
+  height: 15px;
+  width: 15px;
+  border: 2px solid rgb(5, 204, 5);
+  background-color: rgb(5, 204, 5);
+  border-radius: 50%;
+  display: inline-block;
 }
 
 small {
-    margin-left: 10px;
+  margin-left: 10px;
 }
 
 .mat-hint {
-    color: rgb(0, 132, 255);
-    cursor: pointer;
+  color: rgb(0, 132, 255);
+  cursor: pointer;
 }
 
 ::ng-deep .mat-form-field-appearance-outline .mat-form-field-subscript-wrapper {
-    padding: 0 !important;
+  padding: 0 !important;
 }
 
 ::ng-deep .mat-datepicker-content-touch .mat-calendar {
-    width: 0 !important;
-    height: 0 !important;
+  width: 0 !important;
+  height: 0 !important;
 }
 
-.status{
-    margin-top: 40px;
+.status {
+  margin-top: 40px;
 }
 
-@media screen and (max-width: 991px){
-    .activity{
-        margin-top: 20px;
-    }
+@media screen and (max-width: 991px) {
+  .activity {
+    margin-top: 20px;
+  }
 }
 
-.profile .mat-card{
-    display: flex;
-    flex-direction: column;
-    height: 100%;
+.profile .mat-card {
+  display: flex;
+  flex-direction: column;
+  height: 100%;
 }
 
-.outer{
-    display: flex;
-    margin: 0 50px;
+.outer {
+  display: flex;
+  margin: 0 50px;
 }
 
-.content{
-    margin: 20px 50px;
+.content {
+  margin: 20px 50px;
 }
 
-.content .mat-card{
-    padding: 20px 50px;
+.content .mat-card {
+  padding: 20px 50px;
 }
diff --git a/src/app/components/result-dashboard/result-dashboard.component.html b/src/app/components/result-dashboard/result-dashboard.component.html
index eddfbf2..2c96eec 100644
--- a/src/app/components/result-dashboard/result-dashboard.component.html
+++ b/src/app/components/result-dashboard/result-dashboard.component.html
@@ -1,44 +1,49 @@
 <div class="home-wrap">
-        <div class="col-6" *ngIf="profile">
-            <div class="row">
-                <div class="col-6">
-                    <mat-card class="leftCards ">
-                        <img class="profileImg" src="../../assets/profile.jpg">
-                        <mat-card-content>
-                            <h2 style="width: 100%; text-align: center;">PROFILE</h2>
-                            <p>Name: John Doe</p>
-                            <p style="margin-top: -10px;">Email : john@gmail.com</p>
-                            <p style="margin-top: -10px;">Phone : (757)-339-1234</p>
-                        </mat-card-content>
-                    </mat-card>
-                </div>
-                <div class="col-6">
-                    <mat-card class="leftCards ">
-                        <h2>ACTIVITY</h2>
-                        <ul>
-                            <li>Completed Pre-Survey on <span style="color: red;"> December 25, 2020</span></li>
-                            <li>Completed CPCQ Form on <span style="color: red;"> December 26, 2020</span></li>
-                            <li>Started Unpacking of CPCQ Form answers on <span style="color: red;"> December 27, 2020</span></li>
-                            <li>Results will be sent via email by <span style="color: red;"> December 31, 2020</span></li>
-                        </ul>
-                    </mat-card>
-                </div>
-
-            </div>
-            <div class="col-12">
-                <mat-card class="leftCards ">
-                    <mat-card-content>
-                        <div class="col-12">
-                            <span *ngFor="let item of statusIcons; let i = index">
-                            <span matTooltip="{{statusNames[i]}}" class="circles" [class.current]="i <= currentStatus" ><mat-icon class="icon">{{item}}</mat-icon></span>
-                            <span [class.bar]="i >= currentStatus" [class.active]="i < currentStatus" *ngIf="(i != statusIcons.length-1)" style="width: 65px;"></span>
-                            </span>
-                        </div>
-                    </mat-card-content>
-                </mat-card>
-
-            </div>
-            <!-- <div class="row">
+  <div class="col-6" *ngIf="profile">
+    <div class="row">
+      <div class="col-6">
+        <mat-card class="leftCards">
+          <img class="profileImg" src="../../assets/profile.jpg" />
+          <mat-card-content>
+            <h2 style="width: 100%; text-align: center">PROFILE</h2>
+            <p>Name: John Doe</p>
+            <p style="margin-top: -10px">Email : john@gmail.com</p>
+            <p style="margin-top: -10px">Phone : (757)-339-1234</p>
+          </mat-card-content>
+        </mat-card>
+      </div>
+      <div class="col-6">
+        <mat-card class="leftCards">
+          <h2>ACTIVITY</h2>
+          <ul>
+            <li>Completed Pre-Survey on <span style="color: red"> December 25, 2020</span></li>
+            <li>Completed CPCQ Form on <span style="color: red"> December 26, 2020</span></li>
+            <li>Started Unpacking of CPCQ Form answers on <span style="color: red"> December 27, 2020</span></li>
+            <li>Results will be sent via email by <span style="color: red"> December 31, 2020</span></li>
+          </ul>
+        </mat-card>
+      </div>
+    </div>
+    <div class="col-12">
+      <mat-card class="leftCards">
+        <mat-card-content>
+          <div class="col-12">
+            <span *ngFor="let item of statusIcons; let i = index">
+              <span matTooltip="{{ statusNames[i] }}" class="circles" [class.current]="i <= currentStatus"
+                ><mat-icon class="icon">{{ item }}</mat-icon></span
+              >
+              <span
+                [class.bar]="i >= currentStatus"
+                [class.active]="i < currentStatus"
+                *ngIf="i != statusIcons.length - 1"
+                style="width: 65px"
+              ></span>
+            </span>
+          </div>
+        </mat-card-content>
+      </mat-card>
+    </div>
+    <!-- <div class="row">
                 <div class="col-6">
                     <mat-card class="leftCards ">
                         <mat-card-content>
@@ -65,100 +70,126 @@
                 </div>
 
             </div> -->
-
-        </div>
-
-        <div class="row outer" *ngIf="!profile">
-                <div class="col-lg-5 profile">
-                    <mat-card>
-                        <div class="row col-lg-12">
-                            <div class="col-lg-4">
-                                <script type="text/javascript" ng:autobind src="http://code.angularjs.org/0.10.4/angular-0.10.4.js"></script>
-                                <script type="text/javascript" src="http://bug7a.github.io/iconselect.js/sample/lib/iscroll.js"></script>
-                                <div ng:controller="Ctrl">
-
-                                    <div id="my-icon-select"></div>
-
-                                </div>
-                                <img *ngIf="!showInitials" [src]="avatarLink" class="profileImg" (click)="openDialog()">
-                                <div *ngIf="showInitials" class="circle" style="background-color:#118ab2;" (click)="openDialog()">
-
-                                    <div class="initials">
-                                        {{initials}}
-                                    </div>
-                                </div>
-                                <br/>
-                                <p  (click)="openDialog()" style="width: 100%; text-align: center;">Choose Your Avatar</p>
-                                <br>
-
-                            </div>
-                            <div class="col-lg-8">
-                                <mat-card-content>
-                                    <h2 style="width: 100%; text-align: center;">USER PROFILE</h2>
-                                    <br>
-                                    <div class="row">
-                                        <div class="col-12">
-                                            <p>Username: {{userName}}</p>
-                                        </div>
-                                        <div class="col-12">
-                                            <p>Email: {{email}}</p>
-                                        </div>
-                                    </div>
-                                    <div class="row">
-                                        <div class="col-12">
-                                            <p>Gender: {{gender}}</p>
-                                        </div>
-                                        <div class="col-12">
-                                            <p>Location: {{location}}</p>
-                                        </div>
-                                    </div>
-                                </mat-card-content>
-                            </div>
-                        </div>
-                    </mat-card>
+  </div>
+
+  <div class="row outer" *ngIf="!profile">
+    <div class="col-lg-5 profile">
+      <mat-card>
+        <div class="row col-lg-12">
+          <div class="col-lg-4">
+            <script
+              type="text/javascript"
+              ng:autobind
+              src="http://code.angularjs.org/0.10.4/angular-0.10.4.js"
+            ></script>
+            <script type="text/javascript" src="http://bug7a.github.io/iconselect.js/sample/lib/iscroll.js"></script>
+            <div ng:controller="Ctrl">
+              <div id="my-icon-select"></div>
+            </div>
+            <img *ngIf="!showInitials" [src]="avatarLink" class="profileImg" (click)="openDialog()" />
+            <div *ngIf="showInitials" class="circle" style="background-color: #118ab2" (click)="openDialog()">
+              <div class="initials">
+                {{ initials }}
+              </div>
+            </div>
+            <br />
+            <p (click)="openDialog()" style="width: 100%; text-align: center">Choose Your Avatar</p>
+            <br />
+          </div>
+          <div class="col-lg-8">
+            <mat-card-content>
+              <h2 style="width: 100%; text-align: center">USER PROFILE</h2>
+              <br />
+              <div class="row">
+                <div class="col-12">
+                  <p>Username: {{ userName }}</p>
                 </div>
-                <div class="col-lg-7 activity">
-                    <mat-card class="leftCards">
-                        <h2>CPCDP ACTIVITIES</h2>
-                        <ul>
-                            <li>Completed Pre-Survey on <span style="color: red;"> {{preSurveyDate}}.</span></li>
-                            <li *ngIf="currentStatus >= 1">Cultural Proficiency Continuum Q-Sort form completed on <span style="color: red;">{{responsesDate}}.</span></li>
-                            <li *ngIf="!(currentStatus >= 1)">Cultural Proficiency Continuum Q-Sort form is pending your completion.</li>
-
-                            <li *ngIf="currentStatus >= 2">Cultural Proficiency Continuum Q-Sort reactions (i.e., unpacking) completed on <span style="color: red;">{{cpcqDate}}.</span></li>
-                            <li *ngIf="!(currentStatus >= 2)">Cultural Proficiency Continuum Q-Sort reactions (i.e., unpacking) are pending your completion.</li>
-                            
-                            <li *ngIf="!(currentStatus >= 3)" >Your facilitator's comments on your reactions were completed on <span style="color: red;">{{cpcqDate}}.</span></li>
-                            <li *ngIf="(currentStatus >= 3)" >Your facilitator's comments on your reactions are pending the facilitator's completion. (You will receive an email notifying you to login into your profile and review your facilitator's reactions.</li>
-
-                            <li *ngIf="(currentStatus >= 4)" >Post-Survey completed on <span style="color: red;">{{cpcqDate}}.</span></li>
-                            <li *ngIf="!(currentStatus >= 4)" >Post-Survey is pending your completion.</li>
-
-                        </ul>
-                        <div class="col-lg-12 status">
-                            <span *ngFor="let item of statusIcons; let i = index">
-                            <span matTooltip="{{statusNames[i]}}" class="circles" [class.current]="i <= currentStatus" ><mat-icon class="icon">{{item}}</mat-icon></span>
-                            <span [class.bar]="i >= currentStatus" [class.active]="i < currentStatus" *ngIf="(i != statusIcons.length-1)" style="width: 65px;"></span>
-                            </span>
-                        </div>
-                    </mat-card>
+                <div class="col-12">
+                  <p>Email: {{ email }}</p>
+                </div>
+              </div>
+              <div class="row">
+                <div class="col-12">
+                  <p>Gender: {{ gender }}</p>
                 </div>
+                <div class="col-12">
+                  <p>Location: {{ location }}</p>
+                </div>
+              </div>
+            </mat-card-content>
+          </div>
         </div>
-        <div class="content">
-            <mat-card>
-                <mat-card-content>
-                    <h2>Cultural Proficiency Continuum Q-Sort: Waiting for Your Reactions to be Reviewed
-
-                    </h2>
-                    <p style="font-size: 20px;">Thank you for your engagement with this protocol thus far. At this stage, you have completed the pre-survey and reacted to and unpacked a host of culturally proficient interactions. Next, a facilitator will review the comments you
-                        provided to the vignettes you unpacked and offer insights concerning your written comments. You will receive an email notifying you to login into your profile and review your facilitator's comments.
-
-                    </p>
-                    <ng-lottie speed="0.1" height="280px" [options]="options" (animationCreated)="animationCreated($event)"></ng-lottie>
-                </mat-card-content>
-                <mat-card-actions>
-
-                </mat-card-actions>
-            </mat-card>
+      </mat-card>
+    </div>
+    <div class="col-lg-7 activity">
+      <mat-card class="leftCards">
+        <h2>CPCDP ACTIVITIES</h2>
+        <ul>
+          <li>
+            Completed Pre-Survey on <span style="color: red"> {{ preSurveyDate }}.</span>
+          </li>
+          <li *ngIf="currentStatus >= 1">
+            Cultural Proficiency Continuum Q-Sort form completed on
+            <span style="color: red">{{ responsesDate }}.</span>
+          </li>
+          <li *ngIf="!(currentStatus >= 1)">Cultural Proficiency Continuum Q-Sort form is pending your completion.</li>
+
+          <li *ngIf="currentStatus >= 2">
+            Cultural Proficiency Continuum Q-Sort reactions (i.e., unpacking) completed on
+            <span style="color: red">{{ cpcqDate }}.</span>
+          </li>
+          <li *ngIf="!(currentStatus >= 2)">
+            Cultural Proficiency Continuum Q-Sort reactions (i.e., unpacking) are pending your completion.
+          </li>
+
+          <li *ngIf="!(currentStatus >= 3)">
+            Your facilitator's comments on your reactions were completed on
+            <span style="color: red">{{ cpcqDate }}.</span>
+          </li>
+          <li *ngIf="currentStatus >= 3">
+            Your facilitator's comments on your reactions are pending the facilitator's completion. (You will receive an
+            email notifying you to login into your profile and review your facilitator's reactions.
+          </li>
+
+          <li *ngIf="currentStatus >= 4">
+            Post-Survey completed on <span style="color: red">{{ cpcqDate }}.</span>
+          </li>
+          <li *ngIf="!(currentStatus >= 4)">Post-Survey is pending your completion.</li>
+        </ul>
+        <div class="col-lg-12 status">
+          <span *ngFor="let item of statusIcons; let i = index">
+            <span matTooltip="{{ statusNames[i] }}" class="circles" [class.current]="i <= currentStatus"
+              ><mat-icon class="icon">{{ item }}</mat-icon></span
+            >
+            <span
+              [class.bar]="i >= currentStatus"
+              [class.active]="i < currentStatus"
+              *ngIf="i != statusIcons.length - 1"
+              style="width: 65px"
+            ></span>
+          </span>
         </div>
-</div>
\ No newline at end of file
+      </mat-card>
+    </div>
+  </div>
+  <div class="content">
+    <mat-card>
+      <mat-card-content>
+        <h2>Cultural Proficiency Continuum Q-Sort: Waiting for Your Reactions to be Reviewed</h2>
+        <p style="font-size: 20px">
+          Thank you for your engagement with this protocol thus far. At this stage, you have completed the pre-survey
+          and reacted to and unpacked a host of culturally proficient interactions. Next, a facilitator will review the
+          comments you provided to the vignettes you unpacked and offer insights concerning your written comments. You
+          will receive an email notifying you to login into your profile and review your facilitator's comments.
+        </p>
+        <ng-lottie
+          speed="0.1"
+          height="280px"
+          [options]="options"
+          (animationCreated)="animationCreated($event)"
+        ></ng-lottie>
+      </mat-card-content>
+      <mat-card-actions> </mat-card-actions>
+    </mat-card>
+  </div>
+</div>
diff --git a/src/app/components/result-dashboard/result-dashboard.component.spec.ts b/src/app/components/result-dashboard/result-dashboard.component.spec.ts
index fa962c8..58b198d 100644
--- a/src/app/components/result-dashboard/result-dashboard.component.spec.ts
+++ b/src/app/components/result-dashboard/result-dashboard.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { ResultDashboardComponent } from './result-dashboard.component';
+import { ResultDashboardComponent } from "./result-dashboard.component";
 
-describe('ResultDashboardComponent', () => {
+describe("ResultDashboardComponent", () => {
   let component: ResultDashboardComponent;
   let fixture: ComponentFixture<ResultDashboardComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ ResultDashboardComponent ]
-    })
-    .compileComponents();
+      declarations: [ResultDashboardComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('ResultDashboardComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/result-dashboard/result-dashboard.component.ts b/src/app/components/result-dashboard/result-dashboard.component.ts
index e596f3c..dc70e78 100644
--- a/src/app/components/result-dashboard/result-dashboard.component.ts
+++ b/src/app/components/result-dashboard/result-dashboard.component.ts
@@ -8,380 +8,380 @@ import { PreSurveyService } from "src/app/services/preSurvey.service";
 import { CPCQService } from "src/app/services/cpcq.service";
 import { AnimationOptions } from "ngx-lottie";
 import {
-    ApexNonAxisChartSeries,
-    ApexPlotOptions,
-    ApexChart,
-    ApexFill,
-    ChartComponent,
-    ApexLegend,
-    ApexResponsive,
+  ApexNonAxisChartSeries,
+  ApexPlotOptions,
+  ApexChart,
+  ApexFill,
+  ChartComponent,
+  ApexLegend,
+  ApexResponsive,
 } from "ng-apexcharts";
 
 export interface DialogData {
-    animal;
+  animal;
 }
 
 export type ChartOptions2 = {
-    series: ApexNonAxisChartSeries;
-    chart: ApexChart;
-    labels: string[];
-    colors: string[];
-    legend: ApexLegend;
-    plotOptions: ApexPlotOptions;
-    responsive: ApexResponsive | ApexResponsive[];
+  series: ApexNonAxisChartSeries;
+  chart: ApexChart;
+  labels: string[];
+  colors: string[];
+  legend: ApexLegend;
+  plotOptions: ApexPlotOptions;
+  responsive: ApexResponsive | ApexResponsive[];
 };
 
 export type ChartOptions1 = {
-    series: ApexNonAxisChartSeries;
-    chart: ApexChart;
-    labels: string[];
-    plotOptions: ApexPlotOptions;
+  series: ApexNonAxisChartSeries;
+  chart: ApexChart;
+  labels: string[];
+  plotOptions: ApexPlotOptions;
 };
 
 export type ChartOptions = {
-    series: ApexNonAxisChartSeries;
-    chart: ApexChart;
-    labels: string[];
-    plotOptions: ApexPlotOptions;
-    fill: ApexFill;
+  series: ApexNonAxisChartSeries;
+  chart: ApexChart;
+  labels: string[];
+  plotOptions: ApexPlotOptions;
+  fill: ApexFill;
 };
 @Component({
-    selector: "app-result-dashboard",
-    templateUrl: "./result-dashboard.component.html",
-    styleUrls: ["./result-dashboard.component.css"],
+  selector: "app-result-dashboard",
+  templateUrl: "./result-dashboard.component.html",
+  styleUrls: ["./result-dashboard.component.css"],
 })
 export class ResultDashboardComponent implements OnInit {
-    statusNames = ["Pre-Survey", "CPCQ Form", "Unpacking", "Feedback", "View Results", "Post Survey"];
-    statusIcons = ["edit", "developer_board", "add_comment", "edit", "bar_chart", "chrome_reader_mode"];
-    currentStatus = 2;
-    selectedSatus = 0;
-    profile = false;
-    avatarLink: string;
+  statusNames = ["Pre-Survey", "CPCQ Form", "Unpacking", "Feedback", "View Results", "Post Survey"];
+  statusIcons = ["edit", "developer_board", "add_comment", "edit", "bar_chart", "chrome_reader_mode"];
+  currentStatus = 2;
+  selectedSatus = 0;
+  profile = false;
+  avatarLink: string;
 
-    public photoUrl: string;
+  public photoUrl: string;
 
-    public name: string = "Nihaarika Jagadish";
+  public name: string = "Nihaarika Jagadish";
 
-    public showInitials = false;
-    public initials: string;
-    public circleColor: string;
-    public profileDetails: any;
-    public email: any;
-    public location: any;
-    public gender: any;
-    public userName: any;
-    public preSurveyDate: any;
-    public responsesDate: any;
-    public cpcqDate: any;
-    public finalDate: any;
+  public showInitials = false;
+  public initials: string;
+  public circleColor: string;
+  public profileDetails: any;
+  public email: any;
+  public location: any;
+  public gender: any;
+  public userName: any;
+  public preSurveyDate: any;
+  public responsesDate: any;
+  public cpcqDate: any;
+  public finalDate: any;
 
-    private colors = [
-        "#EB7181", // red
-        "#468547", // green
-        "#FFD558", // yellow
-        "#3670B2", // blue
-    ];
+  private colors = [
+    "#EB7181", // red
+    "#468547", // green
+    "#FFD558", // yellow
+    "#3670B2", // blue
+  ];
 
-    @ViewChild("chart") chart: ChartComponent;
-    public chartOptions: Partial<ChartOptions>;
-    public chartOptions1: Partial<ChartOptions1>;
-    public chartOptions2: Partial<ChartOptions2>;
+  @ViewChild("chart") chart: ChartComponent;
+  public chartOptions: Partial<ChartOptions>;
+  public chartOptions1: Partial<ChartOptions1>;
+  public chartOptions2: Partial<ChartOptions2>;
 
-    options: AnimationOptions = {
-        path: "https://assets2.lottiefiles.com/packages/lf20_cmf6a3.json",
-    };
+  options: AnimationOptions = {
+    path: "https://assets2.lottiefiles.com/packages/lf20_cmf6a3.json",
+  };
 
-    animationCreated(animationItem: AnimationItem): void {}
+  animationCreated(animationItem: AnimationItem): void {}
 
-    openDialog1(i) {
-        this.chartOptions2 = {
-            series: [76, 67, 61, 90, 56],
-            chart: {
-                height: 300,
-                type: "radialBar",
-                events: {
-                    legendClick: function (chartContext, seriesIndex, config) {
-                        if (seriesIndex == 0) {
-                            Swal.fire({
-                                title: "Attitude",
-                                html: "A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status. <br /> <br /> <span><b> B.4 </b> Black students have the same opportunities and access to attend college as their white peers. <br/> <br /><span><b> C.1 </b> Students who wear dreadlocks as a hairstyle are a distraction in the classroom. <br/> <br /> D.3 It should be required for students to remove hair accessories that are associated with their culture, tribe, sexuality, or religion. <br/> <br /> E.5 All students who live in the United States deserve a quality public education, even those students whose parents are undocumented immigrants. <br/> F.6 All faculty and staff within a school setting have equal ability to transfer knowledge to students in regards to life, culture, character, and/or academic content.",
-                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-                            }).then((res) => {
-                                window.location.reload();
-                            });
-                        } else if (seriesIndex == 1) {
-                            Swal.fire({
-                                title: "Empathy",
-                                html: "A.2 A 10th-grade male died as a result of a car accident during an illegal street race. A group of teachers will not attend the funeral because of the activity that led to the student’s cause of death. <br /> <br /> <span><b> B.4 </b> A public school Teacher is grounded by the philosophy of their religion. Throughout their career as an educator; they have learned to be welcoming to others’ cultural and religious beliefs even if those beliefs are in conflict with their own.<br/> <br /><span><b> C.1 </b> In two weeks, the 8th grade teaching cluster will be getting a new math teacher who is Muslim. Next week’s professional development is dedicated to learning about the customs and etiquette of Islam to ensure that the new colleague feels welcomed in their new school.<br/> <br /> D.3  An Asian student scored an 85 percent on today’s math quiz. The teacher expressed disappointment in the student by saying,Come on, you are Asian! You should’ve scored better than this. <br/> <br /> E.5  A school counselor advised a biracial student that they would appear more professional if they perm their hair (removing the kinks) for their upcoming college visits. <br/> F.6 Your colleague was pulled over by the police on the way to work this morning. You hear other colleagues in the break room discussing the reasons why they were pulled over, and all of the suspected reasons were related to what they may have done (i.e., speeding, running a stop sign, etc.), rather than acknowledging that they may have been pulled over for being a person of color driving a luxury car.",
-                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-                            }).then((res) => {
-                                window.location.reload();
-                            });
-                        } else if (seriesIndex == 2) {
-                            Swal.fire({
-                                title: "Policy",
-                                html: "A.2 A group of teachers and students are protesting the athletic department at a high school for changing the school’s logo to a silhouette of a Native American in a headdress; they have secured a place on the agenda for the next school board meeting to give a presentation on why this logo is offensive and trivializes Native Americans. <br /> <br /> <span><b> B.4 </b>  A school that does not consider factors related to culture and ethnicity in their decision-making process is more democratic than a school who does consider factors related to culture and ethnicity in their decision-making process.<br/> <br /><span><b> C.1 </b> A school leader makes a “diversity hire” to introduce new ideas around school culture, curriculum, leadership, and/or supervision. <br/> <br /> D.3 A principal implemented a policy that all faculty and staff have to participate in quarterly potlucks; they are to bring a traditional dish specific to their culture, as a way to facilitate cross-cultural discourse. <br/> <br /> E.5 Students in a high-poverty school who are absent 10 consecutive days in a marking period are referred to special education for excessive absenteeism. <br/> F.6A member of the school board is proposing a policy where English is the official language for all school related business in a community where the majority of the students’ and families’ primary language is Spanish.                ",
-                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-                            }).then((res) => {
-                                window.location.reload();
-                            });
-                        } else if (seriesIndex == 3) {
-                            Swal.fire({
-                                title: "Professionalism",
-                                html: "A.2A teacher asked the class who has traveled out of the country. A Black male raises his hand and states “I have.”  The teacher asked the student three follow-up questions to corroborate his story.                <br /> <br /> <span><b> B.4 </b> During lunch duty, teachers had a discussion in the presence of students about tomorrow’s district-wide racial sensitivity training. A teacher commented, Why do we have to attend this training; the United States is post-racial because we have a Black president.                <br/> <br /><span><b> C.1 </b> The social committee at an elementary school is planning an awards ceremony and dinner for the staff and faculty. Six of their colleagues are vegan because of their religious beliefs.  As a result, the committee has added a vegan selection to the menu to accommodate their colleagues’ religious beliefs. <br/> <br /> D.3  The reading specialist expressed some concerns to the Vice Principal about how her male students emasculates her during whole group instruction. The Vice Principal said, “Don’t worry about it, that's just how boys behave.”                 <br/> <br /> E.5  A history teacher refuses to acknowledge black history month and does not want to teach content about black history in the United States.                <br/> F.6 An AP English teacher has assigned a research paper where the students were required to write about their religion. The teacher did not let their own religious beliefs cloud their judgement; the teacher researched the student’s religion while grading the paper to offer relevant constructive feedback back on the arguments made within the paper.                ",
-                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-                            }).then((res) => {
-                                window.location.reload();
-                            });
-                        } else if (seriesIndex == 4) {
-                            Swal.fire({
-                                title: "Teaching Practice",
-                                html: "A.2 A novice teacher in a school where the majority of the students are African-American and Latino uses hip-hop as a way to make science relevant in the student's social and cultural context.                <br /> <br /> <span><b> B.4 </b>An algebra teacher who teaches in a school where the majority of the students are on free and reduced lunch requires that each student buy a specific graphing calculator for Algebra, which retails for over 100 dollars.                <br/> <br /><span><b> C.1 </b> A teacher created a seating chart that placed ‘unteachable students’ in the back of the classroom, all of whom were male: 2 Latinos and 6 African Americans.  In the same seating chart, her ‘good students,' all white, were seated in preferential seating.                <br/> <br /> D.3 A teacher puts together a petition to request a textbook company to remove the narrative about the enslavement of Africans in the United States in their history textbook to accommodate teachers’ discomfort with discussing this sensitive topic.                <br/> <br /> E.5  A teacher in a Title 1 school (high percentage of children from low-income families) checks homework for completeness rather than correctness as a strategy to improve student efficacy.                 <br/> F.6 There is an increase of LGBTQIA+ students reporting that they are being harassed both verbally and physically in United States public schools. A group of students and teachers are researching the best practices to implement and create a supportive environment for these students to voice their concerns in their school.",
-                                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
-                            }).then((res) => {
-                                window.location.reload();
-                            });
-                        }
-                    },
-                },
+  openDialog1(i) {
+    this.chartOptions2 = {
+      series: [76, 67, 61, 90, 56],
+      chart: {
+        height: 300,
+        type: "radialBar",
+        events: {
+          legendClick: function (chartContext, seriesIndex, config) {
+            if (seriesIndex == 0) {
+              Swal.fire({
+                title: "Attitude",
+                html: "A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status. <br /> <br /> <span><b> B.4 </b> Black students have the same opportunities and access to attend college as their white peers. <br/> <br /><span><b> C.1 </b> Students who wear dreadlocks as a hairstyle are a distraction in the classroom. <br/> <br /> D.3 It should be required for students to remove hair accessories that are associated with their culture, tribe, sexuality, or religion. <br/> <br /> E.5 All students who live in the United States deserve a quality public education, even those students whose parents are undocumented immigrants. <br/> F.6 All faculty and staff within a school setting have equal ability to transfer knowledge to students in regards to life, culture, character, and/or academic content.",
+                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+              }).then((res) => {
+                window.location.reload();
+              });
+            } else if (seriesIndex == 1) {
+              Swal.fire({
+                title: "Empathy",
+                html: "A.2 A 10th-grade male died as a result of a car accident during an illegal street race. A group of teachers will not attend the funeral because of the activity that led to the student’s cause of death. <br /> <br /> <span><b> B.4 </b> A public school Teacher is grounded by the philosophy of their religion. Throughout their career as an educator; they have learned to be welcoming to others’ cultural and religious beliefs even if those beliefs are in conflict with their own.<br/> <br /><span><b> C.1 </b> In two weeks, the 8th grade teaching cluster will be getting a new math teacher who is Muslim. Next week’s professional development is dedicated to learning about the customs and etiquette of Islam to ensure that the new colleague feels welcomed in their new school.<br/> <br /> D.3  An Asian student scored an 85 percent on today’s math quiz. The teacher expressed disappointment in the student by saying,Come on, you are Asian! You should’ve scored better than this. <br/> <br /> E.5  A school counselor advised a biracial student that they would appear more professional if they perm their hair (removing the kinks) for their upcoming college visits. <br/> F.6 Your colleague was pulled over by the police on the way to work this morning. You hear other colleagues in the break room discussing the reasons why they were pulled over, and all of the suspected reasons were related to what they may have done (i.e., speeding, running a stop sign, etc.), rather than acknowledging that they may have been pulled over for being a person of color driving a luxury car.",
+                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+              }).then((res) => {
+                window.location.reload();
+              });
+            } else if (seriesIndex == 2) {
+              Swal.fire({
+                title: "Policy",
+                html: "A.2 A group of teachers and students are protesting the athletic department at a high school for changing the school’s logo to a silhouette of a Native American in a headdress; they have secured a place on the agenda for the next school board meeting to give a presentation on why this logo is offensive and trivializes Native Americans. <br /> <br /> <span><b> B.4 </b>  A school that does not consider factors related to culture and ethnicity in their decision-making process is more democratic than a school who does consider factors related to culture and ethnicity in their decision-making process.<br/> <br /><span><b> C.1 </b> A school leader makes a “diversity hire” to introduce new ideas around school culture, curriculum, leadership, and/or supervision. <br/> <br /> D.3 A principal implemented a policy that all faculty and staff have to participate in quarterly potlucks; they are to bring a traditional dish specific to their culture, as a way to facilitate cross-cultural discourse. <br/> <br /> E.5 Students in a high-poverty school who are absent 10 consecutive days in a marking period are referred to special education for excessive absenteeism. <br/> F.6A member of the school board is proposing a policy where English is the official language for all school related business in a community where the majority of the students’ and families’ primary language is Spanish.                ",
+                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+              }).then((res) => {
+                window.location.reload();
+              });
+            } else if (seriesIndex == 3) {
+              Swal.fire({
+                title: "Professionalism",
+                html: "A.2A teacher asked the class who has traveled out of the country. A Black male raises his hand and states “I have.”  The teacher asked the student three follow-up questions to corroborate his story.                <br /> <br /> <span><b> B.4 </b> During lunch duty, teachers had a discussion in the presence of students about tomorrow’s district-wide racial sensitivity training. A teacher commented, Why do we have to attend this training; the United States is post-racial because we have a Black president.                <br/> <br /><span><b> C.1 </b> The social committee at an elementary school is planning an awards ceremony and dinner for the staff and faculty. Six of their colleagues are vegan because of their religious beliefs.  As a result, the committee has added a vegan selection to the menu to accommodate their colleagues’ religious beliefs. <br/> <br /> D.3  The reading specialist expressed some concerns to the Vice Principal about how her male students emasculates her during whole group instruction. The Vice Principal said, “Don’t worry about it, that's just how boys behave.”                 <br/> <br /> E.5  A history teacher refuses to acknowledge black history month and does not want to teach content about black history in the United States.                <br/> F.6 An AP English teacher has assigned a research paper where the students were required to write about their religion. The teacher did not let their own religious beliefs cloud their judgement; the teacher researched the student’s religion while grading the paper to offer relevant constructive feedback back on the arguments made within the paper.                ",
+                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+              }).then((res) => {
+                window.location.reload();
+              });
+            } else if (seriesIndex == 4) {
+              Swal.fire({
+                title: "Teaching Practice",
+                html: "A.2 A novice teacher in a school where the majority of the students are African-American and Latino uses hip-hop as a way to make science relevant in the student's social and cultural context.                <br /> <br /> <span><b> B.4 </b>An algebra teacher who teaches in a school where the majority of the students are on free and reduced lunch requires that each student buy a specific graphing calculator for Algebra, which retails for over 100 dollars.                <br/> <br /><span><b> C.1 </b> A teacher created a seating chart that placed ‘unteachable students’ in the back of the classroom, all of whom were male: 2 Latinos and 6 African Americans.  In the same seating chart, her ‘good students,' all white, were seated in preferential seating.                <br/> <br /> D.3 A teacher puts together a petition to request a textbook company to remove the narrative about the enslavement of Africans in the United States in their history textbook to accommodate teachers’ discomfort with discussing this sensitive topic.                <br/> <br /> E.5  A teacher in a Title 1 school (high percentage of children from low-income families) checks homework for completeness rather than correctness as a strategy to improve student efficacy.                 <br/> F.6 There is an increase of LGBTQIA+ students reporting that they are being harassed both verbally and physically in United States public schools. A group of students and teachers are researching the best practices to implement and create a supportive environment for these students to voice their concerns in their school.",
+                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
+              }).then((res) => {
+                window.location.reload();
+              });
+            }
+          },
+        },
+      },
+      plotOptions: {
+        radialBar: {
+          offsetY: 0,
+          startAngle: 0,
+          endAngle: 270,
+          hollow: {
+            margin: 5,
+            size: "30%",
+            background: "transparent",
+            image: undefined,
+          },
+          dataLabels: {
+            name: {
+              show: false,
             },
-            plotOptions: {
-                radialBar: {
-                    offsetY: 0,
-                    startAngle: 0,
-                    endAngle: 270,
-                    hollow: {
-                        margin: 5,
-                        size: "30%",
-                        background: "transparent",
-                        image: undefined,
-                    },
-                    dataLabels: {
-                        name: {
-                            show: false,
-                        },
-                        value: {
-                            show: false,
-                        },
-                    },
-                },
+            value: {
+              show: false,
             },
-            colors: ["#1ab7ea", "#0084ff", "#39539E", "#0077B5"],
-            labels: ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"],
+          },
+        },
+      },
+      colors: ["#1ab7ea", "#0084ff", "#39539E", "#0077B5"],
+      labels: ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"],
+      legend: {
+        show: true,
+        floating: true,
+        fontSize: "13px",
+        position: "left",
+        labels: {
+          useSeriesColors: true,
+        },
+        formatter: function (seriesName, opts) {
+          return seriesName + ":  " + opts.w.globals.series[opts.seriesIndex];
+        },
+        itemMargin: {
+          horizontal: 3,
+        },
+      },
+      responsive: [
+        {
+          breakpoint: 480,
+          options: {
             legend: {
-                show: true,
-                floating: true,
-                fontSize: "13px",
-                position: "left",
-                labels: {
-                    useSeriesColors: true,
-                },
-                formatter: function (seriesName, opts) {
-                    return seriesName + ":  " + opts.w.globals.series[opts.seriesIndex];
-                },
-                itemMargin: {
-                    horizontal: 3,
-                },
+              show: false,
             },
-            responsive: [
-                {
-                    breakpoint: 480,
-                    options: {
-                        legend: {
-                            show: false,
-                        },
-                    },
-                },
-            ],
-        };
-    }
+          },
+        },
+      ],
+    };
+  }
 
-    openDialog() {
-        const dialogRef = this.dialog.open(DashboardDialoComponent, {
-            data: { userID: this.profileDetails[0]["id"] },
-        });
+  openDialog() {
+    const dialogRef = this.dialog.open(DashboardDialoComponent, {
+      data: { userID: this.profileDetails[0]["id"] },
+    });
 
-        dialogRef.afterClosed().subscribe((result) => {
-            this.showInitials = false;
-            this.avatarLink = result;
-        });
-    }
-    constructor(
-        private router: Router,
-        public dialog: MatDialog,
-        public PreSurService: PreSurveyService,
-        public cpcqService: CPCQService
-    ) {
-        this.openDialog1(1);
+    dialogRef.afterClosed().subscribe((result) => {
+      this.showInitials = false;
+      this.avatarLink = result;
+    });
+  }
+  constructor(
+    private router: Router,
+    public dialog: MatDialog,
+    public PreSurService: PreSurveyService,
+    public cpcqService: CPCQService
+  ) {
+    this.openDialog1(1);
 
-        this.chartOptions = {
-            series: [76],
-            chart: {
-                height: 300,
-                type: "radialBar",
-                offsetY: -20,
+    this.chartOptions = {
+      series: [76],
+      chart: {
+        height: 300,
+        type: "radialBar",
+        offsetY: -20,
+      },
+      plotOptions: {
+        radialBar: {
+          startAngle: -90,
+          endAngle: 90,
+          track: {
+            background: "#e7e7e7",
+            strokeWidth: "97%",
+            margin: 5, // margin is in pixels
+            dropShadow: {
+              enabled: true,
+              top: 2,
+              left: 0,
+              opacity: 0.31,
+              blur: 2,
             },
-            plotOptions: {
-                radialBar: {
-                    startAngle: -90,
-                    endAngle: 90,
-                    track: {
-                        background: "#e7e7e7",
-                        strokeWidth: "97%",
-                        margin: 5, // margin is in pixels
-                        dropShadow: {
-                            enabled: true,
-                            top: 2,
-                            left: 0,
-                            opacity: 0.31,
-                            blur: 2,
-                        },
-                    },
-                    dataLabels: {
-                        value: {
-                            // offsetY: -2,
-                            fontSize: "22px",
-                        },
-                        name: {
-                            show: true,
-                            fontSize: "13px",
-                            color: "green",
-                        },
-                    },
-                },
+          },
+          dataLabels: {
+            value: {
+              // offsetY: -2,
+              fontSize: "22px",
             },
-            fill: {
-                type: "gradient",
-                gradient: {
-                    shade: "light",
-                    shadeIntensity: 0.4,
-                    inverseColors: false,
-                    opacityFrom: 1,
-                    opacityTo: 1,
-                    stops: [0, 50, 53, 91],
-                },
+            name: {
+              show: true,
+              fontSize: "13px",
+              color: "green",
             },
-            labels: ["Culturally Competent"],
-        };
+          },
+        },
+      },
+      fill: {
+        type: "gradient",
+        gradient: {
+          shade: "light",
+          shadeIntensity: 0.4,
+          inverseColors: false,
+          opacityFrom: 1,
+          opacityTo: 1,
+          stops: [0, 50, 53, 91],
+        },
+      },
+      labels: ["Culturally Competent"],
+    };
 
-        this.chartOptions1 = {
-            series: [44, 55, 67, 83, 56],
-            chart: {
-                height: 200,
-                width: 300,
-                type: "radialBar",
-                events: {
-                    click: function (event, chartContext, config) {
-                        // The last parameter config contains additional information like `seriesIndex` and `dataPointIndex` for cartesian charts.
-                    },
-                },
+    this.chartOptions1 = {
+      series: [44, 55, 67, 83, 56],
+      chart: {
+        height: 200,
+        width: 300,
+        type: "radialBar",
+        events: {
+          click: function (event, chartContext, config) {
+            // The last parameter config contains additional information like `seriesIndex` and `dataPointIndex` for cartesian charts.
+          },
+        },
+      },
+      plotOptions: {
+        radialBar: {
+          dataLabels: {
+            name: {
+              fontSize: "22px",
             },
-            plotOptions: {
-                radialBar: {
-                    dataLabels: {
-                        name: {
-                            fontSize: "22px",
-                        },
-                        value: {
-                            fontSize: "16px",
-                        },
-                        total: {
-                            show: true,
-                            label: "Total",
-                            formatter: function (w) {
-                                return "249";
-                            },
-                        },
-                    },
-                },
+            value: {
+              fontSize: "16px",
             },
-            labels: ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"],
-        };
-    }
+            total: {
+              show: true,
+              label: "Total",
+              formatter: function (w) {
+                return "249";
+              },
+            },
+          },
+        },
+      },
+      labels: ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"],
+    };
+  }
 
-    public generateData(count, yrange) {
-        var i = 0;
-        var series = [];
-        while (i < count) {
-            var x = "w" + (i + 1).toString();
-            var y = Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min;
+  public generateData(count, yrange) {
+    var i = 0;
+    var series = [];
+    while (i < count) {
+      var x = "w" + (i + 1).toString();
+      var y = Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min;
 
-            series.push({
-                x: x,
-                y: y,
-            });
-            i++;
-        }
-        return series;
+      series.push({
+        x: x,
+        y: y,
+      });
+      i++;
     }
+    return series;
+  }
 
-    ngOnInit(): void {
-        if (!this.photoUrl) {
-            this.showInitials = true;
-            this.createInititals();
+  ngOnInit(): void {
+    if (!this.photoUrl) {
+      this.showInitials = true;
+      this.createInititals();
 
-            const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length));
-            this.circleColor = this.colors[randomIndex];
-        }
-        this.PreSurService.profileData().subscribe((res) => {
-            this.profileDetails = res;
-            this.email = res[0]["email"];
-            this.location = res[0]["location"];
-            this.gender = res[0]["gender"];
-            this.userName = res[0]["first_name"];
-            this.preSurveyDate = new Date(res[0]["preSurveydate"]).toLocaleDateString("en-US", {
-                weekday: "long",
-                year: "numeric",
-                month: "long",
-                day: "numeric",
-            });
-            this.responsesDate = new Date(res[0]["responsesdate"]).toLocaleDateString("en-US", {
-                weekday: "long",
-                year: "numeric",
-                month: "long",
-                day: "numeric",
-            });
-            this.cpcqDate = new Date(res[0]["cpcqdate"]).toLocaleDateString("en-US", {
-                weekday: "long",
-                year: "numeric",
-                month: "long",
-                day: "numeric",
-            });
+      const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length));
+      this.circleColor = this.colors[randomIndex];
+    }
+    this.PreSurService.profileData().subscribe((res) => {
+      this.profileDetails = res;
+      this.email = res[0]["email"];
+      this.location = res[0]["location"];
+      this.gender = res[0]["gender"];
+      this.userName = res[0]["first_name"];
+      this.preSurveyDate = new Date(res[0]["preSurveydate"]).toLocaleDateString("en-US", {
+        weekday: "long",
+        year: "numeric",
+        month: "long",
+        day: "numeric",
+      });
+      this.responsesDate = new Date(res[0]["responsesdate"]).toLocaleDateString("en-US", {
+        weekday: "long",
+        year: "numeric",
+        month: "long",
+        day: "numeric",
+      });
+      this.cpcqDate = new Date(res[0]["cpcqdate"]).toLocaleDateString("en-US", {
+        weekday: "long",
+        year: "numeric",
+        month: "long",
+        day: "numeric",
+      });
 
-            this.currentStatus = res[0]["status"].lastIndexOf(true);
-            //
-            if (res[0]["photo_profile"].length != 0) {
-                this.showInitials = false;
-                var lenSTr = res[0]["photo_profile"].length;
-                this.avatarLink = res[0]["photo_profile"];
-            }
-        });
+      this.currentStatus = res[0]["status"].lastIndexOf(true);
+      //
+      if (res[0]["photo_profile"].length != 0) {
+        this.showInitials = false;
+        var lenSTr = res[0]["photo_profile"].length;
+        this.avatarLink = res[0]["photo_profile"];
+      }
+    });
 
-        this.cpcqService.getCPCQStatus().subscribe((res) => {
-            this.finalDate = new Date(res[0]["created"]).toDateString();
-        });
-    }
+    this.cpcqService.getCPCQStatus().subscribe((res) => {
+      this.finalDate = new Date(res[0]["created"]).toDateString();
+    });
+  }
 
-    private createInititals(): void {
-        let initials = "";
+  private createInititals(): void {
+    let initials = "";
 
-        for (let i = 0; i < this.name.length; i++) {
-            if (this.name.charAt(i) === " ") {
-                continue;
-            }
+    for (let i = 0; i < this.name.length; i++) {
+      if (this.name.charAt(i) === " ") {
+        continue;
+      }
 
-            if (this.name.charAt(i) === this.name.charAt(i).toUpperCase()) {
-                initials += this.name.charAt(i);
+      if (this.name.charAt(i) === this.name.charAt(i).toUpperCase()) {
+        initials += this.name.charAt(i);
 
-                if (initials.length == 2) {
-                    break;
-                }
-            }
+        if (initials.length == 2) {
+          break;
         }
-
-        this.initials = initials;
-    }
-    preSurvey() {
-        this.router.navigateByUrl("/preSurvey");
+      }
     }
+
+    this.initials = initials;
+  }
+  preSurvey() {
+    this.router.navigateByUrl("/preSurvey");
+  }
 }
diff --git a/src/app/components/score-page/score-page.component.css b/src/app/components/score-page/score-page.component.css
index 1838533..c983d39 100644
--- a/src/app/components/score-page/score-page.component.css
+++ b/src/app/components/score-page/score-page.component.css
@@ -1,172 +1,170 @@
 .divClass {
-    padding-top: 10px;
+  padding-top: 10px;
 }
 
 .example-card {
-    /* max-height: 700px; */
-    /* width: 1000px; */
-    /* height: 570px; */
-    position: absolute;
-    top: 55%;
-    left: 50%;
-    transform: translate(-50%, -50%);
-    width: 80%;
+  /* max-height: 700px; */
+  /* width: 1000px; */
+  /* height: 570px; */
+  position: absolute;
+  top: 55%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+  width: 80%;
 }
 
 ::ng-deep .mat-tab-body-content {
-    max-height: 500px !important;
+  max-height: 500px !important;
 }
 
 .table-responsive {
-    height: 310px;
+  height: 310px;
 }
 
 .div-wrap {
-    width: 500px;
+  width: 500px;
 }
 
 p {
-    /* font-family: Georgia, 'Times New Roman', Times, serif; */
-    font-family: 'Loto', sans-serif;
-    font-size: 15px;
+  /* font-family: Georgia, 'Times New Roman', Times, serif; */
+  font-family: "Loto", sans-serif;
+  font-size: 15px;
 }
 
 h3 {
-    /* font-family: Georgia, 'Times New Roman', Times, serif; */
-    font-family: 'Loto', sans-serif;
-    margin-bottom: 40px;
+  /* font-family: Georgia, 'Times New Roman', Times, serif; */
+  font-family: "Loto", sans-serif;
+  margin-bottom: 40px;
 }
 
 .mat-card {
-    background-color: #edf6f9;
+  background-color: #edf6f9;
 }
 
 .inputField {
-    width: 100%;
+  width: 100%;
 }
 
-
 /* Chrome, Safari, Edge, Opera */
 
 input::-webkit-outer-spin-button,
 input::-webkit-inner-spin-button {
-    -webkit-appearance: none;
-    margin: 0;
+  -webkit-appearance: none;
+  margin: 0;
 }
 
-
 /* Firefox */
 
-input[type=number] {
-    -moz-appearance: textfield;
+input[type="number"] {
+  -moz-appearance: textfield;
 }
 
 ::ng-deep .mat-tab-header {
-    display: none !important;
+  display: none !important;
 }
 
 p {
-    text-align: justify;
-    text-justify: inter-word;
+  text-align: justify;
+  text-justify: inter-word;
 }
 
 h2 {
-    /* font-family: 'Loto', sans-serif; */
-    font-family: 'Loto', sans-serif;
+  /* font-family: 'Loto', sans-serif; */
+  font-family: "Loto", sans-serif;
 }
 
 mat-slider {
-    width: 350px;
+  width: 350px;
 }
 
 .mat-slider-thumb-label {
-    transform: rotate(45deg) !important;
-    border-radius: 50% 50% 0 !important;
+  transform: rotate(45deg) !important;
+  border-radius: 50% 50% 0 !important;
 }
 
 .mat-slider-thumb {
-    transform: scale(0) !important;
+  transform: scale(0) !important;
 }
 
 .mat-slider-thumb-label-text {
-    opacity: 1 !important;
+  opacity: 1 !important;
 }
 
 .advice {
-    border: none;
-    background: none;
+  border: none;
+  background: none;
 }
 
 ::ng-deep .mat-checkbox-layout {
-    white-space: normal !important;
+  white-space: normal !important;
 }
 
 mat-form-field {
-    width: 100%;
-    height: 5%;
+  width: 100%;
+  height: 5%;
 }
 
-::ng-deep .mat-form-field-flex>.mat-form-field-infix {
-    padding: 0.4em 0px !important;
+::ng-deep .mat-form-field-flex > .mat-form-field-infix {
+  padding: 0.4em 0px !important;
 }
 
 ::ng-deep .mat-form-field-label-wrapper {
-    top: -1.5em;
+  top: -1.5em;
 }
 
-::ng-deep .mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label {
-    transform: translateY(-1.1em) scale(.75);
-    width: 133.33333%;
-    color: black !important;
-    border: black;
+::ng-deep
+  .mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float
+  .mat-form-field-label {
+  transform: translateY(-1.1em) scale(0.75);
+  width: 133.33333%;
+  color: black !important;
+  border: black;
 }
 
 .example-h2 {
-    margin: 10px;
+  margin: 10px;
 }
 
 .example-section {
-    display: flex;
-    align-content: center;
-    align-items: center;
-    height: 60px;
+  display: flex;
+  align-content: center;
+  align-items: center;
+  height: 60px;
 }
 
 .example-margin {
-    margin: 0 10px;
+  margin: 0 10px;
 }
 
 .imgClass {
-    width: 30px;
-    height: 30px
+  width: 30px;
+  height: 30px;
 }
 
 .zoom {
-    transition: transform .2s;
-    border: none;
-    background: none;
-    /* Animation */
-    margin: 0 auto;
+  transition: transform 0.2s;
+  border: none;
+  background: none;
+  /* Animation */
+  margin: 0 auto;
 }
 
 .zoom:hover {
-    transform: scale(1.5);
-    /* (150% zoom - Note: if the zoom is too large, it will go outside of the viewport) */
+  transform: scale(1.5);
+  /* (150% zoom - Note: if the zoom is too large, it will go outside of the viewport) */
 }
 
-
 ::ng-deep .mat-tooltip {
-    font-size: 15px !important;
+  font-size: 15px !important;
 }
 
-.progress{
+.progress {
   margin-left: auto;
   margin-right: auto;
   width: 50%;
 }
 
-
 /* 
 p {
     font-family: 'roboto';
-} */
\ No newline at end of file
+} */
diff --git a/src/app/components/score-page/score-page.component.html b/src/app/components/score-page/score-page.component.html
index 6944836..7282a2f 100644
--- a/src/app/components/score-page/score-page.component.html
+++ b/src/app/components/score-page/score-page.component.html
@@ -1,121 +1,159 @@
 <div class="divClass">
-    <mat-card class="example-card ">
-
-        <mat-card-content>
-            <div style="margin-bottom: 10px; margin-left: -10px;">
-                <mat-progress-bar *ngIf="selectedIndex > 0 && selectedIndex <6" class="example-margin" style="width: 100%;" [mode]="mode" [value]="selectedIndex*20" [bufferValue]="bufferValue">
-                </mat-progress-bar>
-            </div>
-
-
-            <mat-tab-group [selectedIndex]="selectedIndex" style="margin: 0px;">
-                <mat-tab label="Seventh">
-                    <h2>Cultural Proficiency Continuum Q-Sort: Review your Facilitator's Feedback and Scores 
-                    </h2>
-                    <!-- <p>Below are the results of the CPCQ forms filled by you. The numbers that you assigned to each vignette within each of the five categories to the right of the corresponding letter—A, B, C, D, E, F—in the spaces are provided below in
+  <mat-card class="example-card">
+    <mat-card-content>
+      <div style="margin-bottom: 10px; margin-left: -10px">
+        <mat-progress-bar
+          *ngIf="selectedIndex > 0 && selectedIndex < 6"
+          class="example-margin"
+          style="width: 100%"
+          [mode]="mode"
+          [value]="selectedIndex * 20"
+          [bufferValue]="bufferValue"
+        >
+        </mat-progress-bar>
+      </div>
+
+      <mat-tab-group [selectedIndex]="selectedIndex" style="margin: 0px">
+        <mat-tab label="Seventh">
+          <h2>Cultural Proficiency Continuum Q-Sort: Review your Facilitator's Feedback and Scores</h2>
+          <!-- <p>Below are the results of the CPCQ forms filled by you. The numbers that you assigned to each vignette within each of the five categories to the right of the corresponding letter—A, B, C, D, E, F—in the spaces are provided below in
                         the rating guide. Ideally, the final results in each row would read 1, 2, 3, 4, 5, 6, but because Cultural Proficiency is a fluid and dynamic phenomenon, these numbers may not align in numerical order. The final step in your analysis
                         is to locate the culturally proficient interactions, which are 2 or more points higher or lower than the ideal number by each letter. For example, if a row reads 2, 1, 5, 4, 6, 3, then the numbers 5 and 3 are bold and clickable.
                         Each number you bolded in each row represents an opportunity for inquiry and Dialogic for that particular culturally proficient behavior. Please click on the bolded numbers to unpack your views. Remember, this is not a judgment,
                         but rather an opportunity for you to make inquiries and have a conversation about the sociocultural interactions that take place within majority-minority US Prek-12 schools. </p> -->
-                    <p><span><b>Directions: </b> Each highlighted box yellow represents vignettes you unpacked and scored by the facilitator. Click on each box to see the individual score for each of the vignettes you reacted to. 
-
-
-                    </span>
-                </p>
-        <button mat-button color="primary">Your level of cultural proficiency at this time is {{meanNumber}} or {{meanValue}}</button>
-        <br/>
-
-        <mat-spinner *ngIf="progressBar" class="progress"></mat-spinner>
-
-                    <div class="table-responsive" *ngIf="!progressBar">
-                        <table class="table">
-                            <thead class="thead-dark" style="font-size: 15px;">
-                                <tr>
-                                    <th></th>
-                                    <th matTooltip="When individuals or policies seek to eliminate all vestiges of others culture in educational and/or social contexts (Lindsey, Robins, & Terrell, 2009). ">Cultural Destructiveness</th>
-                                    <th matTooltip="Trivializing and stereotyping other cultures; seeking to make the cultures of others appear [incongruent with and] inferior to the dominant [or host] culture [within educational and/or social context] ">Cultural Incapacity</th>
-                                    <th matTooltip="Not noticing or acknowledging the culture of others and ignoring the [diverse] experiences of cultures within [educational and/or social context]; treating everyone in the system the same way without recognizing the needs that require differentiated [approaches] ">Cultural Blindness</th>
-                                    <th matTooltip="The awareness/ability to identify when an individual/institution does not know how to effectively engage families, students, and teachers in a culturally diverse educational and/or social context ">
-                                        Cultural Pre-Competence </th>
-                                    <th matTooltip="The practical/institutional alignment of an individual’s personal values and behaviors which are in agreement with educational policies and practices that honors cultures that are new, different, and/or a minority. Such an environment displays healthy and productive interactions that denote solidarity in the educational context. However, this level of the Cultural Proficiency Continuum may or may not be limited to educational context ">Cultural Competence</th>
-                                    <th matTooltip="Espouses a vision that educational and social spaces are agents of social change and a model of a just democracy. These individual/institutions learn, teach, research, advocate, and champion for members of diverse and minoritized cultural groups. This level of the Cultural Proficiency Continuum is displayed and espoused in a variety of social constructions and contexts: educational, gender, professional, race, religious, and sexuality ">Cultural Proficiency</th>
-                                </tr>
-                            </thead>
-                            <tbody *ngFor="let row of responsesArray; let i = index">
-                                <tr>
-                                    <td> {{row[7]}} </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[0][1] == 'Colored'" (click)="openDialog(i,0,row[0][0])">
-                                        {{row[0][0]}}
-                                    </td>
-                                    <td  *ngIf="row[0][1] != 'Colored'">
-                                        {{row[0][0]}}
-                                    </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[1][1] == 'Colored'" (click)="openDialog(i,1,row[1][0])">
-                                        {{row[1][0]}}
-                                    </td>
-                                    <td  *ngIf="row[1][1] != 'Colored'">
-                                        {{row[1][0]}}
-                                    </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[2][1] == 'Colored'" (click)="openDialog(i,2,row[2][0])">
-                                        {{row[2][0]}}
-                                    </td>
-                                    <td  *ngIf="row[2][1] != 'Colored'">
-                                        {{row[2][0]}}
-                                    </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[3][1] == 'Colored'" (click)="openDialog(i,3,row[3][0])">
-                                        {{row[3][0]}}
-                                    </td>
-                                    <td  *ngIf="row[3][1] != 'Colored'">
-                                        {{row[3][0]}}
-                                    </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[4][1] == 'Colored'" (click)="openDialog(i,4,row[4][0])">
-                                        {{row[4][0]}}
-                                    </td>
-                                    <td  *ngIf="row[4][1] != 'Colored'">
-                                        {{row[4][0]}}
-                                    </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[5][1] == 'Colored'" (click)="openDialog(i,5,row[5][0])">
-                                        {{row[5][0]}}
-                                    </td>
-                                    <td  *ngIf="row[5][1] != 'Colored'">
-                                        {{row[5][0]}}
-                                    </td>
-
-
-
-                                </tr>                                
-
-                            </tbody>
-                        </table>
-                    </div>
-                </mat-tab>
-            </mat-tab-group>
-
-
-
-        </mat-card-content>
-
-
-
-        <mat-card-actions>
-            <div class="row">
-                <div class="col-8">
-
-                    <button mat-raised-button style="background-color: #29ABE2;" routerLink="/graph" >
-            VIEW GRAPH
-                             </button>
-                </div>
-
-            </div>
-
-
-
-        </mat-card-actions>
-    </mat-card>
-</div>
\ No newline at end of file
+          <p>
+            <span
+              ><b>Directions: </b> Each highlighted box yellow represents vignettes you unpacked and scored by the
+              facilitator. Click on each box to see the individual score for each of the vignettes you reacted to.
+            </span>
+          </p>
+          <button mat-button color="primary">
+            Your level of cultural proficiency at this time is {{ meanNumber }} or {{ meanValue }}
+          </button>
+          <br />
+
+          <mat-spinner *ngIf="progressBar" class="progress"></mat-spinner>
+
+          <div class="table-responsive" *ngIf="!progressBar">
+            <table class="table">
+              <thead class="thead-dark" style="font-size: 15px">
+                <tr>
+                  <th></th>
+                  <th
+                    matTooltip="When individuals or policies seek to eliminate all vestiges of others culture in educational and/or social contexts (Lindsey, Robins, & Terrell, 2009). "
+                  >
+                    Cultural Destructiveness
+                  </th>
+                  <th
+                    matTooltip="Trivializing and stereotyping other cultures; seeking to make the cultures of others appear [incongruent with and] inferior to the dominant [or host] culture [within educational and/or social context] "
+                  >
+                    Cultural Incapacity
+                  </th>
+                  <th
+                    matTooltip="Not noticing or acknowledging the culture of others and ignoring the [diverse] experiences of cultures within [educational and/or social context]; treating everyone in the system the same way without recognizing the needs that require differentiated [approaches] "
+                  >
+                    Cultural Blindness
+                  </th>
+                  <th
+                    matTooltip="The awareness/ability to identify when an individual/institution does not know how to effectively engage families, students, and teachers in a culturally diverse educational and/or social context "
+                  >
+                    Cultural Pre-Competence
+                  </th>
+                  <th
+                    matTooltip="The practical/institutional alignment of an individual’s personal values and behaviors which are in agreement with educational policies and practices that honors cultures that are new, different, and/or a minority. Such an environment displays healthy and productive interactions that denote solidarity in the educational context. However, this level of the Cultural Proficiency Continuum may or may not be limited to educational context "
+                  >
+                    Cultural Competence
+                  </th>
+                  <th
+                    matTooltip="Espouses a vision that educational and social spaces are agents of social change and a model of a just democracy. These individual/institutions learn, teach, research, advocate, and champion for members of diverse and minoritized cultural groups. This level of the Cultural Proficiency Continuum is displayed and espoused in a variety of social constructions and contexts: educational, gender, professional, race, religious, and sexuality "
+                  >
+                    Cultural Proficiency
+                  </th>
+                </tr>
+              </thead>
+              <tbody *ngFor="let row of responsesArray; let i = index">
+                <tr>
+                  <td>{{ row[7] }}</td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[0][1] == 'Colored'"
+                    (click)="openDialog(i, 0, row[0][0])"
+                  >
+                    {{ row[0][0] }}
+                  </td>
+                  <td *ngIf="row[0][1] != 'Colored'">
+                    {{ row[0][0] }}
+                  </td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[1][1] == 'Colored'"
+                    (click)="openDialog(i, 1, row[1][0])"
+                  >
+                    {{ row[1][0] }}
+                  </td>
+                  <td *ngIf="row[1][1] != 'Colored'">
+                    {{ row[1][0] }}
+                  </td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[2][1] == 'Colored'"
+                    (click)="openDialog(i, 2, row[2][0])"
+                  >
+                    {{ row[2][0] }}
+                  </td>
+                  <td *ngIf="row[2][1] != 'Colored'">
+                    {{ row[2][0] }}
+                  </td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[3][1] == 'Colored'"
+                    (click)="openDialog(i, 3, row[3][0])"
+                  >
+                    {{ row[3][0] }}
+                  </td>
+                  <td *ngIf="row[3][1] != 'Colored'">
+                    {{ row[3][0] }}
+                  </td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[4][1] == 'Colored'"
+                    (click)="openDialog(i, 4, row[4][0])"
+                  >
+                    {{ row[4][0] }}
+                  </td>
+                  <td *ngIf="row[4][1] != 'Colored'">
+                    {{ row[4][0] }}
+                  </td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[5][1] == 'Colored'"
+                    (click)="openDialog(i, 5, row[5][0])"
+                  >
+                    {{ row[5][0] }}
+                  </td>
+                  <td *ngIf="row[5][1] != 'Colored'">
+                    {{ row[5][0] }}
+                  </td>
+                </tr>
+              </tbody>
+            </table>
+          </div>
+        </mat-tab>
+      </mat-tab-group>
+    </mat-card-content>
+
+    <mat-card-actions>
+      <div class="row">
+        <div class="col-8">
+          <button mat-raised-button style="background-color: #29abe2" routerLink="/graph">VIEW GRAPH</button>
+        </div>
+      </div>
+    </mat-card-actions>
+  </mat-card>
+</div>
diff --git a/src/app/components/score-page/score-page.component.spec.ts b/src/app/components/score-page/score-page.component.spec.ts
index ee8487d..33e4680 100644
--- a/src/app/components/score-page/score-page.component.spec.ts
+++ b/src/app/components/score-page/score-page.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { ScorePageComponent } from './score-page.component';
+import { ScorePageComponent } from "./score-page.component";
 
-describe('ScorePageComponent', () => {
+describe("ScorePageComponent", () => {
   let component: ScorePageComponent;
   let fixture: ComponentFixture<ScorePageComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ ScorePageComponent ]
-    })
-    .compileComponents();
+      declarations: [ScorePageComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('ScorePageComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/score-page/score-page.component.ts b/src/app/components/score-page/score-page.component.ts
index 5689b30..dfdaa67 100644
--- a/src/app/components/score-page/score-page.component.ts
+++ b/src/app/components/score-page/score-page.component.ts
@@ -16,1304 +16,1251 @@ import { LoginService } from "src/app/services/login.service";
 import { CPCQService } from "src/app/services/cpcq.service";
 
 export interface DialogData {
-    animal: "panda" | "unicorn" | "lion";
-    status;
-    result;
+  animal: "panda" | "unicorn" | "lion";
+  status;
+  result;
 }
 @Component({
-    selector: "app-score-page",
-    templateUrl: "./score-page.component.html",
-    styleUrls: ["./score-page.component.css"],
+  selector: "app-score-page",
+  templateUrl: "./score-page.component.html",
+  styleUrls: ["./score-page.component.css"],
 })
 export class ScorePageComponent implements OnInit {
-    firstForm: FormGroup;
-    responseList: any;
-    loaded = false;
-
-    questionArray = [
-        ["Enter First Name", "text"],
-        ["Enter Last Name", "text"],
-        ["Enter Age", "number"],
-    ];
-    statusCheck = false;
-    buttonClick = false;
-
-    sliderValue = 0;
-
-    selectedIndex = 0;
-
-    color: ThemePalette = "primary";
-    mode: ProgressBarMode = "buffer";
-    value1 = 50;
-    bufferValue = 100;
-
-    formValues = [];
-    meanValue: any = 0;
-    meanNumber: any = 0;
-    attributes = ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"];
-    columnHeadings = [
-        "culturalDestructivenessresponse",
-        "culturalIncapacityresponse",
-        "culturalBlindnessresponse",
-        "culturalPreCompetenceresponse",
-        "culturalCompetenceresponse",
-        "culturalProficiencyresponse",
-    ];
-    columnHeadings1 = [
-        "Cultural Destructiveness",
-        "Cultural Incapacity",
-        "Cultural Blindness",
-        "Cultural PreCompetence",
-        "Cultural Competence",
-        "Cultural Proficiency",
-    ];
-
-    rowLetters = [
-        ["D", "C", "B", "A", "F", "E"],
-        ["E", "A", "F", "D", "B", "C"],
-        ["F", "E", "B", "C", "D", "A"],
-        ["E", "A", "B", "D", "C", "F"],
-        ["D", "C", "B", "E", "A", "F"],
-    ];
-    boldList = [[]];
-    randomList = [[]];
-    finalList = [[]];
-    finalList1 = [];
-    attitudeForm: FormGroup;
-    empathyForm: FormGroup;
-    policyForm: FormGroup;
-
-    finalFeedbackForm: FormGroup;
-
-    progressBar: any = true;
-
-    //arrays of data getting from the backend
-
-    attitude: any;
-    empathy: any;
-    policy: any;
-    professionalism: any;
-    teachingPractice: any;
-    wordDescription: any;
-    unpackedCount = 0;
-
-    startTime: any;
-    endTime: any;
-    durationTime: any;
-
-    @ViewChild("changeDiv") changeDiv: ElementRef;
-    @ViewChild("changeDiv1") changeDiv1: ElementRef;
-    @ViewChild("changeDiv2") changeDiv2: ElementRef;
-    @ViewChild("changeDiv3") changeDiv3: ElementRef;
-    @ViewChild("changeDiv4") changeDiv4: ElementRef;
-    @ViewChild("changeDiv5") changeDiv5: ElementRef;
-    @ViewChild("changeDiv6") changeDiv6: ElementRef;
-    @ViewChild("changeDiv7") changeDiv7: ElementRef;
-    @ViewChild("changeDiv8") changeDiv8: ElementRef;
-    @ViewChild("changeDiv9") changeDiv9: ElementRef;
-    @ViewChild("changeDiv10") changeDiv10: ElementRef;
-    @ViewChild("changeDiv11") changeDiv11: ElementRef;
-    @ViewChild("changeDiv12") changeDiv12: ElementRef;
-    @ViewChild("changeDiv13") changeDiv13: ElementRef;
-    @ViewChild("changeDiv14") changeDiv14: ElementRef;
-    @ViewChild("changeDiv15") changeDiv15: ElementRef;
-    @ViewChild("changeDiv16") changeDiv16: ElementRef;
-    @ViewChild("changeDiv17") changeDiv17: ElementRef;
-    @ViewChild("changeDiv18") changeDiv18: ElementRef;
-    @ViewChild("changeDiv19") changeDiv19: ElementRef;
-    @ViewChild("changeDiv20") changeDiv20: ElementRef;
-    @ViewChild("changeDiv21") changeDiv21: ElementRef;
-    @ViewChild("changeDiv22") changeDiv22: ElementRef;
-    @ViewChild("changeDiv23") changeDiv23: ElementRef;
-    @ViewChild("changeDiv24") changeDiv24: ElementRef;
-    @ViewChild("changeDiv25") changeDiv25: ElementRef;
-    @ViewChild("changeDiv26") changeDiv26: ElementRef;
-    @ViewChild("changeDiv27") changeDiv27: ElementRef;
-    @ViewChild("changeDiv28") changeDiv28: ElementRef;
-    @ViewChild("changeDiv29") changeDiv29: ElementRef;
-
-    ngAfterViewInit() {}
-
-    sliderFunction1() {
-        if (this.sliderValue == 1) {
-            this.changeDiv.nativeElement.style.fontSize = "15px";
-            this.changeDiv1.nativeElement.style.fontSize = "15px";
-            this.changeDiv2.nativeElement.style.fontSize = "15px";
-            this.changeDiv3.nativeElement.style.fontSize = "15px";
-            this.changeDiv4.nativeElement.style.fontSize = "15px";
-            this.changeDiv5.nativeElement.style.fontSize = "15px";
-            this.changeDiv6.nativeElement.style.fontSize = "15px";
-            this.changeDiv7.nativeElement.style.fontSize = "15px";
-            this.changeDiv8.nativeElement.style.fontSize = "15px";
-            this.changeDiv9.nativeElement.style.fontSize = "15px";
-            this.changeDiv10.nativeElement.style.fontSize = "15px";
-            this.changeDiv11.nativeElement.style.fontSize = "15px";
-            this.changeDiv12.nativeElement.style.fontSize = "15px";
-            this.changeDiv13.nativeElement.style.fontSize = "15px";
-            this.changeDiv14.nativeElement.style.fontSize = "15px";
-            this.changeDiv15.nativeElement.style.fontSize = "15px";
-            this.changeDiv16.nativeElement.style.fontSize = "15px";
-            this.changeDiv17.nativeElement.style.fontSize = "15px";
-            this.changeDiv18.nativeElement.style.fontSize = "15px";
-            this.changeDiv19.nativeElement.style.fontSize = "15px";
-            this.changeDiv20.nativeElement.style.fontSize = "15px";
-            this.changeDiv21.nativeElement.style.fontSize = "15px";
-            this.changeDiv22.nativeElement.style.fontSize = "15px";
-            this.changeDiv23.nativeElement.style.fontSize = "15px";
-            this.changeDiv24.nativeElement.style.fontSize = "15px";
-            this.changeDiv25.nativeElement.style.fontSize = "15px";
-            this.changeDiv26.nativeElement.style.fontSize = "15px";
-            this.changeDiv27.nativeElement.style.fontSize = "15px";
-            this.changeDiv28.nativeElement.style.fontSize = "15px";
-            this.changeDiv29.nativeElement.style.fontSize = "15px";
-        } else if (this.sliderValue == 2) {
-            this.changeDiv.nativeElement.style.fontSize = "20px";
-            this.changeDiv1.nativeElement.style.fontSize = "20px";
-            this.changeDiv2.nativeElement.style.fontSize = "20px";
-            this.changeDiv3.nativeElement.style.fontSize = "20px";
-            this.changeDiv4.nativeElement.style.fontSize = "20px";
-            this.changeDiv5.nativeElement.style.fontSize = "20px";
-            this.changeDiv6.nativeElement.style.fontSize = "20px";
-            this.changeDiv7.nativeElement.style.fontSize = "20px";
-            this.changeDiv8.nativeElement.style.fontSize = "20px";
-            this.changeDiv9.nativeElement.style.fontSize = "20px";
-            this.changeDiv10.nativeElement.style.fontSize = "20px";
-            this.changeDiv11.nativeElement.style.fontSize = "20px";
-            this.changeDiv12.nativeElement.style.fontSize = "20px";
-            this.changeDiv13.nativeElement.style.fontSize = "20px";
-            this.changeDiv14.nativeElement.style.fontSize = "20px";
-            this.changeDiv15.nativeElement.style.fontSize = "20px";
-            this.changeDiv16.nativeElement.style.fontSize = "20px";
-            this.changeDiv17.nativeElement.style.fontSize = "20px";
-            this.changeDiv18.nativeElement.style.fontSize = "20px";
-            this.changeDiv19.nativeElement.style.fontSize = "20px";
-            this.changeDiv20.nativeElement.style.fontSize = "20px";
-            this.changeDiv21.nativeElement.style.fontSize = "20px";
-            this.changeDiv22.nativeElement.style.fontSize = "20px";
-            this.changeDiv23.nativeElement.style.fontSize = "20px";
-            this.changeDiv24.nativeElement.style.fontSize = "20px";
-            this.changeDiv25.nativeElement.style.fontSize = "20px";
-            this.changeDiv26.nativeElement.style.fontSize = "20px";
-            this.changeDiv27.nativeElement.style.fontSize = "20px";
-            this.changeDiv28.nativeElement.style.fontSize = "20px";
-            this.changeDiv29.nativeElement.style.fontSize = "20px";
-        } else if (this.sliderValue == 3) {
-            this.changeDiv.nativeElement.style.fontSize = "22px";
-            this.changeDiv1.nativeElement.style.fontSize = "22px";
-            this.changeDiv2.nativeElement.style.fontSize = "22px";
-            this.changeDiv3.nativeElement.style.fontSize = "22px";
-            this.changeDiv4.nativeElement.style.fontSize = "22px";
-            this.changeDiv5.nativeElement.style.fontSize = "22px";
-            this.changeDiv6.nativeElement.style.fontSize = "22px";
-            this.changeDiv7.nativeElement.style.fontSize = "22px";
-            this.changeDiv8.nativeElement.style.fontSize = "22px";
-            this.changeDiv9.nativeElement.style.fontSize = "22px";
-            this.changeDiv10.nativeElement.style.fontSize = "22px";
-            this.changeDiv11.nativeElement.style.fontSize = "22px";
-            this.changeDiv12.nativeElement.style.fontSize = "22px";
-            this.changeDiv13.nativeElement.style.fontSize = "22px";
-            this.changeDiv14.nativeElement.style.fontSize = "22px";
-            this.changeDiv15.nativeElement.style.fontSize = "22px";
-            this.changeDiv16.nativeElement.style.fontSize = "22px";
-            this.changeDiv17.nativeElement.style.fontSize = "22px";
-            this.changeDiv18.nativeElement.style.fontSize = "22px";
-            this.changeDiv19.nativeElement.style.fontSize = "22px";
-            this.changeDiv20.nativeElement.style.fontSize = "22px";
-            this.changeDiv21.nativeElement.style.fontSize = "22px";
-            this.changeDiv22.nativeElement.style.fontSize = "22px";
-            this.changeDiv23.nativeElement.style.fontSize = "22px";
-            this.changeDiv24.nativeElement.style.fontSize = "22px";
-            this.changeDiv25.nativeElement.style.fontSize = "22px";
-            this.changeDiv26.nativeElement.style.fontSize = "22px";
-            this.changeDiv27.nativeElement.style.fontSize = "22px";
-            this.changeDiv28.nativeElement.style.fontSize = "22px";
-            this.changeDiv29.nativeElement.style.fontSize = "22px";
-        } else if (this.sliderValue == 4) {
-            this.changeDiv.nativeElement.style.fontSize = "25px";
-            this.changeDiv1.nativeElement.style.fontSize = "25px";
-            this.changeDiv2.nativeElement.style.fontSize = "25px";
-            this.changeDiv3.nativeElement.style.fontSize = "25px";
-            this.changeDiv4.nativeElement.style.fontSize = "25px";
-            this.changeDiv5.nativeElement.style.fontSize = "25px";
-            this.changeDiv6.nativeElement.style.fontSize = "25px";
-            this.changeDiv7.nativeElement.style.fontSize = "25px";
-            this.changeDiv8.nativeElement.style.fontSize = "25px";
-            this.changeDiv9.nativeElement.style.fontSize = "25px";
-            this.changeDiv10.nativeElement.style.fontSize = "25px";
-            this.changeDiv11.nativeElement.style.fontSize = "25px";
-            this.changeDiv12.nativeElement.style.fontSize = "25px";
-            this.changeDiv13.nativeElement.style.fontSize = "25px";
-            this.changeDiv14.nativeElement.style.fontSize = "25px";
-            this.changeDiv15.nativeElement.style.fontSize = "25px";
-            this.changeDiv16.nativeElement.style.fontSize = "25px";
-            this.changeDiv17.nativeElement.style.fontSize = "25px";
-            this.changeDiv18.nativeElement.style.fontSize = "25px";
-            this.changeDiv19.nativeElement.style.fontSize = "25px";
-            this.changeDiv20.nativeElement.style.fontSize = "25px";
-            this.changeDiv21.nativeElement.style.fontSize = "25px";
-            this.changeDiv22.nativeElement.style.fontSize = "25px";
-            this.changeDiv23.nativeElement.style.fontSize = "25px";
-            this.changeDiv24.nativeElement.style.fontSize = "25px";
-            this.changeDiv25.nativeElement.style.fontSize = "25px";
-            this.changeDiv26.nativeElement.style.fontSize = "25px";
-            this.changeDiv27.nativeElement.style.fontSize = "25px";
-            this.changeDiv28.nativeElement.style.fontSize = "25px";
-            this.changeDiv29.nativeElement.style.fontSize = "25px";
-        } else if (this.sliderValue == 5) {
-            this.changeDiv.nativeElement.style.fontSize = "50px";
-            this.changeDiv1.nativeElement.style.fontSize = "50px";
-            this.changeDiv2.nativeElement.style.fontSize = "50px";
-            this.changeDiv3.nativeElement.style.fontSize = "50px";
-            this.changeDiv4.nativeElement.style.fontSize = "50px";
-            this.changeDiv5.nativeElement.style.fontSize = "50px";
-        }
+  firstForm: FormGroup;
+  responseList: any;
+  loaded = false;
+
+  questionArray = [
+    ["Enter First Name", "text"],
+    ["Enter Last Name", "text"],
+    ["Enter Age", "number"],
+  ];
+  statusCheck = false;
+  buttonClick = false;
+
+  sliderValue = 0;
+
+  selectedIndex = 0;
+
+  color: ThemePalette = "primary";
+  mode: ProgressBarMode = "buffer";
+  value1 = 50;
+  bufferValue = 100;
+
+  formValues = [];
+  meanValue: any = 0;
+  meanNumber: any = 0;
+  attributes = ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"];
+  columnHeadings = [
+    "culturalDestructivenessresponse",
+    "culturalIncapacityresponse",
+    "culturalBlindnessresponse",
+    "culturalPreCompetenceresponse",
+    "culturalCompetenceresponse",
+    "culturalProficiencyresponse",
+  ];
+  columnHeadings1 = [
+    "Cultural Destructiveness",
+    "Cultural Incapacity",
+    "Cultural Blindness",
+    "Cultural PreCompetence",
+    "Cultural Competence",
+    "Cultural Proficiency",
+  ];
+
+  rowLetters = [
+    ["D", "C", "B", "A", "F", "E"],
+    ["E", "A", "F", "D", "B", "C"],
+    ["F", "E", "B", "C", "D", "A"],
+    ["E", "A", "B", "D", "C", "F"],
+    ["D", "C", "B", "E", "A", "F"],
+  ];
+  boldList = [[]];
+  randomList = [[]];
+  finalList = [[]];
+  finalList1 = [];
+  attitudeForm: FormGroup;
+  empathyForm: FormGroup;
+  policyForm: FormGroup;
+
+  finalFeedbackForm: FormGroup;
+
+  progressBar: any = true;
+
+  //arrays of data getting from the backend
+
+  attitude: any;
+  empathy: any;
+  policy: any;
+  professionalism: any;
+  teachingPractice: any;
+  wordDescription: any;
+  unpackedCount = 0;
+
+  startTime: any;
+  endTime: any;
+  durationTime: any;
+
+  @ViewChild("changeDiv") changeDiv: ElementRef;
+  @ViewChild("changeDiv1") changeDiv1: ElementRef;
+  @ViewChild("changeDiv2") changeDiv2: ElementRef;
+  @ViewChild("changeDiv3") changeDiv3: ElementRef;
+  @ViewChild("changeDiv4") changeDiv4: ElementRef;
+  @ViewChild("changeDiv5") changeDiv5: ElementRef;
+  @ViewChild("changeDiv6") changeDiv6: ElementRef;
+  @ViewChild("changeDiv7") changeDiv7: ElementRef;
+  @ViewChild("changeDiv8") changeDiv8: ElementRef;
+  @ViewChild("changeDiv9") changeDiv9: ElementRef;
+  @ViewChild("changeDiv10") changeDiv10: ElementRef;
+  @ViewChild("changeDiv11") changeDiv11: ElementRef;
+  @ViewChild("changeDiv12") changeDiv12: ElementRef;
+  @ViewChild("changeDiv13") changeDiv13: ElementRef;
+  @ViewChild("changeDiv14") changeDiv14: ElementRef;
+  @ViewChild("changeDiv15") changeDiv15: ElementRef;
+  @ViewChild("changeDiv16") changeDiv16: ElementRef;
+  @ViewChild("changeDiv17") changeDiv17: ElementRef;
+  @ViewChild("changeDiv18") changeDiv18: ElementRef;
+  @ViewChild("changeDiv19") changeDiv19: ElementRef;
+  @ViewChild("changeDiv20") changeDiv20: ElementRef;
+  @ViewChild("changeDiv21") changeDiv21: ElementRef;
+  @ViewChild("changeDiv22") changeDiv22: ElementRef;
+  @ViewChild("changeDiv23") changeDiv23: ElementRef;
+  @ViewChild("changeDiv24") changeDiv24: ElementRef;
+  @ViewChild("changeDiv25") changeDiv25: ElementRef;
+  @ViewChild("changeDiv26") changeDiv26: ElementRef;
+  @ViewChild("changeDiv27") changeDiv27: ElementRef;
+  @ViewChild("changeDiv28") changeDiv28: ElementRef;
+  @ViewChild("changeDiv29") changeDiv29: ElementRef;
+
+  ngAfterViewInit() {}
+
+  sliderFunction1() {
+    if (this.sliderValue == 1) {
+      this.changeDiv.nativeElement.style.fontSize = "15px";
+      this.changeDiv1.nativeElement.style.fontSize = "15px";
+      this.changeDiv2.nativeElement.style.fontSize = "15px";
+      this.changeDiv3.nativeElement.style.fontSize = "15px";
+      this.changeDiv4.nativeElement.style.fontSize = "15px";
+      this.changeDiv5.nativeElement.style.fontSize = "15px";
+      this.changeDiv6.nativeElement.style.fontSize = "15px";
+      this.changeDiv7.nativeElement.style.fontSize = "15px";
+      this.changeDiv8.nativeElement.style.fontSize = "15px";
+      this.changeDiv9.nativeElement.style.fontSize = "15px";
+      this.changeDiv10.nativeElement.style.fontSize = "15px";
+      this.changeDiv11.nativeElement.style.fontSize = "15px";
+      this.changeDiv12.nativeElement.style.fontSize = "15px";
+      this.changeDiv13.nativeElement.style.fontSize = "15px";
+      this.changeDiv14.nativeElement.style.fontSize = "15px";
+      this.changeDiv15.nativeElement.style.fontSize = "15px";
+      this.changeDiv16.nativeElement.style.fontSize = "15px";
+      this.changeDiv17.nativeElement.style.fontSize = "15px";
+      this.changeDiv18.nativeElement.style.fontSize = "15px";
+      this.changeDiv19.nativeElement.style.fontSize = "15px";
+      this.changeDiv20.nativeElement.style.fontSize = "15px";
+      this.changeDiv21.nativeElement.style.fontSize = "15px";
+      this.changeDiv22.nativeElement.style.fontSize = "15px";
+      this.changeDiv23.nativeElement.style.fontSize = "15px";
+      this.changeDiv24.nativeElement.style.fontSize = "15px";
+      this.changeDiv25.nativeElement.style.fontSize = "15px";
+      this.changeDiv26.nativeElement.style.fontSize = "15px";
+      this.changeDiv27.nativeElement.style.fontSize = "15px";
+      this.changeDiv28.nativeElement.style.fontSize = "15px";
+      this.changeDiv29.nativeElement.style.fontSize = "15px";
+    } else if (this.sliderValue == 2) {
+      this.changeDiv.nativeElement.style.fontSize = "20px";
+      this.changeDiv1.nativeElement.style.fontSize = "20px";
+      this.changeDiv2.nativeElement.style.fontSize = "20px";
+      this.changeDiv3.nativeElement.style.fontSize = "20px";
+      this.changeDiv4.nativeElement.style.fontSize = "20px";
+      this.changeDiv5.nativeElement.style.fontSize = "20px";
+      this.changeDiv6.nativeElement.style.fontSize = "20px";
+      this.changeDiv7.nativeElement.style.fontSize = "20px";
+      this.changeDiv8.nativeElement.style.fontSize = "20px";
+      this.changeDiv9.nativeElement.style.fontSize = "20px";
+      this.changeDiv10.nativeElement.style.fontSize = "20px";
+      this.changeDiv11.nativeElement.style.fontSize = "20px";
+      this.changeDiv12.nativeElement.style.fontSize = "20px";
+      this.changeDiv13.nativeElement.style.fontSize = "20px";
+      this.changeDiv14.nativeElement.style.fontSize = "20px";
+      this.changeDiv15.nativeElement.style.fontSize = "20px";
+      this.changeDiv16.nativeElement.style.fontSize = "20px";
+      this.changeDiv17.nativeElement.style.fontSize = "20px";
+      this.changeDiv18.nativeElement.style.fontSize = "20px";
+      this.changeDiv19.nativeElement.style.fontSize = "20px";
+      this.changeDiv20.nativeElement.style.fontSize = "20px";
+      this.changeDiv21.nativeElement.style.fontSize = "20px";
+      this.changeDiv22.nativeElement.style.fontSize = "20px";
+      this.changeDiv23.nativeElement.style.fontSize = "20px";
+      this.changeDiv24.nativeElement.style.fontSize = "20px";
+      this.changeDiv25.nativeElement.style.fontSize = "20px";
+      this.changeDiv26.nativeElement.style.fontSize = "20px";
+      this.changeDiv27.nativeElement.style.fontSize = "20px";
+      this.changeDiv28.nativeElement.style.fontSize = "20px";
+      this.changeDiv29.nativeElement.style.fontSize = "20px";
+    } else if (this.sliderValue == 3) {
+      this.changeDiv.nativeElement.style.fontSize = "22px";
+      this.changeDiv1.nativeElement.style.fontSize = "22px";
+      this.changeDiv2.nativeElement.style.fontSize = "22px";
+      this.changeDiv3.nativeElement.style.fontSize = "22px";
+      this.changeDiv4.nativeElement.style.fontSize = "22px";
+      this.changeDiv5.nativeElement.style.fontSize = "22px";
+      this.changeDiv6.nativeElement.style.fontSize = "22px";
+      this.changeDiv7.nativeElement.style.fontSize = "22px";
+      this.changeDiv8.nativeElement.style.fontSize = "22px";
+      this.changeDiv9.nativeElement.style.fontSize = "22px";
+      this.changeDiv10.nativeElement.style.fontSize = "22px";
+      this.changeDiv11.nativeElement.style.fontSize = "22px";
+      this.changeDiv12.nativeElement.style.fontSize = "22px";
+      this.changeDiv13.nativeElement.style.fontSize = "22px";
+      this.changeDiv14.nativeElement.style.fontSize = "22px";
+      this.changeDiv15.nativeElement.style.fontSize = "22px";
+      this.changeDiv16.nativeElement.style.fontSize = "22px";
+      this.changeDiv17.nativeElement.style.fontSize = "22px";
+      this.changeDiv18.nativeElement.style.fontSize = "22px";
+      this.changeDiv19.nativeElement.style.fontSize = "22px";
+      this.changeDiv20.nativeElement.style.fontSize = "22px";
+      this.changeDiv21.nativeElement.style.fontSize = "22px";
+      this.changeDiv22.nativeElement.style.fontSize = "22px";
+      this.changeDiv23.nativeElement.style.fontSize = "22px";
+      this.changeDiv24.nativeElement.style.fontSize = "22px";
+      this.changeDiv25.nativeElement.style.fontSize = "22px";
+      this.changeDiv26.nativeElement.style.fontSize = "22px";
+      this.changeDiv27.nativeElement.style.fontSize = "22px";
+      this.changeDiv28.nativeElement.style.fontSize = "22px";
+      this.changeDiv29.nativeElement.style.fontSize = "22px";
+    } else if (this.sliderValue == 4) {
+      this.changeDiv.nativeElement.style.fontSize = "25px";
+      this.changeDiv1.nativeElement.style.fontSize = "25px";
+      this.changeDiv2.nativeElement.style.fontSize = "25px";
+      this.changeDiv3.nativeElement.style.fontSize = "25px";
+      this.changeDiv4.nativeElement.style.fontSize = "25px";
+      this.changeDiv5.nativeElement.style.fontSize = "25px";
+      this.changeDiv6.nativeElement.style.fontSize = "25px";
+      this.changeDiv7.nativeElement.style.fontSize = "25px";
+      this.changeDiv8.nativeElement.style.fontSize = "25px";
+      this.changeDiv9.nativeElement.style.fontSize = "25px";
+      this.changeDiv10.nativeElement.style.fontSize = "25px";
+      this.changeDiv11.nativeElement.style.fontSize = "25px";
+      this.changeDiv12.nativeElement.style.fontSize = "25px";
+      this.changeDiv13.nativeElement.style.fontSize = "25px";
+      this.changeDiv14.nativeElement.style.fontSize = "25px";
+      this.changeDiv15.nativeElement.style.fontSize = "25px";
+      this.changeDiv16.nativeElement.style.fontSize = "25px";
+      this.changeDiv17.nativeElement.style.fontSize = "25px";
+      this.changeDiv18.nativeElement.style.fontSize = "25px";
+      this.changeDiv19.nativeElement.style.fontSize = "25px";
+      this.changeDiv20.nativeElement.style.fontSize = "25px";
+      this.changeDiv21.nativeElement.style.fontSize = "25px";
+      this.changeDiv22.nativeElement.style.fontSize = "25px";
+      this.changeDiv23.nativeElement.style.fontSize = "25px";
+      this.changeDiv24.nativeElement.style.fontSize = "25px";
+      this.changeDiv25.nativeElement.style.fontSize = "25px";
+      this.changeDiv26.nativeElement.style.fontSize = "25px";
+      this.changeDiv27.nativeElement.style.fontSize = "25px";
+      this.changeDiv28.nativeElement.style.fontSize = "25px";
+      this.changeDiv29.nativeElement.style.fontSize = "25px";
+    } else if (this.sliderValue == 5) {
+      this.changeDiv.nativeElement.style.fontSize = "50px";
+      this.changeDiv1.nativeElement.style.fontSize = "50px";
+      this.changeDiv2.nativeElement.style.fontSize = "50px";
+      this.changeDiv3.nativeElement.style.fontSize = "50px";
+      this.changeDiv4.nativeElement.style.fontSize = "50px";
+      this.changeDiv5.nativeElement.style.fontSize = "50px";
     }
-    sliderFunction(e) {
-        //
-        this.sliderValue = e.value;
-        if (e.value == 1) {
-            this.changeDiv.nativeElement.style.fontSize = "15px";
-            this.changeDiv1.nativeElement.style.fontSize = "15px";
-            this.changeDiv2.nativeElement.style.fontSize = "15px";
-            this.changeDiv3.nativeElement.style.fontSize = "15px";
-            this.changeDiv4.nativeElement.style.fontSize = "15px";
-            this.changeDiv5.nativeElement.style.fontSize = "15px";
-            this.changeDiv6.nativeElement.style.fontSize = "15px";
-            this.changeDiv7.nativeElement.style.fontSize = "15px";
-            this.changeDiv8.nativeElement.style.fontSize = "15px";
-            this.changeDiv9.nativeElement.style.fontSize = "15px";
-            this.changeDiv10.nativeElement.style.fontSize = "15px";
-            this.changeDiv11.nativeElement.style.fontSize = "15px";
-            this.changeDiv12.nativeElement.style.fontSize = "15px";
-            this.changeDiv13.nativeElement.style.fontSize = "15px";
-            this.changeDiv14.nativeElement.style.fontSize = "15px";
-            this.changeDiv15.nativeElement.style.fontSize = "15px";
-            this.changeDiv16.nativeElement.style.fontSize = "15px";
-            this.changeDiv17.nativeElement.style.fontSize = "15px";
-            this.changeDiv18.nativeElement.style.fontSize = "15px";
-            this.changeDiv19.nativeElement.style.fontSize = "15px";
-            this.changeDiv20.nativeElement.style.fontSize = "15px";
-            this.changeDiv21.nativeElement.style.fontSize = "15px";
-            this.changeDiv22.nativeElement.style.fontSize = "15px";
-            this.changeDiv23.nativeElement.style.fontSize = "15px";
-            this.changeDiv24.nativeElement.style.fontSize = "15px";
-            this.changeDiv25.nativeElement.style.fontSize = "15px";
-            this.changeDiv26.nativeElement.style.fontSize = "15px";
-            this.changeDiv27.nativeElement.style.fontSize = "15px";
-            this.changeDiv28.nativeElement.style.fontSize = "15px";
-            this.changeDiv29.nativeElement.style.fontSize = "15px";
-        } else if (e.value == 2) {
-            this.changeDiv.nativeElement.style.fontSize = "20px";
-            this.changeDiv1.nativeElement.style.fontSize = "20px";
-            this.changeDiv2.nativeElement.style.fontSize = "20px";
-            this.changeDiv3.nativeElement.style.fontSize = "20px";
-            this.changeDiv4.nativeElement.style.fontSize = "20px";
-            this.changeDiv5.nativeElement.style.fontSize = "20px";
-            this.changeDiv6.nativeElement.style.fontSize = "20px";
-            this.changeDiv7.nativeElement.style.fontSize = "20px";
-            this.changeDiv8.nativeElement.style.fontSize = "20px";
-            this.changeDiv9.nativeElement.style.fontSize = "20px";
-            this.changeDiv10.nativeElement.style.fontSize = "20px";
-            this.changeDiv11.nativeElement.style.fontSize = "20px";
-            this.changeDiv12.nativeElement.style.fontSize = "20px";
-            this.changeDiv13.nativeElement.style.fontSize = "20px";
-            this.changeDiv14.nativeElement.style.fontSize = "20px";
-            this.changeDiv15.nativeElement.style.fontSize = "20px";
-            this.changeDiv16.nativeElement.style.fontSize = "20px";
-            this.changeDiv17.nativeElement.style.fontSize = "20px";
-            this.changeDiv18.nativeElement.style.fontSize = "20px";
-            this.changeDiv19.nativeElement.style.fontSize = "20px";
-            this.changeDiv20.nativeElement.style.fontSize = "20px";
-            this.changeDiv21.nativeElement.style.fontSize = "20px";
-            this.changeDiv22.nativeElement.style.fontSize = "20px";
-            this.changeDiv23.nativeElement.style.fontSize = "20px";
-            this.changeDiv24.nativeElement.style.fontSize = "20px";
-            this.changeDiv25.nativeElement.style.fontSize = "20px";
-            this.changeDiv26.nativeElement.style.fontSize = "20px";
-            this.changeDiv27.nativeElement.style.fontSize = "20px";
-            this.changeDiv28.nativeElement.style.fontSize = "20px";
-            this.changeDiv29.nativeElement.style.fontSize = "20px";
-        } else if (e.value == 3) {
-            this.changeDiv.nativeElement.style.fontSize = "22px";
-            this.changeDiv1.nativeElement.style.fontSize = "22px";
-            this.changeDiv2.nativeElement.style.fontSize = "22px";
-            this.changeDiv3.nativeElement.style.fontSize = "22px";
-            this.changeDiv4.nativeElement.style.fontSize = "22px";
-            this.changeDiv5.nativeElement.style.fontSize = "22px";
-            this.changeDiv6.nativeElement.style.fontSize = "22px";
-            this.changeDiv7.nativeElement.style.fontSize = "22px";
-            this.changeDiv8.nativeElement.style.fontSize = "22px";
-            this.changeDiv9.nativeElement.style.fontSize = "22px";
-            this.changeDiv10.nativeElement.style.fontSize = "22px";
-            this.changeDiv11.nativeElement.style.fontSize = "22px";
-            this.changeDiv12.nativeElement.style.fontSize = "22px";
-            this.changeDiv13.nativeElement.style.fontSize = "22px";
-            this.changeDiv14.nativeElement.style.fontSize = "22px";
-            this.changeDiv15.nativeElement.style.fontSize = "22px";
-            this.changeDiv16.nativeElement.style.fontSize = "22px";
-            this.changeDiv17.nativeElement.style.fontSize = "22px";
-            this.changeDiv18.nativeElement.style.fontSize = "22px";
-            this.changeDiv19.nativeElement.style.fontSize = "22px";
-            this.changeDiv20.nativeElement.style.fontSize = "22px";
-            this.changeDiv21.nativeElement.style.fontSize = "22px";
-            this.changeDiv22.nativeElement.style.fontSize = "22px";
-            this.changeDiv23.nativeElement.style.fontSize = "22px";
-            this.changeDiv24.nativeElement.style.fontSize = "22px";
-            this.changeDiv25.nativeElement.style.fontSize = "22px";
-            this.changeDiv26.nativeElement.style.fontSize = "22px";
-            this.changeDiv27.nativeElement.style.fontSize = "22px";
-            this.changeDiv28.nativeElement.style.fontSize = "22px";
-            this.changeDiv29.nativeElement.style.fontSize = "22px";
-        } else if (e.value == 4) {
-            this.changeDiv.nativeElement.style.fontSize = "25px";
-            this.changeDiv1.nativeElement.style.fontSize = "25px";
-            this.changeDiv2.nativeElement.style.fontSize = "25px";
-            this.changeDiv3.nativeElement.style.fontSize = "25px";
-            this.changeDiv4.nativeElement.style.fontSize = "25px";
-            this.changeDiv5.nativeElement.style.fontSize = "25px";
-            this.changeDiv6.nativeElement.style.fontSize = "25px";
-            this.changeDiv7.nativeElement.style.fontSize = "25px";
-            this.changeDiv8.nativeElement.style.fontSize = "25px";
-            this.changeDiv9.nativeElement.style.fontSize = "25px";
-            this.changeDiv10.nativeElement.style.fontSize = "25px";
-            this.changeDiv11.nativeElement.style.fontSize = "25px";
-            this.changeDiv12.nativeElement.style.fontSize = "25px";
-            this.changeDiv13.nativeElement.style.fontSize = "25px";
-            this.changeDiv14.nativeElement.style.fontSize = "25px";
-            this.changeDiv15.nativeElement.style.fontSize = "25px";
-            this.changeDiv16.nativeElement.style.fontSize = "25px";
-            this.changeDiv17.nativeElement.style.fontSize = "25px";
-            this.changeDiv18.nativeElement.style.fontSize = "25px";
-            this.changeDiv19.nativeElement.style.fontSize = "25px";
-            this.changeDiv20.nativeElement.style.fontSize = "25px";
-            this.changeDiv21.nativeElement.style.fontSize = "25px";
-            this.changeDiv22.nativeElement.style.fontSize = "25px";
-            this.changeDiv23.nativeElement.style.fontSize = "25px";
-            this.changeDiv24.nativeElement.style.fontSize = "25px";
-            this.changeDiv25.nativeElement.style.fontSize = "25px";
-            this.changeDiv26.nativeElement.style.fontSize = "25px";
-            this.changeDiv27.nativeElement.style.fontSize = "25px";
-            this.changeDiv28.nativeElement.style.fontSize = "25px";
-            this.changeDiv29.nativeElement.style.fontSize = "25px";
-        } else if (e.value == 5) {
-            this.changeDiv.nativeElement.style.fontSize = "50px";
-            this.changeDiv1.nativeElement.style.fontSize = "50px";
-            this.changeDiv2.nativeElement.style.fontSize = "50px";
-            this.changeDiv3.nativeElement.style.fontSize = "50px";
-            this.changeDiv4.nativeElement.style.fontSize = "50px";
-            this.changeDiv5.nativeElement.style.fontSize = "50px";
-        }
+  }
+  sliderFunction(e) {
+    //
+    this.sliderValue = e.value;
+    if (e.value == 1) {
+      this.changeDiv.nativeElement.style.fontSize = "15px";
+      this.changeDiv1.nativeElement.style.fontSize = "15px";
+      this.changeDiv2.nativeElement.style.fontSize = "15px";
+      this.changeDiv3.nativeElement.style.fontSize = "15px";
+      this.changeDiv4.nativeElement.style.fontSize = "15px";
+      this.changeDiv5.nativeElement.style.fontSize = "15px";
+      this.changeDiv6.nativeElement.style.fontSize = "15px";
+      this.changeDiv7.nativeElement.style.fontSize = "15px";
+      this.changeDiv8.nativeElement.style.fontSize = "15px";
+      this.changeDiv9.nativeElement.style.fontSize = "15px";
+      this.changeDiv10.nativeElement.style.fontSize = "15px";
+      this.changeDiv11.nativeElement.style.fontSize = "15px";
+      this.changeDiv12.nativeElement.style.fontSize = "15px";
+      this.changeDiv13.nativeElement.style.fontSize = "15px";
+      this.changeDiv14.nativeElement.style.fontSize = "15px";
+      this.changeDiv15.nativeElement.style.fontSize = "15px";
+      this.changeDiv16.nativeElement.style.fontSize = "15px";
+      this.changeDiv17.nativeElement.style.fontSize = "15px";
+      this.changeDiv18.nativeElement.style.fontSize = "15px";
+      this.changeDiv19.nativeElement.style.fontSize = "15px";
+      this.changeDiv20.nativeElement.style.fontSize = "15px";
+      this.changeDiv21.nativeElement.style.fontSize = "15px";
+      this.changeDiv22.nativeElement.style.fontSize = "15px";
+      this.changeDiv23.nativeElement.style.fontSize = "15px";
+      this.changeDiv24.nativeElement.style.fontSize = "15px";
+      this.changeDiv25.nativeElement.style.fontSize = "15px";
+      this.changeDiv26.nativeElement.style.fontSize = "15px";
+      this.changeDiv27.nativeElement.style.fontSize = "15px";
+      this.changeDiv28.nativeElement.style.fontSize = "15px";
+      this.changeDiv29.nativeElement.style.fontSize = "15px";
+    } else if (e.value == 2) {
+      this.changeDiv.nativeElement.style.fontSize = "20px";
+      this.changeDiv1.nativeElement.style.fontSize = "20px";
+      this.changeDiv2.nativeElement.style.fontSize = "20px";
+      this.changeDiv3.nativeElement.style.fontSize = "20px";
+      this.changeDiv4.nativeElement.style.fontSize = "20px";
+      this.changeDiv5.nativeElement.style.fontSize = "20px";
+      this.changeDiv6.nativeElement.style.fontSize = "20px";
+      this.changeDiv7.nativeElement.style.fontSize = "20px";
+      this.changeDiv8.nativeElement.style.fontSize = "20px";
+      this.changeDiv9.nativeElement.style.fontSize = "20px";
+      this.changeDiv10.nativeElement.style.fontSize = "20px";
+      this.changeDiv11.nativeElement.style.fontSize = "20px";
+      this.changeDiv12.nativeElement.style.fontSize = "20px";
+      this.changeDiv13.nativeElement.style.fontSize = "20px";
+      this.changeDiv14.nativeElement.style.fontSize = "20px";
+      this.changeDiv15.nativeElement.style.fontSize = "20px";
+      this.changeDiv16.nativeElement.style.fontSize = "20px";
+      this.changeDiv17.nativeElement.style.fontSize = "20px";
+      this.changeDiv18.nativeElement.style.fontSize = "20px";
+      this.changeDiv19.nativeElement.style.fontSize = "20px";
+      this.changeDiv20.nativeElement.style.fontSize = "20px";
+      this.changeDiv21.nativeElement.style.fontSize = "20px";
+      this.changeDiv22.nativeElement.style.fontSize = "20px";
+      this.changeDiv23.nativeElement.style.fontSize = "20px";
+      this.changeDiv24.nativeElement.style.fontSize = "20px";
+      this.changeDiv25.nativeElement.style.fontSize = "20px";
+      this.changeDiv26.nativeElement.style.fontSize = "20px";
+      this.changeDiv27.nativeElement.style.fontSize = "20px";
+      this.changeDiv28.nativeElement.style.fontSize = "20px";
+      this.changeDiv29.nativeElement.style.fontSize = "20px";
+    } else if (e.value == 3) {
+      this.changeDiv.nativeElement.style.fontSize = "22px";
+      this.changeDiv1.nativeElement.style.fontSize = "22px";
+      this.changeDiv2.nativeElement.style.fontSize = "22px";
+      this.changeDiv3.nativeElement.style.fontSize = "22px";
+      this.changeDiv4.nativeElement.style.fontSize = "22px";
+      this.changeDiv5.nativeElement.style.fontSize = "22px";
+      this.changeDiv6.nativeElement.style.fontSize = "22px";
+      this.changeDiv7.nativeElement.style.fontSize = "22px";
+      this.changeDiv8.nativeElement.style.fontSize = "22px";
+      this.changeDiv9.nativeElement.style.fontSize = "22px";
+      this.changeDiv10.nativeElement.style.fontSize = "22px";
+      this.changeDiv11.nativeElement.style.fontSize = "22px";
+      this.changeDiv12.nativeElement.style.fontSize = "22px";
+      this.changeDiv13.nativeElement.style.fontSize = "22px";
+      this.changeDiv14.nativeElement.style.fontSize = "22px";
+      this.changeDiv15.nativeElement.style.fontSize = "22px";
+      this.changeDiv16.nativeElement.style.fontSize = "22px";
+      this.changeDiv17.nativeElement.style.fontSize = "22px";
+      this.changeDiv18.nativeElement.style.fontSize = "22px";
+      this.changeDiv19.nativeElement.style.fontSize = "22px";
+      this.changeDiv20.nativeElement.style.fontSize = "22px";
+      this.changeDiv21.nativeElement.style.fontSize = "22px";
+      this.changeDiv22.nativeElement.style.fontSize = "22px";
+      this.changeDiv23.nativeElement.style.fontSize = "22px";
+      this.changeDiv24.nativeElement.style.fontSize = "22px";
+      this.changeDiv25.nativeElement.style.fontSize = "22px";
+      this.changeDiv26.nativeElement.style.fontSize = "22px";
+      this.changeDiv27.nativeElement.style.fontSize = "22px";
+      this.changeDiv28.nativeElement.style.fontSize = "22px";
+      this.changeDiv29.nativeElement.style.fontSize = "22px";
+    } else if (e.value == 4) {
+      this.changeDiv.nativeElement.style.fontSize = "25px";
+      this.changeDiv1.nativeElement.style.fontSize = "25px";
+      this.changeDiv2.nativeElement.style.fontSize = "25px";
+      this.changeDiv3.nativeElement.style.fontSize = "25px";
+      this.changeDiv4.nativeElement.style.fontSize = "25px";
+      this.changeDiv5.nativeElement.style.fontSize = "25px";
+      this.changeDiv6.nativeElement.style.fontSize = "25px";
+      this.changeDiv7.nativeElement.style.fontSize = "25px";
+      this.changeDiv8.nativeElement.style.fontSize = "25px";
+      this.changeDiv9.nativeElement.style.fontSize = "25px";
+      this.changeDiv10.nativeElement.style.fontSize = "25px";
+      this.changeDiv11.nativeElement.style.fontSize = "25px";
+      this.changeDiv12.nativeElement.style.fontSize = "25px";
+      this.changeDiv13.nativeElement.style.fontSize = "25px";
+      this.changeDiv14.nativeElement.style.fontSize = "25px";
+      this.changeDiv15.nativeElement.style.fontSize = "25px";
+      this.changeDiv16.nativeElement.style.fontSize = "25px";
+      this.changeDiv17.nativeElement.style.fontSize = "25px";
+      this.changeDiv18.nativeElement.style.fontSize = "25px";
+      this.changeDiv19.nativeElement.style.fontSize = "25px";
+      this.changeDiv20.nativeElement.style.fontSize = "25px";
+      this.changeDiv21.nativeElement.style.fontSize = "25px";
+      this.changeDiv22.nativeElement.style.fontSize = "25px";
+      this.changeDiv23.nativeElement.style.fontSize = "25px";
+      this.changeDiv24.nativeElement.style.fontSize = "25px";
+      this.changeDiv25.nativeElement.style.fontSize = "25px";
+      this.changeDiv26.nativeElement.style.fontSize = "25px";
+      this.changeDiv27.nativeElement.style.fontSize = "25px";
+      this.changeDiv28.nativeElement.style.fontSize = "25px";
+      this.changeDiv29.nativeElement.style.fontSize = "25px";
+    } else if (e.value == 5) {
+      this.changeDiv.nativeElement.style.fontSize = "50px";
+      this.changeDiv1.nativeElement.style.fontSize = "50px";
+      this.changeDiv2.nativeElement.style.fontSize = "50px";
+      this.changeDiv3.nativeElement.style.fontSize = "50px";
+      this.changeDiv4.nativeElement.style.fontSize = "50px";
+      this.changeDiv5.nativeElement.style.fontSize = "50px";
     }
-    constructor(
-        private fb: FormBuilder,
-        private apiService: CPCQService,
-        private router: Router,
-        private formService: FirstForm,
-        private domSanitizer: DomSanitizer,
-        public dialog: MatDialog,
-        private loginService: LoginService
-    ) {}
-    openDialog(i, j, id) {
-        //
-
-        var questAns = {};
-        var scores = [];
-        var comments = [];
-        for (let key in this.scoreRes) {
-            if (this.scoreRes[key]["topic"] == this.attributes[i]) {
-                questAns = this.scoreRes[key][this.columnHeadings[j]];
-                scores = this.scoreRes[key]["scores"][id];
-                comments = this.scoreRes[key]["comment1"][id];
-            }
-        }
-
-        var arr = [];
-        arr.push(this.attributes[i]);
-        arr.push(j);
-        arr.push(this.columnHeadings[j]);
-        arr.push(id);
-        arr.push(questAns);
-        arr.push(scores);
-        arr.push(comments);
-        const dialogRef = this.dialog.open(DialogFormComponent, {
-            data: {
-                animal: arr,
-                status: "form1",
-            },
-        });
-        dialogRef.afterClosed().subscribe((result) => {
-            if (this.responsesArray[i][j][1] == "colorbold") {
-                this.unpackedCount = this.unpackedCount + 1;
-            }
-        });
+  }
+  constructor(
+    private fb: FormBuilder,
+    private apiService: CPCQService,
+    private router: Router,
+    private formService: FirstForm,
+    private domSanitizer: DomSanitizer,
+    public dialog: MatDialog,
+    private loginService: LoginService
+  ) {}
+  openDialog(i, j, id) {
+    //
+
+    var questAns = {};
+    var scores = [];
+    var comments = [];
+    for (let key in this.scoreRes) {
+      if (this.scoreRes[key]["topic"] == this.attributes[i]) {
+        questAns = this.scoreRes[key][this.columnHeadings[j]];
+        scores = this.scoreRes[key]["scores"][id];
+        comments = this.scoreRes[key]["comment1"][id];
+      }
     }
 
-    openWordDialog(i) {
+    var arr = [];
+    arr.push(this.attributes[i]);
+    arr.push(j);
+    arr.push(this.columnHeadings[j]);
+    arr.push(id);
+    arr.push(questAns);
+    arr.push(scores);
+    arr.push(comments);
+    const dialogRef = this.dialog.open(DialogFormComponent, {
+      data: {
+        animal: arr,
+        status: "form1",
+      },
+    });
+    dialogRef.afterClosed().subscribe((result) => {
+      if (this.responsesArray[i][j][1] == "colorbold") {
+        this.unpackedCount = this.unpackedCount + 1;
+      }
+    });
+  }
+
+  openWordDialog(i) {
+    //
+    this.buttonClick = true;
+    const dialogRef = this.dialog.open(DialogFormComponent, {
+      data: {
+        animal: i,
+        status: "word",
+      },
+      disableClose: true,
+    });
+
+    dialogRef.afterClosed().subscribe((result) => {
+      this.wordDescription = result;
+    });
+  }
+
+  helpDialog(i) {
+    //
+    this.dialog.open(DialogFormComponent, {
+      data: {
+        animal: i,
+        status: "help",
+      },
+    });
+  }
+
+  keyPressFunc(e) {
+    //
+    var numbersList = ["1"];
+    for (let key in this.attitudeForm.value) {
+      if (numbersList.indexOf(this.attitudeForm.value[key]) == -1) {
         //
-        this.buttonClick = true;
-        const dialogRef = this.dialog.open(DialogFormComponent, {
-            data: {
-                animal: i,
-                status: "word",
-            },
-            disableClose: true,
-        });
-
-        dialogRef.afterClosed().subscribe((result) => {
-            this.wordDescription = result;
-        });
+        return "Number";
+      }
     }
-
-    helpDialog(i) {
-        //
-        this.dialog.open(DialogFormComponent, {
-            data: {
-                animal: i,
-                status: "help",
-            },
-        });
-    }
-
-    keyPressFunc(e) {
-        //
-        var numbersList = ["1"];
-        for (let key in this.attitudeForm.value) {
-            if (numbersList.indexOf(this.attitudeForm.value[key]) == -1) {
-                //
-                return "Number";
-            }
+  }
+
+  getEmailError() {
+    return "Error";
+  }
+  getResponses() {
+    this.apiService.getResponsesData().subscribe((res) => {
+      for (let key in res) {
+        this.temp = [];
+        for (let key1 in res[key]) {
+          this.temp.push(res[key][key1]);
+        }
+        this.responsesArray.push(this.temp);
+      }
+    });
+  }
+
+  getForm() {
+    var arr = [];
+    var arr1 = [];
+    var arr2 = [];
+    var i;
+    var attitudeResult = [];
+    var empathyResult = [];
+    var policyResult = [];
+    var profResult = [];
+    var teachingResult = [];
+    this.finalList = [[]];
+    this.boldList = [[]];
+    this.apiService.getFormData().subscribe((res) => {
+      for (let key in res) {
+        arr = [];
+        if (res[key]["topic"] == "Attitude") {
+          attitudeResult.push("Attitude");
+          arr.push("Attitude");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+        } else if (res[key]["topic"] == "Empathy") {
+          empathyResult.push("Empathy");
+          arr.push("Empathy");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+        } else if (res[key]["topic"] == "Policy") {
+          policyResult.push("Policy");
+          arr.push("Policy");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+
+          policyResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+        } else if (res[key]["topic"] == "Professionalism") {
+          profResult.push("Professionalism");
+          arr.push("Professionalism");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+
+          profResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+        } else if (res[key]["topic"] == "Teaching Practice") {
+          arr.push("Teaching Pracice");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+          teachingResult.push("Teaching Practice");
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
         }
-    }
-
-    getEmailError() {
-        return "Error";
-    }
-    getResponses() {
-        this.apiService.getResponsesData().subscribe((res) => {
-            for (let key in res) {
-                this.temp = [];
-                for (let key1 in res[key]) {
-                    this.temp.push(res[key][key1]);
-                }
-                this.responsesArray.push(this.temp);
-            }
-        });
-    }
 
-    getForm() {
-        var arr = [];
-        var arr1 = [];
-        var arr2 = [];
-        var i;
-        var attitudeResult = [];
-        var empathyResult = [];
-        var policyResult = [];
-        var profResult = [];
-        var teachingResult = [];
-        this.finalList = [[]];
-        this.boldList = [[]];
-        this.apiService.getFormData().subscribe((res) => {
-            for (let key in res) {
-                arr = [];
-                if (res[key]["topic"] == "Attitude") {
-                    attitudeResult.push("Attitude");
-                    arr.push("Attitude");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
-                    );
-                } else if (res[key]["topic"] == "Empathy") {
-                    empathyResult.push("Empathy");
-                    arr.push("Empathy");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
-                    );
-                } else if (res[key]["topic"] == "Policy") {
-                    policyResult.push("Policy");
-                    arr.push("Policy");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
-                    );
-                    policyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
-                    );
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
-                    );
-                } else if (res[key]["topic"] == "Professionalism") {
-                    profResult.push("Professionalism");
-                    arr.push("Professionalism");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-
-                    profResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    profResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
-                    profResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
-                    profResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    profResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
-                    profResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
-                } else if (res[key]["topic"] == "Teaching Practice") {
-                    arr.push("Teaching Pracice");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-                    teachingResult.push("Teaching Practice");
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
-                    );
-                }
-
-                this.boldList.push(arr);
+        this.boldList.push(arr);
+      }
+      this.finalList.push(attitudeResult);
+      this.finalList.push(empathyResult);
+      this.finalList.push(policyResult);
+      this.finalList.push(profResult);
+      this.finalList.push(teachingResult);
+    });
+    this.finalList.splice(0, 1);
+    this.boldList.splice(0, 1);
+    // this.getAllIndexes(this.finalList,1)
+  }
+
+  emoji: any;
+  changeEmojiSize(data) {
+    document.getElementById("angry").style.height = "30px";
+    document.getElementById("angry").style.width = "30px";
+    document.getElementById("sad").style.height = "30px";
+    document.getElementById("sad").style.width = "30px";
+    document.getElementById("neutral").style.height = "30px";
+    document.getElementById("neutral").style.width = "30px";
+    document.getElementById("smile").style.height = "30px";
+    document.getElementById("smile").style.width = "30px";
+    document.getElementById("heart").style.height = "30px";
+    document.getElementById("heart").style.width = "30px";
+    document.getElementById(data).style.height = "50px";
+    document.getElementById(data).style.width = "50px";
+
+    this.emoji = data;
+  }
+
+  thumbs: any;
+  changeThumbsSize(data) {
+    document.getElementById("thumbsup").style.height = "30px";
+    document.getElementById("thumbsup").style.width = "30px";
+    document.getElementById("thumbsdown").style.height = "30px";
+    document.getElementById("thumbsdown").style.width = "30px";
+
+    document.getElementById(data).style.height = "50px";
+    document.getElementById(data).style.width = "50px";
+    this.thumbs = data;
+  }
+  finalSubmit() {
+    this.finalFeedbackForm.value["q6"] = this.thumbs;
+    this.finalFeedbackForm.value["q7"] = this.emoji;
+
+    this.endTime = new Date();
+
+    this.durationTime = (this.endTime - this.startTime) / 1000;
+    this.durationTime = this.durationTime / 60;
+
+    this.apiService.postFeedbackForm(this.finalFeedbackForm.value).subscribe(
+      (res) => {
+        this.apiService.changeCPCQStatus().subscribe((res1) => {
+          Swal.fire({
+            text: "Submitted",
+            icon: "success",
+          }).then((res) => {
+            if (res["isConfirmed"]) {
+              this.router.navigateByUrl("/result");
             }
-            this.finalList.push(attitudeResult);
-            this.finalList.push(empathyResult);
-            this.finalList.push(policyResult);
-            this.finalList.push(profResult);
-            this.finalList.push(teachingResult);
+          });
         });
-        this.finalList.splice(0, 1);
-        this.boldList.splice(0, 1);
-        // this.getAllIndexes(this.finalList,1)
-    }
-
-    emoji: any;
-    changeEmojiSize(data) {
-        document.getElementById("angry").style.height = "30px";
-        document.getElementById("angry").style.width = "30px";
-        document.getElementById("sad").style.height = "30px";
-        document.getElementById("sad").style.width = "30px";
-        document.getElementById("neutral").style.height = "30px";
-        document.getElementById("neutral").style.width = "30px";
-        document.getElementById("smile").style.height = "30px";
-        document.getElementById("smile").style.width = "30px";
-        document.getElementById("heart").style.height = "30px";
-        document.getElementById("heart").style.width = "30px";
-        document.getElementById(data).style.height = "50px";
-        document.getElementById(data).style.width = "50px";
-
-        this.emoji = data;
-    }
-
-    thumbs: any;
-    changeThumbsSize(data) {
-        document.getElementById("thumbsup").style.height = "30px";
-        document.getElementById("thumbsup").style.width = "30px";
-        document.getElementById("thumbsdown").style.height = "30px";
-        document.getElementById("thumbsdown").style.width = "30px";
-
-        document.getElementById(data).style.height = "50px";
-        document.getElementById(data).style.width = "50px";
-        this.thumbs = data;
-    }
-    finalSubmit() {
-        this.finalFeedbackForm.value["q6"] = this.thumbs;
-        this.finalFeedbackForm.value["q7"] = this.emoji;
+      },
+      (err) => {}
+    );
+  }
+  responsesArray = [];
+  temp = [];
+  scoreRes: any;
+  ngOnInit(): void {
+    this.startTime = new Date();
+    this.finalFeedbackForm = this.fb.group({
+      q1: [""],
+      q2: [""],
+      q3: [""],
+      q4: [""],
+      q5: [""],
+      q6: [""],
+      q7: [""],
+    });
+    this.apiService.getResponsesData().subscribe((res) => {
+      for (let key in res) {
+        this.temp = [];
+        for (let key1 in res[key]) {
+          this.temp.push(res[key][key1]);
+        }
+        this.responsesArray.push(this.temp);
+      }
+      this.apiService.getScoreInfo().subscribe((res) => {
+        this.scoreRes = res;
 
-        this.endTime = new Date();
+        for (let key in res) {
+          for (let category in res[key]["scores"]["category"]) {
+            var firstIndex = this.attributes.indexOf(res[key]["topic"]);
 
-        this.durationTime = (this.endTime - this.startTime) / 1000;
-        this.durationTime = this.durationTime / 60;
+            var secondIndex = this.columnHeadings.indexOf(res[key]["scores"]["category"][category]);
 
-        this.apiService.postFeedbackForm(this.finalFeedbackForm.value).subscribe(
-            (res) => {
-                this.apiService.changeCPCQStatus().subscribe((res1) => {
-                    Swal.fire({
-                        text: "Submitted",
-                        icon: "success",
-                    }).then((res) => {
-                        if (res["isConfirmed"]) {
-                            this.router.navigateByUrl("/result");
-                        }
-                    });
-                });
-            },
-            (err) => {}
-        );
-    }
-    responsesArray = [];
-    temp = [];
-    scoreRes: any;
-    ngOnInit(): void {
-        this.startTime = new Date();
-        this.finalFeedbackForm = this.fb.group({
-            q1: [""],
-            q2: [""],
-            q3: [""],
-            q4: [""],
-            q5: [""],
-            q6: [""],
-            q7: [""],
-        });
-        this.apiService.getResponsesData().subscribe((res) => {
-            for (let key in res) {
-                this.temp = [];
-                for (let key1 in res[key]) {
-                    this.temp.push(res[key][key1]);
-                }
-                this.responsesArray.push(this.temp);
+            if (firstIndex != -1 && secondIndex != -1) {
+              this.responsesArray[firstIndex][secondIndex][1] = "Colored";
             }
-            this.apiService.getScoreInfo().subscribe((res) => {
-                this.scoreRes = res;
-
-                for (let key in res) {
-                    for (let category in res[key]["scores"]["category"]) {
-                        var firstIndex = this.attributes.indexOf(res[key]["topic"]);
-
-                        var secondIndex = this.columnHeadings.indexOf(res[key]["scores"]["category"][category]);
-
-                        if (firstIndex != -1 && secondIndex != -1) {
-                            this.responsesArray[firstIndex][secondIndex][1] = "Colored";
-                        }
-                    }
-                }
-                this.progressBar = false;
-
-                // this.apiService.patchStatus("scoresstatus").subscribe((res) => {
-                //
-                // })
-            });
-        });
+          }
+        }
+        this.progressBar = false;
 
-        // this.apiService.getScoreInfo().subscribe((res) => {
-        //   this.scoreRes = res
+        // this.apiService.patchStatus("scoresstatus").subscribe((res) => {
         //
-        //   for(let key in res){
-        //     for(let category in res[key]["scores"]["category"]){
-        //       var firstIndex = this.attributes.indexOf(res[key]["topic"])
-
-        //       var secondIndex = this.columnHeadings.indexOf(res[key]["scores"]["category"][category])
+        // })
+      });
+    });
+
+    // this.apiService.getScoreInfo().subscribe((res) => {
+    //   this.scoreRes = res
+    //
+    //   for(let key in res){
+    //     for(let category in res[key]["scores"]["category"]){
+    //       var firstIndex = this.attributes.indexOf(res[key]["topic"])
+
+    //       var secondIndex = this.columnHeadings.indexOf(res[key]["scores"]["category"][category])
+    //
+
+    //       if(firstIndex != -1 && secondIndex != -1){
+    //
+    //         this.responsesArray[firstIndex][secondIndex][1] = "Colored"
+    //       }
+
+    //     }
+
+    //   }
+    //   this.progressBar = false;
+    //
+    //   // this.apiService.patchStatus("scoresstatus").subscribe((res) => {
+    //   //
+    //   // })
+
+    // })
+
+    this.apiService.getScoreVisualization().subscribe((res) => {
+      var temp = 0;
+      for (var i = 0; i < res["category"].length; i++) {
+        temp = temp + res["series"][i]["data"];
+      }
+      this.meanNumber = temp / 4.0;
+
+      this.meanValue = temp / 4.0;
+
+      if (this.meanValue >= 0 && this.meanValue <= 1) {
+        if (this.meanValue == 1) this.meanValue = this.columnHeadings1[0];
+        else this.meanValue = " somewhere between Cultural Destructiveness and Cultural Incapacity";
+      }
+      if (this.meanValue > 1 && this.meanValue <= 2) {
+        if (this.meanValue == 2) this.meanValue = this.columnHeadings1[1];
+        else this.meanValue = " somewhere between Cultural Incapacity and Cultural Blindness";
+      }
+      if (this.meanValue > 2 && this.meanValue <= 3) {
+        if (this.meanValue == 3) this.meanValue = this.columnHeadings1[2];
+        else this.meanValue = " somewhere between Cultural Blindness and Cultural PreCompetence";
+      }
+      if (this.meanValue > 3 && this.meanValue <= 4) {
+        if (this.meanValue == 4) this.meanValue = this.columnHeadings1[3];
+        else this.meanValue = " somewhere between Cultural PreCompetence and Cultural Competence";
+      }
+      if (this.meanValue > 4 && this.meanValue <= 5) {
+        if (this.meanValue == 5) this.meanValue = this.columnHeadings1[4];
+        else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
+      }
+      if (this.meanValue > 5) {
+        if (this.meanValue == 5) this.meanValue = this.columnHeadings1[4];
+        else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
+      }
+    });
+
+    this.apiService.attitudeData().subscribe(
+      (res) => {
         //
-
-        //       if(firstIndex != -1 && secondIndex != -1){
+        this.attitude = res[0];
         //
-        //         this.responsesArray[firstIndex][secondIndex][1] = "Colored"
-        //       }
+      },
+      (err) => {}
+    );
 
-        //     }
-
-        //   }
-        //   this.progressBar = false;
+    this.apiService.empathyData().subscribe(
+      (res) => {
         //
-        //   // this.apiService.patchStatus("scoresstatus").subscribe((res) => {
-        //   //
-        //   // })
-
-        // })
-
-        this.apiService.getScoreVisualization().subscribe((res) => {
-            var temp = 0;
-            for (var i = 0; i < res["category"].length; i++) {
-                temp = temp + res["series"][i]["data"];
-            }
-            this.meanNumber = temp / 4.0;
-
-            this.meanValue = temp / 4.0;
-
-            if (this.meanValue >= 0 && this.meanValue <= 1) {
-                if (this.meanValue == 1) this.meanValue = this.columnHeadings1[0];
-                else this.meanValue = " somewhere between Cultural Destructiveness and Cultural Incapacity";
-            }
-            if (this.meanValue > 1 && this.meanValue <= 2) {
-                if (this.meanValue == 2) this.meanValue = this.columnHeadings1[1];
-                else this.meanValue = " somewhere between Cultural Incapacity and Cultural Blindness";
-            }
-            if (this.meanValue > 2 && this.meanValue <= 3) {
-                if (this.meanValue == 3) this.meanValue = this.columnHeadings1[2];
-                else this.meanValue = " somewhere between Cultural Blindness and Cultural PreCompetence";
-            }
-            if (this.meanValue > 3 && this.meanValue <= 4) {
-                if (this.meanValue == 4) this.meanValue = this.columnHeadings1[3];
-                else this.meanValue = " somewhere between Cultural PreCompetence and Cultural Competence";
-            }
-            if (this.meanValue > 4 && this.meanValue <= 5) {
-                if (this.meanValue == 5) this.meanValue = this.columnHeadings1[4];
-                else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
+        this.empathy = res[0];
+        //
+      },
+      (err) => {}
+    );
+
+    this.apiService.policyData().subscribe(
+      (res) => {
+        this.policy = res[0];
+      },
+      (err) => {}
+    );
+
+    this.apiService.professionalismData().subscribe(
+      (res) => {
+        this.professionalism = res[0];
+      },
+      (err) => {}
+    );
+
+    this.apiService.teachingData().subscribe(
+      (res) => {
+        this.teachingPractice = res[0];
+      },
+      (err) => {}
+    );
+
+    this.attitudeForm = this.fb.group({
+      A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      description: ["", [Validators.required]],
+    });
+
+    this.empathyForm = this.fb.group({
+      A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+    });
+
+    this.policyForm = this.fb.group({
+      A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+    });
+
+    var arr = [];
+    var arr1 = [];
+    var arr2 = [];
+    var i;
+    for (var j = 0; j < 5; j++) {
+      arr = [];
+      arr1 = [];
+      arr2 = [];
+      i = 0;
+      while (i < 6) {
+        var item1 = Math.floor(Math.random() * (7 - 1) + 1);
+        if (arr1.indexOf(item1) == -1) {
+          if (i == 0) {
+            arr.push(this.attributes[j]);
+            arr.push(this.rowLetters[j][i] + ". " + item1);
+            arr1.push(item1);
+            if (arr1[arr1.length - 1] > 2) {
+              //
+              arr2.push("True");
+            } else {
+              arr2.push("False");
             }
-            if (this.meanValue > 5) {
-                if (this.meanValue == 5) this.meanValue = this.columnHeadings1[4];
-                else this.meanValue = " somewhere between Cultural Competence and Cultural Proficiency";
+          } else {
+            arr.push(this.rowLetters[j][i] + ". " + item1);
+            arr1.push(item1);
+            if (i == 1) {
+              if (arr1[arr1.length - 1] > 3) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
+            } else if (i == 2) {
+              if (arr1[arr1.length - 1] > 4 || arr1[arr1.length - 1] == 1) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
+            } else if (i == 3) {
+              if (arr1[arr1.length - 1] > 5 || arr1[arr1.length - 1] < 4) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
+            } else if (i == 4) {
+              if (arr1[arr1.length - 1] < 4) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
+            } else if (i == 5) {
+              if (arr1[arr1.length - 1] < 5) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
             }
-        });
-
-        this.apiService.attitudeData().subscribe(
-            (res) => {
-                //
-                this.attitude = res[0];
-                //
-            },
-            (err) => {}
-        );
-
-        this.apiService.empathyData().subscribe(
-            (res) => {
-                //
-                this.empathy = res[0];
-                //
-            },
-            (err) => {}
-        );
-
-        this.apiService.policyData().subscribe(
-            (res) => {
-                this.policy = res[0];
-            },
-            (err) => {}
-        );
-
-        this.apiService.professionalismData().subscribe(
-            (res) => {
-                this.professionalism = res[0];
-            },
-            (err) => {}
-        );
-
-        this.apiService.teachingData().subscribe(
-            (res) => {
-                this.teachingPractice = res[0];
-            },
-            (err) => {}
-        );
-
-        this.attitudeForm = this.fb.group({
-            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            description: ["", [Validators.required]],
-        });
-
-        this.empathyForm = this.fb.group({
-            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-        });
-
-        this.policyForm = this.fb.group({
-            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-        });
-
-        var arr = [];
-        var arr1 = [];
-        var arr2 = [];
-        var i;
-        for (var j = 0; j < 5; j++) {
-            arr = [];
-            arr1 = [];
-            arr2 = [];
-            i = 0;
-            while (i < 6) {
-                var item1 = Math.floor(Math.random() * (7 - 1) + 1);
-                if (arr1.indexOf(item1) == -1) {
-                    if (i == 0) {
-                        arr.push(this.attributes[j]);
-                        arr.push(this.rowLetters[j][i] + ". " + item1);
-                        arr1.push(item1);
-                        if (arr1[arr1.length - 1] > 2) {
-                            //
-                            arr2.push("True");
-                        } else {
-                            arr2.push("False");
-                        }
-                    } else {
-                        arr.push(this.rowLetters[j][i] + ". " + item1);
-                        arr1.push(item1);
-                        if (i == 1) {
-                            if (arr1[arr1.length - 1] > 3) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        } else if (i == 2) {
-                            if (arr1[arr1.length - 1] > 4 || arr1[arr1.length - 1] == 1) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        } else if (i == 3) {
-                            if (arr1[arr1.length - 1] > 5 || arr1[arr1.length - 1] < 4) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        } else if (i == 4) {
-                            if (arr1[arr1.length - 1] < 4) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        } else if (i == 5) {
-                            if (arr1[arr1.length - 1] < 5) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        }
-                    }
-                    i = i + 1;
-                } else {
-                    continue;
-                }
-            }
-            this.formValues.push(arr);
-            this.boldList.push(arr1);
-            this.randomList.push(arr2);
+          }
+          i = i + 1;
+        } else {
+          continue;
         }
-        this.boldList.splice(0, 1);
-        this.randomList.splice(0, 1);
-
-        this.getAllIndexes(this.randomList, "True");
-        this.loaded = true;
+      }
+      this.formValues.push(arr);
+      this.boldList.push(arr1);
+      this.randomList.push(arr2);
     }
-
-    getAllIndexes(arr, val) {
-        var indexes = [];
-        var i = -1;
-        for (var i = 0; i < arr.length; i++) {
-            for (var j = 0; j < arr[i].length; j++) {
-                if (arr[i][j] == "True") {
-                    var arr1 = [];
-                    arr1.push(i);
-                    arr1.push(j);
-                    indexes.push(arr1);
-                }
-            }
+    this.boldList.splice(0, 1);
+    this.randomList.splice(0, 1);
+
+    this.getAllIndexes(this.randomList, "True");
+    this.loaded = true;
+  }
+
+  getAllIndexes(arr, val) {
+    var indexes = [];
+    var i = -1;
+    for (var i = 0; i < arr.length; i++) {
+      for (var j = 0; j < arr[i].length; j++) {
+        if (arr[i][j] == "True") {
+          var arr1 = [];
+          arr1.push(i);
+          arr1.push(j);
+          indexes.push(arr1);
         }
+      }
+    }
 
-        var arr1 = [];
-        for (var i = 0; i < indexes.length; i++) {
-            arr1.push(i);
-        }
-        var ranNums = [];
-        var i = arr1.length;
-        var j = 0;
-        var count = 0;
-        while (i--) {
-            if (count < 5) {
-                j = Math.floor(Math.random() * (i + 1));
-                ranNums.push(arr1[j]);
-                arr1.splice(j, 1);
-                count = count + 1;
-            } else {
-                break;
-            }
-        }
+    var arr1 = [];
+    for (var i = 0; i < indexes.length; i++) {
+      arr1.push(i);
+    }
+    var ranNums = [];
+    var i = arr1.length;
+    var j = 0;
+    var count = 0;
+    while (i--) {
+      if (count < 5) {
+        j = Math.floor(Math.random() * (i + 1));
+        ranNums.push(arr1[j]);
+        arr1.splice(j, 1);
+        count = count + 1;
+      } else {
+        break;
+      }
+    }
 
-        //
-        for (var i = 0; i < this.boldList.length; i++) {
-            var temp = [];
-            for (var j = 0; j < 6; j++) {
-                temp.push("False");
-            }
-            this.finalList1.push(temp);
-        }
+    //
+    for (var i = 0; i < this.boldList.length; i++) {
+      var temp = [];
+      for (var j = 0; j < 6; j++) {
+        temp.push("False");
+      }
+      this.finalList1.push(temp);
+    }
 
-        for (var i = 0; i < ranNums.length; i++) {
-            var item = indexes[ranNums[i]];
+    for (var i = 0; i < ranNums.length; i++) {
+      var item = indexes[ranNums[i]];
 
-            this.finalList1[item[0]][item[1]] = "True";
-        }
-        // this.finalList1.splice(0,1)
+      this.finalList1[item[0]][item[1]] = "True";
     }
-    preSurvey() {
-        this.router.navigateByUrl("/preSurvey");
+    // this.finalList1.splice(0,1)
+  }
+  preSurvey() {
+    this.router.navigateByUrl("/preSurvey");
+  }
+
+  nextButton() {
+    if (this.selectedIndex == 0) {
+      this.selectedIndex = this.selectedIndex + 1;
+      return;
+    }
+    if (this.selectedIndex == 7) {
+      this.router.navigateByUrl("/dashboard");
+      return;
     }
 
-    nextButton() {
-        if (this.selectedIndex == 0) {
-            this.selectedIndex = this.selectedIndex + 1;
-            return;
-        }
-        if (this.selectedIndex == 7) {
-            this.router.navigateByUrl("/dashboard");
-            return;
-        }
-
-        var numberList = [];
-        var flag = true;
-        for (let key in this.attitudeForm.value) {
-            if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
-                flag = false;
-                Swal.fire({
-                    text: "Please enter values from 1 through 6 only.",
-                    icon: "warning",
-                }).then((res) => {});
-                break;
-            }
-            if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
-                numberList.push(this.attitudeForm.value[key]);
-            } else {
-                flag = false;
-                Swal.fire({
-                    text: "The inputs have been repeated. Please enter values from 1 through 6.",
-                    icon: "warning",
-                }).then((res) => {});
-                break;
-            }
+    var numberList = [];
+    var flag = true;
+    for (let key in this.attitudeForm.value) {
+      if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
+        flag = false;
+        Swal.fire({
+          text: "Please enter values from 1 through 6 only.",
+          icon: "warning",
+        }).then((res) => {});
+        break;
+      }
+      if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
+        numberList.push(this.attitudeForm.value[key]);
+      } else {
+        flag = false;
+        Swal.fire({
+          text: "The inputs have been repeated. Please enter values from 1 through 6.",
+          icon: "warning",
+        }).then((res) => {});
+        break;
+      }
+    }
+    if (!this.buttonClick) {
+      flag = false;
+      Swal.fire({
+        text: "Click on the word '" + this.attributes[this.selectedIndex - 1] + "' and respond to the prompt.",
+        icon: "warning",
+      }).then((res) => {});
+    }
+    if (flag) {
+      if (this.selectedIndex == 7) {
+        this.router.navigateByUrl("/postSurvey");
+      }
+      this.sliderFunction1();
+      var formData = {};
+      formData["topic"] = this.attributes[this.selectedIndex - 1];
+      if (this.attributes[this.selectedIndex - 1] == "Attitude") {
+        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalCompetence"] = "F. " + this.attitudeForm.value["F"];
+        formData["culturalProficiency"] = "E. " + this.attitudeForm.value["E"];
+      } else if (this.attributes[this.selectedIndex - 1] == "Empathy") {
+        formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalBlindness"] = "F. " + this.attitudeForm.value["F"];
+        formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalCompetence"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalProficiency"] = "C. " + this.attitudeForm.value["C"];
+      } else if (this.attributes[this.selectedIndex - 1] == "Policy") {
+        formData["culturalDestructiveness"] = "F. " + this.attitudeForm.value["F"];
+        formData["culturalIncapacity"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalCompetence"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalProficiency"] = "A. " + this.attitudeForm.value["A"];
+      } else if (this.attributes[this.selectedIndex - 1] == "Professionalism") {
+        formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalCompetence"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+      } else if (this.attributes[this.selectedIndex - 1] == "Teaching Practice") {
+        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+      }
+
+      this.endTime = new Date();
+
+      this.durationTime = (this.endTime - this.startTime) / 1000;
+      this.durationTime = this.durationTime / 60;
+
+      formData["description"] = this.wordDescription;
+      formData["duration"] = this.durationTime;
+      this.apiService.postFormData(formData).subscribe(
+        (res) => {
+          //
+        },
+        (err) => {}
+      );
+      // this.getForm();
+      this.selectedIndex = this.selectedIndex + 1;
+      this.buttonClick = false;
+      this.startTime = new Date();
+      this.attitudeForm = this.fb.group({
+        A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      });
+    }
+  }
+
+  postSurvey() {
+    this.router.navigateByUrl("/postSurvey");
+  }
+
+  submitForm1() {
+    if (this.unpackedCount == 5) {
+      this.endTime = new Date();
+
+      this.durationTime = (this.endTime - this.startTime) / 1000;
+      this.durationTime = this.durationTime / 60;
+
+      Swal.fire({
+        text: "Submitted",
+        icon: "success",
+      }).then((res) => {
+        if (res["isConfirmed"]) {
+          // this.getForm()
+          this.selectedIndex = this.selectedIndex + 1;
         }
-        if (!this.buttonClick) {
-            flag = false;
-            Swal.fire({
-                text: "Click on the word '" + this.attributes[this.selectedIndex - 1] + "' and respond to the prompt.",
-                icon: "warning",
-            }).then((res) => {});
+      });
+    } else {
+      Swal.fire({
+        text: "Please click on all the yellow boxes and answer the questions in the prompt.",
+        icon: "warning",
+      }).then((res) => {});
+    }
+  }
+
+  submitForm() {
+    if (this.selectedIndex == 5) {
+      var numberList = [];
+      var flag = false;
+
+      for (let key in this.attitudeForm.value) {
+        if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
+          flag = true;
+          Swal.fire({
+            text: "Please enter values from 1 through 6 only.",
+            icon: "warning",
+          }).then((res) => {});
+          break;
         }
-        if (flag) {
-            if (this.selectedIndex == 7) {
-                this.router.navigateByUrl("/postSurvey");
-            }
-            this.sliderFunction1();
-            var formData = {};
-            formData["topic"] = this.attributes[this.selectedIndex - 1];
-            if (this.attributes[this.selectedIndex - 1] == "Attitude") {
-                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalCompetence"] = "F. " + this.attitudeForm.value["F"];
-                formData["culturalProficiency"] = "E. " + this.attitudeForm.value["E"];
-            } else if (this.attributes[this.selectedIndex - 1] == "Empathy") {
-                formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalBlindness"] = "F. " + this.attitudeForm.value["F"];
-                formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalCompetence"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalProficiency"] = "C. " + this.attitudeForm.value["C"];
-            } else if (this.attributes[this.selectedIndex - 1] == "Policy") {
-                formData["culturalDestructiveness"] = "F. " + this.attitudeForm.value["F"];
-                formData["culturalIncapacity"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalCompetence"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalProficiency"] = "A. " + this.attitudeForm.value["A"];
-            } else if (this.attributes[this.selectedIndex - 1] == "Professionalism") {
-                formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalCompetence"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
-            } else if (this.attributes[this.selectedIndex - 1] == "Teaching Practice") {
-                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
-            }
-
-            this.endTime = new Date();
-
-            this.durationTime = (this.endTime - this.startTime) / 1000;
-            this.durationTime = this.durationTime / 60;
-
-            formData["description"] = this.wordDescription;
-            formData["duration"] = this.durationTime;
-            this.apiService.postFormData(formData).subscribe(
-                (res) => {
-                    //
-                },
-                (err) => {}
-            );
-            // this.getForm();
-            this.selectedIndex = this.selectedIndex + 1;
-            this.buttonClick = false;
-            this.startTime = new Date();
-            this.attitudeForm = this.fb.group({
-                A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            });
+        if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
+          numberList.push(this.attitudeForm.value[key]);
+        } else {
+          flag = true;
+          Swal.fire({
+            text: "The inputs have been repeated. Please enter values from 1 through 6.",
+            icon: "warning",
+          }).then((res) => {});
+          break;
         }
-    }
+      }
+      if (!this.buttonClick) {
+        flag = true;
+        Swal.fire({
+          text: "Click on the word '" + this.attributes[this.selectedIndex - 1] + "' and respond to the prompt.",
+          icon: "warning",
+        }).then((res) => {});
+      }
+      if (!flag) {
+        //
+        var formData = {};
 
-    postSurvey() {
-        this.router.navigateByUrl("/postSurvey");
-    }
+        formData["topic"] = this.attributes[this.selectedIndex - 1];
+        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
 
-    submitForm1() {
-        if (this.unpackedCount == 5) {
-            this.endTime = new Date();
+        formData["description"] = this.wordDescription;
+        this.endTime = new Date();
 
-            this.durationTime = (this.endTime - this.startTime) / 1000;
-            this.durationTime = this.durationTime / 60;
+        this.durationTime = (this.endTime - this.startTime) / 1000;
+        this.durationTime = this.durationTime / 60;
 
+        formData["duration"] = this.durationTime;
+        this.apiService.postFormData(formData).subscribe(
+          (res) => {
+            //
             Swal.fire({
-                text: "Submitted",
-                icon: "success",
+              text: "Submitted",
+              icon: "success",
             }).then((res) => {
-                if (res["isConfirmed"]) {
-                    // this.getForm()
-                    this.selectedIndex = this.selectedIndex + 1;
-                }
-            });
-        } else {
-            Swal.fire({
-                text: "Please click on all the yellow boxes and answer the questions in the prompt.",
-                icon: "warning",
-            }).then((res) => {});
-        }
-    }
+              if (res["isConfirmed"]) {
+                // this.getForm()
+                this.getResponses();
 
-    submitForm() {
-        if (this.selectedIndex == 5) {
-            var numberList = [];
-            var flag = false;
-
-            for (let key in this.attitudeForm.value) {
-                if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
-                    flag = true;
-                    Swal.fire({
-                        text: "Please enter values from 1 through 6 only.",
-                        icon: "warning",
-                    }).then((res) => {});
-                    break;
-                }
-                if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
-                    numberList.push(this.attitudeForm.value[key]);
-                } else {
-                    flag = true;
-                    Swal.fire({
-                        text: "The inputs have been repeated. Please enter values from 1 through 6.",
-                        icon: "warning",
-                    }).then((res) => {});
-                    break;
-                }
-            }
-            if (!this.buttonClick) {
-                flag = true;
-                Swal.fire({
-                    text:
-                        "Click on the word '" +
-                        this.attributes[this.selectedIndex - 1] +
-                        "' and respond to the prompt.",
-                    icon: "warning",
-                }).then((res) => {});
-            }
-            if (!flag) {
-                //
-                var formData = {};
-
-                formData["topic"] = this.attributes[this.selectedIndex - 1];
-                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
-
-                formData["description"] = this.wordDescription;
-                this.endTime = new Date();
-
-                this.durationTime = (this.endTime - this.startTime) / 1000;
-                this.durationTime = this.durationTime / 60;
-
-                formData["duration"] = this.durationTime;
-                this.apiService.postFormData(formData).subscribe(
-                    (res) => {
-                        //
-                        Swal.fire({
-                            text: "Submitted",
-                            icon: "success",
-                        }).then((res) => {
-                            if (res["isConfirmed"]) {
-                                // this.getForm()
-                                this.getResponses();
-
-                                this.selectedIndex = this.selectedIndex + 1;
-                                this.startTime = new Date();
-                            }
-                        });
-                    },
-                    (err) => {}
-                );
-            }
-        }
-    }
-
-    submit() {
-        //
-        var tempDict;
-        this.responseList = [];
-        for (let key in this.firstForm.value) {
-            tempDict = {};
-            tempDict["question"] = key;
-            tempDict["response"] = this.firstForm.value[key];
-            this.responseList.push(tempDict);
-        }
-        //
-
-        this.formService.submitResponse(this.responseList).subscribe(
-            (res) => {
-                //
-                Swal.fire({
-                    text: "Submitted",
-                    icon: "success",
-                });
-                this.router.navigateByUrl("/game");
-            },
-            (err) => {
-                Swal.fire({
-                    text: "Duplicate Entries",
-                    icon: "warning",
-                });
-            }
+                this.selectedIndex = this.selectedIndex + 1;
+                this.startTime = new Date();
+              }
+            });
+          },
+          (err) => {}
         );
+      }
     }
-
-    title = "micRecorder";
-    //Lets declare Record OBJ
-    record;
-    //Will use this flag for toggeling recording
-    recording = false;
-    //URL of Blob
-    url;
-    error;
-    sanitize(url: string) {
-        return this.domSanitizer.bypassSecurityTrustUrl(url);
-    }
-    /**
-     * Start recording.
-     */
-    initiateRecording() {
-        this.recording = true;
-        let mediaConstraints = {
-            video: false,
-            audio: true,
-        };
-        navigator.mediaDevices
-            .getUserMedia(mediaConstraints)
-            .then(this.successCallback.bind(this), this.errorCallback.bind(this));
-    }
-    /**
-     * Will be called automatically.
-     */
-    successCallback(stream) {
-        var options = {
-            mimeType: "audio/wav",
-            numberOfAudioChannels: 1,
-            // sampleRate: 16000,
-        };
-        //Start Actuall Recording
-        var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
-        this.record = new StereoAudioRecorder(stream, options);
-        this.record.record();
-    }
-    /**
-     * Stop recording.
-     */
-    stopRecording() {
-        this.recording = false;
-        this.record.stop(this.processRecording.bind(this));
+  }
+
+  submit() {
+    //
+    var tempDict;
+    this.responseList = [];
+    for (let key in this.firstForm.value) {
+      tempDict = {};
+      tempDict["question"] = key;
+      tempDict["response"] = this.firstForm.value[key];
+      this.responseList.push(tempDict);
     }
-    /**
-     * processRecording Do what ever you want with blob
-     * @param  {any} blob Blog
-     */
-    processRecording(blob) {
-        this.url = URL.createObjectURL(blob);
-        //
+    //
+
+    this.formService.submitResponse(this.responseList).subscribe(
+      (res) => {
         //
-    }
-    /**
-     * Process Error.
-     */
-    errorCallback(error) {
-        this.error = "Can not play audio in your browser";
-    }
+        Swal.fire({
+          text: "Submitted",
+          icon: "success",
+        });
+        this.router.navigateByUrl("/game");
+      },
+      (err) => {
+        Swal.fire({
+          text: "Duplicate Entries",
+          icon: "warning",
+        });
+      }
+    );
+  }
+
+  title = "micRecorder";
+  //Lets declare Record OBJ
+  record;
+  //Will use this flag for toggeling recording
+  recording = false;
+  //URL of Blob
+  url;
+  error;
+  sanitize(url: string) {
+    return this.domSanitizer.bypassSecurityTrustUrl(url);
+  }
+  /**
+   * Start recording.
+   */
+  initiateRecording() {
+    this.recording = true;
+    let mediaConstraints = {
+      video: false,
+      audio: true,
+    };
+    navigator.mediaDevices
+      .getUserMedia(mediaConstraints)
+      .then(this.successCallback.bind(this), this.errorCallback.bind(this));
+  }
+  /**
+   * Will be called automatically.
+   */
+  successCallback(stream) {
+    var options = {
+      mimeType: "audio/wav",
+      numberOfAudioChannels: 1,
+      // sampleRate: 16000,
+    };
+    //Start Actuall Recording
+    var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
+    this.record = new StereoAudioRecorder(stream, options);
+    this.record.record();
+  }
+  /**
+   * Stop recording.
+   */
+  stopRecording() {
+    this.recording = false;
+    this.record.stop(this.processRecording.bind(this));
+  }
+  /**
+   * processRecording Do what ever you want with blob
+   * @param  {any} blob Blog
+   */
+  processRecording(blob) {
+    this.url = URL.createObjectURL(blob);
+    //
+    //
+  }
+  /**
+   * Process Error.
+   */
+  errorCallback(error) {
+    this.error = "Can not play audio in your browser";
+  }
 }
diff --git a/src/app/components/test/my-overlay/my-overlay.component.html b/src/app/components/test/my-overlay/my-overlay.component.html
index 75fe4dd..ecc9ba7 100644
--- a/src/app/components/test/my-overlay/my-overlay.component.html
+++ b/src/app/components/test/my-overlay/my-overlay.component.html
@@ -1,6 +1,6 @@
 <mat-card *cdkPortal>
-    {{text}}
-    <mat-card-actions align="right">
-        <button mat-stroked-button (click)="hideOverlay()">OK</button>
-    </mat-card-actions>
-</mat-card>
\ No newline at end of file
+  {{ text }}
+  <mat-card-actions align="right">
+    <button mat-stroked-button (click)="hideOverlay()">OK</button>
+  </mat-card-actions>
+</mat-card>
diff --git a/src/app/components/test/my-overlay/my-overlay.component.spec.ts b/src/app/components/test/my-overlay/my-overlay.component.spec.ts
index a967f6f..a1b0247 100644
--- a/src/app/components/test/my-overlay/my-overlay.component.spec.ts
+++ b/src/app/components/test/my-overlay/my-overlay.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { MyOverlayComponent } from './my-overlay.component';
+import { MyOverlayComponent } from "./my-overlay.component";
 
-describe('MyOverlayComponent', () => {
+describe("MyOverlayComponent", () => {
   let component: MyOverlayComponent;
   let fixture: ComponentFixture<MyOverlayComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ MyOverlayComponent ]
-    })
-    .compileComponents();
+      declarations: [MyOverlayComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('MyOverlayComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/test/my-overlay/my-overlay.component.ts b/src/app/components/test/my-overlay/my-overlay.component.ts
index cd6dc39..40646b1 100644
--- a/src/app/components/test/my-overlay/my-overlay.component.ts
+++ b/src/app/components/test/my-overlay/my-overlay.component.ts
@@ -1,92 +1,92 @@
 import {
-    Component,
-    OnInit,
-    ViewChild,
-    AfterViewInit,
-    ElementRef,
-    Input,
-    OnDestroy,
-    Renderer2,
-    Output,
-    EventEmitter,
+  Component,
+  OnInit,
+  ViewChild,
+  AfterViewInit,
+  ElementRef,
+  Input,
+  OnDestroy,
+  Renderer2,
+  Output,
+  EventEmitter,
 } from "@angular/core";
 import { Overlay, OverlayRef } from "@angular/cdk/overlay";
 import { CdkPortal } from "@angular/cdk/portal";
 import { OverlayServiceService } from "src/app/services/overlay-service.service";
 @Component({
-    selector: "app-my-overlay",
-    templateUrl: "./my-overlay.component.html",
-    styleUrls: ["./my-overlay.component.css"],
+  selector: "app-my-overlay",
+  templateUrl: "./my-overlay.component.html",
+  styleUrls: ["./my-overlay.component.css"],
 })
 export class MyOverlayComponent implements OnInit, OnDestroy {
-    @Input() connectedTo: any;
-    @Input() text: string;
-    @Input() get id(): number {
-        return this._id;
+  @Input() connectedTo: any;
+  @Input() text: string;
+  @Input() get id(): number {
+    return this._id;
+  }
+  set id(id: number) {
+    if (typeof id === "string") {
+      this._id = parseInt(id);
+    } else {
+      this._id = id;
     }
-    set id(id: number) {
-        if (typeof id === "string") {
-            this._id = parseInt(id);
-        } else {
-            this._id = id;
-        }
-    }
-    private _id: number;
-    @Output() closed = new EventEmitter<any>();
-    @ViewChild(CdkPortal) portal: ElementRef;
-    overlayRef: OverlayRef;
-    private nativeElement;
+  }
+  private _id: number;
+  @Output() closed = new EventEmitter<any>();
+  @ViewChild(CdkPortal) portal: ElementRef;
+  overlayRef: OverlayRef;
+  private nativeElement;
 
-    constructor(private overlay: Overlay, private renderer: Renderer2, private overlayService: OverlayServiceService) {}
+  constructor(private overlay: Overlay, private renderer: Renderer2, private overlayService: OverlayServiceService) {}
 
-    ngOnInit() {
-        this.overlayService.registerOverlay(this);
+  ngOnInit() {
+    this.overlayService.registerOverlay(this);
 
-        if (this.connectedTo.getBoundingClientRect) {
-            this.nativeElement = this.connectedTo;
-        } else {
-            this.nativeElement = this.connectedTo._elementRef.nativeElement;
-        }
+    if (this.connectedTo.getBoundingClientRect) {
+      this.nativeElement = this.connectedTo;
+    } else {
+      this.nativeElement = this.connectedTo._elementRef.nativeElement;
     }
+  }
 
-    public showOverlay() {
-        const positionStrategy = this.overlay
-            .position()
-            .flexibleConnectedTo(this.nativeElement)
-            .withPositions([
-                { originX: "start", originY: "center", overlayX: "end", overlayY: "center", offsetX: -10 },
-                { originX: "end", originY: "center", overlayX: "start", overlayY: "center", offsetX: 10 },
-                { originX: "center", originY: "bottom", overlayX: "center", overlayY: "top", offsetY: 10 },
-            ])
-            .withGrowAfterOpen();
-        const scrollStrategy = this.overlay.scrollStrategies.reposition();
-        const overlayRef = this.overlay.create({
-            positionStrategy,
-            scrollStrategy,
-            hasBackdrop: true,
-            backdropClass: "my-backdrop",
-        });
-        this.overlayRef = overlayRef;
-        overlayRef.detachments().subscribe(() => {
-            this.renderer.removeClass(this.nativeElement, "elevate");
-            this.renderer.removeAttribute(this.nativeElement, "id");
-        });
-        overlayRef.attach(this.portal);
-        this.renderer.addClass(this.nativeElement, "elevate");
-        this.renderer.setAttribute(this.nativeElement, "id", "onboarding-active");
-        overlayRef.backdropClick().subscribe(() => this.hideOverlay());
-    }
+  public showOverlay() {
+    const positionStrategy = this.overlay
+      .position()
+      .flexibleConnectedTo(this.nativeElement)
+      .withPositions([
+        { originX: "start", originY: "center", overlayX: "end", overlayY: "center", offsetX: -10 },
+        { originX: "end", originY: "center", overlayX: "start", overlayY: "center", offsetX: 10 },
+        { originX: "center", originY: "bottom", overlayX: "center", overlayY: "top", offsetY: 10 },
+      ])
+      .withGrowAfterOpen();
+    const scrollStrategy = this.overlay.scrollStrategies.reposition();
+    const overlayRef = this.overlay.create({
+      positionStrategy,
+      scrollStrategy,
+      hasBackdrop: true,
+      backdropClass: "my-backdrop",
+    });
+    this.overlayRef = overlayRef;
+    overlayRef.detachments().subscribe(() => {
+      this.renderer.removeClass(this.nativeElement, "elevate");
+      this.renderer.removeAttribute(this.nativeElement, "id");
+    });
+    overlayRef.attach(this.portal);
+    this.renderer.addClass(this.nativeElement, "elevate");
+    this.renderer.setAttribute(this.nativeElement, "id", "onboarding-active");
+    overlayRef.backdropClick().subscribe(() => this.hideOverlay());
+  }
 
-    public hideOverlay() {
-        if (this.overlayRef && this.overlayRef.hasAttached) {
-            this.overlayService.wasClosed(this._id);
-            this.overlayRef.dispose();
-            this.closed.emit();
-        }
+  public hideOverlay() {
+    if (this.overlayRef && this.overlayRef.hasAttached) {
+      this.overlayService.wasClosed(this._id);
+      this.overlayRef.dispose();
+      this.closed.emit();
     }
+  }
 
-    ngOnDestroy() {
-        this.hideOverlay();
-        this.overlayService.destroyOverlay(this);
-    }
+  ngOnDestroy() {
+    this.hideOverlay();
+    this.overlayService.destroyOverlay(this);
+  }
 }
diff --git a/src/app/components/test/test.component.css b/src/app/components/test/test.component.css
index 597433e..d9ce577 100644
--- a/src/app/components/test/test.component.css
+++ b/src/app/components/test/test.component.css
@@ -1,4 +1,4 @@
 .button-row button,
 .button-row a {
-    margin-right: 8px;
-}
\ No newline at end of file
+  margin-right: 8px;
+}
diff --git a/src/app/components/test/test.component.html b/src/app/components/test/test.component.html
index c4bb92d..361fd2c 100644
--- a/src/app/components/test/test.component.html
+++ b/src/app/components/test/test.component.html
@@ -1,39 +1,36 @@
 <mat-card>
-
-    <mat-card-title #title>Onboarding Example</mat-card-title>
-    <app-my-overlay [connectedTo]="title" text="We can also use it on text." id="4"></app-my-overlay>
-    <mat-card-content>
-        Here is an example of a card with actions that should be explained to new users.
-    </mat-card-content>
-    <mat-card-actions class="button-row">
-        <button mat-flat-button #button1>Basic</button>
-        <app-my-overlay [connectedTo]="button1" text="Use this button to do basic stuff." id="1"></app-my-overlay>
-        <button mat-flat-button color="accent" #button2>Link</button>
-        <app-my-overlay [connectedTo]="button2" text="Use this button to link to stuff." id="2"></app-my-overlay>
-        and here we have enough space to the left
-        <button mat-flat-button color="warn" #button3>Delete</button>
-        <app-my-overlay [connectedTo]="button3" text="Use this button to delete stuff." id="3"></app-my-overlay>
-    </mat-card-actions>
+  <mat-card-title #title>Onboarding Example</mat-card-title>
+  <app-my-overlay [connectedTo]="title" text="We can also use it on text." id="4"></app-my-overlay>
+  <mat-card-content>
+    Here is an example of a card with actions that should be explained to new users.
+  </mat-card-content>
+  <mat-card-actions class="button-row">
+    <button mat-flat-button #button1>Basic</button>
+    <app-my-overlay [connectedTo]="button1" text="Use this button to do basic stuff." id="1"></app-my-overlay>
+    <button mat-flat-button color="accent" #button2>Link</button>
+    <app-my-overlay [connectedTo]="button2" text="Use this button to link to stuff." id="2"></app-my-overlay>
+    and here we have enough space to the left
+    <button mat-flat-button color="warn" #button3>Delete</button>
+    <app-my-overlay [connectedTo]="button3" text="Use this button to delete stuff." id="3"></app-my-overlay>
+  </mat-card-actions>
 </mat-card>
-<br><br>
+<br /><br />
 <button mat-icon-button #button5><mat-icon>delete</mat-icon></button>
 <app-my-overlay [connectedTo]="button5" text="Use this button to delete stuff." id="5"></app-my-overlay>
 
 <div style="background: purple">
-    <button mat-icon-button #button6><mat-icon>delete</mat-icon></button>
-    <app-my-overlay [connectedTo]="button6" text="Use this button to delete stuff." id="6"></app-my-overlay>
+  <button mat-icon-button #button6><mat-icon>delete</mat-icon></button>
+  <app-my-overlay [connectedTo]="button6" text="Use this button to delete stuff." id="6"></app-my-overlay>
 
-    <p #text>Here we have text with background</p>
-    <app-my-overlay [connectedTo]="text" text="Use this button to delete stuff." id="7"></app-my-overlay>
-    <br>
+  <p #text>Here we have text with background</p>
+  <app-my-overlay [connectedTo]="text" text="Use this button to delete stuff." id="7"></app-my-overlay>
+  <br />
 </div>
 
-
 <div align="center">
-    <button mat-raised-button (click)="restartOnboarding()">Restart Onboarding</button>
+  <button mat-raised-button (click)="restartOnboarding()">Restart Onboarding</button>
 </div>
 
-
 <!-- Copyright 2018 Google Inc. All Rights Reserved.
     Use of this source code is governed by an MIT-style license that
-    can be found in the LICENSE file at http://angular.io/license -->
\ No newline at end of file
+    can be found in the LICENSE file at http://angular.io/license -->
diff --git a/src/app/components/test/test.component.spec.ts b/src/app/components/test/test.component.spec.ts
index ef4e38c..7cfcf0c 100644
--- a/src/app/components/test/test.component.spec.ts
+++ b/src/app/components/test/test.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { TestComponent } from './test.component';
+import { TestComponent } from "./test.component";
 
-describe('TestComponent', () => {
+describe("TestComponent", () => {
   let component: TestComponent;
   let fixture: ComponentFixture<TestComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ TestComponent ]
-    })
-    .compileComponents();
+      declarations: [TestComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('TestComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/test/test.component.ts b/src/app/components/test/test.component.ts
index 56a1295..23ad629 100644
--- a/src/app/components/test/test.component.ts
+++ b/src/app/components/test/test.component.ts
@@ -1,21 +1,21 @@
 import { Component, AfterViewInit } from "@angular/core";
 import { OverlayServiceService } from "src/app/services/overlay-service.service";
 @Component({
-    selector: "app-test",
-    templateUrl: "./test.component.html",
-    styleUrls: ["./test.component.css"],
+  selector: "app-test",
+  templateUrl: "./test.component.html",
+  styleUrls: ["./test.component.css"],
 })
 export class TestComponent implements AfterViewInit {
-    isActive1 = true;
-    isActive2 = false;
+  isActive1 = true;
+  isActive2 = false;
 
-    constructor(private service: OverlayServiceService) {}
+  constructor(private service: OverlayServiceService) {}
 
-    ngAfterViewInit() {
-        this.service.showOverlay(1);
-    }
+  ngAfterViewInit() {
+    this.service.showOverlay(1);
+  }
 
-    restartOnboarding() {
-        this.service.showOverlay(1);
-    }
+  restartOnboarding() {
+    this.service.showOverlay(1);
+  }
 }
diff --git a/src/app/components/trial-component/trial-component.component.html b/src/app/components/trial-component/trial-component.component.html
index 810ca6b..019c346 100644
--- a/src/app/components/trial-component/trial-component.component.html
+++ b/src/app/components/trial-component/trial-component.component.html
@@ -4,4 +4,4 @@
     <video controls="" *ngIf="url">
     <source [src]="sanitize(url)" type="video">
     </video>
-</div> -->
\ No newline at end of file
+</div> -->
diff --git a/src/app/components/trial-component/trial-component.component.spec.ts b/src/app/components/trial-component/trial-component.component.spec.ts
index e3b3175..c40dd5e 100644
--- a/src/app/components/trial-component/trial-component.component.spec.ts
+++ b/src/app/components/trial-component/trial-component.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { TrialComponentComponent } from './trial-component.component';
+import { TrialComponentComponent } from "./trial-component.component";
 
-describe('TrialComponentComponent', () => {
+describe("TrialComponentComponent", () => {
   let component: TrialComponentComponent;
   let fixture: ComponentFixture<TrialComponentComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ TrialComponentComponent ]
-    })
-    .compileComponents();
+      declarations: [TrialComponentComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('TrialComponentComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/trial-component/trial-component.component.ts b/src/app/components/trial-component/trial-component.component.ts
index bd76dff..ec87b2a 100644
--- a/src/app/components/trial-component/trial-component.component.ts
+++ b/src/app/components/trial-component/trial-component.component.ts
@@ -1,78 +1,73 @@
-import { Component, OnInit } from '@angular/core';
+import { Component, OnInit } from "@angular/core";
 declare var $: any;
-import * as RecordRTC from 'recordrtc';
-import { DomSanitizer } from '@angular/platform-browser';
+import * as RecordRTC from "recordrtc";
+import { DomSanitizer } from "@angular/platform-browser";
 
 @Component({
-  selector: 'app-trial-component',
-  templateUrl: './trial-component.component.html',
-  styleUrls: ['./trial-component.component.css']
+  selector: "app-trial-component",
+  templateUrl: "./trial-component.component.html",
+  styleUrls: ["./trial-component.component.css"],
 })
 export class TrialComponentComponent implements OnInit {
+  //   title = 'micRecorder';
+  // //Lets declare Record OBJ
+  // record;
+  // //Will use this flag for toggeling recording
+  // recording = false;
+  // //URL of Blob
+  // url;
+  // error;
+  // constructor(private domSanitizer: DomSanitizer) {}
+  // sanitize(url: string) {
+  // return this.domSanitizer.bypassSecurityTrustUrl(url);
+  // }
+  // /**
+  // * Start recording.
+  // */
+  // initiateRecording() {
+  // this.recording = true;
+  // let mediaConstraints = {
+  // video: true,
+  // audio: true
+  // };
+  // navigator.mediaDevices.getUserMedia(mediaConstraints).then(this.successCallback.bind(this), this.errorCallback.bind(this));
+  // }
+  // /**
+  // * Will be called automatically.
+  // */
+  // successCallback(stream) {
+  // var options = {
+  // mimeType: "video/webm",
+  // numberOfAudioChannels: 1,
+  // // sampleRate: 16000,
+  // };
+  // //Start Actuall Recording
+  // var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
+  // this.record = new StereoAudioRecorder(stream, options);
+  // this.record.record();
+  // }
+  // /**
+  // * Stop recording.
+  // */
+  // stopRecording() {
+  // this.recording = false;
+  // this.record.stop(this.processRecording.bind(this));
+  // }
+  // /**
+  // * processRecording Do what ever you want with blob
+  // * @param  {any} blob Blog
+  // */
+  // processRecording(blob) {
+  // this.url = URL.createObjectURL(blob);
+  //
+  //
+  // }
+  // /**
+  // * Process Error.
+  // */
+  // errorCallback(error) {
+  // this.error = 'Can not play audio in your browser';
+  // }
 
-//   title = 'micRecorder';
-// //Lets declare Record OBJ
-// record;
-// //Will use this flag for toggeling recording
-// recording = false;
-// //URL of Blob
-// url;
-// error;
-// constructor(private domSanitizer: DomSanitizer) {}
-// sanitize(url: string) {
-// return this.domSanitizer.bypassSecurityTrustUrl(url);
-// }
-// /**
-// * Start recording.
-// */
-// initiateRecording() {
-// this.recording = true;
-// let mediaConstraints = {
-// video: true,
-// audio: true
-// };
-// navigator.mediaDevices.getUserMedia(mediaConstraints).then(this.successCallback.bind(this), this.errorCallback.bind(this));
-// }
-// /**
-// * Will be called automatically.
-// */
-// successCallback(stream) {
-// var options = {
-// mimeType: "video/webm",
-// numberOfAudioChannels: 1,
-// // sampleRate: 16000,
-// };
-// //Start Actuall Recording
-// var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
-// this.record = new StereoAudioRecorder(stream, options);
-// this.record.record();
-// }
-// /**
-// * Stop recording.
-// */
-// stopRecording() {
-// this.recording = false;
-// this.record.stop(this.processRecording.bind(this));
-// }
-// /**
-// * processRecording Do what ever you want with blob
-// * @param  {any} blob Blog
-// */
-// processRecording(blob) {
-// this.url = URL.createObjectURL(blob);
-// 
-// 
-// }
-// /**
-// * Process Error.
-// */
-// errorCallback(error) {
-// this.error = 'Can not play audio in your browser';
-// }
-
-
-
-  ngOnInit(): void {
-  }
-
+  ngOnInit(): void {}
 }
diff --git a/src/app/components/unpacking-page/unpacking-page.component.css b/src/app/components/unpacking-page/unpacking-page.component.css
index 24eb341..5ba7b67 100644
--- a/src/app/components/unpacking-page/unpacking-page.component.css
+++ b/src/app/components/unpacking-page/unpacking-page.component.css
@@ -1,166 +1,164 @@
 .divClass {
-    padding-top: 10px;
+  padding-top: 10px;
 }
 
 .example-card {
-    /* max-height: 700px; */
-    /* width: 1000px; */
-    /* height: 570px; */
-    position: absolute;
-    top: 55%;
-    left: 50%;
-    transform: translate(-50%, -50%);
-    width: 80%;
+  /* max-height: 700px; */
+  /* width: 1000px; */
+  /* height: 570px; */
+  position: absolute;
+  top: 55%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+  width: 80%;
 }
 
 ::ng-deep .mat-tab-body-content {
-    max-height: 500px !important;
+  max-height: 500px !important;
 }
 
 .table-responsive {
-    height: 310px;
+  height: 310px;
 }
 
 .div-wrap {
-    width: 500px;
+  width: 500px;
 }
 
 p {
-    /* font-family: Georgia, 'Times New Roman', Times, serif; */
-    font-family: 'Loto', sans-serif;
-    font-size: 15px;
+  /* font-family: Georgia, 'Times New Roman', Times, serif; */
+  font-family: "Loto", sans-serif;
+  font-size: 15px;
 }
 
 h3 {
-    /* font-family: Georgia, 'Times New Roman', Times, serif; */
-    font-family: 'Loto', sans-serif;
-    margin-bottom: 40px;
+  /* font-family: Georgia, 'Times New Roman', Times, serif; */
+  font-family: "Loto", sans-serif;
+  margin-bottom: 40px;
 }
 
 .mat-card {
-    background-color: #edf6f9;
+  background-color: #edf6f9;
 }
 
 .inputField {
-    width: 100%;
+  width: 100%;
 }
 
-
 /* Chrome, Safari, Edge, Opera */
 
 input::-webkit-outer-spin-button,
 input::-webkit-inner-spin-button {
-    -webkit-appearance: none;
-    margin: 0;
+  -webkit-appearance: none;
+  margin: 0;
 }
 
-
 /* Firefox */
 
-input[type=number] {
-    -moz-appearance: textfield;
+input[type="number"] {
+  -moz-appearance: textfield;
 }
 
 ::ng-deep .mat-tab-header {
-    display: none !important;
+  display: none !important;
 }
 
 p {
-    text-align: justify;
-    text-justify: inter-word;
+  text-align: justify;
+  text-justify: inter-word;
 }
 
 h2 {
-    /* font-family: 'Loto', sans-serif; */
-    font-family: 'Loto', sans-serif;
+  /* font-family: 'Loto', sans-serif; */
+  font-family: "Loto", sans-serif;
 }
 
 mat-slider {
-    width: 350px;
+  width: 350px;
 }
 
 .mat-slider-thumb-label {
-    transform: rotate(45deg) !important;
-    border-radius: 50% 50% 0 !important;
+  transform: rotate(45deg) !important;
+  border-radius: 50% 50% 0 !important;
 }
 
 .mat-slider-thumb {
-    transform: scale(0) !important;
+  transform: scale(0) !important;
 }
 
 .mat-slider-thumb-label-text {
-    opacity: 1 !important;
+  opacity: 1 !important;
 }
 
 .advice {
-    border: none;
-    background: none;
+  border: none;
+  background: none;
 }
 
 ::ng-deep .mat-checkbox-layout {
-    white-space: normal !important;
+  white-space: normal !important;
 }
 
 mat-form-field {
-    width: 100%;
-    height: 5%;
+  width: 100%;
+  height: 5%;
 }
 
-::ng-deep .mat-form-field-flex>.mat-form-field-infix {
-    padding: 0.4em 0px !important;
+::ng-deep .mat-form-field-flex > .mat-form-field-infix {
+  padding: 0.4em 0px !important;
 }
 
 ::ng-deep .mat-form-field-label-wrapper {
-    top: -1.5em;
+  top: -1.5em;
 }
 
-::ng-deep .mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label {
-    transform: translateY(-1.1em) scale(.75);
-    width: 133.33333%;
-    color: black !important;
-    border: black;
+::ng-deep
+  .mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float
+  .mat-form-field-label {
+  transform: translateY(-1.1em) scale(0.75);
+  width: 133.33333%;
+  color: black !important;
+  border: black;
 }
 
 .example-h2 {
-    margin: 10px;
+  margin: 10px;
 }
 
 .example-section {
-    display: flex;
-    align-content: center;
-    align-items: center;
-    height: 60px;
+  display: flex;
+  align-content: center;
+  align-items: center;
+  height: 60px;
 }
 
 .example-margin {
-    margin: 0 10px;
+  margin: 0 10px;
 }
 
 .imgClass {
-    width: 30px;
-    height: 30px
+  width: 30px;
+  height: 30px;
 }
 
 .zoom {
-    transition: transform .2s;
-    border: none;
-    background: none;
-    /* Animation */
-    margin: 0 auto;
+  transition: transform 0.2s;
+  border: none;
+  background: none;
+  /* Animation */
+  margin: 0 auto;
 }
 
 .zoom:hover {
-    transform: scale(1.5);
-    /* (150% zoom - Note: if the zoom is too large, it will go outside of the viewport) */
+  transform: scale(1.5);
+  /* (150% zoom - Note: if the zoom is too large, it will go outside of the viewport) */
 }
 
-
 ::ng-deep .mat-tooltip {
-    font-size: 15px !important;
+  font-size: 15px !important;
 }
 
-
 /* 
 p {
     font-family: 'roboto';
-} */
\ No newline at end of file
+} */
diff --git a/src/app/components/unpacking-page/unpacking-page.component.html b/src/app/components/unpacking-page/unpacking-page.component.html
index d9dafb4..24716c5 100644
--- a/src/app/components/unpacking-page/unpacking-page.component.html
+++ b/src/app/components/unpacking-page/unpacking-page.component.html
@@ -1,564 +1,876 @@
 <div class="divClass">
-    <mat-card class="example-card ">
-
-        <mat-card-content>
-            <div style="margin-bottom: 10px; margin-left: -10px;">
-                <mat-progress-bar *ngIf="selectedIndex > 0 && selectedIndex <6" class="example-margin" style="width: 100%;" [mode]="mode" [value]="selectedIndex*20" [bufferValue]="bufferValue">
-                </mat-progress-bar>
-            </div>
-
-
-            <mat-tab-group [selectedIndex]="selectedIndex" style="margin: 0px;">
-                <mat-tab label="Second">
-                    <h2>Cultural Proficiency Continuum Q-Sort: Reacting to interactions that take place within Majority-Minority U.S. PreK-12 Schools
-
-                    </h2>
-                    <p style="font-size: 24px;"><span style="font-weight: bold;">Directions: </span> In the upcoming activity, you will engage with 30 vignettes situated in five categories that illustrate culturally proficient interactions that have taken place in U.S. public schools.
-                        Your task is to assign a level of reaction using numbers 1 - 6 to each vignette within each category. Specifically, you are to assign the number 6 to the vignette that evokes the highest level of reaction from you, 5 to the vignette
-                        that evokes the next highest level of reaction from you, and so on until you have assigned the number 1 to the vignette that evokes the least level of reaction from you.
-                    </p>
-                    <p style="font-size: 20px;">
-                        <span style="font-weight: bold;">    Note: </span> There are no correct or wrong ways to react to vignettes; your level of reaction (negative or positive) is unique to you. If you need to see the directions after beginning the Q-Sort, click the <span style="color: #4050b5;" color="primary"><mat-icon>info</mat-icon></span> in the upper right-hand corner. 
-
-
-
-                    </p>
-                </mat-tab>
-                <mat-tab label="Third">
-                    <button class="advice" (click)="openWordDialog('Attitude')">
-                         <span><h2><u>Attitude</u></h2></span></button>
-                    <button style="float: right;" mat-icon-button color="primary" aria-label="Example icon button with a delete icon" (click)="helpDialog('Attitude')">
-                            <mat-icon>info</mat-icon>
-                          </button>
-                    <p style="color: #4050b5;">*Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number only once. Click on the word "Attitude" and respond to the prompt.</p>
-                    <form [formGroup]="attitudeForm">
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="A" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv>{{attitude['question1']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="B" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv1>{{attitude['question2']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="C" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv2>{{attitude['question3']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="D" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv3>{{attitude['question4']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="E" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv4>{{attitude['question5']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="F" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv5>{{attitude['question6']}}</p>
-                            </div>
-                        </div>
-                    </form>
-
-
-                    <p style="margin-top: 20px; font-size: 15px;"> The singular pronouns: “their” or “they” are used as gender-neutral pronouns.
-                    </p>
-
-
-
-                </mat-tab>
-                <mat-tab label="Fourth">
-                    <button class="advice" (click)="openWordDialog('Empathy')">
-                        <span><h2><u>Empathy</u></h2></span></button>
-                    <button style="float: right;" mat-icon-button color="primary" aria-label="Example icon button with a delete icon" (click)="helpDialog('Empathy')">
-                            <mat-icon>info</mat-icon>
-                          </button>
-                    <p style="color: #4050b5;">*Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number only once. Click on the word "Empathy" and respond to the prompt.
-                    </p>
-
-                    <form [formGroup]="attitudeForm">
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="A" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv6>{{empathy['question1']}}</p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="B" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv7>{{empathy['question2']}}
-                                </p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="C" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv8>{{empathy['question3']}}</p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="D" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv9>{{empathy['question4']}}</p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="E" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv10>{{empathy['question5']}}</p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="F" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv11>{{empathy['question6']}}</p>
-                            </div>
-                        </div>
-                    </form>
-
-                </mat-tab>
-
-                <mat-tab label="Fourth">
-                    <button class="advice" (click)="openWordDialog('Policy')">
-                        <span><h2><u>Policy</u></h2></span></button>
-                    <button style="float: right;" mat-icon-button color="primary" aria-label="Example icon button with a delete icon" (click)="helpDialog('Policy')">
-                            <mat-icon>info</mat-icon>
-                          </button>
-                    <p style="color: #4050b5;">*Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number only once. Click on the word "Policy" and respond to the prompt.</p>
-
-                    <form [formGroup]="attitudeForm">
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="A" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv12>{{policy['question1']}}</p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="B" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv13>{{policy['question2']}}
-
-                                </p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="C" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv14>{{policy['question3']}}
-                                </p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="D" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv15>{{policy['question4']}}
-                                </p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="E" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv16>{{policy['question5']}}</p>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" formControlName="F" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv17>{{policy['question6']}} </p>
-                            </div>
-                        </div>
-                    </form>
-                </mat-tab>
-
-                <mat-tab label="Fifth">
-                    <button class="advice" (click)="openWordDialog('Professionalism')">
-                        <span><h2><u>Professionalism</u></h2></span></button>
-                    <button style="float: right;" mat-icon-button color="primary" aria-label="Example icon button with a delete icon" (click)="helpDialog('Professionalism')">
-                            <mat-icon>info</mat-icon>
-                          </button>
-                    <p style="color: #4050b5;">*Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number only once. Click on the word "Professionalism" and respond to the prompt.</p>
-                    <form [formGroup]="attitudeForm">
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="A" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv18>{{professionalism['question1']}}
-                                </p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="B" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv19>{{professionalism['question2']}}
-                                </p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="C" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv20>{{professionalism['question3']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="D" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv21>{{professionalism['question4']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="E" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv22>{{professionalism['question5']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="F" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv23>{{professionalism['question6']}} </p>
-                            </div>
-                        </div>
-
-                    </form>
-                </mat-tab>
-
-                <mat-tab label="Sixth">
-                    <button class="advice" (click)="openWordDialog('Teaching Practice')">
-                        <span><h2><u>Teaching Practice</u></h2></span></button>
-                    <button style="float: right;" mat-icon-button color="primary" aria-label="Example icon button with a delete icon" (click)="helpDialog('Teaching Practice')">
-                            <mat-icon>info</mat-icon>
-                          </button>
-                    <p style="color: #4050b5;">*Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number only once. Click on the word "Teaching Practice" and respond to the prompt.</p>
-                    <form [formGroup]="attitudeForm">
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="A" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv24> {{teachingPractice['question1']}}</p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="B" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv25>{{teachingPractice['question2']}}
-                                </p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="C" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv26>{{teachingPractice['question3']}}
-                                </p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="D" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv27>{{teachingPractice['question4']}}
-                                </p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="E" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv28>{{teachingPractice['question5']}}
-                                </p>
-                            </div>
-                        </div>
-
-                        <div class="row">
-                            <div class="col-1">
-                                <mat-form-field appearance="outline">
-                                    <input formControlName="F" onKeyPress="if(this.value.length==1) return false;" type="number" matInput placeholder="" required>
-                                </mat-form-field>
-                            </div>
-
-                            <div class="col-11">
-                                <p #changeDiv29>{{teachingPractice['question6']}}</p>
-                            </div>
-                        </div>
-                    </form>
-                </mat-tab>
-                <mat-tab label="Seventh">
-                    <h2>Cultural Proficiency Continuum Q-Sort: Unpacking your Reactions
-                    </h2>
-                    <!-- <p>Below are the results of the CPCQ forms filled by you. The numbers that you assigned to each vignette within each of the five categories to the right of the corresponding letter—A, B, C, D, E, F—in the spaces are provided below in
+  <mat-card class="example-card">
+    <mat-card-content>
+      <div style="margin-bottom: 10px; margin-left: -10px">
+        <mat-progress-bar
+          *ngIf="selectedIndex > 0 && selectedIndex < 6"
+          class="example-margin"
+          style="width: 100%"
+          [mode]="mode"
+          [value]="selectedIndex * 20"
+          [bufferValue]="bufferValue"
+        >
+        </mat-progress-bar>
+      </div>
+
+      <mat-tab-group [selectedIndex]="selectedIndex" style="margin: 0px">
+        <mat-tab label="Second">
+          <h2>
+            Cultural Proficiency Continuum Q-Sort: Reacting to interactions that take place within Majority-Minority
+            U.S. PreK-12 Schools
+          </h2>
+          <p style="font-size: 24px">
+            <span style="font-weight: bold">Directions: </span> In the upcoming activity, you will engage with 30
+            vignettes situated in five categories that illustrate culturally proficient interactions that have taken
+            place in U.S. public schools. Your task is to assign a level of reaction using numbers 1 - 6 to each
+            vignette within each category. Specifically, you are to assign the number 6 to the vignette that evokes the
+            highest level of reaction from you, 5 to the vignette that evokes the next highest level of reaction from
+            you, and so on until you have assigned the number 1 to the vignette that evokes the least level of reaction
+            from you.
+          </p>
+          <p style="font-size: 20px">
+            <span style="font-weight: bold"> Note: </span> There are no correct or wrong ways to react to vignettes;
+            your level of reaction (negative or positive) is unique to you. If you need to see the directions after
+            beginning the Q-Sort, click the
+            <span style="color: #4050b5" color="primary"><mat-icon>info</mat-icon></span> in the upper right-hand
+            corner.
+          </p>
+        </mat-tab>
+        <mat-tab label="Third">
+          <button class="advice" (click)="openWordDialog('Attitude')">
+            <span
+              ><h2><u>Attitude</u></h2></span
+            >
+          </button>
+          <button
+            style="float: right"
+            mat-icon-button
+            color="primary"
+            aria-label="Example icon button with a delete icon"
+            (click)="helpDialog('Attitude')"
+          >
+            <mat-icon>info</mat-icon>
+          </button>
+          <p style="color: #4050b5">
+            *Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number
+            only once. Click on the word "Attitude" and respond to the prompt.
+          </p>
+          <form [formGroup]="attitudeForm">
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="A"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv>{{ attitude["question1"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="B"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv1>{{ attitude["question2"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="C"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv2>{{ attitude["question3"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="D"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv3>{{ attitude["question4"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="E"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv4>{{ attitude["question5"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="F"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv5>{{ attitude["question6"] }}</p>
+              </div>
+            </div>
+          </form>
+
+          <p style="margin-top: 20px; font-size: 15px">
+            The singular pronouns: “their” or “they” are used as gender-neutral pronouns.
+          </p>
+        </mat-tab>
+        <mat-tab label="Fourth">
+          <button class="advice" (click)="openWordDialog('Empathy')">
+            <span
+              ><h2><u>Empathy</u></h2></span
+            >
+          </button>
+          <button
+            style="float: right"
+            mat-icon-button
+            color="primary"
+            aria-label="Example icon button with a delete icon"
+            (click)="helpDialog('Empathy')"
+          >
+            <mat-icon>info</mat-icon>
+          </button>
+          <p style="color: #4050b5">
+            *Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number
+            only once. Click on the word "Empathy" and respond to the prompt.
+          </p>
+
+          <form [formGroup]="attitudeForm">
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="A"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv6>{{ empathy["question1"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="B"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv7>{{ empathy["question2"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="C"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv8>{{ empathy["question3"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="D"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv9>{{ empathy["question4"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="E"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv10>{{ empathy["question5"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="F"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv11>{{ empathy["question6"] }}</p>
+              </div>
+            </div>
+          </form>
+        </mat-tab>
+
+        <mat-tab label="Fourth">
+          <button class="advice" (click)="openWordDialog('Policy')">
+            <span
+              ><h2><u>Policy</u></h2></span
+            >
+          </button>
+          <button
+            style="float: right"
+            mat-icon-button
+            color="primary"
+            aria-label="Example icon button with a delete icon"
+            (click)="helpDialog('Policy')"
+          >
+            <mat-icon>info</mat-icon>
+          </button>
+          <p style="color: #4050b5">
+            *Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number
+            only once. Click on the word "Policy" and respond to the prompt.
+          </p>
+
+          <form [formGroup]="attitudeForm">
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="A"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv12>{{ policy["question1"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="B"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv13>{{ policy["question2"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="C"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv14>{{ policy["question3"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="D"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv15>{{ policy["question4"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="E"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv16>{{ policy["question5"] }}</p>
+              </div>
+            </div>
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    formControlName="F"
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv17>{{ policy["question6"] }}</p>
+              </div>
+            </div>
+          </form>
+        </mat-tab>
+
+        <mat-tab label="Fifth">
+          <button class="advice" (click)="openWordDialog('Professionalism')">
+            <span
+              ><h2><u>Professionalism</u></h2></span
+            >
+          </button>
+          <button
+            style="float: right"
+            mat-icon-button
+            color="primary"
+            aria-label="Example icon button with a delete icon"
+            (click)="helpDialog('Professionalism')"
+          >
+            <mat-icon>info</mat-icon>
+          </button>
+          <p style="color: #4050b5">
+            *Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number
+            only once. Click on the word "Professionalism" and respond to the prompt.
+          </p>
+          <form [formGroup]="attitudeForm">
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="A"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv18>{{ professionalism["question1"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="B"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv19>{{ professionalism["question2"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="C"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv20>{{ professionalism["question3"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="D"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv21>{{ professionalism["question4"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="E"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv22>{{ professionalism["question5"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="F"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv23>{{ professionalism["question6"] }}</p>
+              </div>
+            </div>
+          </form>
+        </mat-tab>
+
+        <mat-tab label="Sixth">
+          <button class="advice" (click)="openWordDialog('Teaching Practice')">
+            <span
+              ><h2><u>Teaching Practice</u></h2></span
+            >
+          </button>
+          <button
+            style="float: right"
+            mat-icon-button
+            color="primary"
+            aria-label="Example icon button with a delete icon"
+            (click)="helpDialog('Teaching Practice')"
+          >
+            <mat-icon>info</mat-icon>
+          </button>
+          <p style="color: #4050b5">
+            *Enter your level of reaction to each vignette using numbers 1 - 6 in the text box below; use each number
+            only once. Click on the word "Teaching Practice" and respond to the prompt.
+          </p>
+          <form [formGroup]="attitudeForm">
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="A"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv24>{{ teachingPractice["question1"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="B"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv25>{{ teachingPractice["question2"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="C"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv26>{{ teachingPractice["question3"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="D"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv27>{{ teachingPractice["question4"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="E"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv28>{{ teachingPractice["question5"] }}</p>
+              </div>
+            </div>
+
+            <div class="row">
+              <div class="col-1">
+                <mat-form-field appearance="outline">
+                  <input
+                    formControlName="F"
+                    onKeyPress="if(this.value.length==1) return false;"
+                    type="number"
+                    matInput
+                    placeholder=""
+                    required
+                  />
+                </mat-form-field>
+              </div>
+
+              <div class="col-11">
+                <p #changeDiv29>{{ teachingPractice["question6"] }}</p>
+              </div>
+            </div>
+          </form>
+        </mat-tab>
+        <mat-tab label="Seventh">
+          <h2>Cultural Proficiency Continuum Q-Sort: Unpacking your Reactions</h2>
+          <!-- <p>Below are the results of the CPCQ forms filled by you. The numbers that you assigned to each vignette within each of the five categories to the right of the corresponding letter—A, B, C, D, E, F—in the spaces are provided below in
                         the rating guide. Ideally, the final results in each row would read 1, 2, 3, 4, 5, 6, but because Cultural Proficiency is a fluid and dynamic phenomenon, these numbers may not align in numerical order. The final step in your analysis
                         is to locate the culturally proficient interactions, which are 2 or more points higher or lower than the ideal number by each letter. For example, if a row reads 2, 1, 5, 4, 6, 3, then the numbers 5 and 3 are bold and clickable.
                         Each number you bolded in each row represents an opportunity for inquiry and Dialogic for that particular culturally proficient behavior. Please click on the bolded numbers to unpack your views. Remember, this is not a judgment,
                         but rather an opportunity for you to make inquiries and have a conversation about the sociocultural interactions that take place within majority-minority US Prek-12 schools. </p> -->
-                    <p><span><b>Directions: </b> Each bolded number represents an opportunity for you to unpack your reaction to the vignette and the corresponding culturally proficient interaction. Above each column is a link to the definition for each culturally proficient interaction; review the definitions before unpacking your reactions. After, begin unpacking your reactions by clicking each of the items highlighted yellow. You can also click other bolded items not highlighted yellow if you wish to unpack additional vignettes.
-
-                    </span></p>
-                    <div class="table-responsive">
-                        <table class="table">
-                            <thead class="thead-dark" style="font-size: 15px;">
-                                <tr>
-                                    <th></th>
-                                    <th matTooltip="When individuals or policies seek to eliminate all vestiges of others culture in educational and/or social contexts (Lindsey, Robins, & Terrell, 2009). ">Cultural Destructiveness</th>
-                                    <th matTooltip="Trivializing and stereotyping other cultures; seeking to make the cultures of others appear [incongruent with and] inferior to the dominant [or host] culture [within educational and/or social context] ">Cultural Incapacity</th>
-                                    <th matTooltip="Not noticing or acknowledging the culture of others and ignoring the [diverse] experiences of cultures within [educational and/or social context]; treating everyone in the system the same way without recognizing the needs that require differentiated [approaches] ">Cultural Blindness</th>
-                                    <th matTooltip="The awareness/ability to identify when an individual/institution does not know how to effectively engage families, students, and teachers in a culturally diverse educational and/or social context ">
-                                        Cultural Pre-Competence </th>
-                                    <th matTooltip="The practical/institutional alignment of an individual’s personal values and behaviors which are in agreement with educational policies and practices that honors cultures that are new, different, and/or a minority. Such an environment displays healthy and productive interactions that denote solidarity in the educational context. However, this level of the Cultural Proficiency Continuum may or may not be limited to educational context ">Cultural Competence</th>
-                                    <th matTooltip="Espouses a vision that educational and social spaces are agents of social change and a model of a just democracy. These individual/institutions learn, teach, research, advocate, and champion for members of diverse and minoritized cultural groups. This level of the Cultural Proficiency Continuum is displayed and espoused in a variety of social constructions and contexts: educational, gender, professional, race, religious, and sexuality ">Cultural Proficiency</th>
-                                </tr>
-                            </thead>
-                            <tbody *ngFor="let row of responsesArray; let i = index">
-                                <tr>
-                                    <td> {{row[7]}} </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[0][1] == 'colorbold'" (click)="openDialog(i,0,row[6])">
-                                        {{row[0][0]}}
-                                    </td>
-                                    <td style="font-weight: bold;" *ngIf="row[0][1] == 'bold'" (click)="openDialog(i,0,row[6])">
-                                        {{row[0][0]}}
-                                    </td>
-                                    <td  *ngIf="row[0][1] == 'nobold'">
-                                        {{row[0][0]}}
-                                    </td>
-                                    <td  *ngIf="row[0][1] == 'greencolorbold'" style="font-weight: bold; background-color:#2a9d8f;">
-                                        {{row[0][0]}}
-                                    </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[1][1] == 'colorbold'" (click)="openDialog(i,1,row[6])">
-                                        {{row[1][0]}}
-                                    </td>
-                                    <td style="font-weight: bold;" *ngIf="row[1][1] == 'bold'" (click)="openDialog(i,1,row[6])">
-                                        {{row[1][0]}}
-                                    </td>
-                                    <td  *ngIf="row[1][1] == 'nobold'">
-                                        {{row[1][0]}}
-                                    </td>
-                                    <td  *ngIf="row[1][1] == 'greencolorbold'" style="font-weight: bold; background-color:#2a9d8f;">
-                                        {{row[1][0]}}
-                                    </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[2][1] == 'colorbold'" (click)="openDialog(i,2,row[6])">
-                                        {{row[2][0]}}
-                                    </td>
-                                    <td style="font-weight: bold;" *ngIf="row[2][1] == 'bold'" (click)="openDialog(i,2,row[6])">
-                                        {{row[2][0]}}
-                                    </td>
-                                    <td  *ngIf="row[2][1] == 'nobold'">
-                                        {{row[2][0]}}
-                                    </td>
-                                    <td  *ngIf="row[2][1] == 'greencolorbold'" style="font-weight: bold; background-color:#2a9d8f;">
-                                        {{row[2][0]}}
-                                    </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[3][1] == 'colorbold'" (click)="openDialog(i,3,row[6])">
-                                        {{row[3][0]}}
-                                    </td>
-                                    <td style="font-weight: bold;" *ngIf="row[3][1] == 'bold'" (click)="openDialog(i,3,row[6])">
-                                        {{row[3][0]}}
-                                    </td>
-                                    <td  *ngIf="row[3][1] == 'nobold'">
-                                        {{row[3][0]}}
-                                    </td>
-                                    <td  *ngIf="row[3][1] == 'greencolorbold'" style="font-weight: bold; background-color:#2a9d8f;">
-                                        {{row[3][0]}}
-                                    </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[4][1] == 'colorbold'" (click)="openDialog(i,4,row[6])">
-                                        {{row[4][0]}}
-                                    </td>
-                                    <td style="font-weight: bold;" *ngIf="row[4][1] == 'bold'" (click)="openDialog(i,4,row[6])">
-                                        {{row[4][0]}}
-                                    </td>
-                                    <td  *ngIf="row[4][1] == 'nobold'">
-                                        {{row[4][0]}}
-                                    </td>
-                                    <td  *ngIf="row[4][1] == 'greencolorbold'" style="font-weight: bold; background-color:#2a9d8f;">
-                                        {{row[4][0]}}
-                                    </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="row[5][1] == 'colorbold'" (click)="openDialog(i,5,row[6])">
-                                        {{row[5][0]}}
-                                    </td>
-                                    <td style="font-weight: bold;" *ngIf="row[5][1] == 'bold'" (click)="openDialog(i,5,row[6])">
-                                        {{row[5][0]}}
-                                    </td>
-                                    <td  *ngIf="row[5][1] == 'nobold'">
-                                        {{row[5][0]}}
-                                    </td>
-                                    <td  *ngIf="row[5][1] == 'greencolorbold'" style="font-weight: bold; background-color:#2a9d8f;">
-                                        {{row[5][0]}}
-                                    </td>
-
-
-
-                                </tr>                                                            
-
-                            </tbody>
-                            <!-- <tbody *ngFor="let row of formValues; let i = index">
+          <p>
+            <span
+              ><b>Directions: </b> Each bolded number represents an opportunity for you to unpack your reaction to the
+              vignette and the corresponding culturally proficient interaction. Above each column is a link to the
+              definition for each culturally proficient interaction; review the definitions before unpacking your
+              reactions. After, begin unpacking your reactions by clicking each of the items highlighted yellow. You can
+              also click other bolded items not highlighted yellow if you wish to unpack additional vignettes.
+            </span>
+          </p>
+          <div class="table-responsive">
+            <table class="table">
+              <thead class="thead-dark" style="font-size: 15px">
+                <tr>
+                  <th></th>
+                  <th
+                    matTooltip="When individuals or policies seek to eliminate all vestiges of others culture in educational and/or social contexts (Lindsey, Robins, & Terrell, 2009). "
+                  >
+                    Cultural Destructiveness
+                  </th>
+                  <th
+                    matTooltip="Trivializing and stereotyping other cultures; seeking to make the cultures of others appear [incongruent with and] inferior to the dominant [or host] culture [within educational and/or social context] "
+                  >
+                    Cultural Incapacity
+                  </th>
+                  <th
+                    matTooltip="Not noticing or acknowledging the culture of others and ignoring the [diverse] experiences of cultures within [educational and/or social context]; treating everyone in the system the same way without recognizing the needs that require differentiated [approaches] "
+                  >
+                    Cultural Blindness
+                  </th>
+                  <th
+                    matTooltip="The awareness/ability to identify when an individual/institution does not know how to effectively engage families, students, and teachers in a culturally diverse educational and/or social context "
+                  >
+                    Cultural Pre-Competence
+                  </th>
+                  <th
+                    matTooltip="The practical/institutional alignment of an individual’s personal values and behaviors which are in agreement with educational policies and practices that honors cultures that are new, different, and/or a minority. Such an environment displays healthy and productive interactions that denote solidarity in the educational context. However, this level of the Cultural Proficiency Continuum may or may not be limited to educational context "
+                  >
+                    Cultural Competence
+                  </th>
+                  <th
+                    matTooltip="Espouses a vision that educational and social spaces are agents of social change and a model of a just democracy. These individual/institutions learn, teach, research, advocate, and champion for members of diverse and minoritized cultural groups. This level of the Cultural Proficiency Continuum is displayed and espoused in a variety of social constructions and contexts: educational, gender, professional, race, religious, and sexuality "
+                  >
+                    Cultural Proficiency
+                  </th>
+                </tr>
+              </thead>
+              <tbody *ngFor="let row of responsesArray; let i = index">
+                <tr>
+                  <td>{{ row[7] }}</td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[0][1] == 'colorbold'"
+                    (click)="openDialog(i, 0, row[6])"
+                  >
+                    {{ row[0][0] }}
+                  </td>
+                  <td style="font-weight: bold" *ngIf="row[0][1] == 'bold'" (click)="openDialog(i, 0, row[6])">
+                    {{ row[0][0] }}
+                  </td>
+                  <td *ngIf="row[0][1] == 'nobold'">
+                    {{ row[0][0] }}
+                  </td>
+                  <td *ngIf="row[0][1] == 'greencolorbold'" style="font-weight: bold; background-color: #2a9d8f">
+                    {{ row[0][0] }}
+                  </td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[1][1] == 'colorbold'"
+                    (click)="openDialog(i, 1, row[6])"
+                  >
+                    {{ row[1][0] }}
+                  </td>
+                  <td style="font-weight: bold" *ngIf="row[1][1] == 'bold'" (click)="openDialog(i, 1, row[6])">
+                    {{ row[1][0] }}
+                  </td>
+                  <td *ngIf="row[1][1] == 'nobold'">
+                    {{ row[1][0] }}
+                  </td>
+                  <td *ngIf="row[1][1] == 'greencolorbold'" style="font-weight: bold; background-color: #2a9d8f">
+                    {{ row[1][0] }}
+                  </td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[2][1] == 'colorbold'"
+                    (click)="openDialog(i, 2, row[6])"
+                  >
+                    {{ row[2][0] }}
+                  </td>
+                  <td style="font-weight: bold" *ngIf="row[2][1] == 'bold'" (click)="openDialog(i, 2, row[6])">
+                    {{ row[2][0] }}
+                  </td>
+                  <td *ngIf="row[2][1] == 'nobold'">
+                    {{ row[2][0] }}
+                  </td>
+                  <td *ngIf="row[2][1] == 'greencolorbold'" style="font-weight: bold; background-color: #2a9d8f">
+                    {{ row[2][0] }}
+                  </td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[3][1] == 'colorbold'"
+                    (click)="openDialog(i, 3, row[6])"
+                  >
+                    {{ row[3][0] }}
+                  </td>
+                  <td style="font-weight: bold" *ngIf="row[3][1] == 'bold'" (click)="openDialog(i, 3, row[6])">
+                    {{ row[3][0] }}
+                  </td>
+                  <td *ngIf="row[3][1] == 'nobold'">
+                    {{ row[3][0] }}
+                  </td>
+                  <td *ngIf="row[3][1] == 'greencolorbold'" style="font-weight: bold; background-color: #2a9d8f">
+                    {{ row[3][0] }}
+                  </td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[4][1] == 'colorbold'"
+                    (click)="openDialog(i, 4, row[6])"
+                  >
+                    {{ row[4][0] }}
+                  </td>
+                  <td style="font-weight: bold" *ngIf="row[4][1] == 'bold'" (click)="openDialog(i, 4, row[6])">
+                    {{ row[4][0] }}
+                  </td>
+                  <td *ngIf="row[4][1] == 'nobold'">
+                    {{ row[4][0] }}
+                  </td>
+                  <td *ngIf="row[4][1] == 'greencolorbold'" style="font-weight: bold; background-color: #2a9d8f">
+                    {{ row[4][0] }}
+                  </td>
+
+                  <td
+                    style="font-weight: bold; background-color: #face70"
+                    *ngIf="row[5][1] == 'colorbold'"
+                    (click)="openDialog(i, 5, row[6])"
+                  >
+                    {{ row[5][0] }}
+                  </td>
+                  <td style="font-weight: bold" *ngIf="row[5][1] == 'bold'" (click)="openDialog(i, 5, row[6])">
+                    {{ row[5][0] }}
+                  </td>
+                  <td *ngIf="row[5][1] == 'nobold'">
+                    {{ row[5][0] }}
+                  </td>
+                  <td *ngIf="row[5][1] == 'greencolorbold'" style="font-weight: bold; background-color: #2a9d8f">
+                    {{ row[5][0] }}
+                  </td>
+                </tr>
+              </tbody>
+              <!-- <tbody *ngFor="let row of formValues; let i = index">
                                 <tr>
                                     <td> {{row[0]}} </td>
                                     <td style="font-weight: bold; background-color:#face70;" *ngIf="boldList[i][0] >2 && finalList1[i][0] == 'True'" (click)="openDialog(i,0) "> {{row[1]}} </td>
@@ -586,9 +898,9 @@
                                     <td *ngIf="boldList[i][5]>=5"> {{row[6]}} </td>
                                 </tr>
                             </tbody> -->
-                        </table>
-                    </div>
-                    <!-- <div style="text-align:center;">
+            </table>
+          </div>
+          <!-- <div style="text-align:center;">
                         <button mat-raised-button color="primary" (click)="initiateRecording()" *ngIf="!recording"> Start Recording </button>
                         <button mat-raised-button color="primary" (click)="stopRecording()" class="btn btn-danger" *ngIf="recording"> Stop Recording </button>
                         <p></p>
@@ -596,142 +908,119 @@
                         <source [src]="sanitize(url)" type="audio/wav">
                         </audio>
                     </div> -->
-                </mat-tab>
-                <mat-tab>
-                    <h2>Cultural Proficiency Continuum Q-Sort: Additional Inquires and Reflections
-                    </h2>
-                    <p>Directions: Read and respond to each question below.
-                    </p>
-                <div [formGroup]="finalFeedbackForm" class="questions">
-
-
-                    <p>1. What are your overall impressions of this activity?
-
-                    </p>
-                    <mat-form-field appearance="outline" class="col-lg-12">
-                        <mat-label>Explain</mat-label>
-                        <input formControlName="q1" type="text" matInput placeholder="" required>
-                    </mat-form-field>
-
-
-
-                    <p style="margin-top: 15px;">2. Were there any challenges that came up while completing this activity?
-
-                    </p>
-                    <mat-form-field appearance="outline" class="col-lg-12">
-                        <mat-label>Explain</mat-label>
-                        <input formControlName="q2" type="text" matInput placeholder="" required>
-                    </mat-form-field>
-
-                    <p style="margin-top: 15px;">3. Were there any feelings that came up while completing this activity?
-
-                    </p>
-                    <mat-form-field appearance="outline" class="col-lg-12">
-                        <mat-label>Explain</mat-label>
-                        <input formControlName="q3" type="text" matInput placeholder="" required>
-                    </mat-form-field>
-
-                    <p style="margin-top: 15px;">4. Has this activity (i.e., reacting to and unpacking vignettes) increased your awareness of the different types of culturally proficient interactions and how they affect students from diverse racial, ethnic, and cultural backgrounds?
-
-                    </p>
-                    <mat-form-field appearance="outline" class="col-lg-12">
-                        <mat-label>Explain</mat-label>
-                        <input formControlName="q4" type="text" matInput placeholder="" required>
-                    </mat-form-field>
-
-                    <p style="margin-top: 15px;">5. After engaging with the activity (i.e., reacting to and unpacking vignettes), where would you place yourself on the Cultural Proficiency Continuum? 
-                    </p>
-                    <mat-radio-group formControlName="q5" class="example-radio-group">
-                        <div class="row">
-                            <div class="col-4">
-                                <mat-radio-button value="male">Cultural Destructiveness
-                                </mat-radio-button>
-                            </div>
-                            <div class="col-4">
-                                <mat-radio-button value="female">Cultural Incapacity
-                                </mat-radio-button>
-                            </div>
-                            <div class="col-4">
-                                <mat-radio-button value="other">Cultural Blindness
-                                </mat-radio-button>
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col-4">
-                                <mat-radio-button value="other1">Cultural Pre-Competence
-                                </mat-radio-button>
-                            </div>
-                            <div class="col-4">
-                                <mat-radio-button value="other2">Cultural Competence
-                                </mat-radio-button>
-                            </div>
-                            <div class="col-4">
-                                <mat-radio-button value="other3">Cultural Proficiency
-                                </mat-radio-button>
-                            </div>
-                        </div>
-                    </mat-radio-group>
-                    
-                    <p style="margin-top: 15px;">6. How would you rate the design of our website?
-                    </p>
-                    <div class="row">
-                        <div class="col-1">
-                            <button  class="zoom" (click)="changeEmojiSize('angry')">
-                                <img id="angry" class="imgClass" src="../../assets/angry.png"/>
-                            </button>
-                            <p>Very poor</p>
-
-                        </div>
-                        <div class="col-1">
-                            <button  class="zoom" (click)="changeEmojiSize('sad')">
-                                <img id="sad" class="imgClass" src="../../assets/sad.png"/>
-                            </button>
-                            <p>Poor</p>
-                        </div>
-                        <div class="col-1">
-                            <button  class="zoom" (click)="changeEmojiSize('neutral')">
-                                <img id="neutral" class="imgClass" src="../../assets/neutral.png" />
-                            </button>
-                            <p style="text-align: justify;">Fair</p>
-                        </div>
-                        <div class="col-1">
-                            <button  class="zoom" (click)="changeEmojiSize('smile')">
-                                <img id="smile" class="imgClass" src="../../assets/smile.png"/>
-                            </button>
-                            <p>Good</p>
-                        </div>
-                        <div class="col-1">
-                            <button  class="zoom" (click)="changeEmojiSize('heart')">
-                                <img id="heart" class="imgClass" src="../../assets/heart.webp"/>
-                            </button>
-                            <p>Excellent</p>
-                        </div>
-                    </div>
-
-                    <br>
-                    <p style="margin-top: 15px;">7. Was our website easy to use and understand?
-                    </p>
-                    <div class="row">
-
-
-
-                        <div class="col-1">
-                            <button class="zoom" (click) ="changeThumbsSize('thumbsup')">
-                                <img id="thumbsup"  class="imgClass" src="../../assets/thumbsup.png"/>
-                            </button>
-                        </div>
-                        <div class="col-1">
-                            <button  class="zoom" (click) ="changeThumbsSize('thumbsdown')">
-                                <img  id="thumbsdown" class="imgClass" src="../../assets/thumbsdown.png"/>
-                            </button>
-                        </div>
-                    </div>
-
-                    </div>
+        </mat-tab>
+        <mat-tab>
+          <h2>Cultural Proficiency Continuum Q-Sort: Additional Inquires and Reflections</h2>
+          <p>Directions: Read and respond to each question below.</p>
+          <div [formGroup]="finalFeedbackForm" class="questions">
+            <p>1. What are your overall impressions of this activity?</p>
+            <mat-form-field appearance="outline" class="col-lg-12">
+              <mat-label>Explain</mat-label>
+              <input formControlName="q1" type="text" matInput placeholder="" required />
+            </mat-form-field>
+
+            <p style="margin-top: 15px">2. Were there any challenges that came up while completing this activity?</p>
+            <mat-form-field appearance="outline" class="col-lg-12">
+              <mat-label>Explain</mat-label>
+              <input formControlName="q2" type="text" matInput placeholder="" required />
+            </mat-form-field>
+
+            <p style="margin-top: 15px">3. Were there any feelings that came up while completing this activity?</p>
+            <mat-form-field appearance="outline" class="col-lg-12">
+              <mat-label>Explain</mat-label>
+              <input formControlName="q3" type="text" matInput placeholder="" required />
+            </mat-form-field>
+
+            <p style="margin-top: 15px">
+              4. Has this activity (i.e., reacting to and unpacking vignettes) increased your awareness of the different
+              types of culturally proficient interactions and how they affect students from diverse racial, ethnic, and
+              cultural backgrounds?
+            </p>
+            <mat-form-field appearance="outline" class="col-lg-12">
+              <mat-label>Explain</mat-label>
+              <input formControlName="q4" type="text" matInput placeholder="" required />
+            </mat-form-field>
+
+            <p style="margin-top: 15px">
+              5. After engaging with the activity (i.e., reacting to and unpacking vignettes), where would you place
+              yourself on the Cultural Proficiency Continuum?
+            </p>
+            <mat-radio-group formControlName="q5" class="example-radio-group">
+              <div class="row">
+                <div class="col-4">
+                  <mat-radio-button value="male">Cultural Destructiveness </mat-radio-button>
+                </div>
+                <div class="col-4">
+                  <mat-radio-button value="female">Cultural Incapacity </mat-radio-button>
+                </div>
+                <div class="col-4">
+                  <mat-radio-button value="other">Cultural Blindness </mat-radio-button>
+                </div>
+              </div>
+              <div class="row">
+                <div class="col-4">
+                  <mat-radio-button value="other1">Cultural Pre-Competence </mat-radio-button>
+                </div>
+                <div class="col-4">
+                  <mat-radio-button value="other2">Cultural Competence </mat-radio-button>
+                </div>
+                <div class="col-4">
+                  <mat-radio-button value="other3">Cultural Proficiency </mat-radio-button>
+                </div>
+              </div>
+            </mat-radio-group>
 
+            <p style="margin-top: 15px">6. How would you rate the design of our website?</p>
+            <div class="row">
+              <div class="col-1">
+                <button class="zoom" (click)="changeEmojiSize('angry')">
+                  <img id="angry" class="imgClass" src="../../assets/angry.png" />
+                </button>
+                <p>Very poor</p>
+              </div>
+              <div class="col-1">
+                <button class="zoom" (click)="changeEmojiSize('sad')">
+                  <img id="sad" class="imgClass" src="../../assets/sad.png" />
+                </button>
+                <p>Poor</p>
+              </div>
+              <div class="col-1">
+                <button class="zoom" (click)="changeEmojiSize('neutral')">
+                  <img id="neutral" class="imgClass" src="../../assets/neutral.png" />
+                </button>
+                <p style="text-align: justify">Fair</p>
+              </div>
+              <div class="col-1">
+                <button class="zoom" (click)="changeEmojiSize('smile')">
+                  <img id="smile" class="imgClass" src="../../assets/smile.png" />
+                </button>
+                <p>Good</p>
+              </div>
+              <div class="col-1">
+                <button class="zoom" (click)="changeEmojiSize('heart')">
+                  <img id="heart" class="imgClass" src="../../assets/heart.webp" />
+                </button>
+                <p>Excellent</p>
+              </div>
+            </div>
 
-                </mat-tab>
-                <!-- <mat-tab label="Eight">
+            <br />
+            <p style="margin-top: 15px">7. Was our website easy to use and understand?</p>
+            <div class="row">
+              <div class="col-1">
+                <button class="zoom" (click)="changeThumbsSize('thumbsup')">
+                  <img id="thumbsup" class="imgClass" src="../../assets/thumbsup.png" />
+                </button>
+              </div>
+              <div class="col-1">
+                <button class="zoom" (click)="changeThumbsSize('thumbsdown')">
+                  <img id="thumbsdown" class="imgClass" src="../../assets/thumbsdown.png" />
+                </button>
+              </div>
+            </div>
+          </div>
+        </mat-tab>
+        <!-- <mat-tab label="Eight">
                     <h2>Sample of Audio Answer</h2>
                     <p>Please press the button below to start recording your answer.</p>
                     <div style="text-align:center;margin-top: 200px;">
@@ -743,46 +1032,64 @@
                         </audio>
                     </div>
                 </mat-tab> -->
-            </mat-tab-group>
-
-
-
-        </mat-card-content>
-
-
-
-        <mat-card-actions>
-            <div class="row">
-                <div class="col-8">
-                    <button *ngIf="selectedIndex != 5 && selectedIndex != 6 && selectedIndex !=7" mat-raised-button color="primary" style=" padding-right: -10px; " (click)="nextButton()">
-                        NEXT
-                        <mat-icon>arrow_right_al</mat-icon>
-        
-                         </button>
-
-                    <button *ngIf="selectedIndex == 5" mat-raised-button style=" padding-right: -10px; background-color: green; color: white;" (click)="submitForm()">
+      </mat-tab-group>
+    </mat-card-content>
+
+    <mat-card-actions>
+      <div class="row">
+        <div class="col-8">
+          <button
+            *ngIf="selectedIndex != 5 && selectedIndex != 6 && selectedIndex != 7"
+            mat-raised-button
+            color="primary"
+            style="padding-right: -10px"
+            (click)="nextButton()"
+          >
+            NEXT
+            <mat-icon>arrow_right_al</mat-icon>
+          </button>
+
+          <button
+            *ngIf="selectedIndex == 5"
+            mat-raised-button
+            style="padding-right: -10px; background-color: green; color: white"
+            (click)="submitForm()"
+          >
             SUBMIT
-                            <mat-icon>done_outline</mat-icon>
-                             </button>
-                             <button *ngIf="selectedIndex == 6" mat-raised-button style=" padding-right: -10px; background-color: green; color: white;" (click)="submitForm1()">
-                                SUBMIT
-                                                <mat-icon>done_outline</mat-icon>
-                                            </button>
-                    <button *ngIf="selectedIndex == 7" mat-raised-button style=" padding-right: -10px; background-color:#29ABE2; color: white; margin-top: -100px;" (click) = "finalSubmit()">
-                                Go to Dashboard
-                    </button>
-                </div>
-                <div *ngIf="selectedIndex != 6 && selectedIndex != 7 && selectedIndex != 0" class="col-4">
-                    <p style="font-size: 10px; margin:-10px; margin-left: 20px;">Use this bar to increase or decrease the font size</p>
-                    <mat-slider color="primary" min="0" max="4" value="1" tickInterval="1" (input)="sliderFunction($event)"></mat-slider>
-
-
-                </div>
-
-            </div>
-
-
-
-        </mat-card-actions>
-    </mat-card>
-</div>
\ No newline at end of file
+            <mat-icon>done_outline</mat-icon>
+          </button>
+          <button
+            *ngIf="selectedIndex == 6"
+            mat-raised-button
+            style="padding-right: -10px; background-color: green; color: white"
+            (click)="submitForm1()"
+          >
+            SUBMIT
+            <mat-icon>done_outline</mat-icon>
+          </button>
+          <button
+            *ngIf="selectedIndex == 7"
+            mat-raised-button
+            style="padding-right: -10px; background-color: #29abe2; color: white; margin-top: -100px"
+            (click)="finalSubmit()"
+          >
+            Go to Dashboard
+          </button>
+        </div>
+        <div *ngIf="selectedIndex != 6 && selectedIndex != 7 && selectedIndex != 0" class="col-4">
+          <p style="font-size: 10px; margin: -10px; margin-left: 20px">
+            Use this bar to increase or decrease the font size
+          </p>
+          <mat-slider
+            color="primary"
+            min="0"
+            max="4"
+            value="1"
+            tickInterval="1"
+            (input)="sliderFunction($event)"
+          ></mat-slider>
+        </div>
+      </div>
+    </mat-card-actions>
+  </mat-card>
+</div>
diff --git a/src/app/components/unpacking-page/unpacking-page.component.spec.ts b/src/app/components/unpacking-page/unpacking-page.component.spec.ts
index cf7e2f9..24f3b80 100644
--- a/src/app/components/unpacking-page/unpacking-page.component.spec.ts
+++ b/src/app/components/unpacking-page/unpacking-page.component.spec.ts
@@ -1,16 +1,15 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
 
-import { UnpackingPageComponent } from './unpacking-page.component';
+import { UnpackingPageComponent } from "./unpacking-page.component";
 
-describe('UnpackingPageComponent', () => {
+describe("UnpackingPageComponent", () => {
   let component: UnpackingPageComponent;
   let fixture: ComponentFixture<UnpackingPageComponent>;
 
   beforeEach(async(() => {
     TestBed.configureTestingModule({
-      declarations: [ UnpackingPageComponent ]
-    })
-    .compileComponents();
+      declarations: [UnpackingPageComponent],
+    }).compileComponents();
   }));
 
   beforeEach(() => {
@@ -19,7 +18,7 @@ describe('UnpackingPageComponent', () => {
     fixture.detectChanges();
   });
 
-  it('should create', () => {
+  it("should create", () => {
     expect(component).toBeTruthy();
   });
 });
diff --git a/src/app/components/unpacking-page/unpacking-page.component.ts b/src/app/components/unpacking-page/unpacking-page.component.ts
index 8531456..d3eb2e3 100644
--- a/src/app/components/unpacking-page/unpacking-page.component.ts
+++ b/src/app/components/unpacking-page/unpacking-page.component.ts
@@ -15,1201 +15,1148 @@ import { DialogFormComponent } from "../cpcq-form/dialog-form/dialog-form.compon
 import { CPCQService } from "src/app/services/cpcq.service";
 
 export interface DialogData {
-    animal: "panda" | "unicorn" | "lion";
-    status;
-    result;
+  animal: "panda" | "unicorn" | "lion";
+  status;
+  result;
 }
 @Component({
-    selector: "app-unpacking-page",
-    templateUrl: "./unpacking-page.component.html",
-    styleUrls: ["./unpacking-page.component.css"],
+  selector: "app-unpacking-page",
+  templateUrl: "./unpacking-page.component.html",
+  styleUrls: ["./unpacking-page.component.css"],
 })
 export class UnpackingPageComponent implements OnInit, AfterViewInit {
-    firstForm: FormGroup;
-    responseList: any;
-    loaded = false;
-
-    questionArray = [
-        ["Enter First Name", "text"],
-        ["Enter Last Name", "text"],
-        ["Enter Age", "number"],
-    ];
-    statusCheck = false;
-    buttonClick = false;
-
-    sliderValue = 0;
-
-    selectedIndex = 6;
-
-    color: ThemePalette = "primary";
-    mode: ProgressBarMode = "buffer";
-    value1 = 50;
-    bufferValue = 100;
-
-    formValues = [];
-    attributes = ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"];
-    columnHeadings = [
-        "culturalDestructivenessresponse",
-        "culturalIncapacityresponse",
-        "culturalBlindnessresponse",
-        "culturalPreCompetenceresponse",
-        "culturalCompetenceresponse",
-        "culturalProficiencyresponse",
-    ];
-    rowLetters = [
-        ["D", "C", "B", "A", "F", "E"],
-        ["E", "A", "F", "D", "B", "C"],
-        ["F", "E", "B", "C", "D", "A"],
-        ["E", "A", "B", "D", "C", "F"],
-        ["D", "C", "B", "E", "A", "F"],
-    ];
-    boldList = [[]];
-    randomList = [[]];
-    finalList = [[]];
-    finalList1 = [];
-    attitudeForm: FormGroup;
-    empathyForm: FormGroup;
-    policyForm: FormGroup;
-
-    finalFeedbackForm: FormGroup;
-
-    //arrays of data getting from the backend
-
-    attitude: any;
-    empathy: any;
-    policy: any;
-    professionalism: any;
-    teachingPractice: any;
-    wordDescription: any;
-    unpackedCount = 0;
-
-    startTime: any;
-    endTime: any;
-    durationTime: any;
-
-    @ViewChild("changeDiv") changeDiv: ElementRef;
-    @ViewChild("changeDiv1") changeDiv1: ElementRef;
-    @ViewChild("changeDiv2") changeDiv2: ElementRef;
-    @ViewChild("changeDiv3") changeDiv3: ElementRef;
-    @ViewChild("changeDiv4") changeDiv4: ElementRef;
-    @ViewChild("changeDiv5") changeDiv5: ElementRef;
-    @ViewChild("changeDiv6") changeDiv6: ElementRef;
-    @ViewChild("changeDiv7") changeDiv7: ElementRef;
-    @ViewChild("changeDiv8") changeDiv8: ElementRef;
-    @ViewChild("changeDiv9") changeDiv9: ElementRef;
-    @ViewChild("changeDiv10") changeDiv10: ElementRef;
-    @ViewChild("changeDiv11") changeDiv11: ElementRef;
-    @ViewChild("changeDiv12") changeDiv12: ElementRef;
-    @ViewChild("changeDiv13") changeDiv13: ElementRef;
-    @ViewChild("changeDiv14") changeDiv14: ElementRef;
-    @ViewChild("changeDiv15") changeDiv15: ElementRef;
-    @ViewChild("changeDiv16") changeDiv16: ElementRef;
-    @ViewChild("changeDiv17") changeDiv17: ElementRef;
-    @ViewChild("changeDiv18") changeDiv18: ElementRef;
-    @ViewChild("changeDiv19") changeDiv19: ElementRef;
-    @ViewChild("changeDiv20") changeDiv20: ElementRef;
-    @ViewChild("changeDiv21") changeDiv21: ElementRef;
-    @ViewChild("changeDiv22") changeDiv22: ElementRef;
-    @ViewChild("changeDiv23") changeDiv23: ElementRef;
-    @ViewChild("changeDiv24") changeDiv24: ElementRef;
-    @ViewChild("changeDiv25") changeDiv25: ElementRef;
-    @ViewChild("changeDiv26") changeDiv26: ElementRef;
-    @ViewChild("changeDiv27") changeDiv27: ElementRef;
-    @ViewChild("changeDiv28") changeDiv28: ElementRef;
-    @ViewChild("changeDiv29") changeDiv29: ElementRef;
-
-    ngAfterViewInit() {}
-
-    sliderFunction1() {
-        if (this.sliderValue == 1) {
-            this.changeDiv.nativeElement.style.fontSize = "15px";
-            this.changeDiv1.nativeElement.style.fontSize = "15px";
-            this.changeDiv2.nativeElement.style.fontSize = "15px";
-            this.changeDiv3.nativeElement.style.fontSize = "15px";
-            this.changeDiv4.nativeElement.style.fontSize = "15px";
-            this.changeDiv5.nativeElement.style.fontSize = "15px";
-            this.changeDiv6.nativeElement.style.fontSize = "15px";
-            this.changeDiv7.nativeElement.style.fontSize = "15px";
-            this.changeDiv8.nativeElement.style.fontSize = "15px";
-            this.changeDiv9.nativeElement.style.fontSize = "15px";
-            this.changeDiv10.nativeElement.style.fontSize = "15px";
-            this.changeDiv11.nativeElement.style.fontSize = "15px";
-            this.changeDiv12.nativeElement.style.fontSize = "15px";
-            this.changeDiv13.nativeElement.style.fontSize = "15px";
-            this.changeDiv14.nativeElement.style.fontSize = "15px";
-            this.changeDiv15.nativeElement.style.fontSize = "15px";
-            this.changeDiv16.nativeElement.style.fontSize = "15px";
-            this.changeDiv17.nativeElement.style.fontSize = "15px";
-            this.changeDiv18.nativeElement.style.fontSize = "15px";
-            this.changeDiv19.nativeElement.style.fontSize = "15px";
-            this.changeDiv20.nativeElement.style.fontSize = "15px";
-            this.changeDiv21.nativeElement.style.fontSize = "15px";
-            this.changeDiv22.nativeElement.style.fontSize = "15px";
-            this.changeDiv23.nativeElement.style.fontSize = "15px";
-            this.changeDiv24.nativeElement.style.fontSize = "15px";
-            this.changeDiv25.nativeElement.style.fontSize = "15px";
-            this.changeDiv26.nativeElement.style.fontSize = "15px";
-            this.changeDiv27.nativeElement.style.fontSize = "15px";
-            this.changeDiv28.nativeElement.style.fontSize = "15px";
-            this.changeDiv29.nativeElement.style.fontSize = "15px";
-        } else if (this.sliderValue == 2) {
-            this.changeDiv.nativeElement.style.fontSize = "20px";
-            this.changeDiv1.nativeElement.style.fontSize = "20px";
-            this.changeDiv2.nativeElement.style.fontSize = "20px";
-            this.changeDiv3.nativeElement.style.fontSize = "20px";
-            this.changeDiv4.nativeElement.style.fontSize = "20px";
-            this.changeDiv5.nativeElement.style.fontSize = "20px";
-            this.changeDiv6.nativeElement.style.fontSize = "20px";
-            this.changeDiv7.nativeElement.style.fontSize = "20px";
-            this.changeDiv8.nativeElement.style.fontSize = "20px";
-            this.changeDiv9.nativeElement.style.fontSize = "20px";
-            this.changeDiv10.nativeElement.style.fontSize = "20px";
-            this.changeDiv11.nativeElement.style.fontSize = "20px";
-            this.changeDiv12.nativeElement.style.fontSize = "20px";
-            this.changeDiv13.nativeElement.style.fontSize = "20px";
-            this.changeDiv14.nativeElement.style.fontSize = "20px";
-            this.changeDiv15.nativeElement.style.fontSize = "20px";
-            this.changeDiv16.nativeElement.style.fontSize = "20px";
-            this.changeDiv17.nativeElement.style.fontSize = "20px";
-            this.changeDiv18.nativeElement.style.fontSize = "20px";
-            this.changeDiv19.nativeElement.style.fontSize = "20px";
-            this.changeDiv20.nativeElement.style.fontSize = "20px";
-            this.changeDiv21.nativeElement.style.fontSize = "20px";
-            this.changeDiv22.nativeElement.style.fontSize = "20px";
-            this.changeDiv23.nativeElement.style.fontSize = "20px";
-            this.changeDiv24.nativeElement.style.fontSize = "20px";
-            this.changeDiv25.nativeElement.style.fontSize = "20px";
-            this.changeDiv26.nativeElement.style.fontSize = "20px";
-            this.changeDiv27.nativeElement.style.fontSize = "20px";
-            this.changeDiv28.nativeElement.style.fontSize = "20px";
-            this.changeDiv29.nativeElement.style.fontSize = "20px";
-        } else if (this.sliderValue == 3) {
-            this.changeDiv.nativeElement.style.fontSize = "22px";
-            this.changeDiv1.nativeElement.style.fontSize = "22px";
-            this.changeDiv2.nativeElement.style.fontSize = "22px";
-            this.changeDiv3.nativeElement.style.fontSize = "22px";
-            this.changeDiv4.nativeElement.style.fontSize = "22px";
-            this.changeDiv5.nativeElement.style.fontSize = "22px";
-            this.changeDiv6.nativeElement.style.fontSize = "22px";
-            this.changeDiv7.nativeElement.style.fontSize = "22px";
-            this.changeDiv8.nativeElement.style.fontSize = "22px";
-            this.changeDiv9.nativeElement.style.fontSize = "22px";
-            this.changeDiv10.nativeElement.style.fontSize = "22px";
-            this.changeDiv11.nativeElement.style.fontSize = "22px";
-            this.changeDiv12.nativeElement.style.fontSize = "22px";
-            this.changeDiv13.nativeElement.style.fontSize = "22px";
-            this.changeDiv14.nativeElement.style.fontSize = "22px";
-            this.changeDiv15.nativeElement.style.fontSize = "22px";
-            this.changeDiv16.nativeElement.style.fontSize = "22px";
-            this.changeDiv17.nativeElement.style.fontSize = "22px";
-            this.changeDiv18.nativeElement.style.fontSize = "22px";
-            this.changeDiv19.nativeElement.style.fontSize = "22px";
-            this.changeDiv20.nativeElement.style.fontSize = "22px";
-            this.changeDiv21.nativeElement.style.fontSize = "22px";
-            this.changeDiv22.nativeElement.style.fontSize = "22px";
-            this.changeDiv23.nativeElement.style.fontSize = "22px";
-            this.changeDiv24.nativeElement.style.fontSize = "22px";
-            this.changeDiv25.nativeElement.style.fontSize = "22px";
-            this.changeDiv26.nativeElement.style.fontSize = "22px";
-            this.changeDiv27.nativeElement.style.fontSize = "22px";
-            this.changeDiv28.nativeElement.style.fontSize = "22px";
-            this.changeDiv29.nativeElement.style.fontSize = "22px";
-        } else if (this.sliderValue == 4) {
-            this.changeDiv.nativeElement.style.fontSize = "25px";
-            this.changeDiv1.nativeElement.style.fontSize = "25px";
-            this.changeDiv2.nativeElement.style.fontSize = "25px";
-            this.changeDiv3.nativeElement.style.fontSize = "25px";
-            this.changeDiv4.nativeElement.style.fontSize = "25px";
-            this.changeDiv5.nativeElement.style.fontSize = "25px";
-            this.changeDiv6.nativeElement.style.fontSize = "25px";
-            this.changeDiv7.nativeElement.style.fontSize = "25px";
-            this.changeDiv8.nativeElement.style.fontSize = "25px";
-            this.changeDiv9.nativeElement.style.fontSize = "25px";
-            this.changeDiv10.nativeElement.style.fontSize = "25px";
-            this.changeDiv11.nativeElement.style.fontSize = "25px";
-            this.changeDiv12.nativeElement.style.fontSize = "25px";
-            this.changeDiv13.nativeElement.style.fontSize = "25px";
-            this.changeDiv14.nativeElement.style.fontSize = "25px";
-            this.changeDiv15.nativeElement.style.fontSize = "25px";
-            this.changeDiv16.nativeElement.style.fontSize = "25px";
-            this.changeDiv17.nativeElement.style.fontSize = "25px";
-            this.changeDiv18.nativeElement.style.fontSize = "25px";
-            this.changeDiv19.nativeElement.style.fontSize = "25px";
-            this.changeDiv20.nativeElement.style.fontSize = "25px";
-            this.changeDiv21.nativeElement.style.fontSize = "25px";
-            this.changeDiv22.nativeElement.style.fontSize = "25px";
-            this.changeDiv23.nativeElement.style.fontSize = "25px";
-            this.changeDiv24.nativeElement.style.fontSize = "25px";
-            this.changeDiv25.nativeElement.style.fontSize = "25px";
-            this.changeDiv26.nativeElement.style.fontSize = "25px";
-            this.changeDiv27.nativeElement.style.fontSize = "25px";
-            this.changeDiv28.nativeElement.style.fontSize = "25px";
-            this.changeDiv29.nativeElement.style.fontSize = "25px";
-        } else if (this.sliderValue == 5) {
-            this.changeDiv.nativeElement.style.fontSize = "50px";
-            this.changeDiv1.nativeElement.style.fontSize = "50px";
-            this.changeDiv2.nativeElement.style.fontSize = "50px";
-            this.changeDiv3.nativeElement.style.fontSize = "50px";
-            this.changeDiv4.nativeElement.style.fontSize = "50px";
-            this.changeDiv5.nativeElement.style.fontSize = "50px";
-        }
+  firstForm: FormGroup;
+  responseList: any;
+  loaded = false;
+
+  questionArray = [
+    ["Enter First Name", "text"],
+    ["Enter Last Name", "text"],
+    ["Enter Age", "number"],
+  ];
+  statusCheck = false;
+  buttonClick = false;
+
+  sliderValue = 0;
+
+  selectedIndex = 6;
+
+  color: ThemePalette = "primary";
+  mode: ProgressBarMode = "buffer";
+  value1 = 50;
+  bufferValue = 100;
+
+  formValues = [];
+  attributes = ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"];
+  columnHeadings = [
+    "culturalDestructivenessresponse",
+    "culturalIncapacityresponse",
+    "culturalBlindnessresponse",
+    "culturalPreCompetenceresponse",
+    "culturalCompetenceresponse",
+    "culturalProficiencyresponse",
+  ];
+  rowLetters = [
+    ["D", "C", "B", "A", "F", "E"],
+    ["E", "A", "F", "D", "B", "C"],
+    ["F", "E", "B", "C", "D", "A"],
+    ["E", "A", "B", "D", "C", "F"],
+    ["D", "C", "B", "E", "A", "F"],
+  ];
+  boldList = [[]];
+  randomList = [[]];
+  finalList = [[]];
+  finalList1 = [];
+  attitudeForm: FormGroup;
+  empathyForm: FormGroup;
+  policyForm: FormGroup;
+
+  finalFeedbackForm: FormGroup;
+
+  //arrays of data getting from the backend
+
+  attitude: any;
+  empathy: any;
+  policy: any;
+  professionalism: any;
+  teachingPractice: any;
+  wordDescription: any;
+  unpackedCount = 0;
+
+  startTime: any;
+  endTime: any;
+  durationTime: any;
+
+  @ViewChild("changeDiv") changeDiv: ElementRef;
+  @ViewChild("changeDiv1") changeDiv1: ElementRef;
+  @ViewChild("changeDiv2") changeDiv2: ElementRef;
+  @ViewChild("changeDiv3") changeDiv3: ElementRef;
+  @ViewChild("changeDiv4") changeDiv4: ElementRef;
+  @ViewChild("changeDiv5") changeDiv5: ElementRef;
+  @ViewChild("changeDiv6") changeDiv6: ElementRef;
+  @ViewChild("changeDiv7") changeDiv7: ElementRef;
+  @ViewChild("changeDiv8") changeDiv8: ElementRef;
+  @ViewChild("changeDiv9") changeDiv9: ElementRef;
+  @ViewChild("changeDiv10") changeDiv10: ElementRef;
+  @ViewChild("changeDiv11") changeDiv11: ElementRef;
+  @ViewChild("changeDiv12") changeDiv12: ElementRef;
+  @ViewChild("changeDiv13") changeDiv13: ElementRef;
+  @ViewChild("changeDiv14") changeDiv14: ElementRef;
+  @ViewChild("changeDiv15") changeDiv15: ElementRef;
+  @ViewChild("changeDiv16") changeDiv16: ElementRef;
+  @ViewChild("changeDiv17") changeDiv17: ElementRef;
+  @ViewChild("changeDiv18") changeDiv18: ElementRef;
+  @ViewChild("changeDiv19") changeDiv19: ElementRef;
+  @ViewChild("changeDiv20") changeDiv20: ElementRef;
+  @ViewChild("changeDiv21") changeDiv21: ElementRef;
+  @ViewChild("changeDiv22") changeDiv22: ElementRef;
+  @ViewChild("changeDiv23") changeDiv23: ElementRef;
+  @ViewChild("changeDiv24") changeDiv24: ElementRef;
+  @ViewChild("changeDiv25") changeDiv25: ElementRef;
+  @ViewChild("changeDiv26") changeDiv26: ElementRef;
+  @ViewChild("changeDiv27") changeDiv27: ElementRef;
+  @ViewChild("changeDiv28") changeDiv28: ElementRef;
+  @ViewChild("changeDiv29") changeDiv29: ElementRef;
+
+  ngAfterViewInit() {}
+
+  sliderFunction1() {
+    if (this.sliderValue == 1) {
+      this.changeDiv.nativeElement.style.fontSize = "15px";
+      this.changeDiv1.nativeElement.style.fontSize = "15px";
+      this.changeDiv2.nativeElement.style.fontSize = "15px";
+      this.changeDiv3.nativeElement.style.fontSize = "15px";
+      this.changeDiv4.nativeElement.style.fontSize = "15px";
+      this.changeDiv5.nativeElement.style.fontSize = "15px";
+      this.changeDiv6.nativeElement.style.fontSize = "15px";
+      this.changeDiv7.nativeElement.style.fontSize = "15px";
+      this.changeDiv8.nativeElement.style.fontSize = "15px";
+      this.changeDiv9.nativeElement.style.fontSize = "15px";
+      this.changeDiv10.nativeElement.style.fontSize = "15px";
+      this.changeDiv11.nativeElement.style.fontSize = "15px";
+      this.changeDiv12.nativeElement.style.fontSize = "15px";
+      this.changeDiv13.nativeElement.style.fontSize = "15px";
+      this.changeDiv14.nativeElement.style.fontSize = "15px";
+      this.changeDiv15.nativeElement.style.fontSize = "15px";
+      this.changeDiv16.nativeElement.style.fontSize = "15px";
+      this.changeDiv17.nativeElement.style.fontSize = "15px";
+      this.changeDiv18.nativeElement.style.fontSize = "15px";
+      this.changeDiv19.nativeElement.style.fontSize = "15px";
+      this.changeDiv20.nativeElement.style.fontSize = "15px";
+      this.changeDiv21.nativeElement.style.fontSize = "15px";
+      this.changeDiv22.nativeElement.style.fontSize = "15px";
+      this.changeDiv23.nativeElement.style.fontSize = "15px";
+      this.changeDiv24.nativeElement.style.fontSize = "15px";
+      this.changeDiv25.nativeElement.style.fontSize = "15px";
+      this.changeDiv26.nativeElement.style.fontSize = "15px";
+      this.changeDiv27.nativeElement.style.fontSize = "15px";
+      this.changeDiv28.nativeElement.style.fontSize = "15px";
+      this.changeDiv29.nativeElement.style.fontSize = "15px";
+    } else if (this.sliderValue == 2) {
+      this.changeDiv.nativeElement.style.fontSize = "20px";
+      this.changeDiv1.nativeElement.style.fontSize = "20px";
+      this.changeDiv2.nativeElement.style.fontSize = "20px";
+      this.changeDiv3.nativeElement.style.fontSize = "20px";
+      this.changeDiv4.nativeElement.style.fontSize = "20px";
+      this.changeDiv5.nativeElement.style.fontSize = "20px";
+      this.changeDiv6.nativeElement.style.fontSize = "20px";
+      this.changeDiv7.nativeElement.style.fontSize = "20px";
+      this.changeDiv8.nativeElement.style.fontSize = "20px";
+      this.changeDiv9.nativeElement.style.fontSize = "20px";
+      this.changeDiv10.nativeElement.style.fontSize = "20px";
+      this.changeDiv11.nativeElement.style.fontSize = "20px";
+      this.changeDiv12.nativeElement.style.fontSize = "20px";
+      this.changeDiv13.nativeElement.style.fontSize = "20px";
+      this.changeDiv14.nativeElement.style.fontSize = "20px";
+      this.changeDiv15.nativeElement.style.fontSize = "20px";
+      this.changeDiv16.nativeElement.style.fontSize = "20px";
+      this.changeDiv17.nativeElement.style.fontSize = "20px";
+      this.changeDiv18.nativeElement.style.fontSize = "20px";
+      this.changeDiv19.nativeElement.style.fontSize = "20px";
+      this.changeDiv20.nativeElement.style.fontSize = "20px";
+      this.changeDiv21.nativeElement.style.fontSize = "20px";
+      this.changeDiv22.nativeElement.style.fontSize = "20px";
+      this.changeDiv23.nativeElement.style.fontSize = "20px";
+      this.changeDiv24.nativeElement.style.fontSize = "20px";
+      this.changeDiv25.nativeElement.style.fontSize = "20px";
+      this.changeDiv26.nativeElement.style.fontSize = "20px";
+      this.changeDiv27.nativeElement.style.fontSize = "20px";
+      this.changeDiv28.nativeElement.style.fontSize = "20px";
+      this.changeDiv29.nativeElement.style.fontSize = "20px";
+    } else if (this.sliderValue == 3) {
+      this.changeDiv.nativeElement.style.fontSize = "22px";
+      this.changeDiv1.nativeElement.style.fontSize = "22px";
+      this.changeDiv2.nativeElement.style.fontSize = "22px";
+      this.changeDiv3.nativeElement.style.fontSize = "22px";
+      this.changeDiv4.nativeElement.style.fontSize = "22px";
+      this.changeDiv5.nativeElement.style.fontSize = "22px";
+      this.changeDiv6.nativeElement.style.fontSize = "22px";
+      this.changeDiv7.nativeElement.style.fontSize = "22px";
+      this.changeDiv8.nativeElement.style.fontSize = "22px";
+      this.changeDiv9.nativeElement.style.fontSize = "22px";
+      this.changeDiv10.nativeElement.style.fontSize = "22px";
+      this.changeDiv11.nativeElement.style.fontSize = "22px";
+      this.changeDiv12.nativeElement.style.fontSize = "22px";
+      this.changeDiv13.nativeElement.style.fontSize = "22px";
+      this.changeDiv14.nativeElement.style.fontSize = "22px";
+      this.changeDiv15.nativeElement.style.fontSize = "22px";
+      this.changeDiv16.nativeElement.style.fontSize = "22px";
+      this.changeDiv17.nativeElement.style.fontSize = "22px";
+      this.changeDiv18.nativeElement.style.fontSize = "22px";
+      this.changeDiv19.nativeElement.style.fontSize = "22px";
+      this.changeDiv20.nativeElement.style.fontSize = "22px";
+      this.changeDiv21.nativeElement.style.fontSize = "22px";
+      this.changeDiv22.nativeElement.style.fontSize = "22px";
+      this.changeDiv23.nativeElement.style.fontSize = "22px";
+      this.changeDiv24.nativeElement.style.fontSize = "22px";
+      this.changeDiv25.nativeElement.style.fontSize = "22px";
+      this.changeDiv26.nativeElement.style.fontSize = "22px";
+      this.changeDiv27.nativeElement.style.fontSize = "22px";
+      this.changeDiv28.nativeElement.style.fontSize = "22px";
+      this.changeDiv29.nativeElement.style.fontSize = "22px";
+    } else if (this.sliderValue == 4) {
+      this.changeDiv.nativeElement.style.fontSize = "25px";
+      this.changeDiv1.nativeElement.style.fontSize = "25px";
+      this.changeDiv2.nativeElement.style.fontSize = "25px";
+      this.changeDiv3.nativeElement.style.fontSize = "25px";
+      this.changeDiv4.nativeElement.style.fontSize = "25px";
+      this.changeDiv5.nativeElement.style.fontSize = "25px";
+      this.changeDiv6.nativeElement.style.fontSize = "25px";
+      this.changeDiv7.nativeElement.style.fontSize = "25px";
+      this.changeDiv8.nativeElement.style.fontSize = "25px";
+      this.changeDiv9.nativeElement.style.fontSize = "25px";
+      this.changeDiv10.nativeElement.style.fontSize = "25px";
+      this.changeDiv11.nativeElement.style.fontSize = "25px";
+      this.changeDiv12.nativeElement.style.fontSize = "25px";
+      this.changeDiv13.nativeElement.style.fontSize = "25px";
+      this.changeDiv14.nativeElement.style.fontSize = "25px";
+      this.changeDiv15.nativeElement.style.fontSize = "25px";
+      this.changeDiv16.nativeElement.style.fontSize = "25px";
+      this.changeDiv17.nativeElement.style.fontSize = "25px";
+      this.changeDiv18.nativeElement.style.fontSize = "25px";
+      this.changeDiv19.nativeElement.style.fontSize = "25px";
+      this.changeDiv20.nativeElement.style.fontSize = "25px";
+      this.changeDiv21.nativeElement.style.fontSize = "25px";
+      this.changeDiv22.nativeElement.style.fontSize = "25px";
+      this.changeDiv23.nativeElement.style.fontSize = "25px";
+      this.changeDiv24.nativeElement.style.fontSize = "25px";
+      this.changeDiv25.nativeElement.style.fontSize = "25px";
+      this.changeDiv26.nativeElement.style.fontSize = "25px";
+      this.changeDiv27.nativeElement.style.fontSize = "25px";
+      this.changeDiv28.nativeElement.style.fontSize = "25px";
+      this.changeDiv29.nativeElement.style.fontSize = "25px";
+    } else if (this.sliderValue == 5) {
+      this.changeDiv.nativeElement.style.fontSize = "50px";
+      this.changeDiv1.nativeElement.style.fontSize = "50px";
+      this.changeDiv2.nativeElement.style.fontSize = "50px";
+      this.changeDiv3.nativeElement.style.fontSize = "50px";
+      this.changeDiv4.nativeElement.style.fontSize = "50px";
+      this.changeDiv5.nativeElement.style.fontSize = "50px";
+    }
+  }
+  sliderFunction(e) {
+    //
+    this.sliderValue = e.value;
+    if (e.value == 1) {
+      this.changeDiv.nativeElement.style.fontSize = "15px";
+      this.changeDiv1.nativeElement.style.fontSize = "15px";
+      this.changeDiv2.nativeElement.style.fontSize = "15px";
+      this.changeDiv3.nativeElement.style.fontSize = "15px";
+      this.changeDiv4.nativeElement.style.fontSize = "15px";
+      this.changeDiv5.nativeElement.style.fontSize = "15px";
+      this.changeDiv6.nativeElement.style.fontSize = "15px";
+      this.changeDiv7.nativeElement.style.fontSize = "15px";
+      this.changeDiv8.nativeElement.style.fontSize = "15px";
+      this.changeDiv9.nativeElement.style.fontSize = "15px";
+      this.changeDiv10.nativeElement.style.fontSize = "15px";
+      this.changeDiv11.nativeElement.style.fontSize = "15px";
+      this.changeDiv12.nativeElement.style.fontSize = "15px";
+      this.changeDiv13.nativeElement.style.fontSize = "15px";
+      this.changeDiv14.nativeElement.style.fontSize = "15px";
+      this.changeDiv15.nativeElement.style.fontSize = "15px";
+      this.changeDiv16.nativeElement.style.fontSize = "15px";
+      this.changeDiv17.nativeElement.style.fontSize = "15px";
+      this.changeDiv18.nativeElement.style.fontSize = "15px";
+      this.changeDiv19.nativeElement.style.fontSize = "15px";
+      this.changeDiv20.nativeElement.style.fontSize = "15px";
+      this.changeDiv21.nativeElement.style.fontSize = "15px";
+      this.changeDiv22.nativeElement.style.fontSize = "15px";
+      this.changeDiv23.nativeElement.style.fontSize = "15px";
+      this.changeDiv24.nativeElement.style.fontSize = "15px";
+      this.changeDiv25.nativeElement.style.fontSize = "15px";
+      this.changeDiv26.nativeElement.style.fontSize = "15px";
+      this.changeDiv27.nativeElement.style.fontSize = "15px";
+      this.changeDiv28.nativeElement.style.fontSize = "15px";
+      this.changeDiv29.nativeElement.style.fontSize = "15px";
+    } else if (e.value == 2) {
+      this.changeDiv.nativeElement.style.fontSize = "20px";
+      this.changeDiv1.nativeElement.style.fontSize = "20px";
+      this.changeDiv2.nativeElement.style.fontSize = "20px";
+      this.changeDiv3.nativeElement.style.fontSize = "20px";
+      this.changeDiv4.nativeElement.style.fontSize = "20px";
+      this.changeDiv5.nativeElement.style.fontSize = "20px";
+      this.changeDiv6.nativeElement.style.fontSize = "20px";
+      this.changeDiv7.nativeElement.style.fontSize = "20px";
+      this.changeDiv8.nativeElement.style.fontSize = "20px";
+      this.changeDiv9.nativeElement.style.fontSize = "20px";
+      this.changeDiv10.nativeElement.style.fontSize = "20px";
+      this.changeDiv11.nativeElement.style.fontSize = "20px";
+      this.changeDiv12.nativeElement.style.fontSize = "20px";
+      this.changeDiv13.nativeElement.style.fontSize = "20px";
+      this.changeDiv14.nativeElement.style.fontSize = "20px";
+      this.changeDiv15.nativeElement.style.fontSize = "20px";
+      this.changeDiv16.nativeElement.style.fontSize = "20px";
+      this.changeDiv17.nativeElement.style.fontSize = "20px";
+      this.changeDiv18.nativeElement.style.fontSize = "20px";
+      this.changeDiv19.nativeElement.style.fontSize = "20px";
+      this.changeDiv20.nativeElement.style.fontSize = "20px";
+      this.changeDiv21.nativeElement.style.fontSize = "20px";
+      this.changeDiv22.nativeElement.style.fontSize = "20px";
+      this.changeDiv23.nativeElement.style.fontSize = "20px";
+      this.changeDiv24.nativeElement.style.fontSize = "20px";
+      this.changeDiv25.nativeElement.style.fontSize = "20px";
+      this.changeDiv26.nativeElement.style.fontSize = "20px";
+      this.changeDiv27.nativeElement.style.fontSize = "20px";
+      this.changeDiv28.nativeElement.style.fontSize = "20px";
+      this.changeDiv29.nativeElement.style.fontSize = "20px";
+    } else if (e.value == 3) {
+      this.changeDiv.nativeElement.style.fontSize = "22px";
+      this.changeDiv1.nativeElement.style.fontSize = "22px";
+      this.changeDiv2.nativeElement.style.fontSize = "22px";
+      this.changeDiv3.nativeElement.style.fontSize = "22px";
+      this.changeDiv4.nativeElement.style.fontSize = "22px";
+      this.changeDiv5.nativeElement.style.fontSize = "22px";
+      this.changeDiv6.nativeElement.style.fontSize = "22px";
+      this.changeDiv7.nativeElement.style.fontSize = "22px";
+      this.changeDiv8.nativeElement.style.fontSize = "22px";
+      this.changeDiv9.nativeElement.style.fontSize = "22px";
+      this.changeDiv10.nativeElement.style.fontSize = "22px";
+      this.changeDiv11.nativeElement.style.fontSize = "22px";
+      this.changeDiv12.nativeElement.style.fontSize = "22px";
+      this.changeDiv13.nativeElement.style.fontSize = "22px";
+      this.changeDiv14.nativeElement.style.fontSize = "22px";
+      this.changeDiv15.nativeElement.style.fontSize = "22px";
+      this.changeDiv16.nativeElement.style.fontSize = "22px";
+      this.changeDiv17.nativeElement.style.fontSize = "22px";
+      this.changeDiv18.nativeElement.style.fontSize = "22px";
+      this.changeDiv19.nativeElement.style.fontSize = "22px";
+      this.changeDiv20.nativeElement.style.fontSize = "22px";
+      this.changeDiv21.nativeElement.style.fontSize = "22px";
+      this.changeDiv22.nativeElement.style.fontSize = "22px";
+      this.changeDiv23.nativeElement.style.fontSize = "22px";
+      this.changeDiv24.nativeElement.style.fontSize = "22px";
+      this.changeDiv25.nativeElement.style.fontSize = "22px";
+      this.changeDiv26.nativeElement.style.fontSize = "22px";
+      this.changeDiv27.nativeElement.style.fontSize = "22px";
+      this.changeDiv28.nativeElement.style.fontSize = "22px";
+      this.changeDiv29.nativeElement.style.fontSize = "22px";
+    } else if (e.value == 4) {
+      this.changeDiv.nativeElement.style.fontSize = "25px";
+      this.changeDiv1.nativeElement.style.fontSize = "25px";
+      this.changeDiv2.nativeElement.style.fontSize = "25px";
+      this.changeDiv3.nativeElement.style.fontSize = "25px";
+      this.changeDiv4.nativeElement.style.fontSize = "25px";
+      this.changeDiv5.nativeElement.style.fontSize = "25px";
+      this.changeDiv6.nativeElement.style.fontSize = "25px";
+      this.changeDiv7.nativeElement.style.fontSize = "25px";
+      this.changeDiv8.nativeElement.style.fontSize = "25px";
+      this.changeDiv9.nativeElement.style.fontSize = "25px";
+      this.changeDiv10.nativeElement.style.fontSize = "25px";
+      this.changeDiv11.nativeElement.style.fontSize = "25px";
+      this.changeDiv12.nativeElement.style.fontSize = "25px";
+      this.changeDiv13.nativeElement.style.fontSize = "25px";
+      this.changeDiv14.nativeElement.style.fontSize = "25px";
+      this.changeDiv15.nativeElement.style.fontSize = "25px";
+      this.changeDiv16.nativeElement.style.fontSize = "25px";
+      this.changeDiv17.nativeElement.style.fontSize = "25px";
+      this.changeDiv18.nativeElement.style.fontSize = "25px";
+      this.changeDiv19.nativeElement.style.fontSize = "25px";
+      this.changeDiv20.nativeElement.style.fontSize = "25px";
+      this.changeDiv21.nativeElement.style.fontSize = "25px";
+      this.changeDiv22.nativeElement.style.fontSize = "25px";
+      this.changeDiv23.nativeElement.style.fontSize = "25px";
+      this.changeDiv24.nativeElement.style.fontSize = "25px";
+      this.changeDiv25.nativeElement.style.fontSize = "25px";
+      this.changeDiv26.nativeElement.style.fontSize = "25px";
+      this.changeDiv27.nativeElement.style.fontSize = "25px";
+      this.changeDiv28.nativeElement.style.fontSize = "25px";
+      this.changeDiv29.nativeElement.style.fontSize = "25px";
+    } else if (e.value == 5) {
+      this.changeDiv.nativeElement.style.fontSize = "50px";
+      this.changeDiv1.nativeElement.style.fontSize = "50px";
+      this.changeDiv2.nativeElement.style.fontSize = "50px";
+      this.changeDiv3.nativeElement.style.fontSize = "50px";
+      this.changeDiv4.nativeElement.style.fontSize = "50px";
+      this.changeDiv5.nativeElement.style.fontSize = "50px";
     }
-    sliderFunction(e) {
+  }
+  constructor(
+    private fb: FormBuilder,
+    private apiService: CPCQService,
+    private router: Router,
+    private formService: FirstForm,
+    private domSanitizer: DomSanitizer,
+    public dialog: MatDialog
+  ) {}
+  openDialog(i, j, id) {
+    var arr = [];
+    arr.push(this.attributes[i]);
+    arr.push(j);
+    arr.push(this.columnHeadings[j]);
+    arr.push(id);
+    const dialogRef = this.dialog.open(DialogFormComponent, {
+      data: {
+        animal: arr,
+        status: "form",
+      },
+      disableClose: true,
+    });
+    dialogRef.afterClosed().subscribe((result) => {
+      if (this.responsesArray[i][j][1] == "colorbold") {
+        this.unpackedCount = this.unpackedCount + 1;
+        this.responsesArray[i][j][1] = "greencolorbold";
+      }
+    });
+  }
+
+  openWordDialog(i) {
+    //
+    this.buttonClick = true;
+    const dialogRef = this.dialog.open(DialogFormComponent, {
+      data: {
+        animal: i,
+        status: "word",
+      },
+      disableClose: true,
+    });
+
+    dialogRef.afterClosed().subscribe((result) => {
+      this.wordDescription = result;
+    });
+  }
+
+  helpDialog(i) {
+    //
+    this.dialog.open(DialogFormComponent, {
+      data: {
+        animal: i,
+        status: "help",
+      },
+    });
+  }
+
+  keyPressFunc(e) {
+    //
+    var numbersList = ["1"];
+    for (let key in this.attitudeForm.value) {
+      if (numbersList.indexOf(this.attitudeForm.value[key]) == -1) {
         //
-        this.sliderValue = e.value;
-        if (e.value == 1) {
-            this.changeDiv.nativeElement.style.fontSize = "15px";
-            this.changeDiv1.nativeElement.style.fontSize = "15px";
-            this.changeDiv2.nativeElement.style.fontSize = "15px";
-            this.changeDiv3.nativeElement.style.fontSize = "15px";
-            this.changeDiv4.nativeElement.style.fontSize = "15px";
-            this.changeDiv5.nativeElement.style.fontSize = "15px";
-            this.changeDiv6.nativeElement.style.fontSize = "15px";
-            this.changeDiv7.nativeElement.style.fontSize = "15px";
-            this.changeDiv8.nativeElement.style.fontSize = "15px";
-            this.changeDiv9.nativeElement.style.fontSize = "15px";
-            this.changeDiv10.nativeElement.style.fontSize = "15px";
-            this.changeDiv11.nativeElement.style.fontSize = "15px";
-            this.changeDiv12.nativeElement.style.fontSize = "15px";
-            this.changeDiv13.nativeElement.style.fontSize = "15px";
-            this.changeDiv14.nativeElement.style.fontSize = "15px";
-            this.changeDiv15.nativeElement.style.fontSize = "15px";
-            this.changeDiv16.nativeElement.style.fontSize = "15px";
-            this.changeDiv17.nativeElement.style.fontSize = "15px";
-            this.changeDiv18.nativeElement.style.fontSize = "15px";
-            this.changeDiv19.nativeElement.style.fontSize = "15px";
-            this.changeDiv20.nativeElement.style.fontSize = "15px";
-            this.changeDiv21.nativeElement.style.fontSize = "15px";
-            this.changeDiv22.nativeElement.style.fontSize = "15px";
-            this.changeDiv23.nativeElement.style.fontSize = "15px";
-            this.changeDiv24.nativeElement.style.fontSize = "15px";
-            this.changeDiv25.nativeElement.style.fontSize = "15px";
-            this.changeDiv26.nativeElement.style.fontSize = "15px";
-            this.changeDiv27.nativeElement.style.fontSize = "15px";
-            this.changeDiv28.nativeElement.style.fontSize = "15px";
-            this.changeDiv29.nativeElement.style.fontSize = "15px";
-        } else if (e.value == 2) {
-            this.changeDiv.nativeElement.style.fontSize = "20px";
-            this.changeDiv1.nativeElement.style.fontSize = "20px";
-            this.changeDiv2.nativeElement.style.fontSize = "20px";
-            this.changeDiv3.nativeElement.style.fontSize = "20px";
-            this.changeDiv4.nativeElement.style.fontSize = "20px";
-            this.changeDiv5.nativeElement.style.fontSize = "20px";
-            this.changeDiv6.nativeElement.style.fontSize = "20px";
-            this.changeDiv7.nativeElement.style.fontSize = "20px";
-            this.changeDiv8.nativeElement.style.fontSize = "20px";
-            this.changeDiv9.nativeElement.style.fontSize = "20px";
-            this.changeDiv10.nativeElement.style.fontSize = "20px";
-            this.changeDiv11.nativeElement.style.fontSize = "20px";
-            this.changeDiv12.nativeElement.style.fontSize = "20px";
-            this.changeDiv13.nativeElement.style.fontSize = "20px";
-            this.changeDiv14.nativeElement.style.fontSize = "20px";
-            this.changeDiv15.nativeElement.style.fontSize = "20px";
-            this.changeDiv16.nativeElement.style.fontSize = "20px";
-            this.changeDiv17.nativeElement.style.fontSize = "20px";
-            this.changeDiv18.nativeElement.style.fontSize = "20px";
-            this.changeDiv19.nativeElement.style.fontSize = "20px";
-            this.changeDiv20.nativeElement.style.fontSize = "20px";
-            this.changeDiv21.nativeElement.style.fontSize = "20px";
-            this.changeDiv22.nativeElement.style.fontSize = "20px";
-            this.changeDiv23.nativeElement.style.fontSize = "20px";
-            this.changeDiv24.nativeElement.style.fontSize = "20px";
-            this.changeDiv25.nativeElement.style.fontSize = "20px";
-            this.changeDiv26.nativeElement.style.fontSize = "20px";
-            this.changeDiv27.nativeElement.style.fontSize = "20px";
-            this.changeDiv28.nativeElement.style.fontSize = "20px";
-            this.changeDiv29.nativeElement.style.fontSize = "20px";
-        } else if (e.value == 3) {
-            this.changeDiv.nativeElement.style.fontSize = "22px";
-            this.changeDiv1.nativeElement.style.fontSize = "22px";
-            this.changeDiv2.nativeElement.style.fontSize = "22px";
-            this.changeDiv3.nativeElement.style.fontSize = "22px";
-            this.changeDiv4.nativeElement.style.fontSize = "22px";
-            this.changeDiv5.nativeElement.style.fontSize = "22px";
-            this.changeDiv6.nativeElement.style.fontSize = "22px";
-            this.changeDiv7.nativeElement.style.fontSize = "22px";
-            this.changeDiv8.nativeElement.style.fontSize = "22px";
-            this.changeDiv9.nativeElement.style.fontSize = "22px";
-            this.changeDiv10.nativeElement.style.fontSize = "22px";
-            this.changeDiv11.nativeElement.style.fontSize = "22px";
-            this.changeDiv12.nativeElement.style.fontSize = "22px";
-            this.changeDiv13.nativeElement.style.fontSize = "22px";
-            this.changeDiv14.nativeElement.style.fontSize = "22px";
-            this.changeDiv15.nativeElement.style.fontSize = "22px";
-            this.changeDiv16.nativeElement.style.fontSize = "22px";
-            this.changeDiv17.nativeElement.style.fontSize = "22px";
-            this.changeDiv18.nativeElement.style.fontSize = "22px";
-            this.changeDiv19.nativeElement.style.fontSize = "22px";
-            this.changeDiv20.nativeElement.style.fontSize = "22px";
-            this.changeDiv21.nativeElement.style.fontSize = "22px";
-            this.changeDiv22.nativeElement.style.fontSize = "22px";
-            this.changeDiv23.nativeElement.style.fontSize = "22px";
-            this.changeDiv24.nativeElement.style.fontSize = "22px";
-            this.changeDiv25.nativeElement.style.fontSize = "22px";
-            this.changeDiv26.nativeElement.style.fontSize = "22px";
-            this.changeDiv27.nativeElement.style.fontSize = "22px";
-            this.changeDiv28.nativeElement.style.fontSize = "22px";
-            this.changeDiv29.nativeElement.style.fontSize = "22px";
-        } else if (e.value == 4) {
-            this.changeDiv.nativeElement.style.fontSize = "25px";
-            this.changeDiv1.nativeElement.style.fontSize = "25px";
-            this.changeDiv2.nativeElement.style.fontSize = "25px";
-            this.changeDiv3.nativeElement.style.fontSize = "25px";
-            this.changeDiv4.nativeElement.style.fontSize = "25px";
-            this.changeDiv5.nativeElement.style.fontSize = "25px";
-            this.changeDiv6.nativeElement.style.fontSize = "25px";
-            this.changeDiv7.nativeElement.style.fontSize = "25px";
-            this.changeDiv8.nativeElement.style.fontSize = "25px";
-            this.changeDiv9.nativeElement.style.fontSize = "25px";
-            this.changeDiv10.nativeElement.style.fontSize = "25px";
-            this.changeDiv11.nativeElement.style.fontSize = "25px";
-            this.changeDiv12.nativeElement.style.fontSize = "25px";
-            this.changeDiv13.nativeElement.style.fontSize = "25px";
-            this.changeDiv14.nativeElement.style.fontSize = "25px";
-            this.changeDiv15.nativeElement.style.fontSize = "25px";
-            this.changeDiv16.nativeElement.style.fontSize = "25px";
-            this.changeDiv17.nativeElement.style.fontSize = "25px";
-            this.changeDiv18.nativeElement.style.fontSize = "25px";
-            this.changeDiv19.nativeElement.style.fontSize = "25px";
-            this.changeDiv20.nativeElement.style.fontSize = "25px";
-            this.changeDiv21.nativeElement.style.fontSize = "25px";
-            this.changeDiv22.nativeElement.style.fontSize = "25px";
-            this.changeDiv23.nativeElement.style.fontSize = "25px";
-            this.changeDiv24.nativeElement.style.fontSize = "25px";
-            this.changeDiv25.nativeElement.style.fontSize = "25px";
-            this.changeDiv26.nativeElement.style.fontSize = "25px";
-            this.changeDiv27.nativeElement.style.fontSize = "25px";
-            this.changeDiv28.nativeElement.style.fontSize = "25px";
-            this.changeDiv29.nativeElement.style.fontSize = "25px";
-        } else if (e.value == 5) {
-            this.changeDiv.nativeElement.style.fontSize = "50px";
-            this.changeDiv1.nativeElement.style.fontSize = "50px";
-            this.changeDiv2.nativeElement.style.fontSize = "50px";
-            this.changeDiv3.nativeElement.style.fontSize = "50px";
-            this.changeDiv4.nativeElement.style.fontSize = "50px";
-            this.changeDiv5.nativeElement.style.fontSize = "50px";
-        }
+        return "Number";
+      }
     }
-    constructor(
-        private fb: FormBuilder,
-        private apiService: CPCQService,
-        private router: Router,
-        private formService: FirstForm,
-        private domSanitizer: DomSanitizer,
-        public dialog: MatDialog
-    ) {}
-    openDialog(i, j, id) {
-        var arr = [];
-        arr.push(this.attributes[i]);
-        arr.push(j);
-        arr.push(this.columnHeadings[j]);
-        arr.push(id);
-        const dialogRef = this.dialog.open(DialogFormComponent, {
-            data: {
-                animal: arr,
-                status: "form",
-            },
-            disableClose: true,
-        });
-        dialogRef.afterClosed().subscribe((result) => {
-            if (this.responsesArray[i][j][1] == "colorbold") {
-                this.unpackedCount = this.unpackedCount + 1;
-                this.responsesArray[i][j][1] = "greencolorbold";
+  }
+
+  getEmailError() {
+    return "Error";
+  }
+  responsesArray = [];
+  responsesCount = 0;
+  temp = [];
+  getResponses() {
+    this.apiService.getResponsesData().subscribe((res) => {
+      for (let key in res) {
+        this.temp = [];
+        for (let key1 in res[key]) {
+          if (res[key][key1] == "colorbold") {
+            this.responsesCount = this.responsesCount + 1;
+          }
+          if (res[key][key1][1] == "greencolorbold") {
+            this.unpackedCount = this.unpackedCount + 1;
+            console.log(this.unpackedCount);
+          }
+
+          this.temp.push(res[key][key1]);
+        }
+        this.responsesArray.push(this.temp);
+      }
+    });
+  }
+
+  getForm() {
+    var arr = [];
+    var arr1 = [];
+    var arr2 = [];
+    var i;
+    var attitudeResult = [];
+    var empathyResult = [];
+    var policyResult = [];
+    var profResult = [];
+    var teachingResult = [];
+    this.finalList = [[]];
+    this.boldList = [[]];
+    this.apiService.getFormData().subscribe((res) => {
+      for (let key in res) {
+        arr = [];
+        if (res[key]["topic"] == "Attitude") {
+          attitudeResult.push("Attitude");
+          arr.push("Attitude");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          attitudeResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+        } else if (res[key]["topic"] == "Empathy") {
+          empathyResult.push("Empathy");
+          arr.push("Empathy");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          empathyResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+        } else if (res[key]["topic"] == "Policy") {
+          policyResult.push("Policy");
+          arr.push("Policy");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+
+          policyResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          policyResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+        } else if (res[key]["topic"] == "Professionalism") {
+          profResult.push("Professionalism");
+          arr.push("Professionalism");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+
+          profResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          profResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+        } else if (res[key]["topic"] == "Teaching Practice") {
+          arr.push("Teaching Pracice");
+          arr.push(res[key]["culturalDestructiveness"]);
+          arr.push(res[key]["culturalIncapacity"]);
+          arr.push(res[key]["culturalBlindness"]);
+          arr.push(res[key]["culturalPreCompetence"]);
+          arr.push(res[key]["culturalCompetence"]);
+          arr.push(res[key]["culturalProficiency"]);
+          teachingResult.push("Teaching Practice");
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
+          teachingResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
+        }
+
+        this.boldList.push(arr);
+      }
+      this.finalList.push(attitudeResult);
+      this.finalList.push(empathyResult);
+      this.finalList.push(policyResult);
+      this.finalList.push(profResult);
+      this.finalList.push(teachingResult);
+    });
+    this.finalList.splice(0, 1);
+    this.boldList.splice(0, 1);
+    // this.getAllIndexes(this.finalList,1)
+  }
+
+  emoji: any;
+  changeEmojiSize(data) {
+    document.getElementById("angry").style.height = "30px";
+    document.getElementById("angry").style.width = "30px";
+    document.getElementById("sad").style.height = "30px";
+    document.getElementById("sad").style.width = "30px";
+    document.getElementById("neutral").style.height = "30px";
+    document.getElementById("neutral").style.width = "30px";
+    document.getElementById("smile").style.height = "30px";
+    document.getElementById("smile").style.width = "30px";
+    document.getElementById("heart").style.height = "30px";
+    document.getElementById("heart").style.width = "30px";
+    document.getElementById(data).style.height = "50px";
+    document.getElementById(data).style.width = "50px";
+
+    this.emoji = data;
+  }
+
+  thumbs: any;
+  changeThumbsSize(data) {
+    document.getElementById("thumbsup").style.height = "30px";
+    document.getElementById("thumbsup").style.width = "30px";
+    document.getElementById("thumbsdown").style.height = "30px";
+    document.getElementById("thumbsdown").style.width = "30px";
+
+    document.getElementById(data).style.height = "50px";
+    document.getElementById(data).style.width = "50px";
+    this.thumbs = data;
+  }
+  finalSubmit() {
+    this.finalFeedbackForm.value["q6"] = this.thumbs;
+    this.finalFeedbackForm.value["q7"] = this.emoji;
+
+    this.endTime = new Date();
+
+    this.durationTime = (this.endTime - this.startTime) / 1000;
+    this.durationTime = this.durationTime / 60;
+
+    this.apiService.patchStatus("finalfeedbackstatus").subscribe((res) => {});
+
+    this.apiService.postFeedbackForm(this.finalFeedbackForm.value).subscribe(
+      (res) => {
+        this.apiService.changeCPCQStatus().subscribe((res1) => {
+          Swal.fire({
+            text: "Submitted",
+            icon: "success",
+          }).then((res) => {
+            if (res["isConfirmed"]) {
+              this.router.navigateByUrl("/result");
             }
+          });
         });
-    }
-
-    openWordDialog(i) {
+      },
+      (err) => {}
+    );
+  }
+  ngOnInit(): void {
+    this.getResponses();
+    this.startTime = new Date();
+    this.finalFeedbackForm = this.fb.group({
+      q1: [""],
+      q2: [""],
+      q3: [""],
+      q4: [""],
+      q5: [""],
+      q6: [""],
+      q7: [""],
+    });
+
+    this.apiService.attitudeData().subscribe(
+      (res) => {
         //
-        this.buttonClick = true;
-        const dialogRef = this.dialog.open(DialogFormComponent, {
-            data: {
-                animal: i,
-                status: "word",
-            },
-            disableClose: true,
-        });
-
-        dialogRef.afterClosed().subscribe((result) => {
-            this.wordDescription = result;
-        });
-    }
-
-    helpDialog(i) {
+        this.attitude = res[0];
         //
-        this.dialog.open(DialogFormComponent, {
-            data: {
-                animal: i,
-                status: "help",
-            },
-        });
-    }
+      },
+      (err) => {}
+    );
 
-    keyPressFunc(e) {
+    this.apiService.empathyData().subscribe(
+      (res) => {
         //
-        var numbersList = ["1"];
-        for (let key in this.attitudeForm.value) {
-            if (numbersList.indexOf(this.attitudeForm.value[key]) == -1) {
-                //
-                return "Number";
+        this.empathy = res[0];
+        //
+      },
+      (err) => {}
+    );
+
+    this.apiService.policyData().subscribe(
+      (res) => {
+        this.policy = res[0];
+      },
+      (err) => {}
+    );
+
+    this.apiService.professionalismData().subscribe(
+      (res) => {
+        this.professionalism = res[0];
+      },
+      (err) => {}
+    );
+
+    this.apiService.teachingData().subscribe(
+      (res) => {
+        this.teachingPractice = res[0];
+      },
+      (err) => {}
+    );
+
+    this.attitudeForm = this.fb.group({
+      A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      description: ["", [Validators.required]],
+    });
+
+    this.empathyForm = this.fb.group({
+      A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+    });
+
+    this.policyForm = this.fb.group({
+      A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+    });
+
+    var arr = [];
+    var arr1 = [];
+    var arr2 = [];
+    var i;
+    for (var j = 0; j < 5; j++) {
+      arr = [];
+      arr1 = [];
+      arr2 = [];
+      i = 0;
+      while (i < 6) {
+        var item1 = Math.floor(Math.random() * (7 - 1) + 1);
+        if (arr1.indexOf(item1) == -1) {
+          if (i == 0) {
+            arr.push(this.attributes[j]);
+            arr.push(this.rowLetters[j][i] + ". " + item1);
+            arr1.push(item1);
+            if (arr1[arr1.length - 1] > 2) {
+              //
+              arr2.push("True");
+            } else {
+              arr2.push("False");
             }
+          } else {
+            arr.push(this.rowLetters[j][i] + ". " + item1);
+            arr1.push(item1);
+            if (i == 1) {
+              if (arr1[arr1.length - 1] > 3) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
+            } else if (i == 2) {
+              if (arr1[arr1.length - 1] > 4 || arr1[arr1.length - 1] == 1) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
+            } else if (i == 3) {
+              if (arr1[arr1.length - 1] > 5 || arr1[arr1.length - 1] < 4) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
+            } else if (i == 4) {
+              if (arr1[arr1.length - 1] < 4) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
+            } else if (i == 5) {
+              if (arr1[arr1.length - 1] < 5) {
+                arr2.push("True");
+              } else {
+                arr2.push("False");
+              }
+            }
+          }
+          i = i + 1;
+        } else {
+          continue;
         }
+      }
+      this.formValues.push(arr);
+      this.boldList.push(arr1);
+      this.randomList.push(arr2);
     }
-
-    getEmailError() {
-        return "Error";
-    }
-    responsesArray = [];
-    responsesCount = 0;
-    temp = [];
-    getResponses() {
-        this.apiService.getResponsesData().subscribe((res) => {
-            for (let key in res) {
-                this.temp = [];
-                for (let key1 in res[key]) {
-                    if (res[key][key1] == "colorbold") {
-                        this.responsesCount = this.responsesCount + 1;
-                    }
-                    if (res[key][key1][1] == "greencolorbold") {
-                        this.unpackedCount = this.unpackedCount + 1;
-                        console.log(this.unpackedCount);
-                    }
-
-                    this.temp.push(res[key][key1]);
-                }
-                this.responsesArray.push(this.temp);
-            }
-        });
+    this.boldList.splice(0, 1);
+    this.randomList.splice(0, 1);
+
+    this.getAllIndexes(this.randomList, "True");
+    this.loaded = true;
+  }
+
+  getAllIndexes(arr, val) {
+    var indexes = [];
+    var i = -1;
+    for (var i = 0; i < arr.length; i++) {
+      for (var j = 0; j < arr[i].length; j++) {
+        if (arr[i][j] == "True") {
+          var arr1 = [];
+          arr1.push(i);
+          arr1.push(j);
+          indexes.push(arr1);
+        }
+      }
     }
 
-    getForm() {
-        var arr = [];
-        var arr1 = [];
-        var arr2 = [];
-        var i;
-        var attitudeResult = [];
-        var empathyResult = [];
-        var policyResult = [];
-        var profResult = [];
-        var teachingResult = [];
-        this.finalList = [[]];
-        this.boldList = [[]];
-        this.apiService.getFormData().subscribe((res) => {
-            for (let key in res) {
-                arr = [];
-                if (res[key]["topic"] == "Attitude") {
-                    attitudeResult.push("Attitude");
-                    arr.push("Attitude");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
-                    );
-                    attitudeResult.push(
-                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
-                    );
-                } else if (res[key]["topic"] == "Empathy") {
-                    empathyResult.push("Empathy");
-                    arr.push("Empathy");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
-                    );
-                    empathyResult.push(
-                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
-                    );
-                } else if (res[key]["topic"] == "Policy") {
-                    policyResult.push("Policy");
-                    arr.push("Policy");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
-                    );
-                    policyResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
-                    );
-                    policyResult.push(
-                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
-                    );
-                } else if (res[key]["topic"] == "Professionalism") {
-                    profResult.push("Professionalism");
-                    arr.push("Professionalism");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-
-                    profResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    profResult.push(Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0);
-                    profResult.push(Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0);
-                    profResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    profResult.push(Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0);
-                    profResult.push(Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0);
-                } else if (res[key]["topic"] == "Teaching Practice") {
-                    arr.push("Teaching Pracice");
-                    arr.push(res[key]["culturalDestructiveness"]);
-                    arr.push(res[key]["culturalIncapacity"]);
-                    arr.push(res[key]["culturalBlindness"]);
-                    arr.push(res[key]["culturalPreCompetence"]);
-                    arr.push(res[key]["culturalCompetence"]);
-                    arr.push(res[key]["culturalProficiency"]);
-                    teachingResult.push("Teaching Practice");
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalDestructiveness"].split(".")[1]) - 1) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalIncapacity"].split(".")[1]) - 2) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalBlindness"].split(".")[1]) - 3) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalPreCompetence"].split(".")[1]) - 4) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalCompetence"].split(".")[1]) - 5) >= 2 ? 1 : 0
-                    );
-                    teachingResult.push(
-                        Math.abs(parseInt(res[key]["culturalProficiency"].split(".")[1]) - 6) >= 2 ? 1 : 0
-                    );
-                }
-
-                this.boldList.push(arr);
-            }
-            this.finalList.push(attitudeResult);
-            this.finalList.push(empathyResult);
-            this.finalList.push(policyResult);
-            this.finalList.push(profResult);
-            this.finalList.push(teachingResult);
-        });
-        this.finalList.splice(0, 1);
-        this.boldList.splice(0, 1);
-        // this.getAllIndexes(this.finalList,1)
+    var arr1 = [];
+    for (var i = 0; i < indexes.length; i++) {
+      arr1.push(i);
     }
-
-    emoji: any;
-    changeEmojiSize(data) {
-        document.getElementById("angry").style.height = "30px";
-        document.getElementById("angry").style.width = "30px";
-        document.getElementById("sad").style.height = "30px";
-        document.getElementById("sad").style.width = "30px";
-        document.getElementById("neutral").style.height = "30px";
-        document.getElementById("neutral").style.width = "30px";
-        document.getElementById("smile").style.height = "30px";
-        document.getElementById("smile").style.width = "30px";
-        document.getElementById("heart").style.height = "30px";
-        document.getElementById("heart").style.width = "30px";
-        document.getElementById(data).style.height = "50px";
-        document.getElementById(data).style.width = "50px";
-
-        this.emoji = data;
+    var ranNums = [];
+    var i = arr1.length;
+    var j = 0;
+    var count = 0;
+    while (i--) {
+      if (count < 5) {
+        j = Math.floor(Math.random() * (i + 1));
+        ranNums.push(arr1[j]);
+        arr1.splice(j, 1);
+        count = count + 1;
+      } else {
+        break;
+      }
     }
 
-    thumbs: any;
-    changeThumbsSize(data) {
-        document.getElementById("thumbsup").style.height = "30px";
-        document.getElementById("thumbsup").style.width = "30px";
-        document.getElementById("thumbsdown").style.height = "30px";
-        document.getElementById("thumbsdown").style.width = "30px";
-
-        document.getElementById(data).style.height = "50px";
-        document.getElementById(data).style.width = "50px";
-        this.thumbs = data;
+    //
+    for (var i = 0; i < this.boldList.length; i++) {
+      var temp = [];
+      for (var j = 0; j < 6; j++) {
+        temp.push("False");
+      }
+      this.finalList1.push(temp);
     }
-    finalSubmit() {
-        this.finalFeedbackForm.value["q6"] = this.thumbs;
-        this.finalFeedbackForm.value["q7"] = this.emoji;
 
-        this.endTime = new Date();
-
-        this.durationTime = (this.endTime - this.startTime) / 1000;
-        this.durationTime = this.durationTime / 60;
+    for (var i = 0; i < ranNums.length; i++) {
+      var item = indexes[ranNums[i]];
 
-        this.apiService.patchStatus("finalfeedbackstatus").subscribe((res) => {});
-
-        this.apiService.postFeedbackForm(this.finalFeedbackForm.value).subscribe(
-            (res) => {
-                this.apiService.changeCPCQStatus().subscribe((res1) => {
-                    Swal.fire({
-                        text: "Submitted",
-                        icon: "success",
-                    }).then((res) => {
-                        if (res["isConfirmed"]) {
-                            this.router.navigateByUrl("/result");
-                        }
-                    });
-                });
-            },
-            (err) => {}
-        );
+      this.finalList1[item[0]][item[1]] = "True";
     }
-    ngOnInit(): void {
-        this.getResponses();
-        this.startTime = new Date();
-        this.finalFeedbackForm = this.fb.group({
-            q1: [""],
-            q2: [""],
-            q3: [""],
-            q4: [""],
-            q5: [""],
-            q6: [""],
-            q7: [""],
-        });
-
-        this.apiService.attitudeData().subscribe(
-            (res) => {
-                //
-                this.attitude = res[0];
-                //
-            },
-            (err) => {}
-        );
-
-        this.apiService.empathyData().subscribe(
-            (res) => {
-                //
-                this.empathy = res[0];
-                //
-            },
-            (err) => {}
-        );
-
-        this.apiService.policyData().subscribe(
-            (res) => {
-                this.policy = res[0];
-            },
-            (err) => {}
-        );
-
-        this.apiService.professionalismData().subscribe(
-            (res) => {
-                this.professionalism = res[0];
-            },
-            (err) => {}
-        );
-
-        this.apiService.teachingData().subscribe(
-            (res) => {
-                this.teachingPractice = res[0];
-            },
-            (err) => {}
-        );
-
-        this.attitudeForm = this.fb.group({
-            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            description: ["", [Validators.required]],
-        });
-
-        this.empathyForm = this.fb.group({
-            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-        });
-
-        this.policyForm = this.fb.group({
-            A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-        });
-
-        var arr = [];
-        var arr1 = [];
-        var arr2 = [];
-        var i;
-        for (var j = 0; j < 5; j++) {
-            arr = [];
-            arr1 = [];
-            arr2 = [];
-            i = 0;
-            while (i < 6) {
-                var item1 = Math.floor(Math.random() * (7 - 1) + 1);
-                if (arr1.indexOf(item1) == -1) {
-                    if (i == 0) {
-                        arr.push(this.attributes[j]);
-                        arr.push(this.rowLetters[j][i] + ". " + item1);
-                        arr1.push(item1);
-                        if (arr1[arr1.length - 1] > 2) {
-                            //
-                            arr2.push("True");
-                        } else {
-                            arr2.push("False");
-                        }
-                    } else {
-                        arr.push(this.rowLetters[j][i] + ". " + item1);
-                        arr1.push(item1);
-                        if (i == 1) {
-                            if (arr1[arr1.length - 1] > 3) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        } else if (i == 2) {
-                            if (arr1[arr1.length - 1] > 4 || arr1[arr1.length - 1] == 1) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        } else if (i == 3) {
-                            if (arr1[arr1.length - 1] > 5 || arr1[arr1.length - 1] < 4) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        } else if (i == 4) {
-                            if (arr1[arr1.length - 1] < 4) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        } else if (i == 5) {
-                            if (arr1[arr1.length - 1] < 5) {
-                                arr2.push("True");
-                            } else {
-                                arr2.push("False");
-                            }
-                        }
-                    }
-                    i = i + 1;
-                } else {
-                    continue;
-                }
-            }
-            this.formValues.push(arr);
-            this.boldList.push(arr1);
-            this.randomList.push(arr2);
-        }
-        this.boldList.splice(0, 1);
-        this.randomList.splice(0, 1);
-
-        this.getAllIndexes(this.randomList, "True");
-        this.loaded = true;
+    // this.finalList1.splice(0,1)
+  }
+  preSurvey() {
+    this.router.navigateByUrl("/preSurvey");
+  }
+
+  nextButton() {
+    if (this.selectedIndex == 0) {
+      this.selectedIndex = this.selectedIndex + 1;
+      return;
     }
-
-    getAllIndexes(arr, val) {
-        var indexes = [];
-        var i = -1;
-        for (var i = 0; i < arr.length; i++) {
-            for (var j = 0; j < arr[i].length; j++) {
-                if (arr[i][j] == "True") {
-                    var arr1 = [];
-                    arr1.push(i);
-                    arr1.push(j);
-                    indexes.push(arr1);
-                }
-            }
-        }
-
-        var arr1 = [];
-        for (var i = 0; i < indexes.length; i++) {
-            arr1.push(i);
-        }
-        var ranNums = [];
-        var i = arr1.length;
-        var j = 0;
-        var count = 0;
-        while (i--) {
-            if (count < 5) {
-                j = Math.floor(Math.random() * (i + 1));
-                ranNums.push(arr1[j]);
-                arr1.splice(j, 1);
-                count = count + 1;
-            } else {
-                break;
-            }
-        }
-
-        //
-        for (var i = 0; i < this.boldList.length; i++) {
-            var temp = [];
-            for (var j = 0; j < 6; j++) {
-                temp.push("False");
-            }
-            this.finalList1.push(temp);
-        }
-
-        for (var i = 0; i < ranNums.length; i++) {
-            var item = indexes[ranNums[i]];
-
-            this.finalList1[item[0]][item[1]] = "True";
-        }
-        // this.finalList1.splice(0,1)
+    if (this.selectedIndex == 7) {
+      this.router.navigateByUrl("/dashboard");
+      return;
     }
-    preSurvey() {
-        this.router.navigateByUrl("/preSurvey");
-    }
-
-    nextButton() {
-        if (this.selectedIndex == 0) {
-            this.selectedIndex = this.selectedIndex + 1;
-            return;
-        }
-        if (this.selectedIndex == 7) {
-            this.router.navigateByUrl("/dashboard");
-            return;
-        }
 
-        var numberList = [];
-        var flag = true;
-        for (let key in this.attitudeForm.value) {
-            if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
-                flag = false;
-                Swal.fire({
-                    text: "Please enter values from 1 through 6 only.",
-                    icon: "warning",
-                }).then((res) => {});
-                break;
-            }
-            if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
-                numberList.push(this.attitudeForm.value[key]);
-            } else {
-                flag = false;
-                Swal.fire({
-                    text: "The inputs have been repeated. Please enter values from 1 through 6.",
-                    icon: "warning",
-                }).then((res) => {});
-                break;
-            }
-        }
-        if (!this.buttonClick) {
-            flag = false;
-            Swal.fire({
-                text: "Click on the word '" + this.attributes[this.selectedIndex - 1] + "' and respond to the prompt.",
-                icon: "warning",
-            }).then((res) => {});
-        }
-        if (flag) {
-            if (this.selectedIndex == 7) {
-                this.router.navigateByUrl("/postSurvey");
-            }
-            this.sliderFunction1();
-            var formData = {};
-            formData["topic"] = this.attributes[this.selectedIndex - 1];
-            if (this.attributes[this.selectedIndex - 1] == "Attitude") {
-                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalCompetence"] = "F. " + this.attitudeForm.value["F"];
-                formData["culturalProficiency"] = "E. " + this.attitudeForm.value["E"];
-            } else if (this.attributes[this.selectedIndex - 1] == "Empathy") {
-                formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalBlindness"] = "F. " + this.attitudeForm.value["F"];
-                formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalCompetence"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalProficiency"] = "C. " + this.attitudeForm.value["C"];
-            } else if (this.attributes[this.selectedIndex - 1] == "Policy") {
-                formData["culturalDestructiveness"] = "F. " + this.attitudeForm.value["F"];
-                formData["culturalIncapacity"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalCompetence"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalProficiency"] = "A. " + this.attitudeForm.value["A"];
-            } else if (this.attributes[this.selectedIndex - 1] == "Professionalism") {
-                formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalCompetence"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
-            } else if (this.attributes[this.selectedIndex - 1] == "Teaching Practice") {
-                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
-            }
-
-            this.endTime = new Date();
-
-            this.durationTime = (this.endTime - this.startTime) / 1000;
-            this.durationTime = this.durationTime / 60;
-
-            formData["description"] = this.wordDescription;
-            formData["duration"] = this.durationTime;
-            this.apiService.postFormData(formData).subscribe(
-                (res) => {
-                    //
-                },
-                (err) => {}
-            );
-            // this.getForm();
-            this.selectedIndex = this.selectedIndex + 1;
-            this.buttonClick = false;
-            this.startTime = new Date();
-            this.attitudeForm = this.fb.group({
-                A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-                F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
-            });
-        }
+    var numberList = [];
+    var flag = true;
+    for (let key in this.attitudeForm.value) {
+      if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
+        flag = false;
+        Swal.fire({
+          text: "Please enter values from 1 through 6 only.",
+          icon: "warning",
+        }).then((res) => {});
+        break;
+      }
+      if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
+        numberList.push(this.attitudeForm.value[key]);
+      } else {
+        flag = false;
+        Swal.fire({
+          text: "The inputs have been repeated. Please enter values from 1 through 6.",
+          icon: "warning",
+        }).then((res) => {});
+        break;
+      }
     }
-
-    postSurvey() {
+    if (!this.buttonClick) {
+      flag = false;
+      Swal.fire({
+        text: "Click on the word '" + this.attributes[this.selectedIndex - 1] + "' and respond to the prompt.",
+        icon: "warning",
+      }).then((res) => {});
+    }
+    if (flag) {
+      if (this.selectedIndex == 7) {
         this.router.navigateByUrl("/postSurvey");
+      }
+      this.sliderFunction1();
+      var formData = {};
+      formData["topic"] = this.attributes[this.selectedIndex - 1];
+      if (this.attributes[this.selectedIndex - 1] == "Attitude") {
+        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalCompetence"] = "F. " + this.attitudeForm.value["F"];
+        formData["culturalProficiency"] = "E. " + this.attitudeForm.value["E"];
+      } else if (this.attributes[this.selectedIndex - 1] == "Empathy") {
+        formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalBlindness"] = "F. " + this.attitudeForm.value["F"];
+        formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalCompetence"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalProficiency"] = "C. " + this.attitudeForm.value["C"];
+      } else if (this.attributes[this.selectedIndex - 1] == "Policy") {
+        formData["culturalDestructiveness"] = "F. " + this.attitudeForm.value["F"];
+        formData["culturalIncapacity"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalCompetence"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalProficiency"] = "A. " + this.attitudeForm.value["A"];
+      } else if (this.attributes[this.selectedIndex - 1] == "Professionalism") {
+        formData["culturalDestructiveness"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalIncapacity"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalCompetence"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+      } else if (this.attributes[this.selectedIndex - 1] == "Teaching Practice") {
+        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
+      }
+
+      this.endTime = new Date();
+
+      this.durationTime = (this.endTime - this.startTime) / 1000;
+      this.durationTime = this.durationTime / 60;
+
+      formData["description"] = this.wordDescription;
+      formData["duration"] = this.durationTime;
+      this.apiService.postFormData(formData).subscribe(
+        (res) => {
+          //
+        },
+        (err) => {}
+      );
+      // this.getForm();
+      this.selectedIndex = this.selectedIndex + 1;
+      this.buttonClick = false;
+      this.startTime = new Date();
+      this.attitudeForm = this.fb.group({
+        A: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        B: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        C: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        D: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        E: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+        F: ["", [Validators.minLength(1), Validators.maxLength(1)]],
+      });
     }
-
-    submitForm1() {
-        if (this.unpackedCount >= 5) {
-            this.endTime = new Date();
-
-            this.durationTime = (this.endTime - this.startTime) / 1000;
-            this.durationTime = this.durationTime / 60;
-            this.apiService.patchStatus("cpcqstatus").subscribe((res) => {
-                Swal.fire({
-                    text: "Submitted",
-                    icon: "success",
-                }).then((res) => {
-                    if (res["isConfirmed"]) {
-                        // this.getForm()
-                        // this.selectedIndex = this.selectedIndex + 1;
-                        this.router.navigateByUrl("/finalFeedback");
-                    }
-                });
-            });
-        } else {
-            Swal.fire({
-                text: "Please click on all the yellow boxes and answer the questions in the prompt.",
-                icon: "warning",
-            }).then((res) => {});
-        }
+  }
+
+  postSurvey() {
+    this.router.navigateByUrl("/postSurvey");
+  }
+
+  submitForm1() {
+    if (this.unpackedCount >= 5) {
+      this.endTime = new Date();
+
+      this.durationTime = (this.endTime - this.startTime) / 1000;
+      this.durationTime = this.durationTime / 60;
+      this.apiService.patchStatus("cpcqstatus").subscribe((res) => {
+        Swal.fire({
+          text: "Submitted",
+          icon: "success",
+        }).then((res) => {
+          if (res["isConfirmed"]) {
+            // this.getForm()
+            // this.selectedIndex = this.selectedIndex + 1;
+            this.router.navigateByUrl("/finalFeedback");
+          }
+        });
+      });
+    } else {
+      Swal.fire({
+        text: "Please click on all the yellow boxes and answer the questions in the prompt.",
+        icon: "warning",
+      }).then((res) => {});
     }
-
-    submitForm() {
-        if (this.selectedIndex >= this.responsesCount) {
-            var numberList = [];
-            var flag = false;
-
-            for (let key in this.attitudeForm.value) {
-                if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
-                    flag = true;
-                    Swal.fire({
-                        text: "Please enter values from 1 through 6 only.",
-                        icon: "warning",
-                    }).then((res) => {});
-                    break;
-                }
-                if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
-                    numberList.push(this.attitudeForm.value[key]);
-                } else {
-                    flag = true;
-                    Swal.fire({
-                        text: "The inputs have been repeated. Please enter values from 1 through 6.",
-                        icon: "warning",
-                    }).then((res) => {});
-                    break;
-                }
-            }
-            if (!this.buttonClick) {
-                flag = true;
-                Swal.fire({
-                    text:
-                        "Click on the word '" +
-                        this.attributes[this.selectedIndex - 1] +
-                        "' and respond to the prompt.",
-                    icon: "warning",
-                }).then((res) => {});
-            }
-            if (!flag) {
-                //
-                var formData = {};
-
-                formData["topic"] = this.attributes[this.selectedIndex - 1];
-                formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
-                formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
-                formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
-                formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
-                formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
-                formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
-
-                formData["description"] = this.wordDescription;
-                this.endTime = new Date();
-
-                this.durationTime = (this.endTime - this.startTime) / 1000;
-                this.durationTime = this.durationTime / 60;
-
-                formData["duration"] = this.durationTime;
-                this.apiService.postFormData(formData).subscribe(
-                    (res) => {
-                        //
-                        this.apiService.patchStatus("responsesstatus").subscribe((res) => {
-                            Swal.fire({
-                                text: "Submitted",
-                                icon: "success",
-                            }).then((res) => {
-                                if (res["isConfirmed"]) {
-                                    // this.getForm()
-                                    this.getResponses();
-
-                                    this.selectedIndex = this.selectedIndex + 1;
-                                    this.startTime = new Date();
-                                }
-                            });
-                        });
-                    },
-                    (err) => {}
-                );
-            }
+  }
+
+  submitForm() {
+    if (this.selectedIndex >= this.responsesCount) {
+      var numberList = [];
+      var flag = false;
+
+      for (let key in this.attitudeForm.value) {
+        if ((this.attitudeForm.value[key] > 6 || this.attitudeForm.value[key] < 1) && key != "description") {
+          flag = true;
+          Swal.fire({
+            text: "Please enter values from 1 through 6 only.",
+            icon: "warning",
+          }).then((res) => {});
+          break;
         }
-    }
-
-    submit() {
-        //
-        var tempDict;
-        this.responseList = [];
-        for (let key in this.firstForm.value) {
-            tempDict = {};
-            tempDict["question"] = key;
-            tempDict["response"] = this.firstForm.value[key];
-            this.responseList.push(tempDict);
+        if (numberList.indexOf(this.attitudeForm.value[key]) == -1) {
+          numberList.push(this.attitudeForm.value[key]);
+        } else {
+          flag = true;
+          Swal.fire({
+            text: "The inputs have been repeated. Please enter values from 1 through 6.",
+            icon: "warning",
+          }).then((res) => {});
+          break;
         }
+      }
+      if (!this.buttonClick) {
+        flag = true;
+        Swal.fire({
+          text: "Click on the word '" + this.attributes[this.selectedIndex - 1] + "' and respond to the prompt.",
+          icon: "warning",
+        }).then((res) => {});
+      }
+      if (!flag) {
         //
+        var formData = {};
 
-        this.formService.submitResponse(this.responseList).subscribe(
-            (res) => {
-                //
-                Swal.fire({
-                    text: "Submitted",
-                    icon: "success",
-                });
-                this.router.navigateByUrl("/game");
-            },
-            (err) => {
-                Swal.fire({
-                    text: "Duplicate Entries",
-                    icon: "warning",
-                });
-            }
-        );
-    }
+        formData["topic"] = this.attributes[this.selectedIndex - 1];
+        formData["culturalDestructiveness"] = "D. " + this.attitudeForm.value["D"];
+        formData["culturalIncapacity"] = "C. " + this.attitudeForm.value["C"];
+        formData["culturalBlindness"] = "B. " + this.attitudeForm.value["B"];
+        formData["culturalPreCompetence"] = "E. " + this.attitudeForm.value["E"];
+        formData["culturalCompetence"] = "A. " + this.attitudeForm.value["A"];
+        formData["culturalProficiency"] = "F. " + this.attitudeForm.value["F"];
 
-    title = "micRecorder";
-    //Lets declare Record OBJ
-    record;
-    //Will use this flag for toggeling recording
-    recording = false;
-    //URL of Blob
-    url;
-    error;
-    sanitize(url: string) {
-        return this.domSanitizer.bypassSecurityTrustUrl(url);
-    }
-    /**
-     * Start recording.
-     */
-    initiateRecording() {
-        this.recording = true;
-        let mediaConstraints = {
-            video: false,
-            audio: true,
-        };
-        navigator.mediaDevices
-            .getUserMedia(mediaConstraints)
-            .then(this.successCallback.bind(this), this.errorCallback.bind(this));
-    }
-    /**
-     * Will be called automatically.
-     */
-    successCallback(stream) {
-        var options = {
-            mimeType: "audio/wav",
-            numberOfAudioChannels: 1,
-            // sampleRate: 16000,
-        };
-        //Start Actuall Recording
-        var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
-        this.record = new StereoAudioRecorder(stream, options);
-        this.record.record();
+        formData["description"] = this.wordDescription;
+        this.endTime = new Date();
+
+        this.durationTime = (this.endTime - this.startTime) / 1000;
+        this.durationTime = this.durationTime / 60;
+
+        formData["duration"] = this.durationTime;
+        this.apiService.postFormData(formData).subscribe(
+          (res) => {
+            //
+            this.apiService.patchStatus("responsesstatus").subscribe((res) => {
+              Swal.fire({
+                text: "Submitted",
+                icon: "success",
+              }).then((res) => {
+                if (res["isConfirmed"]) {
+                  // this.getForm()
+                  this.getResponses();
+
+                  this.selectedIndex = this.selectedIndex + 1;
+                  this.startTime = new Date();
+                }
+              });
+            });
+          },
+          (err) => {}
+        );
+      }
     }
-    /**
-     * Stop recording.
-     */
-    stopRecording() {
-        this.recording = false;
-        this.record.stop(this.processRecording.bind(this));
+  }
+
+  submit() {
+    //
+    var tempDict;
+    this.responseList = [];
+    for (let key in this.firstForm.value) {
+      tempDict = {};
+      tempDict["question"] = key;
+      tempDict["response"] = this.firstForm.value[key];
+      this.responseList.push(tempDict);
     }
-    /**
-     * processRecording Do what ever you want with blob
-     * @param  {any} blob Blog
-     */
-    processRecording(blob) {
-        this.url = URL.createObjectURL(blob);
-        //
+    //
+
+    this.formService.submitResponse(this.responseList).subscribe(
+      (res) => {
         //
-    }
-    /**
-     * Process Error.
-     */
-    errorCallback(error) {
-        this.error = "Can not play audio in your browser";
-    }
+        Swal.fire({
+          text: "Submitted",
+          icon: "success",
+        });
+        this.router.navigateByUrl("/game");
+      },
+      (err) => {
+        Swal.fire({
+          text: "Duplicate Entries",
+          icon: "warning",
+        });
+      }
+    );
+  }
+
+  title = "micRecorder";
+  //Lets declare Record OBJ
+  record;
+  //Will use this flag for toggeling recording
+  recording = false;
+  //URL of Blob
+  url;
+  error;
+  sanitize(url: string) {
+    return this.domSanitizer.bypassSecurityTrustUrl(url);
+  }
+  /**
+   * Start recording.
+   */
+  initiateRecording() {
+    this.recording = true;
+    let mediaConstraints = {
+      video: false,
+      audio: true,
+    };
+    navigator.mediaDevices
+      .getUserMedia(mediaConstraints)
+      .then(this.successCallback.bind(this), this.errorCallback.bind(this));
+  }
+  /**
+   * Will be called automatically.
+   */
+  successCallback(stream) {
+    var options = {
+      mimeType: "audio/wav",
+      numberOfAudioChannels: 1,
+      // sampleRate: 16000,
+    };
+    //Start Actuall Recording
+    var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
+    this.record = new StereoAudioRecorder(stream, options);
+    this.record.record();
+  }
+  /**
+   * Stop recording.
+   */
+  stopRecording() {
+    this.recording = false;
+    this.record.stop(this.processRecording.bind(this));
+  }
+  /**
+   * processRecording Do what ever you want with blob
+   * @param  {any} blob Blog
+   */
+  processRecording(blob) {
+    this.url = URL.createObjectURL(blob);
+    //
+    //
+  }
+  /**
+   * Process Error.
+   */
+  errorCallback(error) {
+    this.error = "Can not play audio in your browser";
+  }
 }
diff --git a/src/app/guards/landing-page.guard.spec.ts b/src/app/guards/landing-page.guard.spec.ts
index f622483..32caf18 100644
--- a/src/app/guards/landing-page.guard.spec.ts
+++ b/src/app/guards/landing-page.guard.spec.ts
@@ -3,14 +3,14 @@ import { TestBed } from "@angular/core/testing";
 import { LandingPageGuard } from "./landing-page.guard";
 
 describe("LandingPageGuard", () => {
-    let guard: LandingPageGuard;
+  let guard: LandingPageGuard;
 
-    beforeEach(() => {
-        TestBed.configureTestingModule({});
-        guard = TestBed.inject(LandingPageGuard);
-    });
+  beforeEach(() => {
+    TestBed.configureTestingModule({});
+    guard = TestBed.inject(LandingPageGuard);
+  });
 
-    it("should be created", () => {
-        expect(guard).toBeTruthy();
-    });
+  it("should be created", () => {
+    expect(guard).toBeTruthy();
+  });
 });
diff --git a/src/app/guards/landing-page.guard.ts b/src/app/guards/landing-page.guard.ts
index dada9f8..2f3bcd8 100644
--- a/src/app/guards/landing-page.guard.ts
+++ b/src/app/guards/landing-page.guard.ts
@@ -4,21 +4,21 @@ import { UserService } from "src/app/core/services/api/user.service";
 import { AuthenticatedRoutes } from "../variables/route_path.variables";
 
 @Injectable({
-    providedIn: "root",
+  providedIn: "root",
 })
 export class LandingPageGuard implements CanActivate {
-    constructor(private userService: UserService, private _router: Router) {}
+  constructor(private userService: UserService, private _router: Router) {}
 
-    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
-        return new Promise((resolve, reject) => {
-            const currentUserData = this.userService.userIsLoggedIn();
-            if (currentUserData) {
-                this._router.navigate([AuthenticatedRoutes.home]);
-                this.userService.setCurrentUserData(currentUserData);
-                return resolve(false);
-            } else {
-                return resolve(true);
-            }
-        });
-    }
+  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
+    return new Promise((resolve, reject) => {
+      const currentUserData = this.userService.userIsLoggedIn();
+      if (currentUserData) {
+        this._router.navigate([AuthenticatedRoutes.home]);
+        this.userService.setCurrentUserData(currentUserData);
+        return resolve(false);
+      } else {
+        return resolve(true);
+      }
+    });
+  }
 }
diff --git a/src/app/guards/role.guard.spec.ts b/src/app/guards/role.guard.spec.ts
index 1a3259b..fa103f0 100644
--- a/src/app/guards/role.guard.spec.ts
+++ b/src/app/guards/role.guard.spec.ts
@@ -3,14 +3,14 @@ import { TestBed } from "@angular/core/testing";
 import { RoleGuard } from "./role.guard";
 
 describe("RoleGuard", () => {
-    let guard: RoleGuard;
+  let guard: RoleGuard;
 
-    beforeEach(() => {
-        TestBed.configureTestingModule({});
-        guard = TestBed.inject(RoleGuard);
-    });
+  beforeEach(() => {
+    TestBed.configureTestingModule({});
+    guard = TestBed.inject(RoleGuard);
+  });
 
-    it("should be created", () => {
-        expect(guard).toBeTruthy();
-    });
+  it("should be created", () => {
+    expect(guard).toBeTruthy();
+  });
 });
diff --git a/src/app/guards/role.guard.ts b/src/app/guards/role.guard.ts
index 618554f..4cd4b17 100644
--- a/src/app/guards/role.guard.ts
+++ b/src/app/guards/role.guard.ts
@@ -5,30 +5,30 @@ import { UserService } from "src/app/core/services/api/user.service";
 import { AuthenticatedRoutes, NonAuthenticatedRoutes } from "../variables/route_path.variables";
 
 @Injectable({
-    providedIn: "root",
+  providedIn: "root",
 })
 export class RoleGuard implements CanActivate {
-    constructor(private userService: UserService, private _router: Router) {}
+  constructor(private userService: UserService, private _router: Router) {}
 
-    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
-        // TODO: for now we were storing currentUserData in local storage,
-        // but later call the data from the backend by storing token or similar
-        return new Promise((resolve, reject) => {
-            const currentUserData = this.userService.userIsLoggedIn();
-            if (currentUserData) {
-                let roles = route.data.roles as Array<string>;
-                const currentUserRole = MapUserRole[currentUserData?.roleid!];
-                if (currentUserRole && roles.includes(currentUserRole)) {
-                    this.userService.setCurrentUserData(currentUserData);
-                    return resolve(true);
-                } else {
-                    this._router.navigate([AuthenticatedRoutes.home]);
-                    return resolve(false);
-                }
-            } else {
-                this.userService.logout();
-                this._router.navigate([NonAuthenticatedRoutes.landingPage]);
-            }
-        });
-    }
+  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
+    // TODO: for now we were storing currentUserData in local storage,
+    // but later call the data from the backend by storing token or similar
+    return new Promise((resolve, reject) => {
+      const currentUserData = this.userService.userIsLoggedIn();
+      if (currentUserData) {
+        let roles = route.data.roles as Array<string>;
+        const currentUserRole = MapUserRole[currentUserData?.roleid!];
+        if (currentUserRole && roles.includes(currentUserRole)) {
+          this.userService.setCurrentUserData(currentUserData);
+          return resolve(true);
+        } else {
+          this._router.navigate([AuthenticatedRoutes.home]);
+          return resolve(false);
+        }
+      } else {
+        this.userService.logout();
+        this._router.navigate([NonAuthenticatedRoutes.landingPage]);
+      }
+    });
+  }
 }
diff --git a/src/app/services/cpcq.service.ts b/src/app/services/cpcq.service.ts
index 98d8d4d..2acdf48 100644
--- a/src/app/services/cpcq.service.ts
+++ b/src/app/services/cpcq.service.ts
@@ -3,139 +3,139 @@ import { HttpClient } from "@angular/common/http";
 import { environment } from "src/environments/environment";
 
 @Injectable({
-    providedIn: "root",
+  providedIn: "root",
 })
 export class CPCQService {
-    baseUri = environment.apiUrl;
-    cpcqUrl = environment.cqcqUrl;
-
-    constructor(private http: HttpClient) {}
-
-    attitudeData() {
-        return this.http.get(`${this.baseUri}/attitude`, {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
-
-    empathyData() {
-        return this.http.get(`${this.baseUri}/empathy`, {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
-
-    policyData() {
-        return this.http.get(`${this.baseUri}/policy`, {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
-
-    professionalismData() {
-        return this.http.get(`${this.baseUri}/professionalism`, {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
-
-    teachingData() {
-        return this.http.get(`${this.baseUri}/teaching`, {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
-
-    changeCPCQStatus() {
-        return this.http.post(
-            `${this.cpcqUrl}`,
-            { choices: "Finished All Forms" },
-            {
-                headers: {
-                    Authorization: "Token " + localStorage.getItem("user"),
-                },
-            }
-        );
-    }
-
-    getCPCQStatus() {
-        return this.http.get(`${this.cpcqUrl}`, {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
-
-    postFormData(data) {
-        return this.http.post(`${this.baseUri}/responses`, data, {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
-
-    postFeedbackForm(data) {
-        return this.http.post(`${this.baseUri}/finalFeedback`, data, {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
-
-    getFormData() {
-        return this.http.get(`${this.baseUri}/responses`, {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
-
-    getResponsesData() {
-        return this.http.get(`${this.baseUri}/responses_all/`, {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
-
-    postUnpacking(data) {
-        return this.http.post(`${this.baseUri}/cpcq_response`, data, {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
-
-    getScoreInfo() {
-        return this.http.get(`${this.baseUri}/cpcq_response`, {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
-
-    getScoreVisualization() {
-        return this.http.get(`${this.baseUri}/graphs`, {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
-
-    patchStatus(data) {
-        return this.http.patch(
-            `${this.baseUri}/status/?value=${data}`,
-            {},
-            {
-                headers: {
-                    Authorization: "Token " + localStorage.getItem("user"),
-                },
-            }
-        );
-    }
+  baseUri = environment.apiUrl;
+  cpcqUrl = environment.cqcqUrl;
+
+  constructor(private http: HttpClient) {}
+
+  attitudeData() {
+    return this.http.get(`${this.baseUri}/attitude`, {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
+
+  empathyData() {
+    return this.http.get(`${this.baseUri}/empathy`, {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
+
+  policyData() {
+    return this.http.get(`${this.baseUri}/policy`, {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
+
+  professionalismData() {
+    return this.http.get(`${this.baseUri}/professionalism`, {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
+
+  teachingData() {
+    return this.http.get(`${this.baseUri}/teaching`, {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
+
+  changeCPCQStatus() {
+    return this.http.post(
+      `${this.cpcqUrl}`,
+      { choices: "Finished All Forms" },
+      {
+        headers: {
+          Authorization: "Token " + localStorage.getItem("user"),
+        },
+      }
+    );
+  }
+
+  getCPCQStatus() {
+    return this.http.get(`${this.cpcqUrl}`, {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
+
+  postFormData(data) {
+    return this.http.post(`${this.baseUri}/responses`, data, {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
+
+  postFeedbackForm(data) {
+    return this.http.post(`${this.baseUri}/finalFeedback`, data, {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
+
+  getFormData() {
+    return this.http.get(`${this.baseUri}/responses`, {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
+
+  getResponsesData() {
+    return this.http.get(`${this.baseUri}/responses_all/`, {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
+
+  postUnpacking(data) {
+    return this.http.post(`${this.baseUri}/cpcq_response`, data, {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
+
+  getScoreInfo() {
+    return this.http.get(`${this.baseUri}/cpcq_response`, {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
+
+  getScoreVisualization() {
+    return this.http.get(`${this.baseUri}/graphs`, {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
+
+  patchStatus(data) {
+    return this.http.patch(
+      `${this.baseUri}/status/?value=${data}`,
+      {},
+      {
+        headers: {
+          Authorization: "Token " + localStorage.getItem("user"),
+        },
+      }
+    );
+  }
 }
diff --git a/src/app/services/firstForm.service.ts b/src/app/services/firstForm.service.ts
index fed7de9..33a87c7 100644
--- a/src/app/services/firstForm.service.ts
+++ b/src/app/services/firstForm.service.ts
@@ -3,29 +3,29 @@ import { HttpClient } from "@angular/common/http";
 import { environment } from "src/environments/environment";
 
 @Injectable({
-    providedIn: "root",
+  providedIn: "root",
 })
 export class FirstForm {
-    baseUri = environment.loginUrl;
-    responseUrl = environment.loginUrl;
+  baseUri = environment.loginUrl;
+  responseUrl = environment.loginUrl;
 
-    constructor(private http: HttpClient) {}
+  constructor(private http: HttpClient) {}
 
-    firstForm() {
-        return this.http.get(`${this.baseUri}`, {
-            headers: {
-                "Content-Type": "application/json",
-                authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
+  firstForm() {
+    return this.http.get(`${this.baseUri}`, {
+      headers: {
+        "Content-Type": "application/json",
+        authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
 
-    submitResponse(data) {
-        return this.http.post(`${this.responseUrl}`, data, {
-            headers: {
-                "Content-Type": "application/json",
-                authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
+  submitResponse(data) {
+    return this.http.post(`${this.responseUrl}`, data, {
+      headers: {
+        "Content-Type": "application/json",
+        authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
 }
diff --git a/src/app/services/login.service.ts b/src/app/services/login.service.ts
index 0ebaf47..bc15698 100644
--- a/src/app/services/login.service.ts
+++ b/src/app/services/login.service.ts
@@ -4,89 +4,89 @@ import { environment } from "src/environments/environment";
 import { AuthService, User } from "@auth0/auth0-angular";
 
 @Injectable({
-    providedIn: "root",
+  providedIn: "root",
 })
 export class LoginService {
-    loginUrl = environment.loginUrl;
-    registerUrl = environment.registerUrl;
-    logoutUrl = environment.logoutUrl;
-    baseUrl = environment.apiUrl;
-    token = "";
+  loginUrl = environment.loginUrl;
+  registerUrl = environment.registerUrl;
+  logoutUrl = environment.logoutUrl;
+  baseUrl = environment.apiUrl;
+  token = "";
 
-    constructor(private http: HttpClient, private auth0Service: AuthService) {
-        auth0Service.idTokenClaims$.subscribe((claims) => {
-            console.log("claims", claims);
-        });
-    }
+  constructor(private http: HttpClient, private auth0Service: AuthService) {
+    auth0Service.idTokenClaims$.subscribe((claims) => {
+      console.log("claims", claims);
+    });
+  }
 
-    login(data: any) {
-        return this.http.post(`${this.loginUrl}`, data, {
-            headers: {
-                "Content-Type": "application/json",
-            },
-        });
-    }
+  login(data: any) {
+    return this.http.post(`${this.loginUrl}`, data, {
+      headers: {
+        "Content-Type": "application/json",
+      },
+    });
+  }
 
-    forgotpassword(data) {
-        return this.http.patch(`${this.baseUrl}/password_change`, data, {
-            headers: {
-                "Content-Type": "application/json",
-            },
-        });
-    }
+  forgotpassword(data) {
+    return this.http.patch(`${this.baseUrl}/password_change`, data, {
+      headers: {
+        "Content-Type": "application/json",
+      },
+    });
+  }
 
-    register(data) {
-        return this.http.post(`${this.registerUrl}`, data, {
-            headers: {
-                "Content-Type": "application/json",
-            },
-        });
-    }
+  register(data) {
+    return this.http.post(`${this.registerUrl}`, data, {
+      headers: {
+        "Content-Type": "application/json",
+      },
+    });
+  }
 
-    changePassword(data) {
-        return this.http.patch(`${this.baseUrl}/password_change/`, data, {
-            headers: {
-                "Content-Type": "application/json",
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
+  changePassword(data) {
+    return this.http.patch(`${this.baseUrl}/password_change/`, data, {
+      headers: {
+        "Content-Type": "application/json",
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
 
-    logout() {
-        return this.http.post(
-            `${this.logoutUrl}`,
-            {},
-            {
-                headers: {
-                    Authorization: "Token " + localStorage.getItem("user"),
-                },
-            }
-        );
-    }
+  logout() {
+    return this.http.post(
+      `${this.logoutUrl}`,
+      {},
+      {
+        headers: {
+          Authorization: "Token " + localStorage.getItem("user"),
+        },
+      }
+    );
+  }
 
-    checkStatus() {
-        return this.http.get(`${this.baseUrl}/status`, {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
+  checkStatus() {
+    return this.http.get(`${this.baseUrl}/status`, {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
 
-    patchStatus(data) {
-        return this.http.patch(`${this.baseUrl}/status`, data, {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
+  patchStatus(data) {
+    return this.http.patch(`${this.baseUrl}/status`, data, {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
 
-    getTestUsers(token: string) {
-        console.log("token is", token);
-        return this.http.get(`http://localhost:3013/user`, {
-            params: { organization_id: "1" },
-            headers: {
-                Authorization: "Bearer " + token,
-            },
-        });
-    }
+  getTestUsers(token: string) {
+    console.log("token is", token);
+    return this.http.get(`http://localhost:3013/user`, {
+      params: { organization_id: "1" },
+      headers: {
+        Authorization: "Bearer " + token,
+      },
+    });
+  }
 }
diff --git a/src/app/services/mainGame.service.ts b/src/app/services/mainGame.service.ts
index 1fcb43e..545c7f9 100644
--- a/src/app/services/mainGame.service.ts
+++ b/src/app/services/mainGame.service.ts
@@ -3,14 +3,14 @@ import { HttpClient } from "@angular/common/http";
 import { environment } from "src/environments/environment";
 
 @Injectable({
-    providedIn: "root",
+  providedIn: "root",
 })
 export class MainGame {
-    baseUri = environment.loginUrl;
+  baseUri = environment.loginUrl;
 
-    constructor(private http: HttpClient) {}
+  constructor(private http: HttpClient) {}
 
-    mainGame(data) {
-        return this.http.post(`${this.baseUri}`, data);
-    }
+  mainGame(data) {
+    return this.http.post(`${this.baseUri}`, data);
+  }
 }
diff --git a/src/app/services/overlay-service.service.ts b/src/app/services/overlay-service.service.ts
index 27d413c..fa8a387 100644
--- a/src/app/services/overlay-service.service.ts
+++ b/src/app/services/overlay-service.service.ts
@@ -1,16 +1,14 @@
-import { Injectable } from '@angular/core';
-import { MyOverlayComponent } from 'src/app/components/test/my-overlay/my-overlay.component';
+import { Injectable } from "@angular/core";
+import { MyOverlayComponent } from "src/app/components/test/my-overlay/my-overlay.component";
 
-@Injectable({providedIn: "root"})
+@Injectable({ providedIn: "root" })
 export class OverlayServiceService {
-
-  constructor() { }
+  constructor() {}
 
   private overlays: Map<number, MyOverlayComponent> = new Map();
   private latestShownOverlayId = -1;
 
   public showOverlay(id: number) {
-
     const overlay = this.overlays.get(id);
 
     if (overlay) {
@@ -19,8 +17,7 @@ export class OverlayServiceService {
   }
 
   public registerOverlay(overlay: MyOverlayComponent) {
-
-    this.overlays.set(overlay.id, overlay)
+    this.overlays.set(overlay.id, overlay);
   }
 
   public destroyOverlay(overlay: MyOverlayComponent) {
@@ -34,5 +31,4 @@ export class OverlayServiceService {
       setTimeout(() => overlay.showOverlay(), 500);
     }
   }
-
 }
diff --git a/src/app/services/preSurvey.service.ts b/src/app/services/preSurvey.service.ts
index f700052..36c69da 100644
--- a/src/app/services/preSurvey.service.ts
+++ b/src/app/services/preSurvey.service.ts
@@ -3,86 +3,86 @@ import { HttpClient } from "@angular/common/http";
 import { environment } from "src/environments/environment";
 
 @Injectable({
-    providedIn: "root",
+  providedIn: "root",
 })
 export class PreSurveyService {
-    baseUrl = environment.apiUrl;
-    preSurveys = environment.preSurveyUrl;
-    profileUrl = environment.profileUrl;
-    userUrl = environment.userUrl;
-    postSurveyUrl = environment.postSurveyUrl;
+  baseUrl = environment.apiUrl;
+  preSurveys = environment.preSurveyUrl;
+  profileUrl = environment.profileUrl;
+  userUrl = environment.userUrl;
+  postSurveyUrl = environment.postSurveyUrl;
 
-    constructor(private http: HttpClient) {}
+  constructor(private http: HttpClient) {}
 
-    submitForm(data) {
-        return this.http.post(`${this.preSurveys}`, data, {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
+  submitForm(data) {
+    return this.http.post(`${this.preSurveys}`, data, {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
 
-    postProfile(data) {
-        return this.http.patch(`${this.profileUrl}`, data, {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
+  postProfile(data) {
+    return this.http.patch(`${this.profileUrl}`, data, {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
 
-    getPreSurveyAnswer() {
-        return this.http.get(`${this.preSurveys}`, {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
+  getPreSurveyAnswer() {
+    return this.http.get(`${this.preSurveys}`, {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
 
-    profileData() {
-        return this.http.get(`${this.profileUrl}`, {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
+  profileData() {
+    return this.http.get(`${this.profileUrl}`, {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
 
-    userData() {
-        return this.http.get(`${this.userUrl}`, {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
+  userData() {
+    return this.http.get(`${this.userUrl}`, {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
 
-    submitPostSurvey(data) {
-        return this.http.post(`${this.postSurveyUrl}`, data, {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
+  submitPostSurvey(data) {
+    return this.http.post(`${this.postSurveyUrl}`, data, {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
 
-    getFormData() {
-        return this.http.get(`${this.userUrl}`, {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
+  getFormData() {
+    return this.http.get(`${this.userUrl}`, {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
 
-    getFormQuestions() {
-        return this.http.get(`${this.baseUrl}` + "presurvey_questions/", {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
+  getFormQuestions() {
+    return this.http.get(`${this.baseUrl}` + "presurvey_questions/", {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
 
-    getPostSurveyFormQuestions() {
-        return this.http.get(`${this.baseUrl}` + "postsurvey_questions/", {
-            headers: {
-                Authorization: "Token " + localStorage.getItem("user"),
-            },
-        });
-    }
+  getPostSurveyFormQuestions() {
+    return this.http.get(`${this.baseUrl}` + "postsurvey_questions/", {
+      headers: {
+        Authorization: "Token " + localStorage.getItem("user"),
+      },
+    });
+  }
 }
-- 
GitLab


From 6f41a8ce33eb051f49b2d7225ae425a1179dfe82 Mon Sep 17 00:00:00 2001
From: ramesh <rdramesh2009@gmail.com>
Date: Mon, 11 Jul 2022 14:01:08 -0400
Subject: [PATCH 08/23] updates on the unrequired components removal

---
 .vscode/settings.json                         |   7 +-
 angular.json                                  |   2 +-
 src/app/app-routing.module.ts                 |  26 ++---
 src/app/app.module.ts                         | 105 +++++++++---------
 .../change-password.component.css             |  72 ------------
 .../change-password.component.html            |  49 --------
 .../change-password.component.spec.ts         |  24 ----
 .../change-password.component.ts              |  90 ---------------
 .../consent-form/consent-form.component.ts    |   2 +-
 .../dashboard/dashboard.component.ts          |  16 +--
 .../email-password.component.css              |  72 ------------
 .../email-password.component.html             |  34 ------
 .../email-password.component.spec.ts          |  24 ----
 .../email-password.component.ts               |  69 ------------
 .../final-dashboard.component.ts              |  20 ++--
 .../forgot-password.component.css             |  72 ------------
 .../forgot-password.component.html            |  24 ----
 .../forgot-password.component.spec.ts         |  24 ----
 .../forgot-password.component.ts              |  65 -----------
 .../components/header/header.component.html   |  16 +--
 src/app/components/header/header.component.ts |  57 ++++------
 src/app/components/login/login.component.css  |  73 ------------
 src/app/components/login/login.component.html |  46 --------
 .../components/login/login.component.spec.ts  |  24 ----
 src/app/components/login/login.component.ts   |  86 --------------
 .../post-survey/post-survey.component.ts      |  14 +--
 .../pre-survey/pre-survey.component.ts        |  10 +-
 .../register-component.component.ts           |   6 +-
 src/app/guards/role.guard.ts                  |   2 +-
 .../interceptors/token.interceptor.spec.ts    |  14 +++
 src/app/interceptors/token.interceptor.ts     |  22 ++++
 src/app/services/cpcq.service.ts              | 100 +++--------------
 src/app/services/firstForm.service.ts         |  16 +--
 src/app/services/login.service.ts             |  84 +++++++-------
 src/app/services/preSurvey.service.ts         |  56 ++--------
 35 files changed, 229 insertions(+), 1194 deletions(-)
 delete mode 100644 src/app/components/change-password/change-password.component.css
 delete mode 100644 src/app/components/change-password/change-password.component.html
 delete mode 100644 src/app/components/change-password/change-password.component.spec.ts
 delete mode 100644 src/app/components/change-password/change-password.component.ts
 delete mode 100644 src/app/components/email-password/email-password.component.css
 delete mode 100644 src/app/components/email-password/email-password.component.html
 delete mode 100644 src/app/components/email-password/email-password.component.spec.ts
 delete mode 100644 src/app/components/email-password/email-password.component.ts
 delete mode 100644 src/app/components/forgot-password/forgot-password.component.css
 delete mode 100644 src/app/components/forgot-password/forgot-password.component.html
 delete mode 100644 src/app/components/forgot-password/forgot-password.component.spec.ts
 delete mode 100644 src/app/components/forgot-password/forgot-password.component.ts
 delete mode 100644 src/app/components/login/login.component.css
 delete mode 100644 src/app/components/login/login.component.html
 delete mode 100644 src/app/components/login/login.component.spec.ts
 delete mode 100644 src/app/components/login/login.component.ts
 create mode 100644 src/app/interceptors/token.interceptor.spec.ts
 create mode 100644 src/app/interceptors/token.interceptor.ts

diff --git a/.vscode/settings.json b/.vscode/settings.json
index 409f404..144107d 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,4 +1,7 @@
 {
-    "files.autoSave": "afterDelay",
-    "editor.defaultFormatter": "esbenp.prettier-vscode"
+  "files.autoSave": "afterDelay",
+  "editor.defaultFormatter": "esbenp.prettier-vscode",
+  "editor.codeActionsOnSave": {
+    "source.organizeImports": true
+  }
 }
diff --git a/angular.json b/angular.json
index 687c23a..a7cd4a7 100644
--- a/angular.json
+++ b/angular.json
@@ -134,4 +134,4 @@
   "cli": {
     "analytics": "14348ac1-8da5-4252-9e0c-b861a78c6b1a"
   }
-}
\ No newline at end of file
+}
diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index 25d06cb..32034ef 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -1,26 +1,21 @@
 import { NgModule } from "@angular/core";
-import { Routes, RouterModule } from "@angular/router";
-import { LoginComponent } from "./components/login/login.component";
-import { HomePageComponent } from "./components/home-page/home-page.component";
-import { PreSurveyComponent } from "./components/pre-survey/pre-survey.component";
+import { RouterModule, Routes } from "@angular/router";
+import { AboutCompComponent } from "./components/about-comp/about-comp.component";
 import { CpcqFormComponent } from "./components/cpcq-form/cpcq-form.component";
-import { PostSurveyComponent } from "./components/post-survey/post-survey.component";
 import { DashboardComponent } from "./components/dashboard/dashboard.component";
-import { ResultDashboardComponent } from "./components/result-dashboard/result-dashboard.component";
-import { AboutCompComponent } from "./components/about-comp/about-comp.component";
+import { FinalDashboardComponent } from "./components/final-dashboard/final-dashboard.component";
+import { FinalFeedbackComponent } from "./components/final-feedback/final-feedback.component";
+import { GraphPageComponent } from "./components/graph-page/graph-page.component";
+import { HomePageComponent } from "./components/home-page/home-page.component";
+import { PostSurveyComponent } from "./components/post-survey/post-survey.component";
+import { PreSurveyComponent } from "./components/pre-survey/pre-survey.component";
 import { RegisterComponentComponent } from "./components/register-component/register-component.component";
+import { ResultDashboardComponent } from "./components/result-dashboard/result-dashboard.component";
 import { ScorePageComponent } from "./components/score-page/score-page.component";
-import { GraphPageComponent } from "./components/graph-page/graph-page.component";
-import { FinalDashboardComponent } from "./components/final-dashboard/final-dashboard.component";
 import { UnpackingPageComponent } from "./components/unpacking-page/unpacking-page.component";
-import { FinalFeedbackComponent } from "./components/final-feedback/final-feedback.component";
-import { ForgotPasswordComponent } from "./components/forgot-password/forgot-password.component";
-import { ChangePasswordComponent } from "./components/change-password/change-password.component";
-import { EmailPasswordComponent } from "./components/email-password/email-password.component";
 
 const routes: Routes = [
   { path: "", component: HomePageComponent },
-  { path: "login", component: LoginComponent },
   { path: "preSurvey", component: PreSurveyComponent },
   { path: "pcqform", component: CpcqFormComponent },
   { path: "postSurvey", component: PostSurveyComponent },
@@ -33,9 +28,6 @@ const routes: Routes = [
   { path: "final", component: FinalDashboardComponent },
   { path: "unpacking", component: UnpackingPageComponent },
   { path: "finalFeedback", component: FinalFeedbackComponent },
-  { path: "forgotPassword", component: ForgotPasswordComponent },
-  { path: "changePassword", component: ChangePasswordComponent },
-  { path: "emailPass", component: EmailPasswordComponent },
 ];
 
 @NgModule({
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 0cedf51..b60133e 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -1,77 +1,74 @@
-import { BrowserModule } from "@angular/platform-browser";
 import { NgModule } from "@angular/core";
+import { BrowserModule } from "@angular/platform-browser";
 
 import { AppRoutingModule } from "./app-routing.module";
 import { AppComponent } from "./app.component";
 
+import { OverlayModule } from "@angular/cdk/overlay";
+import { PortalModule } from "@angular/cdk/portal";
+import { HttpClientModule, HTTP_INTERCEPTORS } from "@angular/common/http";
+import { FormsModule, ReactiveFormsModule } from "@angular/forms";
+import { MatAutocompleteModule } from "@angular/material/autocomplete";
 import { MatButtonModule } from "@angular/material/button";
-import { MatIconModule } from "@angular/material/icon";
-import { MatToolbarModule } from "@angular/material/toolbar";
-import { MatSidenavModule } from "@angular/material/sidenav";
-import { MatListModule } from "@angular/material/list";
+import { MatCardModule } from "@angular/material/card";
+import { MatCheckboxModule } from "@angular/material/checkbox";
+import { MatChipsModule } from "@angular/material/chips";
+import { MatDatepickerModule } from "@angular/material/datepicker";
 import { MatDialogModule } from "@angular/material/dialog";
-import { MatRadioModule } from "@angular/material/radio";
-import { MatTableModule } from "@angular/material/table";
 import { MatFormFieldModule } from "@angular/material/form-field";
+import { MatIconModule } from "@angular/material/icon";
 import { MatInputModule } from "@angular/material/input";
+import { MatListModule } from "@angular/material/list";
+import { MatMenuModule } from "@angular/material/menu";
 import { MatPaginatorModule } from "@angular/material/paginator";
-import { MatSortModule } from "@angular/material/sort";
-import { MatCardModule } from "@angular/material/card";
+import { MatProgressBarModule } from "@angular/material/progress-bar";
+import { MatProgressSpinnerModule } from "@angular/material/progress-spinner";
+import { MatRadioModule } from "@angular/material/radio";
 import { MatSelectModule } from "@angular/material/select";
+import { MatSidenavModule } from "@angular/material/sidenav";
+import { MatSliderModule } from "@angular/material/slider";
+import { MatSortModule } from "@angular/material/sort";
+import { MatTableModule } from "@angular/material/table";
 import { MatTabsModule } from "@angular/material/tabs";
-import { MatMenuModule } from "@angular/material/menu";
+import { MatToolbarModule } from "@angular/material/toolbar";
 import { MatTooltipModule } from "@angular/material/tooltip";
-import { MatChipsModule } from "@angular/material/chips";
-import { MatAutocompleteModule } from "@angular/material/autocomplete";
-import { MatProgressSpinnerModule } from "@angular/material/progress-spinner";
-import { MatDatepickerModule } from "@angular/material/datepicker";
-import { MatCheckboxModule } from "@angular/material/checkbox";
-import { MatSliderModule } from "@angular/material/slider";
-import { MatProgressBarModule } from "@angular/material/progress-bar";
-import { FormsModule, ReactiveFormsModule } from "@angular/forms";
 import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
-import { HttpClientModule } from "@angular/common/http";
-import { CountdownModule } from "ngx-countdown";
 import { NgApexchartsModule } from "ng-apexcharts";
 import { NgWaveformModule } from "ng-waveform";
 import { PdfViewerModule } from "ng2-pdf-viewer";
-import { OverlayModule } from "@angular/cdk/overlay";
-import { PortalModule } from "@angular/cdk/portal";
+import { CountdownModule } from "ngx-countdown";
 
-import { MainGameComponent } from "./components/main-game/main-game.component";
-import { HeaderComponent } from "./components/header/header.component";
-import { LoginComponent } from "./components/login/login.component";
-import { ConsentFormComponent } from "./components/consent-form/consent-form.component";
-import { FirstFormComponent } from "./components/first-form/first-form.component";
-import { DialogComponent } from "./components/main-game/dialog/dialog.component";
-import { TestComponent } from "./components/test/test.component";
+import { AuthModule } from "@auth0/auth0-angular";
+import player from "lottie-web";
+import { LottieModule } from "ngx-lottie";
 import { WalkthroughModule } from "ngx-walkthrough";
-import { MyOverlayComponent } from "./components/test/my-overlay/my-overlay.component";
-import { TrialComponentComponent } from "./components/trial-component/trial-component.component";
-import { HomePageComponent } from "./components/home-page/home-page.component";
-import { PreSurveyComponent } from "./components/pre-survey/pre-survey.component";
+import { environment } from "src/environments/environment";
+import { AboutCompComponent } from "./components/about-comp/about-comp.component";
+import { ConsentFormComponent } from "./components/consent-form/consent-form.component";
 import { CpcqFormComponent } from "./components/cpcq-form/cpcq-form.component";
-import { PostSurveyComponent } from "./components/post-survey/post-survey.component";
 import { DialogFormComponent } from "./components/cpcq-form/dialog-form/dialog-form.component";
-import { DashboardComponent } from "./components/dashboard/dashboard.component";
 import { DashboardDialoComponent } from "./components/dashboard/dashboard-dialo/dashboard-dialo.component";
+import { DashboardComponent } from "./components/dashboard/dashboard.component";
+import { FinalDashboardComponent } from "./components/final-dashboard/final-dashboard.component";
+import { FinalFeedbackComponent } from "./components/final-feedback/final-feedback.component";
+import { FirstFormComponent } from "./components/first-form/first-form.component";
 import { FooterComponent } from "./components/footer/footer.component";
-import { ResultDashboardComponent } from "./components/result-dashboard/result-dashboard.component";
-import { LottieModule } from "ngx-lottie";
-import player from "lottie-web";
-import { AboutCompComponent } from "./components/about-comp/about-comp.component";
-import { RegisterComponentComponent } from "./components/register-component/register-component.component";
+import { GraphPageComponent } from "./components/graph-page/graph-page.component";
+import { HeaderComponent } from "./components/header/header.component";
+import { HomePageComponent } from "./components/home-page/home-page.component";
+import { DialogComponent } from "./components/main-game/dialog/dialog.component";
+import { MainGameComponent } from "./components/main-game/main-game.component";
+import { PostSurveyComponent } from "./components/post-survey/post-survey.component";
 import { DialogPDfComponent } from "./components/pre-survey/dialog-pdf/dialog-pdf.component";
+import { PreSurveyComponent } from "./components/pre-survey/pre-survey.component";
+import { RegisterComponentComponent } from "./components/register-component/register-component.component";
+import { ResultDashboardComponent } from "./components/result-dashboard/result-dashboard.component";
 import { ScorePageComponent } from "./components/score-page/score-page.component";
-import { GraphPageComponent } from "./components/graph-page/graph-page.component";
-import { FinalDashboardComponent } from "./components/final-dashboard/final-dashboard.component";
+import { MyOverlayComponent } from "./components/test/my-overlay/my-overlay.component";
+import { TestComponent } from "./components/test/test.component";
+import { TrialComponentComponent } from "./components/trial-component/trial-component.component";
 import { UnpackingPageComponent } from "./components/unpacking-page/unpacking-page.component";
-import { FinalFeedbackComponent } from "./components/final-feedback/final-feedback.component";
-import { ForgotPasswordComponent } from "./components/forgot-password/forgot-password.component";
-import { ChangePasswordComponent } from "./components/change-password/change-password.component";
-import { EmailPasswordComponent } from "./components/email-password/email-password.component";
-import { AuthModule } from "@auth0/auth0-angular";
-import { environment } from "src/environments/environment";
+import { TokenInterceptor } from "./interceptors/token.interceptor";
 
 // Note we need a separate function as it's required
 // by the AOT compiler.
@@ -84,7 +81,6 @@ export function playerFactory() {
     AppComponent,
     MainGameComponent,
     HeaderComponent,
-    LoginComponent,
     ConsentFormComponent,
     FirstFormComponent,
     DialogComponent,
@@ -108,9 +104,6 @@ export function playerFactory() {
     FinalDashboardComponent,
     UnpackingPageComponent,
     FinalFeedbackComponent,
-    ForgotPasswordComponent,
-    ChangePasswordComponent,
-    EmailPasswordComponent,
   ],
   imports: [
     BrowserModule,
@@ -157,7 +150,13 @@ export function playerFactory() {
       clientId: environment.auth0Settings.clientId,
     }),
   ],
-  providers: [],
+  providers: [
+    {
+      provide: HTTP_INTERCEPTORS,
+      useClass: TokenInterceptor,
+      multi: true,
+    },
+  ],
   bootstrap: [AppComponent],
 })
 export class AppModule {}
diff --git a/src/app/components/change-password/change-password.component.css b/src/app/components/change-password/change-password.component.css
deleted file mode 100644
index d0aa6e1..0000000
--- a/src/app/components/change-password/change-password.component.css
+++ /dev/null
@@ -1,72 +0,0 @@
-.container {
-  text-align: center;
-  padding-bottom: 300px;
-}
-
-.example-card {
-  display: inline-block;
-  margin-top: 100px;
-}
-
-.intro {
-  top: 20%;
-  font-size: 35px;
-  text-align: center;
-  font-family: "Loto", sans-serif, cursive;
-  color: black;
-  font-weight: bold;
-}
-
-body {
-  font-family: "Loto", sans-serif;
-  background-color: #f8fafb;
-}
-
-@media screen and (min-width: 992px) {
-  p {
-    padding-top: 150px;
-    line-height: 150%;
-    color: #b3b3b3;
-    font-weight: 300;
-    margin: 0 20px;
-  }
-}
-
-@media screen and (max-width: 991px) {
-  p {
-    padding-top: 20px;
-    line-height: 150%;
-    color: #b3b3b3;
-    font-weight: 300;
-    margin: 0 20px;
-  }
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-.h1,
-.h2,
-.h3,
-.h4,
-.h5,
-.h6 {
-  font-family: "Loto", sans-serif;
-}
-
-a {
-  -webkit-transition: 0.3s all ease;
-  -o-transition: 0.3s all ease;
-  transition: 0.3s all ease;
-}
-
-a:hover {
-  text-decoration: none !important;
-}
-
-h2 {
-  font-size: 20px;
-}
diff --git a/src/app/components/change-password/change-password.component.html b/src/app/components/change-password/change-password.component.html
deleted file mode 100644
index 9c93b5b..0000000
--- a/src/app/components/change-password/change-password.component.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<div class="header-wrap">
-  <p class="intro">Cultural Proficiency Continuum Dialogic Protocol</p>
-  <div class="container">
-    <mat-card class="example-card">
-      <div class="mb-4">
-        <h3 style="text-align: center">Change Password</h3>
-      </div>
-      <form [formGroup]="loginForm">
-        <mat-form-field appearance="outline" class="col-lg-12">
-          <mat-label>Enter New Password</mat-label>
-          <input matInput formControlName="new_password" [type]="hide ? 'password' : 'text'" required />
-          <button
-            mat-icon-button
-            matSuffix
-            (click)="hide = !hide"
-            [attr.aria-label]="'Hide password'"
-            [attr.aria-pressed]="hide"
-          >
-            <mat-icon>{{ hide ? "visibility_off" : "visibility" }}</mat-icon>
-          </button>
-          <mat-error *ngIf="loginForm.controls.new_password.invalid">{{ getPasswordError() }}</mat-error>
-        </mat-form-field>
-        <mat-form-field appearance="outline" class="col-lg-12">
-          <mat-label>Confirm New password</mat-label>
-          <input matInput formControlName="confirmPassword" [type]="hide ? 'password' : 'text'" required />
-          <button
-            mat-icon-button
-            matSuffix
-            (click)="hide = !hide"
-            [attr.aria-label]="'Hide password'"
-            [attr.aria-pressed]="hide"
-          >
-            <mat-icon>{{ hide ? "visibility_off" : "visibility" }}</mat-icon>
-          </button>
-          <mat-error *ngIf="loginForm.controls.confirmPassword.invalid">{{ getPasswordError() }}</mat-error>
-        </mat-form-field>
-
-        <input
-          type="submit"
-          value="Change Password"
-          class="btn text-white btn-block btn-primary"
-          style="background-color: #29abe2; font-size: 20px"
-          (click)="login()"
-        />
-      </form>
-    </mat-card>
-  </div>
-</div>
-<app-footer></app-footer>
diff --git a/src/app/components/change-password/change-password.component.spec.ts b/src/app/components/change-password/change-password.component.spec.ts
deleted file mode 100644
index 7f520dd..0000000
--- a/src/app/components/change-password/change-password.component.spec.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
-
-import { ChangePasswordComponent } from "./change-password.component";
-
-describe("ChangePasswordComponent", () => {
-  let component: ChangePasswordComponent;
-  let fixture: ComponentFixture<ChangePasswordComponent>;
-
-  beforeEach(async(() => {
-    TestBed.configureTestingModule({
-      declarations: [ChangePasswordComponent],
-    }).compileComponents();
-  }));
-
-  beforeEach(() => {
-    fixture = TestBed.createComponent(ChangePasswordComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it("should create", () => {
-    expect(component).toBeTruthy();
-  });
-});
diff --git a/src/app/components/change-password/change-password.component.ts b/src/app/components/change-password/change-password.component.ts
deleted file mode 100644
index 3461657..0000000
--- a/src/app/components/change-password/change-password.component.ts
+++ /dev/null
@@ -1,90 +0,0 @@
-import { Component, OnInit } from "@angular/core";
-import { EmailValidator, FormBuilder, FormGroup, Validators } from "@angular/forms";
-import { Router } from "@angular/router";
-import Swal from "sweetalert2";
-import { LoginService } from "src/app/services/login.service";
-@Component({
-  selector: "app-change-password",
-  templateUrl: "./change-password.component.html",
-  styleUrls: ["./change-password.component.css"],
-})
-export class ChangePasswordComponent implements OnInit {
-  loginForm: FormGroup;
-  hide = true;
-  constructor(private fb: FormBuilder, private router: Router, private loginService: LoginService) {}
-
-  ngOnInit(): void {
-    this.loginForm = this.fb.group({
-      new_password: ["", [Validators.required]],
-      confirmPassword: ["", [Validators.required]],
-    });
-  }
-
-  getEmailError() {
-    if (this.loginForm.controls.username.hasError("required")) {
-      return "Required";
-    } else {
-      return "";
-    }
-  }
-
-  getPasswordError() {
-    if (this.loginForm.controls.new_password.hasError("required")) {
-      return "Required";
-    } else {
-      return "";
-    }
-  }
-
-  login() {
-    if (!this.loginForm.valid) {
-      Swal.fire({
-        text: "Please enter all the fields in the right format.",
-        icon: "error",
-      }).then((res) => {});
-    } else {
-      if (this.loginForm.get("new_password").value != this.loginForm.get("confirmPassword").value) {
-        Swal.fire({
-          text: "Passwords don't match!",
-          icon: "error",
-        }).then((res) => {});
-      } else {
-        this.loginForm.removeControl("confirmPassword");
-        this.loginService.changePassword(this.loginForm.value).subscribe(
-          (res) => {
-            Swal.fire({
-              text: "Password Changed Successfully!",
-              icon: "success",
-            }).then((res) => {
-              this.loginService.checkStatus().subscribe((res) => {
-                if (res[0] == undefined) {
-                  this.router.navigateByUrl("/preSurvey");
-                } else {
-                  if (res[0]["postsurveystatus"] == true) {
-                    this.router.navigateByUrl("/final");
-                  } else if (res[0]["scoresstatus"] == true) {
-                    this.router.navigateByUrl("/score");
-                  } else if (res[0]["finalfeedbackstatus"] == true) {
-                    this.router.navigateByUrl("/result");
-                  } else if (res[0]["cpcqstatus"] == true) {
-                    this.router.navigateByUrl("/finalFeedback");
-                  } else if (res[0]["responsesstatus"] == true) {
-                    this.router.navigateByUrl("/unpacking");
-                  } else if (res[0]["presurveystatus"] == true) {
-                    this.router.navigateByUrl("/dashboard");
-                  }
-                }
-              });
-            });
-          },
-          (err) => {
-            Swal.fire({
-              text: "Username/Email already exists",
-              icon: "error",
-            }).then((res) => {});
-          }
-        );
-      }
-    }
-  }
-}
diff --git a/src/app/components/consent-form/consent-form.component.ts b/src/app/components/consent-form/consent-form.component.ts
index 8ab6784..57d4f09 100644
--- a/src/app/components/consent-form/consent-form.component.ts
+++ b/src/app/components/consent-form/consent-form.component.ts
@@ -14,8 +14,8 @@ export class ConsentFormComponent implements OnInit {
   agree() {
     this.router.navigateByUrl("/firstForm");
   }
+
   disagree() {
     this.router.navigateByUrl("/");
-    localStorage.removeItem("user");
   }
 }
diff --git a/src/app/components/dashboard/dashboard.component.ts b/src/app/components/dashboard/dashboard.component.ts
index e6d4ab4..2642a18 100644
--- a/src/app/components/dashboard/dashboard.component.ts
+++ b/src/app/components/dashboard/dashboard.component.ts
@@ -1,20 +1,20 @@
 import { Component, OnInit, ViewChild } from "@angular/core";
-import { Router } from "@angular/router";
 import { MatDialog } from "@angular/material/dialog";
-import { DashboardDialoComponent } from "./dashboard-dialo/dashboard-dialo.component";
+import { Router } from "@angular/router";
 import { AnimationItem } from "lottie-web";
-import { AnimationOptions } from "ngx-lottie";
-import { PreSurveyService } from "src/app/services/preSurvey.service";
-import Swal from "sweetalert2";
 import {
-  ApexNonAxisChartSeries,
-  ApexPlotOptions,
   ApexChart,
   ApexFill,
-  ChartComponent,
   ApexLegend,
+  ApexNonAxisChartSeries,
+  ApexPlotOptions,
   ApexResponsive,
+  ChartComponent,
 } from "ng-apexcharts";
+import { AnimationOptions } from "ngx-lottie";
+import { PreSurveyService } from "src/app/services/preSurvey.service";
+import Swal from "sweetalert2";
+import { DashboardDialoComponent } from "./dashboard-dialo/dashboard-dialo.component";
 
 export interface DialogData {
   animal;
diff --git a/src/app/components/email-password/email-password.component.css b/src/app/components/email-password/email-password.component.css
deleted file mode 100644
index d0aa6e1..0000000
--- a/src/app/components/email-password/email-password.component.css
+++ /dev/null
@@ -1,72 +0,0 @@
-.container {
-  text-align: center;
-  padding-bottom: 300px;
-}
-
-.example-card {
-  display: inline-block;
-  margin-top: 100px;
-}
-
-.intro {
-  top: 20%;
-  font-size: 35px;
-  text-align: center;
-  font-family: "Loto", sans-serif, cursive;
-  color: black;
-  font-weight: bold;
-}
-
-body {
-  font-family: "Loto", sans-serif;
-  background-color: #f8fafb;
-}
-
-@media screen and (min-width: 992px) {
-  p {
-    padding-top: 150px;
-    line-height: 150%;
-    color: #b3b3b3;
-    font-weight: 300;
-    margin: 0 20px;
-  }
-}
-
-@media screen and (max-width: 991px) {
-  p {
-    padding-top: 20px;
-    line-height: 150%;
-    color: #b3b3b3;
-    font-weight: 300;
-    margin: 0 20px;
-  }
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-.h1,
-.h2,
-.h3,
-.h4,
-.h5,
-.h6 {
-  font-family: "Loto", sans-serif;
-}
-
-a {
-  -webkit-transition: 0.3s all ease;
-  -o-transition: 0.3s all ease;
-  transition: 0.3s all ease;
-}
-
-a:hover {
-  text-decoration: none !important;
-}
-
-h2 {
-  font-size: 20px;
-}
diff --git a/src/app/components/email-password/email-password.component.html b/src/app/components/email-password/email-password.component.html
deleted file mode 100644
index 8347067..0000000
--- a/src/app/components/email-password/email-password.component.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<div class="header-wrap">
-  <p class="intro">Cultural Proficiency Continuum Dialogic Protocol</p>
-  <div class="container">
-    <mat-card class="example-card">
-      <div class="mb-4">
-        <h3 style="text-align: center">Authentication Required</h3>
-      </div>
-      <form [formGroup]="forgotForm">
-        <mat-form-field appearance="outline" class="col-lg-12">
-          <mat-label>Enter Password sent via e-mail</mat-label>
-          <input matInput formControlName="password" [type]="hide ? 'password' : 'text'" required />
-          <button
-            mat-icon-button
-            matSuffix
-            (click)="hide = !hide"
-            [attr.aria-label]="'Hide password'"
-            [attr.aria-pressed]="hide"
-          >
-            <mat-icon>{{ hide ? "visibility_off" : "visibility" }}</mat-icon>
-          </button>
-          <mat-error *ngIf="forgotForm.controls.password.invalid">{{ getPasswordError() }}</mat-error>
-        </mat-form-field>
-        <input
-          type="submit"
-          value="Verify"
-          class="btn text-white btn-block btn-primary"
-          style="background-color: #29abe2; font-size: 20px"
-          (click)="login()"
-        />
-      </form>
-    </mat-card>
-  </div>
-</div>
-<app-footer></app-footer>
diff --git a/src/app/components/email-password/email-password.component.spec.ts b/src/app/components/email-password/email-password.component.spec.ts
deleted file mode 100644
index 28c9471..0000000
--- a/src/app/components/email-password/email-password.component.spec.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
-
-import { EmailPasswordComponent } from "./email-password.component";
-
-describe("EmailPasswordComponent", () => {
-  let component: EmailPasswordComponent;
-  let fixture: ComponentFixture<EmailPasswordComponent>;
-
-  beforeEach(async(() => {
-    TestBed.configureTestingModule({
-      declarations: [EmailPasswordComponent],
-    }).compileComponents();
-  }));
-
-  beforeEach(() => {
-    fixture = TestBed.createComponent(EmailPasswordComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it("should create", () => {
-    expect(component).toBeTruthy();
-  });
-});
diff --git a/src/app/components/email-password/email-password.component.ts b/src/app/components/email-password/email-password.component.ts
deleted file mode 100644
index 8fbe0a1..0000000
--- a/src/app/components/email-password/email-password.component.ts
+++ /dev/null
@@ -1,69 +0,0 @@
-import { Component, OnInit } from "@angular/core";
-import { EmailValidator, FormBuilder, FormGroup, Validators } from "@angular/forms";
-import { MatDialog, MatDialogRef } from "@angular/material/dialog";
-import { Router } from "@angular/router";
-import Swal from "sweetalert2";
-import { LoginService } from "src/app/services/login.service";
-@Component({
-  selector: "app-email-password",
-  templateUrl: "./email-password.component.html",
-  styleUrls: ["./email-password.component.css"],
-})
-export class EmailPasswordComponent implements OnInit {
-  forgotForm: FormGroup;
-  hide = true;
-  constructor(private fb: FormBuilder, private router: Router, private loginService: LoginService) {}
-
-  ngOnInit(): void {
-    this.forgotForm = this.fb.group({
-      password: ["", [Validators.required]],
-      username: [""],
-    });
-  }
-
-  getEmailError() {
-    if (this.forgotForm.controls.username.hasError("required")) {
-      return "Required";
-    } else {
-      return "";
-    }
-  }
-
-  getPasswordError() {
-    if (this.forgotForm.controls.password.hasError("required")) {
-      return "Required";
-    } else {
-      return "";
-    }
-  }
-
-  login() {
-    if (!this.forgotForm.valid) {
-      Swal.fire({
-        text: "Please enter all the fields in the right format.",
-        icon: "error",
-      }).then((res) => {});
-    } else {
-      this.forgotForm.get("username").setValue(localStorage.getItem("username"));
-      this.loginService.login(this.forgotForm.value).subscribe(
-        (res) => {
-          localStorage.setItem("user", res["token"]);
-          // this.router.navigateByUrl("/changePassword")
-
-          Swal.fire({
-            text: "Verification Successful!",
-            icon: "success",
-          }).then((res) => {
-            this.router.navigateByUrl("/changePassword");
-          });
-        },
-        (err) => {
-          Swal.fire({
-            text: "Username and email do not match.",
-            icon: "error",
-          }).then((res) => {});
-        }
-      );
-    }
-  }
-}
diff --git a/src/app/components/final-dashboard/final-dashboard.component.ts b/src/app/components/final-dashboard/final-dashboard.component.ts
index 3bb76ba..3668ea5 100644
--- a/src/app/components/final-dashboard/final-dashboard.component.ts
+++ b/src/app/components/final-dashboard/final-dashboard.component.ts
@@ -1,21 +1,21 @@
-import { Component, OnInit, ViewChild, Inject } from "@angular/core";
+import { Component, OnInit, ViewChild } from "@angular/core";
+import { MatDialog } from "@angular/material/dialog";
 import { Router } from "@angular/router";
-import { MatDialog, MAT_DIALOG_DATA } from "@angular/material/dialog";
-import Swal from "sweetalert2";
-import { DashboardDialoComponent } from "../dashboard/dashboard-dialo/dashboard-dialo.component";
 import { AnimationItem } from "lottie-web";
-import { PreSurveyService } from "src/app/services/preSurvey.service";
-import { CPCQService } from "src/app/services/cpcq.service";
-import { AnimationOptions } from "ngx-lottie";
 import {
-  ApexNonAxisChartSeries,
-  ApexPlotOptions,
   ApexChart,
   ApexFill,
-  ChartComponent,
   ApexLegend,
+  ApexNonAxisChartSeries,
+  ApexPlotOptions,
   ApexResponsive,
+  ChartComponent,
 } from "ng-apexcharts";
+import { AnimationOptions } from "ngx-lottie";
+import { CPCQService } from "src/app/services/cpcq.service";
+import { PreSurveyService } from "src/app/services/preSurvey.service";
+import Swal from "sweetalert2";
+import { DashboardDialoComponent } from "../dashboard/dashboard-dialo/dashboard-dialo.component";
 
 export interface DialogData {
   animal;
diff --git a/src/app/components/forgot-password/forgot-password.component.css b/src/app/components/forgot-password/forgot-password.component.css
deleted file mode 100644
index d0aa6e1..0000000
--- a/src/app/components/forgot-password/forgot-password.component.css
+++ /dev/null
@@ -1,72 +0,0 @@
-.container {
-  text-align: center;
-  padding-bottom: 300px;
-}
-
-.example-card {
-  display: inline-block;
-  margin-top: 100px;
-}
-
-.intro {
-  top: 20%;
-  font-size: 35px;
-  text-align: center;
-  font-family: "Loto", sans-serif, cursive;
-  color: black;
-  font-weight: bold;
-}
-
-body {
-  font-family: "Loto", sans-serif;
-  background-color: #f8fafb;
-}
-
-@media screen and (min-width: 992px) {
-  p {
-    padding-top: 150px;
-    line-height: 150%;
-    color: #b3b3b3;
-    font-weight: 300;
-    margin: 0 20px;
-  }
-}
-
-@media screen and (max-width: 991px) {
-  p {
-    padding-top: 20px;
-    line-height: 150%;
-    color: #b3b3b3;
-    font-weight: 300;
-    margin: 0 20px;
-  }
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-.h1,
-.h2,
-.h3,
-.h4,
-.h5,
-.h6 {
-  font-family: "Loto", sans-serif;
-}
-
-a {
-  -webkit-transition: 0.3s all ease;
-  -o-transition: 0.3s all ease;
-  transition: 0.3s all ease;
-}
-
-a:hover {
-  text-decoration: none !important;
-}
-
-h2 {
-  font-size: 20px;
-}
diff --git a/src/app/components/forgot-password/forgot-password.component.html b/src/app/components/forgot-password/forgot-password.component.html
deleted file mode 100644
index d3b68c0..0000000
--- a/src/app/components/forgot-password/forgot-password.component.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<div class="header-wrap">
-  <p class="intro">Cultural Proficiency Continuum Dialogic Protocol</p>
-  <div class="container">
-    <mat-card class="example-card">
-      <div class="mb-4">
-        <h3 style="text-align: center">Forgot Password</h3>
-      </div>
-      <form [formGroup]="forgotForm">
-        <mat-form-field appearance="outline" class="col-lg-12">
-          <mat-label>Enter Username/e-mail</mat-label>
-          <input type="text" matInput placeholder="joe" formControlName="username" required />
-        </mat-form-field>
-        <input
-          type="submit"
-          value="Send Email"
-          class="btn text-white btn-block btn-primary"
-          style="background-color: #29abe2; font-size: 20px"
-          (click)="login()"
-        />
-      </form>
-    </mat-card>
-  </div>
-</div>
-<app-footer></app-footer>
diff --git a/src/app/components/forgot-password/forgot-password.component.spec.ts b/src/app/components/forgot-password/forgot-password.component.spec.ts
deleted file mode 100644
index 7e9a8a0..0000000
--- a/src/app/components/forgot-password/forgot-password.component.spec.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
-
-import { ForgotPasswordComponent } from "./forgot-password.component";
-
-describe("ForgotPasswordComponent", () => {
-  let component: ForgotPasswordComponent;
-  let fixture: ComponentFixture<ForgotPasswordComponent>;
-
-  beforeEach(async(() => {
-    TestBed.configureTestingModule({
-      declarations: [ForgotPasswordComponent],
-    }).compileComponents();
-  }));
-
-  beforeEach(() => {
-    fixture = TestBed.createComponent(ForgotPasswordComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it("should create", () => {
-    expect(component).toBeTruthy();
-  });
-});
diff --git a/src/app/components/forgot-password/forgot-password.component.ts b/src/app/components/forgot-password/forgot-password.component.ts
deleted file mode 100644
index 49c2d8e..0000000
--- a/src/app/components/forgot-password/forgot-password.component.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-import { Component, OnInit } from "@angular/core";
-import { EmailValidator, FormBuilder, FormGroup, Validators } from "@angular/forms";
-import { MatDialog, MatDialogRef } from "@angular/material/dialog";
-import { Router } from "@angular/router";
-import Swal from "sweetalert2";
-import { LoginService } from "src/app/services/login.service";
-@Component({
-  selector: "app-forgot-password",
-  templateUrl: "./forgot-password.component.html",
-  styleUrls: ["./forgot-password.component.css"],
-})
-export class ForgotPasswordComponent implements OnInit {
-  forgotForm: FormGroup;
-  hide = true;
-  constructor(private fb: FormBuilder, private router: Router, private loginService: LoginService) {}
-
-  ngOnInit(): void {
-    this.forgotForm = this.fb.group({
-      username: ["", [Validators.required]],
-    });
-  }
-
-  getEmailError() {
-    if (this.forgotForm.controls.username.hasError("required")) {
-      return "Required";
-    } else {
-      return "";
-    }
-  }
-
-  getPasswordError() {
-    if (this.forgotForm.controls.password.hasError("required")) {
-      return "Required";
-    } else {
-      return "";
-    }
-  }
-
-  login() {
-    if (!this.forgotForm.valid) {
-      Swal.fire({
-        text: "Please enter all the fields in the right format.",
-        icon: "error",
-      }).then((res) => {});
-    } else {
-      this.loginService.forgotpassword(this.forgotForm.value).subscribe(
-        (res) => {
-          localStorage.setItem("username", this.forgotForm.get("username").value);
-          Swal.fire({
-            text: "e-mail sent successfully!",
-            icon: "success",
-          }).then((res) => {
-            this.router.navigateByUrl("/emailPass");
-          });
-        },
-        (err) => {
-          Swal.fire({
-            text: "Username/e-mail not found!",
-            icon: "error",
-          }).then((res) => {});
-        }
-      );
-    }
-  }
-}
diff --git a/src/app/components/header/header.component.html b/src/app/components/header/header.component.html
index cc9db68..5fe9c21 100644
--- a/src/app/components/header/header.component.html
+++ b/src/app/components/header/header.component.html
@@ -16,15 +16,15 @@
     <mat-nav-list>
       <a routerLink="/" mat-list-item>HOME</a>
       <a routerLink="/about" mat-list-item>ABOUT US</a>
-      <a (click)="auth.loginWithRedirect()" *ngIf="!currentUser" mat-list-item>LOGIN</a>
-      <a (click)="auth.logout({ returnTo: document.location.origin })" *ngIf="currentUser" mat-list-item>LOGOUT</a>
+      <a (click)="loginWithRedirect()" *ngIf="!currentUser" mat-list-item>LOGIN</a>
+      <a (click)="logout()" *ngIf="currentUser" mat-list-item>LOGOUT</a>
 
       <button
         *ngIf="currentUser"
         mat-icon-button
         class="example-icon favorite-icon"
         aria-label="Example icon-button with heart icon"
-        (click)="auth.logout({ returnTo: document.location.origin })"
+        (click)="logout()"
       >
         <mat-icon style="color: white">logout</mat-icon>
       </button>
@@ -50,14 +50,8 @@
       >
         <a routerLink="/" id="home" (click)="activate('home')">HOME</a>
         <a routerLink="/about" id="about" (click)="activate('about')">ABOUT US</a>
-        <a (click)="auth.loginWithRedirect()" id="login" *ngIf="!currentUser" (click)="activate('login')">LOGIN</a>
-        <a
-          (click)="auth.logout({ returnTo: document.location.origin })"
-          id="logout"
-          *ngIf="currentUser"
-          (click)="activate('login')"
-          >LOGOUT</a
-        >
+        <a (click)="loginWithRedirect()" id="login" *ngIf="!currentUser" (click)="activate('login')">LOGIN</a>
+        <a (click)="logout()" id="logout" *ngIf="currentUser" (click)="activate('login')">LOGOUT</a>
 
         <a *ngIf="currentUser">
           <img class="profile" src="{{ currentUser.picture }}" />
diff --git a/src/app/components/header/header.component.ts b/src/app/components/header/header.component.ts
index 91367fe..5b7c348 100644
--- a/src/app/components/header/header.component.ts
+++ b/src/app/components/header/header.component.ts
@@ -1,11 +1,10 @@
 import { BreakpointObserver, Breakpoints } from "@angular/cdk/layout";
+import { DOCUMENT } from "@angular/common";
 import { Component, Inject, OnInit } from "@angular/core";
-import { Router } from "@angular/router";
+import { User } from "@auth0/auth0-angular";
 import { Observable } from "rxjs";
 import { map, shareReplay } from "rxjs/operators";
 import { LoginService } from "src/app/services/login.service";
-import { AuthService, User } from "@auth0/auth0-angular";
-import { DOCUMENT } from "@angular/common";
 
 @Component({
   selector: "app-header",
@@ -31,49 +30,37 @@ export class HeaderComponent implements OnInit {
 
   constructor(
     @Inject(DOCUMENT) public document: Document,
-    public auth: AuthService,
     private breakpointObserver: BreakpointObserver,
-    private router: Router,
     private loginService: LoginService
-  ) {
-    auth.user$.subscribe((user: User) => {
-      this.currentUser = user;
-      console.log(this.currentUser);
-    });
-  }
+  ) {}
 
   ngOnInit(): void {
-    this.auth.idTokenClaims$.subscribe(async (claims) => {
-      console.log(claims, "claims");
-      if (claims && claims?.__raw) {
-        this.loginService.getTestUsers(claims?.__raw).subscribe(
-          (res) => {
-            console.log("got success");
-            console.log(res);
-          },
-          (error) => {
-            console.log("got error");
-            console.log(error);
-          }
-        );
-      }
+    console.log("this is header");
+    this.loginService.getCurrentUser().subscribe((user) => {
+      this.currentUser = user;
     });
-  }
-
-  logout() {
-    this.loginService.logout().subscribe(
+    this.loginService.getTestUsers().subscribe(
       (res) => {
-        localStorage.removeItem("token");
-        this.router.navigateByUrl("/");
+        console.log("we got resonse", res);
       },
-      (err) => {
-        localStorage.removeItem("token");
-        this.router.navigateByUrl("/");
+      (error) => {
+        console.log("we got error", error);
       }
     );
   }
 
-  activate(e) {
+  loginWithRedirect() {
+    this.loginService.loginWithRedirect();
+  }
+
+  logout() {
+    this.loginService.logout();
+  }
+
+  activate(e: string) {
+    if (!e) {
+      return;
+    }
     (<HTMLInputElement>document.getElementById("home")).style.backgroundColor = "none";
     (<HTMLInputElement>document.getElementById("about")).style.backgroundColor = "none";
     (<HTMLInputElement>document.getElementById("login")).style.backgroundColor = "none";
diff --git a/src/app/components/login/login.component.css b/src/app/components/login/login.component.css
deleted file mode 100644
index 4bba1b8..0000000
--- a/src/app/components/login/login.component.css
+++ /dev/null
@@ -1,73 +0,0 @@
-.container {
-  text-align: center;
-  padding-bottom: 300px;
-}
-
-.example-card {
-  height: 370px;
-  display: inline-block;
-  margin-top: 100px;
-}
-
-.intro {
-  top: 20%;
-  font-size: 35px;
-  text-align: center;
-  font-family: "Loto", sans-serif, cursive;
-  color: black;
-  font-weight: bold;
-}
-
-body {
-  font-family: "Loto", sans-serif;
-  background-color: #f8fafb;
-}
-
-@media screen and (min-width: 992px) {
-  p {
-    padding-top: 150px;
-    line-height: 150%;
-    color: #b3b3b3;
-    font-weight: 300;
-    margin: 0 20px;
-  }
-}
-
-@media screen and (max-width: 991px) {
-  p {
-    padding-top: 20px;
-    line-height: 150%;
-    color: #b3b3b3;
-    font-weight: 300;
-    margin: 0 20px;
-  }
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-.h1,
-.h2,
-.h3,
-.h4,
-.h5,
-.h6 {
-  font-family: "Loto", sans-serif;
-}
-
-a {
-  -webkit-transition: 0.3s all ease;
-  -o-transition: 0.3s all ease;
-  transition: 0.3s all ease;
-}
-
-a:hover {
-  text-decoration: none !important;
-}
-
-h2 {
-  font-size: 20px;
-}
diff --git a/src/app/components/login/login.component.html b/src/app/components/login/login.component.html
deleted file mode 100644
index a456f5e..0000000
--- a/src/app/components/login/login.component.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<div class="home-warp">
-  <p class="intro">Cultural Proficiency Continuum Dialogic Protocol</p>
-  <div class="container">
-    <mat-card class="example-card">
-      <div class="mb-4">
-        <h3 style="text-align: center">Login</h3>
-      </div>
-      <form [formGroup]="loginForm">
-        <mat-form-field appearance="outline" class="col-lg-12">
-          <mat-label>Enter Username </mat-label>
-          <input type="email" matInput placeholder="John" formControlName="username" required />
-          <mat-error *ngIf="loginForm.controls.username.invalid">{{ getEmailError() }}</mat-error>
-        </mat-form-field>
-        <mat-form-field appearance="outline" class="col-lg-12">
-          <mat-label>Enter your password</mat-label>
-          <input matInput formControlName="password" [type]="hide ? 'password' : 'text'" required />
-          <button
-            mat-icon-button
-            matSuffix
-            (click)="hide = !hide"
-            [attr.aria-label]="'Hide password'"
-            [attr.aria-pressed]="hide"
-          >
-            <mat-icon>{{ hide ? "visibility_off" : "visibility" }}</mat-icon>
-          </button>
-          <mat-error *ngIf="loginForm.controls.password.invalid">{{ getPasswordError() }}</mat-error>
-        </mat-form-field>
-
-        <input
-          type="submit"
-          value="Login"
-          class="btn text-white btn-block btn-primary"
-          style="background-color: #29abe2; font-size: 20px"
-          (click)="login()"
-        />
-      </form>
-      <small>Don't have an account?<a routerLink="/register">Click here</a></small>
-      <br />
-      <small>Forgot password?<a routerLink="/forgotPassword">Click here</a></small>
-      <br />
-      <small>Login as admin?<a href="https://cpcdpvcu.bhoomee.org/admin">Click here</a></small>
-    </mat-card>
-  </div>
-</div>
-
-<app-footer></app-footer>
diff --git a/src/app/components/login/login.component.spec.ts b/src/app/components/login/login.component.spec.ts
deleted file mode 100644
index e08691e..0000000
--- a/src/app/components/login/login.component.spec.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
-
-import { LoginComponent } from "./login.component";
-
-describe("LoginComponent", () => {
-  let component: LoginComponent;
-  let fixture: ComponentFixture<LoginComponent>;
-
-  beforeEach(async(() => {
-    TestBed.configureTestingModule({
-      declarations: [LoginComponent],
-    }).compileComponents();
-  }));
-
-  beforeEach(() => {
-    fixture = TestBed.createComponent(LoginComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it("should create", () => {
-    expect(component).toBeTruthy();
-  });
-});
diff --git a/src/app/components/login/login.component.ts b/src/app/components/login/login.component.ts
deleted file mode 100644
index 02d9ad0..0000000
--- a/src/app/components/login/login.component.ts
+++ /dev/null
@@ -1,86 +0,0 @@
-import { Component, OnInit } from "@angular/core";
-import { FormBuilder, FormGroup, Validators } from "@angular/forms";
-import { Router } from "@angular/router";
-import Swal from "sweetalert2";
-
-import { LoginService } from "src/app/services/login.service";
-
-@Component({
-  selector: "app-login",
-  templateUrl: "./login.component.html",
-  styleUrls: ["./login.component.css"],
-})
-export class LoginComponent implements OnInit {
-  loginForm: FormGroup;
-  hide = true;
-  constructor(private fb: FormBuilder, private router: Router, private loginService: LoginService) {}
-
-  ngOnInit(): void {
-    this.loginForm = this.fb.group({
-      username: ["", [Validators.required]],
-      password: ["", [Validators.required]],
-    });
-  }
-
-  getEmailError() {
-    if (this.loginForm.controls.username.hasError("required")) {
-      return "Required";
-    } else {
-      return "";
-    }
-  }
-
-  getPasswordError() {
-    if (this.loginForm.controls.password.hasError("required")) {
-      return "Required";
-    } else {
-      return "";
-    }
-  }
-
-  login() {
-    if (this.loginForm.invalid) {
-      Swal.fire({
-        text: "Please enter all the fields in the right format.",
-        icon: "error",
-      }).then((res) => {});
-    } else {
-      this.loginService.login(this.loginForm.value).subscribe(
-        (res) => {
-          localStorage.setItem("user", res["token"]);
-          localStorage.setItem("study", res["user"]["study_id"]);
-          Swal.fire({
-            text: "Login Successful",
-            icon: "success",
-          }).then((res) => {
-            this.loginService.checkStatus().subscribe((res) => {
-              if (res[0] == undefined) {
-                this.router.navigateByUrl("/preSurvey");
-              } else {
-                if (res[0]["postsurveystatus"] == true) {
-                  this.router.navigateByUrl("/final");
-                } else if (res[0]["scoresstatus"] == true) {
-                  this.router.navigateByUrl("/score");
-                } else if (res[0]["finalfeedbackstatus"] == true) {
-                  this.router.navigateByUrl("/result");
-                } else if (res[0]["cpcqstatus"] == true) {
-                  this.router.navigateByUrl("/finalFeedback");
-                } else if (res[0]["responsesstatus"] == true) {
-                  this.router.navigateByUrl("/unpacking");
-                } else if (res[0]["presurveystatus"] == true) {
-                  this.router.navigateByUrl("/dashboard");
-                }
-              }
-            });
-          });
-        },
-        (err) => {
-          Swal.fire({
-            text: "Wrong credentials",
-            icon: "error",
-          }).then((res) => {});
-        }
-      );
-    }
-  }
-}
diff --git a/src/app/components/post-survey/post-survey.component.ts b/src/app/components/post-survey/post-survey.component.ts
index 4ded338..15fb65d 100644
--- a/src/app/components/post-survey/post-survey.component.ts
+++ b/src/app/components/post-survey/post-survey.component.ts
@@ -1,11 +1,11 @@
 import { Component, OnInit } from "@angular/core";
-import Swal from "sweetalert2";
+import { FormBuilder, FormGroup } from "@angular/forms";
+import { MatDialog } from "@angular/material/dialog";
 import { Router } from "@angular/router";
-import { FormBuilder, FormGroup, FormControl, Validators } from "@angular/forms";
+import { CPCQService } from "src/app/services/cpcq.service";
 import { PreSurveyService } from "src/app/services/preSurvey.service";
-import { MatDialog } from "@angular/material/dialog";
+import Swal from "sweetalert2";
 import { DialogPDfComponent } from "../pre-survey/dialog-pdf/dialog-pdf.component";
-import { CPCQService } from "src/app/services/cpcq.service";
 
 @Component({
   selector: "app-post-survey",
@@ -46,12 +46,6 @@ export class PostSurveyComponent implements OnInit {
       this.consentFlag = res[0]["consent"];
     });
 
-    // if(localStorage.getItem("consent") == "true"){
-    //   this.consentFlag = true
-    // }
-    // else{
-    //   this.consentFlag = false
-    // }
     this.presurvey.getPostSurveyFormQuestions().subscribe(
       (res) => {
         this.formQuestion = res[0];
diff --git a/src/app/components/pre-survey/pre-survey.component.ts b/src/app/components/pre-survey/pre-survey.component.ts
index 4196e1a..7a4675a 100644
--- a/src/app/components/pre-survey/pre-survey.component.ts
+++ b/src/app/components/pre-survey/pre-survey.component.ts
@@ -1,10 +1,10 @@
-import { Component, OnInit, Inject } from "@angular/core";
-import Swal from "sweetalert2";
-import { Router } from "@angular/router";
+import { Component, OnInit } from "@angular/core";
+import { FormBuilder, FormGroup } from "@angular/forms";
 import { MatDialog } from "@angular/material/dialog";
-import { DialogPDfComponent } from "./dialog-pdf/dialog-pdf.component";
-import { FormBuilder, FormGroup, FormControl, Validators } from "@angular/forms";
+import { Router } from "@angular/router";
 import { PreSurveyService } from "src/app/services/preSurvey.service";
+import Swal from "sweetalert2";
+import { DialogPDfComponent } from "./dialog-pdf/dialog-pdf.component";
 export interface DialogData {
   animal: "panda" | "unicorn" | "lion";
 }
diff --git a/src/app/components/register-component/register-component.component.ts b/src/app/components/register-component/register-component.component.ts
index b034cd9..85af6f3 100644
--- a/src/app/components/register-component/register-component.component.ts
+++ b/src/app/components/register-component/register-component.component.ts
@@ -1,9 +1,8 @@
 import { Component, OnInit } from "@angular/core";
-import { EmailValidator, FormBuilder, FormGroup, Validators } from "@angular/forms";
-import { MatDialog, MatDialogRef } from "@angular/material/dialog";
+import { FormBuilder, FormGroup, Validators } from "@angular/forms";
 import { Router } from "@angular/router";
-import Swal from "sweetalert2";
 import { LoginService } from "src/app/services/login.service";
+import Swal from "sweetalert2";
 @Component({
   selector: "app-register-component",
   templateUrl: "./register-component.component.html",
@@ -49,7 +48,6 @@ export class RegisterComponentComponent implements OnInit {
     } else {
       this.loginService.register(this.loginForm.value).subscribe(
         (res) => {
-          localStorage.setItem("user", res["token"]);
           Swal.fire({
             text: "Registration Successful",
             icon: "success",
diff --git a/src/app/guards/role.guard.ts b/src/app/guards/role.guard.ts
index 4cd4b17..e6de8be 100644
--- a/src/app/guards/role.guard.ts
+++ b/src/app/guards/role.guard.ts
@@ -1,7 +1,7 @@
 import { Injectable } from "@angular/core";
 import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from "@angular/router";
-import { CurrentUserDataModel, MapUserRole, UserRoleCodes } from "src/app/types/user.type";
 import { UserService } from "src/app/core/services/api/user.service";
+import { MapUserRole } from "src/app/types/user.type";
 import { AuthenticatedRoutes, NonAuthenticatedRoutes } from "../variables/route_path.variables";
 
 @Injectable({
diff --git a/src/app/interceptors/token.interceptor.spec.ts b/src/app/interceptors/token.interceptor.spec.ts
new file mode 100644
index 0000000..13781f9
--- /dev/null
+++ b/src/app/interceptors/token.interceptor.spec.ts
@@ -0,0 +1,14 @@
+import { TokenInterceptor } from './token.interceptor';
+
+describe('TokenInterceptor', () => {
+    beforeEach(() => TestBed.configureTestingModule({
+        providers: [
+            TokenInterceptor
+        ]
+    }));
+
+    it('should be created', () => {
+        const interceptor: TokenInterceptor = TestBed.inject(TokenInterceptor);
+        expect(interceptor).toBeTruthy();
+    });
+});
diff --git a/src/app/interceptors/token.interceptor.ts b/src/app/interceptors/token.interceptor.ts
new file mode 100644
index 0000000..d432d8c
--- /dev/null
+++ b/src/app/interceptors/token.interceptor.ts
@@ -0,0 +1,22 @@
+import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from "@angular/common/http";
+import { Injectable } from "@angular/core";
+import { from, Observable } from "rxjs";
+import { LoginService } from "../services/login.service";
+
+@Injectable()
+export class TokenInterceptor implements HttpInterceptor {
+  constructor(private loginService: LoginService) {}
+
+  intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {
+    return from(this.handleIntercept(request, next));
+  }
+
+  private async handleIntercept(request: HttpRequest<any>, next: HttpHandler): Promise<HttpEvent<any>> {
+    const token = await this.loginService.getToken().toPromise();
+    console.log("token is", token);
+    if (token) {
+      request = request.clone({ headers: request.headers.set("Authorization", "Bearer " + token) });
+    }
+    return next.handle(request).toPromise();
+  }
+}
diff --git a/src/app/services/cpcq.service.ts b/src/app/services/cpcq.service.ts
index 2acdf48..44f7493 100644
--- a/src/app/services/cpcq.service.ts
+++ b/src/app/services/cpcq.service.ts
@@ -1,5 +1,5 @@
-import { Injectable } from "@angular/core";
 import { HttpClient } from "@angular/common/http";
+import { Injectable } from "@angular/core";
 import { environment } from "src/environments/environment";
 
 @Injectable({
@@ -12,130 +12,62 @@ export class CPCQService {
   constructor(private http: HttpClient) {}
 
   attitudeData() {
-    return this.http.get(`${this.baseUri}/attitude`, {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.get(`${this.baseUri}/attitude`);
   }
 
   empathyData() {
-    return this.http.get(`${this.baseUri}/empathy`, {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.get(`${this.baseUri}/empathy`);
   }
 
   policyData() {
-    return this.http.get(`${this.baseUri}/policy`, {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.get(`${this.baseUri}/policy`);
   }
 
   professionalismData() {
-    return this.http.get(`${this.baseUri}/professionalism`, {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.get(`${this.baseUri}/professionalism`);
   }
 
   teachingData() {
-    return this.http.get(`${this.baseUri}/teaching`, {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.get(`${this.baseUri}/teaching`);
   }
 
   changeCPCQStatus() {
-    return this.http.post(
-      `${this.cpcqUrl}`,
-      { choices: "Finished All Forms" },
-      {
-        headers: {
-          Authorization: "Token " + localStorage.getItem("user"),
-        },
-      }
-    );
+    return this.http.post(`${this.cpcqUrl}`, { choices: "Finished All Forms" });
   }
 
   getCPCQStatus() {
-    return this.http.get(`${this.cpcqUrl}`, {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.get(`${this.cpcqUrl}`);
   }
 
   postFormData(data) {
-    return this.http.post(`${this.baseUri}/responses`, data, {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.post(`${this.baseUri}/responses`, data);
   }
 
   postFeedbackForm(data) {
-    return this.http.post(`${this.baseUri}/finalFeedback`, data, {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.post(`${this.baseUri}/finalFeedback`, data);
   }
 
   getFormData() {
-    return this.http.get(`${this.baseUri}/responses`, {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.get(`${this.baseUri}/responses`);
   }
 
   getResponsesData() {
-    return this.http.get(`${this.baseUri}/responses_all/`, {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.get(`${this.baseUri}/responses_all/`);
   }
 
   postUnpacking(data) {
-    return this.http.post(`${this.baseUri}/cpcq_response`, data, {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.post(`${this.baseUri}/cpcq_response`, data);
   }
 
   getScoreInfo() {
-    return this.http.get(`${this.baseUri}/cpcq_response`, {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.get(`${this.baseUri}/cpcq_response`);
   }
 
   getScoreVisualization() {
-    return this.http.get(`${this.baseUri}/graphs`, {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.get(`${this.baseUri}/graphs`);
   }
 
   patchStatus(data) {
-    return this.http.patch(
-      `${this.baseUri}/status/?value=${data}`,
-      {},
-      {
-        headers: {
-          Authorization: "Token " + localStorage.getItem("user"),
-        },
-      }
-    );
+    return this.http.patch(`${this.baseUri}/status/?value=${data}`, {});
   }
 }
diff --git a/src/app/services/firstForm.service.ts b/src/app/services/firstForm.service.ts
index 33a87c7..aab0504 100644
--- a/src/app/services/firstForm.service.ts
+++ b/src/app/services/firstForm.service.ts
@@ -1,5 +1,5 @@
-import { Injectable } from "@angular/core";
 import { HttpClient } from "@angular/common/http";
+import { Injectable } from "@angular/core";
 import { environment } from "src/environments/environment";
 
 @Injectable({
@@ -12,20 +12,10 @@ export class FirstForm {
   constructor(private http: HttpClient) {}
 
   firstForm() {
-    return this.http.get(`${this.baseUri}`, {
-      headers: {
-        "Content-Type": "application/json",
-        authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.get(`${this.baseUri}`);
   }
 
   submitResponse(data) {
-    return this.http.post(`${this.responseUrl}`, data, {
-      headers: {
-        "Content-Type": "application/json",
-        authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.post(`${this.responseUrl}`, data);
   }
 }
diff --git a/src/app/services/login.service.ts b/src/app/services/login.service.ts
index bc15698..185f367 100644
--- a/src/app/services/login.service.ts
+++ b/src/app/services/login.service.ts
@@ -1,7 +1,8 @@
 import { HttpClient } from "@angular/common/http";
 import { Injectable } from "@angular/core";
-import { environment } from "src/environments/environment";
 import { AuthService, User } from "@auth0/auth0-angular";
+import { BehaviorSubject } from "rxjs";
+import { environment } from "src/environments/environment";
 
 @Injectable({
   providedIn: "root",
@@ -11,28 +12,45 @@ export class LoginService {
   registerUrl = environment.registerUrl;
   logoutUrl = environment.logoutUrl;
   baseUrl = environment.apiUrl;
-  token = "";
+  token$ = new BehaviorSubject<string>("");
+  currentUser$ = new BehaviorSubject<User>(null);
 
-  constructor(private http: HttpClient, private auth0Service: AuthService) {
-    auth0Service.idTokenClaims$.subscribe((claims) => {
-      console.log("claims", claims);
+  constructor(private http: HttpClient, private authService: AuthService) {
+    authService.user$.subscribe((user: User) => {
+      this.setCurrentUser(user);
+    });
+    this.authService.idTokenClaims$.subscribe((claims) => {
+      if (claims && claims.__raw) {
+        this.setToken(claims.__raw);
+      } else {
+        this.setToken("");
+      }
     });
   }
 
-  login(data: any) {
-    return this.http.post(`${this.loginUrl}`, data, {
-      headers: {
-        "Content-Type": "application/json",
-      },
-    });
+  setToken(value: string) {
+    return this.token$.next(value);
   }
 
-  forgotpassword(data) {
-    return this.http.patch(`${this.baseUrl}/password_change`, data, {
-      headers: {
-        "Content-Type": "application/json",
-      },
-    });
+  getToken() {
+    return this.token$.asObservable();
+  }
+
+  setCurrentUser(user: User) {
+    console.log("we have set current user", user);
+    this.currentUser$.next(user);
+  }
+
+  getCurrentUser() {
+    return this.currentUser$.asObservable();
+  }
+
+  loginWithRedirect() {
+    this.authService.loginWithRedirect();
+  }
+
+  logout() {
+    this.authService.logout({ returnTo: document.location.origin });
   }
 
   register(data) {
@@ -47,46 +65,22 @@ export class LoginService {
     return this.http.patch(`${this.baseUrl}/password_change/`, data, {
       headers: {
         "Content-Type": "application/json",
-        Authorization: "Token " + localStorage.getItem("user"),
       },
     });
   }
 
-  logout() {
-    return this.http.post(
-      `${this.logoutUrl}`,
-      {},
-      {
-        headers: {
-          Authorization: "Token " + localStorage.getItem("user"),
-        },
-      }
-    );
-  }
-
   checkStatus() {
-    return this.http.get(`${this.baseUrl}/status`, {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.get(`${this.baseUrl}/status`);
   }
 
   patchStatus(data) {
-    return this.http.patch(`${this.baseUrl}/status`, data, {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.patch(`${this.baseUrl}/status`, data);
   }
 
-  getTestUsers(token: string) {
-    console.log("token is", token);
+  getTestUsers() {
+    console.log("testing apis");
     return this.http.get(`http://localhost:3013/user`, {
       params: { organization_id: "1" },
-      headers: {
-        Authorization: "Bearer " + token,
-      },
     });
   }
 }
diff --git a/src/app/services/preSurvey.service.ts b/src/app/services/preSurvey.service.ts
index 36c69da..671bf47 100644
--- a/src/app/services/preSurvey.service.ts
+++ b/src/app/services/preSurvey.service.ts
@@ -1,5 +1,5 @@
-import { Injectable } from "@angular/core";
 import { HttpClient } from "@angular/common/http";
+import { Injectable } from "@angular/core";
 import { environment } from "src/environments/environment";
 
 @Injectable({
@@ -15,74 +15,38 @@ export class PreSurveyService {
   constructor(private http: HttpClient) {}
 
   submitForm(data) {
-    return this.http.post(`${this.preSurveys}`, data, {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.post(`${this.preSurveys}`, data);
   }
 
   postProfile(data) {
-    return this.http.patch(`${this.profileUrl}`, data, {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.patch(`${this.profileUrl}`, data);
   }
 
   getPreSurveyAnswer() {
-    return this.http.get(`${this.preSurveys}`, {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.get(`${this.preSurveys}`);
   }
 
   profileData() {
-    return this.http.get(`${this.profileUrl}`, {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.get(`${this.profileUrl}`);
   }
 
   userData() {
-    return this.http.get(`${this.userUrl}`, {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.get(`${this.userUrl}`);
   }
 
   submitPostSurvey(data) {
-    return this.http.post(`${this.postSurveyUrl}`, data, {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.post(`${this.postSurveyUrl}`, data);
   }
 
   getFormData() {
-    return this.http.get(`${this.userUrl}`, {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.get(`${this.userUrl}`);
   }
 
   getFormQuestions() {
-    return this.http.get(`${this.baseUrl}` + "presurvey_questions/", {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.get(`${this.baseUrl}` + "presurvey_questions/");
   }
 
   getPostSurveyFormQuestions() {
-    return this.http.get(`${this.baseUrl}` + "postsurvey_questions/", {
-      headers: {
-        Authorization: "Token " + localStorage.getItem("user"),
-      },
-    });
+    return this.http.get(`${this.baseUrl}` + "postsurvey_questions/");
   }
 }
-- 
GitLab


From 3edbf417248d8a88270d068d9fa2beff17475669 Mon Sep 17 00:00:00 2001
From: ramesh <rdramesh2009@gmail.com>
Date: Mon, 11 Jul 2022 14:06:21 -0400
Subject: [PATCH 09/23] updating to angular 14

---
 package-lock.json                 | 313 +++++++++++++++++++++++-------
 package.json                      |   1 +
 src/app/services/login.service.ts |   1 -
 src/polyfills.ts                  |   4 +
 4 files changed, 252 insertions(+), 67 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 3324953..9afc326 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -523,6 +523,192 @@
       "integrity": "sha512-IZG1kvw48JyFRy7bfMHqBixWrEHZmXmkP5DWsi5Tw6KusaczkMghI20BevCkodPcajXWHAUHNKyp1tlE3OnH0w==",
       "dev": true
     },
+    "@angular/localize": {
+      "version": "9.1.13",
+      "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-9.1.13.tgz",
+      "integrity": "sha512-jmUQXVgkU2djlRtSE1SQg6ktlKnACdm4p+4YYm/D48gkl+HGwrdZtczlLTWIVeTP7o8tx6+6fQkRSRD64Xvbkg==",
+      "requires": {
+        "@babel/core": "7.8.3",
+        "glob": "7.1.2",
+        "yargs": "^16.1.1"
+      },
+      "dependencies": {
+        "@babel/core": {
+          "version": "7.8.3",
+          "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.3.tgz",
+          "integrity": "sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA==",
+          "requires": {
+            "@babel/code-frame": "^7.8.3",
+            "@babel/generator": "^7.8.3",
+            "@babel/helpers": "^7.8.3",
+            "@babel/parser": "^7.8.3",
+            "@babel/template": "^7.8.3",
+            "@babel/traverse": "^7.8.3",
+            "@babel/types": "^7.8.3",
+            "convert-source-map": "^1.7.0",
+            "debug": "^4.1.0",
+            "gensync": "^1.0.0-beta.1",
+            "json5": "^2.1.0",
+            "lodash": "^4.17.13",
+            "resolve": "^1.3.2",
+            "semver": "^5.4.1",
+            "source-map": "^0.5.0"
+          }
+        },
+        "@babel/generator": {
+          "version": "7.18.7",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz",
+          "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==",
+          "requires": {
+            "@babel/types": "^7.18.7",
+            "@jridgewell/gen-mapping": "^0.3.2",
+            "jsesc": "^2.5.1"
+          },
+          "dependencies": {
+            "@babel/types": {
+              "version": "7.18.8",
+              "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
+              "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
+              "requires": {
+                "@babel/helper-validator-identifier": "^7.18.6",
+                "to-fast-properties": "^2.0.0"
+              }
+            }
+          }
+        },
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g=="
+        },
+        "ansi-regex": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+          "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
+        },
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "cliui": {
+          "version": "7.0.4",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+          "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+          "requires": {
+            "string-width": "^4.2.0",
+            "strip-ansi": "^6.0.0",
+            "wrap-ansi": "^7.0.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+        },
+        "get-caller-file": {
+          "version": "2.0.5",
+          "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+          "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
+        },
+        "glob": {
+          "version": "7.1.2",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+          "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.0.4",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
+        },
+        "json5": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
+          "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA=="
+        },
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+        },
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="
+        },
+        "string-width": {
+          "version": "4.2.3",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.1"
+          }
+        },
+        "strip-ansi": {
+          "version": "6.0.1",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+          "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+          "requires": {
+            "ansi-regex": "^5.0.1"
+          }
+        },
+        "wrap-ansi": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+          "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+          "requires": {
+            "ansi-styles": "^4.0.0",
+            "string-width": "^4.1.0",
+            "strip-ansi": "^6.0.0"
+          }
+        },
+        "y18n": {
+          "version": "5.0.8",
+          "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+          "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
+        },
+        "yargs": {
+          "version": "16.2.0",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+          "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+          "requires": {
+            "cliui": "^7.0.2",
+            "escalade": "^3.1.1",
+            "get-caller-file": "^2.0.5",
+            "require-directory": "^2.1.1",
+            "string-width": "^4.2.0",
+            "y18n": "^5.0.5",
+            "yargs-parser": "^20.2.2"
+          }
+        },
+        "yargs-parser": {
+          "version": "20.2.9",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+          "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="
+        }
+      }
+    },
     "@angular/material": {
       "version": "11.1.0",
       "resolved": "https://registry.npmjs.org/@angular/material/-/material-11.1.0.tgz",
@@ -610,7 +796,6 @@
       "version": "7.12.11",
       "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
       "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
-      "dev": true,
       "requires": {
         "@babel/highlight": "^7.10.4"
       }
@@ -733,7 +918,6 @@
       "version": "7.12.11",
       "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz",
       "integrity": "sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==",
-      "dev": true,
       "requires": {
         "@babel/helper-get-function-arity": "^7.12.10",
         "@babel/template": "^7.12.7",
@@ -744,7 +928,6 @@
       "version": "7.12.10",
       "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz",
       "integrity": "sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==",
-      "dev": true,
       "requires": {
         "@babel/types": "^7.12.10"
       }
@@ -853,7 +1036,6 @@
       "version": "7.12.11",
       "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz",
       "integrity": "sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==",
-      "dev": true,
       "requires": {
         "@babel/types": "^7.12.11"
       }
@@ -861,8 +1043,7 @@
     "@babel/helper-validator-identifier": {
       "version": "7.12.11",
       "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz",
-      "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==",
-      "dev": true
+      "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw=="
     },
     "@babel/helper-wrap-function": {
       "version": "7.12.3",
@@ -880,7 +1061,6 @@
       "version": "7.12.5",
       "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz",
       "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==",
-      "dev": true,
       "requires": {
         "@babel/template": "^7.10.4",
         "@babel/traverse": "^7.12.5",
@@ -891,7 +1071,6 @@
       "version": "7.10.4",
       "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
       "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
-      "dev": true,
       "requires": {
         "@babel/helper-validator-identifier": "^7.10.4",
         "chalk": "^2.0.0",
@@ -901,8 +1080,7 @@
     "@babel/parser": {
       "version": "7.12.11",
       "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz",
-      "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==",
-      "dev": true
+      "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg=="
     },
     "@babel/plugin-proposal-async-generator-functions": {
       "version": "7.12.12",
@@ -1412,7 +1590,6 @@
       "version": "7.12.7",
       "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz",
       "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==",
-      "dev": true,
       "requires": {
         "@babel/code-frame": "^7.10.4",
         "@babel/parser": "^7.12.7",
@@ -1423,7 +1600,6 @@
       "version": "7.12.12",
       "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.12.tgz",
       "integrity": "sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w==",
-      "dev": true,
       "requires": {
         "@babel/code-frame": "^7.12.11",
         "@babel/generator": "^7.12.11",
@@ -1440,7 +1616,6 @@
           "version": "7.12.11",
           "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz",
           "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==",
-          "dev": true,
           "requires": {
             "@babel/types": "^7.12.11",
             "jsesc": "^2.5.1",
@@ -1450,8 +1625,7 @@
         "source-map": {
           "version": "0.5.7",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-          "dev": true
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
         }
       }
     },
@@ -1459,7 +1633,6 @@
       "version": "7.12.12",
       "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.12.tgz",
       "integrity": "sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==",
-      "dev": true,
       "requires": {
         "@babel/helper-validator-identifier": "^7.12.11",
         "lodash": "^4.17.19",
@@ -1970,6 +2143,40 @@
       "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==",
       "dev": true
     },
+    "@jridgewell/gen-mapping": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
+      "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+      "requires": {
+        "@jridgewell/set-array": "^1.0.1",
+        "@jridgewell/sourcemap-codec": "^1.4.10",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      }
+    },
+    "@jridgewell/resolve-uri": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+      "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w=="
+    },
+    "@jridgewell/set-array": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+      "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw=="
+    },
+    "@jridgewell/sourcemap-codec": {
+      "version": "1.4.14",
+      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+      "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
+    },
+    "@jridgewell/trace-mapping": {
+      "version": "0.3.14",
+      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz",
+      "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==",
+      "requires": {
+        "@jridgewell/resolve-uri": "^3.0.3",
+        "@jridgewell/sourcemap-codec": "^1.4.10"
+      }
+    },
     "@jsdevtools/ono": {
       "version": "7.1.3",
       "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz",
@@ -2628,7 +2835,6 @@
       "version": "3.2.1",
       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
       "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-      "dev": true,
       "requires": {
         "color-convert": "^1.9.0"
       }
@@ -3020,8 +3226,7 @@
     "balanced-match": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
-      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
-      "dev": true
+      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
     },
     "base": {
       "version": "0.11.2",
@@ -3419,7 +3624,6 @@
       "version": "1.1.11",
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-      "dev": true,
       "requires": {
         "balanced-match": "^1.0.0",
         "concat-map": "0.0.1"
@@ -3870,7 +4074,6 @@
       "version": "2.4.2",
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
       "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-      "dev": true,
       "requires": {
         "ansi-styles": "^3.2.1",
         "escape-string-regexp": "^1.0.5",
@@ -4196,7 +4399,6 @@
       "version": "1.9.3",
       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
       "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
-      "dev": true,
       "requires": {
         "color-name": "1.1.3"
       }
@@ -4204,8 +4406,7 @@
     "color-name": {
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
-      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
-      "dev": true
+      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
     },
     "color-string": {
       "version": "1.5.4",
@@ -4369,8 +4570,7 @@
     "concat-map": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
-      "dev": true
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
     },
     "concat-stream": {
       "version": "1.6.2",
@@ -4482,7 +4682,6 @@
       "version": "1.7.0",
       "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
       "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
-      "dev": true,
       "requires": {
         "safe-buffer": "~5.1.1"
       }
@@ -5635,8 +5834,7 @@
     "emoji-regex": {
       "version": "8.0.0",
       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-      "dev": true
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
     },
     "emojis-list": {
       "version": "2.1.0",
@@ -5953,8 +6151,7 @@
     "escalade": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
-      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
-      "dev": true
+      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
     },
     "escape-goat": {
       "version": "2.1.1",
@@ -5971,8 +6168,7 @@
     "escape-string-regexp": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
-      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
-      "dev": true
+      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
     },
     "eslint-scope": {
       "version": "4.0.3",
@@ -7246,8 +7442,7 @@
     "fs.realpath": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
-      "dev": true
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
     },
     "fsevents": {
       "version": "2.3.1",
@@ -7282,8 +7477,7 @@
     "function-bind": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-      "dev": true
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
     },
     "fuzzy": {
       "version": "0.1.3",
@@ -7383,6 +7577,11 @@
       "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==",
       "dev": true
     },
+    "gensync": {
+      "version": "1.0.0-beta.2",
+      "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+      "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
+    },
     "get-caller-file": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
@@ -7496,8 +7695,7 @@
     "globals": {
       "version": "11.12.0",
       "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
-      "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
-      "dev": true
+      "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
     },
     "globby": {
       "version": "7.1.1",
@@ -7787,7 +7985,6 @@
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
       "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-      "dev": true,
       "requires": {
         "function-bind": "^1.1.1"
       }
@@ -7827,8 +8024,7 @@
     "has-flag": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
-      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
-      "dev": true
+      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
     },
     "has-symbols": {
       "version": "1.0.1",
@@ -8293,7 +8489,6 @@
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
       "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-      "dev": true,
       "requires": {
         "once": "^1.3.0",
         "wrappy": "1"
@@ -8302,8 +8497,7 @@
     "inherits": {
       "version": "2.0.4",
       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-      "dev": true
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
     },
     "ini": {
       "version": "1.3.5",
@@ -8621,7 +8815,6 @@
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz",
       "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==",
-      "dev": true,
       "requires": {
         "has": "^1.0.3"
       }
@@ -9164,8 +9357,7 @@
     "js-tokens": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
-      "dev": true
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
     },
     "js-yaml": {
       "version": "3.14.1",
@@ -9186,8 +9378,7 @@
     "jsesc": {
       "version": "2.5.2",
       "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
-      "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
-      "dev": true
+      "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
     },
     "json-bigint": {
       "version": "1.0.0",
@@ -9638,8 +9829,7 @@
     "lodash": {
       "version": "4.17.20",
       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
-      "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
-      "dev": true
+      "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
     },
     "lodash._isnative": {
       "version": "2.4.1",
@@ -10356,7 +10546,6 @@
       "version": "3.0.4",
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
       "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-      "dev": true,
       "requires": {
         "brace-expansion": "^1.1.7"
       }
@@ -11216,7 +11405,6 @@
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
       "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-      "dev": true,
       "requires": {
         "wrappy": "1"
       }
@@ -11647,8 +11835,7 @@
     "path-is-absolute": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
-      "dev": true
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
     },
     "path-is-inside": {
       "version": "1.0.2",
@@ -11665,8 +11852,7 @@
     "path-parse": {
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
-      "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
-      "dev": true
+      "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
     },
     "path-to-regexp": {
       "version": "0.1.7",
@@ -13156,8 +13342,7 @@
     "require-directory": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
-      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
-      "dev": true
+      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
     },
     "require-main-filename": {
       "version": "1.0.1",
@@ -13175,7 +13360,6 @@
       "version": "1.19.0",
       "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz",
       "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==",
-      "dev": true,
       "requires": {
         "is-core-module": "^2.1.0",
         "path-parse": "^1.0.6"
@@ -14725,7 +14909,6 @@
       "version": "5.5.0",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
       "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-      "dev": true,
       "requires": {
         "has-flag": "^3.0.0"
       }
@@ -15172,8 +15355,7 @@
     "to-fast-properties": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
-      "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
-      "dev": true
+      "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
     },
     "to-object-path": {
       "version": "0.3.0",
@@ -16753,8 +16935,7 @@
     "wrappy": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
-      "dev": true
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
     },
     "write-file-atomic": {
       "version": "3.0.3",
diff --git a/package.json b/package.json
index cd90e19..a95eb10 100644
--- a/package.json
+++ b/package.json
@@ -18,6 +18,7 @@
     "@angular/core": "~9.0.7",
     "@angular/fire": "^6.1.4",
     "@angular/forms": "~9.0.7",
+    "@angular/localize": "^9.1.13",
     "@angular/material": "^11.1.0",
     "@angular/platform-browser": "~9.0.7",
     "@angular/platform-browser-dynamic": "~9.0.7",
diff --git a/src/app/services/login.service.ts b/src/app/services/login.service.ts
index 185f367..e7a4bed 100644
--- a/src/app/services/login.service.ts
+++ b/src/app/services/login.service.ts
@@ -37,7 +37,6 @@ export class LoginService {
   }
 
   setCurrentUser(user: User) {
-    console.log("we have set current user", user);
     this.currentUser$.next(user);
   }
 
diff --git a/src/polyfills.ts b/src/polyfills.ts
index 03711e5..01e24d6 100644
--- a/src/polyfills.ts
+++ b/src/polyfills.ts
@@ -1,3 +1,7 @@
+/***************************************************************************************************
+ * Load `$localize` onto the global scope - used if i18n tags appear in Angular templates.
+ */
+import '@angular/localize/init';
 /**
  * This file includes polyfills needed by Angular and is loaded before the app.
  * You can add your own extra polyfills to this file.
-- 
GitLab


From a497614019a0c5f1b4bb89054ab1ddbbc2aa1de8 Mon Sep 17 00:00:00 2001
From: ramesh <rdramesh2009@gmail.com>
Date: Mon, 11 Jul 2022 14:19:43 -0400
Subject: [PATCH 10/23] angular 10 update

---
 browserslist => .browserslistrc |    0
 e2e/tsconfig.json               |    2 +-
 package-lock.json               | 8704 +++++++++++++++++++++----------
 package.json                    |   44 +-
 tsconfig.json                   |    2 +-
 tslint.json                     |   66 +-
 6 files changed, 5896 insertions(+), 2922 deletions(-)
 rename browserslist => .browserslistrc (100%)

diff --git a/browserslist b/.browserslistrc
similarity index 100%
rename from browserslist
rename to .browserslistrc
diff --git a/e2e/tsconfig.json b/e2e/tsconfig.json
index 39b800f..c92199c 100644
--- a/e2e/tsconfig.json
+++ b/e2e/tsconfig.json
@@ -3,7 +3,7 @@
   "compilerOptions": {
     "outDir": "../out-tsc/e2e",
     "module": "commonjs",
-    "target": "es5",
+    "target": "es2018",
     "types": [
       "jasmine",
       "jasminewd2",
diff --git a/package-lock.json b/package-lock.json
index 9afc326..3b677d9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -21,144 +21,362 @@
           "dev": true,
           "requires": {
             "tslib": "^1.9.0"
+          },
+          "dependencies": {
+            "tslib": {
+              "version": "1.14.1",
+              "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+              "dev": true
+            }
           }
         }
       }
     },
     "@angular-devkit/build-angular": {
-      "version": "0.900.7",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.900.7.tgz",
-      "integrity": "sha512-Yv2y3OEaYEd0fE0pKvtqBpmkQYs9xJws7thHnJYCwIfYO55RfolYsXkJgAXke/4NPLrD3EsIDqoPxF7l+uw2/Q==",
-      "dev": true,
-      "requires": {
-        "@angular-devkit/architect": "0.900.7",
-        "@angular-devkit/build-optimizer": "0.900.7",
-        "@angular-devkit/build-webpack": "0.900.7",
-        "@angular-devkit/core": "9.0.7",
-        "@babel/core": "7.7.7",
-        "@babel/generator": "7.7.7",
-        "@babel/preset-env": "7.7.7",
-        "@ngtools/webpack": "9.0.7",
-        "ajv": "6.10.2",
-        "autoprefixer": "9.7.1",
-        "babel-loader": "8.0.6",
+      "version": "0.1002.4",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.1002.4.tgz",
+      "integrity": "sha512-0jo8fCbOyo1HGRDKBVzIzmGd3/Z+x5YP/9t1QHQrPTq9gRoVI+1vFgrKh7XApmGPa/S4bN6hows1wnGzTq5xJg==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/architect": "0.1002.4",
+        "@angular-devkit/build-optimizer": "0.1002.4",
+        "@angular-devkit/build-webpack": "0.1002.4",
+        "@angular-devkit/core": "10.2.4",
+        "@babel/core": "7.11.1",
+        "@babel/generator": "7.11.0",
+        "@babel/plugin-transform-runtime": "7.11.0",
+        "@babel/preset-env": "7.11.0",
+        "@babel/runtime": "7.11.2",
+        "@babel/template": "7.10.4",
+        "@jsdevtools/coverage-istanbul-loader": "3.0.5",
+        "@ngtools/webpack": "10.2.4",
+        "autoprefixer": "9.8.6",
+        "babel-loader": "8.1.0",
         "browserslist": "^4.9.1",
-        "cacache": "13.0.1",
+        "cacache": "15.0.5",
         "caniuse-lite": "^1.0.30001032",
         "circular-dependency-plugin": "5.2.0",
-        "copy-webpack-plugin": "5.1.1",
+        "copy-webpack-plugin": "6.0.3",
         "core-js": "3.6.4",
-        "coverage-istanbul-loader": "2.0.3",
+        "css-loader": "4.2.2",
         "cssnano": "4.1.10",
-        "file-loader": "4.2.0",
-        "find-cache-dir": "3.0.0",
-        "glob": "7.1.5",
-        "jest-worker": "24.9.0",
+        "file-loader": "6.0.0",
+        "find-cache-dir": "3.3.1",
+        "glob": "7.1.6",
+        "jest-worker": "26.3.0",
         "karma-source-map-support": "1.4.0",
-        "less": "3.10.3",
-        "less-loader": "5.0.0",
-        "license-webpack-plugin": "2.1.3",
-        "loader-utils": "1.2.3",
-        "magic-string": "0.25.4",
-        "mini-css-extract-plugin": "0.8.0",
+        "less-loader": "6.2.0",
+        "license-webpack-plugin": "2.3.0",
+        "loader-utils": "2.0.0",
+        "mini-css-extract-plugin": "0.10.0",
         "minimatch": "3.0.4",
-        "open": "7.0.0",
-        "parse5": "4.0.0",
-        "postcss": "7.0.21",
+        "open": "7.2.0",
+        "parse5": "6.0.1",
+        "parse5-htmlparser2-tree-adapter": "6.0.1",
+        "pnp-webpack-plugin": "1.6.4",
+        "postcss": "7.0.32",
         "postcss-import": "12.0.1",
         "postcss-loader": "3.0.0",
-        "raw-loader": "3.1.0",
-        "regenerator-runtime": "0.13.3",
-        "rimraf": "3.0.0",
-        "rollup": "1.25.2",
-        "rxjs": "6.5.3",
-        "sass": "1.23.3",
-        "sass-loader": "8.0.0",
-        "semver": "6.3.0",
+        "raw-loader": "4.0.1",
+        "regenerator-runtime": "0.13.7",
+        "resolve-url-loader": "3.1.2",
+        "rimraf": "3.0.2",
+        "rollup": "2.26.5",
+        "rxjs": "6.6.2",
+        "sass": "1.26.10",
+        "sass-loader": "10.0.1",
+        "semver": "7.3.2",
         "source-map": "0.7.3",
-        "source-map-loader": "0.2.4",
-        "source-map-support": "0.5.16",
-        "speed-measure-webpack-plugin": "1.3.1",
-        "style-loader": "1.0.0",
-        "stylus": "0.54.7",
+        "source-map-loader": "1.0.2",
+        "source-map-support": "0.5.19",
+        "speed-measure-webpack-plugin": "1.3.3",
+        "style-loader": "1.2.1",
+        "stylus": "0.54.8",
         "stylus-loader": "3.0.2",
-        "terser": "4.5.1",
-        "terser-webpack-plugin": "2.3.3",
+        "terser": "5.3.0",
+        "terser-webpack-plugin": "4.1.0",
         "tree-kill": "1.2.2",
-        "webpack": "4.41.2",
+        "webpack": "4.44.1",
         "webpack-dev-middleware": "3.7.2",
-        "webpack-dev-server": "3.9.0",
+        "webpack-dev-server": "3.11.0",
         "webpack-merge": "4.2.2",
         "webpack-sources": "1.4.3",
-        "webpack-subresource-integrity": "1.3.4",
-        "worker-plugin": "3.2.0"
+        "webpack-subresource-integrity": "1.4.1",
+        "worker-plugin": "5.0.0"
       },
       "dependencies": {
+        "@angular-devkit/architect": {
+          "version": "0.1002.4",
+          "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1002.4.tgz",
+          "integrity": "sha512-Vrb2XSnvqj4RByqSWPeG/o9BSNX2DL3pxwQgLMrxofG8/+1VHQ2MsN/KTxBnEZtqeW4/l2QWTsQyzY5frJI69A==",
+          "dev": true,
+          "requires": {
+            "@angular-devkit/core": "10.2.4",
+            "rxjs": "6.6.2"
+          }
+        },
+        "@angular-devkit/core": {
+          "version": "10.2.4",
+          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.2.4.tgz",
+          "integrity": "sha512-gnm/+Iyaa6Jt3E803bpTjkwDAIb0AhP9badaGwbx44+bhbNSE2WzOBmdsQrsxJXHAMEG9CGeBzeRd8XZtLACWg==",
+          "dev": true,
+          "requires": {
+            "ajv": "6.12.4",
+            "fast-json-stable-stringify": "2.1.0",
+            "magic-string": "0.25.7",
+            "rxjs": "6.6.2",
+            "source-map": "0.7.3"
+          }
+        },
+        "@babel/generator": {
+          "version": "7.11.0",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz",
+          "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.11.0",
+            "jsesc": "^2.5.1",
+            "source-map": "^0.5.0"
+          },
+          "dependencies": {
+            "source-map": {
+              "version": "0.5.7",
+              "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+              "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+              "dev": true
+            }
+          }
+        },
+        "@babel/template": {
+          "version": "7.10.4",
+          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz",
+          "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.10.4",
+            "@babel/parser": "^7.10.4",
+            "@babel/types": "^7.10.4"
+          }
+        },
+        "ajv": {
+          "version": "6.12.4",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz",
+          "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^3.1.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
+          }
+        },
+        "fast-deep-equal": {
+          "version": "3.1.3",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+          "dev": true
+        },
+        "fast-json-stable-stringify": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+          "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+          "dev": true
+        },
+        "glob": {
+          "version": "7.1.6",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+          "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+          "dev": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.0.4",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        },
+        "magic-string": {
+          "version": "0.25.7",
+          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
+          "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+          "dev": true,
+          "requires": {
+            "sourcemap-codec": "^1.4.4"
+          }
+        },
         "open": {
-          "version": "7.0.0",
-          "resolved": "https://registry.npmjs.org/open/-/open-7.0.0.tgz",
-          "integrity": "sha512-K6EKzYqnwQzk+/dzJAQSBORub3xlBTxMz+ntpZpH/LyCa1o6KjXhuN+2npAaI9jaSmU3R1Q8NWf4KUWcyytGsQ==",
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/open/-/open-7.2.0.tgz",
+          "integrity": "sha512-4HeyhxCvBTI5uBePsAdi55C5fmqnWZ2e2MlmvWi5KW5tdH5rxoiv/aMtbeVxKZc3eWkT1GymMnLG8XC4Rq4TDQ==",
+          "dev": true,
+          "requires": {
+            "is-docker": "^2.0.0",
+            "is-wsl": "^2.1.1"
+          }
+        },
+        "rimraf": {
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
           "dev": true,
           "requires": {
-            "is-wsl": "^2.1.0"
+            "glob": "^7.1.3"
           }
         },
         "rxjs": {
-          "version": "6.5.3",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
-          "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
+          "version": "6.6.2",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz",
+          "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==",
           "dev": true,
           "requires": {
             "tslib": "^1.9.0"
+          },
+          "dependencies": {
+            "tslib": {
+              "version": "1.14.1",
+              "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+              "dev": true
+            }
+          }
+        },
+        "semver": {
+          "version": "7.3.2",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
+          "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
+          "dev": true
+        },
+        "source-map-support": {
+          "version": "0.5.19",
+          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
+          "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
+          "dev": true,
+          "requires": {
+            "buffer-from": "^1.0.0",
+            "source-map": "^0.6.0"
+          },
+          "dependencies": {
+            "source-map": {
+              "version": "0.6.1",
+              "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+              "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+              "dev": true
+            }
           }
         }
       }
     },
     "@angular-devkit/build-optimizer": {
-      "version": "0.900.7",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.900.7.tgz",
-      "integrity": "sha512-gxin2oPNMN+PYo82At2JP1Q+uxnvwyDFWA1Wl+Ufuc5zHGhjKqxdQjkdMF7OT0ihtmkllN+t/NTB7rcx/Sx9Wg==",
+      "version": "0.1002.4",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1002.4.tgz",
+      "integrity": "sha512-O705v4N+VCaeTnePYVHf+XZaPxU8eTWCx2mYvCmG0urHh1GCehb+vX1v332tTaC2uzMoH+RSg2Nh2apFX+pE0Q==",
       "dev": true,
       "requires": {
-        "loader-utils": "1.2.3",
+        "loader-utils": "2.0.0",
         "source-map": "0.7.3",
-        "tslib": "1.10.0",
-        "typescript": "3.6.4",
+        "tslib": "2.0.1",
+        "typescript": "4.0.2",
         "webpack-sources": "1.4.3"
       },
       "dependencies": {
         "tslib": {
-          "version": "1.10.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
-          "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz",
+          "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==",
           "dev": true
         },
         "typescript": {
-          "version": "3.6.4",
-          "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.4.tgz",
-          "integrity": "sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg==",
+          "version": "4.0.2",
+          "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz",
+          "integrity": "sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==",
           "dev": true
         }
       }
     },
     "@angular-devkit/build-webpack": {
-      "version": "0.900.7",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.900.7.tgz",
-      "integrity": "sha512-Nwwqjo1ZpHFLavN+nXOmuBgGjhoMBZGelDCvHtiQlQ9N6i7k9cKnP7eU5pY7jbalBguS+gWg5wJIGnbqk1K9Rg==",
+      "version": "0.1002.4",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1002.4.tgz",
+      "integrity": "sha512-5K+hPWmWV1q0HKcvJrTjJ5ABKEQintJlMMaewfmDUDOfslpabtXtY3LF+18a2RBdktAtLpIxoVTX1j/dvotu+w==",
       "dev": true,
       "requires": {
-        "@angular-devkit/architect": "0.900.7",
-        "@angular-devkit/core": "9.0.7",
-        "rxjs": "6.5.3"
+        "@angular-devkit/architect": "0.1002.4",
+        "@angular-devkit/core": "10.2.4",
+        "rxjs": "6.6.2"
       },
       "dependencies": {
+        "@angular-devkit/architect": {
+          "version": "0.1002.4",
+          "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1002.4.tgz",
+          "integrity": "sha512-Vrb2XSnvqj4RByqSWPeG/o9BSNX2DL3pxwQgLMrxofG8/+1VHQ2MsN/KTxBnEZtqeW4/l2QWTsQyzY5frJI69A==",
+          "dev": true,
+          "requires": {
+            "@angular-devkit/core": "10.2.4",
+            "rxjs": "6.6.2"
+          }
+        },
+        "@angular-devkit/core": {
+          "version": "10.2.4",
+          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.2.4.tgz",
+          "integrity": "sha512-gnm/+Iyaa6Jt3E803bpTjkwDAIb0AhP9badaGwbx44+bhbNSE2WzOBmdsQrsxJXHAMEG9CGeBzeRd8XZtLACWg==",
+          "dev": true,
+          "requires": {
+            "ajv": "6.12.4",
+            "fast-json-stable-stringify": "2.1.0",
+            "magic-string": "0.25.7",
+            "rxjs": "6.6.2",
+            "source-map": "0.7.3"
+          }
+        },
+        "ajv": {
+          "version": "6.12.4",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz",
+          "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^3.1.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
+          }
+        },
+        "fast-deep-equal": {
+          "version": "3.1.3",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+          "dev": true
+        },
+        "fast-json-stable-stringify": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+          "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+          "dev": true
+        },
+        "magic-string": {
+          "version": "0.25.7",
+          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
+          "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+          "dev": true,
+          "requires": {
+            "sourcemap-codec": "^1.4.4"
+          }
+        },
         "rxjs": {
-          "version": "6.5.3",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
-          "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
+          "version": "6.6.2",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz",
+          "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==",
           "dev": true,
           "requires": {
             "tslib": "^1.9.0"
+          },
+          "dependencies": {
+            "tslib": {
+              "version": "1.14.1",
+              "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+              "dev": true
+            }
           }
         }
       }
@@ -183,36 +401,108 @@
           "dev": true,
           "requires": {
             "tslib": "^1.9.0"
+          },
+          "dependencies": {
+            "tslib": {
+              "version": "1.14.1",
+              "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+              "dev": true
+            }
           }
         }
       }
     },
     "@angular-devkit/schematics": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.0.7.tgz",
-      "integrity": "sha512-ryPC+l24f3gX5DFMTLkDM/q2Kp6LPzBn6400k7j4qVdb1cIrZx+JUQd7F4iAksTTkX15EQPanptQXeztUrl9Ng==",
+      "version": "10.2.4",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-10.2.4.tgz",
+      "integrity": "sha512-poBGWRwMgnnnmoZfwyOBcQMJm7U5y5XxnxvMsBJEyAQRxfQa+KLvcCfGWXqskNTyBdQFpy4kxmtCzRClkoEiKQ==",
       "dev": true,
       "requires": {
-        "@angular-devkit/core": "9.0.7",
-        "ora": "4.0.2",
-        "rxjs": "6.5.3"
+        "@angular-devkit/core": "10.2.4",
+        "ora": "5.0.0",
+        "rxjs": "6.6.2"
       },
       "dependencies": {
+        "@angular-devkit/core": {
+          "version": "10.2.4",
+          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.2.4.tgz",
+          "integrity": "sha512-gnm/+Iyaa6Jt3E803bpTjkwDAIb0AhP9badaGwbx44+bhbNSE2WzOBmdsQrsxJXHAMEG9CGeBzeRd8XZtLACWg==",
+          "dev": true,
+          "requires": {
+            "ajv": "6.12.4",
+            "fast-json-stable-stringify": "2.1.0",
+            "magic-string": "0.25.7",
+            "rxjs": "6.6.2",
+            "source-map": "0.7.3"
+          }
+        },
+        "ajv": {
+          "version": "6.12.4",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz",
+          "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^3.1.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
+          }
+        },
+        "fast-deep-equal": {
+          "version": "3.1.3",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+          "dev": true
+        },
+        "fast-json-stable-stringify": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+          "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+          "dev": true
+        },
+        "magic-string": {
+          "version": "0.25.7",
+          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
+          "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+          "dev": true,
+          "requires": {
+            "sourcemap-codec": "^1.4.4"
+          }
+        },
         "rxjs": {
-          "version": "6.5.3",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
-          "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
+          "version": "6.6.2",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz",
+          "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==",
           "dev": true,
           "requires": {
             "tslib": "^1.9.0"
+          },
+          "dependencies": {
+            "tslib": {
+              "version": "1.14.1",
+              "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+              "dev": true
+            }
           }
         }
       }
     },
     "@angular/animations": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-9.0.7.tgz",
-      "integrity": "sha512-74gY7onajmmnksy5E0/32bFv3B9NuWxV64kqD15YjGrh8AWe1BHt5enQI+rJ2tO8m2DKnwZsctis6k0Kcy+YKQ=="
+      "version": "10.2.5",
+      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-10.2.5.tgz",
+      "integrity": "sha512-lIMwjY1pAqpCM4Ayndf2RsvOWRUc5QV7W82XNou6pIBv2T1i1XV6H72I5Sk9Z4sxxBYCWncEaEub+C6NcS8QRg==",
+      "requires": {
+        "tslib": "^2.0.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.4.0",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
+          "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
+        }
+      }
     },
     "@angular/cdk": {
       "version": "11.1.0",
@@ -237,33 +527,68 @@
       }
     },
     "@angular/cli": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.0.7.tgz",
-      "integrity": "sha512-/9CUNSSVyTtTNUADZ/VXJDEdhineMN/rfd35w6VsHiob49tKkeOTggaoiSne3RY4VCTqlo7GGf4KhhVXEMGnDQ==",
+      "version": "10.2.4",
+      "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-10.2.4.tgz",
+      "integrity": "sha512-S8xAJemX3zE/I/xi81DT6NuzfDwEAEtEeITHxrAH0AHE4kaUBy2O9bAopvYqMNzxs/XGqyxMv8vwYYpGax7EEQ==",
       "dev": true,
       "requires": {
-        "@angular-devkit/architect": "0.900.7",
-        "@angular-devkit/core": "9.0.7",
-        "@angular-devkit/schematics": "9.0.7",
-        "@schematics/angular": "9.0.7",
-        "@schematics/update": "0.900.7",
+        "@angular-devkit/architect": "0.1002.4",
+        "@angular-devkit/core": "10.2.4",
+        "@angular-devkit/schematics": "10.2.4",
+        "@schematics/angular": "10.2.4",
+        "@schematics/update": "0.1002.4",
         "@yarnpkg/lockfile": "1.1.0",
         "ansi-colors": "4.1.1",
-        "debug": "^4.1.1",
-        "ini": "1.3.5",
-        "inquirer": "7.0.0",
-        "npm-package-arg": "6.1.1",
-        "npm-pick-manifest": "3.0.2",
-        "open": "7.0.0",
-        "pacote": "9.5.8",
+        "debug": "4.1.1",
+        "ini": "1.3.6",
+        "inquirer": "7.3.3",
+        "npm-package-arg": "8.0.1",
+        "npm-pick-manifest": "6.1.0",
+        "open": "7.2.0",
+        "pacote": "9.5.12",
         "read-package-tree": "5.3.1",
-        "rimraf": "3.0.0",
-        "semver": "6.3.0",
+        "rimraf": "3.0.2",
+        "semver": "7.3.2",
         "symbol-observable": "1.2.0",
-        "universal-analytics": "^0.4.20",
-        "uuid": "^3.3.2"
+        "universal-analytics": "0.4.23",
+        "uuid": "8.3.0"
       },
       "dependencies": {
+        "@angular-devkit/architect": {
+          "version": "0.1002.4",
+          "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1002.4.tgz",
+          "integrity": "sha512-Vrb2XSnvqj4RByqSWPeG/o9BSNX2DL3pxwQgLMrxofG8/+1VHQ2MsN/KTxBnEZtqeW4/l2QWTsQyzY5frJI69A==",
+          "dev": true,
+          "requires": {
+            "@angular-devkit/core": "10.2.4",
+            "rxjs": "6.6.2"
+          }
+        },
+        "@angular-devkit/core": {
+          "version": "10.2.4",
+          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.2.4.tgz",
+          "integrity": "sha512-gnm/+Iyaa6Jt3E803bpTjkwDAIb0AhP9badaGwbx44+bhbNSE2WzOBmdsQrsxJXHAMEG9CGeBzeRd8XZtLACWg==",
+          "dev": true,
+          "requires": {
+            "ajv": "6.12.4",
+            "fast-json-stable-stringify": "2.1.0",
+            "magic-string": "0.25.7",
+            "rxjs": "6.6.2",
+            "source-map": "0.7.3"
+          }
+        },
+        "ajv": {
+          "version": "6.12.4",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz",
+          "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^3.1.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
+          }
+        },
         "ansi-colors": {
           "version": "4.1.1",
           "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
@@ -271,130 +596,263 @@
           "dev": true
         },
         "ansi-escapes": {
-          "version": "4.3.1",
-          "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz",
-          "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==",
+          "version": "4.3.2",
+          "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+          "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
           "dev": true,
           "requires": {
-            "type-fest": "^0.11.0"
+            "type-fest": "^0.21.3"
           }
         },
         "ansi-regex": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+          "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
           "dev": true
         },
-        "figures": {
-          "version": "3.2.0",
-          "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
-          "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
           "dev": true,
           "requires": {
-            "escape-string-regexp": "^1.0.5"
+            "color-convert": "^2.0.1"
           }
         },
-        "inquirer": {
-          "version": "7.0.0",
-          "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz",
-          "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==",
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
           "dev": true,
           "requires": {
-            "ansi-escapes": "^4.2.1",
-            "chalk": "^2.4.2",
-            "cli-cursor": "^3.1.0",
-            "cli-width": "^2.0.0",
-            "external-editor": "^3.0.3",
-            "figures": "^3.0.0",
-            "lodash": "^4.17.15",
-            "mute-stream": "0.0.8",
-            "run-async": "^2.2.0",
-            "rxjs": "^6.4.0",
-            "string-width": "^4.1.0",
-            "strip-ansi": "^5.1.0",
-            "through": "^2.3.6"
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
           }
         },
-        "is-fullwidth-code-point": {
+        "cli-width": {
           "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+          "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
+          "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
           "dev": true
         },
-        "mute-stream": {
-          "version": "0.0.8",
-          "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        },
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "fast-deep-equal": {
+          "version": "3.1.3",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+          "dev": true
+        },
+        "fast-json-stable-stringify": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+          "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+          "dev": true
+        },
+        "figures": {
+          "version": "3.2.0",
+          "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
+          "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+          "dev": true,
+          "requires": {
+            "escape-string-regexp": "^1.0.5"
+          }
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true
+        },
+        "ini": {
+          "version": "1.3.6",
+          "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.6.tgz",
+          "integrity": "sha512-IZUoxEjNjubzrmvzZU4lKP7OnYmX72XRl3sqkfJhBKweKi5rnGi5+IUdlj/H1M+Ip5JQ1WzaDMOBRY90Ajc5jg==",
+          "dev": true
+        },
+        "inquirer": {
+          "version": "7.3.3",
+          "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz",
+          "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
+          "dev": true,
+          "requires": {
+            "ansi-escapes": "^4.2.1",
+            "chalk": "^4.1.0",
+            "cli-cursor": "^3.1.0",
+            "cli-width": "^3.0.0",
+            "external-editor": "^3.0.3",
+            "figures": "^3.0.0",
+            "lodash": "^4.17.19",
+            "mute-stream": "0.0.8",
+            "run-async": "^2.4.0",
+            "rxjs": "^6.6.0",
+            "string-width": "^4.1.0",
+            "strip-ansi": "^6.0.0",
+            "through": "^2.3.6"
+          }
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+          "dev": true
+        },
+        "magic-string": {
+          "version": "0.25.7",
+          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
+          "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+          "dev": true,
+          "requires": {
+            "sourcemap-codec": "^1.4.4"
+          }
+        },
+        "mute-stream": {
+          "version": "0.0.8",
+          "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
           "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
           "dev": true
         },
         "open": {
-          "version": "7.0.0",
-          "resolved": "https://registry.npmjs.org/open/-/open-7.0.0.tgz",
-          "integrity": "sha512-K6EKzYqnwQzk+/dzJAQSBORub3xlBTxMz+ntpZpH/LyCa1o6KjXhuN+2npAaI9jaSmU3R1Q8NWf4KUWcyytGsQ==",
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/open/-/open-7.2.0.tgz",
+          "integrity": "sha512-4HeyhxCvBTI5uBePsAdi55C5fmqnWZ2e2MlmvWi5KW5tdH5rxoiv/aMtbeVxKZc3eWkT1GymMnLG8XC4Rq4TDQ==",
           "dev": true,
           "requires": {
-            "is-wsl": "^2.1.0"
+            "is-docker": "^2.0.0",
+            "is-wsl": "^2.1.1"
           }
         },
-        "string-width": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
-          "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+        "rimraf": {
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
           "dev": true,
           "requires": {
-            "emoji-regex": "^8.0.0",
-            "is-fullwidth-code-point": "^3.0.0",
-            "strip-ansi": "^6.0.0"
+            "glob": "^7.1.3"
+          }
+        },
+        "rxjs": {
+          "version": "6.6.2",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz",
+          "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==",
+          "dev": true,
+          "requires": {
+            "tslib": "^1.9.0"
           },
           "dependencies": {
-            "ansi-regex": {
-              "version": "5.0.0",
-              "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-              "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+            "tslib": {
+              "version": "1.14.1",
+              "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
               "dev": true
-            },
-            "strip-ansi": {
-              "version": "6.0.0",
-              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-              "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
-              "dev": true,
-              "requires": {
-                "ansi-regex": "^5.0.0"
-              }
             }
           }
         },
+        "semver": {
+          "version": "7.3.2",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
+          "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
+          "dev": true
+        },
+        "string-width": {
+          "version": "4.2.3",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.1"
+          }
+        },
         "strip-ansi": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+          "version": "6.0.1",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+          "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
           "dev": true,
           "requires": {
-            "ansi-regex": "^4.1.0"
+            "ansi-regex": "^5.0.1"
+          }
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^4.0.0"
           }
         },
         "type-fest": {
-          "version": "0.11.0",
-          "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz",
-          "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==",
+          "version": "0.21.3",
+          "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+          "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+          "dev": true
+        },
+        "uuid": {
+          "version": "8.3.0",
+          "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz",
+          "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==",
           "dev": true
         }
       }
     },
     "@angular/common": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/common/-/common-9.0.7.tgz",
-      "integrity": "sha512-B58YgxZva1DBaeayOBsaUOOkoyR+GRibuNC3gfOMm2vXeW9eCNX+jvDtw767GnKm2yGzIq8wB3x6GHojN00dPw=="
+      "version": "10.2.5",
+      "resolved": "https://registry.npmjs.org/@angular/common/-/common-10.2.5.tgz",
+      "integrity": "sha512-553yf6ZUHNqT4XpOqbW7EKKMfX56u/8DkwYXuSv8MAKdl4/AW6gliFOEJGYo04JcKF7Knq3VPvGSCO9kupf0hg==",
+      "requires": {
+        "tslib": "^2.0.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.4.0",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
+          "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
+        }
+      }
     },
     "@angular/compiler": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.7.tgz",
-      "integrity": "sha512-hFpkuGpzxpK5h59LHHAjTFWsY6DCXZwgJFqvCuTPxWi/srvLGZRXrpC6Z1SlgHI9xxXaPfoa4uWw2VfA3BnqEg=="
+      "version": "10.2.5",
+      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-10.2.5.tgz",
+      "integrity": "sha512-ddJiTPCoVBIGjFDYoYWDpmq3Zs8UKoWpzaeW4u+p17gWW54HwyT5XTxrgtbeUmaxIuRdL4/KT1lGHs9/9bwbCA==",
+      "requires": {
+        "tslib": "^2.0.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.4.0",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
+          "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
+        }
+      }
     },
     "@angular/compiler-cli": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-9.0.7.tgz",
-      "integrity": "sha512-+RXghex63v0Vi8vpQtDpWiqpAAnrTaN3bHT5fntRenq5+Ok5vL1MJ1mzbTmBXs2tuwTqNlwMm2AlZB7G/xcDMQ==",
+      "version": "10.2.5",
+      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-10.2.5.tgz",
+      "integrity": "sha512-xddSpKudoPidEebIW3x1CvQdx69WEmnFg4DneeQi/tit7mtAKYTJemzYZmP6abdSYhtxovL0bPX5LxYlrtuxIw==",
       "dev": true,
       "requires": {
         "canonical-path": "1.0.0",
@@ -408,19 +866,49 @@
         "semver": "^6.3.0",
         "source-map": "^0.6.1",
         "sourcemap-codec": "^1.4.8",
-        "yargs": "13.1.0"
+        "tslib": "^2.0.0",
+        "yargs": "^16.1.1"
       },
       "dependencies": {
         "ansi-regex": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+          "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
           "dev": true
         },
-        "emoji-regex": {
-          "version": "7.0.3",
-          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-          "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "cliui": {
+          "version": "7.0.4",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+          "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+          "dev": true,
+          "requires": {
+            "string-width": "^4.2.0",
+            "strip-ansi": "^6.0.0",
+            "wrap-ansi": "^7.0.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
           "dev": true
         },
         "get-caller-file": {
@@ -429,10 +917,10 @@
           "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
           "dev": true
         },
-        "require-main-filename": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
-          "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
           "dev": true
         },
         "source-map": {
@@ -442,60 +930,85 @@
           "dev": true
         },
         "string-width": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+          "version": "4.2.3",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
           "dev": true,
           "requires": {
-            "emoji-regex": "^7.0.1",
-            "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^5.1.0"
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.1"
           }
         },
         "strip-ansi": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+          "version": "6.0.1",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+          "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
           "dev": true,
           "requires": {
-            "ansi-regex": "^4.1.0"
+            "ansi-regex": "^5.0.1"
           }
         },
-        "yargs": {
-          "version": "13.1.0",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.1.0.tgz",
-          "integrity": "sha512-1UhJbXfzHiPqkfXNHYhiz79qM/kZqjTE8yGlEjZa85Q+3+OwcV6NRkV7XOV1W2Eom2bzILeUn55pQYffjVOLAg==",
+        "tslib": {
+          "version": "2.4.0",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
+          "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==",
+          "dev": true
+        },
+        "wrap-ansi": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+          "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
           "dev": true,
           "requires": {
-            "cliui": "^4.0.0",
-            "find-up": "^3.0.0",
-            "get-caller-file": "^2.0.1",
-            "os-locale": "^3.1.0",
-            "require-directory": "^2.1.1",
-            "require-main-filename": "^2.0.0",
-            "set-blocking": "^2.0.0",
-            "string-width": "^3.0.0",
-            "which-module": "^2.0.0",
-            "y18n": "^4.0.0",
-            "yargs-parser": "^13.0.0"
+            "ansi-styles": "^4.0.0",
+            "string-width": "^4.1.0",
+            "strip-ansi": "^6.0.0"
           }
         },
-        "yargs-parser": {
-          "version": "13.1.2",
-          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
-          "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+        "y18n": {
+          "version": "5.0.8",
+          "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+          "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+          "dev": true
+        },
+        "yargs": {
+          "version": "16.2.0",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+          "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
           "dev": true,
           "requires": {
-            "camelcase": "^5.0.0",
-            "decamelize": "^1.2.0"
+            "cliui": "^7.0.2",
+            "escalade": "^3.1.1",
+            "get-caller-file": "^2.0.5",
+            "require-directory": "^2.1.1",
+            "string-width": "^4.2.0",
+            "y18n": "^5.0.5",
+            "yargs-parser": "^20.2.2"
           }
+        },
+        "yargs-parser": {
+          "version": "20.2.9",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+          "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+          "dev": true
         }
       }
     },
     "@angular/core": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.7.tgz",
-      "integrity": "sha512-E9XZH5Dl+9MWG3MDC6wrKllhA8Rljpz66HOIeqKv2fHPed8kzuJZU3WJWLtbhDAXFwtGTyTZ4c82ZLSmqwTorg=="
+      "version": "10.2.5",
+      "resolved": "https://registry.npmjs.org/@angular/core/-/core-10.2.5.tgz",
+      "integrity": "sha512-krhOKNTj5XE92Rk9ASX5KmgTF72j7qT2PLVxrGEVjuUKjBY2XaK3TV0Kotq9zI3qa9WgeCrP/Njn6jlKQCCAEQ==",
+      "requires": {
+        "tslib": "^2.0.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.4.0",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
+          "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
+        }
+      }
     },
     "@angular/fire": {
       "version": "6.1.4",
@@ -513,20 +1026,30 @@
       }
     },
     "@angular/forms": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-9.0.7.tgz",
-      "integrity": "sha512-PaHAmjMJDtg/3aGCPuq5BCRC1eZ/DBCpva9f7NrA1kqk0LcLdebm0v2uHwTOBtiz/VEgPvxiS4tXC4rjvUtfEg=="
+      "version": "10.2.5",
+      "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-10.2.5.tgz",
+      "integrity": "sha512-EnycBx8q+DGmPaX4oSjPejJxx9u0TLb5+tpGxYitdOq/eBpQAAYyWKQGKXb1JB46rPVwJr34MmTltHgAN0zUSQ==",
+      "requires": {
+        "tslib": "^2.0.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.4.0",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
+          "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
+        }
+      }
     },
     "@angular/language-service": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-9.0.7.tgz",
-      "integrity": "sha512-IZG1kvw48JyFRy7bfMHqBixWrEHZmXmkP5DWsi5Tw6KusaczkMghI20BevCkodPcajXWHAUHNKyp1tlE3OnH0w==",
+      "version": "10.2.5",
+      "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-10.2.5.tgz",
+      "integrity": "sha512-e9ug9TJG31SeSWl65TglXKWOIATGu/P0jVSGKxGF22vQYlAahdRoFXP56+B9P9k+6cDuYljkjH1rdyCaU3iOPg==",
       "dev": true
     },
     "@angular/localize": {
-      "version": "9.1.13",
-      "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-9.1.13.tgz",
-      "integrity": "sha512-jmUQXVgkU2djlRtSE1SQg6ktlKnACdm4p+4YYm/D48gkl+HGwrdZtczlLTWIVeTP7o8tx6+6fQkRSRD64Xvbkg==",
+      "version": "10.2.5",
+      "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-10.2.5.tgz",
+      "integrity": "sha512-YgtVQDJLYAuSBMB4a8UBMbO+5g4IEkHszc6vU8P/G/hqWF6hj04uPqNoYqajVeoTTwPrM2If30/pNh15HjRG2A==",
       "requires": {
         "@babel/core": "7.8.3",
         "glob": "7.1.2",
@@ -725,19 +1248,49 @@
       }
     },
     "@angular/platform-browser": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-9.0.7.tgz",
-      "integrity": "sha512-Por8omrEiSV2U/K2mm/Kuv+2R2rJkbAZ3ctEM6CWj9Y4Gz2akjOCxmEgWhhBeqdigcC3T1v707f52osf9jWBkg=="
+      "version": "10.2.5",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-10.2.5.tgz",
+      "integrity": "sha512-3JDFRGNxr0IUkjSdGK2Q1BvqnSDpy9YWo0DJP+TEpgW578R84m4X7/wI3jJmFSC2yyouMWrHsot2vcBPAQj89g==",
+      "requires": {
+        "tslib": "^2.0.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.4.0",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
+          "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
+        }
+      }
     },
     "@angular/platform-browser-dynamic": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.0.7.tgz",
-      "integrity": "sha512-jwpyd93ofcRtchbayKD5v4GN4Lc7vbPe6dMUiwfnVnVAql0bOD/3YRI7w5qJ0Xx0sgQT+9Xo6jTXYnyUsZpEww=="
+      "version": "10.2.5",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-10.2.5.tgz",
+      "integrity": "sha512-7z443I80K2CeqzczlSJ8BlABj0uRgnHUrABE8yLlU2BgifJrriBawzSXEV7UMEN7k7ezbc6NhpOn6Q6BrCKEOA==",
+      "requires": {
+        "tslib": "^2.0.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.4.0",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
+          "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
+        }
+      }
     },
     "@angular/router": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular/router/-/router-9.0.7.tgz",
-      "integrity": "sha512-uKru9F/Zju//gg6INl54abnlpLdEUUO/GpCfMk4zqu8LCZGNFta6OY7VT+9DK9Vdrh/XUD70oE9WoelcRwwTYA=="
+      "version": "10.2.5",
+      "resolved": "https://registry.npmjs.org/@angular/router/-/router-10.2.5.tgz",
+      "integrity": "sha512-AtSMB/d4V+pw/FL4G/mWWoiJJtZ/075TqsGW7uEFKgxS6Gh2kalv6BTMlXVG5GO+2oU0lsuDvguq5E7Atbak3Q==",
+      "requires": {
+        "tslib": "^2.0.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.4.0",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
+          "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
+        }
+      }
     },
     "@apidevtools/json-schema-ref-parser": {
       "version": "9.0.7",
@@ -800,37 +1353,65 @@
         "@babel/highlight": "^7.10.4"
       }
     },
+    "@babel/compat-data": {
+      "version": "7.18.8",
+      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz",
+      "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==",
+      "dev": true
+    },
     "@babel/core": {
-      "version": "7.7.7",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.7.tgz",
-      "integrity": "sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ==",
-      "dev": true,
-      "requires": {
-        "@babel/code-frame": "^7.5.5",
-        "@babel/generator": "^7.7.7",
-        "@babel/helpers": "^7.7.4",
-        "@babel/parser": "^7.7.7",
-        "@babel/template": "^7.7.4",
-        "@babel/traverse": "^7.7.4",
-        "@babel/types": "^7.7.4",
+      "version": "7.11.1",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.1.tgz",
+      "integrity": "sha512-XqF7F6FWQdKGGWAzGELL+aCO1p+lRY5Tj5/tbT3St1G8NaH70jhhDIKknIZaDans0OQBG5wRAldROLHSt44BgQ==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.10.4",
+        "@babel/generator": "^7.11.0",
+        "@babel/helper-module-transforms": "^7.11.0",
+        "@babel/helpers": "^7.10.4",
+        "@babel/parser": "^7.11.1",
+        "@babel/template": "^7.10.4",
+        "@babel/traverse": "^7.11.0",
+        "@babel/types": "^7.11.0",
         "convert-source-map": "^1.7.0",
         "debug": "^4.1.0",
-        "json5": "^2.1.0",
-        "lodash": "^4.17.13",
+        "gensync": "^1.0.0-beta.1",
+        "json5": "^2.1.2",
+        "lodash": "^4.17.19",
         "resolve": "^1.3.2",
         "semver": "^5.4.1",
         "source-map": "^0.5.0"
       },
       "dependencies": {
-        "json5": {
-          "version": "2.1.3",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
-          "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
+        "@babel/generator": {
+          "version": "7.18.7",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz",
+          "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==",
           "dev": true,
           "requires": {
-            "minimist": "^1.2.5"
+            "@babel/types": "^7.18.7",
+            "@jridgewell/gen-mapping": "^0.3.2",
+            "jsesc": "^2.5.1"
+          },
+          "dependencies": {
+            "@babel/types": {
+              "version": "7.18.8",
+              "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
+              "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
+              "dev": true,
+              "requires": {
+                "@babel/helper-validator-identifier": "^7.18.6",
+                "to-fast-properties": "^2.0.0"
+              }
+            }
           }
         },
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
+          "dev": true
+        },
         "semver": {
           "version": "5.7.1",
           "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
@@ -840,78 +1421,207 @@
         "source-map": {
           "version": "0.5.7",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+          "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
           "dev": true
         }
       }
     },
-    "@babel/generator": {
-      "version": "7.7.7",
-      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz",
-      "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==",
+    "@babel/helper-annotate-as-pure": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
+      "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.7.4",
-        "jsesc": "^2.5.1",
-        "lodash": "^4.17.13",
-        "source-map": "^0.5.0"
+        "@babel/types": "^7.18.6"
       },
       "dependencies": {
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
           "dev": true
+        },
+        "@babel/types": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
+          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "to-fast-properties": "^2.0.0"
+          }
         }
       }
     },
-    "@babel/helper-annotate-as-pure": {
-      "version": "7.12.10",
-      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz",
-      "integrity": "sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ==",
+    "@babel/helper-builder-binary-assignment-operator-visitor": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.6.tgz",
+      "integrity": "sha512-KT10c1oWEpmrIRYnthbzHgoOf6B+Xd6a5yhdbNtdhtG7aO1or5HViuf1TQR36xY/QprXA5nvxO6nAjhJ4y38jw==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.12.10"
+        "@babel/helper-explode-assignable-expression": "^7.18.6",
+        "@babel/types": "^7.18.6"
+      },
+      "dependencies": {
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
+          "dev": true
+        },
+        "@babel/types": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
+          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
       }
     },
-    "@babel/helper-builder-binary-assignment-operator-visitor": {
-      "version": "7.10.4",
-      "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz",
-      "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==",
+    "@babel/helper-compilation-targets": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz",
+      "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==",
       "dev": true,
       "requires": {
-        "@babel/helper-explode-assignable-expression": "^7.10.4",
-        "@babel/types": "^7.10.4"
+        "@babel/compat-data": "^7.18.6",
+        "@babel/helper-validator-option": "^7.18.6",
+        "browserslist": "^4.20.2",
+        "semver": "^6.3.0"
       }
     },
-    "@babel/helper-create-regexp-features-plugin": {
-      "version": "7.12.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz",
-      "integrity": "sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==",
+    "@babel/helper-create-class-features-plugin": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz",
+      "integrity": "sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==",
       "dev": true,
       "requires": {
-        "@babel/helper-annotate-as-pure": "^7.10.4",
-        "regexpu-core": "^4.7.1"
+        "@babel/helper-annotate-as-pure": "^7.18.6",
+        "@babel/helper-environment-visitor": "^7.18.6",
+        "@babel/helper-function-name": "^7.18.6",
+        "@babel/helper-member-expression-to-functions": "^7.18.6",
+        "@babel/helper-optimise-call-expression": "^7.18.6",
+        "@babel/helper-replace-supers": "^7.18.6",
+        "@babel/helper-split-export-declaration": "^7.18.6"
+      },
+      "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+          "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+          "dev": true,
+          "requires": {
+            "@babel/highlight": "^7.18.6"
+          }
+        },
+        "@babel/helper-function-name": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz",
+          "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==",
+          "dev": true,
+          "requires": {
+            "@babel/template": "^7.18.6",
+            "@babel/types": "^7.18.6"
+          }
+        },
+        "@babel/helper-split-export-declaration": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
+          "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.18.6"
+          }
+        },
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
+          "dev": true
+        },
+        "@babel/highlight": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+          "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "chalk": "^2.0.0",
+            "js-tokens": "^4.0.0"
+          }
+        },
+        "@babel/parser": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.8.tgz",
+          "integrity": "sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA==",
+          "dev": true
+        },
+        "@babel/template": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz",
+          "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.18.6",
+            "@babel/parser": "^7.18.6",
+            "@babel/types": "^7.18.6"
+          }
+        },
+        "@babel/types": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
+          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
       }
     },
-    "@babel/helper-define-map": {
-      "version": "7.10.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz",
-      "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==",
+    "@babel/helper-create-regexp-features-plugin": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz",
+      "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==",
       "dev": true,
       "requires": {
-        "@babel/helper-function-name": "^7.10.4",
-        "@babel/types": "^7.10.5",
-        "lodash": "^4.17.19"
+        "@babel/helper-annotate-as-pure": "^7.18.6",
+        "regexpu-core": "^5.1.0"
       }
     },
+    "@babel/helper-environment-visitor": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz",
+      "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q=="
+    },
     "@babel/helper-explode-assignable-expression": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz",
-      "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz",
+      "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.12.1"
+        "@babel/types": "^7.18.6"
+      },
+      "dependencies": {
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
+          "dev": true
+        },
+        "@babel/types": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
+          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
       }
     },
     "@babel/helper-function-name": {
@@ -933,103 +1643,436 @@
       }
     },
     "@babel/helper-hoist-variables": {
-      "version": "7.10.4",
-      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz",
-      "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
+      "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.10.4"
+        "@babel/types": "^7.18.6"
+      },
+      "dependencies": {
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
+          "dev": true
+        },
+        "@babel/types": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
+          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
       }
     },
     "@babel/helper-member-expression-to-functions": {
-      "version": "7.12.7",
-      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz",
-      "integrity": "sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz",
+      "integrity": "sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.12.7"
+        "@babel/types": "^7.18.6"
+      },
+      "dependencies": {
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
+          "dev": true
+        },
+        "@babel/types": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
+          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
       }
     },
     "@babel/helper-module-imports": {
-      "version": "7.12.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz",
-      "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
+      "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.12.5"
+        "@babel/types": "^7.18.6"
+      },
+      "dependencies": {
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
+          "dev": true
+        },
+        "@babel/types": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
+          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
       }
     },
     "@babel/helper-module-transforms": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz",
-      "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-module-imports": "^7.12.1",
-        "@babel/helper-replace-supers": "^7.12.1",
-        "@babel/helper-simple-access": "^7.12.1",
-        "@babel/helper-split-export-declaration": "^7.11.0",
-        "@babel/helper-validator-identifier": "^7.10.4",
-        "@babel/template": "^7.10.4",
-        "@babel/traverse": "^7.12.1",
-        "@babel/types": "^7.12.1",
-        "lodash": "^4.17.19"
+      "version": "7.18.8",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.8.tgz",
+      "integrity": "sha512-che3jvZwIcZxrwh63VfnFTUzcAM9v/lznYkkRxIBGMPt1SudOKHAEec0SIRCfiuIzTcF7VGj/CaTT6gY4eWxvA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-environment-visitor": "^7.18.6",
+        "@babel/helper-module-imports": "^7.18.6",
+        "@babel/helper-simple-access": "^7.18.6",
+        "@babel/helper-split-export-declaration": "^7.18.6",
+        "@babel/helper-validator-identifier": "^7.18.6",
+        "@babel/template": "^7.18.6",
+        "@babel/traverse": "^7.18.8",
+        "@babel/types": "^7.18.8"
+      },
+      "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+          "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+          "dev": true,
+          "requires": {
+            "@babel/highlight": "^7.18.6"
+          }
+        },
+        "@babel/generator": {
+          "version": "7.18.7",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz",
+          "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.18.7",
+            "@jridgewell/gen-mapping": "^0.3.2",
+            "jsesc": "^2.5.1"
+          }
+        },
+        "@babel/helper-function-name": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz",
+          "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==",
+          "dev": true,
+          "requires": {
+            "@babel/template": "^7.18.6",
+            "@babel/types": "^7.18.6"
+          }
+        },
+        "@babel/helper-split-export-declaration": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
+          "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.18.6"
+          }
+        },
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
+          "dev": true
+        },
+        "@babel/highlight": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+          "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "chalk": "^2.0.0",
+            "js-tokens": "^4.0.0"
+          }
+        },
+        "@babel/parser": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.8.tgz",
+          "integrity": "sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA==",
+          "dev": true
+        },
+        "@babel/template": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz",
+          "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.18.6",
+            "@babel/parser": "^7.18.6",
+            "@babel/types": "^7.18.6"
+          }
+        },
+        "@babel/traverse": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.8.tgz",
+          "integrity": "sha512-UNg/AcSySJYR/+mIcJQDCv00T+AqRO7j/ZEJLzpaYtgM48rMg5MnkJgyNqkzo88+p4tfRvZJCEiwwfG6h4jkRg==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.18.6",
+            "@babel/generator": "^7.18.7",
+            "@babel/helper-environment-visitor": "^7.18.6",
+            "@babel/helper-function-name": "^7.18.6",
+            "@babel/helper-hoist-variables": "^7.18.6",
+            "@babel/helper-split-export-declaration": "^7.18.6",
+            "@babel/parser": "^7.18.8",
+            "@babel/types": "^7.18.8",
+            "debug": "^4.1.0",
+            "globals": "^11.1.0"
+          }
+        },
+        "@babel/types": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
+          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
       }
     },
     "@babel/helper-optimise-call-expression": {
-      "version": "7.12.10",
-      "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz",
-      "integrity": "sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz",
+      "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.12.10"
+        "@babel/types": "^7.18.6"
+      },
+      "dependencies": {
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
+          "dev": true
+        },
+        "@babel/types": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
+          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
       }
     },
     "@babel/helper-plugin-utils": {
-      "version": "7.10.4",
-      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz",
-      "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz",
+      "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==",
       "dev": true
     },
     "@babel/helper-remap-async-to-generator": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz",
-      "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.6.tgz",
+      "integrity": "sha512-z5wbmV55TveUPZlCLZvxWHtrjuJd+8inFhk7DG0WW87/oJuGDcjDiu7HIvGcpf5464L6xKCg3vNkmlVVz9hwyQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-annotate-as-pure": "^7.10.4",
-        "@babel/helper-wrap-function": "^7.10.4",
-        "@babel/types": "^7.12.1"
+        "@babel/helper-annotate-as-pure": "^7.18.6",
+        "@babel/helper-environment-visitor": "^7.18.6",
+        "@babel/helper-wrap-function": "^7.18.6",
+        "@babel/types": "^7.18.6"
+      },
+      "dependencies": {
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
+          "dev": true
+        },
+        "@babel/types": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
+          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
       }
     },
     "@babel/helper-replace-supers": {
-      "version": "7.12.11",
-      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz",
-      "integrity": "sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz",
+      "integrity": "sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==",
       "dev": true,
       "requires": {
-        "@babel/helper-member-expression-to-functions": "^7.12.7",
-        "@babel/helper-optimise-call-expression": "^7.12.10",
-        "@babel/traverse": "^7.12.10",
-        "@babel/types": "^7.12.11"
+        "@babel/helper-environment-visitor": "^7.18.6",
+        "@babel/helper-member-expression-to-functions": "^7.18.6",
+        "@babel/helper-optimise-call-expression": "^7.18.6",
+        "@babel/traverse": "^7.18.6",
+        "@babel/types": "^7.18.6"
+      },
+      "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+          "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+          "dev": true,
+          "requires": {
+            "@babel/highlight": "^7.18.6"
+          }
+        },
+        "@babel/generator": {
+          "version": "7.18.7",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz",
+          "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.18.7",
+            "@jridgewell/gen-mapping": "^0.3.2",
+            "jsesc": "^2.5.1"
+          }
+        },
+        "@babel/helper-function-name": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz",
+          "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==",
+          "dev": true,
+          "requires": {
+            "@babel/template": "^7.18.6",
+            "@babel/types": "^7.18.6"
+          }
+        },
+        "@babel/helper-split-export-declaration": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
+          "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.18.6"
+          }
+        },
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
+          "dev": true
+        },
+        "@babel/highlight": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+          "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "chalk": "^2.0.0",
+            "js-tokens": "^4.0.0"
+          }
+        },
+        "@babel/parser": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.8.tgz",
+          "integrity": "sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA==",
+          "dev": true
+        },
+        "@babel/template": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz",
+          "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.18.6",
+            "@babel/parser": "^7.18.6",
+            "@babel/types": "^7.18.6"
+          }
+        },
+        "@babel/traverse": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.8.tgz",
+          "integrity": "sha512-UNg/AcSySJYR/+mIcJQDCv00T+AqRO7j/ZEJLzpaYtgM48rMg5MnkJgyNqkzo88+p4tfRvZJCEiwwfG6h4jkRg==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.18.6",
+            "@babel/generator": "^7.18.7",
+            "@babel/helper-environment-visitor": "^7.18.6",
+            "@babel/helper-function-name": "^7.18.6",
+            "@babel/helper-hoist-variables": "^7.18.6",
+            "@babel/helper-split-export-declaration": "^7.18.6",
+            "@babel/parser": "^7.18.8",
+            "@babel/types": "^7.18.8",
+            "debug": "^4.1.0",
+            "globals": "^11.1.0"
+          }
+        },
+        "@babel/types": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
+          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
       }
     },
     "@babel/helper-simple-access": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz",
-      "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz",
+      "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.12.1"
+        "@babel/types": "^7.18.6"
+      },
+      "dependencies": {
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
+          "dev": true
+        },
+        "@babel/types": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
+          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
       }
     },
     "@babel/helper-skip-transparent-expression-wrappers": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz",
-      "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.6.tgz",
+      "integrity": "sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.12.1"
+        "@babel/types": "^7.18.6"
+      },
+      "dependencies": {
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
+          "dev": true
+        },
+        "@babel/types": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
+          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
       }
     },
     "@babel/helper-split-export-declaration": {
@@ -1045,26 +2088,236 @@
       "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz",
       "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw=="
     },
+    "@babel/helper-validator-option": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
+      "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
+      "dev": true
+    },
     "@babel/helper-wrap-function": {
-      "version": "7.12.3",
-      "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz",
-      "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.6.tgz",
+      "integrity": "sha512-I5/LZfozwMNbwr/b1vhhuYD+J/mU+gfGAj5td7l5Rv9WYmH6i3Om69WGKNmlIpsVW/mF6O5bvTKbvDQZVgjqOw==",
       "dev": true,
       "requires": {
-        "@babel/helper-function-name": "^7.10.4",
-        "@babel/template": "^7.10.4",
-        "@babel/traverse": "^7.10.4",
-        "@babel/types": "^7.10.4"
+        "@babel/helper-function-name": "^7.18.6",
+        "@babel/template": "^7.18.6",
+        "@babel/traverse": "^7.18.6",
+        "@babel/types": "^7.18.6"
+      },
+      "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+          "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+          "dev": true,
+          "requires": {
+            "@babel/highlight": "^7.18.6"
+          }
+        },
+        "@babel/generator": {
+          "version": "7.18.7",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz",
+          "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.18.7",
+            "@jridgewell/gen-mapping": "^0.3.2",
+            "jsesc": "^2.5.1"
+          }
+        },
+        "@babel/helper-function-name": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz",
+          "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==",
+          "dev": true,
+          "requires": {
+            "@babel/template": "^7.18.6",
+            "@babel/types": "^7.18.6"
+          }
+        },
+        "@babel/helper-split-export-declaration": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
+          "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.18.6"
+          }
+        },
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
+          "dev": true
+        },
+        "@babel/highlight": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+          "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "chalk": "^2.0.0",
+            "js-tokens": "^4.0.0"
+          }
+        },
+        "@babel/parser": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.8.tgz",
+          "integrity": "sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA==",
+          "dev": true
+        },
+        "@babel/template": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz",
+          "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.18.6",
+            "@babel/parser": "^7.18.6",
+            "@babel/types": "^7.18.6"
+          }
+        },
+        "@babel/traverse": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.8.tgz",
+          "integrity": "sha512-UNg/AcSySJYR/+mIcJQDCv00T+AqRO7j/ZEJLzpaYtgM48rMg5MnkJgyNqkzo88+p4tfRvZJCEiwwfG6h4jkRg==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.18.6",
+            "@babel/generator": "^7.18.7",
+            "@babel/helper-environment-visitor": "^7.18.6",
+            "@babel/helper-function-name": "^7.18.6",
+            "@babel/helper-hoist-variables": "^7.18.6",
+            "@babel/helper-split-export-declaration": "^7.18.6",
+            "@babel/parser": "^7.18.8",
+            "@babel/types": "^7.18.8",
+            "debug": "^4.1.0",
+            "globals": "^11.1.0"
+          }
+        },
+        "@babel/types": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
+          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
       }
     },
     "@babel/helpers": {
-      "version": "7.12.5",
-      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz",
-      "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz",
+      "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==",
       "requires": {
-        "@babel/template": "^7.10.4",
-        "@babel/traverse": "^7.12.5",
-        "@babel/types": "^7.12.5"
+        "@babel/template": "^7.18.6",
+        "@babel/traverse": "^7.18.6",
+        "@babel/types": "^7.18.6"
+      },
+      "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+          "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+          "requires": {
+            "@babel/highlight": "^7.18.6"
+          }
+        },
+        "@babel/generator": {
+          "version": "7.18.7",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz",
+          "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==",
+          "requires": {
+            "@babel/types": "^7.18.7",
+            "@jridgewell/gen-mapping": "^0.3.2",
+            "jsesc": "^2.5.1"
+          }
+        },
+        "@babel/helper-function-name": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz",
+          "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==",
+          "requires": {
+            "@babel/template": "^7.18.6",
+            "@babel/types": "^7.18.6"
+          }
+        },
+        "@babel/helper-hoist-variables": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
+          "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
+          "requires": {
+            "@babel/types": "^7.18.6"
+          }
+        },
+        "@babel/helper-split-export-declaration": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
+          "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
+          "requires": {
+            "@babel/types": "^7.18.6"
+          }
+        },
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g=="
+        },
+        "@babel/highlight": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+          "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "chalk": "^2.0.0",
+            "js-tokens": "^4.0.0"
+          }
+        },
+        "@babel/parser": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.8.tgz",
+          "integrity": "sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA=="
+        },
+        "@babel/template": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz",
+          "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==",
+          "requires": {
+            "@babel/code-frame": "^7.18.6",
+            "@babel/parser": "^7.18.6",
+            "@babel/types": "^7.18.6"
+          }
+        },
+        "@babel/traverse": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.8.tgz",
+          "integrity": "sha512-UNg/AcSySJYR/+mIcJQDCv00T+AqRO7j/ZEJLzpaYtgM48rMg5MnkJgyNqkzo88+p4tfRvZJCEiwwfG6h4jkRg==",
+          "requires": {
+            "@babel/code-frame": "^7.18.6",
+            "@babel/generator": "^7.18.7",
+            "@babel/helper-environment-visitor": "^7.18.6",
+            "@babel/helper-function-name": "^7.18.6",
+            "@babel/helper-hoist-variables": "^7.18.6",
+            "@babel/helper-split-export-declaration": "^7.18.6",
+            "@babel/parser": "^7.18.8",
+            "@babel/types": "^7.18.8",
+            "debug": "^4.1.0",
+            "globals": "^11.1.0"
+          }
+        },
+        "@babel/types": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
+          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
       }
     },
     "@babel/highlight": {
@@ -1083,65 +2336,139 @@
       "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg=="
     },
     "@babel/plugin-proposal-async-generator-functions": {
-      "version": "7.12.12",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz",
-      "integrity": "sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz",
+      "integrity": "sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/helper-remap-async-to-generator": "^7.12.1",
-        "@babel/plugin-syntax-async-generators": "^7.8.0"
+        "@babel/helper-environment-visitor": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6",
+        "@babel/helper-remap-async-to-generator": "^7.18.6",
+        "@babel/plugin-syntax-async-generators": "^7.8.4"
+      }
+    },
+    "@babel/plugin-proposal-class-properties": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz",
+      "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-proposal-dynamic-import": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz",
-      "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz",
+      "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/plugin-syntax-dynamic-import": "^7.8.0"
+        "@babel/helper-plugin-utils": "^7.18.6",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-export-namespace-from": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz",
+      "integrity": "sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.18.6",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
       }
     },
     "@babel/plugin-proposal-json-strings": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz",
-      "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz",
+      "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/plugin-syntax-json-strings": "^7.8.0"
+        "@babel/helper-plugin-utils": "^7.18.6",
+        "@babel/plugin-syntax-json-strings": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-logical-assignment-operators": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz",
+      "integrity": "sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.18.6",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+      }
+    },
+    "@babel/plugin-proposal-nullish-coalescing-operator": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz",
+      "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.18.6",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-numeric-separator": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz",
+      "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.18.6",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4"
       }
     },
     "@babel/plugin-proposal-object-rest-spread": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz",
-      "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz",
+      "integrity": "sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
-        "@babel/plugin-transform-parameters": "^7.12.1"
+        "@babel/compat-data": "^7.18.6",
+        "@babel/helper-compilation-targets": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-transform-parameters": "^7.18.6"
       }
     },
     "@babel/plugin-proposal-optional-catch-binding": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz",
-      "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz",
+      "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/plugin-syntax-optional-catch-binding": "^7.8.0"
+        "@babel/helper-plugin-utils": "^7.18.6",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-optional-chaining": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz",
+      "integrity": "sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.18.6",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+      }
+    },
+    "@babel/plugin-proposal-private-methods": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz",
+      "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-proposal-unicode-property-regex": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz",
-      "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz",
+      "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==",
       "dev": true,
       "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.12.1",
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-syntax-async-generators": {
@@ -1153,6 +2480,15 @@
         "@babel/helper-plugin-utils": "^7.8.0"
       }
     },
+    "@babel/plugin-syntax-class-properties": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+      "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
     "@babel/plugin-syntax-dynamic-import": {
       "version": "7.8.3",
       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
@@ -1162,6 +2498,15 @@
         "@babel/helper-plugin-utils": "^7.8.0"
       }
     },
+    "@babel/plugin-syntax-export-namespace-from": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+      "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.3"
+      }
+    },
     "@babel/plugin-syntax-json-strings": {
       "version": "7.8.3",
       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
@@ -1171,6 +2516,33 @@
         "@babel/helper-plugin-utils": "^7.8.0"
       }
     },
+    "@babel/plugin-syntax-logical-assignment-operators": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+      "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      }
+    },
+    "@babel/plugin-syntax-nullish-coalescing-operator": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+      "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-numeric-separator": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+      "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      }
+    },
     "@babel/plugin-syntax-object-rest-spread": {
       "version": "7.8.3",
       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
@@ -1189,375 +2561,580 @@
         "@babel/helper-plugin-utils": "^7.8.0"
       }
     },
+    "@babel/plugin-syntax-optional-chaining": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+      "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
     "@babel/plugin-syntax-top-level-await": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz",
-      "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==",
+      "version": "7.14.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+      "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-plugin-utils": "^7.14.5"
       }
     },
     "@babel/plugin-transform-arrow-functions": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz",
-      "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz",
+      "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-async-to-generator": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz",
-      "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz",
+      "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-imports": "^7.12.1",
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/helper-remap-async-to-generator": "^7.12.1"
+        "@babel/helper-module-imports": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6",
+        "@babel/helper-remap-async-to-generator": "^7.18.6"
       }
     },
     "@babel/plugin-transform-block-scoped-functions": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz",
-      "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz",
+      "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-block-scoping": {
-      "version": "7.12.12",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz",
-      "integrity": "sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz",
+      "integrity": "sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-classes": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz",
-      "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==",
-      "dev": true,
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.10.4",
-        "@babel/helper-define-map": "^7.10.4",
-        "@babel/helper-function-name": "^7.10.4",
-        "@babel/helper-optimise-call-expression": "^7.10.4",
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/helper-replace-supers": "^7.12.1",
-        "@babel/helper-split-export-declaration": "^7.10.4",
+      "version": "7.18.8",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.8.tgz",
+      "integrity": "sha512-RySDoXdF6hgHSHuAW4aLGyVQdmvEX/iJtjVre52k0pxRq4hzqze+rAVP++NmNv596brBpYmaiKgTZby7ziBnVg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.18.6",
+        "@babel/helper-environment-visitor": "^7.18.6",
+        "@babel/helper-function-name": "^7.18.6",
+        "@babel/helper-optimise-call-expression": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6",
+        "@babel/helper-replace-supers": "^7.18.6",
+        "@babel/helper-split-export-declaration": "^7.18.6",
         "globals": "^11.1.0"
+      },
+      "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+          "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+          "dev": true,
+          "requires": {
+            "@babel/highlight": "^7.18.6"
+          }
+        },
+        "@babel/helper-function-name": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz",
+          "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==",
+          "dev": true,
+          "requires": {
+            "@babel/template": "^7.18.6",
+            "@babel/types": "^7.18.6"
+          }
+        },
+        "@babel/helper-split-export-declaration": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
+          "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.18.6"
+          }
+        },
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
+          "dev": true
+        },
+        "@babel/highlight": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+          "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "chalk": "^2.0.0",
+            "js-tokens": "^4.0.0"
+          }
+        },
+        "@babel/parser": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.8.tgz",
+          "integrity": "sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA==",
+          "dev": true
+        },
+        "@babel/template": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz",
+          "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.18.6",
+            "@babel/parser": "^7.18.6",
+            "@babel/types": "^7.18.6"
+          }
+        },
+        "@babel/types": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
+          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
       }
     },
     "@babel/plugin-transform-computed-properties": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz",
-      "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz",
+      "integrity": "sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-destructuring": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz",
-      "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz",
+      "integrity": "sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-dotall-regex": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz",
-      "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz",
+      "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==",
       "dev": true,
       "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.12.1",
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-duplicate-keys": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz",
-      "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz",
+      "integrity": "sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-exponentiation-operator": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz",
-      "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz",
+      "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==",
       "dev": true,
       "requires": {
-        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4",
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-for-of": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz",
-      "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==",
+      "version": "7.18.8",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz",
+      "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-function-name": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz",
-      "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz",
+      "integrity": "sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA==",
       "dev": true,
       "requires": {
-        "@babel/helper-function-name": "^7.10.4",
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-compilation-targets": "^7.18.6",
+        "@babel/helper-function-name": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
+      },
+      "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+          "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+          "dev": true,
+          "requires": {
+            "@babel/highlight": "^7.18.6"
+          }
+        },
+        "@babel/helper-function-name": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz",
+          "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==",
+          "dev": true,
+          "requires": {
+            "@babel/template": "^7.18.6",
+            "@babel/types": "^7.18.6"
+          }
+        },
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
+          "dev": true
+        },
+        "@babel/highlight": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+          "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "chalk": "^2.0.0",
+            "js-tokens": "^4.0.0"
+          }
+        },
+        "@babel/parser": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.8.tgz",
+          "integrity": "sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA==",
+          "dev": true
+        },
+        "@babel/template": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz",
+          "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.18.6",
+            "@babel/parser": "^7.18.6",
+            "@babel/types": "^7.18.6"
+          }
+        },
+        "@babel/types": {
+          "version": "7.18.8",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
+          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
       }
     },
     "@babel/plugin-transform-literals": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz",
-      "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz",
+      "integrity": "sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-member-expression-literals": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz",
-      "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz",
+      "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-modules-amd": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz",
-      "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz",
+      "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-transforms": "^7.12.1",
-        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/helper-module-transforms": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6",
         "babel-plugin-dynamic-import-node": "^2.3.3"
       }
     },
     "@babel/plugin-transform-modules-commonjs": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz",
-      "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz",
+      "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-transforms": "^7.12.1",
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/helper-simple-access": "^7.12.1",
+        "@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/plugin-transform-modules-systemjs": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz",
-      "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz",
+      "integrity": "sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g==",
       "dev": true,
       "requires": {
-        "@babel/helper-hoist-variables": "^7.10.4",
-        "@babel/helper-module-transforms": "^7.12.1",
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/helper-validator-identifier": "^7.10.4",
+        "@babel/helper-hoist-variables": "^7.18.6",
+        "@babel/helper-module-transforms": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6",
+        "@babel/helper-validator-identifier": "^7.18.6",
         "babel-plugin-dynamic-import-node": "^2.3.3"
+      },
+      "dependencies": {
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
+          "dev": true
+        }
       }
     },
     "@babel/plugin-transform-modules-umd": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz",
-      "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz",
+      "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-transforms": "^7.12.1",
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-module-transforms": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-named-capturing-groups-regex": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz",
-      "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz",
+      "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==",
       "dev": true,
       "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.12.1"
+        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-new-target": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz",
-      "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz",
+      "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-object-super": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz",
-      "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz",
+      "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/helper-replace-supers": "^7.12.1"
+        "@babel/helper-plugin-utils": "^7.18.6",
+        "@babel/helper-replace-supers": "^7.18.6"
       }
     },
     "@babel/plugin-transform-parameters": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz",
-      "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==",
+      "version": "7.18.8",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz",
+      "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-property-literals": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz",
-      "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz",
+      "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-regenerator": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz",
-      "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz",
+      "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==",
       "dev": true,
       "requires": {
-        "regenerator-transform": "^0.14.2"
+        "@babel/helper-plugin-utils": "^7.18.6",
+        "regenerator-transform": "^0.15.0"
       }
     },
     "@babel/plugin-transform-reserved-words": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz",
-      "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz",
+      "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-plugin-utils": "^7.18.6"
+      }
+    },
+    "@babel/plugin-transform-runtime": {
+      "version": "7.11.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.11.0.tgz",
+      "integrity": "sha512-LFEsP+t3wkYBlis8w6/kmnd6Kb1dxTd+wGJ8MlxTGzQo//ehtqlVL4S9DNUa53+dtPSQobN2CXx4d81FqC58cw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.10.4",
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "resolve": "^1.8.1",
+        "semver": "^5.5.1"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+          "dev": true
+        }
       }
     },
     "@babel/plugin-transform-shorthand-properties": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz",
-      "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz",
+      "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-spread": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz",
-      "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz",
+      "integrity": "sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1"
+        "@babel/helper-plugin-utils": "^7.18.6",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6"
       }
     },
     "@babel/plugin-transform-sticky-regex": {
-      "version": "7.12.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz",
-      "integrity": "sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz",
+      "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-template-literals": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz",
-      "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz",
+      "integrity": "sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-typeof-symbol": {
-      "version": "7.12.10",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz",
-      "integrity": "sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz",
+      "integrity": "sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-plugin-utils": "^7.18.6"
+      }
+    },
+    "@babel/plugin-transform-unicode-escapes": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz",
+      "integrity": "sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/plugin-transform-unicode-regex": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz",
-      "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz",
+      "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==",
       "dev": true,
       "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.12.1",
-        "@babel/helper-plugin-utils": "^7.10.4"
+        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
     "@babel/preset-env": {
-      "version": "7.7.7",
-      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.7.7.tgz",
-      "integrity": "sha512-pCu0hrSSDVI7kCVUOdcMNQEbOPJ52E+LrQ14sN8uL2ALfSqePZQlKrOy+tM4uhEdYlCHi4imr8Zz2cZe9oSdIg==",
+      "version": "7.11.0",
+      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.0.tgz",
+      "integrity": "sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-imports": "^7.7.4",
-        "@babel/helper-plugin-utils": "^7.0.0",
-        "@babel/plugin-proposal-async-generator-functions": "^7.7.4",
-        "@babel/plugin-proposal-dynamic-import": "^7.7.4",
-        "@babel/plugin-proposal-json-strings": "^7.7.4",
-        "@babel/plugin-proposal-object-rest-spread": "^7.7.7",
-        "@babel/plugin-proposal-optional-catch-binding": "^7.7.4",
-        "@babel/plugin-proposal-unicode-property-regex": "^7.7.7",
-        "@babel/plugin-syntax-async-generators": "^7.7.4",
-        "@babel/plugin-syntax-dynamic-import": "^7.7.4",
-        "@babel/plugin-syntax-json-strings": "^7.7.4",
-        "@babel/plugin-syntax-object-rest-spread": "^7.7.4",
-        "@babel/plugin-syntax-optional-catch-binding": "^7.7.4",
-        "@babel/plugin-syntax-top-level-await": "^7.7.4",
-        "@babel/plugin-transform-arrow-functions": "^7.7.4",
-        "@babel/plugin-transform-async-to-generator": "^7.7.4",
-        "@babel/plugin-transform-block-scoped-functions": "^7.7.4",
-        "@babel/plugin-transform-block-scoping": "^7.7.4",
-        "@babel/plugin-transform-classes": "^7.7.4",
-        "@babel/plugin-transform-computed-properties": "^7.7.4",
-        "@babel/plugin-transform-destructuring": "^7.7.4",
-        "@babel/plugin-transform-dotall-regex": "^7.7.7",
-        "@babel/plugin-transform-duplicate-keys": "^7.7.4",
-        "@babel/plugin-transform-exponentiation-operator": "^7.7.4",
-        "@babel/plugin-transform-for-of": "^7.7.4",
-        "@babel/plugin-transform-function-name": "^7.7.4",
-        "@babel/plugin-transform-literals": "^7.7.4",
-        "@babel/plugin-transform-member-expression-literals": "^7.7.4",
-        "@babel/plugin-transform-modules-amd": "^7.7.5",
-        "@babel/plugin-transform-modules-commonjs": "^7.7.5",
-        "@babel/plugin-transform-modules-systemjs": "^7.7.4",
-        "@babel/plugin-transform-modules-umd": "^7.7.4",
-        "@babel/plugin-transform-named-capturing-groups-regex": "^7.7.4",
-        "@babel/plugin-transform-new-target": "^7.7.4",
-        "@babel/plugin-transform-object-super": "^7.7.4",
-        "@babel/plugin-transform-parameters": "^7.7.7",
-        "@babel/plugin-transform-property-literals": "^7.7.4",
-        "@babel/plugin-transform-regenerator": "^7.7.5",
-        "@babel/plugin-transform-reserved-words": "^7.7.4",
-        "@babel/plugin-transform-shorthand-properties": "^7.7.4",
-        "@babel/plugin-transform-spread": "^7.7.4",
-        "@babel/plugin-transform-sticky-regex": "^7.7.4",
-        "@babel/plugin-transform-template-literals": "^7.7.4",
-        "@babel/plugin-transform-typeof-symbol": "^7.7.4",
-        "@babel/plugin-transform-unicode-regex": "^7.7.4",
-        "@babel/types": "^7.7.4",
-        "browserslist": "^4.6.0",
-        "core-js-compat": "^3.6.0",
+        "@babel/compat-data": "^7.11.0",
+        "@babel/helper-compilation-targets": "^7.10.4",
+        "@babel/helper-module-imports": "^7.10.4",
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/plugin-proposal-async-generator-functions": "^7.10.4",
+        "@babel/plugin-proposal-class-properties": "^7.10.4",
+        "@babel/plugin-proposal-dynamic-import": "^7.10.4",
+        "@babel/plugin-proposal-export-namespace-from": "^7.10.4",
+        "@babel/plugin-proposal-json-strings": "^7.10.4",
+        "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0",
+        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4",
+        "@babel/plugin-proposal-numeric-separator": "^7.10.4",
+        "@babel/plugin-proposal-object-rest-spread": "^7.11.0",
+        "@babel/plugin-proposal-optional-catch-binding": "^7.10.4",
+        "@babel/plugin-proposal-optional-chaining": "^7.11.0",
+        "@babel/plugin-proposal-private-methods": "^7.10.4",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.10.4",
+        "@babel/plugin-syntax-async-generators": "^7.8.0",
+        "@babel/plugin-syntax-class-properties": "^7.10.4",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.0",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+        "@babel/plugin-syntax-json-strings": "^7.8.0",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.0",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.0",
+        "@babel/plugin-syntax-top-level-await": "^7.10.4",
+        "@babel/plugin-transform-arrow-functions": "^7.10.4",
+        "@babel/plugin-transform-async-to-generator": "^7.10.4",
+        "@babel/plugin-transform-block-scoped-functions": "^7.10.4",
+        "@babel/plugin-transform-block-scoping": "^7.10.4",
+        "@babel/plugin-transform-classes": "^7.10.4",
+        "@babel/plugin-transform-computed-properties": "^7.10.4",
+        "@babel/plugin-transform-destructuring": "^7.10.4",
+        "@babel/plugin-transform-dotall-regex": "^7.10.4",
+        "@babel/plugin-transform-duplicate-keys": "^7.10.4",
+        "@babel/plugin-transform-exponentiation-operator": "^7.10.4",
+        "@babel/plugin-transform-for-of": "^7.10.4",
+        "@babel/plugin-transform-function-name": "^7.10.4",
+        "@babel/plugin-transform-literals": "^7.10.4",
+        "@babel/plugin-transform-member-expression-literals": "^7.10.4",
+        "@babel/plugin-transform-modules-amd": "^7.10.4",
+        "@babel/plugin-transform-modules-commonjs": "^7.10.4",
+        "@babel/plugin-transform-modules-systemjs": "^7.10.4",
+        "@babel/plugin-transform-modules-umd": "^7.10.4",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4",
+        "@babel/plugin-transform-new-target": "^7.10.4",
+        "@babel/plugin-transform-object-super": "^7.10.4",
+        "@babel/plugin-transform-parameters": "^7.10.4",
+        "@babel/plugin-transform-property-literals": "^7.10.4",
+        "@babel/plugin-transform-regenerator": "^7.10.4",
+        "@babel/plugin-transform-reserved-words": "^7.10.4",
+        "@babel/plugin-transform-shorthand-properties": "^7.10.4",
+        "@babel/plugin-transform-spread": "^7.11.0",
+        "@babel/plugin-transform-sticky-regex": "^7.10.4",
+        "@babel/plugin-transform-template-literals": "^7.10.4",
+        "@babel/plugin-transform-typeof-symbol": "^7.10.4",
+        "@babel/plugin-transform-unicode-escapes": "^7.10.4",
+        "@babel/plugin-transform-unicode-regex": "^7.10.4",
+        "@babel/preset-modules": "^0.1.3",
+        "@babel/types": "^7.11.0",
+        "browserslist": "^4.12.0",
+        "core-js-compat": "^3.6.2",
         "invariant": "^2.2.2",
-        "js-levenshtein": "^1.1.3",
+        "levenary": "^1.1.1",
         "semver": "^5.5.0"
       },
       "dependencies": {
@@ -1569,21 +3146,26 @@
         }
       }
     },
+    "@babel/preset-modules": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
+      "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
+        "@babel/plugin-transform-dotall-regex": "^7.4.4",
+        "@babel/types": "^7.4.4",
+        "esutils": "^2.0.2"
+      }
+    },
     "@babel/runtime": {
-      "version": "7.12.5",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz",
-      "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==",
+      "version": "7.11.2",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz",
+      "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==",
       "dev": true,
       "requires": {
         "regenerator-runtime": "^0.13.4"
-      },
-      "dependencies": {
-        "regenerator-runtime": {
-          "version": "0.13.7",
-          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
-          "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==",
-          "dev": true
-        }
       }
     },
     "@babel/template": {
@@ -1661,6 +3243,13 @@
         "@firebase/logger": "0.2.6",
         "@firebase/util": "0.3.4",
         "tslib": "^1.11.1"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+        }
       }
     },
     "@firebase/analytics-types": {
@@ -1680,6 +3269,13 @@
         "dom-storage": "2.1.0",
         "tslib": "^1.11.1",
         "xmlhttprequest": "1.8.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+        }
       }
     },
     "@firebase/app-types": {
@@ -1712,6 +3308,13 @@
       "requires": {
         "@firebase/util": "0.3.4",
         "tslib": "^1.11.1"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+        }
       }
     },
     "@firebase/database": {
@@ -1735,6 +3338,11 @@
           "requires": {
             "websocket-driver": ">=0.5.1"
           }
+        },
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
         }
       }
     },
@@ -1760,6 +3368,13 @@
         "@grpc/proto-loader": "^0.5.0",
         "node-fetch": "2.6.1",
         "tslib": "^1.11.1"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+        }
       }
     },
     "@firebase/firestore-types": {
@@ -1777,6 +3392,13 @@
         "@firebase/messaging-types": "0.5.0",
         "node-fetch": "2.6.1",
         "tslib": "^1.11.1"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+        }
       }
     },
     "@firebase/functions-types": {
@@ -1794,6 +3416,13 @@
         "@firebase/util": "0.3.4",
         "idb": "3.0.2",
         "tslib": "^1.11.1"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+        }
       }
     },
     "@firebase/installations-types": {
@@ -1817,6 +3446,13 @@
         "@firebase/util": "0.3.4",
         "idb": "3.0.2",
         "tslib": "^1.11.1"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+        }
       }
     },
     "@firebase/messaging-types": {
@@ -1835,6 +3471,13 @@
         "@firebase/performance-types": "0.0.13",
         "@firebase/util": "0.3.4",
         "tslib": "^1.11.1"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+        }
       }
     },
     "@firebase/performance-types": {
@@ -1870,6 +3513,13 @@
         "@firebase/remote-config-types": "0.1.9",
         "@firebase/util": "0.3.4",
         "tslib": "^1.11.1"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+        }
       }
     },
     "@firebase/remote-config-types": {
@@ -1886,6 +3536,13 @@
         "@firebase/storage-types": "0.3.13",
         "@firebase/util": "0.3.4",
         "tslib": "^1.11.1"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+        }
       }
     },
     "@firebase/storage-types": {
@@ -1899,6 +3556,13 @@
       "integrity": "sha512-VwjJUE2Vgr2UMfH63ZtIX9Hd7x+6gayi6RUXaTqEYxSbf/JmehLmAEYSuxS/NckfzAXWeGnKclvnXVibDgpjQQ==",
       "requires": {
         "tslib": "^1.11.1"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+        }
       }
     },
     "@firebase/webchannel-wrapper": {
@@ -2138,9 +3802,9 @@
       }
     },
     "@istanbuljs/schema": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz",
-      "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==",
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
+      "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
       "dev": true
     },
     "@jridgewell/gen-mapping": {
@@ -2153,55 +3817,174 @@
         "@jridgewell/trace-mapping": "^0.3.9"
       }
     },
-    "@jridgewell/resolve-uri": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
-      "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w=="
-    },
-    "@jridgewell/set-array": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
-      "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw=="
-    },
-    "@jridgewell/sourcemap-codec": {
-      "version": "1.4.14",
-      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
-      "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
-    },
-    "@jridgewell/trace-mapping": {
-      "version": "0.3.14",
-      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz",
-      "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==",
+    "@jridgewell/resolve-uri": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+      "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w=="
+    },
+    "@jridgewell/set-array": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+      "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw=="
+    },
+    "@jridgewell/sourcemap-codec": {
+      "version": "1.4.14",
+      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+      "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
+    },
+    "@jridgewell/trace-mapping": {
+      "version": "0.3.14",
+      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz",
+      "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==",
+      "requires": {
+        "@jridgewell/resolve-uri": "^3.0.3",
+        "@jridgewell/sourcemap-codec": "^1.4.10"
+      }
+    },
+    "@jsdevtools/coverage-istanbul-loader": {
+      "version": "3.0.5",
+      "resolved": "https://registry.npmjs.org/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.5.tgz",
+      "integrity": "sha512-EUCPEkaRPvmHjWAAZkWMT7JDzpw7FKB00WTISaiXsbNOd5hCHg77XLA8sLYLFDo1zepYLo2w7GstN8YBqRXZfA==",
+      "dev": true,
+      "requires": {
+        "convert-source-map": "^1.7.0",
+        "istanbul-lib-instrument": "^4.0.3",
+        "loader-utils": "^2.0.0",
+        "merge-source-map": "^1.1.0",
+        "schema-utils": "^2.7.0"
+      }
+    },
+    "@jsdevtools/ono": {
+      "version": "7.1.3",
+      "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz",
+      "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==",
+      "dev": true
+    },
+    "@ngtools/webpack": {
+      "version": "10.2.4",
+      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-10.2.4.tgz",
+      "integrity": "sha512-7rnGrd0TlnAHwOSwvKjKuD+/vwPEP2aVwD9ZnvWYafQFpLYQj+9TYOBj+nbg2l4PCRx5ByYy7xPKnu88GX5/lw==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/core": "10.2.4",
+        "enhanced-resolve": "4.3.0",
+        "webpack-sources": "1.4.3"
+      },
+      "dependencies": {
+        "@angular-devkit/core": {
+          "version": "10.2.4",
+          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.2.4.tgz",
+          "integrity": "sha512-gnm/+Iyaa6Jt3E803bpTjkwDAIb0AhP9badaGwbx44+bhbNSE2WzOBmdsQrsxJXHAMEG9CGeBzeRd8XZtLACWg==",
+          "dev": true,
+          "requires": {
+            "ajv": "6.12.4",
+            "fast-json-stable-stringify": "2.1.0",
+            "magic-string": "0.25.7",
+            "rxjs": "6.6.2",
+            "source-map": "0.7.3"
+          }
+        },
+        "ajv": {
+          "version": "6.12.4",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz",
+          "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^3.1.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
+          }
+        },
+        "fast-deep-equal": {
+          "version": "3.1.3",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+          "dev": true
+        },
+        "fast-json-stable-stringify": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+          "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+          "dev": true
+        },
+        "magic-string": {
+          "version": "0.25.7",
+          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
+          "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+          "dev": true,
+          "requires": {
+            "sourcemap-codec": "^1.4.4"
+          }
+        },
+        "rxjs": {
+          "version": "6.6.2",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz",
+          "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==",
+          "dev": true,
+          "requires": {
+            "tslib": "^1.9.0"
+          },
+          "dependencies": {
+            "tslib": {
+              "version": "1.14.1",
+              "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+              "dev": true
+            }
+          }
+        }
+      }
+    },
+    "@nodelib/fs.scandir": {
+      "version": "2.1.5",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+      "dev": true,
       "requires": {
-        "@jridgewell/resolve-uri": "^3.0.3",
-        "@jridgewell/sourcemap-codec": "^1.4.10"
+        "@nodelib/fs.stat": "2.0.5",
+        "run-parallel": "^1.1.9"
       }
     },
-    "@jsdevtools/ono": {
-      "version": "7.1.3",
-      "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz",
-      "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==",
+    "@nodelib/fs.stat": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
       "dev": true
     },
-    "@ngtools/webpack": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.0.7.tgz",
-      "integrity": "sha512-MvoMaErkjESefoIrbt8F2RpKDr9KavwvH4v3hwSAKooVNFdFKNsjJ7m3gCQehumEfsYFq2mrEK2sTW4/CpFlMQ==",
+    "@nodelib/fs.walk": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
       "dev": true,
       "requires": {
-        "@angular-devkit/core": "9.0.7",
-        "enhanced-resolve": "4.1.1",
-        "rxjs": "6.5.3",
-        "webpack-sources": "1.4.3"
+        "@nodelib/fs.scandir": "2.1.5",
+        "fastq": "^1.6.0"
+      }
+    },
+    "@npmcli/move-file": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz",
+      "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==",
+      "dev": true,
+      "requires": {
+        "mkdirp": "^1.0.4",
+        "rimraf": "^3.0.2"
       },
       "dependencies": {
-        "rxjs": {
-          "version": "6.5.3",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
-          "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
+        "mkdirp": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+          "dev": true
+        },
+        "rimraf": {
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
           "dev": true,
           "requires": {
-            "tslib": "^1.9.0"
+            "glob": "^7.1.3"
           }
         }
       }
@@ -2261,60 +4044,171 @@
       "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="
     },
     "@schematics/angular": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.0.7.tgz",
-      "integrity": "sha512-3UCeexYx/YVo3kboyPZ8KgqBTduMA18AAm3s2yrC0qj41fBFVVZAZLa74uouTf4RYVgy9kR7J3uv6VLxrJPOnQ==",
+      "version": "10.2.4",
+      "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-10.2.4.tgz",
+      "integrity": "sha512-irU3cnamfd5Hgy1B6oY7oweApJHhVaD2oYPq0NfI+F14JalERO+DGO0Tq3MWmEGn32tLQPv9fwM5O8EElEp9pA==",
       "dev": true,
       "requires": {
-        "@angular-devkit/core": "9.0.7",
-        "@angular-devkit/schematics": "9.0.7"
+        "@angular-devkit/core": "10.2.4",
+        "@angular-devkit/schematics": "10.2.4",
+        "jsonc-parser": "2.3.0"
+      },
+      "dependencies": {
+        "@angular-devkit/core": {
+          "version": "10.2.4",
+          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.2.4.tgz",
+          "integrity": "sha512-gnm/+Iyaa6Jt3E803bpTjkwDAIb0AhP9badaGwbx44+bhbNSE2WzOBmdsQrsxJXHAMEG9CGeBzeRd8XZtLACWg==",
+          "dev": true,
+          "requires": {
+            "ajv": "6.12.4",
+            "fast-json-stable-stringify": "2.1.0",
+            "magic-string": "0.25.7",
+            "rxjs": "6.6.2",
+            "source-map": "0.7.3"
+          }
+        },
+        "ajv": {
+          "version": "6.12.4",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz",
+          "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^3.1.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
+          }
+        },
+        "fast-deep-equal": {
+          "version": "3.1.3",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+          "dev": true
+        },
+        "fast-json-stable-stringify": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+          "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+          "dev": true
+        },
+        "magic-string": {
+          "version": "0.25.7",
+          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
+          "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+          "dev": true,
+          "requires": {
+            "sourcemap-codec": "^1.4.4"
+          }
+        },
+        "rxjs": {
+          "version": "6.6.2",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz",
+          "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==",
+          "dev": true,
+          "requires": {
+            "tslib": "^1.9.0"
+          },
+          "dependencies": {
+            "tslib": {
+              "version": "1.14.1",
+              "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+              "dev": true
+            }
+          }
+        }
       }
     },
     "@schematics/update": {
-      "version": "0.900.7",
-      "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.900.7.tgz",
-      "integrity": "sha512-e9tX2DGNYfj/k9mVICpQt2bWIYyD92dlsip7LzPeZGt+R9zCp5w19uBLa8Z00OgEGzFR1krhRvkQE5OxkkAnVw==",
+      "version": "0.1002.4",
+      "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.1002.4.tgz",
+      "integrity": "sha512-qnDn3SSMmolfzWpj8CTAoC/TSPe43azKPYLR5r76GkRvuUbwr/dQEj92wu59twjGcsmjF54qcG4fGaxMndUn3Q==",
       "dev": true,
       "requires": {
-        "@angular-devkit/core": "9.0.7",
-        "@angular-devkit/schematics": "9.0.7",
+        "@angular-devkit/core": "10.2.4",
+        "@angular-devkit/schematics": "10.2.4",
         "@yarnpkg/lockfile": "1.1.0",
-        "ini": "1.3.5",
-        "npm-package-arg": "^7.0.0",
-        "pacote": "9.5.8",
-        "rxjs": "6.5.3",
-        "semver": "6.3.0",
+        "ini": "1.3.6",
+        "npm-package-arg": "^8.0.0",
+        "pacote": "9.5.12",
+        "semver": "7.3.2",
         "semver-intersect": "1.4.0"
       },
       "dependencies": {
-        "npm-package-arg": {
-          "version": "7.0.0",
-          "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz",
-          "integrity": "sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==",
+        "@angular-devkit/core": {
+          "version": "10.2.4",
+          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.2.4.tgz",
+          "integrity": "sha512-gnm/+Iyaa6Jt3E803bpTjkwDAIb0AhP9badaGwbx44+bhbNSE2WzOBmdsQrsxJXHAMEG9CGeBzeRd8XZtLACWg==",
           "dev": true,
           "requires": {
-            "hosted-git-info": "^3.0.2",
-            "osenv": "^0.1.5",
-            "semver": "^5.6.0",
-            "validate-npm-package-name": "^3.0.0"
-          },
-          "dependencies": {
-            "semver": {
-              "version": "5.7.1",
-              "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-              "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-              "dev": true
-            }
+            "ajv": "6.12.4",
+            "fast-json-stable-stringify": "2.1.0",
+            "magic-string": "0.25.7",
+            "rxjs": "6.6.2",
+            "source-map": "0.7.3"
+          }
+        },
+        "ajv": {
+          "version": "6.12.4",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz",
+          "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^3.1.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
+          }
+        },
+        "fast-deep-equal": {
+          "version": "3.1.3",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+          "dev": true
+        },
+        "fast-json-stable-stringify": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+          "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+          "dev": true
+        },
+        "ini": {
+          "version": "1.3.6",
+          "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.6.tgz",
+          "integrity": "sha512-IZUoxEjNjubzrmvzZU4lKP7OnYmX72XRl3sqkfJhBKweKi5rnGi5+IUdlj/H1M+Ip5JQ1WzaDMOBRY90Ajc5jg==",
+          "dev": true
+        },
+        "magic-string": {
+          "version": "0.25.7",
+          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
+          "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+          "dev": true,
+          "requires": {
+            "sourcemap-codec": "^1.4.4"
           }
         },
         "rxjs": {
-          "version": "6.5.3",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
-          "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
+          "version": "6.6.2",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz",
+          "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==",
           "dev": true,
           "requires": {
             "tslib": "^1.9.0"
+          },
+          "dependencies": {
+            "tslib": {
+              "version": "1.14.1",
+              "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+              "dev": true
+            }
           }
+        },
+        "semver": {
+          "version": "7.3.2",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
+          "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
+          "dev": true
         }
       }
     },
@@ -2342,12 +4236,6 @@
         "@types/node": "*"
       }
     },
-    "@types/estree": {
-      "version": "0.0.46",
-      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz",
-      "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==",
-      "dev": true
-    },
     "@types/fs-extra": {
       "version": "8.1.1",
       "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.1.tgz",
@@ -2358,9 +4246,9 @@
       }
     },
     "@types/glob": {
-      "version": "7.1.3",
-      "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz",
-      "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==",
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
+      "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
       "dev": true,
       "requires": {
         "@types/minimatch": "*",
@@ -2383,9 +4271,9 @@
       }
     },
     "@types/json-schema": {
-      "version": "7.0.7",
-      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz",
-      "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==",
+      "version": "7.0.11",
+      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
+      "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
       "dev": true
     },
     "@types/long": {
@@ -2394,9 +4282,9 @@
       "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w=="
     },
     "@types/minimatch": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
-      "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
+      "version": "3.0.5",
+      "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
+      "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
       "dev": true
     },
     "@types/node": {
@@ -2410,15 +4298,15 @@
       "integrity": "sha512-nQIwcPUhkAIyn7x9NS0lR/qxYfd5unRtfGkMjvpgF4Sh28IXftRymaNmFKTTdejDNY25NDGSIyjwj/BRwAPexg=="
     },
     "@types/q": {
-      "version": "1.5.4",
-      "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz",
-      "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==",
+      "version": "1.5.5",
+      "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz",
+      "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==",
       "dev": true
     },
     "@types/selenium-webdriver": {
-      "version": "3.0.17",
-      "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz",
-      "integrity": "sha512-tGomyEuzSC1H28y2zlW6XPCaDaXFaD6soTdb4GNdmte2qfHtrKqhy0ZFs4r/1hpazCfEZqeTSRLvSasmEx89uw==",
+      "version": "3.0.20",
+      "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.20.tgz",
+      "integrity": "sha512-6d8Q5fqS9DWOXEhMDiF6/2FjyHdmP/jSTAUyeQR7QwrFeNmYyzmvGxD5aLIHL445HjWgibs0eAig+KPnbaesXA==",
       "dev": true
     },
     "@types/source-list-map": {
@@ -2428,9 +4316,9 @@
       "dev": true
     },
     "@types/webpack-sources": {
-      "version": "0.1.8",
-      "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.8.tgz",
-      "integrity": "sha512-JHB2/xZlXOjzjBB6fMOpH1eQAfsrpqVVIbneE0Rok16WXwFaznaI5vfg75U5WgGJm7V9W1c4xeRQDjX/zwvghA==",
+      "version": "0.1.9",
+      "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.9.tgz",
+      "integrity": "sha512-bvzMnzqoK16PQIC8AYHNdW45eREJQMd6WG/msQWX5V2+vZmODCOPb4TJcbgRljTZZTwTM4wUMcsI8FftNA7new==",
       "dev": true,
       "requires": {
         "@types/node": "*",
@@ -2447,178 +4335,177 @@
       }
     },
     "@webassemblyjs/ast": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz",
-      "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
+      "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/helper-module-context": "1.8.5",
-        "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
-        "@webassemblyjs/wast-parser": "1.8.5"
+        "@webassemblyjs/helper-module-context": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/wast-parser": "1.9.0"
       }
     },
     "@webassemblyjs/floating-point-hex-parser": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz",
-      "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz",
+      "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==",
       "dev": true
     },
     "@webassemblyjs/helper-api-error": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz",
-      "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz",
+      "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==",
       "dev": true
     },
     "@webassemblyjs/helper-buffer": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz",
-      "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz",
+      "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==",
       "dev": true
     },
     "@webassemblyjs/helper-code-frame": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz",
-      "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz",
+      "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/wast-printer": "1.8.5"
+        "@webassemblyjs/wast-printer": "1.9.0"
       }
     },
     "@webassemblyjs/helper-fsm": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz",
-      "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz",
+      "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==",
       "dev": true
     },
     "@webassemblyjs/helper-module-context": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz",
-      "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz",
+      "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.8.5",
-        "mamacro": "^0.0.3"
+        "@webassemblyjs/ast": "1.9.0"
       }
     },
     "@webassemblyjs/helper-wasm-bytecode": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz",
-      "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz",
+      "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==",
       "dev": true
     },
     "@webassemblyjs/helper-wasm-section": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz",
-      "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz",
+      "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/helper-buffer": "1.8.5",
-        "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
-        "@webassemblyjs/wasm-gen": "1.8.5"
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0"
       }
     },
     "@webassemblyjs/ieee754": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz",
-      "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz",
+      "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==",
       "dev": true,
       "requires": {
         "@xtuc/ieee754": "^1.2.0"
       }
     },
     "@webassemblyjs/leb128": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz",
-      "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz",
+      "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==",
       "dev": true,
       "requires": {
         "@xtuc/long": "4.2.2"
       }
     },
     "@webassemblyjs/utf8": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz",
-      "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz",
+      "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==",
       "dev": true
     },
     "@webassemblyjs/wasm-edit": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz",
-      "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz",
+      "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/helper-buffer": "1.8.5",
-        "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
-        "@webassemblyjs/helper-wasm-section": "1.8.5",
-        "@webassemblyjs/wasm-gen": "1.8.5",
-        "@webassemblyjs/wasm-opt": "1.8.5",
-        "@webassemblyjs/wasm-parser": "1.8.5",
-        "@webassemblyjs/wast-printer": "1.8.5"
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/helper-wasm-section": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0",
+        "@webassemblyjs/wasm-opt": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0",
+        "@webassemblyjs/wast-printer": "1.9.0"
       }
     },
     "@webassemblyjs/wasm-gen": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz",
-      "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz",
+      "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
-        "@webassemblyjs/ieee754": "1.8.5",
-        "@webassemblyjs/leb128": "1.8.5",
-        "@webassemblyjs/utf8": "1.8.5"
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/ieee754": "1.9.0",
+        "@webassemblyjs/leb128": "1.9.0",
+        "@webassemblyjs/utf8": "1.9.0"
       }
     },
     "@webassemblyjs/wasm-opt": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz",
-      "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz",
+      "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/helper-buffer": "1.8.5",
-        "@webassemblyjs/wasm-gen": "1.8.5",
-        "@webassemblyjs/wasm-parser": "1.8.5"
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0"
       }
     },
     "@webassemblyjs/wasm-parser": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz",
-      "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz",
+      "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/helper-api-error": "1.8.5",
-        "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
-        "@webassemblyjs/ieee754": "1.8.5",
-        "@webassemblyjs/leb128": "1.8.5",
-        "@webassemblyjs/utf8": "1.8.5"
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-api-error": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/ieee754": "1.9.0",
+        "@webassemblyjs/leb128": "1.9.0",
+        "@webassemblyjs/utf8": "1.9.0"
       }
     },
     "@webassemblyjs/wast-parser": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz",
-      "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz",
+      "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/floating-point-hex-parser": "1.8.5",
-        "@webassemblyjs/helper-api-error": "1.8.5",
-        "@webassemblyjs/helper-code-frame": "1.8.5",
-        "@webassemblyjs/helper-fsm": "1.8.5",
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/floating-point-hex-parser": "1.9.0",
+        "@webassemblyjs/helper-api-error": "1.9.0",
+        "@webassemblyjs/helper-code-frame": "1.9.0",
+        "@webassemblyjs/helper-fsm": "1.9.0",
         "@xtuc/long": "4.2.2"
       }
     },
     "@webassemblyjs/wast-printer": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz",
-      "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz",
+      "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/wast-parser": "1.8.5",
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/wast-parser": "1.9.0",
         "@xtuc/long": "4.2.2"
       }
     },
@@ -2650,6 +4537,12 @@
         "through": ">=2.2.7 <3"
       }
     },
+    "abab": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
+      "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
+      "dev": true
+    },
     "abbrev": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
@@ -2681,11 +4574,21 @@
       }
     },
     "acorn": {
-      "version": "7.4.1",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
-      "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+      "version": "6.4.2",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
+      "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
       "dev": true
     },
+    "adjust-sourcemap-loader": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz",
+      "integrity": "sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^2.0.0",
+        "regex-parser": "^2.2.11"
+      }
+    },
     "adm-zip": {
       "version": "0.4.16",
       "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz",
@@ -2695,7 +4598,7 @@
     "after": {
       "version": "0.8.2",
       "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
-      "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
+      "integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==",
       "dev": true
     },
     "agent-base": {
@@ -2753,7 +4656,7 @@
     "alphanum-sort": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
-      "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
+      "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==",
       "dev": true
     },
     "angular-walkthrough": {
@@ -2762,6 +4665,13 @@
       "integrity": "sha512-UoxFGFO1k99JP4LlS6aah0jD27389MmalGKKudM2b6cUl8ZLf6WK5oe+prsEBf/PNc3mnDSjHVVDLoH0V4cDtQ==",
       "requires": {
         "tslib": "^1.9.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+        }
       }
     },
     "ansi-align": {
@@ -2822,7 +4732,7 @@
     "ansi-html": {
       "version": "0.0.7",
       "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
-      "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
+      "integrity": "sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA==",
       "dev": true
     },
     "ansi-regex": {
@@ -2874,15 +4784,6 @@
       "integrity": "sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==",
       "dev": true
     },
-    "append-transform": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz",
-      "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==",
-      "dev": true,
-      "requires": {
-        "default-require-extensions": "^2.0.0"
-      }
-    },
     "aproba": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
@@ -2971,10 +4872,16 @@
         "commander": "^2.11.0"
       }
     },
+    "arity-n": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz",
+      "integrity": "sha512-fExL2kFDC1Q2DUOx3whE/9KoN66IzkY4b4zUHUBFM1ojEYjZZYDcUW3bek/ufGionX9giIKDC5redH2IlGqcQQ==",
+      "dev": true
+    },
     "arr-diff": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
-      "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+      "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
       "dev": true
     },
     "arr-flatten": {
@@ -2986,7 +4893,7 @@
     "arr-union": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
-      "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+      "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
       "dev": true
     },
     "array-flatten": {
@@ -3013,9 +4920,22 @@
     "array-unique": {
       "version": "0.3.2",
       "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
-      "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+      "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
       "dev": true
     },
+    "array.prototype.reduce": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz",
+      "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.19.2",
+        "es-array-method-boxes-properly": "^1.0.0",
+        "is-string": "^1.0.7"
+      }
+    },
     "arraybuffer.slice": {
       "version": "0.0.7",
       "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
@@ -3025,7 +4945,7 @@
     "arrify": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
-      "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+      "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
       "dev": true
     },
     "as-array": {
@@ -3037,7 +4957,7 @@
     "asap": {
       "version": "2.0.6",
       "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
-      "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
+      "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
       "dev": true
     },
     "asn1": {
@@ -3062,9 +4982,9 @@
       },
       "dependencies": {
         "bn.js": {
-          "version": "4.11.9",
-          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
-          "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
           "dev": true
         }
       }
@@ -3082,13 +5002,13 @@
         "inherits": {
           "version": "2.0.1",
           "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
-          "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+          "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==",
           "dev": true
         },
         "util": {
           "version": "0.10.3",
           "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
-          "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+          "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==",
           "dev": true,
           "requires": {
             "inherits": "2.0.1"
@@ -3105,7 +5025,7 @@
     "assign-symbols": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
-      "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+      "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
       "dev": true
     },
     "ast-types-flow": {
@@ -3148,18 +5068,18 @@
       "dev": true
     },
     "autoprefixer": {
-      "version": "9.7.1",
-      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.1.tgz",
-      "integrity": "sha512-w3b5y1PXWlhYulevrTJ0lizkQ5CyqfeU6BIRDbuhsMupstHQOeb1Ur80tcB1zxSu7AwyY/qCQ7Vvqklh31ZBFw==",
+      "version": "9.8.6",
+      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz",
+      "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==",
       "dev": true,
       "requires": {
-        "browserslist": "^4.7.2",
-        "caniuse-lite": "^1.0.30001006",
-        "chalk": "^2.4.2",
+        "browserslist": "^4.12.0",
+        "caniuse-lite": "^1.0.30001109",
+        "colorette": "^1.2.1",
         "normalize-range": "^0.1.2",
         "num2fraction": "^1.2.2",
-        "postcss": "^7.0.21",
-        "postcss-value-parser": "^4.0.2"
+        "postcss": "^7.0.32",
+        "postcss-value-parser": "^4.1.0"
       }
     },
     "aws-sign2": {
@@ -3184,15 +5104,16 @@
       }
     },
     "babel-loader": {
-      "version": "8.0.6",
-      "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz",
-      "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==",
+      "version": "8.1.0",
+      "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz",
+      "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==",
       "dev": true,
       "requires": {
-        "find-cache-dir": "^2.0.0",
-        "loader-utils": "^1.0.2",
-        "mkdirp": "^0.5.1",
-        "pify": "^4.0.1"
+        "find-cache-dir": "^2.1.0",
+        "loader-utils": "^1.4.0",
+        "mkdirp": "^0.5.3",
+        "pify": "^4.0.1",
+        "schema-utils": "^2.6.5"
       },
       "dependencies": {
         "find-cache-dir": {
@@ -3205,6 +5126,26 @@
             "make-dir": "^2.0.0",
             "pkg-dir": "^3.0.0"
           }
+        },
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
         }
       }
     },
@@ -3220,7 +5161,7 @@
     "backo2": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
-      "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=",
+      "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==",
       "dev": true
     },
     "balanced-match": {
@@ -3246,7 +5187,7 @@
         "define-property": {
           "version": "1.0.0",
           "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
           "dev": true,
           "requires": {
             "is-descriptor": "^1.0.0"
@@ -3284,9 +5225,9 @@
       }
     },
     "base64-arraybuffer": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
-      "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=",
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz",
+      "integrity": "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==",
       "dev": true
     },
     "base64-js": {
@@ -3295,9 +5236,9 @@
       "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
     },
     "base64id": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
-      "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
+      "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
       "dev": true
     },
     "basic-auth": {
@@ -3318,7 +5259,7 @@
     "batch": {
       "version": "0.6.1",
       "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
-      "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
+      "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
       "dev": true
     },
     "bcrypt-pbkdf": {
@@ -3330,15 +5271,6 @@
         "tweetnacl": "^0.14.3"
       }
     },
-    "better-assert": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
-      "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
-      "dev": true,
-      "requires": {
-        "callsite": "1.0.0"
-      }
-    },
     "big-integer": {
       "version": "1.6.48",
       "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz",
@@ -3372,16 +5304,6 @@
       "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
       "dev": true
     },
-    "bindings": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
-      "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "file-uri-to-path": "1.0.0"
-      }
-    },
     "bl": {
       "version": "4.1.0",
       "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
@@ -3444,9 +5366,9 @@
       "dev": true
     },
     "bn.js": {
-      "version": "5.1.3",
-      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz",
-      "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==",
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
+      "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
       "dev": true
     },
     "body-parser": {
@@ -3499,7 +5421,7 @@
     "bonjour": {
       "version": "3.5.0",
       "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
-      "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
+      "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==",
       "dev": true,
       "requires": {
         "array-flatten": "^2.1.0",
@@ -3513,7 +5435,7 @@
     "boolbase": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
-      "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+      "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
       "dev": true
     },
     "bootstrap": {
@@ -3641,7 +5563,7 @@
     "brorand": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
-      "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+      "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==",
       "dev": true
     },
     "browser-tabs-lock": {
@@ -3752,16 +5674,15 @@
       }
     },
     "browserslist": {
-      "version": "4.16.1",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.1.tgz",
-      "integrity": "sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==",
+      "version": "4.21.1",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz",
+      "integrity": "sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==",
       "dev": true,
       "requires": {
-        "caniuse-lite": "^1.0.30001173",
-        "colorette": "^1.2.1",
-        "electron-to-chromium": "^1.3.634",
-        "escalade": "^3.1.1",
-        "node-releases": "^1.1.69"
+        "caniuse-lite": "^1.0.30001359",
+        "electron-to-chromium": "^1.4.172",
+        "node-releases": "^2.0.5",
+        "update-browserslist-db": "^1.0.4"
       }
     },
     "browserstack": {
@@ -3784,22 +5705,6 @@
         "isarray": "^1.0.0"
       }
     },
-    "buffer-alloc": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
-      "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
-      "dev": true,
-      "requires": {
-        "buffer-alloc-unsafe": "^1.1.0",
-        "buffer-fill": "^1.0.0"
-      }
-    },
-    "buffer-alloc-unsafe": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
-      "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
-      "dev": true
-    },
     "buffer-crc32": {
       "version": "0.2.13",
       "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
@@ -3811,12 +5716,6 @@
       "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
       "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
     },
-    "buffer-fill": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
-      "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
-      "dev": true
-    },
     "buffer-from": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
@@ -3838,7 +5737,7 @@
     "buffer-xor": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
-      "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+      "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==",
       "dev": true
     },
     "buffers": {
@@ -3850,19 +5749,19 @@
     "builtin-modules": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
-      "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
+      "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==",
       "dev": true
     },
     "builtin-status-codes": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
-      "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+      "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==",
       "dev": true
     },
     "builtins": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
-      "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=",
+      "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==",
       "dev": true
     },
     "bytes": {
@@ -3872,39 +5771,83 @@
       "dev": true
     },
     "cacache": {
-      "version": "13.0.1",
-      "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz",
-      "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==",
+      "version": "15.0.5",
+      "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz",
+      "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==",
       "dev": true,
       "requires": {
-        "chownr": "^1.1.2",
-        "figgy-pudding": "^3.5.1",
+        "@npmcli/move-file": "^1.0.1",
+        "chownr": "^2.0.0",
         "fs-minipass": "^2.0.0",
         "glob": "^7.1.4",
-        "graceful-fs": "^4.2.2",
         "infer-owner": "^1.0.4",
-        "lru-cache": "^5.1.1",
-        "minipass": "^3.0.0",
+        "lru-cache": "^6.0.0",
+        "minipass": "^3.1.1",
         "minipass-collect": "^1.0.2",
         "minipass-flush": "^1.0.5",
         "minipass-pipeline": "^1.2.2",
-        "mkdirp": "^0.5.1",
-        "move-concurrently": "^1.0.1",
-        "p-map": "^3.0.0",
+        "mkdirp": "^1.0.3",
+        "p-map": "^4.0.0",
         "promise-inflight": "^1.0.1",
-        "rimraf": "^2.7.1",
-        "ssri": "^7.0.0",
+        "rimraf": "^3.0.2",
+        "ssri": "^8.0.0",
+        "tar": "^6.0.2",
         "unique-filename": "^1.1.1"
       },
       "dependencies": {
+        "chownr": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+          "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+          "dev": true
+        },
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
+        "minizlib": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+          "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+          "dev": true,
+          "requires": {
+            "minipass": "^3.0.0",
+            "yallist": "^4.0.0"
+          }
+        },
+        "mkdirp": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+          "dev": true
+        },
         "rimraf": {
-          "version": "2.7.1",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
           "dev": true,
           "requires": {
             "glob": "^7.1.3"
           }
+        },
+        "tar": {
+          "version": "6.1.11",
+          "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz",
+          "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==",
+          "dev": true,
+          "requires": {
+            "chownr": "^2.0.0",
+            "fs-minipass": "^2.0.0",
+            "minipass": "^3.0.0",
+            "minizlib": "^2.1.1",
+            "mkdirp": "^1.0.3",
+            "yallist": "^4.0.0"
+          }
         }
       }
     },
@@ -3988,7 +5931,7 @@
     "caller-callsite": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
-      "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
+      "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==",
       "dev": true,
       "requires": {
         "callsites": "^2.0.0"
@@ -3997,22 +5940,16 @@
     "caller-path": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
-      "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
+      "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==",
       "dev": true,
       "requires": {
         "caller-callsite": "^2.0.0"
       }
     },
-    "callsite": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
-      "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
-      "dev": true
-    },
     "callsites": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
-      "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
+      "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==",
       "dev": true
     },
     "camelcase": {
@@ -4034,9 +5971,9 @@
       }
     },
     "caniuse-lite": {
-      "version": "1.0.30001179",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001179.tgz",
-      "integrity": "sha512-blMmO0QQujuUWZKyVrD1msR4WNDAqb/UPO1Sw2WWsQ7deoM5bJiicKnWJ1Y0NS/aGINSnKPIWBMw5luX+NDUCA==",
+      "version": "1.0.30001364",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001364.tgz",
+      "integrity": "sha512-9O0xzV3wVyX0SlegIQ6knz+okhBB5pE0PC40MNdwcipjwpxoUEHL24uJ+gG42cgklPjfO5ZjZPme9FTSN3QT2Q==",
       "dev": true
     },
     "canonical-path": {
@@ -4120,13 +6057,10 @@
       "dev": true
     },
     "chrome-trace-event": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz",
-      "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==",
-      "dev": true,
-      "requires": {
-        "tslib": "^1.9.0"
-      }
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
+      "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
+      "dev": true
     },
     "ci-info": {
       "version": "2.0.0",
@@ -4174,7 +6108,7 @@
         "define-property": {
           "version": "0.2.5",
           "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
           "dev": true,
           "requires": {
             "is-descriptor": "^0.1.0"
@@ -4274,29 +6208,46 @@
       "dev": true
     },
     "cliui": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
-      "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+      "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
       "dev": true,
       "requires": {
-        "string-width": "^2.1.1",
-        "strip-ansi": "^4.0.0",
-        "wrap-ansi": "^2.0.0"
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0",
+        "wrap-ansi": "^6.2.0"
       },
       "dependencies": {
         "ansi-regex": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+          "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
           "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
           "dev": true
         },
+        "string-width": {
+          "version": "4.2.3",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.1"
+          }
+        },
         "strip-ansi": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "version": "6.0.1",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+          "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
           "dev": true,
           "requires": {
-            "ansi-regex": "^3.0.0"
+            "ansi-regex": "^5.0.1"
           }
         }
       }
@@ -4304,20 +6255,9 @@
     "clone": {
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
-      "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
+      "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
       "dev": true
     },
-    "clone-deep": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
-      "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
-      "dev": true,
-      "requires": {
-        "is-plain-object": "^2.0.4",
-        "kind-of": "^6.0.2",
-        "shallow-clone": "^3.0.0"
-      }
-    },
     "clone-response": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
@@ -4342,7 +6282,8 @@
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
       "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
-      "dev": true
+      "dev": true,
+      "optional": true
     },
     "codelyzer": {
       "version": "5.2.2",
@@ -4378,7 +6319,7 @@
     "collection-visit": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
-      "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+      "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
       "dev": true,
       "requires": {
         "map-visit": "^1.0.0",
@@ -4386,13 +6327,25 @@
       }
     },
     "color": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz",
-      "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==",
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
+      "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
       "dev": true,
       "requires": {
-        "color-convert": "^1.9.1",
-        "color-string": "^1.5.4"
+        "color-convert": "^1.9.3",
+        "color-string": "^1.6.0"
+      },
+      "dependencies": {
+        "color-string": {
+          "version": "1.9.1",
+          "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+          "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+          "dev": true,
+          "requires": {
+            "color-name": "^1.0.0",
+            "simple-swizzle": "^0.2.2"
+          }
+        }
       }
     },
     "color-convert": {
@@ -4419,15 +6372,15 @@
       }
     },
     "colorette": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz",
-      "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==",
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
+      "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==",
       "dev": true
     },
     "colors": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
-      "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
+      "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
       "dev": true
     },
     "colorspace": {
@@ -4470,7 +6423,7 @@
     "commondir": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
-      "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+      "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
       "dev": true
     },
     "compare-semver": {
@@ -4490,16 +6443,10 @@
         }
       }
     },
-    "compare-versions": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz",
-      "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==",
-      "dev": true
-    },
     "component-bind": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
-      "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=",
+      "integrity": "sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw==",
       "dev": true
     },
     "component-emitter": {
@@ -4511,9 +6458,18 @@
     "component-inherit": {
       "version": "0.0.3",
       "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
-      "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=",
+      "integrity": "sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==",
       "dev": true
     },
+    "compose-function": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz",
+      "integrity": "sha512-xzhzTJ5eC+gmIzvZq+C3kCJHsp9os6tJkrigDRZclyGtOKINbZtE8n1Tzmeh32jW+BUDPbvZpibwvJHBLGMVwg==",
+      "dev": true,
+      "requires": {
+        "arity-n": "^1.0.4"
+      }
+    },
     "compress-commons": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-2.1.1.tgz",
@@ -4660,7 +6616,7 @@
     "constants-browserify": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
-      "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+      "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==",
       "dev": true
     },
     "content-disposition": {
@@ -4679,9 +6635,9 @@
       "dev": true
     },
     "convert-source-map": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
-      "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
+      "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
       "requires": {
         "safe-buffer": "~5.1.1"
       }
@@ -4698,6 +6654,15 @@
       "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
       "dev": true
     },
+    "copy-anything": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz",
+      "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
+      "dev": true,
+      "requires": {
+        "is-what": "^3.14.1"
+      }
+    },
     "copy-concurrently": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
@@ -4726,79 +6691,35 @@
     "copy-descriptor": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
-      "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+      "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
       "dev": true
     },
     "copy-webpack-plugin": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz",
-      "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==",
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.0.3.tgz",
+      "integrity": "sha512-q5m6Vz4elsuyVEIUXr7wJdIdePWTubsqVbEMvf1WQnHGv0Q+9yPRu7MtYFPt+GBOXRav9lvIINifTQ1vSCs+eA==",
       "dev": true,
       "requires": {
-        "cacache": "^12.0.3",
-        "find-cache-dir": "^2.1.0",
-        "glob-parent": "^3.1.0",
-        "globby": "^7.1.1",
-        "is-glob": "^4.0.1",
-        "loader-utils": "^1.2.3",
-        "minimatch": "^3.0.4",
+        "cacache": "^15.0.4",
+        "fast-glob": "^3.2.4",
+        "find-cache-dir": "^3.3.1",
+        "glob-parent": "^5.1.1",
+        "globby": "^11.0.1",
+        "loader-utils": "^2.0.0",
         "normalize-path": "^3.0.0",
-        "p-limit": "^2.2.1",
-        "schema-utils": "^1.0.0",
-        "serialize-javascript": "^2.1.2",
-        "webpack-log": "^2.0.0"
+        "p-limit": "^3.0.1",
+        "schema-utils": "^2.7.0",
+        "serialize-javascript": "^4.0.0",
+        "webpack-sources": "^1.4.3"
       },
       "dependencies": {
-        "cacache": {
-          "version": "12.0.4",
-          "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
-          "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
-          "dev": true,
-          "requires": {
-            "bluebird": "^3.5.5",
-            "chownr": "^1.1.1",
-            "figgy-pudding": "^3.5.1",
-            "glob": "^7.1.4",
-            "graceful-fs": "^4.1.15",
-            "infer-owner": "^1.0.3",
-            "lru-cache": "^5.1.1",
-            "mississippi": "^3.0.0",
-            "mkdirp": "^0.5.1",
-            "move-concurrently": "^1.0.1",
-            "promise-inflight": "^1.0.1",
-            "rimraf": "^2.6.3",
-            "ssri": "^6.0.1",
-            "unique-filename": "^1.1.1",
-            "y18n": "^4.0.0"
-          }
-        },
-        "find-cache-dir": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
-          "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
-          "dev": true,
-          "requires": {
-            "commondir": "^1.0.1",
-            "make-dir": "^2.0.0",
-            "pkg-dir": "^3.0.0"
-          }
-        },
-        "rimraf": {
-          "version": "2.7.1",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-          "dev": true,
-          "requires": {
-            "glob": "^7.1.3"
-          }
-        },
-        "ssri": {
-          "version": "6.0.1",
-          "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
-          "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
+        "p-limit": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+          "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
           "dev": true,
           "requires": {
-            "figgy-pudding": "^3.5.1"
+            "yocto-queue": "^0.1.0"
           }
         }
       }
@@ -4810,12 +6731,12 @@
       "dev": true
     },
     "core-js-compat": {
-      "version": "3.8.3",
-      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.3.tgz",
-      "integrity": "sha512-1sCb0wBXnBIL16pfFG1Gkvei6UzvKyTNYpiC41yrdjEv0UoJoq9E/abTMzyYJ6JpTkAj15dLjbqifIzEBDVvog==",
+      "version": "3.23.4",
+      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.4.tgz",
+      "integrity": "sha512-RkSRPe+JYEoflcsuxJWaiMPhnZoFS51FcIxm53k4KzhISCBTmaGlto9dTIrYuk0hnJc3G6pKufAKepHnBq6B6Q==",
       "dev": true,
       "requires": {
-        "browserslist": "^4.16.1",
+        "browserslist": "^4.21.1",
         "semver": "7.0.0"
       },
       "dependencies": {
@@ -4845,50 +6766,6 @@
         "parse-json": "^4.0.0"
       }
     },
-    "coverage-istanbul-loader": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/coverage-istanbul-loader/-/coverage-istanbul-loader-2.0.3.tgz",
-      "integrity": "sha512-LiGRvyIuzVYs3M1ZYK1tF0HekjH0DJ8zFdUwAZq378EJzqOgToyb1690dp3TAUlP6Y+82uu42LRjuROVeJ54CA==",
-      "dev": true,
-      "requires": {
-        "convert-source-map": "^1.7.0",
-        "istanbul-lib-instrument": "^4.0.0",
-        "loader-utils": "^1.2.3",
-        "merge-source-map": "^1.1.0",
-        "schema-utils": "^2.6.1"
-      },
-      "dependencies": {
-        "ajv": {
-          "version": "6.12.6",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
-          }
-        },
-        "fast-deep-equal": {
-          "version": "3.1.3",
-          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-          "dev": true
-        },
-        "schema-utils": {
-          "version": "2.7.1",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
-          "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
-          "dev": true,
-          "requires": {
-            "@types/json-schema": "^7.0.5",
-            "ajv": "^6.12.4",
-            "ajv-keywords": "^3.5.2"
-          }
-        }
-      }
-    },
     "crc": {
       "version": "3.8.0",
       "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz",
@@ -4944,9 +6821,9 @@
       },
       "dependencies": {
         "bn.js": {
-          "version": "4.11.9",
-          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
-          "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
           "dev": true
         }
       }
@@ -5056,7 +6933,7 @@
     "css-color-names": {
       "version": "0.0.4",
       "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
-      "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
+      "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==",
       "dev": true
     },
     "css-declaration-sorter": {
@@ -5069,10 +6946,56 @@
         "timsort": "^0.3.0"
       }
     },
+    "css-loader": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-4.2.2.tgz",
+      "integrity": "sha512-omVGsTkZPVwVRpckeUnLshPp12KsmMSLqYxs12+RzM9jRR5Y+Idn/tBffjXRvOE+qW7if24cuceFJqYR5FmGBg==",
+      "dev": true,
+      "requires": {
+        "camelcase": "^6.0.0",
+        "cssesc": "^3.0.0",
+        "icss-utils": "^4.1.1",
+        "loader-utils": "^2.0.0",
+        "postcss": "^7.0.32",
+        "postcss-modules-extract-imports": "^2.0.0",
+        "postcss-modules-local-by-default": "^3.0.3",
+        "postcss-modules-scope": "^2.2.0",
+        "postcss-modules-values": "^3.0.0",
+        "postcss-value-parser": "^4.1.0",
+        "schema-utils": "^2.7.0",
+        "semver": "^7.3.2"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+          "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+          "dev": true
+        },
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
+        "semver": {
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        }
+      }
+    },
     "css-parse": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz",
-      "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=",
+      "integrity": "sha512-UNIFik2RgSbiTwIW1IsFwXWn6vs+bYdq83LKTSOsx7NJR7WII9dxewkHLltfTLVppoUApHV0118a4RZRI9FLwA==",
       "dev": true,
       "requires": {
         "css": "^2.0.0"
@@ -5158,9 +7081,9 @@
       }
     },
     "cssnano-preset-default": {
-      "version": "4.0.7",
-      "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz",
-      "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==",
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz",
+      "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==",
       "dev": true,
       "requires": {
         "css-declaration-sorter": "^4.0.1",
@@ -5191,20 +7114,20 @@
         "postcss-ordered-values": "^4.1.2",
         "postcss-reduce-initial": "^4.0.3",
         "postcss-reduce-transforms": "^4.0.2",
-        "postcss-svgo": "^4.0.2",
+        "postcss-svgo": "^4.0.3",
         "postcss-unique-selectors": "^4.0.1"
       }
     },
     "cssnano-util-get-arguments": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz",
-      "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=",
+      "integrity": "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==",
       "dev": true
     },
     "cssnano-util-get-match": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz",
-      "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=",
+      "integrity": "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==",
       "dev": true
     },
     "cssnano-util-raw-cache": {
@@ -5232,9 +7155,9 @@
       },
       "dependencies": {
         "css-tree": {
-          "version": "1.1.2",
-          "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz",
-          "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==",
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
+          "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
           "dev": true,
           "requires": {
             "mdn-data": "2.0.14",
@@ -5305,13 +7228,13 @@
     "custom-event": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz",
-      "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=",
+      "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==",
       "dev": true
     },
     "cyclist": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
-      "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=",
+      "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==",
       "dev": true
     },
     "d": {
@@ -5339,10 +7262,21 @@
         "assert-plus": "^1.0.0"
       }
     },
+    "data-urls": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
+      "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
+      "dev": true,
+      "requires": {
+        "abab": "^2.0.3",
+        "whatwg-mimetype": "^2.3.0",
+        "whatwg-url": "^8.0.0"
+      }
+    },
     "date-format": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz",
-      "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==",
+      "version": "4.0.11",
+      "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.11.tgz",
+      "integrity": "sha512-VS20KRyorrbMCQmpdl2hg5KaOUsda1RbnsJg461FfrcyCUg+pkd0b40BSW4niQyTheww4DBXQnS7HwSrKkipLw==",
       "dev": true
     },
     "debug": {
@@ -5356,7 +7290,7 @@
     "debuglog": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz",
-      "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=",
+      "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==",
       "dev": true
     },
     "decamelize": {
@@ -5368,7 +7302,7 @@
     "decode-uri-component": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
-      "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+      "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==",
       "dev": true
     },
     "decompress-response": {
@@ -5422,15 +7356,6 @@
         "ip-regex": "^2.1.0"
       }
     },
-    "default-require-extensions": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz",
-      "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=",
-      "dev": true,
-      "requires": {
-        "strip-bom": "^3.0.0"
-      }
-    },
     "defaults": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
@@ -5455,12 +7380,13 @@
       "dev": true
     },
     "define-properties": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
-      "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
+      "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
       "dev": true,
       "requires": {
-        "object-keys": "^1.0.12"
+        "has-property-descriptors": "^1.0.0",
+        "object-keys": "^1.1.1"
       }
     },
     "define-property": {
@@ -5522,7 +7448,7 @@
         "globby": {
           "version": "6.1.0",
           "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
-          "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+          "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==",
           "dev": true,
           "requires": {
             "array-union": "^1.0.1",
@@ -5535,7 +7461,7 @@
             "pify": {
               "version": "2.3.0",
               "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-              "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+              "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
               "dev": true
             }
           }
@@ -5599,15 +7525,15 @@
       "dev": true
     },
     "detect-node": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz",
-      "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
+      "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
       "dev": true
     },
     "dezalgo": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz",
-      "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=",
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
+      "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
       "dev": true,
       "requires": {
         "asap": "^2.0.0",
@@ -5617,7 +7543,7 @@
     "di": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz",
-      "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=",
+      "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==",
       "dev": true
     },
     "diff": {
@@ -5638,32 +7564,32 @@
       },
       "dependencies": {
         "bn.js": {
-          "version": "4.11.9",
-          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
-          "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
           "dev": true
         }
       }
     },
     "dir-glob": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
-      "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+      "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
       "dev": true,
       "requires": {
-        "path-type": "^3.0.0"
+        "path-type": "^4.0.0"
       }
     },
     "dns-equal": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
-      "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
+      "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==",
       "dev": true
     },
     "dns-packet": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz",
-      "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==",
+      "version": "1.3.4",
+      "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz",
+      "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==",
       "dev": true,
       "requires": {
         "ip": "^1.1.0",
@@ -5673,7 +7599,7 @@
     "dns-txt": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz",
-      "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
+      "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==",
       "dev": true,
       "requires": {
         "buffer-indexof": "^1.0.0"
@@ -5682,7 +7608,7 @@
     "dom-serialize": {
       "version": "2.2.1",
       "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz",
-      "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=",
+      "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==",
       "dev": true,
       "requires": {
         "custom-event": "~1.0.0",
@@ -5702,9 +7628,9 @@
       },
       "dependencies": {
         "domelementtype": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz",
-          "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==",
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+          "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
           "dev": true
         }
       }
@@ -5803,30 +7729,30 @@
       "dev": true
     },
     "electron-to-chromium": {
-      "version": "1.3.644",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.644.tgz",
-      "integrity": "sha512-N7FLvjDPADxad+OXXBuYfcvDvCBG0aW8ZZGr7G91sZMviYbnQJFxdSvUus4SJ0K7Q8dzMxE+Wx1d/CrJIIJ0sw==",
+      "version": "1.4.185",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.185.tgz",
+      "integrity": "sha512-9kV/isoOGpKkBt04yYNaSWIBn3187Q5VZRtoReq8oz5NY/A4XmU6cAoqgQlDp7kKJCZMRjWZ8nsQyxfpFHvfyw==",
       "dev": true
     },
     "elliptic": {
-      "version": "6.5.3",
-      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz",
-      "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==",
+      "version": "6.5.4",
+      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
+      "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
       "dev": true,
       "requires": {
-        "bn.js": "^4.4.0",
-        "brorand": "^1.0.1",
+        "bn.js": "^4.11.9",
+        "brorand": "^1.1.0",
         "hash.js": "^1.0.0",
-        "hmac-drbg": "^1.0.0",
-        "inherits": "^2.0.1",
-        "minimalistic-assert": "^1.0.0",
-        "minimalistic-crypto-utils": "^1.0.0"
+        "hmac-drbg": "^1.0.1",
+        "inherits": "^2.0.4",
+        "minimalistic-assert": "^1.0.1",
+        "minimalistic-crypto-utils": "^1.0.1"
       },
       "dependencies": {
         "bn.js": {
-          "version": "4.11.9",
-          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
-          "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
           "dev": true
         }
       }
@@ -5837,9 +7763,9 @@
       "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
     },
     "emojis-list": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
-      "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+      "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
       "dev": true
     },
     "enabled": {
@@ -5864,9 +7790,9 @@
       },
       "dependencies": {
         "iconv-lite": {
-          "version": "0.6.2",
-          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz",
-          "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==",
+          "version": "0.6.3",
+          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+          "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
           "dev": true,
           "requires": {
             "safer-buffer": ">= 2.1.2 < 3.0.0"
@@ -5884,78 +7810,61 @@
       }
     },
     "engine.io": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz",
-      "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==",
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.6.0.tgz",
+      "integrity": "sha512-Kc8fo5bbg8F4a2f3HPHTEpGyq/IRIQpyeHu3H1ThR14XDD7VrLcsGBo16HUpahgp8YkHJDaU5gNxJZbuGcuueg==",
       "dev": true,
       "requires": {
         "accepts": "~1.3.4",
-        "base64id": "1.0.0",
-        "cookie": "0.3.1",
-        "debug": "~3.1.0",
-        "engine.io-parser": "~2.1.0",
-        "ws": "~3.3.1"
+        "base64id": "2.0.0",
+        "cookie": "~0.4.1",
+        "debug": "~4.1.0",
+        "engine.io-parser": "~2.2.0",
+        "ws": "~7.4.2"
       },
       "dependencies": {
         "cookie": {
-          "version": "0.3.1",
-          "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
-          "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
+          "version": "0.4.2",
+          "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
+          "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
           "dev": true
         },
         "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
           "dev": true,
           "requires": {
-            "ms": "2.0.0"
+            "ms": "^2.1.1"
           }
         },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-          "dev": true
-        },
         "ws": {
-          "version": "3.3.3",
-          "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
-          "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
-          "dev": true,
-          "requires": {
-            "async-limiter": "~1.0.0",
-            "safe-buffer": "~5.1.0",
-            "ultron": "~1.1.0"
-          }
+          "version": "7.4.6",
+          "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
+          "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
+          "dev": true
         }
       }
     },
     "engine.io-client": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz",
-      "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==",
+      "version": "3.5.2",
+      "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.2.tgz",
+      "integrity": "sha512-QEqIp+gJ/kMHeUun7f5Vv3bteRHppHH/FMBQX/esFj/fuYfjyUKWGMo3VCvIP/V8bE9KcjHmRZrhIz2Z9oNsDA==",
       "dev": true,
       "requires": {
-        "component-emitter": "1.2.1",
+        "component-emitter": "~1.3.0",
         "component-inherit": "0.0.3",
         "debug": "~3.1.0",
-        "engine.io-parser": "~2.1.1",
+        "engine.io-parser": "~2.2.0",
         "has-cors": "1.1.0",
         "indexof": "0.0.1",
-        "parseqs": "0.0.5",
-        "parseuri": "0.0.5",
-        "ws": "~3.3.1",
-        "xmlhttprequest-ssl": "~1.5.4",
+        "parseqs": "0.0.6",
+        "parseuri": "0.0.6",
+        "ws": "~7.4.2",
+        "xmlhttprequest-ssl": "~1.6.2",
         "yeast": "0.1.2"
       },
       "dependencies": {
-        "component-emitter": {
-          "version": "1.2.1",
-          "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
-          "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
-          "dev": true
-        },
         "debug": {
           "version": "3.1.0",
           "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
@@ -5968,39 +7877,34 @@
         "ms": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
           "dev": true
         },
         "ws": {
-          "version": "3.3.3",
-          "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
-          "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
-          "dev": true,
-          "requires": {
-            "async-limiter": "~1.0.0",
-            "safe-buffer": "~5.1.0",
-            "ultron": "~1.1.0"
-          }
+          "version": "7.4.6",
+          "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
+          "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
+          "dev": true
         }
       }
     },
     "engine.io-parser": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz",
-      "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==",
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz",
+      "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==",
       "dev": true,
       "requires": {
         "after": "0.8.2",
         "arraybuffer.slice": "~0.0.7",
-        "base64-arraybuffer": "0.1.5",
+        "base64-arraybuffer": "0.1.4",
         "blob": "0.0.5",
         "has-binary2": "~1.0.2"
       }
     },
     "enhanced-resolve": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz",
-      "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==",
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz",
+      "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==",
       "dev": true,
       "requires": {
         "graceful-fs": "^4.1.2",
@@ -6011,13 +7915,13 @@
     "ent": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz",
-      "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=",
+      "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==",
       "dev": true
     },
     "entities": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
-      "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+      "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
       "dev": true
     },
     "env-paths": {
@@ -6030,7 +7934,7 @@
     "err-code": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz",
-      "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=",
+      "integrity": "sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==",
       "dev": true
     },
     "errno": {
@@ -6052,27 +7956,42 @@
       }
     },
     "es-abstract": {
-      "version": "1.18.0-next.2",
-      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz",
-      "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==",
+      "version": "1.20.1",
+      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz",
+      "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==",
       "dev": true,
       "requires": {
         "call-bind": "^1.0.2",
         "es-to-primitive": "^1.2.1",
         "function-bind": "^1.1.1",
-        "get-intrinsic": "^1.0.2",
+        "function.prototype.name": "^1.1.5",
+        "get-intrinsic": "^1.1.1",
+        "get-symbol-description": "^1.0.0",
         "has": "^1.0.3",
-        "has-symbols": "^1.0.1",
-        "is-callable": "^1.2.2",
-        "is-negative-zero": "^2.0.1",
-        "is-regex": "^1.1.1",
-        "object-inspect": "^1.9.0",
+        "has-property-descriptors": "^1.0.0",
+        "has-symbols": "^1.0.3",
+        "internal-slot": "^1.0.3",
+        "is-callable": "^1.2.4",
+        "is-negative-zero": "^2.0.2",
+        "is-regex": "^1.1.4",
+        "is-shared-array-buffer": "^1.0.2",
+        "is-string": "^1.0.7",
+        "is-weakref": "^1.0.2",
+        "object-inspect": "^1.12.0",
         "object-keys": "^1.1.1",
         "object.assign": "^4.1.2",
-        "string.prototype.trimend": "^1.0.3",
-        "string.prototype.trimstart": "^1.0.3"
+        "regexp.prototype.flags": "^1.4.3",
+        "string.prototype.trimend": "^1.0.5",
+        "string.prototype.trimstart": "^1.0.5",
+        "unbox-primitive": "^1.0.2"
       }
     },
+    "es-array-method-boxes-properly": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
+      "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==",
+      "dev": true
+    },
     "es-cookie": {
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/es-cookie/-/es-cookie-1.3.2.tgz",
@@ -6196,9 +8115,9 @@
       },
       "dependencies": {
         "estraverse": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
-          "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
+          "version": "5.3.0",
+          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+          "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
           "dev": true
         }
       }
@@ -6209,6 +8128,12 @@
       "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
       "dev": true
     },
+    "esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+      "dev": true
+    },
     "etag": {
       "version": "1.8.1",
       "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
@@ -6237,9 +8162,9 @@
       "dev": true
     },
     "events": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz",
-      "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==",
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+      "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
       "dev": true
     },
     "events-listener": {
@@ -6249,13 +8174,10 @@
       "dev": true
     },
     "eventsource": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz",
-      "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==",
-      "dev": true,
-      "requires": {
-        "original": "^1.0.0"
-      }
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.2.tgz",
+      "integrity": "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==",
+      "dev": true
     },
     "evp_bytestokey": {
       "version": "1.0.3",
@@ -6362,7 +8284,7 @@
     "exit": {
       "version": "0.1.2",
       "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
-      "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
+      "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
       "dev": true
     },
     "exit-code": {
@@ -6374,7 +8296,7 @@
     "expand-brackets": {
       "version": "2.1.4",
       "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
-      "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+      "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
       "dev": true,
       "requires": {
         "debug": "^2.3.3",
@@ -6398,7 +8320,7 @@
         "define-property": {
           "version": "0.2.5",
           "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
           "dev": true,
           "requires": {
             "is-descriptor": "^0.1.0"
@@ -6407,7 +8329,7 @@
         "extend-shallow": {
           "version": "2.0.1",
           "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
           "dev": true,
           "requires": {
             "is-extendable": "^0.1.0"
@@ -6416,7 +8338,7 @@
         "ms": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
           "dev": true
         }
       }
@@ -6513,7 +8435,7 @@
     "extend-shallow": {
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-      "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+      "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
       "dev": true,
       "requires": {
         "assign-symbols": "^1.0.0",
@@ -6561,7 +8483,7 @@
         "define-property": {
           "version": "1.0.0",
           "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
           "dev": true,
           "requires": {
             "is-descriptor": "^1.0.0"
@@ -6570,7 +8492,7 @@
         "extend-shallow": {
           "version": "2.0.1",
           "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
           "dev": true,
           "requires": {
             "is-extendable": "^0.1.0"
@@ -6619,6 +8541,19 @@
       "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
       "dev": true
     },
+    "fast-glob": {
+      "version": "3.2.11",
+      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
+      "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
+      "dev": true,
+      "requires": {
+        "@nodelib/fs.stat": "^2.0.2",
+        "@nodelib/fs.walk": "^1.2.3",
+        "glob-parent": "^5.1.2",
+        "merge2": "^1.3.0",
+        "micromatch": "^4.0.4"
+      }
+    },
     "fast-json-stable-stringify": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
@@ -6659,10 +8594,19 @@
       "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==",
       "dev": true
     },
+    "fastq": {
+      "version": "1.13.0",
+      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+      "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+      "dev": true,
+      "requires": {
+        "reusify": "^1.0.4"
+      }
+    },
     "faye-websocket": {
       "version": "0.10.0",
       "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
-      "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
+      "integrity": "sha512-Xhj93RXbMSq8urNCUq4p9l0P6hnySJ/7YNRhYNug0bLOuii7pKO7xQFb5mx9xZXWCar88pLPb805PvUkwrLZpQ==",
       "dev": true,
       "requires": {
         "websocket-driver": ">=0.5.1"
@@ -6690,61 +8634,13 @@
       }
     },
     "file-loader": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.2.0.tgz",
-      "integrity": "sha512-+xZnaK5R8kBJrHK0/6HRlrKNamvVS5rjyuju+rnyxRGuwUJwpAMsVzUl5dz6rK8brkzjV6JpcFNjp6NqV0g1OQ==",
-      "dev": true,
-      "requires": {
-        "loader-utils": "^1.2.3",
-        "schema-utils": "^2.0.0"
-      },
-      "dependencies": {
-        "ajv": {
-          "version": "6.12.6",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
-          }
-        },
-        "fast-deep-equal": {
-          "version": "3.1.3",
-          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-          "dev": true
-        },
-        "schema-utils": {
-          "version": "2.7.1",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
-          "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
-          "dev": true,
-          "requires": {
-            "@types/json-schema": "^7.0.5",
-            "ajv": "^6.12.4",
-            "ajv-keywords": "^3.5.2"
-          }
-        }
-      }
-    },
-    "file-uri-to-path": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
-      "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
-      "dev": true,
-      "optional": true
-    },
-    "fileset": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz",
-      "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=",
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz",
+      "integrity": "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==",
       "dev": true,
       "requires": {
-        "glob": "^7.0.3",
-        "minimatch": "^3.0.3"
+        "loader-utils": "^2.0.0",
+        "schema-utils": "^2.6.5"
       }
     },
     "filesize": {
@@ -6795,13 +8691,13 @@
       }
     },
     "find-cache-dir": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.0.0.tgz",
-      "integrity": "sha512-t7ulV1fmbxh5G9l/492O1p5+EBbr3uwpt6odhFTMc+nWyhmbloe+ja9BZ8pIBtqFWhOmCWVjx+pTW4zDkFoclw==",
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz",
+      "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==",
       "dev": true,
       "requires": {
         "commondir": "^1.0.1",
-        "make-dir": "^3.0.0",
+        "make-dir": "^3.0.2",
         "pkg-dir": "^4.1.0"
       },
       "dependencies": {
@@ -7350,7 +9246,7 @@
     "for-in": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
-      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+      "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
       "dev": true
     },
     "forever-agent": {
@@ -7379,7 +9275,7 @@
     "fragment-cache": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
-      "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+      "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
       "dev": true,
       "requires": {
         "map-cache": "^0.2.2"
@@ -7394,7 +9290,7 @@
     "from2": {
       "version": "2.3.0",
       "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
-      "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+      "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
       "dev": true,
       "requires": {
         "inherits": "^2.0.1",
@@ -7410,7 +9306,7 @@
     "fs-extra": {
       "version": "4.0.2",
       "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz",
-      "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=",
+      "integrity": "sha512-wYid1zXctNLgas1pZ8q8ChdsnGg4DHZVqMzJ7pOE85q5BppAEXgQGSoOjVgrcw5yI7pzz49p9AfMhM7z5PRuaw==",
       "dev": true,
       "requires": {
         "graceful-fs": "^4.1.2",
@@ -7430,7 +9326,7 @@
     "fs-write-stream-atomic": {
       "version": "1.0.10",
       "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
-      "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
+      "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==",
       "dev": true,
       "requires": {
         "graceful-fs": "^4.1.2",
@@ -7479,6 +9375,24 @@
       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
       "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
     },
+    "function.prototype.name": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
+      "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.19.0",
+        "functions-have-names": "^1.2.2"
+      }
+    },
+    "functions-have-names": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+      "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+      "dev": true
+    },
     "fuzzy": {
       "version": "0.1.3",
       "resolved": "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz",
@@ -7583,20 +9497,20 @@
       "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
     },
     "get-caller-file": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
-      "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
       "dev": true
     },
     "get-intrinsic": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz",
-      "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==",
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz",
+      "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==",
       "dev": true,
       "requires": {
         "function-bind": "^1.1.1",
         "has": "^1.0.3",
-        "has-symbols": "^1.0.1"
+        "has-symbols": "^1.0.3"
       }
     },
     "get-stream": {
@@ -7608,10 +9522,20 @@
         "pump": "^3.0.0"
       }
     },
+    "get-symbol-description": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+      "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "get-intrinsic": "^1.1.1"
+      }
+    },
     "get-value": {
       "version": "2.0.6",
       "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
-      "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+      "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
       "dev": true
     },
     "getpass": {
@@ -7638,24 +9562,12 @@
       }
     },
     "glob-parent": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-      "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
       "dev": true,
       "requires": {
-        "is-glob": "^3.1.0",
-        "path-dirname": "^1.0.0"
-      },
-      "dependencies": {
-        "is-glob": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
-          "dev": true,
-          "requires": {
-            "is-extglob": "^2.1.0"
-          }
-        }
+        "is-glob": "^4.0.1"
       }
     },
     "glob-slash": {
@@ -7698,23 +9610,23 @@
       "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
     },
     "globby": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
-      "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
+      "version": "11.1.0",
+      "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+      "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
       "dev": true,
       "requires": {
-        "array-union": "^1.0.1",
-        "dir-glob": "^2.0.0",
-        "glob": "^7.1.2",
-        "ignore": "^3.3.5",
-        "pify": "^3.0.0",
-        "slash": "^1.0.0"
+        "array-union": "^2.1.0",
+        "dir-glob": "^3.0.1",
+        "fast-glob": "^3.2.9",
+        "ignore": "^5.2.0",
+        "merge2": "^1.4.1",
+        "slash": "^3.0.0"
       },
       "dependencies": {
-        "pify": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+        "array-union": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+          "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
           "dev": true
         }
       }
@@ -7998,6 +9910,12 @@
         "ansi-regex": "^2.0.0"
       }
     },
+    "has-bigints": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+      "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+      "dev": true
+    },
     "has-binary2": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz",
@@ -8010,7 +9928,7 @@
         "isarray": {
           "version": "2.0.1",
           "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
-          "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=",
+          "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==",
           "dev": true
         }
       }
@@ -8018,7 +9936,7 @@
     "has-cors": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
-      "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=",
+      "integrity": "sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==",
       "dev": true
     },
     "has-flag": {
@@ -8026,12 +9944,30 @@
       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
       "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
     },
+    "has-property-descriptors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+      "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+      "dev": true,
+      "requires": {
+        "get-intrinsic": "^1.1.1"
+      }
+    },
     "has-symbols": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
-      "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
       "dev": true
     },
+    "has-tostringtag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+      "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+      "dev": true,
+      "requires": {
+        "has-symbols": "^1.0.2"
+      }
+    },
     "has-unicode": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
@@ -8042,7 +9978,7 @@
     "has-value": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
-      "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+      "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
       "dev": true,
       "requires": {
         "get-value": "^2.0.6",
@@ -8053,7 +9989,7 @@
     "has-values": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
-      "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+      "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
       "dev": true,
       "requires": {
         "is-number": "^3.0.0",
@@ -8063,7 +9999,7 @@
         "is-number": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
           "dev": true,
           "requires": {
             "kind-of": "^3.0.2"
@@ -8072,7 +10008,7 @@
             "kind-of": {
               "version": "3.2.2",
               "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
               "dev": true,
               "requires": {
                 "is-buffer": "^1.1.5"
@@ -8083,7 +10019,7 @@
         "kind-of": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
-          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+          "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
           "dev": true,
           "requires": {
             "is-buffer": "^1.1.5"
@@ -8146,7 +10082,7 @@
     "hmac-drbg": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
-      "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+      "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
       "dev": true,
       "requires": {
         "hash.js": "^1.0.3",
@@ -8161,9 +10097,9 @@
       "dev": true
     },
     "hosted-git-info": {
-      "version": "3.0.7",
-      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.7.tgz",
-      "integrity": "sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ==",
+      "version": "3.0.8",
+      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz",
+      "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==",
       "dev": true,
       "requires": {
         "lru-cache": "^6.0.0"
@@ -8183,7 +10119,7 @@
     "hpack.js": {
       "version": "2.1.6",
       "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
-      "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
+      "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==",
       "dev": true,
       "requires": {
         "inherits": "^2.0.1",
@@ -8195,19 +10131,13 @@
     "hsl-regex": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz",
-      "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=",
+      "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==",
       "dev": true
     },
     "hsla-regex": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz",
-      "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=",
-      "dev": true
-    },
-    "html-comment-regex": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz",
-      "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==",
+      "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==",
       "dev": true
     },
     "html-entities": {
@@ -8231,7 +10161,7 @@
     "http-deceiver": {
       "version": "1.2.7",
       "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
-      "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
+      "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==",
       "dev": true
     },
     "http-errors": {
@@ -8287,29 +10217,134 @@
           "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
           "dev": true,
           "requires": {
-            "ms": "2.0.0"
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+          "dev": true
+        }
+      }
+    },
+    "http-proxy-middleware": {
+      "version": "0.19.1",
+      "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
+      "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
+      "dev": true,
+      "requires": {
+        "http-proxy": "^1.17.0",
+        "is-glob": "^4.0.0",
+        "lodash": "^4.17.11",
+        "micromatch": "^3.1.10"
+      },
+      "dependencies": {
+        "braces": {
+          "version": "2.3.2",
+          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+          "dev": true,
+          "requires": {
+            "arr-flatten": "^1.1.0",
+            "array-unique": "^0.3.2",
+            "extend-shallow": "^2.0.1",
+            "fill-range": "^4.0.0",
+            "isobject": "^3.0.1",
+            "repeat-element": "^1.1.2",
+            "snapdragon": "^0.8.1",
+            "snapdragon-node": "^2.0.1",
+            "split-string": "^3.0.2",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+              "dev": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "fill-range": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+          "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
+          "dev": true,
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1",
+            "to-regex-range": "^2.1.0"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+              "dev": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
+        "is-number": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+          "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+              "dev": true,
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
+        "micromatch": {
+          "version": "3.1.10",
+          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+          "dev": true,
+          "requires": {
+            "arr-diff": "^4.0.0",
+            "array-unique": "^0.3.2",
+            "braces": "^2.3.1",
+            "define-property": "^2.0.2",
+            "extend-shallow": "^3.0.2",
+            "extglob": "^2.0.4",
+            "fragment-cache": "^0.2.1",
+            "kind-of": "^6.0.2",
+            "nanomatch": "^1.2.9",
+            "object.pick": "^1.3.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.2"
           }
         },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-          "dev": true
+        "to-regex-range": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+          "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
+          "dev": true,
+          "requires": {
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1"
+          }
         }
       }
     },
-    "http-proxy-middleware": {
-      "version": "0.19.1",
-      "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
-      "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
-      "dev": true,
-      "requires": {
-        "http-proxy": "^1.17.0",
-        "is-glob": "^4.0.0",
-        "lodash": "^4.17.11",
-        "micromatch": "^3.1.10"
-      }
-    },
     "http-signature": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
@@ -8324,7 +10359,7 @@
     "https-browserify": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
-      "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+      "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==",
       "dev": true
     },
     "https-proxy-agent": {
@@ -8351,7 +10386,7 @@
     "humanize-ms": {
       "version": "1.2.1",
       "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
-      "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=",
+      "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
       "dev": true,
       "requires": {
         "ms": "^2.0.0"
@@ -8366,6 +10401,15 @@
         "safer-buffer": ">= 2.1.2 < 3"
       }
     },
+    "icss-utils": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz",
+      "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.14"
+      }
+    },
     "idb": {
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz",
@@ -8380,19 +10424,19 @@
     "iferr": {
       "version": "0.1.5",
       "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
-      "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
+      "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==",
       "dev": true
     },
     "ignore": {
-      "version": "3.3.10",
-      "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
-      "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
+      "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
       "dev": true
     },
     "ignore-walk": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz",
-      "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==",
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz",
+      "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==",
       "dev": true,
       "requires": {
         "minimatch": "^3.0.4"
@@ -8401,20 +10445,20 @@
     "image-size": {
       "version": "0.5.5",
       "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
-      "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
+      "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
       "dev": true,
       "optional": true
     },
     "immediate": {
       "version": "3.0.6",
       "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
-      "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=",
+      "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
       "dev": true
     },
     "import-cwd": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
-      "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=",
+      "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==",
       "dev": true,
       "requires": {
         "import-from": "^2.1.0"
@@ -8423,7 +10467,7 @@
     "import-fresh": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
-      "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
+      "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==",
       "dev": true,
       "requires": {
         "caller-path": "^2.0.0",
@@ -8433,7 +10477,7 @@
     "import-from": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz",
-      "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=",
+      "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==",
       "dev": true,
       "requires": {
         "resolve-from": "^3.0.0"
@@ -8470,13 +10514,13 @@
     "indexes-of": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
-      "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
+      "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==",
       "dev": true
     },
     "indexof": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
-      "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
+      "integrity": "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==",
       "dev": true
     },
     "infer-owner": {
@@ -8657,6 +10701,14 @@
           "dev": true,
           "requires": {
             "tslib": "^1.9.0"
+          },
+          "dependencies": {
+            "tslib": {
+              "version": "1.14.1",
+              "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+              "dev": true
+            }
           }
         },
         "supports-color": {
@@ -8693,6 +10745,17 @@
         "ipaddr.js": "^1.9.0"
       }
     },
+    "internal-slot": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
+      "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
+      "dev": true,
+      "requires": {
+        "get-intrinsic": "^1.1.0",
+        "has": "^1.0.3",
+        "side-channel": "^1.0.4"
+      }
+    },
     "invariant": {
       "version": "2.2.4",
       "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
@@ -8702,22 +10765,16 @@
         "loose-envify": "^1.0.0"
       }
     },
-    "invert-kv": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
-      "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
-      "dev": true
-    },
     "ip": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
-      "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
+      "version": "1.1.8",
+      "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
+      "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==",
       "dev": true
     },
     "ip-regex": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
-      "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=",
+      "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==",
       "dev": true
     },
     "ipaddr.js": {
@@ -8729,13 +10786,13 @@
     "is-absolute-url": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz",
-      "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=",
+      "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==",
       "dev": true
     },
     "is-accessor-descriptor": {
       "version": "0.1.6",
       "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
-      "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+      "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
       "dev": true,
       "requires": {
         "kind-of": "^3.0.2"
@@ -8744,7 +10801,7 @@
         "kind-of": {
           "version": "3.2.2",
           "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
           "dev": true,
           "requires": {
             "is-buffer": "^1.1.5"
@@ -8753,20 +10810,30 @@
       }
     },
     "is-arguments": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz",
-      "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==",
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+      "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
       "dev": true,
       "requires": {
-        "call-bind": "^1.0.0"
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
       }
     },
     "is-arrayish": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
-      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+      "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
       "dev": true
     },
+    "is-bigint": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+      "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+      "dev": true,
+      "requires": {
+        "has-bigints": "^1.0.1"
+      }
+    },
     "is-binary-path": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -8776,6 +10843,16 @@
         "binary-extensions": "^2.0.0"
       }
     },
+    "is-boolean-object": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+      "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
+      }
+    },
     "is-buffer": {
       "version": "1.1.6",
       "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
@@ -8783,9 +10860,9 @@
       "dev": true
     },
     "is-callable": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz",
-      "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==",
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
+      "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
       "dev": true
     },
     "is-ci": {
@@ -8800,7 +10877,7 @@
     "is-color-stop": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz",
-      "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=",
+      "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==",
       "dev": true,
       "requires": {
         "css-color-names": "^0.0.4",
@@ -8822,7 +10899,7 @@
     "is-data-descriptor": {
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
-      "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+      "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
       "dev": true,
       "requires": {
         "kind-of": "^3.0.2"
@@ -8831,7 +10908,7 @@
         "kind-of": {
           "version": "3.2.2",
           "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
           "dev": true,
           "requires": {
             "is-buffer": "^1.1.5"
@@ -8840,10 +10917,13 @@
       }
     },
     "is-date-object": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
-      "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
-      "dev": true
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+      "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+      "dev": true,
+      "requires": {
+        "has-tostringtag": "^1.0.0"
+      }
     },
     "is-descriptor": {
       "version": "0.1.6",
@@ -8867,7 +10947,7 @@
     "is-directory": {
       "version": "0.3.1",
       "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
-      "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
+      "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==",
       "dev": true
     },
     "is-docker": {
@@ -8879,7 +10959,7 @@
     "is-extendable": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
-      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+      "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
       "dev": true
     },
     "is-extglob": {
@@ -8928,9 +11008,9 @@
       "dev": true
     },
     "is-negative-zero": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
-      "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==",
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+      "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
       "dev": true
     },
     "is-npm": {
@@ -8945,6 +11025,15 @@
       "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
       "dev": true
     },
+    "is-number-object": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+      "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+      "dev": true,
+      "requires": {
+        "has-tostringtag": "^1.0.0"
+      }
+    },
     "is-obj": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
@@ -8978,7 +11067,7 @@
     "is-plain-obj": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
-      "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+      "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
       "dev": true
     },
     "is-plain-object": {
@@ -8997,12 +11086,13 @@
       "dev": true
     },
     "is-regex": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz",
-      "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==",
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+      "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
       "dev": true,
       "requires": {
-        "has-symbols": "^1.0.1"
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
       }
     },
     "is-resolvable": {
@@ -9011,6 +11101,15 @@
       "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
       "dev": true
     },
+    "is-shared-array-buffer": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+      "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2"
+      }
+    },
     "is-stream": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
@@ -9023,22 +11122,22 @@
       "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==",
       "dev": true
     },
-    "is-svg": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz",
-      "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==",
+    "is-string": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+      "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
       "dev": true,
       "requires": {
-        "html-comment-regex": "^1.1.0"
+        "has-tostringtag": "^1.0.0"
       }
     },
     "is-symbol": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
-      "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+      "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
       "dev": true,
       "requires": {
-        "has-symbols": "^1.0.1"
+        "has-symbols": "^1.0.2"
       }
     },
     "is-typedarray": {
@@ -9047,12 +11146,33 @@
       "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
       "dev": true
     },
+    "is-unicode-supported": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+      "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+      "dev": true
+    },
     "is-url": {
       "version": "1.2.4",
       "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
       "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==",
       "dev": true
     },
+    "is-weakref": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+      "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2"
+      }
+    },
+    "is-what": {
+      "version": "3.14.1",
+      "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz",
+      "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
+      "dev": true
+    },
     "is-windows": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
@@ -9100,13 +11220,10 @@
       "dev": true
     },
     "isbinaryfile": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz",
-      "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==",
-      "dev": true,
-      "requires": {
-        "buffer-alloc": "^1.2.0"
-      }
+      "version": "4.0.10",
+      "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz",
+      "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==",
+      "dev": true
     },
     "isexe": {
       "version": "2.0.0",
@@ -9117,7 +11234,7 @@
     "isobject": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+      "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
       "dev": true
     },
     "isstream": {
@@ -9126,65 +11243,12 @@
       "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
       "dev": true
     },
-    "istanbul-api": {
-      "version": "2.1.7",
-      "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.7.tgz",
-      "integrity": "sha512-LYTOa2UrYFyJ/aSczZi/6lBykVMjCCvUmT64gOe+jPZFy4w6FYfPGqFT2IiQ2BxVHHDOvCD7qrIXb0EOh4uGWw==",
-      "dev": true,
-      "requires": {
-        "async": "^2.6.2",
-        "compare-versions": "^3.4.0",
-        "fileset": "^2.0.3",
-        "istanbul-lib-coverage": "^2.0.5",
-        "istanbul-lib-hook": "^2.0.7",
-        "istanbul-lib-instrument": "^3.3.0",
-        "istanbul-lib-report": "^2.0.8",
-        "istanbul-lib-source-maps": "^3.0.6",
-        "istanbul-reports": "^2.2.5",
-        "js-yaml": "^3.13.1",
-        "make-dir": "^2.1.0",
-        "minimatch": "^3.0.4",
-        "once": "^1.4.0"
-      },
-      "dependencies": {
-        "istanbul-lib-coverage": {
-          "version": "2.0.5",
-          "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz",
-          "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==",
-          "dev": true
-        },
-        "istanbul-lib-instrument": {
-          "version": "3.3.0",
-          "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz",
-          "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==",
-          "dev": true,
-          "requires": {
-            "@babel/generator": "^7.4.0",
-            "@babel/parser": "^7.4.3",
-            "@babel/template": "^7.4.0",
-            "@babel/traverse": "^7.4.3",
-            "@babel/types": "^7.4.0",
-            "istanbul-lib-coverage": "^2.0.5",
-            "semver": "^6.0.0"
-          }
-        }
-      }
-    },
     "istanbul-lib-coverage": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz",
-      "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==",
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
+      "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
       "dev": true
     },
-    "istanbul-lib-hook": {
-      "version": "2.0.7",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz",
-      "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==",
-      "dev": true,
-      "requires": {
-        "append-transform": "^1.0.0"
-      }
-    },
     "istanbul-lib-instrument": {
       "version": "4.0.3",
       "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
@@ -9198,29 +11262,38 @@
       }
     },
     "istanbul-lib-report": {
-      "version": "2.0.8",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz",
-      "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+      "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
       "dev": true,
       "requires": {
-        "istanbul-lib-coverage": "^2.0.5",
-        "make-dir": "^2.1.0",
-        "supports-color": "^6.1.0"
+        "istanbul-lib-coverage": "^3.0.0",
+        "make-dir": "^3.0.0",
+        "supports-color": "^7.1.0"
       },
       "dependencies": {
-        "istanbul-lib-coverage": {
-          "version": "2.0.5",
-          "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz",
-          "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==",
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
           "dev": true
         },
+        "make-dir": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+          "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+          "dev": true,
+          "requires": {
+            "semver": "^6.0.0"
+          }
+        },
         "supports-color": {
-          "version": "6.1.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
           "dev": true,
           "requires": {
-            "has-flag": "^3.0.0"
+            "has-flag": "^4.0.0"
           }
         }
       }
@@ -9262,18 +11335,19 @@
       }
     },
     "istanbul-reports": {
-      "version": "2.2.7",
-      "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz",
-      "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==",
+      "version": "3.1.4",
+      "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz",
+      "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==",
       "dev": true,
       "requires": {
-        "html-escaper": "^2.0.0"
+        "html-escaper": "^2.0.0",
+        "istanbul-lib-report": "^3.0.0"
       }
     },
     "jasmine": {
       "version": "2.8.0",
       "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz",
-      "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=",
+      "integrity": "sha512-KbdGQTf5jbZgltoHs31XGiChAPumMSY64OZMWLNYnEnMfG5uwGBhffePwuskexjT+/Jea/gU3qAU8344hNohSw==",
       "dev": true,
       "requires": {
         "exit": "^0.1.2",
@@ -9284,7 +11358,7 @@
         "jasmine-core": {
           "version": "2.8.0",
           "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz",
-          "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=",
+          "integrity": "sha512-SNkOkS+/jMZvLhuSx1fjhcNWUC/KG6oVyFUGkSBEr9n1axSNduWU8GlI7suaHXr4yxjet6KjrUZxUTE5WzzWwQ==",
           "dev": true
         }
       }
@@ -9296,37 +11370,44 @@
       "dev": true
     },
     "jasmine-spec-reporter": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz",
-      "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==",
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-5.0.2.tgz",
+      "integrity": "sha512-6gP1LbVgJ+d7PKksQBc2H0oDGNRQI3gKUsWlswKaQ2fif9X5gzhQcgM5+kiJGCQVurOG09jqNhk7payggyp5+g==",
       "dev": true,
       "requires": {
-        "colors": "1.1.2"
+        "colors": "1.4.0"
       }
     },
     "jasminewd2": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz",
-      "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=",
+      "integrity": "sha512-Rn0nZe4rfDhzA63Al3ZGh0E+JTmM6ESZYXJGKuqKGZObsAB9fwXPD03GjtIEvJBDOhN94T5MzbwZSqzFHSQPzg==",
       "dev": true
     },
     "jest-worker": {
-      "version": "24.9.0",
-      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
-      "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
+      "version": "26.3.0",
+      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.3.0.tgz",
+      "integrity": "sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw==",
       "dev": true,
       "requires": {
+        "@types/node": "*",
         "merge-stream": "^2.0.0",
-        "supports-color": "^6.1.0"
+        "supports-color": "^7.0.0"
       },
       "dependencies": {
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true
+        },
         "supports-color": {
-          "version": "6.1.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
           "dev": true,
           "requires": {
-            "has-flag": "^3.0.0"
+            "has-flag": "^4.0.0"
           }
         }
       }
@@ -9348,12 +11429,6 @@
         "valid-url": "^1"
       }
     },
-    "js-levenshtein": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
-      "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==",
-      "dev": true
-    },
     "js-tokens": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -9457,13 +11532,16 @@
       "dev": true
     },
     "json5": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
-      "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
-      "dev": true,
-      "requires": {
-        "minimist": "^1.2.0"
-      }
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
+      "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
+      "dev": true
+    },
+    "jsonc-parser": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.0.tgz",
+      "integrity": "sha512-b0EBt8SWFNnixVdvoR2ZtEGa9ZqLhbJnOjezn+WP+8kspFm+PFYDN8Z4Bc7pRlDjvuVcADSUkroIuTWWn/YiIA==",
+      "dev": true
     },
     "jsonfile": {
       "version": "4.0.0",
@@ -9546,15 +11624,15 @@
       }
     },
     "jszip": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz",
-      "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==",
+      "version": "3.10.0",
+      "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.0.tgz",
+      "integrity": "sha512-LDfVtOLtOxb9RXkYOwPyNBTQDL4eUbqahtoY6x07GiDJHwSYvn8sHHIw8wINImV3MqbMNve2gSuM1DDqEKk09Q==",
       "dev": true,
       "requires": {
         "lie": "~3.3.0",
         "pako": "~1.0.2",
         "readable-stream": "~2.3.6",
-        "set-immediate-shim": "~1.0.1"
+        "setimmediate": "^1.0.5"
       }
     },
     "jwa": {
@@ -9577,50 +11655,72 @@
       }
     },
     "karma": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/karma/-/karma-4.3.0.tgz",
-      "integrity": "sha512-NSPViHOt+RW38oJklvYxQC4BSQsv737oQlr/r06pCM+slDOr4myuI1ivkRmp+3dVpJDfZt2DmaPJ2wkx+ZZuMQ==",
+      "version": "5.0.9",
+      "resolved": "https://registry.npmjs.org/karma/-/karma-5.0.9.tgz",
+      "integrity": "sha512-dUA5z7Lo7G4FRSe1ZAXqOINEEWxmCjDBbfRBmU/wYlSMwxUQJP/tEEP90yJt3Uqo03s9rCgVnxtlfq+uDhxSPg==",
       "dev": true,
       "requires": {
-        "bluebird": "^3.3.0",
-        "body-parser": "^1.16.1",
+        "body-parser": "^1.19.0",
         "braces": "^3.0.2",
         "chokidar": "^3.0.0",
-        "colors": "^1.1.0",
-        "connect": "^3.6.0",
-        "core-js": "^3.1.3",
+        "colors": "^1.4.0",
+        "connect": "^3.7.0",
         "di": "^0.0.1",
-        "dom-serialize": "^2.2.0",
-        "flatted": "^2.0.0",
-        "glob": "^7.1.1",
-        "graceful-fs": "^4.1.2",
-        "http-proxy": "^1.13.0",
-        "isbinaryfile": "^3.0.0",
-        "lodash": "^4.17.14",
-        "log4js": "^4.0.0",
-        "mime": "^2.3.1",
-        "minimatch": "^3.0.2",
-        "optimist": "^0.6.1",
-        "qjobs": "^1.1.4",
-        "range-parser": "^1.2.0",
-        "rimraf": "^2.6.0",
-        "safe-buffer": "^5.0.1",
-        "socket.io": "2.1.1",
+        "dom-serialize": "^2.2.1",
+        "flatted": "^2.0.2",
+        "glob": "^7.1.6",
+        "graceful-fs": "^4.2.4",
+        "http-proxy": "^1.18.1",
+        "isbinaryfile": "^4.0.6",
+        "lodash": "^4.17.15",
+        "log4js": "^6.2.1",
+        "mime": "^2.4.5",
+        "minimatch": "^3.0.4",
+        "qjobs": "^1.2.0",
+        "range-parser": "^1.2.1",
+        "rimraf": "^3.0.2",
+        "socket.io": "^2.3.0",
         "source-map": "^0.6.1",
-        "tmp": "0.0.33",
-        "useragent": "2.3.0"
+        "tmp": "0.2.1",
+        "ua-parser-js": "0.7.21",
+        "yargs": "^15.3.1"
       },
       "dependencies": {
+        "glob": {
+          "version": "7.2.3",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+          "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+          "dev": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.1.1",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          },
+          "dependencies": {
+            "minimatch": {
+              "version": "3.1.2",
+              "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+              "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+              "dev": true,
+              "requires": {
+                "brace-expansion": "^1.1.7"
+              }
+            }
+          }
+        },
         "mime": {
-          "version": "2.5.0",
-          "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz",
-          "integrity": "sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==",
+          "version": "2.6.0",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
+          "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
           "dev": true
         },
         "rimraf": {
-          "version": "2.7.1",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
           "dev": true,
           "requires": {
             "glob": "^7.1.3"
@@ -9631,6 +11731,15 @@
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
           "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true
+        },
+        "tmp": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
+          "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
+          "dev": true,
+          "requires": {
+            "rimraf": "^3.0.0"
+          }
         }
       }
     },
@@ -9644,22 +11753,33 @@
       }
     },
     "karma-coverage-istanbul-reporter": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.1.1.tgz",
-      "integrity": "sha512-CH8lTi8+kKXGvrhy94+EkEMldLCiUA0xMOiL31vvli9qK0T+qcXJAwWBRVJWnVWxYkTmyWar8lPz63dxX6/z1A==",
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-3.0.3.tgz",
+      "integrity": "sha512-wE4VFhG/QZv2Y4CdAYWDbMmcAHeS926ZIji4z+FkB2aF/EposRb6DP6G5ncT/wXhqUfAb/d7kZrNKPonbvsATw==",
       "dev": true,
       "requires": {
-        "istanbul-api": "^2.1.6",
+        "istanbul-lib-coverage": "^3.0.0",
+        "istanbul-lib-report": "^3.0.0",
+        "istanbul-lib-source-maps": "^3.0.6",
+        "istanbul-reports": "^3.0.2",
         "minimatch": "^3.0.4"
       }
     },
     "karma-jasmine": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-2.0.1.tgz",
-      "integrity": "sha512-iuC0hmr9b+SNn1DaUD2QEYtUxkS1J+bSJSn7ejdEexs7P8EYvA1CWkEdrDQ+8jVH3AgWlCNwjYsT1chjcNW9lA==",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.2.tgz",
+      "integrity": "sha512-ggi84RMNQffSDmWSyyt4zxzh2CQGwsxvYYsprgyR1j8ikzIduEdOlcLvXjZGwXG/0j41KUXOWsUCBfbEHPWP9g==",
       "dev": true,
       "requires": {
-        "jasmine-core": "^3.3"
+        "jasmine-core": "^3.6.0"
+      },
+      "dependencies": {
+        "jasmine-core": {
+          "version": "3.99.1",
+          "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.99.1.tgz",
+          "integrity": "sha512-Hu1dmuoGcZ7AfyynN3LsfruwMbxMALMka+YtZeGoLuDEySVmVAPaonkNoBRIw/ectu8b9tVQCJNgp4a4knp+tg==",
+          "dev": true
+        }
       }
     },
     "karma-jasmine-html-reporter": {
@@ -9698,6 +11818,12 @@
       "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
       "dev": true
     },
+    "klona": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz",
+      "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==",
+      "dev": true
+    },
     "kuler": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz",
@@ -9722,30 +11848,21 @@
         "readable-stream": "^2.0.5"
       }
     },
-    "lcid": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
-      "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
-      "dev": true,
-      "requires": {
-        "invert-kv": "^2.0.0"
-      }
-    },
     "less": {
-      "version": "3.10.3",
-      "resolved": "https://registry.npmjs.org/less/-/less-3.10.3.tgz",
-      "integrity": "sha512-vz32vqfgmoxF1h3K4J+yKCtajH0PWmjkIFgbs5d78E/c/e+UQTnI+lWK+1eQRE95PXM2mC3rJlLSSP9VQHnaow==",
+      "version": "3.13.1",
+      "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz",
+      "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==",
       "dev": true,
       "requires": {
-        "clone": "^2.1.2",
+        "copy-anything": "^2.0.1",
         "errno": "^0.1.1",
         "graceful-fs": "^4.1.2",
         "image-size": "~0.5.0",
+        "make-dir": "^2.1.0",
         "mime": "^1.4.1",
-        "mkdirp": "^0.5.0",
-        "promise": "^7.1.1",
-        "request": "^2.83.0",
-        "source-map": "~0.6.0"
+        "native-request": "^1.0.5",
+        "source-map": "~0.6.0",
+        "tslib": "^1.10.0"
       },
       "dependencies": {
         "source-map": {
@@ -9754,18 +11871,25 @@
           "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true,
           "optional": true
+        },
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+          "dev": true
         }
       }
     },
     "less-loader": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-5.0.0.tgz",
-      "integrity": "sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg==",
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-6.2.0.tgz",
+      "integrity": "sha512-Cl5h95/Pz/PWub/tCBgT1oNMFeH1WTD33piG80jn5jr12T4XbxZcjThwNXDQ7AG649WEynuIzO4b0+2Tn9Qolg==",
       "dev": true,
       "requires": {
-        "clone": "^2.1.1",
-        "loader-utils": "^1.1.0",
-        "pify": "^4.0.1"
+        "clone": "^2.1.2",
+        "less": "^3.11.3",
+        "loader-utils": "^2.0.0",
+        "schema-utils": "^2.7.0"
       }
     },
     "leven": {
@@ -9774,10 +11898,19 @@
       "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
       "dev": true
     },
+    "levenary": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz",
+      "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==",
+      "dev": true,
+      "requires": {
+        "leven": "^3.1.0"
+      }
+    },
     "license-webpack-plugin": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.3.tgz",
-      "integrity": "sha512-vTSY5r9HOq4sxR2BIxdIXWKI+9n3b+DoQkhKHedB3TdSxTfXUDRxKXdAj5iejR+qNXprXsxvEu9W+zOhgGIkAw==",
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.0.tgz",
+      "integrity": "sha512-JK/DXrtN6UeYQSgkg5q1+pgJ8aiKPL9tnz9Wzw+Ikkf+8mJxG56x6t8O+OH/tAeF/5NREnelTEMyFtbJNkjH4w==",
       "dev": true,
       "requires": {
         "@types/webpack-sources": "^0.1.5",
@@ -9806,14 +11939,14 @@
       "dev": true
     },
     "loader-utils": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
-      "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
+      "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
       "dev": true,
       "requires": {
         "big.js": "^5.2.2",
-        "emojis-list": "^2.0.0",
-        "json5": "^1.0.1"
+        "emojis-list": "^3.0.0",
+        "json5": "^2.1.2"
       }
     },
     "locate-path": {
@@ -9866,7 +11999,7 @@
     "lodash.clonedeep": {
       "version": "4.5.0",
       "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
-      "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
+      "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
       "dev": true
     },
     "lodash.defaults": {
@@ -9958,7 +12091,7 @@
     "lodash.memoize": {
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
-      "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
+      "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
       "dev": true
     },
     "lodash.once": {
@@ -9988,7 +12121,7 @@
     "lodash.uniq": {
       "version": "4.5.0",
       "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
-      "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
+      "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
       "dev": true
     },
     "lodash.values": {
@@ -10001,25 +12134,94 @@
       }
     },
     "log-symbols": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz",
-      "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==",
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+      "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
       "dev": true,
       "requires": {
-        "chalk": "^2.4.2"
+        "chalk": "^4.1.0",
+        "is-unicode-supported": "^0.1.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
       }
     },
     "log4js": {
-      "version": "4.5.1",
-      "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.5.1.tgz",
-      "integrity": "sha512-EEEgFcE9bLgaYUKuozyFfytQM2wDHtXn4tAN41pkaxpNjAykv11GVdeI4tHtmPWW4Xrgh9R/2d7XYghDVjbKKw==",
+      "version": "6.6.0",
+      "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.6.0.tgz",
+      "integrity": "sha512-3v8R7fd45UB6THucSht6wN2/7AZEruQbXdjygPZcxt5TA/msO6si9CN5MefUuKXbYnJHTBnYcx4famwcyQd+sA==",
       "dev": true,
       "requires": {
-        "date-format": "^2.0.0",
-        "debug": "^4.1.1",
-        "flatted": "^2.0.0",
-        "rfdc": "^1.1.4",
-        "streamroller": "^1.0.6"
+        "date-format": "^4.0.11",
+        "debug": "^4.3.4",
+        "flatted": "^3.2.5",
+        "rfdc": "^1.3.0",
+        "streamroller": "^3.1.1"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.3.4",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+          "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+          "dev": true,
+          "requires": {
+            "ms": "2.1.2"
+          }
+        },
+        "flatted": {
+          "version": "3.2.6",
+          "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz",
+          "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==",
+          "dev": true
+        }
       }
     },
     "logform": {
@@ -10044,9 +12246,9 @@
       }
     },
     "loglevel": {
-      "version": "1.7.1",
-      "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz",
-      "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==",
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz",
+      "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==",
       "dev": true
     },
     "long": {
@@ -10185,9 +12387,9 @@
           }
         },
         "ssri": {
-          "version": "6.0.1",
-          "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
-          "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
+          "version": "6.0.2",
+          "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz",
+          "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
           "dev": true,
           "requires": {
             "figgy-pudding": "^3.5.1"
@@ -10195,31 +12397,16 @@
         }
       }
     },
-    "mamacro": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz",
-      "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==",
-      "dev": true
-    },
-    "map-age-cleaner": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
-      "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
-      "dev": true,
-      "requires": {
-        "p-defer": "^1.0.0"
-      }
-    },
     "map-cache": {
       "version": "0.2.2",
       "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
-      "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+      "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
       "dev": true
     },
     "map-visit": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
-      "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+      "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
       "dev": true,
       "requires": {
         "object-visit": "^1.0.0"
@@ -10268,188 +12455,96 @@
       "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
       "dev": true
     },
-    "mem": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
-      "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
-      "dev": true,
-      "requires": {
-        "map-age-cleaner": "^0.1.1",
-        "mimic-fn": "^2.0.0",
-        "p-is-promise": "^2.0.0"
-      }
-    },
     "memoizee": {
       "version": "0.4.15",
       "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz",
       "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==",
-      "dev": true,
-      "requires": {
-        "d": "^1.0.1",
-        "es5-ext": "^0.10.53",
-        "es6-weak-map": "^2.0.3",
-        "event-emitter": "^0.3.5",
-        "is-promise": "^2.2.2",
-        "lru-queue": "^0.1.0",
-        "next-tick": "^1.1.0",
-        "timers-ext": "^0.1.7"
-      },
-      "dependencies": {
-        "next-tick": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
-          "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
-          "dev": true
-        }
-      }
-    },
-    "memory-fs": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
-      "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
-      "dev": true,
-      "requires": {
-        "errno": "^0.1.3",
-        "readable-stream": "^2.0.1"
-      }
-    },
-    "merge-descriptors": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
-      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
-      "dev": true
-    },
-    "merge-source-map": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz",
-      "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==",
-      "dev": true,
-      "requires": {
-        "source-map": "^0.6.1"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "merge-stream": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
-      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
-      "dev": true
-    },
-    "methods": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
-      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
-      "dev": true
-    },
-    "micromatch": {
-      "version": "3.1.10",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-      "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-      "dev": true,
-      "requires": {
-        "arr-diff": "^4.0.0",
-        "array-unique": "^0.3.2",
-        "braces": "^2.3.1",
-        "define-property": "^2.0.2",
-        "extend-shallow": "^3.0.2",
-        "extglob": "^2.0.4",
-        "fragment-cache": "^0.2.1",
-        "kind-of": "^6.0.2",
-        "nanomatch": "^1.2.9",
-        "object.pick": "^1.3.0",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.2"
-      },
-      "dependencies": {
-        "braces": {
-          "version": "2.3.2",
-          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-          "dev": true,
-          "requires": {
-            "arr-flatten": "^1.1.0",
-            "array-unique": "^0.3.2",
-            "extend-shallow": "^2.0.1",
-            "fill-range": "^4.0.0",
-            "isobject": "^3.0.1",
-            "repeat-element": "^1.1.2",
-            "snapdragon": "^0.8.1",
-            "snapdragon-node": "^2.0.1",
-            "split-string": "^3.0.2",
-            "to-regex": "^3.0.1"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-              "dev": true,
-              "requires": {
-                "is-extendable": "^0.1.0"
-              }
-            }
-          }
-        },
-        "fill-range": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-          "dev": true,
-          "requires": {
-            "extend-shallow": "^2.0.1",
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1",
-            "to-regex-range": "^2.1.0"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-              "dev": true,
-              "requires": {
-                "is-extendable": "^0.1.0"
-              }
-            }
-          }
-        },
-        "is-number": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-          "dev": true,
-          "requires": {
-            "kind-of": "^3.0.2"
-          },
-          "dependencies": {
-            "kind-of": {
-              "version": "3.2.2",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-              "dev": true,
-              "requires": {
-                "is-buffer": "^1.1.5"
-              }
-            }
-          }
-        },
-        "to-regex-range": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-          "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
-          "dev": true,
-          "requires": {
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1"
-          }
+      "dev": true,
+      "requires": {
+        "d": "^1.0.1",
+        "es5-ext": "^0.10.53",
+        "es6-weak-map": "^2.0.3",
+        "event-emitter": "^0.3.5",
+        "is-promise": "^2.2.2",
+        "lru-queue": "^0.1.0",
+        "next-tick": "^1.1.0",
+        "timers-ext": "^0.1.7"
+      },
+      "dependencies": {
+        "next-tick": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
+          "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
+          "dev": true
+        }
+      }
+    },
+    "memory-fs": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
+      "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
+      "dev": true,
+      "requires": {
+        "errno": "^0.1.3",
+        "readable-stream": "^2.0.1"
+      }
+    },
+    "merge-descriptors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
+      "dev": true
+    },
+    "merge-source-map": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz",
+      "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==",
+      "dev": true,
+      "requires": {
+        "source-map": "^0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
+    "merge-stream": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+      "dev": true
+    },
+    "merge2": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+      "dev": true
+    },
+    "methods": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+      "dev": true
+    },
+    "micromatch": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+      "dev": true,
+      "requires": {
+        "braces": "^3.0.2",
+        "picomatch": "^2.3.1"
+      },
+      "dependencies": {
+        "picomatch": {
+          "version": "2.3.1",
+          "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+          "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+          "dev": true
         }
       }
     },
@@ -10464,9 +12559,9 @@
       },
       "dependencies": {
         "bn.js": {
-          "version": "4.11.9",
-          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
-          "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
           "dev": true
         }
       }
@@ -10505,9 +12600,9 @@
       "dev": true
     },
     "mini-css-extract-plugin": {
-      "version": "0.8.0",
-      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz",
-      "integrity": "sha512-MNpRGbNA52q6U92i0qbVpQNsgk7LExy41MdAlG84FeytfDOtRIf/mCHdEgG8rpTKOaNKiqUnZdlptF469hxqOw==",
+      "version": "0.10.0",
+      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.10.0.tgz",
+      "integrity": "sha512-QgKgJBjaJhxVPwrLNqqwNS0AGkuQQ31Hp4xGXEK/P7wehEg6qmNtReHKai3zRXqY60wGVWLYcOMJK2b98aGc3A==",
       "dev": true,
       "requires": {
         "loader-utils": "^1.1.0",
@@ -10516,10 +12611,30 @@
         "webpack-sources": "^1.1.0"
       },
       "dependencies": {
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        },
         "normalize-url": {
           "version": "1.9.1",
           "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
-          "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
+          "integrity": "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==",
           "dev": true,
           "requires": {
             "object-assign": "^4.0.1",
@@ -10527,6 +12642,17 @@
             "query-string": "^4.1.0",
             "sort-keys": "^1.0.0"
           }
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
         }
       }
     },
@@ -10539,7 +12665,7 @@
     "minimalistic-crypto-utils": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
-      "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+      "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==",
       "dev": true
     },
     "minimatch": {
@@ -10706,7 +12832,7 @@
     "move-concurrently": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
-      "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
+      "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==",
       "dev": true,
       "requires": {
         "aproba": "^1.1.1",
@@ -10746,7 +12872,7 @@
     "multicast-dns-service-types": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
-      "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
+      "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==",
       "dev": true
     },
     "mute-stream": {
@@ -10801,6 +12927,13 @@
         }
       }
     },
+    "native-request": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.1.0.tgz",
+      "integrity": "sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw==",
+      "dev": true,
+      "optional": true
+    },
     "negotiator": {
       "version": "0.6.2",
       "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
@@ -10825,6 +12958,13 @@
       "integrity": "sha512-7swEdaoXIZ1E6zfUpFfIJYNerPGBz47XRCa0ReyFGbj785LJPAOlTeo7t8CRzMI/ACKhHD/Y1IQatlwQkI2shg==",
       "requires": {
         "tslib": "^1.10.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+        }
       }
     },
     "ng-waveform": {
@@ -10833,6 +12973,13 @@
       "integrity": "sha512-pGaxEro60TrvnrKJYj8i8Mq4arY/kU8wl7XYUwX+LOzGjrwsWL/5jnQAnW1bHQzrs4LmoDRybjj77nQH0WdS8A==",
       "requires": {
         "tslib": "^1.9.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+        }
       }
     },
     "ng2-pdf-viewer": {
@@ -10843,6 +12990,13 @@
         "@types/pdfjs-dist": "~2.1.7",
         "pdfjs-dist": "~2.5.207",
         "tslib": "^1.10.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+        }
       }
     },
     "ngx-countdown": {
@@ -10881,6 +13035,13 @@
       "integrity": "sha512-fRfMJEngKuPS9b+6qH0e3FylpJy/ejoG2whySZWzKGxhbPFs4cPje3J7QZHQDYSK725GR+Dw/s0z/U43c6ZJnw==",
       "requires": {
         "tslib": "^1.7.1"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+        }
       }
     },
     "nice-try": {
@@ -11054,15 +13215,15 @@
         "punycode": {
           "version": "1.4.1",
           "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
-          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+          "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
           "dev": true
         }
       }
     },
     "node-releases": {
-      "version": "1.1.70",
-      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.70.tgz",
-      "integrity": "sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw==",
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
+      "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==",
       "dev": true
     },
     "nopt": {
@@ -11088,9 +13249,9 @@
       },
       "dependencies": {
         "hosted-git-info": {
-          "version": "2.8.8",
-          "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
-          "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==",
+          "version": "2.8.9",
+          "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+          "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
           "dev": true
         },
         "semver": {
@@ -11110,7 +13271,7 @@
     "normalize-range": {
       "version": "0.1.2",
       "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
-      "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
+      "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
       "dev": true
     },
     "normalize-url": {
@@ -11120,14 +13281,43 @@
       "dev": true
     },
     "npm-bundled": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz",
-      "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==",
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz",
+      "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==",
       "dev": true,
       "requires": {
         "npm-normalize-package-bin": "^1.0.1"
       }
     },
+    "npm-install-checks": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz",
+      "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==",
+      "dev": true,
+      "requires": {
+        "semver": "^7.1.1"
+      },
+      "dependencies": {
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
+        "semver": {
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        }
+      }
+    },
     "npm-normalize-package-bin": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
@@ -11135,28 +13325,33 @@
       "dev": true
     },
     "npm-package-arg": {
-      "version": "6.1.1",
-      "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz",
-      "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==",
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.0.1.tgz",
+      "integrity": "sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ==",
       "dev": true,
       "requires": {
-        "hosted-git-info": "^2.7.1",
-        "osenv": "^0.1.5",
-        "semver": "^5.6.0",
+        "hosted-git-info": "^3.0.2",
+        "semver": "^7.0.0",
         "validate-npm-package-name": "^3.0.0"
       },
       "dependencies": {
-        "hosted-git-info": {
-          "version": "2.8.8",
-          "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
-          "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==",
-          "dev": true
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
         },
         "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-          "dev": true
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
         }
       }
     },
@@ -11172,21 +13367,33 @@
       }
     },
     "npm-pick-manifest": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz",
-      "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==",
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz",
+      "integrity": "sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw==",
       "dev": true,
       "requires": {
-        "figgy-pudding": "^3.5.1",
-        "npm-package-arg": "^6.0.0",
-        "semver": "^5.4.1"
+        "npm-install-checks": "^4.0.0",
+        "npm-package-arg": "^8.0.0",
+        "semver": "^7.0.0"
       },
       "dependencies": {
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
         "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-          "dev": true
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
         }
       }
     },
@@ -11205,11 +13412,35 @@
         "safe-buffer": "^5.2.0"
       },
       "dependencies": {
+        "hosted-git-info": {
+          "version": "2.8.9",
+          "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+          "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+          "dev": true
+        },
+        "npm-package-arg": {
+          "version": "6.1.1",
+          "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz",
+          "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==",
+          "dev": true,
+          "requires": {
+            "hosted-git-info": "^2.7.1",
+            "osenv": "^0.1.5",
+            "semver": "^5.6.0",
+            "validate-npm-package-name": "^3.0.0"
+          }
+        },
         "safe-buffer": {
           "version": "5.2.1",
           "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
           "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
           "dev": true
+        },
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+          "dev": true
         }
       }
     },
@@ -11247,14 +13478,15 @@
     "num2fraction": {
       "version": "1.2.2",
       "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
-      "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
+      "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==",
       "dev": true
     },
     "number-is-nan": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
       "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
-      "dev": true
+      "dev": true,
+      "optional": true
     },
     "oauth-sign": {
       "version": "0.9.0",
@@ -11268,16 +13500,10 @@
       "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
       "dev": true
     },
-    "object-component": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
-      "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=",
-      "dev": true
-    },
     "object-copy": {
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
-      "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+      "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
       "dev": true,
       "requires": {
         "copy-descriptor": "^0.1.0",
@@ -11288,7 +13514,7 @@
         "define-property": {
           "version": "0.2.5",
           "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
           "dev": true,
           "requires": {
             "is-descriptor": "^0.1.0"
@@ -11297,7 +13523,7 @@
         "kind-of": {
           "version": "3.2.2",
           "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
           "dev": true,
           "requires": {
             "is-buffer": "^1.1.5"
@@ -11306,18 +13532,18 @@
       }
     },
     "object-inspect": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz",
-      "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==",
+      "version": "1.12.2",
+      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
+      "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
       "dev": true
     },
     "object-is": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz",
-      "integrity": "sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==",
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+      "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
       "dev": true,
       "requires": {
-        "call-bind": "^1.0.0",
+        "call-bind": "^1.0.2",
         "define-properties": "^1.1.3"
       }
     },
@@ -11330,7 +13556,7 @@
     "object-visit": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
-      "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+      "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
       "dev": true,
       "requires": {
         "isobject": "^3.0.0"
@@ -11349,35 +13575,35 @@
       }
     },
     "object.getownpropertydescriptors": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz",
-      "integrity": "sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==",
+      "version": "2.1.4",
+      "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz",
+      "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==",
       "dev": true,
       "requires": {
-        "call-bind": "^1.0.0",
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.18.0-next.1"
+        "array.prototype.reduce": "^1.0.4",
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.4",
+        "es-abstract": "^1.20.1"
       }
     },
     "object.pick": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
-      "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+      "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
       "dev": true,
       "requires": {
         "isobject": "^3.0.1"
       }
     },
     "object.values": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz",
-      "integrity": "sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==",
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz",
+      "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==",
       "dev": true,
       "requires": {
-        "call-bind": "^1.0.0",
+        "call-bind": "^1.0.2",
         "define-properties": "^1.1.3",
-        "es-abstract": "^1.18.0-next.1",
-        "has": "^1.0.3"
+        "es-abstract": "^1.19.1"
       }
     },
     "obuf": {
@@ -11455,93 +13681,111 @@
         "is-wsl": {
           "version": "1.1.0",
           "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
-          "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+          "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
+          "dev": true
+        }
+      }
+    },
+    "ora": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/ora/-/ora-5.0.0.tgz",
+      "integrity": "sha512-s26qdWqke2kjN/wC4dy+IQPBIMWBJlSU/0JZhk30ZDBLelW25rv66yutUWARMigpGPzcXHb+Nac5pNhN/WsARw==",
+      "dev": true,
+      "requires": {
+        "chalk": "^4.1.0",
+        "cli-cursor": "^3.1.0",
+        "cli-spinners": "^2.4.0",
+        "is-interactive": "^1.0.0",
+        "log-symbols": "^4.0.0",
+        "mute-stream": "0.0.8",
+        "strip-ansi": "^6.0.0",
+        "wcwidth": "^1.0.1"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+          "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
           "dev": true
-        }
-      }
-    },
-    "optimist": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
-      "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
-      "dev": true,
-      "requires": {
-        "minimist": "~0.0.1",
-        "wordwrap": "~0.0.2"
-      },
-      "dependencies": {
-        "minimist": {
-          "version": "0.0.10",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
-          "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
           "dev": true
-        }
-      }
-    },
-    "ora": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.2.tgz",
-      "integrity": "sha512-YUOZbamht5mfLxPmk4M35CD/5DuOkAacxlEUbStVXpBAt4fyhBf+vZHI/HRkI++QUp3sNoeA2Gw4C+hi4eGSig==",
-      "dev": true,
-      "requires": {
-        "chalk": "^2.4.2",
-        "cli-cursor": "^3.1.0",
-        "cli-spinners": "^2.2.0",
-        "is-interactive": "^1.0.0",
-        "log-symbols": "^3.0.0",
-        "strip-ansi": "^5.2.0",
-        "wcwidth": "^1.0.1"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+        },
+        "mute-stream": {
+          "version": "0.0.8",
+          "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+          "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
           "dev": true
         },
         "strip-ansi": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+          "version": "6.0.1",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+          "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
           "dev": true,
           "requires": {
-            "ansi-regex": "^4.1.0"
+            "ansi-regex": "^5.0.1"
+          }
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^4.0.0"
           }
         }
       }
     },
-    "original": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
-      "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
-      "dev": true,
-      "requires": {
-        "url-parse": "^1.4.3"
-      }
-    },
     "os-browserify": {
       "version": "0.3.0",
       "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
-      "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+      "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==",
       "dev": true
     },
     "os-homedir": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
-      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+      "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==",
       "dev": true
     },
-    "os-locale": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
-      "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
-      "dev": true,
-      "requires": {
-        "execa": "^1.0.0",
-        "lcid": "^2.0.0",
-        "mem": "^4.0.0"
-      }
-    },
     "os-tmpdir": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
@@ -11564,24 +13808,12 @@
       "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
       "dev": true
     },
-    "p-defer": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
-      "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
-      "dev": true
-    },
     "p-finally": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
       "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
       "dev": true
     },
-    "p-is-promise": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
-      "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
-      "dev": true
-    },
     "p-limit": {
       "version": "2.3.0",
       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
@@ -11601,9 +13833,9 @@
       }
     },
     "p-map": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
-      "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+      "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
       "dev": true,
       "requires": {
         "aggregate-error": "^3.0.0"
@@ -11637,9 +13869,9 @@
       }
     },
     "pacote": {
-      "version": "9.5.8",
-      "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.8.tgz",
-      "integrity": "sha512-0Tl8Oi/K0Lo4MZmH0/6IsT3gpGf9eEAznLXEQPKgPq7FscnbUOyopnVpwXlnQdIbCUaojWy1Wd7VMyqfVsRrIw==",
+      "version": "9.5.12",
+      "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.12.tgz",
+      "integrity": "sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ==",
       "dev": true,
       "requires": {
         "bluebird": "^3.5.3",
@@ -11656,6 +13888,7 @@
         "mississippi": "^3.0.0",
         "mkdirp": "^0.5.1",
         "normalize-package-data": "^2.4.0",
+        "npm-normalize-package-bin": "^1.0.0",
         "npm-package-arg": "^6.1.0",
         "npm-packlist": "^1.1.12",
         "npm-pick-manifest": "^3.0.0",
@@ -11696,6 +13929,12 @@
             "y18n": "^4.0.0"
           }
         },
+        "hosted-git-info": {
+          "version": "2.8.9",
+          "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+          "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+          "dev": true
+        },
         "minipass": {
           "version": "2.9.0",
           "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
@@ -11706,6 +13945,29 @@
             "yallist": "^3.0.0"
           }
         },
+        "npm-package-arg": {
+          "version": "6.1.1",
+          "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz",
+          "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==",
+          "dev": true,
+          "requires": {
+            "hosted-git-info": "^2.7.1",
+            "osenv": "^0.1.5",
+            "semver": "^5.6.0",
+            "validate-npm-package-name": "^3.0.0"
+          }
+        },
+        "npm-pick-manifest": {
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz",
+          "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==",
+          "dev": true,
+          "requires": {
+            "figgy-pudding": "^3.5.1",
+            "npm-package-arg": "^6.0.0",
+            "semver": "^5.4.1"
+          }
+        },
         "rimraf": {
           "version": "2.7.1",
           "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
@@ -11722,9 +13984,9 @@
           "dev": true
         },
         "ssri": {
-          "version": "6.0.1",
-          "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
-          "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
+          "version": "6.0.2",
+          "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz",
+          "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
           "dev": true,
           "requires": {
             "figgy-pudding": "^3.5.1"
@@ -11771,7 +14033,7 @@
     "parse-json": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
-      "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+      "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
       "dev": true,
       "requires": {
         "error-ex": "^1.3.1",
@@ -11779,28 +14041,31 @@
       }
     },
     "parse5": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz",
-      "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==",
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+      "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
       "dev": true
     },
-    "parseqs": {
-      "version": "0.0.5",
-      "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
-      "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
+    "parse5-htmlparser2-tree-adapter": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
+      "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
       "dev": true,
       "requires": {
-        "better-assert": "~1.0.0"
+        "parse5": "^6.0.1"
       }
     },
+    "parseqs": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz",
+      "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==",
+      "dev": true
+    },
     "parseuri": {
-      "version": "0.0.5",
-      "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
-      "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
-      "dev": true,
-      "requires": {
-        "better-assert": "~1.0.0"
-      }
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz",
+      "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==",
+      "dev": true
     },
     "parseurl": {
       "version": "1.3.3",
@@ -11811,7 +14076,7 @@
     "pascalcase": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
-      "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+      "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
       "dev": true
     },
     "path-browserify": {
@@ -11823,7 +14088,7 @@
     "path-dirname": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
-      "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+      "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==",
       "dev": true
     },
     "path-exists": {
@@ -11861,26 +14126,15 @@
       "dev": true
     },
     "path-type": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
-      "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
-      "dev": true,
-      "requires": {
-        "pify": "^3.0.0"
-      },
-      "dependencies": {
-        "pify": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
-          "dev": true
-        }
-      }
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+      "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+      "dev": true
     },
     "pbkdf2": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz",
-      "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==",
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz",
+      "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
       "dev": true,
       "requires": {
         "create-hash": "^1.1.2",
@@ -11901,6 +14155,12 @@
       "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
       "dev": true
     },
+    "picocolors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+      "dev": true
+    },
     "picomatch": {
       "version": "2.2.2",
       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
@@ -11956,6 +14216,15 @@
         }
       }
     },
+    "pnp-webpack-plugin": {
+      "version": "1.6.4",
+      "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz",
+      "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==",
+      "dev": true,
+      "requires": {
+        "ts-pnp": "^1.1.6"
+      }
+    },
     "portfinder": {
       "version": "1.0.28",
       "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz",
@@ -11981,13 +14250,13 @@
     "posix-character-classes": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
-      "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+      "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
       "dev": true
     },
     "postcss": {
-      "version": "7.0.21",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz",
-      "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==",
+      "version": "7.0.32",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+      "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
       "dev": true,
       "requires": {
         "chalk": "^2.4.2",
@@ -12021,34 +14290,6 @@
         "postcss": "^7.0.27",
         "postcss-selector-parser": "^6.0.2",
         "postcss-value-parser": "^4.0.2"
-      },
-      "dependencies": {
-        "postcss": {
-          "version": "7.0.35",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
-          "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
-          "dev": true,
-          "requires": {
-            "chalk": "^2.4.2",
-            "source-map": "^0.6.1",
-            "supports-color": "^6.1.0"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        },
-        "supports-color": {
-          "version": "6.1.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^3.0.0"
-          }
-        }
       }
     },
     "postcss-colormin": {
@@ -12166,6 +14407,39 @@
         "postcss": "^7.0.0",
         "postcss-load-config": "^2.0.0",
         "schema-utils": "^1.0.0"
+      },
+      "dependencies": {
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        }
       }
     },
     "postcss-merge-longhand": {
@@ -12300,6 +14574,47 @@
         }
       }
     },
+    "postcss-modules-extract-imports": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz",
+      "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.5"
+      }
+    },
+    "postcss-modules-local-by-default": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz",
+      "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==",
+      "dev": true,
+      "requires": {
+        "icss-utils": "^4.1.1",
+        "postcss": "^7.0.32",
+        "postcss-selector-parser": "^6.0.2",
+        "postcss-value-parser": "^4.1.0"
+      }
+    },
+    "postcss-modules-scope": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz",
+      "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.6",
+        "postcss-selector-parser": "^6.0.0"
+      }
+    },
+    "postcss-modules-values": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz",
+      "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==",
+      "dev": true,
+      "requires": {
+        "icss-utils": "^4.0.0",
+        "postcss": "^7.0.6"
+      }
+    },
     "postcss-normalize-charset": {
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz",
@@ -12515,24 +14830,21 @@
       }
     },
     "postcss-selector-parser": {
-      "version": "6.0.4",
-      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz",
-      "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==",
+      "version": "6.0.10",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
+      "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
       "dev": true,
       "requires": {
         "cssesc": "^3.0.0",
-        "indexes-of": "^1.0.1",
-        "uniq": "^1.0.1",
         "util-deprecate": "^1.0.2"
       }
     },
     "postcss-svgo": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz",
-      "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==",
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz",
+      "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==",
       "dev": true,
       "requires": {
-        "is-svg": "^3.0.0",
         "postcss": "^7.0.0",
         "postcss-value-parser": "^3.0.0",
         "svgo": "^1.0.0"
@@ -12558,21 +14870,21 @@
       }
     },
     "postcss-value-parser": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz",
-      "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==",
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+      "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
       "dev": true
     },
     "prepend-http": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
-      "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
+      "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==",
       "dev": true
     },
     "process": {
       "version": "0.11.10",
       "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
-      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+      "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
       "dev": true
     },
     "process-nextick-args": {
@@ -12587,16 +14899,6 @@
       "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
       "dev": true
     },
-    "promise": {
-      "version": "7.3.1",
-      "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
-      "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "asap": "~2.0.3"
-      }
-    },
     "promise-breaker": {
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/promise-breaker/-/promise-breaker-5.0.0.tgz",
@@ -12606,7 +14908,7 @@
     "promise-inflight": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
-      "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
+      "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
       "dev": true
     },
     "promise-polyfill": {
@@ -12617,7 +14919,7 @@
     "promise-retry": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz",
-      "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=",
+      "integrity": "sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw==",
       "dev": true,
       "requires": {
         "err-code": "^1.0.0",
@@ -12627,7 +14929,7 @@
         "retry": {
           "version": "0.10.1",
           "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz",
-          "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=",
+          "integrity": "sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==",
           "dev": true
         }
       }
@@ -12669,9 +14971,9 @@
       }
     },
     "protractor": {
-      "version": "5.4.4",
-      "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.4.tgz",
-      "integrity": "sha512-BaL4vePgu3Vfa/whvTUAlgaCAId4uNSGxIFSCXMgj7LMYENPWLp85h5RBi9pdpX/bWQ8SF6flP7afmi2TC4eHw==",
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz",
+      "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==",
       "dev": true,
       "requires": {
         "@types/q": "^0.0.32",
@@ -12687,26 +14989,26 @@
         "selenium-webdriver": "3.6.0",
         "source-map-support": "~0.4.0",
         "webdriver-js-extender": "2.1.0",
-        "webdriver-manager": "^12.0.6",
-        "yargs": "^12.0.5"
+        "webdriver-manager": "^12.1.7",
+        "yargs": "^15.3.1"
       },
       "dependencies": {
         "@types/q": {
           "version": "0.0.32",
           "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz",
-          "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=",
+          "integrity": "sha512-qYi3YV9inU/REEfxwVcGZzbS3KG/Xs90lv0Pr+lDtuVjBPGd1A+eciXzVSaRvLify132BfcvhvEjeVahrUl0Ug==",
           "dev": true
         },
         "ansi-styles": {
           "version": "2.2.1",
           "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
           "dev": true
         },
         "chalk": {
           "version": "1.1.3",
           "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
           "dev": true,
           "requires": {
             "ansi-styles": "^2.2.1",
@@ -12719,7 +15021,7 @@
         "del": {
           "version": "2.2.2",
           "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
-          "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
+          "integrity": "sha512-Z4fzpbIRjOu7lO5jCETSWoqUDVe0IPOlfugBsF6suen2LKDlVb4QZpKEM9P+buNJ4KI1eN7I083w/pbKUpsrWQ==",
           "dev": true,
           "requires": {
             "globby": "^5.0.0",
@@ -12734,7 +15036,7 @@
         "globby": {
           "version": "5.0.0",
           "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
-          "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
+          "integrity": "sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ==",
           "dev": true,
           "requires": {
             "array-union": "^1.0.1",
@@ -12748,7 +15050,7 @@
         "is-path-cwd": {
           "version": "1.0.0",
           "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
-          "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
+          "integrity": "sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==",
           "dev": true
         },
         "is-path-in-cwd": {
@@ -12763,7 +15065,7 @@
         "is-path-inside": {
           "version": "1.0.1",
           "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
-          "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
+          "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==",
           "dev": true,
           "requires": {
             "path-is-inside": "^1.0.1"
@@ -12772,13 +15074,13 @@
         "pify": {
           "version": "2.3.0",
           "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+          "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
           "dev": true
         },
         "q": {
           "version": "1.4.1",
           "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
-          "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=",
+          "integrity": "sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==",
           "dev": true
         },
         "rimraf": {
@@ -12799,7 +15101,7 @@
         "source-map": {
           "version": "0.5.7",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+          "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
           "dev": true
         },
         "source-map-support": {
@@ -12814,7 +15116,7 @@
         "supports-color": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+          "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
           "dev": true
         },
         "webdriver-manager": {
@@ -12851,13 +15153,7 @@
     "prr": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
-      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
-      "dev": true
-    },
-    "pseudomap": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
-      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+      "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
       "dev": true
     },
     "psl": {
@@ -12881,9 +15177,9 @@
       },
       "dependencies": {
         "bn.js": {
-          "version": "4.11.9",
-          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
-          "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
           "dev": true
         }
       }
@@ -12939,7 +15235,7 @@
     "q": {
       "version": "1.5.1",
       "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
-      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+      "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==",
       "dev": true
     },
     "qjobs": {
@@ -12957,7 +15253,7 @@
     "query-string": {
       "version": "4.3.4",
       "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz",
-      "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=",
+      "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==",
       "dev": true,
       "requires": {
         "object-assign": "^4.1.0",
@@ -12967,13 +15263,13 @@
     "querystring": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
-      "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+      "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==",
       "dev": true
     },
     "querystring-es3": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
-      "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+      "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==",
       "dev": true
     },
     "querystringify": {
@@ -12982,6 +15278,12 @@
       "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
       "dev": true
     },
+    "queue-microtask": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+      "dev": true
+    },
     "randombytes": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -13020,54 +15322,23 @@
       },
       "dependencies": {
         "bytes": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
-          "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
-          "dev": true
-        }
-      }
-    },
-    "raw-loader": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-3.1.0.tgz",
-      "integrity": "sha512-lzUVMuJ06HF4rYveaz9Tv0WRlUMxJ0Y1hgSkkgg+50iEdaI0TthyEDe08KIHb0XsF6rn8WYTqPCaGTZg3sX+qA==",
-      "dev": true,
-      "requires": {
-        "loader-utils": "^1.1.0",
-        "schema-utils": "^2.0.1"
-      },
-      "dependencies": {
-        "ajv": {
-          "version": "6.12.6",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
-          }
-        },
-        "fast-deep-equal": {
-          "version": "3.1.3",
-          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-          "dev": true
-        },
-        "schema-utils": {
-          "version": "2.7.1",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
-          "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
-          "dev": true,
-          "requires": {
-            "@types/json-schema": "^7.0.5",
-            "ajv": "^6.12.4",
-            "ajv-keywords": "^3.5.2"
-          }
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+          "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
+          "dev": true
         }
       }
     },
+    "raw-loader": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.1.tgz",
+      "integrity": "sha512-baolhQBSi3iNh1cglJjA0mYzga+wePk7vdEX//1dTFd+v4TsQlQE0jitJSNF1OIP82rdYulH7otaVmdlDaJ64A==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^2.0.0",
+        "schema-utils": "^2.6.5"
+      }
+    },
     "rc": {
       "version": "1.2.8",
       "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
@@ -13095,7 +15366,7 @@
     "read-cache": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
-      "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=",
+      "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
       "dev": true,
       "requires": {
         "pify": "^2.3.0"
@@ -13104,7 +15375,7 @@
         "pify": {
           "version": "2.3.0",
           "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+          "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
           "dev": true
         }
       }
@@ -13195,24 +15466,24 @@
       "dev": true
     },
     "regenerate-unicode-properties": {
-      "version": "8.2.0",
-      "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz",
-      "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==",
+      "version": "10.0.1",
+      "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz",
+      "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==",
       "dev": true,
       "requires": {
-        "regenerate": "^1.4.0"
+        "regenerate": "^1.4.2"
       }
     },
     "regenerator-runtime": {
-      "version": "0.13.3",
-      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
-      "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==",
+      "version": "0.13.7",
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
+      "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==",
       "dev": true
     },
     "regenerator-transform": {
-      "version": "0.14.5",
-      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz",
-      "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==",
+      "version": "0.15.0",
+      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz",
+      "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==",
       "dev": true,
       "requires": {
         "@babel/runtime": "^7.8.4"
@@ -13228,28 +15499,35 @@
         "safe-regex": "^1.1.0"
       }
     },
+    "regex-parser": {
+      "version": "2.2.11",
+      "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz",
+      "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==",
+      "dev": true
+    },
     "regexp.prototype.flags": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz",
-      "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==",
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
+      "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
       "dev": true,
       "requires": {
         "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3"
+        "define-properties": "^1.1.3",
+        "functions-have-names": "^1.2.2"
       }
     },
     "regexpu-core": {
-      "version": "4.7.1",
-      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz",
-      "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz",
+      "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==",
       "dev": true,
       "requires": {
-        "regenerate": "^1.4.0",
-        "regenerate-unicode-properties": "^8.2.0",
-        "regjsgen": "^0.5.1",
-        "regjsparser": "^0.6.4",
-        "unicode-match-property-ecmascript": "^1.0.4",
-        "unicode-match-property-value-ecmascript": "^1.2.0"
+        "regenerate": "^1.4.2",
+        "regenerate-unicode-properties": "^10.0.1",
+        "regjsgen": "^0.6.0",
+        "regjsparser": "^0.8.2",
+        "unicode-match-property-ecmascript": "^2.0.0",
+        "unicode-match-property-value-ecmascript": "^2.0.0"
       }
     },
     "registry-auth-token": {
@@ -13271,15 +15549,15 @@
       }
     },
     "regjsgen": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz",
-      "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==",
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz",
+      "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==",
       "dev": true
     },
     "regjsparser": {
-      "version": "0.6.6",
-      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.6.tgz",
-      "integrity": "sha512-jjyuCp+IEMIm3N1H1LLTJW1EISEJV9+5oHdEyrt43Pg9cDSb6rrLZei2cVWpl0xTjmmlpec/lEQGYgM7xfpGCQ==",
+      "version": "0.8.4",
+      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz",
+      "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==",
       "dev": true,
       "requires": {
         "jsesc": "~0.5.0"
@@ -13288,7 +15566,7 @@
         "jsesc": {
           "version": "0.5.0",
           "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
-          "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
+          "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
           "dev": true
         }
       }
@@ -13296,19 +15574,19 @@
     "remove-trailing-separator": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
-      "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+      "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==",
       "dev": true
     },
     "repeat-element": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
-      "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
+      "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
       "dev": true
     },
     "repeat-string": {
       "version": "1.6.1",
       "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
-      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+      "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
       "dev": true
     },
     "request": {
@@ -13345,9 +15623,9 @@
       "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
     },
     "require-main-filename": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
-      "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
       "dev": true
     },
     "requires-port": {
@@ -13368,7 +15646,7 @@
     "resolve-cwd": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
-      "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+      "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==",
       "dev": true,
       "requires": {
         "resolve-from": "^3.0.0"
@@ -13377,15 +15655,96 @@
     "resolve-from": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
-      "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+      "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
       "dev": true
     },
     "resolve-url": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
-      "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+      "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
       "dev": true
     },
+    "resolve-url-loader": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz",
+      "integrity": "sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ==",
+      "dev": true,
+      "requires": {
+        "adjust-sourcemap-loader": "3.0.0",
+        "camelcase": "5.3.1",
+        "compose-function": "3.0.3",
+        "convert-source-map": "1.7.0",
+        "es6-iterator": "2.0.3",
+        "loader-utils": "1.2.3",
+        "postcss": "7.0.21",
+        "rework": "1.0.1",
+        "rework-visit": "1.0.0",
+        "source-map": "0.6.1"
+      },
+      "dependencies": {
+        "convert-source-map": {
+          "version": "1.7.0",
+          "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
+          "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
+          "dev": true,
+          "requires": {
+            "safe-buffer": "~5.1.1"
+          }
+        },
+        "emojis-list": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
+          "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==",
+          "dev": true
+        },
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.2.3",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
+          "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^2.0.0",
+            "json5": "^1.0.1"
+          }
+        },
+        "postcss": {
+          "version": "7.0.21",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz",
+          "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==",
+          "dev": true,
+          "requires": {
+            "chalk": "^2.4.2",
+            "source-map": "^0.6.1",
+            "supports-color": "^6.1.0"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
     "responselike": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
@@ -13414,7 +15773,7 @@
     "retry": {
       "version": "0.12.0",
       "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
-      "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
+      "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
       "dev": true
     },
     "retry-request": {
@@ -13426,22 +15785,52 @@
         "debug": "^4.1.1"
       }
     },
+    "reusify": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+      "dev": true
+    },
+    "rework": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz",
+      "integrity": "sha512-eEjL8FdkdsxApd0yWVZgBGzfCQiT8yqSc2H1p4jpZpQdtz7ohETiDMoje5PlM8I9WgkqkreVxFUKYOiJdVWDXw==",
+      "dev": true,
+      "requires": {
+        "convert-source-map": "^0.3.3",
+        "css": "^2.0.0"
+      },
+      "dependencies": {
+        "convert-source-map": {
+          "version": "0.3.5",
+          "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz",
+          "integrity": "sha512-+4nRk0k3oEpwUB7/CalD7xE2z4VmtEnnq0GO2IPTkrooTrAhEsWvuLF5iWP1dXrwluki/azwXV1ve7gtYuPldg==",
+          "dev": true
+        }
+      }
+    },
+    "rework-visit": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz",
+      "integrity": "sha512-W6V2fix7nCLUYX1v6eGPrBOZlc03/faqzP4sUxMAJMBMOPYhfV/RyLegTufn5gJKaOITyi+gvf0LXDZ9NzkHnQ==",
+      "dev": true
+    },
     "rfdc": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.2.0.tgz",
-      "integrity": "sha512-ijLyszTMmUrXvjSooucVQwimGUk84eRcmCuLV8Xghe3UO85mjUtRAHRyoMM6XtyqbECaXuBWx18La3523sXINA==",
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
+      "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==",
       "dev": true
     },
     "rgb-regex": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz",
-      "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=",
+      "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==",
       "dev": true
     },
     "rgba-regex": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz",
-      "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=",
+      "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==",
       "dev": true
     },
     "rimraf": {
@@ -13464,14 +15853,21 @@
       }
     },
     "rollup": {
-      "version": "1.25.2",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.25.2.tgz",
-      "integrity": "sha512-+7z6Wab/L45QCPcfpuTZKwKiB0tynj05s/+s2U3F2Bi7rOLPr9UcjUwO7/xpjlPNXA/hwnth6jBExFRGyf3tMg==",
+      "version": "2.26.5",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.26.5.tgz",
+      "integrity": "sha512-rCyFG3ZtQdnn9YwfuAVH0l/Om34BdO5lwCA0W6Hq+bNB21dVEBbCRxhaHOmu1G7OBFDWytbzAC104u7rxHwGjA==",
       "dev": true,
       "requires": {
-        "@types/estree": "*",
-        "@types/node": "*",
-        "acorn": "^7.1.0"
+        "fsevents": "~2.1.2"
+      },
+      "dependencies": {
+        "fsevents": {
+          "version": "2.1.3",
+          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
+          "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
+          "dev": true,
+          "optional": true
+        }
       }
     },
     "router": {
@@ -13530,10 +15926,19 @@
       "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
       "dev": true
     },
+    "run-parallel": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+      "dev": true,
+      "requires": {
+        "queue-microtask": "^1.2.2"
+      }
+    },
     "run-queue": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
-      "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
+      "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==",
       "dev": true,
       "requires": {
         "aproba": "^1.1.1"
@@ -13545,6 +15950,13 @@
       "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==",
       "requires": {
         "tslib": "^1.9.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+        }
       }
     },
     "safe-buffer": {
@@ -13555,7 +15967,7 @@
     "safe-regex": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
-      "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+      "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
       "dev": true,
       "requires": {
         "ret": "~0.1.10"
@@ -13568,54 +15980,43 @@
       "dev": true
     },
     "sass": {
-      "version": "1.23.3",
-      "resolved": "https://registry.npmjs.org/sass/-/sass-1.23.3.tgz",
-      "integrity": "sha512-1DKRZxJMOh4Bme16AbWTyYeJAjTlrvw2+fWshHHaepeJfGq2soFZTnt0YhWit+bohtDu4LdyPoEj6VFD4APHog==",
+      "version": "1.26.10",
+      "resolved": "https://registry.npmjs.org/sass/-/sass-1.26.10.tgz",
+      "integrity": "sha512-bzN0uvmzfsTvjz0qwccN1sPm2HxxpNI/Xa+7PlUEMS+nQvbyuEK7Y0qFqxlPHhiNHb1Ze8WQJtU31olMObkAMw==",
       "dev": true,
       "requires": {
         "chokidar": ">=2.0.0 <4.0.0"
       }
     },
     "sass-loader": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.0.tgz",
-      "integrity": "sha512-+qeMu563PN7rPdit2+n5uuYVR0SSVwm0JsOUsaJXzgYcClWSlmX0iHDnmeOobPkf5kUglVot3QS6SyLyaQoJ4w==",
+      "version": "10.0.1",
+      "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.0.1.tgz",
+      "integrity": "sha512-b2PSldKVTS3JcFPHSrEXh3BeAfR7XknGiGCAO5aHruR3Pf3kqLP3Gb2ypXLglRrAzgZkloNxLZ7GXEGDX0hBUQ==",
       "dev": true,
       "requires": {
-        "clone-deep": "^4.0.1",
-        "loader-utils": "^1.2.3",
-        "neo-async": "^2.6.1",
-        "schema-utils": "^2.1.0",
-        "semver": "^6.3.0"
+        "klona": "^2.0.3",
+        "loader-utils": "^2.0.0",
+        "neo-async": "^2.6.2",
+        "schema-utils": "^2.7.0",
+        "semver": "^7.3.2"
       },
       "dependencies": {
-        "ajv": {
-          "version": "6.12.6",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
           "dev": true,
           "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
+            "yallist": "^4.0.0"
           }
         },
-        "fast-deep-equal": {
-          "version": "3.1.3",
-          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-          "dev": true
-        },
-        "schema-utils": {
-          "version": "2.7.1",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
-          "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
+        "semver": {
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
           "dev": true,
           "requires": {
-            "@types/json-schema": "^7.0.5",
-            "ajv": "^6.12.4",
-            "ajv-keywords": "^3.5.2"
+            "lru-cache": "^6.0.0"
           }
         }
       }
@@ -13636,20 +16037,40 @@
       "dev": true
     },
     "schema-utils": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-      "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
+      "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
       "dev": true,
       "requires": {
-        "ajv": "^6.1.0",
-        "ajv-errors": "^1.0.0",
-        "ajv-keywords": "^3.1.0"
+        "@types/json-schema": "^7.0.5",
+        "ajv": "^6.12.4",
+        "ajv-keywords": "^3.5.2"
+      },
+      "dependencies": {
+        "ajv": {
+          "version": "6.12.6",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^3.1.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
+          }
+        },
+        "fast-deep-equal": {
+          "version": "3.1.3",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+          "dev": true
+        }
       }
     },
     "select-hose": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
-      "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
+      "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==",
       "dev": true
     },
     "selenium-webdriver": {
@@ -13676,7 +16097,7 @@
         "tmp": {
           "version": "0.0.30",
           "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz",
-          "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=",
+          "integrity": "sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w==",
           "dev": true,
           "requires": {
             "os-tmpdir": "~1.0.1"
@@ -13685,9 +16106,9 @@
       }
     },
     "selfsigned": {
-      "version": "1.10.8",
-      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz",
-      "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==",
+      "version": "1.10.14",
+      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz",
+      "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==",
       "dev": true,
       "requires": {
         "node-forge": "^0.10.0"
@@ -13788,15 +16209,18 @@
       }
     },
     "serialize-javascript": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz",
-      "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==",
-      "dev": true
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
+      "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+      "dev": true,
+      "requires": {
+        "randombytes": "^2.1.0"
+      }
     },
     "serve-index": {
       "version": "1.9.1",
       "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
-      "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
+      "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
       "dev": true,
       "requires": {
         "accepts": "~1.3.4",
@@ -13820,7 +16244,7 @@
         "http-errors": {
           "version": "1.6.3",
           "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
-          "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+          "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
           "dev": true,
           "requires": {
             "depd": "~1.1.2",
@@ -13832,13 +16256,13 @@
         "inherits": {
           "version": "2.0.3",
           "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+          "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
           "dev": true
         },
         "ms": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
           "dev": true
         },
         "setprototypeof": {
@@ -13867,12 +16291,6 @@
       "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
       "dev": true
     },
-    "set-immediate-shim": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
-      "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
-      "dev": true
-    },
     "set-value": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
@@ -13888,7 +16306,7 @@
         "extend-shallow": {
           "version": "2.0.1",
           "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
           "dev": true,
           "requires": {
             "is-extendable": "^0.1.0"
@@ -13918,15 +16336,6 @@
         "safe-buffer": "^5.0.1"
       }
     },
-    "shallow-clone": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
-      "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
-      "dev": true,
-      "requires": {
-        "kind-of": "^6.0.2"
-      }
-    },
     "shebang-command": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
@@ -13942,6 +16351,17 @@
       "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
       "dev": true
     },
+    "side-channel": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+      "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.0",
+        "get-intrinsic": "^1.0.2",
+        "object-inspect": "^1.9.0"
+      }
+    },
     "signal-exit": {
       "version": "3.0.3",
       "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
@@ -13966,15 +16386,15 @@
       }
     },
     "slash": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
-      "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
       "dev": true
     },
     "smart-buffer": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz",
-      "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==",
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+      "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
       "dev": true
     },
     "snapdragon": {
@@ -14005,7 +16425,7 @@
         "define-property": {
           "version": "0.2.5",
           "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
           "dev": true,
           "requires": {
             "is-descriptor": "^0.1.0"
@@ -14014,7 +16434,7 @@
         "extend-shallow": {
           "version": "2.0.1",
           "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
           "dev": true,
           "requires": {
             "is-extendable": "^0.1.0"
@@ -14023,13 +16443,13 @@
         "ms": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
           "dev": true
         },
         "source-map": {
           "version": "0.5.7",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+          "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
           "dev": true
         }
       }
@@ -14048,7 +16468,7 @@
         "define-property": {
           "version": "1.0.0",
           "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
           "dev": true,
           "requires": {
             "is-descriptor": "^1.0.0"
@@ -14097,7 +16517,7 @@
         "kind-of": {
           "version": "3.2.2",
           "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
           "dev": true,
           "requires": {
             "is-buffer": "^1.1.5"
@@ -14106,33 +16526,27 @@
       }
     },
     "socket.io": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz",
-      "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==",
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.5.0.tgz",
+      "integrity": "sha512-gGunfS0od3VpwDBpGwVkzSZx6Aqo9uOcf1afJj2cKnKFAoyl16fvhpsUhmUFd4Ldbvl5JvRQed6eQw6oQp6n8w==",
       "dev": true,
       "requires": {
-        "debug": "~3.1.0",
-        "engine.io": "~3.2.0",
+        "debug": "~4.1.0",
+        "engine.io": "~3.6.0",
         "has-binary2": "~1.0.2",
         "socket.io-adapter": "~1.1.0",
-        "socket.io-client": "2.1.1",
-        "socket.io-parser": "~3.2.0"
+        "socket.io-client": "2.5.0",
+        "socket.io-parser": "~3.4.0"
       },
       "dependencies": {
         "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
           "dev": true,
           "requires": {
-            "ms": "2.0.0"
+            "ms": "^2.1.1"
           }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-          "dev": true
         }
       }
     },
@@ -14143,33 +16557,24 @@
       "dev": true
     },
     "socket.io-client": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz",
-      "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==",
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.5.0.tgz",
+      "integrity": "sha512-lOO9clmdgssDykiOmVQQitwBAF3I6mYcQAo7hQ7AM6Ny5X7fp8hIJ3HcQs3Rjz4SoggoxA1OgrQyY8EgTbcPYw==",
       "dev": true,
       "requires": {
         "backo2": "1.0.2",
-        "base64-arraybuffer": "0.1.5",
         "component-bind": "1.0.0",
-        "component-emitter": "1.2.1",
+        "component-emitter": "~1.3.0",
         "debug": "~3.1.0",
-        "engine.io-client": "~3.2.0",
+        "engine.io-client": "~3.5.0",
         "has-binary2": "~1.0.2",
-        "has-cors": "1.1.0",
         "indexof": "0.0.1",
-        "object-component": "0.0.3",
-        "parseqs": "0.0.5",
-        "parseuri": "0.0.5",
-        "socket.io-parser": "~3.2.0",
+        "parseqs": "0.0.6",
+        "parseuri": "0.0.6",
+        "socket.io-parser": "~3.3.0",
         "to-array": "0.1.4"
       },
       "dependencies": {
-        "component-emitter": {
-          "version": "1.2.1",
-          "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
-          "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
-          "dev": true
-        },
         "debug": {
           "version": "3.1.0",
           "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
@@ -14179,62 +16584,85 @@
             "ms": "2.0.0"
           }
         },
+        "isarray": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
+          "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==",
+          "dev": true
+        },
         "ms": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
           "dev": true
+        },
+        "socket.io-parser": {
+          "version": "3.3.2",
+          "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.2.tgz",
+          "integrity": "sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg==",
+          "dev": true,
+          "requires": {
+            "component-emitter": "~1.3.0",
+            "debug": "~3.1.0",
+            "isarray": "2.0.1"
+          }
         }
       }
     },
     "socket.io-parser": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz",
-      "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==",
+      "version": "3.4.1",
+      "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz",
+      "integrity": "sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A==",
       "dev": true,
       "requires": {
         "component-emitter": "1.2.1",
-        "debug": "~3.1.0",
+        "debug": "~4.1.0",
         "isarray": "2.0.1"
       },
       "dependencies": {
         "component-emitter": {
           "version": "1.2.1",
           "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
-          "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
+          "integrity": "sha512-jPatnhd33viNplKjqXKRkGU345p263OIWzDL2wH3LGIGp5Kojo+uXizHmOADRvhGFFTnJqX3jBAKP6vvmSDKcA==",
           "dev": true
         },
         "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
           "dev": true,
           "requires": {
-            "ms": "2.0.0"
+            "ms": "^2.1.1"
           }
         },
         "isarray": {
           "version": "2.0.1",
           "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
-          "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=",
-          "dev": true
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==",
           "dev": true
         }
       }
     },
     "sockjs": {
-      "version": "0.3.19",
-      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz",
-      "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==",
+      "version": "0.3.20",
+      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz",
+      "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==",
       "dev": true,
       "requires": {
         "faye-websocket": "^0.10.0",
-        "uuid": "^3.0.1"
+        "uuid": "^3.4.0",
+        "websocket-driver": "0.6.5"
+      },
+      "dependencies": {
+        "websocket-driver": {
+          "version": "0.6.5",
+          "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz",
+          "integrity": "sha512-oBx6ZM1Gs5q2jwZuSN/Qxyy/fbgomV8+vqsmipaPKB/74hjHlKuM07jNmRhn4qa2AdUwsgxrltq+gaPsHgcl0Q==",
+          "dev": true,
+          "requires": {
+            "websocket-extensions": ">=0.1.1"
+          }
+        }
       }
     },
     "sockjs-client": {
@@ -14261,9 +16689,9 @@
           }
         },
         "faye-websocket": {
-          "version": "0.11.3",
-          "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz",
-          "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==",
+          "version": "0.11.4",
+          "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz",
+          "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
           "dev": true,
           "requires": {
             "websocket-driver": ">=0.5.1"
@@ -14279,6 +16707,14 @@
       "requires": {
         "ip": "1.1.5",
         "smart-buffer": "^4.1.0"
+      },
+      "dependencies": {
+        "ip": {
+          "version": "1.1.5",
+          "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
+          "integrity": "sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA==",
+          "dev": true
+        }
       }
     },
     "socks-proxy-agent": {
@@ -14305,7 +16741,7 @@
     "sort-keys": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
-      "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
+      "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==",
       "dev": true,
       "requires": {
         "is-plain-obj": "^1.0.0"
@@ -14324,13 +16760,33 @@
       "dev": true
     },
     "source-map-loader": {
-      "version": "0.2.4",
-      "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz",
-      "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==",
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.0.2.tgz",
+      "integrity": "sha512-oX8d6ndRjN+tVyjj6PlXSyFPhDdVAPsZA30nD3/II8g4uOv8fCz0DMn5sy8KtVbDfKQxOpGwGJnK3xIW3tauDw==",
       "dev": true,
       "requires": {
-        "async": "^2.5.0",
-        "loader-utils": "^1.1.0"
+        "data-urls": "^2.0.0",
+        "iconv-lite": "^0.6.2",
+        "loader-utils": "^2.0.0",
+        "schema-utils": "^2.7.0",
+        "source-map": "^0.6.1"
+      },
+      "dependencies": {
+        "iconv-lite": {
+          "version": "0.6.3",
+          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+          "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+          "dev": true,
+          "requires": {
+            "safer-buffer": ">= 2.1.2 < 3.0.0"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
     "source-map-resolve": {
@@ -14365,9 +16821,9 @@
       }
     },
     "source-map-url": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
-      "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
+      "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
       "dev": true
     },
     "sourcemap-codec": {
@@ -14403,9 +16859,9 @@
       }
     },
     "spdx-license-ids": {
-      "version": "3.0.7",
-      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz",
-      "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==",
+      "version": "3.0.11",
+      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz",
+      "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==",
       "dev": true
     },
     "spdy": {
@@ -14449,9 +16905,9 @@
       }
     },
     "speed-measure-webpack-plugin": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.1.tgz",
-      "integrity": "sha512-qVIkJvbtS9j/UeZumbdfz0vg+QfG/zxonAjzefZrqzkr7xOncLVXkeGbTpzd1gjCBM4PmVNkWlkeTVhgskAGSQ==",
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.3.tgz",
+      "integrity": "sha512-2ljD4Ch/rz2zG3HsLsnPfp23osuPBS0qPuz9sGpkNXTN1Ic4M+W9xB8l8rS8ob2cO4b1L+WTJw/0AJwWYVgcxQ==",
       "dev": true,
       "requires": {
         "chalk": "^2.0.1"
@@ -14490,12 +16946,11 @@
       }
     },
     "ssri": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz",
-      "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==",
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
+      "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
       "dev": true,
       "requires": {
-        "figgy-pudding": "^3.5.1",
         "minipass": "^3.1.1"
       }
     },
@@ -14514,7 +16969,7 @@
     "static-extend": {
       "version": "0.1.2",
       "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
-      "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+      "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
       "dev": true,
       "requires": {
         "define-property": "^0.2.5",
@@ -14524,7 +16979,7 @@
         "define-property": {
           "version": "0.2.5",
           "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
           "dev": true,
           "requires": {
             "is-descriptor": "^0.1.0"
@@ -14578,44 +17033,58 @@
       "dev": true
     },
     "streamroller": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.6.tgz",
-      "integrity": "sha512-3QC47Mhv3/aZNFpDDVO44qQb9gwB9QggMEE0sQmkTAwBVYdBRWISdsywlkfm5II1Q5y/pmrHflti/IgmIzdDBg==",
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.1.tgz",
+      "integrity": "sha512-iPhtd9unZ6zKdWgMeYGfSBuqCngyJy1B/GPi/lTpwGpa3bajuX30GjUVd0/Tn/Xhg0mr4DOSENozz9Y06qyonQ==",
       "dev": true,
       "requires": {
-        "async": "^2.6.2",
-        "date-format": "^2.0.0",
-        "debug": "^3.2.6",
-        "fs-extra": "^7.0.1",
-        "lodash": "^4.17.14"
+        "date-format": "^4.0.10",
+        "debug": "^4.3.4",
+        "fs-extra": "^10.1.0"
       },
       "dependencies": {
         "debug": {
-          "version": "3.2.7",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-          "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+          "version": "4.3.4",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+          "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
           "dev": true,
           "requires": {
-            "ms": "^2.1.1"
+            "ms": "2.1.2"
           }
         },
         "fs-extra": {
-          "version": "7.0.1",
-          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
-          "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+          "version": "10.1.0",
+          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+          "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
           "dev": true,
           "requires": {
-            "graceful-fs": "^4.1.2",
-            "jsonfile": "^4.0.0",
-            "universalify": "^0.1.0"
+            "graceful-fs": "^4.2.0",
+            "jsonfile": "^6.0.1",
+            "universalify": "^2.0.0"
+          }
+        },
+        "jsonfile": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+          "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.6",
+            "universalify": "^2.0.0"
           }
+        },
+        "universalify": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+          "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+          "dev": true
         }
       }
     },
     "strict-uri-encode": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
-      "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
+      "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==",
       "dev": true
     },
     "string-length": {
@@ -14655,23 +17124,25 @@
       }
     },
     "string.prototype.trimend": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz",
-      "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==",
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz",
+      "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==",
       "dev": true,
       "requires": {
-        "call-bind": "^1.0.0",
-        "define-properties": "^1.1.3"
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.4",
+        "es-abstract": "^1.19.5"
       }
     },
     "string.prototype.trimstart": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz",
-      "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==",
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz",
+      "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==",
       "dev": true,
       "requires": {
-        "call-bind": "^1.0.0",
-        "define-properties": "^1.1.3"
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.4",
+        "es-abstract": "^1.19.5"
       }
     },
     "string_decoder": {
@@ -14692,12 +17163,6 @@
         "ansi-regex": "^2.0.0"
       }
     },
-    "strip-bom": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
-      "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
-      "dev": true
-    },
     "strip-eof": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
@@ -14711,44 +17176,13 @@
       "dev": true
     },
     "style-loader": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.0.0.tgz",
-      "integrity": "sha512-B0dOCFwv7/eY31a5PCieNwMgMhVGFe9w+rh7s/Bx8kfFkrth9zfTZquoYvdw8URgiqxObQKcpW51Ugz1HjfdZw==",
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.2.1.tgz",
+      "integrity": "sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg==",
       "dev": true,
       "requires": {
-        "loader-utils": "^1.2.3",
-        "schema-utils": "^2.0.1"
-      },
-      "dependencies": {
-        "ajv": {
-          "version": "6.12.6",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
-          }
-        },
-        "fast-deep-equal": {
-          "version": "3.1.3",
-          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-          "dev": true
-        },
-        "schema-utils": {
-          "version": "2.7.1",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
-          "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
-          "dev": true,
-          "requires": {
-            "@types/json-schema": "^7.0.5",
-            "ajv": "^6.12.4",
-            "ajv-keywords": "^3.5.2"
-          }
-        }
+        "loader-utils": "^2.0.0",
+        "schema-utils": "^2.6.6"
       }
     },
     "stylehacks": {
@@ -14776,18 +17210,18 @@
       }
     },
     "stylus": {
-      "version": "0.54.7",
-      "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.7.tgz",
-      "integrity": "sha512-Yw3WMTzVwevT6ZTrLCYNHAFmanMxdylelL3hkWNgPMeTCpMwpV3nXjpOHuBXtFv7aiO2xRuQS6OoAdgkNcSNug==",
+      "version": "0.54.8",
+      "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz",
+      "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==",
       "dev": true,
       "requires": {
         "css-parse": "~2.0.0",
         "debug": "~3.1.0",
-        "glob": "^7.1.3",
-        "mkdirp": "~0.5.x",
+        "glob": "^7.1.6",
+        "mkdirp": "~1.0.4",
         "safer-buffer": "^2.1.2",
         "sax": "~1.2.4",
-        "semver": "^6.0.0",
+        "semver": "^6.3.0",
         "source-map": "^0.7.3"
       },
       "dependencies": {
@@ -14800,10 +17234,39 @@
             "ms": "2.0.0"
           }
         },
+        "glob": {
+          "version": "7.2.3",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+          "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+          "dev": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.1.1",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        },
+        "minimatch": {
+          "version": "3.1.2",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+          "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
+        },
+        "mkdirp": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+          "dev": true
+        },
         "ms": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
           "dev": true
         }
       }
@@ -14817,6 +17280,28 @@
         "loader-utils": "^1.0.2",
         "lodash.clonedeep": "^4.5.0",
         "when": "~3.6.x"
+      },
+      "dependencies": {
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        }
       }
     },
     "superstatic": {
@@ -15118,9 +17603,9 @@
       "dev": true
     },
     "terser": {
-      "version": "4.5.1",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-4.5.1.tgz",
-      "integrity": "sha512-lH9zLIbX8PRBEFCTvfHGCy0s9HEKnNso1Dx9swSopF3VUnFLB8DpQ61tHxoofovNC/sG0spajJM3EIIRSTByiQ==",
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.0.tgz",
+      "integrity": "sha512-XTT3D3AwxC54KywJijmY2mxZ8nJiEjBHVYzq8l9OaYuRFWeQNBwvipuzzYEP4e+/AVcd1hqG/CqgsdIRyT45Fg==",
       "dev": true,
       "requires": {
         "commander": "^2.20.0",
@@ -15137,128 +17622,29 @@
       }
     },
     "terser-webpack-plugin": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.3.tgz",
-      "integrity": "sha512-gWHkaGzGYjmDoYxksFZynWTzvXOAjQ5dd7xuTMYlv4zpWlLSb6v0QLSZjELzP5dMs1ox30O1BIPs9dgqlMHuLQ==",
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.1.0.tgz",
+      "integrity": "sha512-0ZWDPIP8BtEDZdChbufcXUigOYk6dOX/P/X0hWxqDDcVAQLb8Yy/0FAaemSfax3PAA67+DJR778oz8qVbmy4hA==",
       "dev": true,
       "requires": {
-        "cacache": "^13.0.1",
-        "find-cache-dir": "^3.2.0",
-        "jest-worker": "^25.1.0",
-        "p-limit": "^2.2.2",
-        "schema-utils": "^2.6.4",
-        "serialize-javascript": "^2.1.2",
+        "cacache": "^15.0.5",
+        "find-cache-dir": "^3.3.1",
+        "jest-worker": "^26.3.0",
+        "p-limit": "^3.0.2",
+        "schema-utils": "^2.6.6",
+        "serialize-javascript": "^4.0.0",
         "source-map": "^0.6.1",
-        "terser": "^4.4.3",
+        "terser": "^5.0.0",
         "webpack-sources": "^1.4.3"
       },
       "dependencies": {
-        "ajv": {
-          "version": "6.12.6",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
-          }
-        },
-        "fast-deep-equal": {
-          "version": "3.1.3",
-          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-          "dev": true
-        },
-        "find-cache-dir": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz",
-          "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==",
-          "dev": true,
-          "requires": {
-            "commondir": "^1.0.1",
-            "make-dir": "^3.0.2",
-            "pkg-dir": "^4.1.0"
-          }
-        },
-        "find-up": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-          "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-          "dev": true,
-          "requires": {
-            "locate-path": "^5.0.0",
-            "path-exists": "^4.0.0"
-          }
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-          "dev": true
-        },
-        "jest-worker": {
-          "version": "25.5.0",
-          "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz",
-          "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==",
-          "dev": true,
-          "requires": {
-            "merge-stream": "^2.0.0",
-            "supports-color": "^7.0.0"
-          }
-        },
-        "locate-path": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-          "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-          "dev": true,
-          "requires": {
-            "p-locate": "^4.1.0"
-          }
-        },
-        "make-dir": {
+        "p-limit": {
           "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
-          "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
-          "dev": true,
-          "requires": {
-            "semver": "^6.0.0"
-          }
-        },
-        "p-locate": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-          "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-          "dev": true,
-          "requires": {
-            "p-limit": "^2.2.0"
-          }
-        },
-        "path-exists": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-          "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-          "dev": true
-        },
-        "pkg-dir": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
-          "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
-          "dev": true,
-          "requires": {
-            "find-up": "^4.0.0"
-          }
-        },
-        "schema-utils": {
-          "version": "2.7.1",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
-          "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+          "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
           "dev": true,
           "requires": {
-            "@types/json-schema": "^7.0.5",
-            "ajv": "^6.12.4",
-            "ajv-keywords": "^3.5.2"
+            "yocto-queue": "^0.1.0"
           }
         },
         "source-map": {
@@ -15266,15 +17652,6 @@
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
           "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
         }
       }
     },
@@ -15328,7 +17705,7 @@
     "timsort": {
       "version": "0.3.0",
       "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
-      "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
+      "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==",
       "dev": true
     },
     "tmp": {
@@ -15343,13 +17720,13 @@
     "to-array": {
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
-      "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=",
+      "integrity": "sha512-LhVdShQD/4Mk4zXNroIQZJC+Ap3zgLcDuwEdcmLv9CCO73NWockQDwyUnW/m8VX/EElfL6FcYx7EeutN4HJA6A==",
       "dev": true
     },
     "to-arraybuffer": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
-      "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+      "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==",
       "dev": true
     },
     "to-fast-properties": {
@@ -15360,7 +17737,7 @@
     "to-object-path": {
       "version": "0.3.0",
       "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
-      "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+      "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
       "dev": true,
       "requires": {
         "kind-of": "^3.0.2"
@@ -15369,7 +17746,7 @@
         "kind-of": {
           "version": "3.2.2",
           "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
           "dev": true,
           "requires": {
             "is-buffer": "^1.1.5"
@@ -15429,6 +17806,15 @@
         "lodash": "^4.17.10"
       }
     },
+    "tr46": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
+      "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
+      "dev": true,
+      "requires": {
+        "punycode": "^2.1.1"
+      }
+    },
     "traverse": {
       "version": "0.3.9",
       "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
@@ -15460,43 +17846,49 @@
         "yn": "^3.0.0"
       }
     },
+    "ts-pnp": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz",
+      "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==",
+      "dev": true
+    },
     "tslib": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
+      "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
     },
     "tslint": {
-      "version": "5.18.0",
-      "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.18.0.tgz",
-      "integrity": "sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w==",
+      "version": "6.1.3",
+      "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz",
+      "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==",
       "dev": true,
       "requires": {
         "@babel/code-frame": "^7.0.0",
         "builtin-modules": "^1.1.1",
         "chalk": "^2.3.0",
         "commander": "^2.12.1",
-        "diff": "^3.2.0",
+        "diff": "^4.0.1",
         "glob": "^7.1.1",
         "js-yaml": "^3.13.1",
         "minimatch": "^3.0.4",
-        "mkdirp": "^0.5.1",
+        "mkdirp": "^0.5.3",
         "resolve": "^1.3.2",
         "semver": "^5.3.0",
-        "tslib": "^1.8.0",
+        "tslib": "^1.13.0",
         "tsutils": "^2.29.0"
       },
       "dependencies": {
-        "diff": {
-          "version": "3.5.0",
-          "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
-          "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
-          "dev": true
-        },
         "semver": {
           "version": "5.7.1",
           "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
           "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
           "dev": true
+        },
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+          "dev": true
         }
       }
     },
@@ -15507,12 +17899,20 @@
       "dev": true,
       "requires": {
         "tslib": "^1.8.1"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+          "dev": true
+        }
       }
     },
     "tty-browserify": {
       "version": "0.0.0",
       "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
-      "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
+      "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==",
       "dev": true
     },
     "tunnel-agent": {
@@ -15573,7 +17973,7 @@
     "typedarray": {
       "version": "0.0.6",
       "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
-      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+      "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
       "dev": true
     },
     "typedarray-to-buffer": {
@@ -15586,48 +17986,60 @@
       }
     },
     "typescript": {
-      "version": "3.7.5",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz",
-      "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==",
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.8.tgz",
+      "integrity": "sha512-oz1765PN+imfz1MlZzSZPtC/tqcwsCyIYA8L47EkRnRW97ztRk83SzMiWLrnChC0vqoYxSU1fcFUDA5gV/ZiPg==",
       "dev": true
     },
-    "ultron": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz",
-      "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==",
+    "ua-parser-js": {
+      "version": "0.7.21",
+      "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz",
+      "integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==",
       "dev": true
     },
+    "unbox-primitive": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+      "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "has-bigints": "^1.0.2",
+        "has-symbols": "^1.0.3",
+        "which-boxed-primitive": "^1.0.2"
+      }
+    },
     "unfetch": {
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz",
       "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA=="
     },
     "unicode-canonical-property-names-ecmascript": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
-      "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
+      "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
       "dev": true
     },
     "unicode-match-property-ecmascript": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
-      "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+      "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
       "dev": true,
       "requires": {
-        "unicode-canonical-property-names-ecmascript": "^1.0.4",
-        "unicode-property-aliases-ecmascript": "^1.0.4"
+        "unicode-canonical-property-names-ecmascript": "^2.0.0",
+        "unicode-property-aliases-ecmascript": "^2.0.0"
       }
     },
     "unicode-match-property-value-ecmascript": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz",
-      "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz",
+      "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==",
       "dev": true
     },
     "unicode-property-aliases-ecmascript": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz",
-      "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz",
+      "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==",
       "dev": true
     },
     "union-value": {
@@ -15645,13 +18057,13 @@
     "uniq": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
-      "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
+      "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==",
       "dev": true
     },
     "uniqs": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz",
-      "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=",
+      "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==",
       "dev": true
     },
     "unique-filename": {
@@ -15707,13 +18119,13 @@
     "unquote": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
-      "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=",
+      "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==",
       "dev": true
     },
     "unset-value": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
-      "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+      "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
       "dev": true,
       "requires": {
         "has-value": "^0.3.1",
@@ -15723,7 +18135,7 @@
         "has-value": {
           "version": "0.3.1",
           "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
-          "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+          "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
           "dev": true,
           "requires": {
             "get-value": "^2.0.3",
@@ -15734,7 +18146,7 @@
             "isobject": {
               "version": "2.1.0",
               "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
-              "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+              "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
               "dev": true,
               "requires": {
                 "isarray": "1.0.0"
@@ -15745,7 +18157,7 @@
         "has-values": {
           "version": "0.1.4",
           "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
-          "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+          "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
           "dev": true
         }
       }
@@ -15782,6 +18194,16 @@
       "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
       "dev": true
     },
+    "update-browserslist-db": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz",
+      "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==",
+      "dev": true,
+      "requires": {
+        "escalade": "^3.1.1",
+        "picocolors": "^1.0.0"
+      }
+    },
     "update-notifier": {
       "version": "4.1.3",
       "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz",
@@ -15866,13 +18288,13 @@
     "urix": {
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
-      "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+      "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
       "dev": true
     },
     "url": {
       "version": "0.11.0",
       "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
-      "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+      "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==",
       "dev": true,
       "requires": {
         "punycode": "1.3.2",
@@ -15882,7 +18304,7 @@
         "punycode": {
           "version": "1.3.2",
           "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
-          "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+          "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==",
           "dev": true
         }
       }
@@ -15894,9 +18316,9 @@
       "dev": true
     },
     "url-parse": {
-      "version": "1.4.7",
-      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz",
-      "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==",
+      "version": "1.5.10",
+      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+      "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
       "dev": true,
       "requires": {
         "querystringify": "^2.1.1",
@@ -15926,34 +18348,6 @@
       "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
       "dev": true
     },
-    "useragent": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz",
-      "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==",
-      "dev": true,
-      "requires": {
-        "lru-cache": "4.1.x",
-        "tmp": "0.0.x"
-      },
-      "dependencies": {
-        "lru-cache": {
-          "version": "4.1.5",
-          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
-          "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
-          "dev": true,
-          "requires": {
-            "pseudomap": "^1.0.2",
-            "yallist": "^2.1.2"
-          }
-        },
-        "yallist": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
-          "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
-          "dev": true
-        }
-      }
-    },
     "util": {
       "version": "0.11.1",
       "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
@@ -15966,7 +18360,7 @@
         "inherits": {
           "version": "2.0.3",
           "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+          "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
           "dev": true
         }
       }
@@ -15980,7 +18374,7 @@
     "util-promisify": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz",
-      "integrity": "sha1-PCI2R2xNMsX/PEcAKt18E7moKlM=",
+      "integrity": "sha512-K+5eQPYs14b3+E+hmE2J6gCZ4JmMl9DbYS6BeP2CHq6WMuNxErxf5B/n0fz85L8zUuoO6rIzNNmIQDu/j+1OcA==",
       "dev": true,
       "requires": {
         "object.getownpropertydescriptors": "^2.0.3"
@@ -15996,27 +18390,6 @@
         "es-abstract": "^1.17.2",
         "has-symbols": "^1.0.1",
         "object.getownpropertydescriptors": "^2.1.0"
-      },
-      "dependencies": {
-        "es-abstract": {
-          "version": "1.17.7",
-          "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz",
-          "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==",
-          "dev": true,
-          "requires": {
-            "es-to-primitive": "^1.2.1",
-            "function-bind": "^1.1.1",
-            "has": "^1.0.3",
-            "has-symbols": "^1.0.1",
-            "is-callable": "^1.2.2",
-            "is-regex": "^1.1.1",
-            "object-inspect": "^1.8.0",
-            "object-keys": "^1.1.1",
-            "object.assign": "^4.1.1",
-            "string.prototype.trimend": "^1.0.1",
-            "string.prototype.trimstart": "^1.0.1"
-          }
-        }
       }
     },
     "utils-merge": {
@@ -16050,7 +18423,7 @@
     "validate-npm-package-name": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
-      "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=",
+      "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==",
       "dev": true,
       "requires": {
         "builtins": "^1.0.3"
@@ -16088,7 +18461,7 @@
     "void-elements": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
-      "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=",
+      "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==",
       "dev": true
     },
     "walkdir": {
@@ -16133,7 +18506,7 @@
             "normalize-path": {
               "version": "2.1.1",
               "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-              "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+              "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
               "dev": true,
               "optional": true,
               "requires": {
@@ -16166,6 +18539,18 @@
             "snapdragon-node": "^2.0.1",
             "split-string": "^3.0.2",
             "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
           }
         },
         "chokidar": {
@@ -16189,20 +18574,10 @@
             "upath": "^1.1.1"
           }
         },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
         "fill-range": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
           "dev": true,
           "optional": true,
           "requires": {
@@ -16210,6 +18585,18 @@
             "is-number": "^3.0.0",
             "repeat-string": "^1.6.1",
             "to-regex-range": "^2.1.0"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
           }
         },
         "fsevents": {
@@ -16219,14 +18606,36 @@
           "dev": true,
           "optional": true,
           "requires": {
-            "bindings": "^1.5.0",
             "nan": "^2.12.1"
           }
         },
+        "glob-parent": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+          "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "is-glob": "^3.1.0",
+            "path-dirname": "^1.0.0"
+          },
+          "dependencies": {
+            "is-glob": {
+              "version": "3.1.0",
+              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+              "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "is-extglob": "^2.1.0"
+              }
+            }
+          }
+        },
         "is-binary-path": {
           "version": "1.0.1",
           "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-          "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+          "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
           "dev": true,
           "optional": true,
           "requires": {
@@ -16236,21 +18645,45 @@
         "is-number": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
           "dev": true,
           "optional": true,
           "requires": {
             "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
           }
         },
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+        "micromatch": {
+          "version": "3.1.10",
+          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
           "dev": true,
           "optional": true,
           "requires": {
-            "is-buffer": "^1.1.5"
+            "arr-diff": "^4.0.0",
+            "array-unique": "^0.3.2",
+            "braces": "^2.3.1",
+            "define-property": "^2.0.2",
+            "extend-shallow": "^3.0.2",
+            "extglob": "^2.0.4",
+            "fragment-cache": "^0.2.1",
+            "kind-of": "^6.0.2",
+            "nanomatch": "^1.2.9",
+            "object.pick": "^1.3.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.2"
           }
         },
         "readdirp": {
@@ -16268,7 +18701,7 @@
         "to-regex-range": {
           "version": "2.1.1",
           "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-          "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+          "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
           "dev": true,
           "optional": true,
           "requires": {
@@ -16311,42 +18744,71 @@
         "selenium-webdriver": "^3.0.1"
       }
     },
+    "webidl-conversions": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
+      "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
+      "dev": true
+    },
     "webpack": {
-      "version": "4.41.2",
-      "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.2.tgz",
-      "integrity": "sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A==",
+      "version": "4.44.1",
+      "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.1.tgz",
+      "integrity": "sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/helper-module-context": "1.8.5",
-        "@webassemblyjs/wasm-edit": "1.8.5",
-        "@webassemblyjs/wasm-parser": "1.8.5",
-        "acorn": "^6.2.1",
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-module-context": "1.9.0",
+        "@webassemblyjs/wasm-edit": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0",
+        "acorn": "^6.4.1",
         "ajv": "^6.10.2",
         "ajv-keywords": "^3.4.1",
         "chrome-trace-event": "^1.0.2",
-        "enhanced-resolve": "^4.1.0",
+        "enhanced-resolve": "^4.3.0",
         "eslint-scope": "^4.0.3",
         "json-parse-better-errors": "^1.0.2",
         "loader-runner": "^2.4.0",
         "loader-utils": "^1.2.3",
         "memory-fs": "^0.4.1",
         "micromatch": "^3.1.10",
-        "mkdirp": "^0.5.1",
+        "mkdirp": "^0.5.3",
         "neo-async": "^2.6.1",
         "node-libs-browser": "^2.2.1",
         "schema-utils": "^1.0.0",
         "tapable": "^1.1.3",
-        "terser-webpack-plugin": "^1.4.1",
-        "watchpack": "^1.6.0",
+        "terser-webpack-plugin": "^1.4.3",
+        "watchpack": "^1.7.4",
         "webpack-sources": "^1.4.1"
       },
       "dependencies": {
-        "acorn": {
-          "version": "6.4.2",
-          "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
-          "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
-          "dev": true
+        "braces": {
+          "version": "2.3.2",
+          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+          "dev": true,
+          "requires": {
+            "arr-flatten": "^1.1.0",
+            "array-unique": "^0.3.2",
+            "extend-shallow": "^2.0.1",
+            "fill-range": "^4.0.0",
+            "isobject": "^3.0.1",
+            "repeat-element": "^1.1.2",
+            "snapdragon": "^0.8.1",
+            "snapdragon-node": "^2.0.1",
+            "split-string": "^3.0.2",
+            "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+              "dev": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
         },
         "cacache": {
           "version": "12.0.4",
@@ -16371,6 +18833,29 @@
             "y18n": "^4.0.0"
           }
         },
+        "fill-range": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+          "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
+          "dev": true,
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1",
+            "to-regex-range": "^2.1.0"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+              "dev": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
+          }
+        },
         "find-cache-dir": {
           "version": "2.1.0",
           "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
@@ -16382,22 +18867,83 @@
             "pkg-dir": "^3.0.0"
           }
         },
+        "is-number": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+          "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+              "dev": true,
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
+          }
+        },
         "is-wsl": {
           "version": "1.1.0",
           "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
-          "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+          "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
           "dev": true
         },
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        },
         "memory-fs": {
           "version": "0.4.1",
           "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
-          "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+          "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==",
           "dev": true,
           "requires": {
             "errno": "^0.1.3",
             "readable-stream": "^2.0.1"
           }
         },
+        "micromatch": {
+          "version": "3.1.10",
+          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+          "dev": true,
+          "requires": {
+            "arr-diff": "^4.0.0",
+            "array-unique": "^0.3.2",
+            "braces": "^2.3.1",
+            "define-property": "^2.0.2",
+            "extend-shallow": "^3.0.2",
+            "extglob": "^2.0.4",
+            "fragment-cache": "^0.2.1",
+            "kind-of": "^6.0.2",
+            "nanomatch": "^1.2.9",
+            "object.pick": "^1.3.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.2"
+          }
+        },
         "rimraf": {
           "version": "2.7.1",
           "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
@@ -16407,13 +18953,15 @@
             "glob": "^7.1.3"
           }
         },
-        "serialize-javascript": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
-          "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
           "dev": true,
           "requires": {
-            "randombytes": "^2.1.0"
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
           }
         },
         "source-map": {
@@ -16423,14 +18971,25 @@
           "dev": true
         },
         "ssri": {
-          "version": "6.0.1",
-          "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
-          "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
+          "version": "6.0.2",
+          "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz",
+          "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
           "dev": true,
           "requires": {
             "figgy-pudding": "^3.5.1"
           }
         },
+        "terser": {
+          "version": "4.8.0",
+          "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
+          "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
+          "dev": true,
+          "requires": {
+            "commander": "^2.20.0",
+            "source-map": "~0.6.1",
+            "source-map-support": "~0.5.12"
+          }
+        },
         "terser-webpack-plugin": {
           "version": "1.4.5",
           "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz",
@@ -16447,6 +19006,16 @@
             "webpack-sources": "^1.4.0",
             "worker-farm": "^1.7.0"
           }
+        },
+        "to-regex-range": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+          "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
+          "dev": true,
+          "requires": {
+            "is-number": "^3.0.0",
+            "repeat-string": "^1.6.1"
+          }
         }
       }
     },
@@ -16466,7 +19035,7 @@
         "memory-fs": {
           "version": "0.4.1",
           "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
-          "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+          "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==",
           "dev": true,
           "requires": {
             "errno": "^0.1.3",
@@ -16474,17 +19043,17 @@
           }
         },
         "mime": {
-          "version": "2.5.0",
-          "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz",
-          "integrity": "sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==",
+          "version": "2.6.0",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
+          "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
           "dev": true
         }
       }
     },
     "webpack-dev-server": {
-      "version": "3.9.0",
-      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz",
-      "integrity": "sha512-E6uQ4kRrTX9URN9s/lIbqTAztwEPdvzVrcmHE8EQ9YnuT9J8Es5Wrd8n9BKg1a0oZ5EgEke/EQFgUsp18dSTBw==",
+      "version": "3.11.0",
+      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz",
+      "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==",
       "dev": true,
       "requires": {
         "ansi-html": "0.0.7",
@@ -16495,33 +19064,39 @@
         "debug": "^4.1.1",
         "del": "^4.1.1",
         "express": "^4.17.1",
-        "html-entities": "^1.2.1",
+        "html-entities": "^1.3.1",
         "http-proxy-middleware": "0.19.1",
         "import-local": "^2.0.0",
         "internal-ip": "^4.3.0",
         "ip": "^1.1.5",
         "is-absolute-url": "^3.0.3",
         "killable": "^1.0.1",
-        "loglevel": "^1.6.4",
+        "loglevel": "^1.6.8",
         "opn": "^5.5.0",
         "p-retry": "^3.0.1",
-        "portfinder": "^1.0.25",
+        "portfinder": "^1.0.26",
         "schema-utils": "^1.0.0",
         "selfsigned": "^1.10.7",
         "semver": "^6.3.0",
         "serve-index": "^1.9.1",
-        "sockjs": "0.3.19",
+        "sockjs": "0.3.20",
         "sockjs-client": "1.4.0",
-        "spdy": "^4.0.1",
+        "spdy": "^4.0.2",
         "strip-ansi": "^3.0.1",
         "supports-color": "^6.1.0",
         "url": "^0.11.0",
         "webpack-dev-middleware": "^3.7.2",
         "webpack-log": "^2.0.0",
         "ws": "^6.2.1",
-        "yargs": "12.0.5"
+        "yargs": "^13.3.2"
       },
       "dependencies": {
+        "ansi-regex": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+          "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+          "dev": true
+        },
         "anymatch": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
@@ -16535,7 +19110,7 @@
             "normalize-path": {
               "version": "2.1.1",
               "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-              "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+              "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
               "dev": true,
               "requires": {
                 "remove-trailing-separator": "^1.0.1"
@@ -16565,6 +19140,17 @@
             "snapdragon-node": "^2.0.1",
             "split-string": "^3.0.2",
             "to-regex": "^3.0.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+              "dev": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
           }
         },
         "chokidar": {
@@ -16587,25 +19173,55 @@
             "upath": "^1.1.1"
           }
         },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+        "cliui": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+          "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
           "dev": true,
           "requires": {
-            "is-extendable": "^0.1.0"
+            "string-width": "^3.1.0",
+            "strip-ansi": "^5.2.0",
+            "wrap-ansi": "^5.1.0"
+          },
+          "dependencies": {
+            "strip-ansi": {
+              "version": "5.2.0",
+              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+              "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^4.1.0"
+              }
+            }
           }
         },
+        "emoji-regex": {
+          "version": "7.0.3",
+          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+          "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+          "dev": true
+        },
         "fill-range": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
           "dev": true,
           "requires": {
             "extend-shallow": "^2.0.1",
             "is-number": "^3.0.0",
             "repeat-string": "^1.6.1",
             "to-regex-range": "^2.1.0"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+              "dev": true,
+              "requires": {
+                "is-extendable": "^0.1.0"
+              }
+            }
           }
         },
         "fsevents": {
@@ -16613,10 +19229,36 @@
           "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
           "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
           "dev": true,
-          "optional": true,
+          "optional": true,
+          "requires": {
+            "nan": "^2.12.1"
+          }
+        },
+        "get-caller-file": {
+          "version": "2.0.5",
+          "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+          "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+          "dev": true
+        },
+        "glob-parent": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+          "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+          "dev": true,
           "requires": {
-            "bindings": "^1.5.0",
-            "nan": "^2.12.1"
+            "is-glob": "^3.1.0",
+            "path-dirname": "^1.0.0"
+          },
+          "dependencies": {
+            "is-glob": {
+              "version": "3.1.0",
+              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+              "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+              "dev": true,
+              "requires": {
+                "is-extglob": "^2.1.0"
+              }
+            }
           }
         },
         "is-absolute-url": {
@@ -16628,7 +19270,7 @@
         "is-binary-path": {
           "version": "1.0.1",
           "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-          "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+          "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
           "dev": true,
           "requires": {
             "binary-extensions": "^1.0.0"
@@ -16637,19 +19279,42 @@
         "is-number": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
           "dev": true,
           "requires": {
             "kind-of": "^3.0.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+              "dev": true,
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
+            }
           }
         },
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+        "micromatch": {
+          "version": "3.1.10",
+          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
           "dev": true,
           "requires": {
-            "is-buffer": "^1.1.5"
+            "arr-diff": "^4.0.0",
+            "array-unique": "^0.3.2",
+            "braces": "^2.3.1",
+            "define-property": "^2.0.2",
+            "extend-shallow": "^3.0.2",
+            "extglob": "^2.0.4",
+            "fragment-cache": "^0.2.1",
+            "kind-of": "^6.0.2",
+            "nanomatch": "^1.2.9",
+            "object.pick": "^1.3.0",
+            "regex-not": "^1.0.0",
+            "snapdragon": "^0.8.1",
+            "to-regex": "^3.0.2"
           }
         },
         "readdirp": {
@@ -16663,6 +19328,45 @@
             "readable-stream": "^2.0.2"
           }
         },
+        "require-main-filename": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+          "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+          "dev": true
+        },
+        "schema-utils": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+          "dev": true,
+          "requires": {
+            "ajv": "^6.1.0",
+            "ajv-errors": "^1.0.0",
+            "ajv-keywords": "^3.1.0"
+          }
+        },
+        "string-width": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^7.0.1",
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^5.1.0"
+          },
+          "dependencies": {
+            "strip-ansi": {
+              "version": "5.2.0",
+              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+              "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^4.1.0"
+              }
+            }
+          }
+        },
         "supports-color": {
           "version": "6.1.0",
           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
@@ -16675,12 +19379,62 @@
         "to-regex-range": {
           "version": "2.1.1",
           "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-          "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+          "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
           "dev": true,
           "requires": {
             "is-number": "^3.0.0",
             "repeat-string": "^1.6.1"
           }
+        },
+        "wrap-ansi": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+          "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^3.2.0",
+            "string-width": "^3.0.0",
+            "strip-ansi": "^5.0.0"
+          },
+          "dependencies": {
+            "strip-ansi": {
+              "version": "5.2.0",
+              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+              "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^4.1.0"
+              }
+            }
+          }
+        },
+        "yargs": {
+          "version": "13.3.2",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+          "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+          "dev": true,
+          "requires": {
+            "cliui": "^5.0.0",
+            "find-up": "^3.0.0",
+            "get-caller-file": "^2.0.1",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^2.0.0",
+            "set-blocking": "^2.0.0",
+            "string-width": "^3.0.0",
+            "which-module": "^2.0.0",
+            "y18n": "^4.0.0",
+            "yargs-parser": "^13.1.2"
+          }
+        },
+        "yargs-parser": {
+          "version": "13.1.2",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+          "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+          "dev": true,
+          "requires": {
+            "camelcase": "^5.0.0",
+            "decamelize": "^1.2.0"
+          }
         }
       }
     },
@@ -16722,9 +19476,9 @@
       }
     },
     "webpack-subresource-integrity": {
-      "version": "1.3.4",
-      "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.3.4.tgz",
-      "integrity": "sha512-6XbGYzjh30cGQT/NsC+9IAkJP8IL7/t47sbwR5DLSsamiD56Rwv4/+hsgEHsviPvrEFZ0JRAQtCRN3UsR2Pw9g==",
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.4.1.tgz",
+      "integrity": "sha512-XMLFInbGbB1HV7K4vHWANzc1CN0t/c4bBvnlvGxGwV45yE/S/feAXIm8dJsCkzqWtSKnmaEgTp/meyeThxG4Iw==",
       "dev": true,
       "requires": {
         "webpack-sources": "^1.3.0"
@@ -16750,10 +19504,27 @@
       "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
       "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng=="
     },
+    "whatwg-mimetype": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
+      "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
+      "dev": true
+    },
+    "whatwg-url": {
+      "version": "8.7.0",
+      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz",
+      "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.7.0",
+        "tr46": "^2.1.0",
+        "webidl-conversions": "^6.1.0"
+      }
+    },
     "when": {
       "version": "3.6.4",
       "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz",
-      "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=",
+      "integrity": "sha512-d1VUP9F96w664lKINMGeElWdhhb5sC+thXM+ydZGU3ZnaE09Wv6FaS+mpM9570kcDs/xMfcXJBTLsMdHEFYY9Q==",
       "dev": true
     },
     "which": {
@@ -16765,6 +19536,19 @@
         "isexe": "^2.0.0"
       }
     },
+    "which-boxed-primitive": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+      "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+      "dev": true,
+      "requires": {
+        "is-bigint": "^1.0.1",
+        "is-boolean-object": "^1.1.0",
+        "is-number-object": "^1.0.4",
+        "is-string": "^1.0.5",
+        "is-symbol": "^1.0.3"
+      }
+    },
     "which-module": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
@@ -16876,12 +19660,6 @@
         "triple-beam": "^1.2.0"
       }
     },
-    "wordwrap": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
-      "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
-      "dev": true
-    },
     "worker-farm": {
       "version": "1.7.0",
       "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
@@ -16892,42 +19670,101 @@
       }
     },
     "worker-plugin": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-3.2.0.tgz",
-      "integrity": "sha512-W5nRkw7+HlbsEt3qRP6MczwDDISjiRj2GYt9+bpe8A2La00TmJdwzG5bpdMXhRt1qcWmwAvl1TiKaHRa+XDS9Q==",
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-5.0.0.tgz",
+      "integrity": "sha512-AXMUstURCxDD6yGam2r4E34aJg6kW85IiaeX72hi+I1cxyaMUtrvVY6sbfpGKAj5e7f68Acl62BjQF5aOOx2IQ==",
       "dev": true,
       "requires": {
         "loader-utils": "^1.1.0"
+      },
+      "dependencies": {
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        }
       }
     },
     "wrap-ansi": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
-      "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+      "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
       "dev": true,
       "requires": {
-        "string-width": "^1.0.1",
-        "strip-ansi": "^3.0.1"
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
       },
       "dependencies": {
-        "is-fullwidth-code-point": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
-          "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+        "ansi-regex": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+          "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
           "dev": true,
           "requires": {
-            "number-is-nan": "^1.0.0"
+            "color-convert": "^2.0.1"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
           }
         },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+          "dev": true
+        },
         "string-width": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+          "version": "4.2.3",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
           "dev": true,
           "requires": {
-            "code-point-at": "^1.0.0",
-            "is-fullwidth-code-point": "^1.0.0",
-            "strip-ansi": "^3.0.0"
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.1"
+          }
+        },
+        "strip-ansi": {
+          "version": "6.0.1",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+          "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^5.0.1"
           }
         }
       }
@@ -16950,9 +19787,9 @@
       }
     },
     "ws": {
-      "version": "6.2.1",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
-      "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
+      "version": "6.2.2",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz",
+      "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
       "dev": true,
       "requires": {
         "async-limiter": "~1.0.0"
@@ -16992,9 +19829,9 @@
       "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw="
     },
     "xmlhttprequest-ssl": {
-      "version": "1.5.5",
-      "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
-      "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=",
+      "version": "1.6.3",
+      "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz",
+      "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==",
       "dev": true
     },
     "xtend": {
@@ -17015,29 +19852,96 @@
       "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
     },
     "yargs": {
-      "version": "12.0.5",
-      "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
-      "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
+      "version": "15.4.1",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+      "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
       "dev": true,
       "requires": {
-        "cliui": "^4.0.0",
+        "cliui": "^6.0.0",
         "decamelize": "^1.2.0",
-        "find-up": "^3.0.0",
-        "get-caller-file": "^1.0.1",
-        "os-locale": "^3.0.0",
+        "find-up": "^4.1.0",
+        "get-caller-file": "^2.0.1",
         "require-directory": "^2.1.1",
-        "require-main-filename": "^1.0.1",
+        "require-main-filename": "^2.0.0",
         "set-blocking": "^2.0.0",
-        "string-width": "^2.0.0",
+        "string-width": "^4.2.0",
         "which-module": "^2.0.0",
-        "y18n": "^3.2.1 || ^4.0.0",
-        "yargs-parser": "^11.1.1"
+        "y18n": "^4.0.0",
+        "yargs-parser": "^18.1.2"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+          "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+          "dev": true
+        },
+        "find-up": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+          "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+          "dev": true,
+          "requires": {
+            "locate-path": "^5.0.0",
+            "path-exists": "^4.0.0"
+          }
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+          "dev": true
+        },
+        "locate-path": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+          "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+          "dev": true,
+          "requires": {
+            "p-locate": "^4.1.0"
+          }
+        },
+        "p-locate": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+          "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+          "dev": true,
+          "requires": {
+            "p-limit": "^2.2.0"
+          }
+        },
+        "path-exists": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+          "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+          "dev": true
+        },
+        "string-width": {
+          "version": "4.2.3",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.1"
+          }
+        },
+        "strip-ansi": {
+          "version": "6.0.1",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+          "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^5.0.1"
+          }
+        }
       }
     },
     "yargs-parser": {
-      "version": "11.1.1",
-      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
-      "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
+      "version": "18.1.3",
+      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+      "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
       "dev": true,
       "requires": {
         "camelcase": "^5.0.0",
@@ -17047,7 +19951,7 @@
     "yeast": {
       "version": "0.1.2",
       "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
-      "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
+      "integrity": "sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==",
       "dev": true
     },
     "yn": {
@@ -17056,6 +19960,12 @@
       "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
       "dev": true
     },
+    "yocto-queue": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+      "dev": true
+    },
     "zip-stream": {
       "version": "2.1.3",
       "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz",
diff --git a/package.json b/package.json
index a95eb10..d6fd081 100644
--- a/package.json
+++ b/package.json
@@ -11,18 +11,18 @@
   },
   "private": true,
   "dependencies": {
-    "@angular/animations": "~9.0.7",
+    "@angular/animations": "~10.2.5",
     "@angular/cdk": "^11.1.0",
-    "@angular/common": "~9.0.7",
-    "@angular/compiler": "~9.0.7",
-    "@angular/core": "~9.0.7",
+    "@angular/common": "~10.2.5",
+    "@angular/compiler": "~10.2.5",
+    "@angular/core": "~10.2.5",
     "@angular/fire": "^6.1.4",
-    "@angular/forms": "~9.0.7",
-    "@angular/localize": "^9.1.13",
+    "@angular/forms": "~10.2.5",
+    "@angular/localize": "^10.2.5",
     "@angular/material": "^11.1.0",
-    "@angular/platform-browser": "~9.0.7",
-    "@angular/platform-browser-dynamic": "~9.0.7",
-    "@angular/router": "~9.0.7",
+    "@angular/platform-browser": "~10.2.5",
+    "@angular/platform-browser-dynamic": "~10.2.5",
+    "@angular/router": "~10.2.5",
     "@auth0/auth0-angular": "^1.10.0",
     "angular-walkthrough": "^0.8.2",
     "apexcharts": "^3.24.0",
@@ -38,16 +38,16 @@
     "recordrtc": "^5.6.1",
     "rxjs": "~6.5.4",
     "sweetalert2": "^10.13.3",
-    "tslib": "^1.14.1",
+    "tslib": "^2.0.0",
     "wavesurfer": "^1.3.4",
     "zone.js": "~0.10.2"
   },
   "devDependencies": {
     "@angular-devkit/architect": ">= 0.900 < 0.1200",
-    "@angular-devkit/build-angular": "~0.900.7",
-    "@angular/cli": "~9.0.7",
-    "@angular/compiler-cli": "~9.0.7",
-    "@angular/language-service": "~9.0.7",
+    "@angular-devkit/build-angular": "~0.1002.4",
+    "@angular/cli": "~10.2.4",
+    "@angular/compiler-cli": "~10.2.5",
+    "@angular/language-service": "~10.2.5",
     "@types/jasmine": "~3.5.0",
     "@types/jasminewd2": "~2.0.3",
     "@types/node": "^12.11.1",
@@ -57,16 +57,16 @@
     "inquirer": "^6.2.2",
     "inquirer-autocomplete-prompt": "^1.0.1",
     "jasmine-core": "~3.5.0",
-    "jasmine-spec-reporter": "~4.2.1",
-    "karma": "~4.3.0",
+    "jasmine-spec-reporter": "~5.0.0",
+    "karma": "~5.0.0",
     "karma-chrome-launcher": "~3.1.0",
-    "karma-coverage-istanbul-reporter": "~2.1.0",
-    "karma-jasmine": "~2.0.1",
-    "karma-jasmine-html-reporter": "^1.4.2",
+    "karma-coverage-istanbul-reporter": "~3.0.2",
+    "karma-jasmine": "~4.0.0",
+    "karma-jasmine-html-reporter": "^1.5.0",
     "open": "^7.0.3",
-    "protractor": "~5.4.3",
+    "protractor": "~7.0.0",
     "ts-node": "~8.3.0",
-    "tslint": "~5.18.0",
-    "typescript": "~3.7.5"
+    "tslint": "~6.1.0",
+    "typescript": "~4.0.8"
   }
 }
diff --git a/tsconfig.json b/tsconfig.json
index 8538992..2b58f9c 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -7,7 +7,7 @@
         "declaration": false,
         "downlevelIteration": true,
         "experimentalDecorators": true,
-        "module": "esnext",
+        "module": "es2020",
         "moduleResolution": "node",
         "importHelpers": true,
         "target": "es2015",
diff --git a/tslint.json b/tslint.json
index c8d70f1..6ccb655 100644
--- a/tslint.json
+++ b/tslint.json
@@ -1,13 +1,21 @@
 {
   "extends": "tslint:recommended",
   "rules": {
+    "align": {
+      "options": [
+        "parameters",
+        "statements"
+      ]
+    },
     "array-type": false,
     "arrow-parens": false,
+    "arrow-return-shorthand": true,
     "deprecation": {
       "severity": "warning"
     },
     "component-class-suffix": true,
     "contextual-lifecycle": true,
+    "curly": true,
     "directive-class-suffix": true,
     "directive-selector": [
       true,
@@ -21,10 +29,17 @@
       "app",
       "kebab-case"
     ],
+    "eofline": true,
     "import-blacklist": [
       true,
       "rxjs/Rx"
     ],
+    "import-spacing": true,
+    "indent": {
+      "options": [
+        "spaces"
+      ]
+    },
     "interface-name": false,
     "max-classes-per-file": false,
     "max-line-length": [
@@ -79,11 +94,60 @@
     "no-output-native": true,
     "no-output-on-prefix": true,
     "no-output-rename": true,
+    "semicolon": {
+      "options": [
+        "always"
+      ]
+    },
+    "space-before-function-paren": {
+      "options": {
+        "anonymous": "never",
+        "asyncArrow": "always",
+        "constructor": "never",
+        "method": "never",
+        "named": "never"
+      }
+    },
     "no-outputs-metadata-property": true,
     "template-banana-in-box": true,
     "template-no-negated-async": true,
+    "typedef-whitespace": {
+      "options": [
+        {
+          "call-signature": "nospace",
+          "index-signature": "nospace",
+          "parameter": "nospace",
+          "property-declaration": "nospace",
+          "variable-declaration": "nospace"
+        },
+        {
+          "call-signature": "onespace",
+          "index-signature": "onespace",
+          "parameter": "onespace",
+          "property-declaration": "onespace",
+          "variable-declaration": "onespace"
+        }
+      ]
+    },
     "use-lifecycle-interface": true,
-    "use-pipe-transform-interface": true
+    "use-pipe-transform-interface": true,
+    "variable-name": {
+      "options": [
+        "ban-keywords",
+        "check-format",
+        "allow-pascal-case"
+      ]
+    },
+    "whitespace": {
+      "options": [
+        "check-branch",
+        "check-decl",
+        "check-operator",
+        "check-separator",
+        "check-type",
+        "check-typecast"
+      ]
+    }
   },
   "rulesDirectory": [
     "codelyzer"
-- 
GitLab


From ce89caef7a0a440cc6f7e5e94c28c396a2956d29 Mon Sep 17 00:00:00 2001
From: ramesh <rdramesh2009@gmail.com>
Date: Mon, 11 Jul 2022 14:34:44 -0400
Subject: [PATCH 11/23] angular 12

---
 angular.json                                  |    1 -
 package-lock.json                             | 6830 ++++++-----------
 package.json                                  |   36 +-
 src/app/app-routing.module.ts                 |    2 +-
 src/app/app.component.spec.ts                 |    4 +-
 .../about-comp/about-comp.component.spec.ts   |    4 +-
 .../consent-form.component.spec.ts            |    4 +-
 .../cpcq-form/cpcq-form.component.spec.ts     |    4 +-
 .../dialog-form/dialog-form.component.spec.ts |    4 +-
 .../dashboard-dialo.component.spec.ts         |    4 +-
 .../dashboard/dashboard.component.spec.ts     |    4 +-
 .../final-dashboard.component.spec.ts         |    4 +-
 .../final-feedback.component.spec.ts          |    4 +-
 .../first-form/first-form.component.spec.ts   |    4 +-
 .../footer/footer.component.spec.ts           |    4 +-
 .../graph-page/graph-page.component.spec.ts   |    4 +-
 .../header/header.component.spec.ts           |    4 +-
 .../home-page/home-page.component.spec.ts     |    4 +-
 .../main-game/dialog/dialog.component.spec.ts |    4 +-
 .../main-game/main-game.component.spec.ts     |    4 +-
 .../post-survey/post-survey.component.spec.ts |    4 +-
 .../dialog-pdf/dialog-pdf.component.spec.ts   |    4 +-
 .../pre-survey/pre-survey.component.spec.ts   |    4 +-
 .../register-component.component.spec.ts      |    4 +-
 .../result-dashboard.component.spec.ts        |    4 +-
 .../score-page/score-page.component.spec.ts   |    4 +-
 .../my-overlay/my-overlay.component.spec.ts   |    4 +-
 .../components/test/test.component.spec.ts    |    4 +-
 .../trial-component.component.spec.ts         |    4 +-
 .../unpacking-page.component.spec.ts          |    4 +-
 30 files changed, 2628 insertions(+), 4345 deletions(-)

diff --git a/angular.json b/angular.json
index a7cd4a7..83ee957 100644
--- a/angular.json
+++ b/angular.json
@@ -43,7 +43,6 @@
               "optimization": true,
               "outputHashing": "all",
               "sourceMap": false,
-              "extractCss": true,
               "namedChunks": false,
               "extractLicenses": true,
               "vendorChunk": false,
diff --git a/package-lock.json b/package-lock.json
index 3b677d9..a89ddbf 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5,137 +5,120 @@
   "requires": true,
   "dependencies": {
     "@angular-devkit/architect": {
-      "version": "0.900.7",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.7.tgz",
-      "integrity": "sha512-hfiTVYc72kzbXrzK4tea6jnTDnSKpE1D+vEptBXN2tdXEVNEAQI5Qm5L1zVDtt16UdqoUTUypIgUc9jcNH1mUQ==",
+      "version": "0.1102.19",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1102.19.tgz",
+      "integrity": "sha512-5Opv6H+XyCkuQvQ1jsxw416YqMDPX3dVonMarFGBPLBe8YEXLRTJ60dvmuLsLpWk6ccTd3XiNT7WEJy4ctDc2Q==",
       "dev": true,
       "requires": {
-        "@angular-devkit/core": "9.0.7",
-        "rxjs": "6.5.3"
+        "@angular-devkit/core": "11.2.19",
+        "rxjs": "6.6.3"
       },
       "dependencies": {
         "rxjs": {
-          "version": "6.5.3",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
-          "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
+          "version": "6.6.3",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
+          "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
           "dev": true,
           "requires": {
             "tslib": "^1.9.0"
-          },
-          "dependencies": {
-            "tslib": {
-              "version": "1.14.1",
-              "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-              "dev": true
-            }
           }
+        },
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+          "dev": true
         }
       }
     },
     "@angular-devkit/build-angular": {
-      "version": "0.1002.4",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.1002.4.tgz",
-      "integrity": "sha512-0jo8fCbOyo1HGRDKBVzIzmGd3/Z+x5YP/9t1QHQrPTq9gRoVI+1vFgrKh7XApmGPa/S4bN6hows1wnGzTq5xJg==",
-      "dev": true,
-      "requires": {
-        "@angular-devkit/architect": "0.1002.4",
-        "@angular-devkit/build-optimizer": "0.1002.4",
-        "@angular-devkit/build-webpack": "0.1002.4",
-        "@angular-devkit/core": "10.2.4",
-        "@babel/core": "7.11.1",
-        "@babel/generator": "7.11.0",
-        "@babel/plugin-transform-runtime": "7.11.0",
-        "@babel/preset-env": "7.11.0",
-        "@babel/runtime": "7.11.2",
-        "@babel/template": "7.10.4",
+      "version": "0.1102.19",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.1102.19.tgz",
+      "integrity": "sha512-frI8UyujPB5WV7l9uecH8Ev73TWTV7xEHrwYIKryD/mVmqeg64ILi4/ATPHm1qGFjAH27WWHtzL2vnik5wBlNg==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/architect": "0.1102.19",
+        "@angular-devkit/build-optimizer": "0.1102.19",
+        "@angular-devkit/build-webpack": "0.1102.19",
+        "@angular-devkit/core": "11.2.19",
+        "@babel/core": "7.12.10",
+        "@babel/generator": "7.12.11",
+        "@babel/plugin-transform-async-to-generator": "7.12.1",
+        "@babel/plugin-transform-runtime": "7.12.10",
+        "@babel/preset-env": "7.12.11",
+        "@babel/runtime": "7.12.5",
+        "@babel/template": "7.12.7",
+        "@discoveryjs/json-ext": "0.5.2",
         "@jsdevtools/coverage-istanbul-loader": "3.0.5",
-        "@ngtools/webpack": "10.2.4",
-        "autoprefixer": "9.8.6",
-        "babel-loader": "8.1.0",
+        "@ngtools/webpack": "11.2.19",
+        "ansi-colors": "4.1.1",
+        "autoprefixer": "10.2.4",
+        "babel-loader": "8.2.2",
         "browserslist": "^4.9.1",
         "cacache": "15.0.5",
         "caniuse-lite": "^1.0.30001032",
-        "circular-dependency-plugin": "5.2.0",
-        "copy-webpack-plugin": "6.0.3",
-        "core-js": "3.6.4",
-        "css-loader": "4.2.2",
-        "cssnano": "4.1.10",
-        "file-loader": "6.0.0",
+        "circular-dependency-plugin": "5.2.2",
+        "copy-webpack-plugin": "6.3.2",
+        "core-js": "3.8.3",
+        "critters": "0.0.12",
+        "css-loader": "5.0.1",
+        "cssnano": "5.0.2",
+        "file-loader": "6.2.0",
         "find-cache-dir": "3.3.1",
         "glob": "7.1.6",
-        "jest-worker": "26.3.0",
+        "https-proxy-agent": "5.0.0",
+        "inquirer": "7.3.3",
+        "jest-worker": "26.6.2",
         "karma-source-map-support": "1.4.0",
-        "less-loader": "6.2.0",
-        "license-webpack-plugin": "2.3.0",
+        "less": "4.1.1",
+        "less-loader": "7.3.0",
+        "license-webpack-plugin": "2.3.11",
         "loader-utils": "2.0.0",
-        "mini-css-extract-plugin": "0.10.0",
+        "mini-css-extract-plugin": "1.3.5",
         "minimatch": "3.0.4",
-        "open": "7.2.0",
-        "parse5": "6.0.1",
-        "parse5-htmlparser2-tree-adapter": "6.0.1",
+        "open": "7.4.0",
+        "ora": "5.3.0",
+        "parse5-html-rewriting-stream": "6.0.1",
         "pnp-webpack-plugin": "1.6.4",
-        "postcss": "7.0.32",
-        "postcss-import": "12.0.1",
-        "postcss-loader": "3.0.0",
-        "raw-loader": "4.0.1",
+        "postcss": "8.2.15",
+        "postcss-import": "14.0.0",
+        "postcss-loader": "4.2.0",
+        "raw-loader": "4.0.2",
         "regenerator-runtime": "0.13.7",
-        "resolve-url-loader": "3.1.2",
+        "resolve-url-loader": "4.0.0",
         "rimraf": "3.0.2",
-        "rollup": "2.26.5",
-        "rxjs": "6.6.2",
-        "sass": "1.26.10",
-        "sass-loader": "10.0.1",
-        "semver": "7.3.2",
+        "rollup": "2.38.4",
+        "rxjs": "6.6.3",
+        "sass": "1.32.6",
+        "sass-loader": "10.1.1",
+        "semver": "7.3.4",
         "source-map": "0.7.3",
-        "source-map-loader": "1.0.2",
+        "source-map-loader": "1.1.3",
         "source-map-support": "0.5.19",
-        "speed-measure-webpack-plugin": "1.3.3",
-        "style-loader": "1.2.1",
+        "speed-measure-webpack-plugin": "1.4.2",
+        "style-loader": "2.0.0",
         "stylus": "0.54.8",
-        "stylus-loader": "3.0.2",
-        "terser": "5.3.0",
-        "terser-webpack-plugin": "4.1.0",
+        "stylus-loader": "4.3.3",
+        "terser": "5.5.1",
+        "terser-webpack-plugin": "4.2.3",
+        "text-table": "0.2.0",
         "tree-kill": "1.2.2",
-        "webpack": "4.44.1",
+        "webpack": "4.44.2",
         "webpack-dev-middleware": "3.7.2",
-        "webpack-dev-server": "3.11.0",
-        "webpack-merge": "4.2.2",
-        "webpack-sources": "1.4.3",
-        "webpack-subresource-integrity": "1.4.1",
+        "webpack-dev-server": "3.11.3",
+        "webpack-merge": "5.7.3",
+        "webpack-sources": "2.2.0",
+        "webpack-subresource-integrity": "1.5.2",
         "worker-plugin": "5.0.0"
       },
       "dependencies": {
-        "@angular-devkit/architect": {
-          "version": "0.1002.4",
-          "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1002.4.tgz",
-          "integrity": "sha512-Vrb2XSnvqj4RByqSWPeG/o9BSNX2DL3pxwQgLMrxofG8/+1VHQ2MsN/KTxBnEZtqeW4/l2QWTsQyzY5frJI69A==",
-          "dev": true,
-          "requires": {
-            "@angular-devkit/core": "10.2.4",
-            "rxjs": "6.6.2"
-          }
-        },
-        "@angular-devkit/core": {
-          "version": "10.2.4",
-          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.2.4.tgz",
-          "integrity": "sha512-gnm/+Iyaa6Jt3E803bpTjkwDAIb0AhP9badaGwbx44+bhbNSE2WzOBmdsQrsxJXHAMEG9CGeBzeRd8XZtLACWg==",
-          "dev": true,
-          "requires": {
-            "ajv": "6.12.4",
-            "fast-json-stable-stringify": "2.1.0",
-            "magic-string": "0.25.7",
-            "rxjs": "6.6.2",
-            "source-map": "0.7.3"
-          }
-        },
         "@babel/generator": {
-          "version": "7.11.0",
-          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz",
-          "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==",
+          "version": "7.12.11",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz",
+          "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==",
           "dev": true,
           "requires": {
-            "@babel/types": "^7.11.0",
+            "@babel/types": "^7.12.11",
             "jsesc": "^2.5.1",
             "source-map": "^0.5.0"
           },
@@ -149,40 +132,89 @@
           }
         },
         "@babel/template": {
-          "version": "7.10.4",
-          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz",
-          "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==",
+          "version": "7.12.7",
+          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz",
+          "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==",
           "dev": true,
           "requires": {
             "@babel/code-frame": "^7.10.4",
-            "@babel/parser": "^7.10.4",
-            "@babel/types": "^7.10.4"
+            "@babel/parser": "^7.12.7",
+            "@babel/types": "^7.12.7"
           }
         },
-        "ajv": {
-          "version": "6.12.4",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz",
-          "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==",
+        "agent-base": {
+          "version": "6.0.2",
+          "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+          "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
           "dev": true,
           "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
+            "debug": "4"
           }
         },
-        "fast-deep-equal": {
-          "version": "3.1.3",
-          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+        "ansi-escapes": {
+          "version": "4.3.2",
+          "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+          "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+          "dev": true,
+          "requires": {
+            "type-fest": "^0.21.3"
+          }
+        },
+        "ansi-regex": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+          "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
           "dev": true
         },
-        "fast-json-stable-stringify": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-          "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "cli-width": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
+          "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
+          "dev": true
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
           "dev": true
         },
+        "figures": {
+          "version": "3.2.0",
+          "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
+          "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+          "dev": true,
+          "requires": {
+            "escape-string-regexp": "^1.0.5"
+          }
+        },
         "glob": {
           "version": "7.1.6",
           "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
@@ -197,25 +229,64 @@
             "path-is-absolute": "^1.0.0"
           }
         },
-        "magic-string": {
-          "version": "0.25.7",
-          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
-          "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true
+        },
+        "https-proxy-agent": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
+          "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
           "dev": true,
           "requires": {
-            "sourcemap-codec": "^1.4.4"
+            "agent-base": "6",
+            "debug": "4"
           }
         },
-        "open": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/open/-/open-7.2.0.tgz",
-          "integrity": "sha512-4HeyhxCvBTI5uBePsAdi55C5fmqnWZ2e2MlmvWi5KW5tdH5rxoiv/aMtbeVxKZc3eWkT1GymMnLG8XC4Rq4TDQ==",
+        "inquirer": {
+          "version": "7.3.3",
+          "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz",
+          "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
+          "dev": true,
+          "requires": {
+            "ansi-escapes": "^4.2.1",
+            "chalk": "^4.1.0",
+            "cli-cursor": "^3.1.0",
+            "cli-width": "^3.0.0",
+            "external-editor": "^3.0.3",
+            "figures": "^3.0.0",
+            "lodash": "^4.17.19",
+            "mute-stream": "0.0.8",
+            "run-async": "^2.4.0",
+            "rxjs": "^6.6.0",
+            "string-width": "^4.1.0",
+            "strip-ansi": "^6.0.0",
+            "through": "^2.3.6"
+          }
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+          "dev": true
+        },
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
           "dev": true,
           "requires": {
-            "is-docker": "^2.0.0",
-            "is-wsl": "^2.1.1"
+            "yallist": "^4.0.0"
           }
         },
+        "mute-stream": {
+          "version": "0.0.8",
+          "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+          "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+          "dev": true
+        },
         "rimraf": {
           "version": "3.0.2",
           "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -226,27 +297,22 @@
           }
         },
         "rxjs": {
-          "version": "6.6.2",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz",
-          "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==",
+          "version": "6.6.3",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
+          "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
           "dev": true,
           "requires": {
             "tslib": "^1.9.0"
-          },
-          "dependencies": {
-            "tslib": {
-              "version": "1.14.1",
-              "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-              "dev": true
-            }
           }
         },
         "semver": {
-          "version": "7.3.2",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
-          "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
-          "dev": true
+          "version": "7.3.4",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
+          "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
         },
         "source-map-support": {
           "version": "0.5.19",
@@ -265,243 +331,175 @@
               "dev": true
             }
           }
+        },
+        "string-width": {
+          "version": "4.2.3",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.1"
+          }
+        },
+        "strip-ansi": {
+          "version": "6.0.1",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+          "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^5.0.1"
+          }
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        },
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+          "dev": true
+        },
+        "type-fest": {
+          "version": "0.21.3",
+          "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+          "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+          "dev": true
         }
       }
     },
     "@angular-devkit/build-optimizer": {
-      "version": "0.1002.4",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1002.4.tgz",
-      "integrity": "sha512-O705v4N+VCaeTnePYVHf+XZaPxU8eTWCx2mYvCmG0urHh1GCehb+vX1v332tTaC2uzMoH+RSg2Nh2apFX+pE0Q==",
+      "version": "0.1102.19",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1102.19.tgz",
+      "integrity": "sha512-3665mNFwOCqD2HR6Kjrwqh+Jh72h3F7AB88p/oWBvH0GolFCz8JnbwUZJkzTtOsKUw5ZC1Z6b/nbUkCJemxFug==",
       "dev": true,
       "requires": {
         "loader-utils": "2.0.0",
         "source-map": "0.7.3",
-        "tslib": "2.0.1",
-        "typescript": "4.0.2",
-        "webpack-sources": "1.4.3"
+        "tslib": "2.1.0",
+        "typescript": "4.1.5",
+        "webpack-sources": "2.2.0"
       },
       "dependencies": {
         "tslib": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz",
-          "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==",
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
+          "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==",
           "dev": true
         },
         "typescript": {
-          "version": "4.0.2",
-          "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz",
-          "integrity": "sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==",
+          "version": "4.1.5",
+          "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz",
+          "integrity": "sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA==",
           "dev": true
         }
       }
     },
     "@angular-devkit/build-webpack": {
-      "version": "0.1002.4",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1002.4.tgz",
-      "integrity": "sha512-5K+hPWmWV1q0HKcvJrTjJ5ABKEQintJlMMaewfmDUDOfslpabtXtY3LF+18a2RBdktAtLpIxoVTX1j/dvotu+w==",
+      "version": "0.1102.19",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1102.19.tgz",
+      "integrity": "sha512-IhN/eeaA2bA1daLTU7YDztxvaS9Hj2J2t889fBYn5xNnM3Z2QqwyncOoj0F0Cumx6tuFtwRSvaKm7+xbbCoJQA==",
       "dev": true,
       "requires": {
-        "@angular-devkit/architect": "0.1002.4",
-        "@angular-devkit/core": "10.2.4",
-        "rxjs": "6.6.2"
+        "@angular-devkit/architect": "0.1102.19",
+        "@angular-devkit/core": "11.2.19",
+        "rxjs": "6.6.3"
       },
       "dependencies": {
-        "@angular-devkit/architect": {
-          "version": "0.1002.4",
-          "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1002.4.tgz",
-          "integrity": "sha512-Vrb2XSnvqj4RByqSWPeG/o9BSNX2DL3pxwQgLMrxofG8/+1VHQ2MsN/KTxBnEZtqeW4/l2QWTsQyzY5frJI69A==",
+        "rxjs": {
+          "version": "6.6.3",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
+          "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
           "dev": true,
           "requires": {
-            "@angular-devkit/core": "10.2.4",
-            "rxjs": "6.6.2"
+            "tslib": "^1.9.0"
           }
         },
-        "@angular-devkit/core": {
-          "version": "10.2.4",
-          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.2.4.tgz",
-          "integrity": "sha512-gnm/+Iyaa6Jt3E803bpTjkwDAIb0AhP9badaGwbx44+bhbNSE2WzOBmdsQrsxJXHAMEG9CGeBzeRd8XZtLACWg==",
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+          "dev": true
+        }
+      }
+    },
+    "@angular-devkit/core": {
+      "version": "11.2.19",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.19.tgz",
+      "integrity": "sha512-kvS0QXDYDatLyf0NYv2sahPYD7kya4g5GpQAV1ddjjLmEVeZssHt+Xfk2tzrkzYzqRMiyspx3HPPrrOnMUAFhQ==",
+      "dev": true,
+      "requires": {
+        "ajv": "6.12.6",
+        "fast-json-stable-stringify": "2.1.0",
+        "magic-string": "0.25.7",
+        "rxjs": "6.6.3",
+        "source-map": "0.7.3"
+      },
+      "dependencies": {
+        "fast-json-stable-stringify": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+          "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+          "dev": true
+        },
+        "rxjs": {
+          "version": "6.6.3",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
+          "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
           "dev": true,
           "requires": {
-            "ajv": "6.12.4",
-            "fast-json-stable-stringify": "2.1.0",
-            "magic-string": "0.25.7",
-            "rxjs": "6.6.2",
-            "source-map": "0.7.3"
+            "tslib": "^1.9.0"
           }
         },
-        "ajv": {
-          "version": "6.12.4",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz",
-          "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
-          }
-        },
-        "fast-deep-equal": {
-          "version": "3.1.3",
-          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-          "dev": true
-        },
-        "fast-json-stable-stringify": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-          "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
           "dev": true
-        },
-        "magic-string": {
-          "version": "0.25.7",
-          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
-          "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
-          "dev": true,
-          "requires": {
-            "sourcemap-codec": "^1.4.4"
-          }
-        },
-        "rxjs": {
-          "version": "6.6.2",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz",
-          "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==",
-          "dev": true,
-          "requires": {
-            "tslib": "^1.9.0"
-          },
-          "dependencies": {
-            "tslib": {
-              "version": "1.14.1",
-              "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-              "dev": true
-            }
-          }
         }
       }
     },
-    "@angular-devkit/core": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.7.tgz",
-      "integrity": "sha512-tMrz36sM1xrwvFf9Qm59GwALscVlMP7rQBjtd0fIR/QbsiOAIX4AQbV+vN6Vtwnzo5NIRZY1IXJUhesWms+h5w==",
+    "@angular-devkit/schematics": {
+      "version": "11.2.19",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-11.2.19.tgz",
+      "integrity": "sha512-jefsjIlaznKxn5+dHSMwvXTO+QKCKtahu/iZoRcdb25JWGXrkj8/quCuj4VeMFY48g/EPjX+9WhDtRl8TjYBiA==",
       "dev": true,
       "requires": {
-        "ajv": "6.10.2",
-        "fast-json-stable-stringify": "2.0.0",
-        "magic-string": "0.25.4",
-        "rxjs": "6.5.3",
-        "source-map": "0.7.3"
+        "@angular-devkit/core": "11.2.19",
+        "ora": "5.3.0",
+        "rxjs": "6.6.3"
       },
       "dependencies": {
         "rxjs": {
-          "version": "6.5.3",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
-          "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
+          "version": "6.6.3",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
+          "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
           "dev": true,
           "requires": {
             "tslib": "^1.9.0"
-          },
-          "dependencies": {
-            "tslib": {
-              "version": "1.14.1",
-              "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-              "dev": true
-            }
-          }
-        }
-      }
-    },
-    "@angular-devkit/schematics": {
-      "version": "10.2.4",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-10.2.4.tgz",
-      "integrity": "sha512-poBGWRwMgnnnmoZfwyOBcQMJm7U5y5XxnxvMsBJEyAQRxfQa+KLvcCfGWXqskNTyBdQFpy4kxmtCzRClkoEiKQ==",
-      "dev": true,
-      "requires": {
-        "@angular-devkit/core": "10.2.4",
-        "ora": "5.0.0",
-        "rxjs": "6.6.2"
-      },
-      "dependencies": {
-        "@angular-devkit/core": {
-          "version": "10.2.4",
-          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.2.4.tgz",
-          "integrity": "sha512-gnm/+Iyaa6Jt3E803bpTjkwDAIb0AhP9badaGwbx44+bhbNSE2WzOBmdsQrsxJXHAMEG9CGeBzeRd8XZtLACWg==",
-          "dev": true,
-          "requires": {
-            "ajv": "6.12.4",
-            "fast-json-stable-stringify": "2.1.0",
-            "magic-string": "0.25.7",
-            "rxjs": "6.6.2",
-            "source-map": "0.7.3"
-          }
-        },
-        "ajv": {
-          "version": "6.12.4",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz",
-          "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
           }
         },
-        "fast-deep-equal": {
-          "version": "3.1.3",
-          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-          "dev": true
-        },
-        "fast-json-stable-stringify": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-          "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
           "dev": true
-        },
-        "magic-string": {
-          "version": "0.25.7",
-          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
-          "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
-          "dev": true,
-          "requires": {
-            "sourcemap-codec": "^1.4.4"
-          }
-        },
-        "rxjs": {
-          "version": "6.6.2",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz",
-          "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==",
-          "dev": true,
-          "requires": {
-            "tslib": "^1.9.0"
-          },
-          "dependencies": {
-            "tslib": {
-              "version": "1.14.1",
-              "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-              "dev": true
-            }
-          }
         }
       }
     },
     "@angular/animations": {
-      "version": "10.2.5",
-      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-10.2.5.tgz",
-      "integrity": "sha512-lIMwjY1pAqpCM4Ayndf2RsvOWRUc5QV7W82XNou6pIBv2T1i1XV6H72I5Sk9Z4sxxBYCWncEaEub+C6NcS8QRg==",
+      "version": "11.2.14",
+      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-11.2.14.tgz",
+      "integrity": "sha512-Heq/nNrCmb3jbkusu+BQszOecfFI/31Oxxj+CDQkqqYpBcswk6bOJLoEE472o+vmgxaXbgeflU9qbIiCQhpMFA==",
       "requires": {
         "tslib": "^2.0.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.4.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
-          "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
-        }
       }
     },
     "@angular/cdk": {
@@ -527,74 +525,35 @@
       }
     },
     "@angular/cli": {
-      "version": "10.2.4",
-      "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-10.2.4.tgz",
-      "integrity": "sha512-S8xAJemX3zE/I/xi81DT6NuzfDwEAEtEeITHxrAH0AHE4kaUBy2O9bAopvYqMNzxs/XGqyxMv8vwYYpGax7EEQ==",
+      "version": "11.2.19",
+      "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-11.2.19.tgz",
+      "integrity": "sha512-B7ZRmcleBF/D6ojt+LOfHE/2Cs3jpHWK/Khho0c2i1jrqLjCTFlgGfK0NKztbFr0lmbhL6Z7Oj4ge3X6dMcSuQ==",
       "dev": true,
       "requires": {
-        "@angular-devkit/architect": "0.1002.4",
-        "@angular-devkit/core": "10.2.4",
-        "@angular-devkit/schematics": "10.2.4",
-        "@schematics/angular": "10.2.4",
-        "@schematics/update": "0.1002.4",
+        "@angular-devkit/architect": "0.1102.19",
+        "@angular-devkit/core": "11.2.19",
+        "@angular-devkit/schematics": "11.2.19",
+        "@schematics/angular": "11.2.19",
+        "@schematics/update": "0.1102.19",
         "@yarnpkg/lockfile": "1.1.0",
         "ansi-colors": "4.1.1",
-        "debug": "4.1.1",
-        "ini": "1.3.6",
+        "debug": "4.3.1",
+        "ini": "2.0.0",
         "inquirer": "7.3.3",
-        "npm-package-arg": "8.0.1",
+        "jsonc-parser": "3.0.0",
+        "npm-package-arg": "8.1.0",
         "npm-pick-manifest": "6.1.0",
-        "open": "7.2.0",
-        "pacote": "9.5.12",
-        "read-package-tree": "5.3.1",
+        "open": "7.4.0",
+        "ora": "5.3.0",
+        "pacote": "11.2.4",
+        "resolve": "1.19.0",
         "rimraf": "3.0.2",
-        "semver": "7.3.2",
-        "symbol-observable": "1.2.0",
+        "semver": "7.3.4",
+        "symbol-observable": "3.0.0",
         "universal-analytics": "0.4.23",
-        "uuid": "8.3.0"
+        "uuid": "8.3.2"
       },
       "dependencies": {
-        "@angular-devkit/architect": {
-          "version": "0.1002.4",
-          "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1002.4.tgz",
-          "integrity": "sha512-Vrb2XSnvqj4RByqSWPeG/o9BSNX2DL3pxwQgLMrxofG8/+1VHQ2MsN/KTxBnEZtqeW4/l2QWTsQyzY5frJI69A==",
-          "dev": true,
-          "requires": {
-            "@angular-devkit/core": "10.2.4",
-            "rxjs": "6.6.2"
-          }
-        },
-        "@angular-devkit/core": {
-          "version": "10.2.4",
-          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.2.4.tgz",
-          "integrity": "sha512-gnm/+Iyaa6Jt3E803bpTjkwDAIb0AhP9badaGwbx44+bhbNSE2WzOBmdsQrsxJXHAMEG9CGeBzeRd8XZtLACWg==",
-          "dev": true,
-          "requires": {
-            "ajv": "6.12.4",
-            "fast-json-stable-stringify": "2.1.0",
-            "magic-string": "0.25.7",
-            "rxjs": "6.6.2",
-            "source-map": "0.7.3"
-          }
-        },
-        "ajv": {
-          "version": "6.12.4",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz",
-          "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
-          }
-        },
-        "ansi-colors": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
-          "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
-          "dev": true
-        },
         "ansi-escapes": {
           "version": "4.3.2",
           "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
@@ -650,27 +609,6 @@
           "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
           "dev": true
         },
-        "debug": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-          "dev": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        },
-        "fast-deep-equal": {
-          "version": "3.1.3",
-          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-          "dev": true
-        },
-        "fast-json-stable-stringify": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-          "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
-          "dev": true
-        },
         "figures": {
           "version": "3.2.0",
           "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
@@ -687,9 +625,9 @@
           "dev": true
         },
         "ini": {
-          "version": "1.3.6",
-          "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.6.tgz",
-          "integrity": "sha512-IZUoxEjNjubzrmvzZU4lKP7OnYmX72XRl3sqkfJhBKweKi5rnGi5+IUdlj/H1M+Ip5JQ1WzaDMOBRY90Ajc5jg==",
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
+          "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
           "dev": true
         },
         "inquirer": {
@@ -719,13 +657,13 @@
           "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
           "dev": true
         },
-        "magic-string": {
-          "version": "0.25.7",
-          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
-          "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
           "dev": true,
           "requires": {
-            "sourcemap-codec": "^1.4.4"
+            "yallist": "^4.0.0"
           }
         },
         "mute-stream": {
@@ -734,16 +672,6 @@
           "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
           "dev": true
         },
-        "open": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/open/-/open-7.2.0.tgz",
-          "integrity": "sha512-4HeyhxCvBTI5uBePsAdi55C5fmqnWZ2e2MlmvWi5KW5tdH5rxoiv/aMtbeVxKZc3eWkT1GymMnLG8XC4Rq4TDQ==",
-          "dev": true,
-          "requires": {
-            "is-docker": "^2.0.0",
-            "is-wsl": "^2.1.1"
-          }
-        },
         "rimraf": {
           "version": "3.0.2",
           "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -754,27 +682,22 @@
           }
         },
         "rxjs": {
-          "version": "6.6.2",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz",
-          "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==",
+          "version": "6.6.7",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+          "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
           "dev": true,
           "requires": {
             "tslib": "^1.9.0"
-          },
-          "dependencies": {
-            "tslib": {
-              "version": "1.14.1",
-              "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-              "dev": true
-            }
           }
         },
         "semver": {
-          "version": "7.3.2",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
-          "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
-          "dev": true
+          "version": "7.3.4",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
+          "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
         },
         "string-width": {
           "version": "4.2.3",
@@ -805,6 +728,12 @@
             "has-flag": "^4.0.0"
           }
         },
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+          "dev": true
+        },
         "type-fest": {
           "version": "0.21.3",
           "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
@@ -812,49 +741,37 @@
           "dev": true
         },
         "uuid": {
-          "version": "8.3.0",
-          "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz",
-          "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==",
+          "version": "8.3.2",
+          "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+          "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
           "dev": true
         }
       }
     },
     "@angular/common": {
-      "version": "10.2.5",
-      "resolved": "https://registry.npmjs.org/@angular/common/-/common-10.2.5.tgz",
-      "integrity": "sha512-553yf6ZUHNqT4XpOqbW7EKKMfX56u/8DkwYXuSv8MAKdl4/AW6gliFOEJGYo04JcKF7Knq3VPvGSCO9kupf0hg==",
+      "version": "11.2.14",
+      "resolved": "https://registry.npmjs.org/@angular/common/-/common-11.2.14.tgz",
+      "integrity": "sha512-ZSLV/3j7eCTyLf/8g4yBFLWySjiLz3vLJAGWscYoUpnJWMnug1VRu6zoF/COxCbtORgE+Wz6K0uhfS6MziBGVw==",
       "requires": {
         "tslib": "^2.0.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.4.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
-          "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
-        }
       }
     },
     "@angular/compiler": {
-      "version": "10.2.5",
-      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-10.2.5.tgz",
-      "integrity": "sha512-ddJiTPCoVBIGjFDYoYWDpmq3Zs8UKoWpzaeW4u+p17gWW54HwyT5XTxrgtbeUmaxIuRdL4/KT1lGHs9/9bwbCA==",
+      "version": "11.2.14",
+      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-11.2.14.tgz",
+      "integrity": "sha512-XBOK3HgA+/y6Cz7kOX4zcJYmgJ264XnfcbXUMU2cD7Ac+mbNhLPKohWrEiSWalfcjnpf5gRfufQrQP7lpAGu0A==",
       "requires": {
         "tslib": "^2.0.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.4.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
-          "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
-        }
       }
     },
     "@angular/compiler-cli": {
-      "version": "10.2.5",
-      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-10.2.5.tgz",
-      "integrity": "sha512-xddSpKudoPidEebIW3x1CvQdx69WEmnFg4DneeQi/tit7mtAKYTJemzYZmP6abdSYhtxovL0bPX5LxYlrtuxIw==",
+      "version": "11.2.14",
+      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-11.2.14.tgz",
+      "integrity": "sha512-A7ltnCp03/EVqK/Q3tVUDsokgz5GHW3dSPGl0Csk7Ys5uBB9ibHTmVt4eiXA4jt0+6Bk+mKxwe5BEDqLvwYFAg==",
       "dev": true,
       "requires": {
+        "@babel/core": "^7.8.6",
+        "@babel/types": "^7.8.6",
         "canonical-path": "1.0.0",
         "chokidar": "^3.0.0",
         "convert-source-map": "^1.5.1",
@@ -867,7 +784,7 @@
         "source-map": "^0.6.1",
         "sourcemap-codec": "^1.4.8",
         "tslib": "^2.0.0",
-        "yargs": "^16.1.1"
+        "yargs": "^16.2.0"
       },
       "dependencies": {
         "ansi-regex": {
@@ -911,12 +828,6 @@
           "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
           "dev": true
         },
-        "get-caller-file": {
-          "version": "2.0.5",
-          "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
-          "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
-          "dev": true
-        },
         "is-fullwidth-code-point": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
@@ -949,12 +860,6 @@
             "ansi-regex": "^5.0.1"
           }
         },
-        "tslib": {
-          "version": "2.4.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
-          "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==",
-          "dev": true
-        },
         "wrap-ansi": {
           "version": "7.0.0",
           "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
@@ -996,18 +901,11 @@
       }
     },
     "@angular/core": {
-      "version": "10.2.5",
-      "resolved": "https://registry.npmjs.org/@angular/core/-/core-10.2.5.tgz",
-      "integrity": "sha512-krhOKNTj5XE92Rk9ASX5KmgTF72j7qT2PLVxrGEVjuUKjBY2XaK3TV0Kotq9zI3qa9WgeCrP/Njn6jlKQCCAEQ==",
+      "version": "11.2.14",
+      "resolved": "https://registry.npmjs.org/@angular/core/-/core-11.2.14.tgz",
+      "integrity": "sha512-vpR4XqBGitk1Faph37CSpemwIYTmJ3pdIVNoHKP6jLonpWu+0azkchf0f7oD8/2ivj2F81opcIw0tcsy/D/5Vg==",
       "requires": {
         "tslib": "^2.0.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.4.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
-          "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
-        }
       }
     },
     "@angular/fire": {
@@ -1026,34 +924,27 @@
       }
     },
     "@angular/forms": {
-      "version": "10.2.5",
-      "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-10.2.5.tgz",
-      "integrity": "sha512-EnycBx8q+DGmPaX4oSjPejJxx9u0TLb5+tpGxYitdOq/eBpQAAYyWKQGKXb1JB46rPVwJr34MmTltHgAN0zUSQ==",
+      "version": "11.2.14",
+      "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-11.2.14.tgz",
+      "integrity": "sha512-4LWqY6KEIk1AZQFnk+4PJSOCamlD4tumuVN06gO4D0dZo9Cx+GcvW6pM6N0CPubRvPs3sScCnu20WT11HNWC1w==",
       "requires": {
         "tslib": "^2.0.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.4.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
-          "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
-        }
       }
     },
     "@angular/language-service": {
-      "version": "10.2.5",
-      "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-10.2.5.tgz",
-      "integrity": "sha512-e9ug9TJG31SeSWl65TglXKWOIATGu/P0jVSGKxGF22vQYlAahdRoFXP56+B9P9k+6cDuYljkjH1rdyCaU3iOPg==",
+      "version": "11.2.14",
+      "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-11.2.14.tgz",
+      "integrity": "sha512-3+0F0X4r1WeNOV6VmaMzYnJENPVmLX2/MX3/lugwZPNYKVXl/oGyh/4PB8ktntIj0tnxQuErzqRSeucNStNGRw==",
       "dev": true
     },
     "@angular/localize": {
-      "version": "10.2.5",
-      "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-10.2.5.tgz",
-      "integrity": "sha512-YgtVQDJLYAuSBMB4a8UBMbO+5g4IEkHszc6vU8P/G/hqWF6hj04uPqNoYqajVeoTTwPrM2If30/pNh15HjRG2A==",
+      "version": "11.2.14",
+      "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-11.2.14.tgz",
+      "integrity": "sha512-ssMuquxxqxA98LgEICEO/3JdmSflWxu5rlm/HPo28bnGiZ4IzDamZjJ1cu4S6RgsonJ1drB3Z8wkidXfEYZiWA==",
       "requires": {
         "@babel/core": "7.8.3",
         "glob": "7.1.2",
-        "yargs": "^16.1.1"
+        "yargs": "^16.2.0"
       },
       "dependencies": {
         "@babel/core": {
@@ -1078,32 +969,6 @@
             "source-map": "^0.5.0"
           }
         },
-        "@babel/generator": {
-          "version": "7.18.7",
-          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz",
-          "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==",
-          "requires": {
-            "@babel/types": "^7.18.7",
-            "@jridgewell/gen-mapping": "^0.3.2",
-            "jsesc": "^2.5.1"
-          },
-          "dependencies": {
-            "@babel/types": {
-              "version": "7.18.8",
-              "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
-              "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
-              "requires": {
-                "@babel/helper-validator-identifier": "^7.18.6",
-                "to-fast-properties": "^2.0.0"
-              }
-            }
-          }
-        },
-        "@babel/helper-validator-identifier": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
-          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g=="
-        },
         "ansi-regex": {
           "version": "5.0.1",
           "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
@@ -1140,11 +1005,6 @@
           "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
           "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
         },
-        "get-caller-file": {
-          "version": "2.0.5",
-          "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
-          "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
-        },
         "glob": {
           "version": "7.1.2",
           "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
@@ -1163,11 +1023,6 @@
           "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
           "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
         },
-        "json5": {
-          "version": "2.2.1",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
-          "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA=="
-        },
         "semver": {
           "version": "5.7.1",
           "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
@@ -1248,48 +1103,27 @@
       }
     },
     "@angular/platform-browser": {
-      "version": "10.2.5",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-10.2.5.tgz",
-      "integrity": "sha512-3JDFRGNxr0IUkjSdGK2Q1BvqnSDpy9YWo0DJP+TEpgW578R84m4X7/wI3jJmFSC2yyouMWrHsot2vcBPAQj89g==",
+      "version": "11.2.14",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-11.2.14.tgz",
+      "integrity": "sha512-fb7b7ss/gRoP8wLAN17W62leMgjynuyjEPU2eUoAAazsG9f2cgM+z3rK29GYncDVyYQxZUZYnjSqvL6GSXx86A==",
       "requires": {
         "tslib": "^2.0.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.4.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
-          "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
-        }
       }
     },
     "@angular/platform-browser-dynamic": {
-      "version": "10.2.5",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-10.2.5.tgz",
-      "integrity": "sha512-7z443I80K2CeqzczlSJ8BlABj0uRgnHUrABE8yLlU2BgifJrriBawzSXEV7UMEN7k7ezbc6NhpOn6Q6BrCKEOA==",
+      "version": "11.2.14",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-11.2.14.tgz",
+      "integrity": "sha512-TWTPdFs6iBBcp+/YMsgCRQwdHpWGq8KjeJDJ2tfatGgBD3Gqt2YaHOMST1zPW6RkrmupytTejuVqXzeaKWFxuw==",
       "requires": {
         "tslib": "^2.0.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.4.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
-          "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
-        }
       }
     },
     "@angular/router": {
-      "version": "10.2.5",
-      "resolved": "https://registry.npmjs.org/@angular/router/-/router-10.2.5.tgz",
-      "integrity": "sha512-AtSMB/d4V+pw/FL4G/mWWoiJJtZ/075TqsGW7uEFKgxS6Gh2kalv6BTMlXVG5GO+2oU0lsuDvguq5E7Atbak3Q==",
+      "version": "11.2.14",
+      "resolved": "https://registry.npmjs.org/@angular/router/-/router-11.2.14.tgz",
+      "integrity": "sha512-3aYBmj+zrEL9yf/ntIQxHIYaWShZOBKP3U07X2mX+TPMpGlvHDnR7L6bWhQVZwewzMMz7YVR16ldg50IFuAlfA==",
       "requires": {
         "tslib": "^2.0.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.4.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
-          "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
-        }
       }
     },
     "@apidevtools/json-schema-ref-parser": {
@@ -1360,58 +1194,28 @@
       "dev": true
     },
     "@babel/core": {
-      "version": "7.11.1",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.1.tgz",
-      "integrity": "sha512-XqF7F6FWQdKGGWAzGELL+aCO1p+lRY5Tj5/tbT3St1G8NaH70jhhDIKknIZaDans0OQBG5wRAldROLHSt44BgQ==",
+      "version": "7.12.10",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz",
+      "integrity": "sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==",
       "dev": true,
       "requires": {
         "@babel/code-frame": "^7.10.4",
-        "@babel/generator": "^7.11.0",
-        "@babel/helper-module-transforms": "^7.11.0",
-        "@babel/helpers": "^7.10.4",
-        "@babel/parser": "^7.11.1",
-        "@babel/template": "^7.10.4",
-        "@babel/traverse": "^7.11.0",
-        "@babel/types": "^7.11.0",
+        "@babel/generator": "^7.12.10",
+        "@babel/helper-module-transforms": "^7.12.1",
+        "@babel/helpers": "^7.12.5",
+        "@babel/parser": "^7.12.10",
+        "@babel/template": "^7.12.7",
+        "@babel/traverse": "^7.12.10",
+        "@babel/types": "^7.12.10",
         "convert-source-map": "^1.7.0",
         "debug": "^4.1.0",
         "gensync": "^1.0.0-beta.1",
         "json5": "^2.1.2",
         "lodash": "^4.17.19",
-        "resolve": "^1.3.2",
         "semver": "^5.4.1",
         "source-map": "^0.5.0"
       },
       "dependencies": {
-        "@babel/generator": {
-          "version": "7.18.7",
-          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz",
-          "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==",
-          "dev": true,
-          "requires": {
-            "@babel/types": "^7.18.7",
-            "@jridgewell/gen-mapping": "^0.3.2",
-            "jsesc": "^2.5.1"
-          },
-          "dependencies": {
-            "@babel/types": {
-              "version": "7.18.8",
-              "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
-              "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
-              "dev": true,
-              "requires": {
-                "@babel/helper-validator-identifier": "^7.18.6",
-                "to-fast-properties": "^2.0.0"
-              }
-            }
-          }
-        },
-        "@babel/helper-validator-identifier": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
-          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
-          "dev": true
-        },
         "semver": {
           "version": "5.7.1",
           "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
@@ -1426,6 +1230,16 @@
         }
       }
     },
+    "@babel/generator": {
+      "version": "7.18.7",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz",
+      "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==",
+      "requires": {
+        "@babel/types": "^7.18.7",
+        "@jridgewell/gen-mapping": "^0.3.2",
+        "jsesc": "^2.5.1"
+      }
+    },
     "@babel/helper-annotate-as-pure": {
       "version": "7.18.6",
       "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
@@ -1433,24 +1247,6 @@
       "dev": true,
       "requires": {
         "@babel/types": "^7.18.6"
-      },
-      "dependencies": {
-        "@babel/helper-validator-identifier": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
-          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
-          "dev": true
-        },
-        "@babel/types": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
-          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "to-fast-properties": "^2.0.0"
-          }
-        }
       }
     },
     "@babel/helper-builder-binary-assignment-operator-visitor": {
@@ -1461,24 +1257,6 @@
       "requires": {
         "@babel/helper-explode-assignable-expression": "^7.18.6",
         "@babel/types": "^7.18.6"
-      },
-      "dependencies": {
-        "@babel/helper-validator-identifier": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
-          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
-          "dev": true
-        },
-        "@babel/types": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
-          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "to-fast-properties": "^2.0.0"
-          }
-        }
       }
     },
     "@babel/helper-compilation-targets": {
@@ -1506,80 +1284,6 @@
         "@babel/helper-optimise-call-expression": "^7.18.6",
         "@babel/helper-replace-supers": "^7.18.6",
         "@babel/helper-split-export-declaration": "^7.18.6"
-      },
-      "dependencies": {
-        "@babel/code-frame": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
-          "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
-          "dev": true,
-          "requires": {
-            "@babel/highlight": "^7.18.6"
-          }
-        },
-        "@babel/helper-function-name": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz",
-          "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==",
-          "dev": true,
-          "requires": {
-            "@babel/template": "^7.18.6",
-            "@babel/types": "^7.18.6"
-          }
-        },
-        "@babel/helper-split-export-declaration": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
-          "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
-          "dev": true,
-          "requires": {
-            "@babel/types": "^7.18.6"
-          }
-        },
-        "@babel/helper-validator-identifier": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
-          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
-          "dev": true
-        },
-        "@babel/highlight": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
-          "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "chalk": "^2.0.0",
-            "js-tokens": "^4.0.0"
-          }
-        },
-        "@babel/parser": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.8.tgz",
-          "integrity": "sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA==",
-          "dev": true
-        },
-        "@babel/template": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz",
-          "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.18.6",
-            "@babel/parser": "^7.18.6",
-            "@babel/types": "^7.18.6"
-          }
-        },
-        "@babel/types": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
-          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "to-fast-properties": "^2.0.0"
-          }
-        }
       }
     },
     "@babel/helper-create-regexp-features-plugin": {
@@ -1604,49 +1308,21 @@
       "dev": true,
       "requires": {
         "@babel/types": "^7.18.6"
-      },
-      "dependencies": {
-        "@babel/helper-validator-identifier": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
-          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
-          "dev": true
-        },
-        "@babel/types": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
-          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "to-fast-properties": "^2.0.0"
-          }
-        }
       }
     },
     "@babel/helper-function-name": {
-      "version": "7.12.11",
-      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz",
-      "integrity": "sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==",
-      "requires": {
-        "@babel/helper-get-function-arity": "^7.12.10",
-        "@babel/template": "^7.12.7",
-        "@babel/types": "^7.12.11"
-      }
-    },
-    "@babel/helper-get-function-arity": {
-      "version": "7.12.10",
-      "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz",
-      "integrity": "sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz",
+      "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==",
       "requires": {
-        "@babel/types": "^7.12.10"
+        "@babel/template": "^7.18.6",
+        "@babel/types": "^7.18.6"
       }
     },
     "@babel/helper-hoist-variables": {
       "version": "7.18.6",
       "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
       "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
-      "dev": true,
       "requires": {
         "@babel/types": "^7.18.6"
       },
@@ -1654,14 +1330,12 @@
         "@babel/helper-validator-identifier": {
           "version": "7.18.6",
           "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
-          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
-          "dev": true
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g=="
         },
         "@babel/types": {
           "version": "7.18.8",
           "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
           "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
-          "dev": true,
           "requires": {
             "@babel/helper-validator-identifier": "^7.18.6",
             "to-fast-properties": "^2.0.0"
@@ -1676,24 +1350,6 @@
       "dev": true,
       "requires": {
         "@babel/types": "^7.18.6"
-      },
-      "dependencies": {
-        "@babel/helper-validator-identifier": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
-          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
-          "dev": true
-        },
-        "@babel/types": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
-          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "to-fast-properties": "^2.0.0"
-          }
-        }
       }
     },
     "@babel/helper-module-imports": {
@@ -1703,24 +1359,6 @@
       "dev": true,
       "requires": {
         "@babel/types": "^7.18.6"
-      },
-      "dependencies": {
-        "@babel/helper-validator-identifier": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
-          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
-          "dev": true
-        },
-        "@babel/types": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
-          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "to-fast-properties": "^2.0.0"
-          }
-        }
       }
     },
     "@babel/helper-module-transforms": {
@@ -1739,106 +1377,11 @@
         "@babel/types": "^7.18.8"
       },
       "dependencies": {
-        "@babel/code-frame": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
-          "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
-          "dev": true,
-          "requires": {
-            "@babel/highlight": "^7.18.6"
-          }
-        },
-        "@babel/generator": {
-          "version": "7.18.7",
-          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz",
-          "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==",
-          "dev": true,
-          "requires": {
-            "@babel/types": "^7.18.7",
-            "@jridgewell/gen-mapping": "^0.3.2",
-            "jsesc": "^2.5.1"
-          }
-        },
-        "@babel/helper-function-name": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz",
-          "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==",
-          "dev": true,
-          "requires": {
-            "@babel/template": "^7.18.6",
-            "@babel/types": "^7.18.6"
-          }
-        },
-        "@babel/helper-split-export-declaration": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
-          "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
-          "dev": true,
-          "requires": {
-            "@babel/types": "^7.18.6"
-          }
-        },
         "@babel/helper-validator-identifier": {
           "version": "7.18.6",
           "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
           "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
           "dev": true
-        },
-        "@babel/highlight": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
-          "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "chalk": "^2.0.0",
-            "js-tokens": "^4.0.0"
-          }
-        },
-        "@babel/parser": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.8.tgz",
-          "integrity": "sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA==",
-          "dev": true
-        },
-        "@babel/template": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz",
-          "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.18.6",
-            "@babel/parser": "^7.18.6",
-            "@babel/types": "^7.18.6"
-          }
-        },
-        "@babel/traverse": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.8.tgz",
-          "integrity": "sha512-UNg/AcSySJYR/+mIcJQDCv00T+AqRO7j/ZEJLzpaYtgM48rMg5MnkJgyNqkzo88+p4tfRvZJCEiwwfG6h4jkRg==",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.18.6",
-            "@babel/generator": "^7.18.7",
-            "@babel/helper-environment-visitor": "^7.18.6",
-            "@babel/helper-function-name": "^7.18.6",
-            "@babel/helper-hoist-variables": "^7.18.6",
-            "@babel/helper-split-export-declaration": "^7.18.6",
-            "@babel/parser": "^7.18.8",
-            "@babel/types": "^7.18.8",
-            "debug": "^4.1.0",
-            "globals": "^11.1.0"
-          }
-        },
-        "@babel/types": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
-          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "to-fast-properties": "^2.0.0"
-          }
         }
       }
     },
@@ -1849,24 +1392,6 @@
       "dev": true,
       "requires": {
         "@babel/types": "^7.18.6"
-      },
-      "dependencies": {
-        "@babel/helper-validator-identifier": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
-          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
-          "dev": true
-        },
-        "@babel/types": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
-          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "to-fast-properties": "^2.0.0"
-          }
-        }
       }
     },
     "@babel/helper-plugin-utils": {
@@ -1885,24 +1410,6 @@
         "@babel/helper-environment-visitor": "^7.18.6",
         "@babel/helper-wrap-function": "^7.18.6",
         "@babel/types": "^7.18.6"
-      },
-      "dependencies": {
-        "@babel/helper-validator-identifier": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
-          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
-          "dev": true
-        },
-        "@babel/types": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
-          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "to-fast-properties": "^2.0.0"
-          }
-        }
       }
     },
     "@babel/helper-replace-supers": {
@@ -1916,109 +1423,6 @@
         "@babel/helper-optimise-call-expression": "^7.18.6",
         "@babel/traverse": "^7.18.6",
         "@babel/types": "^7.18.6"
-      },
-      "dependencies": {
-        "@babel/code-frame": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
-          "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
-          "dev": true,
-          "requires": {
-            "@babel/highlight": "^7.18.6"
-          }
-        },
-        "@babel/generator": {
-          "version": "7.18.7",
-          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz",
-          "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==",
-          "dev": true,
-          "requires": {
-            "@babel/types": "^7.18.7",
-            "@jridgewell/gen-mapping": "^0.3.2",
-            "jsesc": "^2.5.1"
-          }
-        },
-        "@babel/helper-function-name": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz",
-          "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==",
-          "dev": true,
-          "requires": {
-            "@babel/template": "^7.18.6",
-            "@babel/types": "^7.18.6"
-          }
-        },
-        "@babel/helper-split-export-declaration": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
-          "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
-          "dev": true,
-          "requires": {
-            "@babel/types": "^7.18.6"
-          }
-        },
-        "@babel/helper-validator-identifier": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
-          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
-          "dev": true
-        },
-        "@babel/highlight": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
-          "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "chalk": "^2.0.0",
-            "js-tokens": "^4.0.0"
-          }
-        },
-        "@babel/parser": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.8.tgz",
-          "integrity": "sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA==",
-          "dev": true
-        },
-        "@babel/template": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz",
-          "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.18.6",
-            "@babel/parser": "^7.18.6",
-            "@babel/types": "^7.18.6"
-          }
-        },
-        "@babel/traverse": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.8.tgz",
-          "integrity": "sha512-UNg/AcSySJYR/+mIcJQDCv00T+AqRO7j/ZEJLzpaYtgM48rMg5MnkJgyNqkzo88+p4tfRvZJCEiwwfG6h4jkRg==",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.18.6",
-            "@babel/generator": "^7.18.7",
-            "@babel/helper-environment-visitor": "^7.18.6",
-            "@babel/helper-function-name": "^7.18.6",
-            "@babel/helper-hoist-variables": "^7.18.6",
-            "@babel/helper-split-export-declaration": "^7.18.6",
-            "@babel/parser": "^7.18.8",
-            "@babel/types": "^7.18.8",
-            "debug": "^4.1.0",
-            "globals": "^11.1.0"
-          }
-        },
-        "@babel/types": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
-          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "to-fast-properties": "^2.0.0"
-          }
-        }
       }
     },
     "@babel/helper-simple-access": {
@@ -2028,24 +1432,6 @@
       "dev": true,
       "requires": {
         "@babel/types": "^7.18.6"
-      },
-      "dependencies": {
-        "@babel/helper-validator-identifier": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
-          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
-          "dev": true
-        },
-        "@babel/types": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
-          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "to-fast-properties": "^2.0.0"
-          }
-        }
       }
     },
     "@babel/helper-skip-transparent-expression-wrappers": {
@@ -2055,32 +1441,14 @@
       "dev": true,
       "requires": {
         "@babel/types": "^7.18.6"
-      },
-      "dependencies": {
-        "@babel/helper-validator-identifier": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
-          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
-          "dev": true
-        },
-        "@babel/types": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
-          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "to-fast-properties": "^2.0.0"
-          }
-        }
       }
     },
     "@babel/helper-split-export-declaration": {
-      "version": "7.12.11",
-      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz",
-      "integrity": "sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
+      "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
       "requires": {
-        "@babel/types": "^7.12.11"
+        "@babel/types": "^7.18.6"
       }
     },
     "@babel/helper-validator-identifier": {
@@ -2104,109 +1472,6 @@
         "@babel/template": "^7.18.6",
         "@babel/traverse": "^7.18.6",
         "@babel/types": "^7.18.6"
-      },
-      "dependencies": {
-        "@babel/code-frame": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
-          "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
-          "dev": true,
-          "requires": {
-            "@babel/highlight": "^7.18.6"
-          }
-        },
-        "@babel/generator": {
-          "version": "7.18.7",
-          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz",
-          "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==",
-          "dev": true,
-          "requires": {
-            "@babel/types": "^7.18.7",
-            "@jridgewell/gen-mapping": "^0.3.2",
-            "jsesc": "^2.5.1"
-          }
-        },
-        "@babel/helper-function-name": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz",
-          "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==",
-          "dev": true,
-          "requires": {
-            "@babel/template": "^7.18.6",
-            "@babel/types": "^7.18.6"
-          }
-        },
-        "@babel/helper-split-export-declaration": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
-          "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
-          "dev": true,
-          "requires": {
-            "@babel/types": "^7.18.6"
-          }
-        },
-        "@babel/helper-validator-identifier": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
-          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
-          "dev": true
-        },
-        "@babel/highlight": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
-          "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "chalk": "^2.0.0",
-            "js-tokens": "^4.0.0"
-          }
-        },
-        "@babel/parser": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.8.tgz",
-          "integrity": "sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA==",
-          "dev": true
-        },
-        "@babel/template": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz",
-          "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.18.6",
-            "@babel/parser": "^7.18.6",
-            "@babel/types": "^7.18.6"
-          }
-        },
-        "@babel/traverse": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.8.tgz",
-          "integrity": "sha512-UNg/AcSySJYR/+mIcJQDCv00T+AqRO7j/ZEJLzpaYtgM48rMg5MnkJgyNqkzo88+p4tfRvZJCEiwwfG6h4jkRg==",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.18.6",
-            "@babel/generator": "^7.18.7",
-            "@babel/helper-environment-visitor": "^7.18.6",
-            "@babel/helper-function-name": "^7.18.6",
-            "@babel/helper-hoist-variables": "^7.18.6",
-            "@babel/helper-split-export-declaration": "^7.18.6",
-            "@babel/parser": "^7.18.8",
-            "@babel/types": "^7.18.8",
-            "debug": "^4.1.0",
-            "globals": "^11.1.0"
-          }
-        },
-        "@babel/types": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
-          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "to-fast-properties": "^2.0.0"
-          }
-        }
       }
     },
     "@babel/helpers": {
@@ -2215,109 +1480,8 @@
       "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==",
       "requires": {
         "@babel/template": "^7.18.6",
-        "@babel/traverse": "^7.18.6",
-        "@babel/types": "^7.18.6"
-      },
-      "dependencies": {
-        "@babel/code-frame": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
-          "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
-          "requires": {
-            "@babel/highlight": "^7.18.6"
-          }
-        },
-        "@babel/generator": {
-          "version": "7.18.7",
-          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz",
-          "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==",
-          "requires": {
-            "@babel/types": "^7.18.7",
-            "@jridgewell/gen-mapping": "^0.3.2",
-            "jsesc": "^2.5.1"
-          }
-        },
-        "@babel/helper-function-name": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz",
-          "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==",
-          "requires": {
-            "@babel/template": "^7.18.6",
-            "@babel/types": "^7.18.6"
-          }
-        },
-        "@babel/helper-hoist-variables": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
-          "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
-          "requires": {
-            "@babel/types": "^7.18.6"
-          }
-        },
-        "@babel/helper-split-export-declaration": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
-          "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
-          "requires": {
-            "@babel/types": "^7.18.6"
-          }
-        },
-        "@babel/helper-validator-identifier": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
-          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g=="
-        },
-        "@babel/highlight": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
-          "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "chalk": "^2.0.0",
-            "js-tokens": "^4.0.0"
-          }
-        },
-        "@babel/parser": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.8.tgz",
-          "integrity": "sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA=="
-        },
-        "@babel/template": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz",
-          "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==",
-          "requires": {
-            "@babel/code-frame": "^7.18.6",
-            "@babel/parser": "^7.18.6",
-            "@babel/types": "^7.18.6"
-          }
-        },
-        "@babel/traverse": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.8.tgz",
-          "integrity": "sha512-UNg/AcSySJYR/+mIcJQDCv00T+AqRO7j/ZEJLzpaYtgM48rMg5MnkJgyNqkzo88+p4tfRvZJCEiwwfG6h4jkRg==",
-          "requires": {
-            "@babel/code-frame": "^7.18.6",
-            "@babel/generator": "^7.18.7",
-            "@babel/helper-environment-visitor": "^7.18.6",
-            "@babel/helper-function-name": "^7.18.6",
-            "@babel/helper-hoist-variables": "^7.18.6",
-            "@babel/helper-split-export-declaration": "^7.18.6",
-            "@babel/parser": "^7.18.8",
-            "@babel/types": "^7.18.8",
-            "debug": "^4.1.0",
-            "globals": "^11.1.0"
-          }
-        },
-        "@babel/types": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
-          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "to-fast-properties": "^2.0.0"
-          }
-        }
+        "@babel/traverse": "^7.18.6",
+        "@babel/types": "^7.18.6"
       }
     },
     "@babel/highlight": {
@@ -2331,9 +1495,9 @@
       }
     },
     "@babel/parser": {
-      "version": "7.12.11",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz",
-      "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg=="
+      "version": "7.18.8",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.8.tgz",
+      "integrity": "sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA=="
     },
     "@babel/plugin-proposal-async-generator-functions": {
       "version": "7.18.6",
@@ -2589,14 +1753,14 @@
       }
     },
     "@babel/plugin-transform-async-to-generator": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz",
-      "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==",
+      "version": "7.12.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz",
+      "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-imports": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/helper-remap-async-to-generator": "^7.18.6"
+        "@babel/helper-module-imports": "^7.12.1",
+        "@babel/helper-plugin-utils": "^7.10.4",
+        "@babel/helper-remap-async-to-generator": "^7.12.1"
       }
     },
     "@babel/plugin-transform-block-scoped-functions": {
@@ -2631,80 +1795,6 @@
         "@babel/helper-replace-supers": "^7.18.6",
         "@babel/helper-split-export-declaration": "^7.18.6",
         "globals": "^11.1.0"
-      },
-      "dependencies": {
-        "@babel/code-frame": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
-          "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
-          "dev": true,
-          "requires": {
-            "@babel/highlight": "^7.18.6"
-          }
-        },
-        "@babel/helper-function-name": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz",
-          "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==",
-          "dev": true,
-          "requires": {
-            "@babel/template": "^7.18.6",
-            "@babel/types": "^7.18.6"
-          }
-        },
-        "@babel/helper-split-export-declaration": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
-          "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
-          "dev": true,
-          "requires": {
-            "@babel/types": "^7.18.6"
-          }
-        },
-        "@babel/helper-validator-identifier": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
-          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
-          "dev": true
-        },
-        "@babel/highlight": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
-          "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "chalk": "^2.0.0",
-            "js-tokens": "^4.0.0"
-          }
-        },
-        "@babel/parser": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.8.tgz",
-          "integrity": "sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA==",
-          "dev": true
-        },
-        "@babel/template": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz",
-          "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.18.6",
-            "@babel/parser": "^7.18.6",
-            "@babel/types": "^7.18.6"
-          }
-        },
-        "@babel/types": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
-          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "to-fast-properties": "^2.0.0"
-          }
-        }
       }
     },
     "@babel/plugin-transform-computed-properties": {
@@ -2772,71 +1862,6 @@
         "@babel/helper-compilation-targets": "^7.18.6",
         "@babel/helper-function-name": "^7.18.6",
         "@babel/helper-plugin-utils": "^7.18.6"
-      },
-      "dependencies": {
-        "@babel/code-frame": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
-          "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
-          "dev": true,
-          "requires": {
-            "@babel/highlight": "^7.18.6"
-          }
-        },
-        "@babel/helper-function-name": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz",
-          "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==",
-          "dev": true,
-          "requires": {
-            "@babel/template": "^7.18.6",
-            "@babel/types": "^7.18.6"
-          }
-        },
-        "@babel/helper-validator-identifier": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
-          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
-          "dev": true
-        },
-        "@babel/highlight": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
-          "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "chalk": "^2.0.0",
-            "js-tokens": "^4.0.0"
-          }
-        },
-        "@babel/parser": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.8.tgz",
-          "integrity": "sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA==",
-          "dev": true
-        },
-        "@babel/template": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz",
-          "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==",
-          "dev": true,
-          "requires": {
-            "@babel/code-frame": "^7.18.6",
-            "@babel/parser": "^7.18.6",
-            "@babel/types": "^7.18.6"
-          }
-        },
-        "@babel/types": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
-          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "to-fast-properties": "^2.0.0"
-          }
-        }
       }
     },
     "@babel/plugin-transform-literals": {
@@ -2978,14 +2003,13 @@
       }
     },
     "@babel/plugin-transform-runtime": {
-      "version": "7.11.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.11.0.tgz",
-      "integrity": "sha512-LFEsP+t3wkYBlis8w6/kmnd6Kb1dxTd+wGJ8MlxTGzQo//ehtqlVL4S9DNUa53+dtPSQobN2CXx4d81FqC58cw==",
+      "version": "7.12.10",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.10.tgz",
+      "integrity": "sha512-xOrUfzPxw7+WDm9igMgQCbO3cJKymX7dFdsgRr1eu9n3KjjyU4pptIXbXPseQDquw+W+RuJEJMHKHNsPNNm3CA==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-imports": "^7.10.4",
+        "@babel/helper-module-imports": "^7.12.5",
         "@babel/helper-plugin-utils": "^7.10.4",
-        "resolve": "^1.8.1",
         "semver": "^5.5.1"
       },
       "dependencies": {
@@ -3063,30 +2087,31 @@
       }
     },
     "@babel/preset-env": {
-      "version": "7.11.0",
-      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.0.tgz",
-      "integrity": "sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg==",
+      "version": "7.12.11",
+      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz",
+      "integrity": "sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==",
       "dev": true,
       "requires": {
-        "@babel/compat-data": "^7.11.0",
-        "@babel/helper-compilation-targets": "^7.10.4",
-        "@babel/helper-module-imports": "^7.10.4",
+        "@babel/compat-data": "^7.12.7",
+        "@babel/helper-compilation-targets": "^7.12.5",
+        "@babel/helper-module-imports": "^7.12.5",
         "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/plugin-proposal-async-generator-functions": "^7.10.4",
-        "@babel/plugin-proposal-class-properties": "^7.10.4",
-        "@babel/plugin-proposal-dynamic-import": "^7.10.4",
-        "@babel/plugin-proposal-export-namespace-from": "^7.10.4",
-        "@babel/plugin-proposal-json-strings": "^7.10.4",
-        "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0",
-        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4",
-        "@babel/plugin-proposal-numeric-separator": "^7.10.4",
-        "@babel/plugin-proposal-object-rest-spread": "^7.11.0",
-        "@babel/plugin-proposal-optional-catch-binding": "^7.10.4",
-        "@babel/plugin-proposal-optional-chaining": "^7.11.0",
-        "@babel/plugin-proposal-private-methods": "^7.10.4",
-        "@babel/plugin-proposal-unicode-property-regex": "^7.10.4",
+        "@babel/helper-validator-option": "^7.12.11",
+        "@babel/plugin-proposal-async-generator-functions": "^7.12.1",
+        "@babel/plugin-proposal-class-properties": "^7.12.1",
+        "@babel/plugin-proposal-dynamic-import": "^7.12.1",
+        "@babel/plugin-proposal-export-namespace-from": "^7.12.1",
+        "@babel/plugin-proposal-json-strings": "^7.12.1",
+        "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1",
+        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
+        "@babel/plugin-proposal-numeric-separator": "^7.12.7",
+        "@babel/plugin-proposal-object-rest-spread": "^7.12.1",
+        "@babel/plugin-proposal-optional-catch-binding": "^7.12.1",
+        "@babel/plugin-proposal-optional-chaining": "^7.12.7",
+        "@babel/plugin-proposal-private-methods": "^7.12.1",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.12.1",
         "@babel/plugin-syntax-async-generators": "^7.8.0",
-        "@babel/plugin-syntax-class-properties": "^7.10.4",
+        "@babel/plugin-syntax-class-properties": "^7.12.1",
         "@babel/plugin-syntax-dynamic-import": "^7.8.0",
         "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
         "@babel/plugin-syntax-json-strings": "^7.8.0",
@@ -3096,45 +2121,42 @@
         "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
         "@babel/plugin-syntax-optional-catch-binding": "^7.8.0",
         "@babel/plugin-syntax-optional-chaining": "^7.8.0",
-        "@babel/plugin-syntax-top-level-await": "^7.10.4",
-        "@babel/plugin-transform-arrow-functions": "^7.10.4",
-        "@babel/plugin-transform-async-to-generator": "^7.10.4",
-        "@babel/plugin-transform-block-scoped-functions": "^7.10.4",
-        "@babel/plugin-transform-block-scoping": "^7.10.4",
-        "@babel/plugin-transform-classes": "^7.10.4",
-        "@babel/plugin-transform-computed-properties": "^7.10.4",
-        "@babel/plugin-transform-destructuring": "^7.10.4",
-        "@babel/plugin-transform-dotall-regex": "^7.10.4",
-        "@babel/plugin-transform-duplicate-keys": "^7.10.4",
-        "@babel/plugin-transform-exponentiation-operator": "^7.10.4",
-        "@babel/plugin-transform-for-of": "^7.10.4",
-        "@babel/plugin-transform-function-name": "^7.10.4",
-        "@babel/plugin-transform-literals": "^7.10.4",
-        "@babel/plugin-transform-member-expression-literals": "^7.10.4",
-        "@babel/plugin-transform-modules-amd": "^7.10.4",
-        "@babel/plugin-transform-modules-commonjs": "^7.10.4",
-        "@babel/plugin-transform-modules-systemjs": "^7.10.4",
-        "@babel/plugin-transform-modules-umd": "^7.10.4",
-        "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4",
-        "@babel/plugin-transform-new-target": "^7.10.4",
-        "@babel/plugin-transform-object-super": "^7.10.4",
-        "@babel/plugin-transform-parameters": "^7.10.4",
-        "@babel/plugin-transform-property-literals": "^7.10.4",
-        "@babel/plugin-transform-regenerator": "^7.10.4",
-        "@babel/plugin-transform-reserved-words": "^7.10.4",
-        "@babel/plugin-transform-shorthand-properties": "^7.10.4",
-        "@babel/plugin-transform-spread": "^7.11.0",
-        "@babel/plugin-transform-sticky-regex": "^7.10.4",
-        "@babel/plugin-transform-template-literals": "^7.10.4",
-        "@babel/plugin-transform-typeof-symbol": "^7.10.4",
-        "@babel/plugin-transform-unicode-escapes": "^7.10.4",
-        "@babel/plugin-transform-unicode-regex": "^7.10.4",
+        "@babel/plugin-syntax-top-level-await": "^7.12.1",
+        "@babel/plugin-transform-arrow-functions": "^7.12.1",
+        "@babel/plugin-transform-async-to-generator": "^7.12.1",
+        "@babel/plugin-transform-block-scoped-functions": "^7.12.1",
+        "@babel/plugin-transform-block-scoping": "^7.12.11",
+        "@babel/plugin-transform-classes": "^7.12.1",
+        "@babel/plugin-transform-computed-properties": "^7.12.1",
+        "@babel/plugin-transform-destructuring": "^7.12.1",
+        "@babel/plugin-transform-dotall-regex": "^7.12.1",
+        "@babel/plugin-transform-duplicate-keys": "^7.12.1",
+        "@babel/plugin-transform-exponentiation-operator": "^7.12.1",
+        "@babel/plugin-transform-for-of": "^7.12.1",
+        "@babel/plugin-transform-function-name": "^7.12.1",
+        "@babel/plugin-transform-literals": "^7.12.1",
+        "@babel/plugin-transform-member-expression-literals": "^7.12.1",
+        "@babel/plugin-transform-modules-amd": "^7.12.1",
+        "@babel/plugin-transform-modules-commonjs": "^7.12.1",
+        "@babel/plugin-transform-modules-systemjs": "^7.12.1",
+        "@babel/plugin-transform-modules-umd": "^7.12.1",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1",
+        "@babel/plugin-transform-new-target": "^7.12.1",
+        "@babel/plugin-transform-object-super": "^7.12.1",
+        "@babel/plugin-transform-parameters": "^7.12.1",
+        "@babel/plugin-transform-property-literals": "^7.12.1",
+        "@babel/plugin-transform-regenerator": "^7.12.1",
+        "@babel/plugin-transform-reserved-words": "^7.12.1",
+        "@babel/plugin-transform-shorthand-properties": "^7.12.1",
+        "@babel/plugin-transform-spread": "^7.12.1",
+        "@babel/plugin-transform-sticky-regex": "^7.12.7",
+        "@babel/plugin-transform-template-literals": "^7.12.1",
+        "@babel/plugin-transform-typeof-symbol": "^7.12.10",
+        "@babel/plugin-transform-unicode-escapes": "^7.12.1",
+        "@babel/plugin-transform-unicode-regex": "^7.12.1",
         "@babel/preset-modules": "^0.1.3",
-        "@babel/types": "^7.11.0",
-        "browserslist": "^4.12.0",
-        "core-js-compat": "^3.6.2",
-        "invariant": "^2.2.2",
-        "levenary": "^1.1.1",
+        "@babel/types": "^7.12.11",
+        "core-js-compat": "^3.8.0",
         "semver": "^5.5.0"
       },
       "dependencies": {
@@ -3160,67 +2182,113 @@
       }
     },
     "@babel/runtime": {
-      "version": "7.11.2",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz",
-      "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==",
+      "version": "7.12.5",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz",
+      "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==",
       "dev": true,
       "requires": {
         "regenerator-runtime": "^0.13.4"
       }
     },
     "@babel/template": {
-      "version": "7.12.7",
-      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz",
-      "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==",
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz",
+      "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==",
       "requires": {
-        "@babel/code-frame": "^7.10.4",
-        "@babel/parser": "^7.12.7",
-        "@babel/types": "^7.12.7"
+        "@babel/code-frame": "^7.18.6",
+        "@babel/parser": "^7.18.6",
+        "@babel/types": "^7.18.6"
+      },
+      "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+          "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+          "requires": {
+            "@babel/highlight": "^7.18.6"
+          }
+        },
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g=="
+        },
+        "@babel/highlight": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+          "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "chalk": "^2.0.0",
+            "js-tokens": "^4.0.0"
+          }
+        }
       }
     },
     "@babel/traverse": {
-      "version": "7.12.12",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.12.tgz",
-      "integrity": "sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w==",
-      "requires": {
-        "@babel/code-frame": "^7.12.11",
-        "@babel/generator": "^7.12.11",
-        "@babel/helper-function-name": "^7.12.11",
-        "@babel/helper-split-export-declaration": "^7.12.11",
-        "@babel/parser": "^7.12.11",
-        "@babel/types": "^7.12.12",
+      "version": "7.18.8",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.8.tgz",
+      "integrity": "sha512-UNg/AcSySJYR/+mIcJQDCv00T+AqRO7j/ZEJLzpaYtgM48rMg5MnkJgyNqkzo88+p4tfRvZJCEiwwfG6h4jkRg==",
+      "requires": {
+        "@babel/code-frame": "^7.18.6",
+        "@babel/generator": "^7.18.7",
+        "@babel/helper-environment-visitor": "^7.18.6",
+        "@babel/helper-function-name": "^7.18.6",
+        "@babel/helper-hoist-variables": "^7.18.6",
+        "@babel/helper-split-export-declaration": "^7.18.6",
+        "@babel/parser": "^7.18.8",
+        "@babel/types": "^7.18.8",
         "debug": "^4.1.0",
-        "globals": "^11.1.0",
-        "lodash": "^4.17.19"
+        "globals": "^11.1.0"
       },
       "dependencies": {
-        "@babel/generator": {
-          "version": "7.12.11",
-          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz",
-          "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==",
+        "@babel/code-frame": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+          "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
           "requires": {
-            "@babel/types": "^7.12.11",
-            "jsesc": "^2.5.1",
-            "source-map": "^0.5.0"
+            "@babel/highlight": "^7.18.6"
           }
         },
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g=="
+        },
+        "@babel/highlight": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+          "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "chalk": "^2.0.0",
+            "js-tokens": "^4.0.0"
+          }
         }
       }
     },
     "@babel/types": {
-      "version": "7.12.12",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.12.tgz",
-      "integrity": "sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==",
+      "version": "7.18.8",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
+      "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
       "requires": {
-        "@babel/helper-validator-identifier": "^7.12.11",
-        "lodash": "^4.17.19",
+        "@babel/helper-validator-identifier": "^7.18.6",
         "to-fast-properties": "^2.0.0"
+      },
+      "dependencies": {
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g=="
+        }
       }
     },
+    "@colors/colors": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
+      "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
+      "dev": true
+    },
     "@dabh/diagnostics": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz",
@@ -3232,6 +2300,12 @@
         "kuler": "^2.0.0"
       }
     },
+    "@discoveryjs/json-ext": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz",
+      "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==",
+      "dev": true
+    },
     "@firebase/analytics": {
       "version": "0.6.2",
       "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.6.2.tgz",
@@ -3854,88 +2928,23 @@
         "schema-utils": "^2.7.0"
       }
     },
-    "@jsdevtools/ono": {
-      "version": "7.1.3",
-      "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz",
-      "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==",
-      "dev": true
-    },
-    "@ngtools/webpack": {
-      "version": "10.2.4",
-      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-10.2.4.tgz",
-      "integrity": "sha512-7rnGrd0TlnAHwOSwvKjKuD+/vwPEP2aVwD9ZnvWYafQFpLYQj+9TYOBj+nbg2l4PCRx5ByYy7xPKnu88GX5/lw==",
-      "dev": true,
-      "requires": {
-        "@angular-devkit/core": "10.2.4",
-        "enhanced-resolve": "4.3.0",
-        "webpack-sources": "1.4.3"
-      },
-      "dependencies": {
-        "@angular-devkit/core": {
-          "version": "10.2.4",
-          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.2.4.tgz",
-          "integrity": "sha512-gnm/+Iyaa6Jt3E803bpTjkwDAIb0AhP9badaGwbx44+bhbNSE2WzOBmdsQrsxJXHAMEG9CGeBzeRd8XZtLACWg==",
-          "dev": true,
-          "requires": {
-            "ajv": "6.12.4",
-            "fast-json-stable-stringify": "2.1.0",
-            "magic-string": "0.25.7",
-            "rxjs": "6.6.2",
-            "source-map": "0.7.3"
-          }
-        },
-        "ajv": {
-          "version": "6.12.4",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz",
-          "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
-          }
-        },
-        "fast-deep-equal": {
-          "version": "3.1.3",
-          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-          "dev": true
-        },
-        "fast-json-stable-stringify": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-          "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
-          "dev": true
-        },
-        "magic-string": {
-          "version": "0.25.7",
-          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
-          "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
-          "dev": true,
-          "requires": {
-            "sourcemap-codec": "^1.4.4"
-          }
-        },
-        "rxjs": {
-          "version": "6.6.2",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz",
-          "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==",
-          "dev": true,
-          "requires": {
-            "tslib": "^1.9.0"
-          },
-          "dependencies": {
-            "tslib": {
-              "version": "1.14.1",
-              "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-              "dev": true
-            }
-          }
-        }
-      }
-    },
+    "@jsdevtools/ono": {
+      "version": "7.1.3",
+      "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz",
+      "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==",
+      "dev": true
+    },
+    "@ngtools/webpack": {
+      "version": "11.2.19",
+      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-11.2.19.tgz",
+      "integrity": "sha512-HwLHA6ZrLSk7VHm5Bv3a8ljM6uU8+/670u2fKfMFwM4UQ42+yTFihwfFKLWQIcawBOlVCaUosr6o1xmeSquAqA==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/core": "11.2.19",
+        "enhanced-resolve": "5.7.0",
+        "webpack-sources": "2.2.0"
+      }
+    },
     "@nodelib/fs.scandir": {
       "version": "2.1.5",
       "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -3962,6 +2971,115 @@
         "fastq": "^1.6.0"
       }
     },
+    "@npmcli/ci-detect": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz",
+      "integrity": "sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q==",
+      "dev": true
+    },
+    "@npmcli/git": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz",
+      "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==",
+      "dev": true,
+      "requires": {
+        "@npmcli/promise-spawn": "^1.3.2",
+        "lru-cache": "^6.0.0",
+        "mkdirp": "^1.0.4",
+        "npm-pick-manifest": "^6.1.1",
+        "promise-inflight": "^1.0.1",
+        "promise-retry": "^2.0.1",
+        "semver": "^7.3.5",
+        "which": "^2.0.2"
+      },
+      "dependencies": {
+        "hosted-git-info": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
+          "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        },
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
+        "mkdirp": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+          "dev": true
+        },
+        "npm-package-arg": {
+          "version": "8.1.5",
+          "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz",
+          "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==",
+          "dev": true,
+          "requires": {
+            "hosted-git-info": "^4.0.1",
+            "semver": "^7.3.4",
+            "validate-npm-package-name": "^3.0.0"
+          }
+        },
+        "npm-pick-manifest": {
+          "version": "6.1.1",
+          "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz",
+          "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==",
+          "dev": true,
+          "requires": {
+            "npm-install-checks": "^4.0.0",
+            "npm-normalize-package-bin": "^1.0.1",
+            "npm-package-arg": "^8.1.2",
+            "semver": "^7.3.4"
+          }
+        },
+        "promise-retry": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
+          "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
+          "dev": true,
+          "requires": {
+            "err-code": "^2.0.2",
+            "retry": "^0.12.0"
+          }
+        },
+        "semver": {
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        },
+        "which": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+          "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+          "dev": true,
+          "requires": {
+            "isexe": "^2.0.0"
+          }
+        }
+      }
+    },
+    "@npmcli/installed-package-contents": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz",
+      "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==",
+      "dev": true,
+      "requires": {
+        "npm-bundled": "^1.1.1",
+        "npm-normalize-package-bin": "^1.0.1"
+      }
+    },
     "@npmcli/move-file": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz",
@@ -3989,6 +3107,45 @@
         }
       }
     },
+    "@npmcli/node-gyp": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz",
+      "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==",
+      "dev": true
+    },
+    "@npmcli/promise-spawn": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz",
+      "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==",
+      "dev": true,
+      "requires": {
+        "infer-owner": "^1.0.4"
+      }
+    },
+    "@npmcli/run-script": {
+      "version": "1.8.6",
+      "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz",
+      "integrity": "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==",
+      "dev": true,
+      "requires": {
+        "@npmcli/node-gyp": "^1.0.2",
+        "@npmcli/promise-spawn": "^1.3.2",
+        "node-gyp": "^7.1.0",
+        "read-package-json-fast": "^2.0.1"
+      },
+      "dependencies": {
+        "read-package-json-fast": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz",
+          "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==",
+          "dev": true,
+          "requires": {
+            "json-parse-even-better-errors": "^2.3.0",
+            "npm-normalize-package-bin": "^1.0.1"
+          }
+        }
+      }
+    },
     "@protobufjs/aspromise": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
@@ -4044,171 +3201,55 @@
       "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="
     },
     "@schematics/angular": {
-      "version": "10.2.4",
-      "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-10.2.4.tgz",
-      "integrity": "sha512-irU3cnamfd5Hgy1B6oY7oweApJHhVaD2oYPq0NfI+F14JalERO+DGO0Tq3MWmEGn32tLQPv9fwM5O8EElEp9pA==",
+      "version": "11.2.19",
+      "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-11.2.19.tgz",
+      "integrity": "sha512-cZys7nRo/CI81EtPu4VJiAyv53gPfIfLteykhrTQpAp9AZK9UuRHauiJq7BhHRAUEc3z148xjSQgMvEu7/vAuA==",
       "dev": true,
       "requires": {
-        "@angular-devkit/core": "10.2.4",
-        "@angular-devkit/schematics": "10.2.4",
-        "jsonc-parser": "2.3.0"
-      },
-      "dependencies": {
-        "@angular-devkit/core": {
-          "version": "10.2.4",
-          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.2.4.tgz",
-          "integrity": "sha512-gnm/+Iyaa6Jt3E803bpTjkwDAIb0AhP9badaGwbx44+bhbNSE2WzOBmdsQrsxJXHAMEG9CGeBzeRd8XZtLACWg==",
-          "dev": true,
-          "requires": {
-            "ajv": "6.12.4",
-            "fast-json-stable-stringify": "2.1.0",
-            "magic-string": "0.25.7",
-            "rxjs": "6.6.2",
-            "source-map": "0.7.3"
-          }
-        },
-        "ajv": {
-          "version": "6.12.4",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz",
-          "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
-          }
-        },
-        "fast-deep-equal": {
-          "version": "3.1.3",
-          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-          "dev": true
-        },
-        "fast-json-stable-stringify": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-          "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
-          "dev": true
-        },
-        "magic-string": {
-          "version": "0.25.7",
-          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
-          "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
-          "dev": true,
-          "requires": {
-            "sourcemap-codec": "^1.4.4"
-          }
-        },
-        "rxjs": {
-          "version": "6.6.2",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz",
-          "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==",
-          "dev": true,
-          "requires": {
-            "tslib": "^1.9.0"
-          },
-          "dependencies": {
-            "tslib": {
-              "version": "1.14.1",
-              "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-              "dev": true
-            }
-          }
-        }
+        "@angular-devkit/core": "11.2.19",
+        "@angular-devkit/schematics": "11.2.19",
+        "jsonc-parser": "3.0.0"
       }
     },
     "@schematics/update": {
-      "version": "0.1002.4",
-      "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.1002.4.tgz",
-      "integrity": "sha512-qnDn3SSMmolfzWpj8CTAoC/TSPe43azKPYLR5r76GkRvuUbwr/dQEj92wu59twjGcsmjF54qcG4fGaxMndUn3Q==",
+      "version": "0.1102.19",
+      "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.1102.19.tgz",
+      "integrity": "sha512-NdWzL6n/ZEgnposWdAPo8PTOn+8Baf/J9isjF+QOUUMbpZY/+QfLpej7eDAlcQ2Begiz/selMsnod70r9PYZUg==",
       "dev": true,
       "requires": {
-        "@angular-devkit/core": "10.2.4",
-        "@angular-devkit/schematics": "10.2.4",
+        "@angular-devkit/core": "11.2.19",
+        "@angular-devkit/schematics": "11.2.19",
         "@yarnpkg/lockfile": "1.1.0",
-        "ini": "1.3.6",
+        "ini": "2.0.0",
         "npm-package-arg": "^8.0.0",
-        "pacote": "9.5.12",
-        "semver": "7.3.2",
+        "pacote": "11.2.4",
+        "semver": "7.3.4",
         "semver-intersect": "1.4.0"
       },
       "dependencies": {
-        "@angular-devkit/core": {
-          "version": "10.2.4",
-          "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.2.4.tgz",
-          "integrity": "sha512-gnm/+Iyaa6Jt3E803bpTjkwDAIb0AhP9badaGwbx44+bhbNSE2WzOBmdsQrsxJXHAMEG9CGeBzeRd8XZtLACWg==",
-          "dev": true,
-          "requires": {
-            "ajv": "6.12.4",
-            "fast-json-stable-stringify": "2.1.0",
-            "magic-string": "0.25.7",
-            "rxjs": "6.6.2",
-            "source-map": "0.7.3"
-          }
-        },
-        "ajv": {
-          "version": "6.12.4",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz",
-          "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
-          }
-        },
-        "fast-deep-equal": {
-          "version": "3.1.3",
-          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-          "dev": true
-        },
-        "fast-json-stable-stringify": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-          "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
-          "dev": true
-        },
         "ini": {
-          "version": "1.3.6",
-          "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.6.tgz",
-          "integrity": "sha512-IZUoxEjNjubzrmvzZU4lKP7OnYmX72XRl3sqkfJhBKweKi5rnGi5+IUdlj/H1M+Ip5JQ1WzaDMOBRY90Ajc5jg==",
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
+          "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
           "dev": true
         },
-        "magic-string": {
-          "version": "0.25.7",
-          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
-          "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
           "dev": true,
           "requires": {
-            "sourcemap-codec": "^1.4.4"
+            "yallist": "^4.0.0"
           }
         },
-        "rxjs": {
-          "version": "6.6.2",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz",
-          "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==",
+        "semver": {
+          "version": "7.3.4",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
+          "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
           "dev": true,
           "requires": {
-            "tslib": "^1.9.0"
-          },
-          "dependencies": {
-            "tslib": {
-              "version": "1.14.1",
-              "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-              "dev": true
-            }
+            "lru-cache": "^6.0.0"
           }
-        },
-        "semver": {
-          "version": "7.3.2",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
-          "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
-          "dev": true
         }
       }
     },
@@ -4227,6 +3268,36 @@
         "defer-to-connect": "^1.0.1"
       }
     },
+    "@tootallnate/once": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
+      "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
+      "dev": true
+    },
+    "@trysound/sax": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
+      "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
+      "dev": true
+    },
+    "@types/component-emitter": {
+      "version": "1.2.11",
+      "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz",
+      "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==",
+      "dev": true
+    },
+    "@types/cookie": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
+      "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==",
+      "dev": true
+    },
+    "@types/cors": {
+      "version": "2.8.12",
+      "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz",
+      "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==",
+      "dev": true
+    },
     "@types/duplexify": {
       "version": "3.6.0",
       "resolved": "https://registry.npmjs.org/@types/duplexify/-/duplexify-3.6.0.tgz",
@@ -4256,9 +3327,9 @@
       }
     },
     "@types/jasmine": {
-      "version": "3.5.14",
-      "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.14.tgz",
-      "integrity": "sha512-Fkgk536sHPqcOtd+Ow+WiUNuk0TSo/BntKkF8wSvcd6M2FvPjeXcUE6Oz/bwDZiUZEaXLslAgw00Q94Pnx6T4w==",
+      "version": "3.6.11",
+      "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.6.11.tgz",
+      "integrity": "sha512-S6pvzQDvMZHrkBz2Mcn/8Du7cpr76PlRJBAoHnSDNbulULsH5dp0Gns+WRyNX5LHejz/ljxK4/vIHK/caHt6SQ==",
       "dev": true
     },
     "@types/jasminewd2": {
@@ -4292,17 +3363,17 @@
       "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.15.tgz",
       "integrity": "sha512-lowukE3GUI+VSYSu6VcBXl14d61Rp5hA1D+61r16qnwC0lYNSqdxcvRh0pswejorHfS+HgwBasM8jLXz0/aOsw=="
     },
+    "@types/parse-json": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
+      "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
+      "dev": true
+    },
     "@types/pdfjs-dist": {
       "version": "2.1.7",
       "resolved": "https://registry.npmjs.org/@types/pdfjs-dist/-/pdfjs-dist-2.1.7.tgz",
       "integrity": "sha512-nQIwcPUhkAIyn7x9NS0lR/qxYfd5unRtfGkMjvpgF4Sh28IXftRymaNmFKTTdejDNY25NDGSIyjwj/BRwAPexg=="
     },
-    "@types/q": {
-      "version": "1.5.5",
-      "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz",
-      "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==",
-      "dev": true
-    },
     "@types/selenium-webdriver": {
       "version": "3.0.20",
       "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.20.tgz",
@@ -4547,8 +3618,7 @@
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
       "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
-      "dev": true,
-      "optional": true
+      "dev": true
     },
     "abort-controller": {
       "version": "3.0.0",
@@ -4580,9 +3650,9 @@
       "dev": true
     },
     "adjust-sourcemap-loader": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz",
-      "integrity": "sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw==",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz",
+      "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==",
       "dev": true,
       "requires": {
         "loader-utils": "^2.0.0",
@@ -4595,12 +3665,6 @@
       "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==",
       "dev": true
     },
-    "after": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
-      "integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==",
-      "dev": true
-    },
     "agent-base": {
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
@@ -4611,11 +3675,13 @@
       }
     },
     "agentkeepalive": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz",
-      "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==",
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz",
+      "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==",
       "dev": true,
       "requires": {
+        "debug": "^4.1.0",
+        "depd": "^1.1.2",
         "humanize-ms": "^1.2.1"
       }
     },
@@ -4630,12 +3696,12 @@
       }
     },
     "ajv": {
-      "version": "6.10.2",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
-      "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
+      "version": "6.12.6",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
       "dev": true,
       "requires": {
-        "fast-deep-equal": "^2.0.1",
+        "fast-deep-equal": "^3.1.1",
         "fast-json-stable-stringify": "^2.0.0",
         "json-schema-traverse": "^0.4.1",
         "uri-js": "^4.2.2"
@@ -4653,12 +3719,6 @@
       "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
       "dev": true
     },
-    "alphanum-sort": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
-      "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==",
-      "dev": true
-    },
     "angular-walkthrough": {
       "version": "0.8.2",
       "resolved": "https://registry.npmjs.org/angular-walkthrough/-/angular-walkthrough-0.8.2.tgz",
@@ -4718,9 +3778,9 @@
       }
     },
     "ansi-colors": {
-      "version": "3.2.4",
-      "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
-      "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==",
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
+      "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
       "dev": true
     },
     "ansi-escapes": {
@@ -4729,10 +3789,10 @@
       "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
       "dev": true
     },
-    "ansi-html": {
-      "version": "0.0.7",
-      "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
-      "integrity": "sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA==",
+    "ansi-html-community": {
+      "version": "0.0.8",
+      "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
+      "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==",
       "dev": true
     },
     "ansi-regex": {
@@ -4779,9 +3839,9 @@
       }
     },
     "app-root-path": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.2.1.tgz",
-      "integrity": "sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz",
+      "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==",
       "dev": true
     },
     "aproba": {
@@ -4841,7 +3901,6 @@
       "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
       "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
       "dev": true,
-      "optional": true,
       "requires": {
         "delegates": "^1.0.0",
         "readable-stream": "^2.0.6"
@@ -4865,19 +3924,13 @@
     "aria-query": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz",
-      "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=",
+      "integrity": "sha512-majUxHgLehQTeSA+hClx+DY09OVUqG3GtezWkF1krgLGNdlDu9l9V8DaqNMWbq4Eddc8wsyDA0hpDUtnYxQEXw==",
       "dev": true,
       "requires": {
         "ast-types-flow": "0.0.7",
         "commander": "^2.11.0"
       }
     },
-    "arity-n": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz",
-      "integrity": "sha512-fExL2kFDC1Q2DUOx3whE/9KoN66IzkY4b4zUHUBFM1ojEYjZZYDcUW3bek/ufGionX9giIKDC5redH2IlGqcQQ==",
-      "dev": true
-    },
     "arr-diff": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
@@ -4923,25 +3976,6 @@
       "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
       "dev": true
     },
-    "array.prototype.reduce": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz",
-      "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.19.2",
-        "es-array-method-boxes-properly": "^1.0.0",
-        "is-string": "^1.0.7"
-      }
-    },
-    "arraybuffer.slice": {
-      "version": "0.0.7",
-      "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
-      "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==",
-      "dev": true
-    },
     "arrify": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
@@ -4954,12 +3988,6 @@
       "integrity": "sha1-TwSAXYf4/OjlEbwhCPjl46KH1Uc=",
       "dev": true
     },
-    "asap": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
-      "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
-      "dev": true
-    },
     "asn1": {
       "version": "0.2.4",
       "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
@@ -5031,7 +4059,7 @@
     "ast-types-flow": {
       "version": "0.0.7",
       "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
-      "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=",
+      "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==",
       "dev": true
     },
     "async": {
@@ -5068,17 +4096,16 @@
       "dev": true
     },
     "autoprefixer": {
-      "version": "9.8.6",
-      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz",
-      "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==",
+      "version": "10.2.4",
+      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.2.4.tgz",
+      "integrity": "sha512-DCCdUQiMD+P/as8m3XkeTUkUKuuRqLGcwD0nll7wevhqoJfMRpJlkFd1+MQh1pvupjiQuip42lc/VFvfUTMSKw==",
       "dev": true,
       "requires": {
-        "browserslist": "^4.12.0",
-        "caniuse-lite": "^1.0.30001109",
+        "browserslist": "^4.16.1",
+        "caniuse-lite": "^1.0.30001181",
         "colorette": "^1.2.1",
+        "fraction.js": "^4.0.13",
         "normalize-range": "^0.1.2",
-        "num2fraction": "^1.2.2",
-        "postcss": "^7.0.32",
         "postcss-value-parser": "^4.1.0"
       }
     },
@@ -5104,29 +4131,17 @@
       }
     },
     "babel-loader": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz",
-      "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==",
+      "version": "8.2.2",
+      "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz",
+      "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==",
       "dev": true,
       "requires": {
-        "find-cache-dir": "^2.1.0",
+        "find-cache-dir": "^3.3.1",
         "loader-utils": "^1.4.0",
-        "mkdirp": "^0.5.3",
-        "pify": "^4.0.1",
+        "make-dir": "^3.1.0",
         "schema-utils": "^2.6.5"
       },
       "dependencies": {
-        "find-cache-dir": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
-          "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
-          "dev": true,
-          "requires": {
-            "commondir": "^1.0.1",
-            "make-dir": "^2.0.0",
-            "pkg-dir": "^3.0.0"
-          }
-        },
         "json5": {
           "version": "1.0.1",
           "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
@@ -5146,6 +4161,15 @@
             "emojis-list": "^3.0.0",
             "json5": "^1.0.1"
           }
+        },
+        "make-dir": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+          "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+          "dev": true,
+          "requires": {
+            "semver": "^6.0.0"
+          }
         }
       }
     },
@@ -5158,12 +4182,6 @@
         "object.assign": "^4.1.0"
       }
     },
-    "backo2": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
-      "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==",
-      "dev": true
-    },
     "balanced-match": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
@@ -5224,12 +4242,6 @@
         }
       }
     },
-    "base64-arraybuffer": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz",
-      "integrity": "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==",
-      "dev": true
-    },
     "base64-js": {
       "version": "1.5.1",
       "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
@@ -5344,12 +4356,6 @@
       "integrity": "sha1-ad+S75U6qIylGjLfarHFShVfx6U=",
       "dev": true
     },
-    "blob": {
-      "version": "0.0.5",
-      "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz",
-      "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==",
-      "dev": true
-    },
     "blocking-proxy": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz",
@@ -5928,28 +4934,10 @@
       "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=",
       "dev": true
     },
-    "caller-callsite": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
-      "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==",
-      "dev": true,
-      "requires": {
-        "callsites": "^2.0.0"
-      }
-    },
-    "caller-path": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
-      "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==",
-      "dev": true,
-      "requires": {
-        "caller-callsite": "^2.0.0"
-      }
-    },
     "callsites": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
-      "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==",
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
       "dev": true
     },
     "camelcase": {
@@ -6079,9 +5067,9 @@
       }
     },
     "circular-dependency-plugin": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.0.tgz",
-      "integrity": "sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw==",
+      "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz",
+      "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==",
       "dev": true
     },
     "cjson": {
@@ -6252,11 +5240,16 @@
         }
       }
     },
-    "clone": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
-      "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
-      "dev": true
+    "clone-deep": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
+      "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
+      "dev": true,
+      "requires": {
+        "is-plain-object": "^2.0.4",
+        "kind-of": "^6.0.2",
+        "shallow-clone": "^3.0.0"
+      }
     },
     "clone-response": {
       "version": "1.0.2",
@@ -6267,45 +5260,50 @@
         "mimic-response": "^1.0.0"
       }
     },
-    "coa": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz",
-      "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==",
-      "dev": true,
-      "requires": {
-        "@types/q": "^1.5.1",
-        "chalk": "^2.4.1",
-        "q": "^1.1.2"
-      }
-    },
     "code-point-at": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
       "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
-      "dev": true,
-      "optional": true
+      "dev": true
     },
     "codelyzer": {
-      "version": "5.2.2",
-      "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-5.2.2.tgz",
-      "integrity": "sha512-jB4FZ1Sx7kZhvZVdf+N2BaKTdrrNZOL0Bj10RRfrhHrb3zEvXjJvvq298JPMJAiyiCS/v4zs1QlGU0ip7xGqeA==",
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-6.0.2.tgz",
+      "integrity": "sha512-v3+E0Ucu2xWJMOJ2fA/q9pDT/hlxHftHGPUay1/1cTgyPV5JTHFdO9hqo837Sx2s9vKBMTt5gO+lhF95PO6J+g==",
       "dev": true,
       "requires": {
-        "app-root-path": "^2.2.1",
+        "@angular/compiler": "9.0.0",
+        "@angular/core": "9.0.0",
+        "app-root-path": "^3.0.0",
         "aria-query": "^3.0.0",
         "axobject-query": "2.0.2",
         "css-selector-tokenizer": "^0.7.1",
         "cssauron": "^1.4.0",
         "damerau-levenshtein": "^1.0.4",
+        "rxjs": "^6.5.3",
         "semver-dsl": "^1.0.1",
         "source-map": "^0.5.7",
-        "sprintf-js": "^1.1.2"
+        "sprintf-js": "^1.1.2",
+        "tslib": "^1.10.0",
+        "zone.js": "~0.10.3"
       },
       "dependencies": {
+        "@angular/compiler": {
+          "version": "9.0.0",
+          "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.0.tgz",
+          "integrity": "sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ==",
+          "dev": true
+        },
+        "@angular/core": {
+          "version": "9.0.0",
+          "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz",
+          "integrity": "sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==",
+          "dev": true
+        },
         "source-map": {
           "version": "0.5.7",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+          "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
           "dev": true
         },
         "sprintf-js": {
@@ -6313,6 +5311,12 @@
           "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
           "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
           "dev": true
+        },
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+          "dev": true
         }
       }
     },
@@ -6326,28 +5330,6 @@
         "object-visit": "^1.0.0"
       }
     },
-    "color": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
-      "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
-      "dev": true,
-      "requires": {
-        "color-convert": "^1.9.3",
-        "color-string": "^1.6.0"
-      },
-      "dependencies": {
-        "color-string": {
-          "version": "1.9.1",
-          "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
-          "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
-          "dev": true,
-          "requires": {
-            "color-name": "^1.0.0",
-            "simple-swizzle": "^0.2.2"
-          }
-        }
-      }
-    },
     "color-convert": {
       "version": "1.9.3",
       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@@ -6371,6 +5353,12 @@
         "simple-swizzle": "^0.2.2"
       }
     },
+    "colord": {
+      "version": "2.9.2",
+      "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz",
+      "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==",
+      "dev": true
+    },
     "colorette": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
@@ -6443,33 +5431,12 @@
         }
       }
     },
-    "component-bind": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
-      "integrity": "sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw==",
-      "dev": true
-    },
     "component-emitter": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
       "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
       "dev": true
     },
-    "component-inherit": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
-      "integrity": "sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==",
-      "dev": true
-    },
-    "compose-function": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz",
-      "integrity": "sha512-xzhzTJ5eC+gmIzvZq+C3kCJHsp9os6tJkrigDRZclyGtOKINbZtE8n1Tzmeh32jW+BUDPbvZpibwvJHBLGMVwg==",
-      "dev": true,
-      "requires": {
-        "arity-n": "^1.0.4"
-      }
-    },
     "compress-commons": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-2.1.1.tgz",
@@ -6610,8 +5577,7 @@
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
       "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
-      "dev": true,
-      "optional": true
+      "dev": true
     },
     "constants-browserify": {
       "version": "1.0.0",
@@ -6695,21 +5661,21 @@
       "dev": true
     },
     "copy-webpack-plugin": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.0.3.tgz",
-      "integrity": "sha512-q5m6Vz4elsuyVEIUXr7wJdIdePWTubsqVbEMvf1WQnHGv0Q+9yPRu7MtYFPt+GBOXRav9lvIINifTQ1vSCs+eA==",
+      "version": "6.3.2",
+      "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.3.2.tgz",
+      "integrity": "sha512-MgJ1uouLIbDg4ST1GzqrGQyKoXY5iPqi6fghFqarijam7FQcBa/r6Rg0VkoIuzx75Xq8iAMghyOueMkWUQ5OaA==",
       "dev": true,
       "requires": {
-        "cacache": "^15.0.4",
+        "cacache": "^15.0.5",
         "fast-glob": "^3.2.4",
         "find-cache-dir": "^3.3.1",
         "glob-parent": "^5.1.1",
         "globby": "^11.0.1",
         "loader-utils": "^2.0.0",
         "normalize-path": "^3.0.0",
-        "p-limit": "^3.0.1",
-        "schema-utils": "^2.7.0",
-        "serialize-javascript": "^4.0.0",
+        "p-limit": "^3.0.2",
+        "schema-utils": "^3.0.0",
+        "serialize-javascript": "^5.0.1",
         "webpack-sources": "^1.4.3"
       },
       "dependencies": {
@@ -6721,13 +5687,40 @@
           "requires": {
             "yocto-queue": "^0.1.0"
           }
+        },
+        "schema-utils": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+          "dev": true,
+          "requires": {
+            "@types/json-schema": "^7.0.8",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        },
+        "webpack-sources": {
+          "version": "1.4.3",
+          "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
+          "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+          "dev": true,
+          "requires": {
+            "source-list-map": "^2.0.0",
+            "source-map": "~0.6.1"
+          }
         }
       }
     },
     "core-js": {
-      "version": "3.6.4",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz",
-      "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==",
+      "version": "3.8.3",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz",
+      "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==",
       "dev": true
     },
     "core-js-compat": {
@@ -6754,16 +5747,27 @@
       "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
       "dev": true
     },
+    "cors": {
+      "version": "2.8.5",
+      "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+      "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+      "dev": true,
+      "requires": {
+        "object-assign": "^4",
+        "vary": "^1"
+      }
+    },
     "cosmiconfig": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
-      "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz",
+      "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==",
       "dev": true,
       "requires": {
-        "import-fresh": "^2.0.0",
-        "is-directory": "^0.3.1",
-        "js-yaml": "^3.13.1",
-        "parse-json": "^4.0.0"
+        "@types/parse-json": "^4.0.0",
+        "import-fresh": "^3.2.1",
+        "parse-json": "^5.0.0",
+        "path-type": "^4.0.0",
+        "yaml": "^1.10.0"
       }
     },
     "crc": {
@@ -6855,6 +5859,82 @@
         "sha.js": "^2.4.8"
       }
     },
+    "critters": {
+      "version": "0.0.12",
+      "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.12.tgz",
+      "integrity": "sha512-ujxKtKc/mWpjrOKeaACTaQ1aP0O31M0ZPWhfl85jZF1smPU4Ivb9va5Ox2poif4zVJQQo0LCFlzGtEZAsCAPcw==",
+      "dev": true,
+      "requires": {
+        "chalk": "^4.1.0",
+        "css-select": "^4.1.3",
+        "parse5": "^6.0.1",
+        "parse5-htmlparser2-tree-adapter": "^6.0.1",
+        "postcss": "^8.3.7",
+        "pretty-bytes": "^5.3.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "8.4.14",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
+          "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
+          "dev": true,
+          "requires": {
+            "nanoid": "^3.3.4",
+            "picocolors": "^1.0.0",
+            "source-map-js": "^1.0.2"
+          }
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
     "cross-env": {
       "version": "5.2.1",
       "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz",
@@ -6930,39 +6010,29 @@
         }
       }
     },
-    "css-color-names": {
-      "version": "0.0.4",
-      "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
-      "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==",
-      "dev": true
-    },
     "css-declaration-sorter": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz",
-      "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.1",
-        "timsort": "^0.3.0"
-      }
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz",
+      "integrity": "sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og==",
+      "dev": true
     },
     "css-loader": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-4.2.2.tgz",
-      "integrity": "sha512-omVGsTkZPVwVRpckeUnLshPp12KsmMSLqYxs12+RzM9jRR5Y+Idn/tBffjXRvOE+qW7if24cuceFJqYR5FmGBg==",
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.0.1.tgz",
+      "integrity": "sha512-cXc2ti9V234cq7rJzFKhirb2L2iPy8ZjALeVJAozXYz9te3r4eqLSixNAbMDJSgJEQywqXzs8gonxaboeKqwiw==",
       "dev": true,
       "requires": {
-        "camelcase": "^6.0.0",
+        "camelcase": "^6.2.0",
         "cssesc": "^3.0.0",
-        "icss-utils": "^4.1.1",
+        "icss-utils": "^5.0.0",
         "loader-utils": "^2.0.0",
-        "postcss": "^7.0.32",
-        "postcss-modules-extract-imports": "^2.0.0",
-        "postcss-modules-local-by-default": "^3.0.3",
-        "postcss-modules-scope": "^2.2.0",
-        "postcss-modules-values": "^3.0.0",
+        "postcss": "^8.1.4",
+        "postcss-modules-extract-imports": "^3.0.0",
+        "postcss-modules-local-by-default": "^4.0.0",
+        "postcss-modules-scope": "^3.0.0",
+        "postcss-modules-values": "^4.0.0",
         "postcss-value-parser": "^4.1.0",
-        "schema-utils": "^2.7.0",
+        "schema-utils": "^3.0.0",
         "semver": "^7.3.2"
       },
       "dependencies": {
@@ -6981,6 +6051,17 @@
             "yallist": "^4.0.0"
           }
         },
+        "schema-utils": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+          "dev": true,
+          "requires": {
+            "@types/json-schema": "^7.0.8",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
+          }
+        },
         "semver": {
           "version": "7.3.7",
           "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
@@ -7002,23 +6083,18 @@
       }
     },
     "css-select": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
-      "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
+      "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
       "dev": true,
       "requires": {
         "boolbase": "^1.0.0",
-        "css-what": "^3.2.1",
-        "domutils": "^1.7.0",
-        "nth-check": "^1.0.2"
+        "css-what": "^6.0.1",
+        "domhandler": "^4.3.1",
+        "domutils": "^2.8.0",
+        "nth-check": "^2.0.1"
       }
     },
-    "css-select-base-adapter": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
-      "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==",
-      "dev": true
-    },
     "css-selector-tokenizer": {
       "version": "0.7.3",
       "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz",
@@ -7030,12 +6106,12 @@
       }
     },
     "css-tree": {
-      "version": "1.0.0-alpha.37",
-      "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
-      "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==",
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
+      "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
       "dev": true,
       "requires": {
-        "mdn-data": "2.0.4",
+        "mdn-data": "2.0.14",
         "source-map": "^0.6.1"
       },
       "dependencies": {
@@ -7048,15 +6124,15 @@
       }
     },
     "css-what": {
-      "version": "3.4.2",
-      "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz",
-      "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==",
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+      "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
       "dev": true
     },
     "cssauron": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz",
-      "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=",
+      "integrity": "sha512-Ht70DcFBh+/ekjVrYS2PlDMdSQEl3OFNmjK6lcn49HptBgilXf/Zwg4uFh9Xn0pX3Q8YOkSjIFOfK2osvdqpBw==",
       "dev": true,
       "requires": {
         "through": "X.X.X"
@@ -7069,80 +6145,57 @@
       "dev": true
     },
     "cssnano": {
-      "version": "4.1.10",
-      "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz",
-      "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==",
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.2.tgz",
+      "integrity": "sha512-8JK3EnPsjQsULme9/e5M2hF564f/480hwsdcHvQ7ZtAIMfQ1O3SCfs+b8Mjf5KJxhYApyRshR2QSovEJi2K72Q==",
       "dev": true,
       "requires": {
-        "cosmiconfig": "^5.0.0",
-        "cssnano-preset-default": "^4.0.7",
-        "is-resolvable": "^1.0.0",
-        "postcss": "^7.0.0"
+        "cosmiconfig": "^7.0.0",
+        "cssnano-preset-default": "^5.0.1",
+        "is-resolvable": "^1.1.0"
       }
     },
     "cssnano-preset-default": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz",
-      "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==",
-      "dev": true,
-      "requires": {
-        "css-declaration-sorter": "^4.0.1",
-        "cssnano-util-raw-cache": "^4.0.1",
-        "postcss": "^7.0.0",
-        "postcss-calc": "^7.0.1",
-        "postcss-colormin": "^4.0.3",
-        "postcss-convert-values": "^4.0.1",
-        "postcss-discard-comments": "^4.0.2",
-        "postcss-discard-duplicates": "^4.0.2",
-        "postcss-discard-empty": "^4.0.1",
-        "postcss-discard-overridden": "^4.0.1",
-        "postcss-merge-longhand": "^4.0.11",
-        "postcss-merge-rules": "^4.0.3",
-        "postcss-minify-font-values": "^4.0.2",
-        "postcss-minify-gradients": "^4.0.2",
-        "postcss-minify-params": "^4.0.2",
-        "postcss-minify-selectors": "^4.0.2",
-        "postcss-normalize-charset": "^4.0.1",
-        "postcss-normalize-display-values": "^4.0.2",
-        "postcss-normalize-positions": "^4.0.2",
-        "postcss-normalize-repeat-style": "^4.0.2",
-        "postcss-normalize-string": "^4.0.2",
-        "postcss-normalize-timing-functions": "^4.0.2",
-        "postcss-normalize-unicode": "^4.0.1",
-        "postcss-normalize-url": "^4.0.1",
-        "postcss-normalize-whitespace": "^4.0.2",
-        "postcss-ordered-values": "^4.1.2",
-        "postcss-reduce-initial": "^4.0.3",
-        "postcss-reduce-transforms": "^4.0.2",
-        "postcss-svgo": "^4.0.3",
-        "postcss-unique-selectors": "^4.0.1"
-      }
-    },
-    "cssnano-util-get-arguments": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz",
-      "integrity": "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==",
-      "dev": true
-    },
-    "cssnano-util-get-match": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz",
-      "integrity": "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==",
-      "dev": true
-    },
-    "cssnano-util-raw-cache": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz",
-      "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0"
-      }
-    },
-    "cssnano-util-same-parent": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz",
-      "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==",
+      "version": "5.2.12",
+      "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz",
+      "integrity": "sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==",
+      "dev": true,
+      "requires": {
+        "css-declaration-sorter": "^6.3.0",
+        "cssnano-utils": "^3.1.0",
+        "postcss-calc": "^8.2.3",
+        "postcss-colormin": "^5.3.0",
+        "postcss-convert-values": "^5.1.2",
+        "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-minify-font-values": "^5.1.0",
+        "postcss-minify-gradients": "^5.1.1",
+        "postcss-minify-params": "^5.1.3",
+        "postcss-minify-selectors": "^5.2.1",
+        "postcss-normalize-charset": "^5.1.0",
+        "postcss-normalize-display-values": "^5.1.0",
+        "postcss-normalize-positions": "^5.1.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-url": "^5.1.0",
+        "postcss-normalize-whitespace": "^5.1.1",
+        "postcss-ordered-values": "^5.1.3",
+        "postcss-reduce-initial": "^5.1.0",
+        "postcss-reduce-transforms": "^5.1.0",
+        "postcss-svgo": "^5.1.0",
+        "postcss-unique-selectors": "^5.1.1"
+      }
+    },
+    "cssnano-utils": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz",
+      "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==",
       "dev": true
     },
     "csso": {
@@ -7152,30 +6205,6 @@
       "dev": true,
       "requires": {
         "css-tree": "^1.1.2"
-      },
-      "dependencies": {
-        "css-tree": {
-          "version": "1.1.3",
-          "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
-          "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
-          "dev": true,
-          "requires": {
-            "mdn-data": "2.0.14",
-            "source-map": "^0.6.1"
-          }
-        },
-        "mdn-data": {
-          "version": "2.0.14",
-          "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
-          "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
       }
     },
     "csv-streamify": {
@@ -7248,9 +6277,9 @@
       }
     },
     "damerau-levenshtein": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz",
-      "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==",
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
+      "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
       "dev": true
     },
     "dashdash": {
@@ -7262,17 +6291,6 @@
         "assert-plus": "^1.0.0"
       }
     },
-    "data-urls": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
-      "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
-      "dev": true,
-      "requires": {
-        "abab": "^2.0.3",
-        "whatwg-mimetype": "^2.3.0",
-        "whatwg-url": "^8.0.0"
-      }
-    },
     "date-format": {
       "version": "4.0.11",
       "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.11.tgz",
@@ -7287,12 +6305,6 @@
         "ms": "2.1.2"
       }
     },
-    "debuglog": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz",
-      "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==",
-      "dev": true
-    },
     "decamelize": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
@@ -7493,8 +6505,7 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
       "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
-      "dev": true,
-      "optional": true
+      "dev": true
     },
     "depd": {
       "version": "1.1.2",
@@ -7530,16 +6541,6 @@
       "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
       "dev": true
     },
-    "dezalgo": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
-      "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
-      "dev": true,
-      "requires": {
-        "asap": "^2.0.0",
-        "wrappy": "1"
-      }
-    },
     "di": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz",
@@ -7618,21 +6619,14 @@
       }
     },
     "dom-serializer": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
-      "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+      "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
       "dev": true,
       "requires": {
         "domelementtype": "^2.0.1",
+        "domhandler": "^4.2.0",
         "entities": "^2.0.0"
-      },
-      "dependencies": {
-        "domelementtype": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
-          "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
-          "dev": true
-        }
       }
     },
     "dom-storage": {
@@ -7647,19 +6641,29 @@
       "dev": true
     },
     "domelementtype": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
-      "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+      "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
       "dev": true
     },
+    "domhandler": {
+      "version": "4.3.1",
+      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
+      "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+      "dev": true,
+      "requires": {
+        "domelementtype": "^2.2.0"
+      }
+    },
     "domutils": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
-      "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
+      "version": "2.8.0",
+      "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+      "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
       "dev": true,
       "requires": {
-        "dom-serializer": "0",
-        "domelementtype": "1"
+        "dom-serializer": "^1.0.1",
+        "domelementtype": "^2.2.0",
+        "domhandler": "^4.2.0"
       }
     },
     "dot-prop": {
@@ -7785,6 +6789,7 @@
       "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
       "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
       "dev": true,
+      "optional": true,
       "requires": {
         "iconv-lite": "^0.6.2"
       },
@@ -7794,6 +6799,7 @@
           "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
           "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
           "dev": true,
+          "optional": true,
           "requires": {
             "safer-buffer": ">= 2.1.2 < 3.0.0"
           }
@@ -7810,17 +6816,21 @@
       }
     },
     "engine.io": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.6.0.tgz",
-      "integrity": "sha512-Kc8fo5bbg8F4a2f3HPHTEpGyq/IRIQpyeHu3H1ThR14XDD7VrLcsGBo16HUpahgp8YkHJDaU5gNxJZbuGcuueg==",
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz",
+      "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==",
       "dev": true,
       "requires": {
+        "@types/cookie": "^0.4.1",
+        "@types/cors": "^2.8.12",
+        "@types/node": ">=10.0.0",
         "accepts": "~1.3.4",
         "base64id": "2.0.0",
         "cookie": "~0.4.1",
-        "debug": "~4.1.0",
-        "engine.io-parser": "~2.2.0",
-        "ws": "~7.4.2"
+        "cors": "~2.8.5",
+        "debug": "~4.3.1",
+        "engine.io-parser": "~5.0.3",
+        "ws": "~8.2.3"
       },
       "dependencies": {
         "cookie": {
@@ -7829,87 +6839,28 @@
           "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
           "dev": true
         },
-        "debug": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-          "dev": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        },
-        "ws": {
-          "version": "7.4.6",
-          "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
-          "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
-          "dev": true
-        }
-      }
-    },
-    "engine.io-client": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.2.tgz",
-      "integrity": "sha512-QEqIp+gJ/kMHeUun7f5Vv3bteRHppHH/FMBQX/esFj/fuYfjyUKWGMo3VCvIP/V8bE9KcjHmRZrhIz2Z9oNsDA==",
-      "dev": true,
-      "requires": {
-        "component-emitter": "~1.3.0",
-        "component-inherit": "0.0.3",
-        "debug": "~3.1.0",
-        "engine.io-parser": "~2.2.0",
-        "has-cors": "1.1.0",
-        "indexof": "0.0.1",
-        "parseqs": "0.0.6",
-        "parseuri": "0.0.6",
-        "ws": "~7.4.2",
-        "xmlhttprequest-ssl": "~1.6.2",
-        "yeast": "0.1.2"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-          "dev": true
-        },
         "ws": {
-          "version": "7.4.6",
-          "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
-          "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
+          "version": "8.2.3",
+          "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz",
+          "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==",
           "dev": true
         }
       }
     },
     "engine.io-parser": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz",
-      "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==",
-      "dev": true,
-      "requires": {
-        "after": "0.8.2",
-        "arraybuffer.slice": "~0.0.7",
-        "base64-arraybuffer": "0.1.4",
-        "blob": "0.0.5",
-        "has-binary2": "~1.0.2"
-      }
+      "version": "5.0.4",
+      "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz",
+      "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==",
+      "dev": true
     },
     "enhanced-resolve": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz",
-      "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==",
+      "version": "5.7.0",
+      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz",
+      "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==",
       "dev": true,
       "requires": {
-        "graceful-fs": "^4.1.2",
-        "memory-fs": "^0.5.0",
-        "tapable": "^1.0.0"
+        "graceful-fs": "^4.2.4",
+        "tapable": "^2.2.0"
       }
     },
     "ent": {
@@ -7928,13 +6879,12 @@
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz",
       "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==",
-      "dev": true,
-      "optional": true
+      "dev": true
     },
     "err-code": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz",
-      "integrity": "sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==",
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
+      "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==",
       "dev": true
     },
     "errno": {
@@ -7955,59 +6905,11 @@
         "is-arrayish": "^0.2.1"
       }
     },
-    "es-abstract": {
-      "version": "1.20.1",
-      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz",
-      "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "es-to-primitive": "^1.2.1",
-        "function-bind": "^1.1.1",
-        "function.prototype.name": "^1.1.5",
-        "get-intrinsic": "^1.1.1",
-        "get-symbol-description": "^1.0.0",
-        "has": "^1.0.3",
-        "has-property-descriptors": "^1.0.0",
-        "has-symbols": "^1.0.3",
-        "internal-slot": "^1.0.3",
-        "is-callable": "^1.2.4",
-        "is-negative-zero": "^2.0.2",
-        "is-regex": "^1.1.4",
-        "is-shared-array-buffer": "^1.0.2",
-        "is-string": "^1.0.7",
-        "is-weakref": "^1.0.2",
-        "object-inspect": "^1.12.0",
-        "object-keys": "^1.1.1",
-        "object.assign": "^4.1.2",
-        "regexp.prototype.flags": "^1.4.3",
-        "string.prototype.trimend": "^1.0.5",
-        "string.prototype.trimstart": "^1.0.5",
-        "unbox-primitive": "^1.0.2"
-      }
-    },
-    "es-array-method-boxes-properly": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
-      "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==",
-      "dev": true
-    },
     "es-cookie": {
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/es-cookie/-/es-cookie-1.3.2.tgz",
       "integrity": "sha512-UTlYYhXGLOy05P/vKVT2Ui7WtC7NiRzGtJyAKKn32g5Gvcjn7KAClLPWlipCtxIus934dFg9o9jXiBL0nP+t9Q=="
     },
-    "es-to-primitive": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
-      "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
-      "dev": true,
-      "requires": {
-        "is-callable": "^1.1.4",
-        "is-date-object": "^1.0.1",
-        "is-symbol": "^1.0.2"
-      }
-    },
     "es5-ext": {
       "version": "0.10.53",
       "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz",
@@ -8174,9 +7076,9 @@
       "dev": true
     },
     "eventsource": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.2.tgz",
-      "integrity": "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==",
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz",
+      "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==",
       "dev": true
     },
     "evp_bytestokey": {
@@ -8536,9 +7438,9 @@
       "dev": true
     },
     "fast-deep-equal": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
-      "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
       "dev": true
     },
     "fast-glob": {
@@ -8604,9 +7506,9 @@
       }
     },
     "faye-websocket": {
-      "version": "0.10.0",
-      "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
-      "integrity": "sha512-Xhj93RXbMSq8urNCUq4p9l0P6hnySJ/7YNRhYNug0bLOuii7pKO7xQFb5mx9xZXWCar88pLPb805PvUkwrLZpQ==",
+      "version": "0.11.4",
+      "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz",
+      "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
       "dev": true,
       "requires": {
         "websocket-driver": ">=0.5.1"
@@ -8634,13 +7536,26 @@
       }
     },
     "file-loader": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz",
-      "integrity": "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==",
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz",
+      "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==",
       "dev": true,
       "requires": {
         "loader-utils": "^2.0.0",
-        "schema-utils": "^2.6.5"
+        "schema-utils": "^3.0.0"
+      },
+      "dependencies": {
+        "schema-utils": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+          "dev": true,
+          "requires": {
+            "@types/json-schema": "^7.0.8",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
+          }
+        }
       }
     },
     "filesize": {
@@ -8701,25 +7616,6 @@
         "pkg-dir": "^4.1.0"
       },
       "dependencies": {
-        "find-up": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-          "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-          "dev": true,
-          "requires": {
-            "locate-path": "^5.0.0",
-            "path-exists": "^4.0.0"
-          }
-        },
-        "locate-path": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-          "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-          "dev": true,
-          "requires": {
-            "p-locate": "^4.1.0"
-          }
-        },
         "make-dir": {
           "version": "3.1.0",
           "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
@@ -8728,40 +7624,17 @@
           "requires": {
             "semver": "^6.0.0"
           }
-        },
-        "p-locate": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-          "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-          "dev": true,
-          "requires": {
-            "p-limit": "^2.2.0"
-          }
-        },
-        "path-exists": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-          "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-          "dev": true
-        },
-        "pkg-dir": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
-          "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
-          "dev": true,
-          "requires": {
-            "find-up": "^4.0.0"
-          }
         }
       }
     },
     "find-up": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-      "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
       "dev": true,
       "requires": {
-        "locate-path": "^3.0.0"
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
       }
     },
     "firebase": {
@@ -9216,9 +8089,9 @@
       }
     },
     "flatted": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
-      "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
+      "version": "3.2.6",
+      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz",
+      "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==",
       "dev": true
     },
     "flush-write-stream": {
@@ -9238,9 +8111,9 @@
       "dev": true
     },
     "follow-redirects": {
-      "version": "1.13.1",
-      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz",
-      "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==",
+      "version": "1.15.1",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz",
+      "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==",
       "dev": true
     },
     "for-in": {
@@ -9272,6 +8145,12 @@
       "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
       "dev": true
     },
+    "fraction.js": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
+      "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
+      "dev": true
+    },
     "fragment-cache": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
@@ -9375,18 +8254,6 @@
       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
       "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
     },
-    "function.prototype.name": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
-      "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.19.0",
-        "functions-have-names": "^1.2.2"
-      }
-    },
     "functions-have-names": {
       "version": "1.2.3",
       "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
@@ -9404,7 +8271,6 @@
       "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
       "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
       "dev": true,
-      "optional": true,
       "requires": {
         "aproba": "^1.0.3",
         "console-control-strings": "^1.0.0",
@@ -9421,7 +8287,6 @@
           "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
           "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
           "dev": true,
-          "optional": true,
           "requires": {
             "number-is-nan": "^1.0.0"
           }
@@ -9431,7 +8296,6 @@
           "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
           "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
           "dev": true,
-          "optional": true,
           "requires": {
             "code-point-at": "^1.0.0",
             "is-fullwidth-code-point": "^1.0.0",
@@ -9485,12 +8349,6 @@
         "json-bigint": "^1.0.0"
       }
     },
-    "genfun": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz",
-      "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==",
-      "dev": true
-    },
     "gensync": {
       "version": "1.0.0-beta.2",
       "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
@@ -9499,8 +8357,7 @@
     "get-caller-file": {
       "version": "2.0.5",
       "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
-      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
-      "dev": true
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
     },
     "get-intrinsic": {
       "version": "1.1.2",
@@ -9522,16 +8379,6 @@
         "pump": "^3.0.0"
       }
     },
-    "get-symbol-description": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
-      "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.1.1"
-      }
-    },
     "get-value": {
       "version": "2.0.6",
       "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
@@ -9910,35 +8757,6 @@
         "ansi-regex": "^2.0.0"
       }
     },
-    "has-bigints": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
-      "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
-      "dev": true
-    },
-    "has-binary2": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz",
-      "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==",
-      "dev": true,
-      "requires": {
-        "isarray": "2.0.1"
-      },
-      "dependencies": {
-        "isarray": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
-          "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==",
-          "dev": true
-        }
-      }
-    },
-    "has-cors": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
-      "integrity": "sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==",
-      "dev": true
-    },
     "has-flag": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
@@ -9972,8 +8790,7 @@
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
       "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
-      "dev": true,
-      "optional": true
+      "dev": true
     },
     "has-value": {
       "version": "1.0.0",
@@ -10073,12 +8890,6 @@
         "minimalistic-assert": "^1.0.1"
       }
     },
-    "hex-color-regex": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
-      "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==",
-      "dev": true
-    },
     "hmac-drbg": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
@@ -10128,18 +8939,6 @@
         "wbuf": "^1.1.0"
       }
     },
-    "hsl-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz",
-      "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==",
-      "dev": true
-    },
-    "hsla-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz",
-      "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==",
-      "dev": true
-    },
     "html-entities": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz",
@@ -10153,9 +8952,9 @@
       "dev": true
     },
     "http-cache-semantics": {
-      "version": "3.8.1",
-      "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz",
-      "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==",
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
+      "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
       "dev": true
     },
     "http-deceiver": {
@@ -10202,29 +9001,24 @@
       }
     },
     "http-proxy-agent": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz",
-      "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==",
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+      "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
       "dev": true,
       "requires": {
-        "agent-base": "4",
-        "debug": "3.1.0"
+        "@tootallnate/once": "1",
+        "agent-base": "6",
+        "debug": "4"
       },
       "dependencies": {
-        "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+        "agent-base": {
+          "version": "6.0.2",
+          "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+          "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
           "dev": true,
           "requires": {
-            "ms": "2.0.0"
+            "debug": "4"
           }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-          "dev": true
         }
       }
     },
@@ -10402,13 +9196,10 @@
       }
     },
     "icss-utils": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz",
-      "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.14"
-      }
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
+      "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
+      "dev": true
     },
     "idb": {
       "version": "3.0.2",
@@ -10455,32 +9246,14 @@
       "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
       "dev": true
     },
-    "import-cwd": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
-      "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==",
-      "dev": true,
-      "requires": {
-        "import-from": "^2.1.0"
-      }
-    },
     "import-fresh": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
-      "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==",
-      "dev": true,
-      "requires": {
-        "caller-path": "^2.0.0",
-        "resolve-from": "^3.0.0"
-      }
-    },
-    "import-from": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz",
-      "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==",
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+      "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
       "dev": true,
       "requires": {
-        "resolve-from": "^3.0.0"
+        "parent-module": "^1.0.0",
+        "resolve-from": "^4.0.0"
       }
     },
     "import-lazy": {
@@ -10497,6 +9270,51 @@
       "requires": {
         "pkg-dir": "^3.0.0",
         "resolve-cwd": "^2.0.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+          "dev": true,
+          "requires": {
+            "locate-path": "^3.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+          "dev": true,
+          "requires": {
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+          "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+          "dev": true,
+          "requires": {
+            "p-limit": "^2.0.0"
+          }
+        },
+        "path-exists": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+          "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+          "dev": true
+        },
+        "pkg-dir": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+          "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+          "dev": true,
+          "requires": {
+            "find-up": "^3.0.0"
+          }
+        }
       }
     },
     "imurmurhash": {
@@ -10511,18 +9329,6 @@
       "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
       "dev": true
     },
-    "indexes-of": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
-      "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==",
-      "dev": true
-    },
-    "indexof": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
-      "integrity": "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==",
-      "dev": true
-    },
     "infer-owner": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
@@ -10745,26 +9551,6 @@
         "ipaddr.js": "^1.9.0"
       }
     },
-    "internal-slot": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
-      "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
-      "dev": true,
-      "requires": {
-        "get-intrinsic": "^1.1.0",
-        "has": "^1.0.3",
-        "side-channel": "^1.0.4"
-      }
-    },
-    "invariant": {
-      "version": "2.2.4",
-      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
-      "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
-      "dev": true,
-      "requires": {
-        "loose-envify": "^1.0.0"
-      }
-    },
     "ip": {
       "version": "1.1.8",
       "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
@@ -10784,9 +9570,9 @@
       "dev": true
     },
     "is-absolute-url": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz",
-      "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==",
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
+      "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
       "dev": true
     },
     "is-accessor-descriptor": {
@@ -10825,15 +9611,6 @@
       "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
       "dev": true
     },
-    "is-bigint": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
-      "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
-      "dev": true,
-      "requires": {
-        "has-bigints": "^1.0.1"
-      }
-    },
     "is-binary-path": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -10843,28 +9620,12 @@
         "binary-extensions": "^2.0.0"
       }
     },
-    "is-boolean-object": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
-      "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      }
-    },
     "is-buffer": {
       "version": "1.1.6",
       "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
       "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
       "dev": true
     },
-    "is-callable": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
-      "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
-      "dev": true
-    },
     "is-ci": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
@@ -10874,20 +9635,6 @@
         "ci-info": "^2.0.0"
       }
     },
-    "is-color-stop": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz",
-      "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==",
-      "dev": true,
-      "requires": {
-        "css-color-names": "^0.0.4",
-        "hex-color-regex": "^1.1.0",
-        "hsl-regex": "^1.0.0",
-        "hsla-regex": "^1.0.0",
-        "rgb-regex": "^1.0.1",
-        "rgba-regex": "^1.0.0"
-      }
-    },
     "is-core-module": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz",
@@ -10944,12 +9691,6 @@
         }
       }
     },
-    "is-directory": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
-      "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==",
-      "dev": true
-    },
     "is-docker": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz",
@@ -11007,10 +9748,10 @@
       "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
       "dev": true
     },
-    "is-negative-zero": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
-      "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
+    "is-lambda": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz",
+      "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==",
       "dev": true
     },
     "is-npm": {
@@ -11025,15 +9766,6 @@
       "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
       "dev": true
     },
-    "is-number-object": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
-      "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
-      "dev": true,
-      "requires": {
-        "has-tostringtag": "^1.0.0"
-      }
-    },
     "is-obj": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
@@ -11064,12 +9796,6 @@
         "path-is-inside": "^1.0.2"
       }
     },
-    "is-plain-obj": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
-      "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
-      "dev": true
-    },
     "is-plain-object": {
       "version": "2.0.4",
       "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
@@ -11101,19 +9827,10 @@
       "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
       "dev": true
     },
-    "is-shared-array-buffer": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
-      "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2"
-      }
-    },
     "is-stream": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
-      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+      "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
       "dev": true
     },
     "is-stream-ended": {
@@ -11122,24 +9839,6 @@
       "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==",
       "dev": true
     },
-    "is-string": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
-      "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
-      "dev": true,
-      "requires": {
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-symbol": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
-      "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
-      "dev": true,
-      "requires": {
-        "has-symbols": "^1.0.2"
-      }
-    },
     "is-typedarray": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
@@ -11158,15 +9857,6 @@
       "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==",
       "dev": true
     },
-    "is-weakref": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
-      "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2"
-      }
-    },
     "is-what": {
       "version": "3.14.1",
       "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz",
@@ -11364,9 +10054,9 @@
       }
     },
     "jasmine-core": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.5.0.tgz",
-      "integrity": "sha512-nCeAiw37MIMA9w9IXso7bRaLl+c/ef3wnxsoSAlYrzS+Ot0zTG6nU8G/cIfGkqpkjX2wNaIW9RFG0TwIFnG6bA==",
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.6.0.tgz",
+      "integrity": "sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw==",
       "dev": true
     },
     "jasmine-spec-reporter": {
@@ -11385,9 +10075,9 @@
       "dev": true
     },
     "jest-worker": {
-      "version": "26.3.0",
-      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.3.0.tgz",
-      "integrity": "sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw==",
+      "version": "26.6.2",
+      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
+      "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
       "dev": true,
       "requires": {
         "@types/node": "*",
@@ -11525,22 +10215,15 @@
       "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
       "dev": true
     },
-    "json3": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz",
-      "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==",
-      "dev": true
-    },
     "json5": {
       "version": "2.2.1",
       "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
-      "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
-      "dev": true
+      "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA=="
     },
     "jsonc-parser": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.0.tgz",
-      "integrity": "sha512-b0EBt8SWFNnixVdvoR2ZtEGa9ZqLhbJnOjezn+WP+8kspFm+PFYDN8Z4Bc7pRlDjvuVcADSUkroIuTWWn/YiIA==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz",
+      "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==",
       "dev": true
     },
     "jsonfile": {
@@ -11655,37 +10338,78 @@
       }
     },
     "karma": {
-      "version": "5.0.9",
-      "resolved": "https://registry.npmjs.org/karma/-/karma-5.0.9.tgz",
-      "integrity": "sha512-dUA5z7Lo7G4FRSe1ZAXqOINEEWxmCjDBbfRBmU/wYlSMwxUQJP/tEEP90yJt3Uqo03s9rCgVnxtlfq+uDhxSPg==",
+      "version": "6.4.0",
+      "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.0.tgz",
+      "integrity": "sha512-s8m7z0IF5g/bS5ONT7wsOavhW4i4aFkzD4u4wgzAQWT4HGUeWI3i21cK2Yz6jndMAeHETp5XuNsRoyGJZXVd4w==",
       "dev": true,
       "requires": {
+        "@colors/colors": "1.5.0",
         "body-parser": "^1.19.0",
         "braces": "^3.0.2",
-        "chokidar": "^3.0.0",
-        "colors": "^1.4.0",
+        "chokidar": "^3.5.1",
         "connect": "^3.7.0",
         "di": "^0.0.1",
         "dom-serialize": "^2.2.1",
-        "flatted": "^2.0.2",
-        "glob": "^7.1.6",
-        "graceful-fs": "^4.2.4",
+        "glob": "^7.1.7",
+        "graceful-fs": "^4.2.6",
         "http-proxy": "^1.18.1",
-        "isbinaryfile": "^4.0.6",
-        "lodash": "^4.17.15",
-        "log4js": "^6.2.1",
-        "mime": "^2.4.5",
+        "isbinaryfile": "^4.0.8",
+        "lodash": "^4.17.21",
+        "log4js": "^6.4.1",
+        "mime": "^2.5.2",
         "minimatch": "^3.0.4",
+        "mkdirp": "^0.5.5",
         "qjobs": "^1.2.0",
         "range-parser": "^1.2.1",
         "rimraf": "^3.0.2",
-        "socket.io": "^2.3.0",
+        "socket.io": "^4.4.1",
         "source-map": "^0.6.1",
-        "tmp": "0.2.1",
-        "ua-parser-js": "0.7.21",
-        "yargs": "^15.3.1"
+        "tmp": "^0.2.1",
+        "ua-parser-js": "^0.7.30",
+        "yargs": "^16.1.1"
       },
       "dependencies": {
+        "ansi-regex": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+          "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "cliui": {
+          "version": "7.0.4",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+          "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+          "dev": true,
+          "requires": {
+            "string-width": "^4.2.0",
+            "strip-ansi": "^6.0.0",
+            "wrap-ansi": "^7.0.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        },
         "glob": {
           "version": "7.2.3",
           "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
@@ -11711,6 +10435,24 @@
             }
           }
         },
+        "graceful-fs": {
+          "version": "4.2.10",
+          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+          "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+          "dev": true
+        },
+        "lodash": {
+          "version": "4.17.21",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+          "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+          "dev": true
+        },
         "mime": {
           "version": "2.6.0",
           "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
@@ -11732,6 +10474,26 @@
           "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true
         },
+        "string-width": {
+          "version": "4.2.3",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.1"
+          }
+        },
+        "strip-ansi": {
+          "version": "6.0.1",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+          "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^5.0.1"
+          }
+        },
         "tmp": {
           "version": "0.2.1",
           "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
@@ -11740,6 +10502,44 @@
           "requires": {
             "rimraf": "^3.0.0"
           }
+        },
+        "wrap-ansi": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+          "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.0.0",
+            "string-width": "^4.1.0",
+            "strip-ansi": "^6.0.0"
+          }
+        },
+        "y18n": {
+          "version": "5.0.8",
+          "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+          "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+          "dev": true
+        },
+        "yargs": {
+          "version": "16.2.0",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+          "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+          "dev": true,
+          "requires": {
+            "cliui": "^7.0.2",
+            "escalade": "^3.1.1",
+            "get-caller-file": "^2.0.5",
+            "require-directory": "^2.1.1",
+            "string-width": "^4.2.0",
+            "y18n": "^5.0.5",
+            "yargs-parser": "^20.2.2"
+          }
+        },
+        "yargs-parser": {
+          "version": "20.2.9",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+          "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+          "dev": true
         }
       }
     },
@@ -11849,9 +10649,9 @@
       }
     },
     "less": {
-      "version": "3.13.1",
-      "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz",
-      "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==",
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/less/-/less-4.1.1.tgz",
+      "integrity": "sha512-w09o8tZFPThBscl5d0Ggp3RcrKIouBoQscnOMgFH3n5V3kN/CXGHNfCkRPtxJk6nKryDXaV9aHLK55RXuH4sAw==",
       "dev": true,
       "requires": {
         "copy-anything": "^2.0.1",
@@ -11860,7 +10660,8 @@
         "image-size": "~0.5.0",
         "make-dir": "^2.1.0",
         "mime": "^1.4.1",
-        "native-request": "^1.0.5",
+        "needle": "^2.5.2",
+        "parse-node-version": "^1.0.1",
         "source-map": "~0.6.0",
         "tslib": "^1.10.0"
       },
@@ -11881,15 +10682,27 @@
       }
     },
     "less-loader": {
-      "version": "6.2.0",
-      "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-6.2.0.tgz",
-      "integrity": "sha512-Cl5h95/Pz/PWub/tCBgT1oNMFeH1WTD33piG80jn5jr12T4XbxZcjThwNXDQ7AG649WEynuIzO4b0+2Tn9Qolg==",
+      "version": "7.3.0",
+      "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz",
+      "integrity": "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==",
       "dev": true,
       "requires": {
-        "clone": "^2.1.2",
-        "less": "^3.11.3",
+        "klona": "^2.0.4",
         "loader-utils": "^2.0.0",
-        "schema-utils": "^2.7.0"
+        "schema-utils": "^3.0.0"
+      },
+      "dependencies": {
+        "schema-utils": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+          "dev": true,
+          "requires": {
+            "@types/json-schema": "^7.0.8",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
+          }
+        }
       }
     },
     "leven": {
@@ -11898,23 +10711,32 @@
       "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
       "dev": true
     },
-    "levenary": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz",
-      "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==",
-      "dev": true,
-      "requires": {
-        "leven": "^3.1.0"
-      }
-    },
     "license-webpack-plugin": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.0.tgz",
-      "integrity": "sha512-JK/DXrtN6UeYQSgkg5q1+pgJ8aiKPL9tnz9Wzw+Ikkf+8mJxG56x6t8O+OH/tAeF/5NREnelTEMyFtbJNkjH4w==",
+      "version": "2.3.11",
+      "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.11.tgz",
+      "integrity": "sha512-0iVGoX5vx0WDy8dmwTTpOOMYiGqILyUbDeVMFH52AjgBlS58lHwOlFMSoqg5nY8Kxl6+FRKyUZY/UdlQaOyqDw==",
       "dev": true,
       "requires": {
         "@types/webpack-sources": "^0.1.5",
         "webpack-sources": "^1.2.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        },
+        "webpack-sources": {
+          "version": "1.4.3",
+          "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
+          "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+          "dev": true,
+          "requires": {
+            "source-list-map": "^2.0.0",
+            "source-map": "~0.6.1"
+          }
+        }
       }
     },
     "lie": {
@@ -11926,6 +10748,12 @@
         "immediate": "~3.0.5"
       }
     },
+    "lines-and-columns": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+      "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+      "dev": true
+    },
     "listenercount": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz",
@@ -11950,13 +10778,12 @@
       }
     },
     "locate-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-      "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
       "dev": true,
       "requires": {
-        "p-locate": "^3.0.0",
-        "path-exists": "^3.0.0"
+        "p-locate": "^4.1.0"
       }
     },
     "lodash": {
@@ -11994,13 +10821,7 @@
     "lodash.camelcase": {
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
-      "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY="
-    },
-    "lodash.clonedeep": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
-      "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
-      "dev": true
+      "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY="
     },
     "lodash.defaults": {
       "version": "4.2.0",
@@ -12215,12 +11036,6 @@
           "requires": {
             "ms": "2.1.2"
           }
-        },
-        "flatted": {
-          "version": "3.2.6",
-          "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz",
-          "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==",
-          "dev": true
         }
       }
     },
@@ -12256,15 +11071,6 @@
       "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
       "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
     },
-    "loose-envify": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
-      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
-      "dev": true,
-      "requires": {
-        "js-tokens": "^3.0.0 || ^4.0.0"
-      }
-    },
     "lottie-web": {
       "version": "5.7.6",
       "resolved": "https://registry.npmjs.org/lottie-web/-/lottie-web-5.7.6.tgz",
@@ -12303,9 +11109,9 @@
       }
     },
     "magic-string": {
-      "version": "0.25.4",
-      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz",
-      "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==",
+      "version": "0.25.7",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
+      "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
       "dev": true,
       "requires": {
         "sourcemap-codec": "^1.4.4"
@@ -12336,63 +11142,64 @@
       "dev": true
     },
     "make-fetch-happen": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz",
-      "integrity": "sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==",
-      "dev": true,
-      "requires": {
-        "agentkeepalive": "^3.4.1",
-        "cacache": "^12.0.0",
-        "http-cache-semantics": "^3.8.1",
-        "http-proxy-agent": "^2.1.0",
-        "https-proxy-agent": "^2.2.3",
-        "lru-cache": "^5.1.1",
-        "mississippi": "^3.0.0",
-        "node-fetch-npm": "^2.0.2",
-        "promise-retry": "^1.1.1",
-        "socks-proxy-agent": "^4.0.0",
-        "ssri": "^6.0.0"
+      "version": "8.0.14",
+      "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz",
+      "integrity": "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==",
+      "dev": true,
+      "requires": {
+        "agentkeepalive": "^4.1.3",
+        "cacache": "^15.0.5",
+        "http-cache-semantics": "^4.1.0",
+        "http-proxy-agent": "^4.0.1",
+        "https-proxy-agent": "^5.0.0",
+        "is-lambda": "^1.0.1",
+        "lru-cache": "^6.0.0",
+        "minipass": "^3.1.3",
+        "minipass-collect": "^1.0.2",
+        "minipass-fetch": "^1.3.2",
+        "minipass-flush": "^1.0.5",
+        "minipass-pipeline": "^1.2.4",
+        "promise-retry": "^2.0.1",
+        "socks-proxy-agent": "^5.0.0",
+        "ssri": "^8.0.0"
       },
       "dependencies": {
-        "cacache": {
-          "version": "12.0.4",
-          "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
-          "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
+        "agent-base": {
+          "version": "6.0.2",
+          "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+          "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
           "dev": true,
           "requires": {
-            "bluebird": "^3.5.5",
-            "chownr": "^1.1.1",
-            "figgy-pudding": "^3.5.1",
-            "glob": "^7.1.4",
-            "graceful-fs": "^4.1.15",
-            "infer-owner": "^1.0.3",
-            "lru-cache": "^5.1.1",
-            "mississippi": "^3.0.0",
-            "mkdirp": "^0.5.1",
-            "move-concurrently": "^1.0.1",
-            "promise-inflight": "^1.0.1",
-            "rimraf": "^2.6.3",
-            "ssri": "^6.0.1",
-            "unique-filename": "^1.1.1",
-            "y18n": "^4.0.0"
+            "debug": "4"
           }
         },
-        "rimraf": {
-          "version": "2.7.1",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+        "https-proxy-agent": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+          "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
           "dev": true,
           "requires": {
-            "glob": "^7.1.3"
+            "agent-base": "6",
+            "debug": "4"
           }
         },
-        "ssri": {
-          "version": "6.0.2",
-          "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz",
-          "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
           "dev": true,
           "requires": {
-            "figgy-pudding": "^3.5.1"
+            "yallist": "^4.0.0"
+          }
+        },
+        "promise-retry": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
+          "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
+          "dev": true,
+          "requires": {
+            "err-code": "^2.0.2",
+            "retry": "^0.12.0"
           }
         }
       }
@@ -12444,9 +11251,9 @@
       }
     },
     "mdn-data": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
-      "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==",
+      "version": "2.0.14",
+      "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
+      "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
       "dev": true
     },
     "media-typer": {
@@ -12480,9 +11287,9 @@
       }
     },
     "memory-fs": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
-      "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
+      "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==",
       "dev": true,
       "requires": {
         "errno": "^0.1.3",
@@ -12600,58 +11407,41 @@
       "dev": true
     },
     "mini-css-extract-plugin": {
-      "version": "0.10.0",
-      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.10.0.tgz",
-      "integrity": "sha512-QgKgJBjaJhxVPwrLNqqwNS0AGkuQQ31Hp4xGXEK/P7wehEg6qmNtReHKai3zRXqY60wGVWLYcOMJK2b98aGc3A==",
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.3.5.tgz",
+      "integrity": "sha512-tvmzcwqJJXau4OQE5vT72pRT18o2zF+tQJp8CWchqvfQnTlflkzS+dANYcRdyPRWUWRkfmeNTKltx0NZI/b5dQ==",
       "dev": true,
       "requires": {
-        "loader-utils": "^1.1.0",
-        "normalize-url": "1.9.1",
-        "schema-utils": "^1.0.0",
+        "loader-utils": "^2.0.0",
+        "schema-utils": "^3.0.0",
         "webpack-sources": "^1.1.0"
       },
       "dependencies": {
-        "json5": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
-          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
-          "dev": true,
-          "requires": {
-            "minimist": "^1.2.0"
-          }
-        },
-        "loader-utils": {
-          "version": "1.4.0",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
-          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+        "schema-utils": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
           "dev": true,
           "requires": {
-            "big.js": "^5.2.2",
-            "emojis-list": "^3.0.0",
-            "json5": "^1.0.1"
+            "@types/json-schema": "^7.0.8",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
           }
         },
-        "normalize-url": {
-          "version": "1.9.1",
-          "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
-          "integrity": "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==",
-          "dev": true,
-          "requires": {
-            "object-assign": "^4.0.1",
-            "prepend-http": "^1.0.0",
-            "query-string": "^4.1.0",
-            "sort-keys": "^1.0.0"
-          }
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
         },
-        "schema-utils": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+        "webpack-sources": {
+          "version": "1.4.3",
+          "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
+          "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
           "dev": true,
           "requires": {
-            "ajv": "^6.1.0",
-            "ajv-errors": "^1.0.0",
-            "ajv-keywords": "^3.1.0"
+            "source-list-map": "^2.0.0",
+            "source-map": "~0.6.1"
           }
         }
       }
@@ -12700,6 +11490,30 @@
         "minipass": "^3.0.0"
       }
     },
+    "minipass-fetch": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz",
+      "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==",
+      "dev": true,
+      "requires": {
+        "encoding": "^0.1.12",
+        "minipass": "^3.1.0",
+        "minipass-sized": "^1.0.3",
+        "minizlib": "^2.0.0"
+      },
+      "dependencies": {
+        "minizlib": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+          "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+          "dev": true,
+          "requires": {
+            "minipass": "^3.0.0",
+            "yallist": "^4.0.0"
+          }
+        }
+      }
+    },
     "minipass-flush": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
@@ -12709,6 +11523,16 @@
         "minipass": "^3.0.0"
       }
     },
+    "minipass-json-stream": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz",
+      "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==",
+      "dev": true,
+      "requires": {
+        "jsonparse": "^1.3.1",
+        "minipass": "^3.0.0"
+      }
+    },
     "minipass-pipeline": {
       "version": "1.2.4",
       "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
@@ -12718,6 +11542,15 @@
         "minipass": "^3.0.0"
       }
     },
+    "minipass-sized": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
+      "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==",
+      "dev": true,
+      "requires": {
+        "minipass": "^3.0.0"
+      }
+    },
     "minizlib": {
       "version": "1.3.3",
       "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
@@ -12888,6 +11721,12 @@
       "dev": true,
       "optional": true
     },
+    "nanoid": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
+      "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+      "dev": true
+    },
     "nanomatch": {
       "version": "1.2.13",
       "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
@@ -12927,12 +11766,29 @@
         }
       }
     },
-    "native-request": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.1.0.tgz",
-      "integrity": "sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw==",
+    "needle": {
+      "version": "2.9.1",
+      "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz",
+      "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==",
       "dev": true,
-      "optional": true
+      "optional": true,
+      "requires": {
+        "debug": "^3.2.6",
+        "iconv-lite": "^0.4.4",
+        "sax": "^1.2.4"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.7",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+          "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        }
+      }
     },
     "negotiator": {
       "version": "0.6.2",
@@ -13064,17 +11920,6 @@
       "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
       "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
     },
-    "node-fetch-npm": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz",
-      "integrity": "sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==",
-      "dev": true,
-      "requires": {
-        "encoding": "^0.1.11",
-        "json-parse-better-errors": "^1.0.0",
-        "safe-buffer": "^5.1.1"
-      }
-    },
     "node-forge": {
       "version": "0.10.0",
       "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
@@ -13085,7 +11930,6 @@
       "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz",
       "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==",
       "dev": true,
-      "optional": true,
       "requires": {
         "env-paths": "^2.2.0",
         "glob": "^7.1.4",
@@ -13103,15 +11947,13 @@
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
           "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "lru-cache": {
           "version": "6.0.0",
           "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
           "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
           "dev": true,
-          "optional": true,
           "requires": {
             "yallist": "^4.0.0"
           }
@@ -13121,7 +11963,6 @@
           "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
           "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
           "dev": true,
-          "optional": true,
           "requires": {
             "minipass": "^3.0.0",
             "yallist": "^4.0.0"
@@ -13131,15 +11972,13 @@
           "version": "1.0.4",
           "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
           "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "rimraf": {
           "version": "3.0.2",
           "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
           "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
           "dev": true,
-          "optional": true,
           "requires": {
             "glob": "^7.1.3"
           }
@@ -13149,7 +11988,6 @@
           "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
           "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
           "dev": true,
-          "optional": true,
           "requires": {
             "lru-cache": "^6.0.0"
           }
@@ -13159,7 +11997,6 @@
           "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz",
           "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==",
           "dev": true,
-          "optional": true,
           "requires": {
             "chownr": "^2.0.0",
             "fs-minipass": "^2.0.0",
@@ -13174,7 +12011,6 @@
           "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
           "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
           "dev": true,
-          "optional": true,
           "requires": {
             "isexe": "^2.0.0"
           }
@@ -13231,37 +12067,10 @@
       "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
       "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
       "dev": true,
-      "optional": true,
       "requires": {
         "abbrev": "1"
       }
     },
-    "normalize-package-data": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
-      "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
-      "dev": true,
-      "requires": {
-        "hosted-git-info": "^2.1.4",
-        "resolve": "^1.10.0",
-        "semver": "2 || 3 || 4 || 5",
-        "validate-npm-package-license": "^3.0.1"
-      },
-      "dependencies": {
-        "hosted-git-info": {
-          "version": "2.8.9",
-          "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
-          "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
-          "dev": true
-        },
-        "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-          "dev": true
-        }
-      }
-    },
     "normalize-path": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -13275,9 +12084,9 @@
       "dev": true
     },
     "normalize-url": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz",
-      "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==",
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
+      "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
       "dev": true
     },
     "npm-bundled": {
@@ -13325,12 +12134,12 @@
       "dev": true
     },
     "npm-package-arg": {
-      "version": "8.0.1",
-      "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.0.1.tgz",
-      "integrity": "sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ==",
+      "version": "8.1.0",
+      "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.0.tgz",
+      "integrity": "sha512-/ep6QDxBkm9HvOhOg0heitSd7JHA1U7y1qhhlRlteYYAi9Pdb/ZV7FW5aHpkrpM8+P+4p/jjR8zCyKPBMBjSig==",
       "dev": true,
       "requires": {
-        "hosted-git-info": "^3.0.2",
+        "hosted-git-info": "^3.0.6",
         "semver": "^7.0.0",
         "validate-npm-package-name": "^3.0.0"
       },
@@ -13356,14 +12165,40 @@
       }
     },
     "npm-packlist": {
-      "version": "1.4.8",
-      "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz",
-      "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==",
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz",
+      "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==",
       "dev": true,
       "requires": {
-        "ignore-walk": "^3.0.1",
-        "npm-bundled": "^1.0.1",
+        "glob": "^7.1.6",
+        "ignore-walk": "^3.0.3",
+        "npm-bundled": "^1.1.1",
         "npm-normalize-package-bin": "^1.0.1"
+      },
+      "dependencies": {
+        "glob": {
+          "version": "7.2.3",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+          "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+          "dev": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.1.1",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        },
+        "minimatch": {
+          "version": "3.1.2",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+          "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
+        }
       }
     },
     "npm-pick-manifest": {
@@ -13398,56 +12233,46 @@
       }
     },
     "npm-registry-fetch": {
-      "version": "4.0.7",
-      "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.7.tgz",
-      "integrity": "sha512-cny9v0+Mq6Tjz+e0erFAB+RYJ/AVGzkjnISiobqP8OWj9c9FLoZZu8/SPSKJWE17F1tk4018wfjV+ZbIbqC7fQ==",
+      "version": "9.0.0",
+      "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz",
+      "integrity": "sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA==",
       "dev": true,
       "requires": {
-        "JSONStream": "^1.3.4",
-        "bluebird": "^3.5.1",
-        "figgy-pudding": "^3.4.1",
-        "lru-cache": "^5.1.1",
-        "make-fetch-happen": "^5.0.0",
-        "npm-package-arg": "^6.1.0",
-        "safe-buffer": "^5.2.0"
+        "@npmcli/ci-detect": "^1.0.0",
+        "lru-cache": "^6.0.0",
+        "make-fetch-happen": "^8.0.9",
+        "minipass": "^3.1.3",
+        "minipass-fetch": "^1.3.0",
+        "minipass-json-stream": "^1.0.1",
+        "minizlib": "^2.0.0",
+        "npm-package-arg": "^8.0.0"
       },
       "dependencies": {
-        "hosted-git-info": {
-          "version": "2.8.9",
-          "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
-          "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
-          "dev": true
-        },
-        "npm-package-arg": {
-          "version": "6.1.1",
-          "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz",
-          "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==",
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
           "dev": true,
           "requires": {
-            "hosted-git-info": "^2.7.1",
-            "osenv": "^0.1.5",
-            "semver": "^5.6.0",
-            "validate-npm-package-name": "^3.0.0"
+            "yallist": "^4.0.0"
           }
         },
-        "safe-buffer": {
-          "version": "5.2.1",
-          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-          "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-          "dev": true
-        },
-        "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-          "dev": true
+        "minizlib": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+          "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+          "dev": true,
+          "requires": {
+            "minipass": "^3.0.0",
+            "yallist": "^4.0.0"
+          }
         }
       }
     },
     "npm-run-path": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
-      "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+      "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
       "dev": true,
       "requires": {
         "path-key": "^2.0.0"
@@ -13458,7 +12283,6 @@
       "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
       "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
       "dev": true,
-      "optional": true,
       "requires": {
         "are-we-there-yet": "~1.1.2",
         "console-control-strings": "~1.1.0",
@@ -13467,26 +12291,19 @@
       }
     },
     "nth-check": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
-      "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+      "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
       "dev": true,
       "requires": {
-        "boolbase": "~1.0.0"
+        "boolbase": "^1.0.0"
       }
     },
-    "num2fraction": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
-      "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==",
-      "dev": true
-    },
     "number-is-nan": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
       "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
-      "dev": true,
-      "optional": true
+      "dev": true
     },
     "oauth-sign": {
       "version": "0.9.0",
@@ -13531,12 +12348,6 @@
         }
       }
     },
-    "object-inspect": {
-      "version": "1.12.2",
-      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
-      "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
-      "dev": true
-    },
     "object-is": {
       "version": "1.1.5",
       "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
@@ -13574,18 +12385,6 @@
         "object-keys": "^1.1.1"
       }
     },
-    "object.getownpropertydescriptors": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz",
-      "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==",
-      "dev": true,
-      "requires": {
-        "array.prototype.reduce": "^1.0.4",
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.1"
-      }
-    },
     "object.pick": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
@@ -13595,17 +12394,6 @@
         "isobject": "^3.0.1"
       }
     },
-    "object.values": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz",
-      "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.19.1"
-      }
-    },
     "obuf": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
@@ -13687,17 +12475,17 @@
       }
     },
     "ora": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/ora/-/ora-5.0.0.tgz",
-      "integrity": "sha512-s26qdWqke2kjN/wC4dy+IQPBIMWBJlSU/0JZhk30ZDBLelW25rv66yutUWARMigpGPzcXHb+Nac5pNhN/WsARw==",
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz",
+      "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==",
       "dev": true,
       "requires": {
+        "bl": "^4.0.3",
         "chalk": "^4.1.0",
         "cli-cursor": "^3.1.0",
-        "cli-spinners": "^2.4.0",
+        "cli-spinners": "^2.5.0",
         "is-interactive": "^1.0.0",
         "log-symbols": "^4.0.0",
-        "mute-stream": "0.0.8",
         "strip-ansi": "^6.0.0",
         "wcwidth": "^1.0.1"
       },
@@ -13748,12 +12536,6 @@
           "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
           "dev": true
         },
-        "mute-stream": {
-          "version": "0.0.8",
-          "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
-          "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
-          "dev": true
-        },
         "strip-ansi": {
           "version": "6.0.1",
           "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
@@ -13780,28 +12562,12 @@
       "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==",
       "dev": true
     },
-    "os-homedir": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
-      "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==",
-      "dev": true
-    },
     "os-tmpdir": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
       "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
       "dev": true
     },
-    "osenv": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
-      "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
-      "dev": true,
-      "requires": {
-        "os-homedir": "^1.0.0",
-        "os-tmpdir": "^1.0.0"
-      }
-    },
     "p-cancelable": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
@@ -13811,7 +12577,7 @@
     "p-finally": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
-      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+      "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
       "dev": true
     },
     "p-limit": {
@@ -13824,12 +12590,12 @@
       }
     },
     "p-locate": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-      "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
       "dev": true,
       "requires": {
-        "p-limit": "^2.0.0"
+        "p-limit": "^2.2.0"
       }
     },
     "p-map": {
@@ -13869,134 +12635,76 @@
       }
     },
     "pacote": {
-      "version": "9.5.12",
-      "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.12.tgz",
-      "integrity": "sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ==",
+      "version": "11.2.4",
+      "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.2.4.tgz",
+      "integrity": "sha512-GfTeVQGJ6WyBQbQD4t3ocHbyOmTQLmWjkCKSZPmKiGFKYKNUaM5U2gbLzUW8WG1XmS9yQFnsTFA0k3o1+q4klQ==",
       "dev": true,
       "requires": {
-        "bluebird": "^3.5.3",
-        "cacache": "^12.0.2",
-        "chownr": "^1.1.2",
-        "figgy-pudding": "^3.5.1",
-        "get-stream": "^4.1.0",
-        "glob": "^7.1.3",
+        "@npmcli/git": "^2.0.1",
+        "@npmcli/installed-package-contents": "^1.0.5",
+        "@npmcli/promise-spawn": "^1.2.0",
+        "@npmcli/run-script": "^1.3.0",
+        "cacache": "^15.0.5",
+        "chownr": "^2.0.0",
+        "fs-minipass": "^2.1.0",
         "infer-owner": "^1.0.4",
-        "lru-cache": "^5.1.1",
-        "make-fetch-happen": "^5.0.0",
-        "minimatch": "^3.0.4",
-        "minipass": "^2.3.5",
-        "mississippi": "^3.0.0",
-        "mkdirp": "^0.5.1",
-        "normalize-package-data": "^2.4.0",
-        "npm-normalize-package-bin": "^1.0.0",
-        "npm-package-arg": "^6.1.0",
-        "npm-packlist": "^1.1.12",
-        "npm-pick-manifest": "^3.0.0",
-        "npm-registry-fetch": "^4.0.0",
-        "osenv": "^0.1.5",
-        "promise-inflight": "^1.0.1",
+        "minipass": "^3.1.3",
+        "mkdirp": "^1.0.3",
+        "npm-package-arg": "^8.0.1",
+        "npm-packlist": "^2.1.4",
+        "npm-pick-manifest": "^6.0.0",
+        "npm-registry-fetch": "^9.0.0",
         "promise-retry": "^1.1.1",
-        "protoduck": "^5.0.1",
-        "rimraf": "^2.6.2",
-        "safe-buffer": "^5.1.2",
-        "semver": "^5.6.0",
-        "ssri": "^6.0.1",
-        "tar": "^4.4.10",
-        "unique-filename": "^1.1.1",
-        "which": "^1.3.1"
+        "read-package-json-fast": "^1.1.3",
+        "rimraf": "^3.0.2",
+        "ssri": "^8.0.0",
+        "tar": "^6.1.0"
       },
       "dependencies": {
-        "cacache": {
-          "version": "12.0.4",
-          "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
-          "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
-          "dev": true,
-          "requires": {
-            "bluebird": "^3.5.5",
-            "chownr": "^1.1.1",
-            "figgy-pudding": "^3.5.1",
-            "glob": "^7.1.4",
-            "graceful-fs": "^4.1.15",
-            "infer-owner": "^1.0.3",
-            "lru-cache": "^5.1.1",
-            "mississippi": "^3.0.0",
-            "mkdirp": "^0.5.1",
-            "move-concurrently": "^1.0.1",
-            "promise-inflight": "^1.0.1",
-            "rimraf": "^2.6.3",
-            "ssri": "^6.0.1",
-            "unique-filename": "^1.1.1",
-            "y18n": "^4.0.0"
-          }
-        },
-        "hosted-git-info": {
-          "version": "2.8.9",
-          "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
-          "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+        "chownr": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+          "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
           "dev": true
         },
-        "minipass": {
-          "version": "2.9.0",
-          "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
-          "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
-          "dev": true,
-          "requires": {
-            "safe-buffer": "^5.1.2",
-            "yallist": "^3.0.0"
-          }
-        },
-        "npm-package-arg": {
-          "version": "6.1.1",
-          "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz",
-          "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==",
+        "minizlib": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+          "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
           "dev": true,
           "requires": {
-            "hosted-git-info": "^2.7.1",
-            "osenv": "^0.1.5",
-            "semver": "^5.6.0",
-            "validate-npm-package-name": "^3.0.0"
+            "minipass": "^3.0.0",
+            "yallist": "^4.0.0"
           }
         },
-        "npm-pick-manifest": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz",
-          "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==",
-          "dev": true,
-          "requires": {
-            "figgy-pudding": "^3.5.1",
-            "npm-package-arg": "^6.0.0",
-            "semver": "^5.4.1"
-          }
+        "mkdirp": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+          "dev": true
         },
         "rimraf": {
-          "version": "2.7.1",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
           "dev": true,
           "requires": {
             "glob": "^7.1.3"
           }
         },
-        "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-          "dev": true
-        },
-        "ssri": {
-          "version": "6.0.2",
-          "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz",
-          "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
+        "tar": {
+          "version": "6.1.11",
+          "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz",
+          "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==",
           "dev": true,
           "requires": {
-            "figgy-pudding": "^3.5.1"
+            "chownr": "^2.0.0",
+            "fs-minipass": "^2.0.0",
+            "minipass": "^3.0.0",
+            "minizlib": "^2.1.1",
+            "mkdirp": "^1.0.3",
+            "yallist": "^4.0.0"
           }
-        },
-        "yallist": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-          "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-          "dev": true
         }
       }
     },
@@ -14017,6 +12725,15 @@
         "readable-stream": "^2.1.5"
       }
     },
+    "parent-module": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+      "dev": true,
+      "requires": {
+        "callsites": "^3.0.0"
+      }
+    },
     "parse-asn1": {
       "version": "5.1.6",
       "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
@@ -14031,21 +12748,39 @@
       }
     },
     "parse-json": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
-      "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+      "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
       "dev": true,
       "requires": {
+        "@babel/code-frame": "^7.0.0",
         "error-ex": "^1.3.1",
-        "json-parse-better-errors": "^1.0.1"
+        "json-parse-even-better-errors": "^2.3.0",
+        "lines-and-columns": "^1.1.6"
       }
     },
+    "parse-node-version": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
+      "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
+      "dev": true
+    },
     "parse5": {
       "version": "6.0.1",
       "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
       "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
       "dev": true
     },
+    "parse5-html-rewriting-stream": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz",
+      "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==",
+      "dev": true,
+      "requires": {
+        "parse5": "^6.0.1",
+        "parse5-sax-parser": "^6.0.1"
+      }
+    },
     "parse5-htmlparser2-tree-adapter": {
       "version": "6.0.1",
       "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
@@ -14055,17 +12790,14 @@
         "parse5": "^6.0.1"
       }
     },
-    "parseqs": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz",
-      "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==",
-      "dev": true
-    },
-    "parseuri": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz",
-      "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==",
-      "dev": true
+    "parse5-sax-parser": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz",
+      "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==",
+      "dev": true,
+      "requires": {
+        "parse5": "^6.0.1"
+      }
     },
     "parseurl": {
       "version": "1.3.3",
@@ -14092,9 +12824,9 @@
       "dev": true
     },
     "path-exists": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
       "dev": true
     },
     "path-is-absolute": {
@@ -14189,12 +12921,12 @@
       }
     },
     "pkg-dir": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
-      "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+      "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
       "dev": true,
       "requires": {
-        "find-up": "^3.0.0"
+        "find-up": "^4.0.0"
       }
     },
     "plist": {
@@ -14254,14 +12986,14 @@
       "dev": true
     },
     "postcss": {
-      "version": "7.0.32",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
-      "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+      "version": "8.2.15",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.15.tgz",
+      "integrity": "sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q==",
       "dev": true,
       "requires": {
-        "chalk": "^2.4.2",
-        "source-map": "^0.6.1",
-        "supports-color": "^6.1.0"
+        "colorette": "^1.2.2",
+        "nanoid": "^3.1.23",
+        "source-map": "^0.6.1"
       },
       "dependencies": {
         "source-map": {
@@ -14269,564 +13001,324 @@
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
           "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true
-        },
-        "supports-color": {
-          "version": "6.1.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^3.0.0"
-          }
         }
       }
     },
     "postcss-calc": {
-      "version": "7.0.5",
-      "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz",
-      "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==",
+      "version": "8.2.4",
+      "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz",
+      "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==",
       "dev": true,
       "requires": {
-        "postcss": "^7.0.27",
-        "postcss-selector-parser": "^6.0.2",
-        "postcss-value-parser": "^4.0.2"
+        "postcss-selector-parser": "^6.0.9",
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-colormin": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz",
-      "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==",
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz",
+      "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==",
       "dev": true,
       "requires": {
-        "browserslist": "^4.0.0",
-        "color": "^3.0.0",
-        "has": "^1.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
+        "browserslist": "^4.16.6",
+        "caniuse-api": "^3.0.0",
+        "colord": "^2.9.1",
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-convert-values": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz",
-      "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==",
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz",
+      "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==",
       "dev": true,
       "requires": {
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
+        "browserslist": "^4.20.3",
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-discard-comments": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz",
-      "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0"
-      }
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz",
+      "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==",
+      "dev": true
     },
     "postcss-discard-duplicates": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz",
-      "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0"
-      }
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz",
+      "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==",
+      "dev": true
     },
     "postcss-discard-empty": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz",
-      "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0"
-      }
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz",
+      "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==",
+      "dev": true
     },
     "postcss-discard-overridden": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz",
-      "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0"
-      }
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz",
+      "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==",
+      "dev": true
     },
     "postcss-import": {
-      "version": "12.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.1.tgz",
-      "integrity": "sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw==",
+      "version": "14.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.0.tgz",
+      "integrity": "sha512-gFDDzXhqr9ELmnLHgCC3TbGfA6Dm/YMb/UN8/f7Uuq4fL7VTk2vOIj6hwINEwbokEmp123bLD7a5m+E+KIetRg==",
       "dev": true,
       "requires": {
-        "postcss": "^7.0.1",
-        "postcss-value-parser": "^3.2.3",
+        "postcss-value-parser": "^4.0.0",
         "read-cache": "^1.0.0",
         "resolve": "^1.1.7"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-load-config": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz",
-      "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==",
-      "dev": true,
-      "requires": {
-        "cosmiconfig": "^5.0.0",
-        "import-cwd": "^2.0.0"
       }
     },
     "postcss-loader": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz",
-      "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==",
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.2.0.tgz",
+      "integrity": "sha512-mqgScxHqbiz1yxbnNcPdKYo/6aVt+XExURmEbQlviFVWogDbM4AJ0A/B+ZBpYsJrTRxKw7HyRazg9x0Q9SWwLA==",
       "dev": true,
       "requires": {
-        "loader-utils": "^1.1.0",
-        "postcss": "^7.0.0",
-        "postcss-load-config": "^2.0.0",
-        "schema-utils": "^1.0.0"
+        "cosmiconfig": "^7.0.0",
+        "klona": "^2.0.4",
+        "loader-utils": "^2.0.0",
+        "schema-utils": "^3.0.0",
+        "semver": "^7.3.4"
       },
       "dependencies": {
-        "json5": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
-          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
           "dev": true,
           "requires": {
-            "minimist": "^1.2.0"
+            "yallist": "^4.0.0"
           }
         },
-        "loader-utils": {
-          "version": "1.4.0",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
-          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+        "schema-utils": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
           "dev": true,
           "requires": {
-            "big.js": "^5.2.2",
-            "emojis-list": "^3.0.0",
-            "json5": "^1.0.1"
+            "@types/json-schema": "^7.0.8",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
           }
         },
-        "schema-utils": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+        "semver": {
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
           "dev": true,
           "requires": {
-            "ajv": "^6.1.0",
-            "ajv-errors": "^1.0.0",
-            "ajv-keywords": "^3.1.0"
+            "lru-cache": "^6.0.0"
           }
         }
       }
     },
     "postcss-merge-longhand": {
-      "version": "4.0.11",
-      "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz",
-      "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==",
+      "version": "5.1.6",
+      "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz",
+      "integrity": "sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==",
       "dev": true,
       "requires": {
-        "css-color-names": "0.0.4",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0",
-        "stylehacks": "^4.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
+        "postcss-value-parser": "^4.2.0",
+        "stylehacks": "^5.1.0"
       }
     },
     "postcss-merge-rules": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz",
-      "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==",
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz",
+      "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==",
       "dev": true,
       "requires": {
-        "browserslist": "^4.0.0",
+        "browserslist": "^4.16.6",
         "caniuse-api": "^3.0.0",
-        "cssnano-util-same-parent": "^4.0.0",
-        "postcss": "^7.0.0",
-        "postcss-selector-parser": "^3.0.0",
-        "vendors": "^1.0.0"
-      },
-      "dependencies": {
-        "postcss-selector-parser": {
-          "version": "3.1.2",
-          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
-          "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
-          "dev": true,
-          "requires": {
-            "dot-prop": "^5.2.0",
-            "indexes-of": "^1.0.1",
-            "uniq": "^1.0.1"
-          }
-        }
+        "cssnano-utils": "^3.1.0",
+        "postcss-selector-parser": "^6.0.5"
       }
     },
     "postcss-minify-font-values": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz",
-      "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz",
+      "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==",
       "dev": true,
       "requires": {
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-minify-gradients": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz",
-      "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==",
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz",
+      "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==",
       "dev": true,
       "requires": {
-        "cssnano-util-get-arguments": "^4.0.0",
-        "is-color-stop": "^1.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
+        "colord": "^2.9.1",
+        "cssnano-utils": "^3.1.0",
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-minify-params": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz",
-      "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==",
+      "version": "5.1.3",
+      "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz",
+      "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==",
       "dev": true,
       "requires": {
-        "alphanum-sort": "^1.0.0",
-        "browserslist": "^4.0.0",
-        "cssnano-util-get-arguments": "^4.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0",
-        "uniqs": "^2.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
+        "browserslist": "^4.16.6",
+        "cssnano-utils": "^3.1.0",
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-minify-selectors": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz",
-      "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==",
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz",
+      "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==",
       "dev": true,
       "requires": {
-        "alphanum-sort": "^1.0.0",
-        "has": "^1.0.0",
-        "postcss": "^7.0.0",
-        "postcss-selector-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "postcss-selector-parser": {
-          "version": "3.1.2",
-          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
-          "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
-          "dev": true,
-          "requires": {
-            "dot-prop": "^5.2.0",
-            "indexes-of": "^1.0.1",
-            "uniq": "^1.0.1"
-          }
-        }
+        "postcss-selector-parser": "^6.0.5"
       }
     },
     "postcss-modules-extract-imports": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz",
-      "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.5"
-      }
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
+      "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
+      "dev": true
     },
     "postcss-modules-local-by-default": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz",
-      "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz",
+      "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==",
       "dev": true,
       "requires": {
-        "icss-utils": "^4.1.1",
-        "postcss": "^7.0.32",
+        "icss-utils": "^5.0.0",
         "postcss-selector-parser": "^6.0.2",
         "postcss-value-parser": "^4.1.0"
       }
     },
     "postcss-modules-scope": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz",
-      "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz",
+      "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==",
       "dev": true,
       "requires": {
-        "postcss": "^7.0.6",
-        "postcss-selector-parser": "^6.0.0"
+        "postcss-selector-parser": "^6.0.4"
       }
     },
     "postcss-modules-values": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz",
-      "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
+      "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
       "dev": true,
       "requires": {
-        "icss-utils": "^4.0.0",
-        "postcss": "^7.0.6"
+        "icss-utils": "^5.0.0"
       }
     },
     "postcss-normalize-charset": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz",
-      "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.0"
-      }
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz",
+      "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==",
+      "dev": true
     },
     "postcss-normalize-display-values": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz",
-      "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz",
+      "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==",
       "dev": true,
       "requires": {
-        "cssnano-util-get-match": "^4.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-normalize-positions": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz",
-      "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==",
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz",
+      "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==",
       "dev": true,
       "requires": {
-        "cssnano-util-get-arguments": "^4.0.0",
-        "has": "^1.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-normalize-repeat-style": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz",
-      "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==",
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz",
+      "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==",
       "dev": true,
       "requires": {
-        "cssnano-util-get-arguments": "^4.0.0",
-        "cssnano-util-get-match": "^4.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-normalize-string": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz",
-      "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz",
+      "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==",
       "dev": true,
       "requires": {
-        "has": "^1.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-normalize-timing-functions": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz",
-      "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz",
+      "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==",
       "dev": true,
       "requires": {
-        "cssnano-util-get-match": "^4.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-normalize-unicode": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz",
-      "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz",
+      "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==",
       "dev": true,
       "requires": {
-        "browserslist": "^4.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
+        "browserslist": "^4.16.6",
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-normalize-url": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz",
-      "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz",
+      "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==",
       "dev": true,
       "requires": {
-        "is-absolute-url": "^2.0.0",
-        "normalize-url": "^3.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
+        "normalize-url": "^6.0.1",
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-normalize-whitespace": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz",
-      "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==",
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz",
+      "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==",
       "dev": true,
       "requires": {
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-ordered-values": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz",
-      "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==",
+      "version": "5.1.3",
+      "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz",
+      "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==",
       "dev": true,
       "requires": {
-        "cssnano-util-get-arguments": "^4.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
+        "cssnano-utils": "^3.1.0",
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-reduce-initial": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz",
-      "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz",
+      "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==",
       "dev": true,
       "requires": {
-        "browserslist": "^4.0.0",
-        "caniuse-api": "^3.0.0",
-        "has": "^1.0.0",
-        "postcss": "^7.0.0"
+        "browserslist": "^4.16.6",
+        "caniuse-api": "^3.0.0"
       }
     },
     "postcss-reduce-transforms": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz",
-      "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz",
+      "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==",
       "dev": true,
       "requires": {
-        "cssnano-util-get-match": "^4.0.0",
-        "has": "^1.0.0",
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-selector-parser": {
@@ -14840,33 +13332,22 @@
       }
     },
     "postcss-svgo": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz",
-      "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz",
+      "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==",
       "dev": true,
       "requires": {
-        "postcss": "^7.0.0",
-        "postcss-value-parser": "^3.0.0",
-        "svgo": "^1.0.0"
-      },
-      "dependencies": {
-        "postcss-value-parser": {
-          "version": "3.3.1",
-          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
-          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
-          "dev": true
-        }
+        "postcss-value-parser": "^4.2.0",
+        "svgo": "^2.7.0"
       }
     },
     "postcss-unique-selectors": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz",
-      "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==",
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz",
+      "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==",
       "dev": true,
       "requires": {
-        "alphanum-sort": "^1.0.0",
-        "postcss": "^7.0.0",
-        "uniqs": "^2.0.0"
+        "postcss-selector-parser": "^6.0.5"
       }
     },
     "postcss-value-parser": {
@@ -14875,10 +13356,10 @@
       "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
       "dev": true
     },
-    "prepend-http": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
-      "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==",
+    "pretty-bytes": {
+      "version": "5.6.0",
+      "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
+      "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==",
       "dev": true
     },
     "process": {
@@ -14926,6 +13407,12 @@
         "retry": "^0.10.0"
       },
       "dependencies": {
+        "err-code": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz",
+          "integrity": "sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==",
+          "dev": true
+        },
         "retry": {
           "version": "0.10.1",
           "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz",
@@ -14961,15 +13448,6 @@
         }
       }
     },
-    "protoduck": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz",
-      "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==",
-      "dev": true,
-      "requires": {
-        "genfun": "^5.0.0"
-      }
-    },
     "protractor": {
       "version": "7.0.0",
       "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz",
@@ -15232,12 +13710,6 @@
         "escape-goat": "^2.0.0"
       }
     },
-    "q": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
-      "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==",
-      "dev": true
-    },
     "qjobs": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz",
@@ -15250,16 +13722,6 @@
       "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
       "dev": true
     },
-    "query-string": {
-      "version": "4.3.4",
-      "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz",
-      "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==",
-      "dev": true,
-      "requires": {
-        "object-assign": "^4.1.0",
-        "strict-uri-encode": "^1.0.0"
-      }
-    },
     "querystring": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
@@ -15330,13 +13792,26 @@
       }
     },
     "raw-loader": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.1.tgz",
-      "integrity": "sha512-baolhQBSi3iNh1cglJjA0mYzga+wePk7vdEX//1dTFd+v4TsQlQE0jitJSNF1OIP82rdYulH7otaVmdlDaJ64A==",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz",
+      "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==",
       "dev": true,
       "requires": {
         "loader-utils": "^2.0.0",
-        "schema-utils": "^2.6.5"
+        "schema-utils": "^3.0.0"
+      },
+      "dependencies": {
+        "schema-utils": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+          "dev": true,
+          "requires": {
+            "@types/json-schema": "^7.0.8",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
+          }
+        }
       }
     },
     "rc": {
@@ -15380,27 +13855,14 @@
         }
       }
     },
-    "read-package-json": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz",
-      "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==",
+    "read-package-json-fast": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-1.2.2.tgz",
+      "integrity": "sha512-39DbPJjkltEzfXJXB6D8/Ir3GFOU2YbSKa2HaB/Y3nKrc/zY+0XrALpID6/13ezWyzqvOHrBbR4t4cjQuTdBVQ==",
       "dev": true,
       "requires": {
-        "glob": "^7.1.1",
         "json-parse-even-better-errors": "^2.3.0",
-        "normalize-package-data": "^2.0.0",
-        "npm-normalize-package-bin": "^1.0.0"
-      }
-    },
-    "read-package-tree": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz",
-      "integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==",
-      "dev": true,
-      "requires": {
-        "read-package-json": "^2.0.0",
-        "readdir-scoped-modules": "^1.0.0",
-        "util-promisify": "^2.1.0"
+        "npm-normalize-package-bin": "^1.0.1"
       }
     },
     "readable-stream": {
@@ -15418,18 +13880,6 @@
         "util-deprecate": "~1.0.1"
       }
     },
-    "readdir-scoped-modules": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz",
-      "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==",
-      "dev": true,
-      "requires": {
-        "debuglog": "^1.0.1",
-        "dezalgo": "^1.0.0",
-        "graceful-fs": "^4.1.2",
-        "once": "^1.3.0"
-      }
-    },
     "readdirp": {
       "version": "3.5.0",
       "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
@@ -15631,7 +14081,7 @@
     "requires-port": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
-      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
+      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
       "dev": true
     },
     "resolve": {
@@ -15650,12 +14100,20 @@
       "dev": true,
       "requires": {
         "resolve-from": "^3.0.0"
+      },
+      "dependencies": {
+        "resolve-from": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+          "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
+          "dev": true
+        }
       }
     },
     "resolve-from": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
-      "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
       "dev": true
     },
     "resolve-url": {
@@ -15665,67 +14123,32 @@
       "dev": true
     },
     "resolve-url-loader": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz",
-      "integrity": "sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ==",
-      "dev": true,
-      "requires": {
-        "adjust-sourcemap-loader": "3.0.0",
-        "camelcase": "5.3.1",
-        "compose-function": "3.0.3",
-        "convert-source-map": "1.7.0",
-        "es6-iterator": "2.0.3",
-        "loader-utils": "1.2.3",
-        "postcss": "7.0.21",
-        "rework": "1.0.1",
-        "rework-visit": "1.0.0",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz",
+      "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==",
+      "dev": true,
+      "requires": {
+        "adjust-sourcemap-loader": "^4.0.0",
+        "convert-source-map": "^1.7.0",
+        "loader-utils": "^2.0.0",
+        "postcss": "^7.0.35",
         "source-map": "0.6.1"
       },
       "dependencies": {
-        "convert-source-map": {
-          "version": "1.7.0",
-          "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
-          "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
-          "dev": true,
-          "requires": {
-            "safe-buffer": "~5.1.1"
-          }
-        },
-        "emojis-list": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
-          "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==",
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
           "dev": true
         },
-        "json5": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
-          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
-          "dev": true,
-          "requires": {
-            "minimist": "^1.2.0"
-          }
-        },
-        "loader-utils": {
-          "version": "1.2.3",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
-          "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
-          "dev": true,
-          "requires": {
-            "big.js": "^5.2.2",
-            "emojis-list": "^2.0.0",
-            "json5": "^1.0.1"
-          }
-        },
         "postcss": {
-          "version": "7.0.21",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz",
-          "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==",
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
           "dev": true,
           "requires": {
-            "chalk": "^2.4.2",
-            "source-map": "^0.6.1",
-            "supports-color": "^6.1.0"
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
           }
         },
         "source-map": {
@@ -15733,15 +14156,6 @@
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
           "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true
-        },
-        "supports-color": {
-          "version": "6.1.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^3.0.0"
-          }
         }
       }
     },
@@ -15781,38 +14195,14 @@
       "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.1.3.tgz",
       "integrity": "sha512-QnRZUpuPNgX0+D1xVxul6DbJ9slvo4Rm6iV/dn63e048MvGbUZiKySVt6Tenp04JqmchxjiLltGerOJys7kJYQ==",
       "dev": true,
-      "requires": {
-        "debug": "^4.1.1"
-      }
-    },
-    "reusify": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
-      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
-      "dev": true
-    },
-    "rework": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz",
-      "integrity": "sha512-eEjL8FdkdsxApd0yWVZgBGzfCQiT8yqSc2H1p4jpZpQdtz7ohETiDMoje5PlM8I9WgkqkreVxFUKYOiJdVWDXw==",
-      "dev": true,
-      "requires": {
-        "convert-source-map": "^0.3.3",
-        "css": "^2.0.0"
-      },
-      "dependencies": {
-        "convert-source-map": {
-          "version": "0.3.5",
-          "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz",
-          "integrity": "sha512-+4nRk0k3oEpwUB7/CalD7xE2z4VmtEnnq0GO2IPTkrooTrAhEsWvuLF5iWP1dXrwluki/azwXV1ve7gtYuPldg==",
-          "dev": true
-        }
+      "requires": {
+        "debug": "^4.1.1"
       }
     },
-    "rework-visit": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz",
-      "integrity": "sha512-W6V2fix7nCLUYX1v6eGPrBOZlc03/faqzP4sUxMAJMBMOPYhfV/RyLegTufn5gJKaOITyi+gvf0LXDZ9NzkHnQ==",
+    "reusify": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
       "dev": true
     },
     "rfdc": {
@@ -15821,18 +14211,6 @@
       "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==",
       "dev": true
     },
-    "rgb-regex": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz",
-      "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==",
-      "dev": true
-    },
-    "rgba-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz",
-      "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==",
-      "dev": true
-    },
     "rimraf": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz",
@@ -15853,21 +14231,12 @@
       }
     },
     "rollup": {
-      "version": "2.26.5",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.26.5.tgz",
-      "integrity": "sha512-rCyFG3ZtQdnn9YwfuAVH0l/Om34BdO5lwCA0W6Hq+bNB21dVEBbCRxhaHOmu1G7OBFDWytbzAC104u7rxHwGjA==",
+      "version": "2.38.4",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.38.4.tgz",
+      "integrity": "sha512-B0LcJhjiwKkTl79aGVF/u5KdzsH8IylVfV56Ut6c9ouWLJcUK17T83aZBetNYSnZtXf2OHD4+2PbmRW+Fp5ulg==",
       "dev": true,
       "requires": {
-        "fsevents": "~2.1.2"
-      },
-      "dependencies": {
-        "fsevents": {
-          "version": "2.1.3",
-          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
-          "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
-          "dev": true,
-          "optional": true
-        }
+        "fsevents": "~2.3.1"
       }
     },
     "router": {
@@ -15980,24 +14349,24 @@
       "dev": true
     },
     "sass": {
-      "version": "1.26.10",
-      "resolved": "https://registry.npmjs.org/sass/-/sass-1.26.10.tgz",
-      "integrity": "sha512-bzN0uvmzfsTvjz0qwccN1sPm2HxxpNI/Xa+7PlUEMS+nQvbyuEK7Y0qFqxlPHhiNHb1Ze8WQJtU31olMObkAMw==",
+      "version": "1.32.6",
+      "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.6.tgz",
+      "integrity": "sha512-1bcDHDcSqeFtMr0JXI3xc/CXX6c4p0wHHivJdru8W7waM7a1WjKMm4m/Z5sY7CbVw4Whi2Chpcw6DFfSWwGLzQ==",
       "dev": true,
       "requires": {
         "chokidar": ">=2.0.0 <4.0.0"
       }
     },
     "sass-loader": {
-      "version": "10.0.1",
-      "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.0.1.tgz",
-      "integrity": "sha512-b2PSldKVTS3JcFPHSrEXh3BeAfR7XknGiGCAO5aHruR3Pf3kqLP3Gb2ypXLglRrAzgZkloNxLZ7GXEGDX0hBUQ==",
+      "version": "10.1.1",
+      "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.1.1.tgz",
+      "integrity": "sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==",
       "dev": true,
       "requires": {
-        "klona": "^2.0.3",
+        "klona": "^2.0.4",
         "loader-utils": "^2.0.0",
         "neo-async": "^2.6.2",
-        "schema-utils": "^2.7.0",
+        "schema-utils": "^3.0.0",
         "semver": "^7.3.2"
       },
       "dependencies": {
@@ -16010,6 +14379,17 @@
             "yallist": "^4.0.0"
           }
         },
+        "schema-utils": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+          "dev": true,
+          "requires": {
+            "@types/json-schema": "^7.0.8",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
+          }
+        },
         "semver": {
           "version": "7.3.7",
           "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
@@ -16045,26 +14425,6 @@
         "@types/json-schema": "^7.0.5",
         "ajv": "^6.12.4",
         "ajv-keywords": "^3.5.2"
-      },
-      "dependencies": {
-        "ajv": {
-          "version": "6.12.6",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
-          }
-        },
-        "fast-deep-equal": {
-          "version": "3.1.3",
-          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-          "dev": true
-        }
       }
     },
     "select-hose": {
@@ -16131,7 +14491,7 @@
     "semver-dsl": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz",
-      "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=",
+      "integrity": "sha512-e8BOaTo007E3dMuQQTnPdalbKTABKNS7UxoBIDnwOqRa+QwMrCPjynB8zAlPF6xlqUfdLPPLIJ13hJNmhtq8Ng==",
       "dev": true,
       "requires": {
         "semver": "^5.3.0"
@@ -16209,9 +14569,9 @@
       }
     },
     "serialize-javascript": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
-      "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz",
+      "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==",
       "dev": true,
       "requires": {
         "randombytes": "^2.1.0"
@@ -16336,6 +14696,15 @@
         "safe-buffer": "^5.0.1"
       }
     },
+    "shallow-clone": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
+      "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
+      "dev": true,
+      "requires": {
+        "kind-of": "^6.0.2"
+      }
+    },
     "shebang-command": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
@@ -16351,17 +14720,6 @@
       "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
       "dev": true
     },
-    "side-channel": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
-      "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.0",
-        "get-intrinsic": "^1.0.2",
-        "object-inspect": "^1.9.0"
-      }
-    },
     "signal-exit": {
       "version": "3.0.3",
       "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
@@ -16526,157 +14884,77 @@
       }
     },
     "socket.io": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.5.0.tgz",
-      "integrity": "sha512-gGunfS0od3VpwDBpGwVkzSZx6Aqo9uOcf1afJj2cKnKFAoyl16fvhpsUhmUFd4Ldbvl5JvRQed6eQw6oQp6n8w==",
+      "version": "4.5.1",
+      "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.1.tgz",
+      "integrity": "sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==",
       "dev": true,
       "requires": {
-        "debug": "~4.1.0",
-        "engine.io": "~3.6.0",
-        "has-binary2": "~1.0.2",
-        "socket.io-adapter": "~1.1.0",
-        "socket.io-client": "2.5.0",
-        "socket.io-parser": "~3.4.0"
+        "accepts": "~1.3.4",
+        "base64id": "~2.0.0",
+        "debug": "~4.3.2",
+        "engine.io": "~6.2.0",
+        "socket.io-adapter": "~2.4.0",
+        "socket.io-parser": "~4.0.4"
       },
       "dependencies": {
         "debug": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+          "version": "4.3.4",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+          "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
           "dev": true,
           "requires": {
-            "ms": "^2.1.1"
+            "ms": "2.1.2"
           }
         }
       }
     },
     "socket.io-adapter": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz",
-      "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==",
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz",
+      "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==",
       "dev": true
     },
-    "socket.io-client": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.5.0.tgz",
-      "integrity": "sha512-lOO9clmdgssDykiOmVQQitwBAF3I6mYcQAo7hQ7AM6Ny5X7fp8hIJ3HcQs3Rjz4SoggoxA1OgrQyY8EgTbcPYw==",
-      "dev": true,
-      "requires": {
-        "backo2": "1.0.2",
-        "component-bind": "1.0.0",
-        "component-emitter": "~1.3.0",
-        "debug": "~3.1.0",
-        "engine.io-client": "~3.5.0",
-        "has-binary2": "~1.0.2",
-        "indexof": "0.0.1",
-        "parseqs": "0.0.6",
-        "parseuri": "0.0.6",
-        "socket.io-parser": "~3.3.0",
-        "to-array": "0.1.4"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "isarray": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
-          "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==",
-          "dev": true
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-          "dev": true
-        },
-        "socket.io-parser": {
-          "version": "3.3.2",
-          "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.2.tgz",
-          "integrity": "sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg==",
-          "dev": true,
-          "requires": {
-            "component-emitter": "~1.3.0",
-            "debug": "~3.1.0",
-            "isarray": "2.0.1"
-          }
-        }
-      }
-    },
     "socket.io-parser": {
-      "version": "3.4.1",
-      "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz",
-      "integrity": "sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A==",
+      "version": "4.0.5",
+      "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz",
+      "integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==",
       "dev": true,
       "requires": {
-        "component-emitter": "1.2.1",
-        "debug": "~4.1.0",
-        "isarray": "2.0.1"
-      },
-      "dependencies": {
-        "component-emitter": {
-          "version": "1.2.1",
-          "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
-          "integrity": "sha512-jPatnhd33viNplKjqXKRkGU345p263OIWzDL2wH3LGIGp5Kojo+uXizHmOADRvhGFFTnJqX3jBAKP6vvmSDKcA==",
-          "dev": true
-        },
-        "debug": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-          "dev": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        },
-        "isarray": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
-          "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==",
-          "dev": true
-        }
+        "@types/component-emitter": "^1.2.10",
+        "component-emitter": "~1.3.0",
+        "debug": "~4.3.1"
       }
     },
     "sockjs": {
-      "version": "0.3.20",
-      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz",
-      "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==",
+      "version": "0.3.24",
+      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz",
+      "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==",
       "dev": true,
       "requires": {
-        "faye-websocket": "^0.10.0",
-        "uuid": "^3.4.0",
-        "websocket-driver": "0.6.5"
+        "faye-websocket": "^0.11.3",
+        "uuid": "^8.3.2",
+        "websocket-driver": "^0.7.4"
       },
       "dependencies": {
-        "websocket-driver": {
-          "version": "0.6.5",
-          "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz",
-          "integrity": "sha512-oBx6ZM1Gs5q2jwZuSN/Qxyy/fbgomV8+vqsmipaPKB/74hjHlKuM07jNmRhn4qa2AdUwsgxrltq+gaPsHgcl0Q==",
-          "dev": true,
-          "requires": {
-            "websocket-extensions": ">=0.1.1"
-          }
+        "uuid": {
+          "version": "8.3.2",
+          "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+          "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+          "dev": true
         }
       }
     },
     "sockjs-client": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz",
-      "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==",
+      "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz",
+      "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==",
       "dev": true,
       "requires": {
-        "debug": "^3.2.5",
-        "eventsource": "^1.0.7",
-        "faye-websocket": "~0.11.1",
-        "inherits": "^2.0.3",
-        "json3": "^3.3.2",
-        "url-parse": "^1.4.3"
+        "debug": "^3.2.7",
+        "eventsource": "^2.0.2",
+        "faye-websocket": "^0.11.4",
+        "inherits": "^2.0.4",
+        "url-parse": "^1.5.10"
       },
       "dependencies": {
         "debug": {
@@ -16687,66 +14965,41 @@
           "requires": {
             "ms": "^2.1.1"
           }
-        },
-        "faye-websocket": {
-          "version": "0.11.4",
-          "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz",
-          "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
-          "dev": true,
-          "requires": {
-            "websocket-driver": ">=0.5.1"
-          }
         }
       }
     },
     "socks": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz",
-      "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==",
+      "version": "2.6.2",
+      "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz",
+      "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==",
       "dev": true,
       "requires": {
-        "ip": "1.1.5",
-        "smart-buffer": "^4.1.0"
-      },
-      "dependencies": {
-        "ip": {
-          "version": "1.1.5",
-          "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
-          "integrity": "sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA==",
-          "dev": true
-        }
+        "ip": "^1.1.5",
+        "smart-buffer": "^4.2.0"
       }
     },
     "socks-proxy-agent": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz",
-      "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==",
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz",
+      "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==",
       "dev": true,
       "requires": {
-        "agent-base": "~4.2.1",
-        "socks": "~2.3.2"
+        "agent-base": "^6.0.2",
+        "debug": "4",
+        "socks": "^2.3.3"
       },
       "dependencies": {
         "agent-base": {
-          "version": "4.2.1",
-          "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
-          "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
+          "version": "6.0.2",
+          "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+          "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
           "dev": true,
           "requires": {
-            "es6-promisify": "^5.0.0"
+            "debug": "4"
           }
         }
       }
     },
-    "sort-keys": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
-      "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==",
-      "dev": true,
-      "requires": {
-        "is-plain-obj": "^1.0.0"
-      }
-    },
     "source-list-map": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
@@ -16759,17 +15012,24 @@
       "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
       "dev": true
     },
-    "source-map-loader": {
+    "source-map-js": {
       "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.0.2.tgz",
-      "integrity": "sha512-oX8d6ndRjN+tVyjj6PlXSyFPhDdVAPsZA30nD3/II8g4uOv8fCz0DMn5sy8KtVbDfKQxOpGwGJnK3xIW3tauDw==",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+      "dev": true
+    },
+    "source-map-loader": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.1.3.tgz",
+      "integrity": "sha512-6YHeF+XzDOrT/ycFJNI53cgEsp/tHTMl37hi7uVyqFAlTXW109JazaQCkbc+jjoL2637qkH1amLi+JzrIpt5lA==",
       "dev": true,
       "requires": {
-        "data-urls": "^2.0.0",
+        "abab": "^2.0.5",
         "iconv-lite": "^0.6.2",
         "loader-utils": "^2.0.0",
-        "schema-utils": "^2.7.0",
-        "source-map": "^0.6.1"
+        "schema-utils": "^3.0.0",
+        "source-map": "^0.6.1",
+        "whatwg-mimetype": "^2.3.0"
       },
       "dependencies": {
         "iconv-lite": {
@@ -16781,6 +15041,17 @@
             "safer-buffer": ">= 2.1.2 < 3.0.0"
           }
         },
+        "schema-utils": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+          "dev": true,
+          "requires": {
+            "@types/json-schema": "^7.0.8",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
+          }
+        },
         "source-map": {
           "version": "0.6.1",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -16832,38 +15103,6 @@
       "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
       "dev": true
     },
-    "spdx-correct": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
-      "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
-      "dev": true,
-      "requires": {
-        "spdx-expression-parse": "^3.0.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "spdx-exceptions": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
-      "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
-      "dev": true
-    },
-    "spdx-expression-parse": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
-      "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
-      "dev": true,
-      "requires": {
-        "spdx-exceptions": "^2.1.0",
-        "spdx-license-ids": "^3.0.0"
-      }
-    },
-    "spdx-license-ids": {
-      "version": "3.0.11",
-      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz",
-      "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==",
-      "dev": true
-    },
     "spdy": {
       "version": "4.0.2",
       "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
@@ -16905,12 +15144,63 @@
       }
     },
     "speed-measure-webpack-plugin": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.3.tgz",
-      "integrity": "sha512-2ljD4Ch/rz2zG3HsLsnPfp23osuPBS0qPuz9sGpkNXTN1Ic4M+W9xB8l8rS8ob2cO4b1L+WTJw/0AJwWYVgcxQ==",
+      "version": "1.4.2",
+      "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.4.2.tgz",
+      "integrity": "sha512-AtVzD0bnIy2/B0fWqJpJgmhcrfWFhBlduzSo0uwplr/QvB33ZNZj2NEth3NONgdnZJqicK0W0mSxnLSbsVCDbw==",
       "dev": true,
       "requires": {
-        "chalk": "^2.0.1"
+        "chalk": "^4.1.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
       }
     },
     "split-string": {
@@ -17081,12 +15371,6 @@
         }
       }
     },
-    "strict-uri-encode": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
-      "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==",
-      "dev": true
-    },
     "string-length": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz",
@@ -17123,28 +15407,6 @@
         }
       }
     },
-    "string.prototype.trimend": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz",
-      "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.19.5"
-      }
-    },
-    "string.prototype.trimstart": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz",
-      "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.19.5"
-      }
-    },
     "string_decoder": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -17166,7 +15428,7 @@
     "strip-eof": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
-      "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+      "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
       "dev": true
     },
     "strip-json-comments": {
@@ -17176,39 +15438,38 @@
       "dev": true
     },
     "style-loader": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.2.1.tgz",
-      "integrity": "sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg==",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz",
+      "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==",
       "dev": true,
       "requires": {
         "loader-utils": "^2.0.0",
-        "schema-utils": "^2.6.6"
-      }
-    },
-    "stylehacks": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz",
-      "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==",
-      "dev": true,
-      "requires": {
-        "browserslist": "^4.0.0",
-        "postcss": "^7.0.0",
-        "postcss-selector-parser": "^3.0.0"
+        "schema-utils": "^3.0.0"
       },
       "dependencies": {
-        "postcss-selector-parser": {
-          "version": "3.1.2",
-          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
-          "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
+        "schema-utils": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
           "dev": true,
           "requires": {
-            "dot-prop": "^5.2.0",
-            "indexes-of": "^1.0.1",
-            "uniq": "^1.0.1"
+            "@types/json-schema": "^7.0.8",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
           }
         }
       }
     },
+    "stylehacks": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz",
+      "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.16.6",
+        "postcss-selector-parser": "^6.0.4"
+      }
+    },
     "stylus": {
       "version": "0.54.8",
       "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz",
@@ -17272,34 +15533,27 @@
       }
     },
     "stylus-loader": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz",
-      "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==",
+      "version": "4.3.3",
+      "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-4.3.3.tgz",
+      "integrity": "sha512-PpWB5PnCXUzW4WMYhCvNzAHJBjIBPMXwsdfkkKuA9W7k8OQFMl/19/AQvaWsxz2IptxUlCseyJ6TY/eEKJ4+UQ==",
       "dev": true,
       "requires": {
-        "loader-utils": "^1.0.2",
-        "lodash.clonedeep": "^4.5.0",
-        "when": "~3.6.x"
+        "fast-glob": "^3.2.4",
+        "klona": "^2.0.4",
+        "loader-utils": "^2.0.0",
+        "normalize-path": "^3.0.0",
+        "schema-utils": "^3.0.0"
       },
       "dependencies": {
-        "json5": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
-          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
-          "dev": true,
-          "requires": {
-            "minimist": "^1.2.0"
-          }
-        },
-        "loader-utils": {
-          "version": "1.4.0",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
-          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+        "schema-utils": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
           "dev": true,
           "requires": {
-            "big.js": "^5.2.2",
-            "emojis-list": "^3.0.0",
-            "json5": "^1.0.1"
+            "@types/json-schema": "^7.0.8",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
           }
         }
       }
@@ -17481,24 +15735,26 @@
       }
     },
     "svgo": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz",
-      "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==",
+      "version": "2.8.0",
+      "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz",
+      "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==",
       "dev": true,
       "requires": {
-        "chalk": "^2.4.1",
-        "coa": "^2.0.2",
-        "css-select": "^2.0.0",
-        "css-select-base-adapter": "^0.1.1",
-        "css-tree": "1.0.0-alpha.37",
-        "csso": "^4.0.2",
-        "js-yaml": "^3.13.1",
-        "mkdirp": "~0.5.1",
-        "object.values": "^1.1.0",
-        "sax": "~1.2.4",
-        "stable": "^0.1.8",
-        "unquote": "~1.1.1",
-        "util.promisify": "~1.0.0"
+        "@trysound/sax": "0.2.0",
+        "commander": "^7.2.0",
+        "css-select": "^4.1.3",
+        "css-tree": "^1.1.3",
+        "csso": "^4.2.0",
+        "picocolors": "^1.0.0",
+        "stable": "^0.1.8"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+          "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+          "dev": true
+        }
       }
     },
     "sweetalert2": {
@@ -17507,15 +15763,15 @@
       "integrity": "sha512-kSvTkXvc59+vPf9CfZ/wc/uvFkccxoOMLK1aUibN0mXU4hbYg/NylBTlmfvuUjJQ5SWL3X6s8w7AG5croH8U1w=="
     },
     "symbol-observable": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
-      "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-3.0.0.tgz",
+      "integrity": "sha512-6tDOXSHiVjuCaasQSWTmHUWn4PuG7qa3+1WT031yTc/swT7+rLiw3GOrFxaH1E3lLP09dH3bVuVDf2gK5rxG3Q==",
       "dev": true
     },
     "tapable": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
-      "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+      "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
       "dev": true
     },
     "tar": {
@@ -17603,38 +15859,50 @@
       "dev": true
     },
     "terser": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.0.tgz",
-      "integrity": "sha512-XTT3D3AwxC54KywJijmY2mxZ8nJiEjBHVYzq8l9OaYuRFWeQNBwvipuzzYEP4e+/AVcd1hqG/CqgsdIRyT45Fg==",
+      "version": "5.5.1",
+      "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz",
+      "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==",
       "dev": true,
       "requires": {
         "commander": "^2.20.0",
-        "source-map": "~0.6.1",
-        "source-map-support": "~0.5.12"
+        "source-map": "~0.7.2",
+        "source-map-support": "~0.5.19"
       },
       "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
+        "source-map-support": {
+          "version": "0.5.21",
+          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+          "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+          "dev": true,
+          "requires": {
+            "buffer-from": "^1.0.0",
+            "source-map": "^0.6.0"
+          },
+          "dependencies": {
+            "source-map": {
+              "version": "0.6.1",
+              "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+              "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+              "dev": true
+            }
+          }
         }
       }
     },
     "terser-webpack-plugin": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.1.0.tgz",
-      "integrity": "sha512-0ZWDPIP8BtEDZdChbufcXUigOYk6dOX/P/X0hWxqDDcVAQLb8Yy/0FAaemSfax3PAA67+DJR778oz8qVbmy4hA==",
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz",
+      "integrity": "sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==",
       "dev": true,
       "requires": {
         "cacache": "^15.0.5",
         "find-cache-dir": "^3.3.1",
-        "jest-worker": "^26.3.0",
+        "jest-worker": "^26.5.0",
         "p-limit": "^3.0.2",
-        "schema-utils": "^2.6.6",
-        "serialize-javascript": "^4.0.0",
+        "schema-utils": "^3.0.0",
+        "serialize-javascript": "^5.0.1",
         "source-map": "^0.6.1",
-        "terser": "^5.0.0",
+        "terser": "^5.3.4",
         "webpack-sources": "^1.4.3"
       },
       "dependencies": {
@@ -17647,11 +15915,32 @@
             "yocto-queue": "^0.1.0"
           }
         },
+        "schema-utils": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+          "dev": true,
+          "requires": {
+            "@types/json-schema": "^7.0.8",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
+          }
+        },
         "source-map": {
           "version": "0.6.1",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
           "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true
+        },
+        "webpack-sources": {
+          "version": "1.4.3",
+          "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
+          "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+          "dev": true,
+          "requires": {
+            "source-list-map": "^2.0.0",
+            "source-map": "~0.6.1"
+          }
         }
       }
     },
@@ -17661,6 +15950,12 @@
       "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==",
       "dev": true
     },
+    "text-table": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+      "dev": true
+    },
     "through": {
       "version": "2.3.8",
       "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
@@ -17702,12 +15997,6 @@
         "next-tick": "1"
       }
     },
-    "timsort": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
-      "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==",
-      "dev": true
-    },
     "tmp": {
       "version": "0.0.33",
       "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
@@ -17717,12 +16006,6 @@
         "os-tmpdir": "~1.0.2"
       }
     },
-    "to-array": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
-      "integrity": "sha512-LhVdShQD/4Mk4zXNroIQZJC+Ap3zgLcDuwEdcmLv9CCO73NWockQDwyUnW/m8VX/EElfL6FcYx7EeutN4HJA6A==",
-      "dev": true
-    },
     "to-arraybuffer": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
@@ -17732,7 +16015,7 @@
     "to-fast-properties": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
-      "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
+      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
     },
     "to-object-path": {
       "version": "0.3.0",
@@ -17806,15 +16089,6 @@
         "lodash": "^4.17.10"
       }
     },
-    "tr46": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
-      "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
-      "dev": true,
-      "requires": {
-        "punycode": "^2.1.1"
-      }
-    },
     "traverse": {
       "version": "0.3.9",
       "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
@@ -17992,23 +16266,11 @@
       "dev": true
     },
     "ua-parser-js": {
-      "version": "0.7.21",
-      "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz",
-      "integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==",
+      "version": "0.7.31",
+      "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz",
+      "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==",
       "dev": true
     },
-    "unbox-primitive": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
-      "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "has-bigints": "^1.0.2",
-        "has-symbols": "^1.0.3",
-        "which-boxed-primitive": "^1.0.2"
-      }
-    },
     "unfetch": {
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz",
@@ -18054,18 +16316,6 @@
         "set-value": "^2.0.1"
       }
     },
-    "uniq": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
-      "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==",
-      "dev": true
-    },
-    "uniqs": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz",
-      "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==",
-      "dev": true
-    },
     "unique-filename": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
@@ -18116,12 +16366,6 @@
       "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
       "dev": true
     },
-    "unquote": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
-      "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==",
-      "dev": true
-    },
     "unset-value": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
@@ -18371,27 +16615,6 @@
       "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
       "dev": true
     },
-    "util-promisify": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz",
-      "integrity": "sha512-K+5eQPYs14b3+E+hmE2J6gCZ4JmMl9DbYS6BeP2CHq6WMuNxErxf5B/n0fz85L8zUuoO6rIzNNmIQDu/j+1OcA==",
-      "dev": true,
-      "requires": {
-        "object.getownpropertydescriptors": "^2.0.3"
-      }
-    },
-    "util.promisify": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz",
-      "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==",
-      "dev": true,
-      "requires": {
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.17.2",
-        "has-symbols": "^1.0.1",
-        "object.getownpropertydescriptors": "^2.1.0"
-      }
-    },
     "utils-merge": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
@@ -18410,16 +16633,6 @@
       "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=",
       "dev": true
     },
-    "validate-npm-package-license": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
-      "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
-      "dev": true,
-      "requires": {
-        "spdx-correct": "^3.0.0",
-        "spdx-expression-parse": "^3.0.0"
-      }
-    },
     "validate-npm-package-name": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
@@ -18435,12 +16648,6 @@
       "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
       "dev": true
     },
-    "vendors": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz",
-      "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==",
-      "dev": true
-    },
     "verror": {
       "version": "1.10.0",
       "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
@@ -18744,16 +16951,10 @@
         "selenium-webdriver": "^3.0.1"
       }
     },
-    "webidl-conversions": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
-      "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
-      "dev": true
-    },
     "webpack": {
-      "version": "4.44.1",
-      "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.1.tgz",
-      "integrity": "sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ==",
+      "version": "4.44.2",
+      "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz",
+      "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==",
       "dev": true,
       "requires": {
         "@webassemblyjs/ast": "1.9.0",
@@ -18833,6 +17034,29 @@
             "y18n": "^4.0.0"
           }
         },
+        "enhanced-resolve": {
+          "version": "4.5.0",
+          "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz",
+          "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "memory-fs": "^0.5.0",
+            "tapable": "^1.0.0"
+          },
+          "dependencies": {
+            "memory-fs": {
+              "version": "0.5.0",
+              "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
+              "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
+              "dev": true,
+              "requires": {
+                "errno": "^0.1.3",
+                "readable-stream": "^2.0.1"
+              }
+            }
+          }
+        },
         "fill-range": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
@@ -18867,6 +17091,15 @@
             "pkg-dir": "^3.0.0"
           }
         },
+        "find-up": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+          "dev": true,
+          "requires": {
+            "locate-path": "^3.0.0"
+          }
+        },
         "is-number": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
@@ -18913,14 +17146,14 @@
             "json5": "^1.0.1"
           }
         },
-        "memory-fs": {
-          "version": "0.4.1",
-          "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
-          "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==",
+        "locate-path": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
           "dev": true,
           "requires": {
-            "errno": "^0.1.3",
-            "readable-stream": "^2.0.1"
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
           }
         },
         "micromatch": {
@@ -18944,6 +17177,30 @@
             "to-regex": "^3.0.2"
           }
         },
+        "p-locate": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+          "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+          "dev": true,
+          "requires": {
+            "p-limit": "^2.0.0"
+          }
+        },
+        "path-exists": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+          "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+          "dev": true
+        },
+        "pkg-dir": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+          "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+          "dev": true,
+          "requires": {
+            "find-up": "^3.0.0"
+          }
+        },
         "rimraf": {
           "version": "2.7.1",
           "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
@@ -18964,6 +17221,15 @@
             "ajv-keywords": "^3.1.0"
           }
         },
+        "serialize-javascript": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
+          "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+          "dev": true,
+          "requires": {
+            "randombytes": "^2.1.0"
+          }
+        },
         "source-map": {
           "version": "0.6.1",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -18979,6 +17245,12 @@
             "figgy-pudding": "^3.5.1"
           }
         },
+        "tapable": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
+          "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
+          "dev": true
+        },
         "terser": {
           "version": "4.8.0",
           "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
@@ -19016,6 +17288,16 @@
             "is-number": "^3.0.0",
             "repeat-string": "^1.6.1"
           }
+        },
+        "webpack-sources": {
+          "version": "1.4.3",
+          "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
+          "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+          "dev": true,
+          "requires": {
+            "source-list-map": "^2.0.0",
+            "source-map": "~0.6.1"
+          }
         }
       }
     },
@@ -19032,16 +17314,6 @@
         "webpack-log": "^2.0.0"
       },
       "dependencies": {
-        "memory-fs": {
-          "version": "0.4.1",
-          "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
-          "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==",
-          "dev": true,
-          "requires": {
-            "errno": "^0.1.3",
-            "readable-stream": "^2.0.1"
-          }
-        },
         "mime": {
           "version": "2.6.0",
           "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
@@ -19051,12 +17323,12 @@
       }
     },
     "webpack-dev-server": {
-      "version": "3.11.0",
-      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz",
-      "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==",
+      "version": "3.11.3",
+      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz",
+      "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==",
       "dev": true,
       "requires": {
-        "ansi-html": "0.0.7",
+        "ansi-html-community": "0.0.8",
         "bonjour": "^3.5.0",
         "chokidar": "^2.1.8",
         "compression": "^1.7.4",
@@ -19076,11 +17348,11 @@
         "p-retry": "^3.0.1",
         "portfinder": "^1.0.26",
         "schema-utils": "^1.0.0",
-        "selfsigned": "^1.10.7",
+        "selfsigned": "^1.10.8",
         "semver": "^6.3.0",
         "serve-index": "^1.9.1",
-        "sockjs": "0.3.20",
-        "sockjs-client": "1.4.0",
+        "sockjs": "^0.3.21",
+        "sockjs-client": "^1.5.0",
         "spdy": "^4.0.2",
         "strip-ansi": "^3.0.1",
         "supports-color": "^6.1.0",
@@ -19224,6 +17496,15 @@
             }
           }
         },
+        "find-up": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+          "dev": true,
+          "requires": {
+            "locate-path": "^3.0.0"
+          }
+        },
         "fsevents": {
           "version": "1.2.13",
           "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
@@ -19234,12 +17515,6 @@
             "nan": "^2.12.1"
           }
         },
-        "get-caller-file": {
-          "version": "2.0.5",
-          "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
-          "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
-          "dev": true
-        },
         "glob-parent": {
           "version": "3.1.0",
           "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
@@ -19261,12 +17536,6 @@
             }
           }
         },
-        "is-absolute-url": {
-          "version": "3.0.3",
-          "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
-          "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
-          "dev": true
-        },
         "is-binary-path": {
           "version": "1.0.1",
           "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
@@ -19296,6 +17565,16 @@
             }
           }
         },
+        "locate-path": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+          "dev": true,
+          "requires": {
+            "p-locate": "^3.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
         "micromatch": {
           "version": "3.1.10",
           "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
@@ -19317,6 +17596,21 @@
             "to-regex": "^3.0.2"
           }
         },
+        "p-locate": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+          "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+          "dev": true,
+          "requires": {
+            "p-limit": "^2.0.0"
+          }
+        },
+        "path-exists": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+          "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+          "dev": true
+        },
         "readdirp": {
           "version": "2.2.1",
           "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
@@ -19328,12 +17622,6 @@
             "readable-stream": "^2.0.2"
           }
         },
-        "require-main-filename": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
-          "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
-          "dev": true
-        },
         "schema-utils": {
           "version": "1.0.0",
           "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
@@ -19446,25 +17734,34 @@
       "requires": {
         "ansi-colors": "^3.0.0",
         "uuid": "^3.3.2"
+      },
+      "dependencies": {
+        "ansi-colors": {
+          "version": "3.2.4",
+          "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
+          "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==",
+          "dev": true
+        }
       }
     },
     "webpack-merge": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz",
-      "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==",
+      "version": "5.7.3",
+      "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz",
+      "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==",
       "dev": true,
       "requires": {
-        "lodash": "^4.17.15"
+        "clone-deep": "^4.0.1",
+        "wildcard": "^2.0.0"
       }
     },
     "webpack-sources": {
-      "version": "1.4.3",
-      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
-      "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz",
+      "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==",
       "dev": true,
       "requires": {
-        "source-list-map": "^2.0.0",
-        "source-map": "~0.6.1"
+        "source-list-map": "^2.0.1",
+        "source-map": "^0.6.1"
       },
       "dependencies": {
         "source-map": {
@@ -19476,12 +17773,30 @@
       }
     },
     "webpack-subresource-integrity": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.4.1.tgz",
-      "integrity": "sha512-XMLFInbGbB1HV7K4vHWANzc1CN0t/c4bBvnlvGxGwV45yE/S/feAXIm8dJsCkzqWtSKnmaEgTp/meyeThxG4Iw==",
+      "version": "1.5.2",
+      "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.5.2.tgz",
+      "integrity": "sha512-GBWYBoyalbo5YClwWop9qe6Zclp8CIXYGIz12OPclJhIrSplDxs1Ls1JDMH8xBPPrg1T6ISaTW9Y6zOrwEiAzw==",
       "dev": true,
       "requires": {
         "webpack-sources": "^1.3.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        },
+        "webpack-sources": {
+          "version": "1.4.3",
+          "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
+          "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+          "dev": true,
+          "requires": {
+            "source-list-map": "^2.0.0",
+            "source-map": "~0.6.1"
+          }
+        }
       }
     },
     "websocket-driver": {
@@ -19510,23 +17825,6 @@
       "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
       "dev": true
     },
-    "whatwg-url": {
-      "version": "8.7.0",
-      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz",
-      "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
-      "dev": true,
-      "requires": {
-        "lodash": "^4.7.0",
-        "tr46": "^2.1.0",
-        "webidl-conversions": "^6.1.0"
-      }
-    },
-    "when": {
-      "version": "3.6.4",
-      "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz",
-      "integrity": "sha512-d1VUP9F96w664lKINMGeElWdhhb5sC+thXM+ydZGU3ZnaE09Wv6FaS+mpM9570kcDs/xMfcXJBTLsMdHEFYY9Q==",
-      "dev": true
-    },
     "which": {
       "version": "1.3.1",
       "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
@@ -19536,19 +17834,6 @@
         "isexe": "^2.0.0"
       }
     },
-    "which-boxed-primitive": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
-      "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
-      "dev": true,
-      "requires": {
-        "is-bigint": "^1.0.1",
-        "is-boolean-object": "^1.1.0",
-        "is-number-object": "^1.0.4",
-        "is-string": "^1.0.5",
-        "is-symbol": "^1.0.3"
-      }
-    },
     "which-module": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
@@ -19560,7 +17845,6 @@
       "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
       "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
       "dev": true,
-      "optional": true,
       "requires": {
         "string-width": "^1.0.2 || 2"
       }
@@ -19608,6 +17892,12 @@
         }
       }
     },
+    "wildcard": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz",
+      "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==",
+      "dev": true
+    },
     "winston": {
       "version": "3.3.3",
       "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz",
@@ -19828,12 +18118,6 @@
       "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
       "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw="
     },
-    "xmlhttprequest-ssl": {
-      "version": "1.6.3",
-      "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz",
-      "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==",
-      "dev": true
-    },
     "xtend": {
       "version": "4.0.2",
       "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
@@ -19851,6 +18135,12 @@
       "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
       "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
     },
+    "yaml": {
+      "version": "1.10.2",
+      "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
+      "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
+      "dev": true
+    },
     "yargs": {
       "version": "15.4.1",
       "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
@@ -19948,12 +18238,6 @@
         "decamelize": "^1.2.0"
       }
     },
-    "yeast": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
-      "integrity": "sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==",
-      "dev": true
-    },
     "yn": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
diff --git a/package.json b/package.json
index d6fd081..8985089 100644
--- a/package.json
+++ b/package.json
@@ -11,18 +11,18 @@
   },
   "private": true,
   "dependencies": {
-    "@angular/animations": "~10.2.5",
+    "@angular/animations": "~11.2.14",
     "@angular/cdk": "^11.1.0",
-    "@angular/common": "~10.2.5",
-    "@angular/compiler": "~10.2.5",
-    "@angular/core": "~10.2.5",
+    "@angular/common": "~11.2.14",
+    "@angular/compiler": "~11.2.14",
+    "@angular/core": "~11.2.14",
     "@angular/fire": "^6.1.4",
-    "@angular/forms": "~10.2.5",
-    "@angular/localize": "^10.2.5",
+    "@angular/forms": "~11.2.14",
+    "@angular/localize": "^11.2.14",
     "@angular/material": "^11.1.0",
-    "@angular/platform-browser": "~10.2.5",
-    "@angular/platform-browser-dynamic": "~10.2.5",
-    "@angular/router": "~10.2.5",
+    "@angular/platform-browser": "~11.2.14",
+    "@angular/platform-browser-dynamic": "~11.2.14",
+    "@angular/router": "~11.2.14",
     "@auth0/auth0-angular": "^1.10.0",
     "angular-walkthrough": "^0.8.2",
     "apexcharts": "^3.24.0",
@@ -43,22 +43,22 @@
     "zone.js": "~0.10.2"
   },
   "devDependencies": {
-    "@angular-devkit/architect": ">= 0.900 < 0.1200",
-    "@angular-devkit/build-angular": "~0.1002.4",
-    "@angular/cli": "~10.2.4",
-    "@angular/compiler-cli": "~10.2.5",
-    "@angular/language-service": "~10.2.5",
-    "@types/jasmine": "~3.5.0",
+    "@angular-devkit/architect": "0.1102.19",
+    "@angular-devkit/build-angular": "~0.1102.19",
+    "@angular/cli": "~11.2.19",
+    "@angular/compiler-cli": "~11.2.14",
+    "@angular/language-service": "~11.2.14",
+    "@types/jasmine": "~3.6.0",
     "@types/jasminewd2": "~2.0.3",
     "@types/node": "^12.11.1",
-    "codelyzer": "^5.1.2",
+    "codelyzer": "^6.0.0",
     "firebase-tools": "^8.0.0",
     "fuzzy": "^0.1.3",
     "inquirer": "^6.2.2",
     "inquirer-autocomplete-prompt": "^1.0.1",
-    "jasmine-core": "~3.5.0",
+    "jasmine-core": "~3.6.0",
     "jasmine-spec-reporter": "~5.0.0",
-    "karma": "~5.0.0",
+    "karma": "~6.4.0",
     "karma-chrome-launcher": "~3.1.0",
     "karma-coverage-istanbul-reporter": "~3.0.2",
     "karma-jasmine": "~4.0.0",
diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index 32034ef..4a90d5e 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -31,7 +31,7 @@ const routes: Routes = [
 ];
 
 @NgModule({
-  imports: [RouterModule.forRoot(routes)],
+  imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })],
   exports: [RouterModule],
 })
 export class AppRoutingModule {}
diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts
index 6653675..0743afa 100644
--- a/src/app/app.component.spec.ts
+++ b/src/app/app.component.spec.ts
@@ -1,9 +1,9 @@
-import { TestBed, async } from "@angular/core/testing";
+import { TestBed, waitForAsync } from "@angular/core/testing";
 import { RouterTestingModule } from "@angular/router/testing";
 import { AppComponent } from "./app.component";
 
 describe("AppComponent", () => {
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       imports: [RouterTestingModule],
       declarations: [AppComponent],
diff --git a/src/app/components/about-comp/about-comp.component.spec.ts b/src/app/components/about-comp/about-comp.component.spec.ts
index dc7099b..0f95c52 100644
--- a/src/app/components/about-comp/about-comp.component.spec.ts
+++ b/src/app/components/about-comp/about-comp.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { AboutCompComponent } from "./about-comp.component";
 
@@ -6,7 +6,7 @@ describe("AboutCompComponent", () => {
   let component: AboutCompComponent;
   let fixture: ComponentFixture<AboutCompComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [AboutCompComponent],
     }).compileComponents();
diff --git a/src/app/components/consent-form/consent-form.component.spec.ts b/src/app/components/consent-form/consent-form.component.spec.ts
index 5ae346c..84ec228 100644
--- a/src/app/components/consent-form/consent-form.component.spec.ts
+++ b/src/app/components/consent-form/consent-form.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { ConsentFormComponent } from "./consent-form.component";
 
@@ -6,7 +6,7 @@ describe("ConsentFormComponent", () => {
   let component: ConsentFormComponent;
   let fixture: ComponentFixture<ConsentFormComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [ConsentFormComponent],
     }).compileComponents();
diff --git a/src/app/components/cpcq-form/cpcq-form.component.spec.ts b/src/app/components/cpcq-form/cpcq-form.component.spec.ts
index ffd1372..3f5ac3d 100644
--- a/src/app/components/cpcq-form/cpcq-form.component.spec.ts
+++ b/src/app/components/cpcq-form/cpcq-form.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { CpcqFormComponent } from "./cpcq-form.component";
 
@@ -6,7 +6,7 @@ describe("CpcqFormComponent", () => {
   let component: CpcqFormComponent;
   let fixture: ComponentFixture<CpcqFormComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [CpcqFormComponent],
     }).compileComponents();
diff --git a/src/app/components/cpcq-form/dialog-form/dialog-form.component.spec.ts b/src/app/components/cpcq-form/dialog-form/dialog-form.component.spec.ts
index 43b42e4..c26ec91 100644
--- a/src/app/components/cpcq-form/dialog-form/dialog-form.component.spec.ts
+++ b/src/app/components/cpcq-form/dialog-form/dialog-form.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { DialogFormComponent } from "./dialog-form.component";
 
@@ -6,7 +6,7 @@ describe("DialogFormComponent", () => {
   let component: DialogFormComponent;
   let fixture: ComponentFixture<DialogFormComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [DialogFormComponent],
     }).compileComponents();
diff --git a/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.spec.ts b/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.spec.ts
index 7d4b988..97157fd 100644
--- a/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.spec.ts
+++ b/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { DashboardDialoComponent } from "./dashboard-dialo.component";
 
@@ -6,7 +6,7 @@ describe("DashboardDialoComponent", () => {
   let component: DashboardDialoComponent;
   let fixture: ComponentFixture<DashboardDialoComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [DashboardDialoComponent],
     }).compileComponents();
diff --git a/src/app/components/dashboard/dashboard.component.spec.ts b/src/app/components/dashboard/dashboard.component.spec.ts
index 93afd51..75d6231 100644
--- a/src/app/components/dashboard/dashboard.component.spec.ts
+++ b/src/app/components/dashboard/dashboard.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { DashboardComponent } from "./dashboard.component";
 
@@ -6,7 +6,7 @@ describe("DashboardComponent", () => {
   let component: DashboardComponent;
   let fixture: ComponentFixture<DashboardComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [DashboardComponent],
     }).compileComponents();
diff --git a/src/app/components/final-dashboard/final-dashboard.component.spec.ts b/src/app/components/final-dashboard/final-dashboard.component.spec.ts
index ed79f7d..8bfde67 100644
--- a/src/app/components/final-dashboard/final-dashboard.component.spec.ts
+++ b/src/app/components/final-dashboard/final-dashboard.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { FinalDashboardComponent } from "./final-dashboard.component";
 
@@ -6,7 +6,7 @@ describe("FinalDashboardComponent", () => {
   let component: FinalDashboardComponent;
   let fixture: ComponentFixture<FinalDashboardComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [FinalDashboardComponent],
     }).compileComponents();
diff --git a/src/app/components/final-feedback/final-feedback.component.spec.ts b/src/app/components/final-feedback/final-feedback.component.spec.ts
index 192cb29..f610f82 100644
--- a/src/app/components/final-feedback/final-feedback.component.spec.ts
+++ b/src/app/components/final-feedback/final-feedback.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { FinalFeedbackComponent } from "./final-feedback.component";
 
@@ -6,7 +6,7 @@ describe("FinalFeedbackComponent", () => {
   let component: FinalFeedbackComponent;
   let fixture: ComponentFixture<FinalFeedbackComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [FinalFeedbackComponent],
     }).compileComponents();
diff --git a/src/app/components/first-form/first-form.component.spec.ts b/src/app/components/first-form/first-form.component.spec.ts
index a06820b..2c997ad 100644
--- a/src/app/components/first-form/first-form.component.spec.ts
+++ b/src/app/components/first-form/first-form.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { FirstFormComponent } from "./first-form.component";
 
@@ -6,7 +6,7 @@ describe("FirstFormComponent", () => {
   let component: FirstFormComponent;
   let fixture: ComponentFixture<FirstFormComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [FirstFormComponent],
     }).compileComponents();
diff --git a/src/app/components/footer/footer.component.spec.ts b/src/app/components/footer/footer.component.spec.ts
index 5489c5d..fbe9fe4 100644
--- a/src/app/components/footer/footer.component.spec.ts
+++ b/src/app/components/footer/footer.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { FooterComponent } from "./footer.component";
 
@@ -6,7 +6,7 @@ describe("FooterComponent", () => {
   let component: FooterComponent;
   let fixture: ComponentFixture<FooterComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [FooterComponent],
     }).compileComponents();
diff --git a/src/app/components/graph-page/graph-page.component.spec.ts b/src/app/components/graph-page/graph-page.component.spec.ts
index fe9a6fb..099f27d 100644
--- a/src/app/components/graph-page/graph-page.component.spec.ts
+++ b/src/app/components/graph-page/graph-page.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { GraphPageComponent } from "./graph-page.component";
 
@@ -6,7 +6,7 @@ describe("GraphPageComponent", () => {
   let component: GraphPageComponent;
   let fixture: ComponentFixture<GraphPageComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [GraphPageComponent],
     }).compileComponents();
diff --git a/src/app/components/header/header.component.spec.ts b/src/app/components/header/header.component.spec.ts
index bddd367..42c7a1f 100644
--- a/src/app/components/header/header.component.spec.ts
+++ b/src/app/components/header/header.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { HeaderComponent } from "./header.component";
 
@@ -6,7 +6,7 @@ describe("HeaderComponent", () => {
   let component: HeaderComponent;
   let fixture: ComponentFixture<HeaderComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [HeaderComponent],
     }).compileComponents();
diff --git a/src/app/components/home-page/home-page.component.spec.ts b/src/app/components/home-page/home-page.component.spec.ts
index 7051ef7..e917de5 100644
--- a/src/app/components/home-page/home-page.component.spec.ts
+++ b/src/app/components/home-page/home-page.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { HomePageComponent } from "./home-page.component";
 
@@ -6,7 +6,7 @@ describe("HomePageComponent", () => {
   let component: HomePageComponent;
   let fixture: ComponentFixture<HomePageComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [HomePageComponent],
     }).compileComponents();
diff --git a/src/app/components/main-game/dialog/dialog.component.spec.ts b/src/app/components/main-game/dialog/dialog.component.spec.ts
index f9a6561..f2e4992 100644
--- a/src/app/components/main-game/dialog/dialog.component.spec.ts
+++ b/src/app/components/main-game/dialog/dialog.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { DialogComponent } from "./dialog.component";
 
@@ -6,7 +6,7 @@ describe("DialogComponent", () => {
   let component: DialogComponent;
   let fixture: ComponentFixture<DialogComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [DialogComponent],
     }).compileComponents();
diff --git a/src/app/components/main-game/main-game.component.spec.ts b/src/app/components/main-game/main-game.component.spec.ts
index 29a9125..bd75cb1 100644
--- a/src/app/components/main-game/main-game.component.spec.ts
+++ b/src/app/components/main-game/main-game.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { MainGameComponent } from "./main-game.component";
 
@@ -6,7 +6,7 @@ describe("MainGameComponent", () => {
   let component: MainGameComponent;
   let fixture: ComponentFixture<MainGameComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [MainGameComponent],
     }).compileComponents();
diff --git a/src/app/components/post-survey/post-survey.component.spec.ts b/src/app/components/post-survey/post-survey.component.spec.ts
index 44ee456..6490265 100644
--- a/src/app/components/post-survey/post-survey.component.spec.ts
+++ b/src/app/components/post-survey/post-survey.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { PostSurveyComponent } from "./post-survey.component";
 
@@ -6,7 +6,7 @@ describe("PostSurveyComponent", () => {
   let component: PostSurveyComponent;
   let fixture: ComponentFixture<PostSurveyComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [PostSurveyComponent],
     }).compileComponents();
diff --git a/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.spec.ts b/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.spec.ts
index 29b768d..4d9fdaf 100644
--- a/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.spec.ts
+++ b/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { DialogPDfComponent } from "./dialog-pdf.component";
 
@@ -6,7 +6,7 @@ describe("DialogPDfComponent", () => {
   let component: DialogPDfComponent;
   let fixture: ComponentFixture<DialogPDfComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [DialogPDfComponent],
     }).compileComponents();
diff --git a/src/app/components/pre-survey/pre-survey.component.spec.ts b/src/app/components/pre-survey/pre-survey.component.spec.ts
index cff052a..25d5549 100644
--- a/src/app/components/pre-survey/pre-survey.component.spec.ts
+++ b/src/app/components/pre-survey/pre-survey.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { PreSurveyComponent } from "./pre-survey.component";
 
@@ -6,7 +6,7 @@ describe("PreSurveyComponent", () => {
   let component: PreSurveyComponent;
   let fixture: ComponentFixture<PreSurveyComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [PreSurveyComponent],
     }).compileComponents();
diff --git a/src/app/components/register-component/register-component.component.spec.ts b/src/app/components/register-component/register-component.component.spec.ts
index 2bd0621..3816f86 100644
--- a/src/app/components/register-component/register-component.component.spec.ts
+++ b/src/app/components/register-component/register-component.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { RegisterComponentComponent } from "./register-component.component";
 
@@ -6,7 +6,7 @@ describe("RegisterComponentComponent", () => {
   let component: RegisterComponentComponent;
   let fixture: ComponentFixture<RegisterComponentComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [RegisterComponentComponent],
     }).compileComponents();
diff --git a/src/app/components/result-dashboard/result-dashboard.component.spec.ts b/src/app/components/result-dashboard/result-dashboard.component.spec.ts
index 58b198d..b0f1195 100644
--- a/src/app/components/result-dashboard/result-dashboard.component.spec.ts
+++ b/src/app/components/result-dashboard/result-dashboard.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { ResultDashboardComponent } from "./result-dashboard.component";
 
@@ -6,7 +6,7 @@ describe("ResultDashboardComponent", () => {
   let component: ResultDashboardComponent;
   let fixture: ComponentFixture<ResultDashboardComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [ResultDashboardComponent],
     }).compileComponents();
diff --git a/src/app/components/score-page/score-page.component.spec.ts b/src/app/components/score-page/score-page.component.spec.ts
index 33e4680..6b28e54 100644
--- a/src/app/components/score-page/score-page.component.spec.ts
+++ b/src/app/components/score-page/score-page.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { ScorePageComponent } from "./score-page.component";
 
@@ -6,7 +6,7 @@ describe("ScorePageComponent", () => {
   let component: ScorePageComponent;
   let fixture: ComponentFixture<ScorePageComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [ScorePageComponent],
     }).compileComponents();
diff --git a/src/app/components/test/my-overlay/my-overlay.component.spec.ts b/src/app/components/test/my-overlay/my-overlay.component.spec.ts
index a1b0247..cdf7c40 100644
--- a/src/app/components/test/my-overlay/my-overlay.component.spec.ts
+++ b/src/app/components/test/my-overlay/my-overlay.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { MyOverlayComponent } from "./my-overlay.component";
 
@@ -6,7 +6,7 @@ describe("MyOverlayComponent", () => {
   let component: MyOverlayComponent;
   let fixture: ComponentFixture<MyOverlayComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [MyOverlayComponent],
     }).compileComponents();
diff --git a/src/app/components/test/test.component.spec.ts b/src/app/components/test/test.component.spec.ts
index 7cfcf0c..a9fbe8d 100644
--- a/src/app/components/test/test.component.spec.ts
+++ b/src/app/components/test/test.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { TestComponent } from "./test.component";
 
@@ -6,7 +6,7 @@ describe("TestComponent", () => {
   let component: TestComponent;
   let fixture: ComponentFixture<TestComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [TestComponent],
     }).compileComponents();
diff --git a/src/app/components/trial-component/trial-component.component.spec.ts b/src/app/components/trial-component/trial-component.component.spec.ts
index c40dd5e..59f1fd0 100644
--- a/src/app/components/trial-component/trial-component.component.spec.ts
+++ b/src/app/components/trial-component/trial-component.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { TrialComponentComponent } from "./trial-component.component";
 
@@ -6,7 +6,7 @@ describe("TrialComponentComponent", () => {
   let component: TrialComponentComponent;
   let fixture: ComponentFixture<TrialComponentComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [TrialComponentComponent],
     }).compileComponents();
diff --git a/src/app/components/unpacking-page/unpacking-page.component.spec.ts b/src/app/components/unpacking-page/unpacking-page.component.spec.ts
index 24f3b80..9a8302e 100644
--- a/src/app/components/unpacking-page/unpacking-page.component.spec.ts
+++ b/src/app/components/unpacking-page/unpacking-page.component.spec.ts
@@ -1,4 +1,4 @@
-import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
 import { UnpackingPageComponent } from "./unpacking-page.component";
 
@@ -6,7 +6,7 @@ describe("UnpackingPageComponent", () => {
   let component: UnpackingPageComponent;
   let fixture: ComponentFixture<UnpackingPageComponent>;
 
-  beforeEach(async(() => {
+  beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
       declarations: [UnpackingPageComponent],
     }).compileComponents();
-- 
GitLab


From 6c321a3d0e12a02b0a15fb42f91d17bc236b2e72 Mon Sep 17 00:00:00 2001
From: ramesh <rdramesh2009@gmail.com>
Date: Mon, 11 Jul 2022 14:36:06 -0400
Subject: [PATCH 12/23] material 11

---
 package-lock.json | 24 ++++++------------------
 package.json      |  4 ++--
 2 files changed, 8 insertions(+), 20 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index a89ddbf..a6475d5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -503,9 +503,9 @@
       }
     },
     "@angular/cdk": {
-      "version": "11.1.0",
-      "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-11.1.0.tgz",
-      "integrity": "sha512-yFEHtdp0o/xGnYebrU/PQqWVIlB7SaP3cSviq/LTv/h2EINn3PzU/Zhdhg0k0fk09BrKoS+o8AVIddduIdDpYw==",
+      "version": "11.2.13",
+      "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-11.2.13.tgz",
+      "integrity": "sha512-FkE4iCwoLbQxLDUOjV1I7M/6hmpyb7erAjEdWgch7nGRNxF1hqX5Bqf1lvLFKPNCbx5NRI5K7YVAdIUQUR8vug==",
       "requires": {
         "parse5": "^5.0.0",
         "tslib": "^2.0.0"
@@ -516,11 +516,6 @@
           "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz",
           "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==",
           "optional": true
-        },
-        "tslib": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
-          "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
         }
       }
     },
@@ -1088,18 +1083,11 @@
       }
     },
     "@angular/material": {
-      "version": "11.1.0",
-      "resolved": "https://registry.npmjs.org/@angular/material/-/material-11.1.0.tgz",
-      "integrity": "sha512-k7KpU8T32mmi1vaU27SSZ/gwO2YpxEUCTSzAOZNK8YugAXC+A5xPYLcNU8dlzBP4EW7XBkeSSnUacpI199YcyQ==",
+      "version": "11.2.13",
+      "resolved": "https://registry.npmjs.org/@angular/material/-/material-11.2.13.tgz",
+      "integrity": "sha512-FqFdGSkOtqsmeLyTSousodDGUy2NqbtxCIKv2rwbsIRwHNKB0KpR/UQhA2gMRuGa5hxhMJ0DW0Tf9neMRuLCTg==",
       "requires": {
         "tslib": "^2.0.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
-          "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
-        }
       }
     },
     "@angular/platform-browser": {
diff --git a/package.json b/package.json
index 8985089..8f48767 100644
--- a/package.json
+++ b/package.json
@@ -12,14 +12,14 @@
   "private": true,
   "dependencies": {
     "@angular/animations": "~11.2.14",
-    "@angular/cdk": "^11.1.0",
+    "@angular/cdk": "^11.2.13",
     "@angular/common": "~11.2.14",
     "@angular/compiler": "~11.2.14",
     "@angular/core": "~11.2.14",
     "@angular/fire": "^6.1.4",
     "@angular/forms": "~11.2.14",
     "@angular/localize": "^11.2.14",
-    "@angular/material": "^11.1.0",
+    "@angular/material": "^11.2.13",
     "@angular/platform-browser": "~11.2.14",
     "@angular/platform-browser-dynamic": "~11.2.14",
     "@angular/router": "~11.2.14",
-- 
GitLab


From a5eaa102bbd26951e4f372bcb2ebcf1c235b5bb3 Mon Sep 17 00:00:00 2001
From: ramesh <rdramesh2009@gmail.com>
Date: Mon, 11 Jul 2022 14:43:20 -0400
Subject: [PATCH 13/23] wip

---
 package-lock.json | 10470 +++++++++++++++++++++++---------------------
 package.json      |    32 +-
 2 files changed, 5438 insertions(+), 5064 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index a6475d5..c2645b0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4,20 +4,38 @@
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
+    "@ampproject/remapping": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-1.0.1.tgz",
+      "integrity": "sha512-Ta9bMA3EtUHDaZJXqUoT5cn/EecwOp+SXpKJqxDbDuMbLvEMu6YTyDDuvTWeStODfdmXyfMo7LymQyPkN3BicA==",
+      "dev": true,
+      "requires": {
+        "@jridgewell/resolve-uri": "1.0.0",
+        "sourcemap-codec": "1.4.8"
+      },
+      "dependencies": {
+        "@jridgewell/resolve-uri": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-1.0.0.tgz",
+          "integrity": "sha512-9oLAnygRMi8Q5QkYEU4XWK04B+nuoXoxjRvRxgjuChkLZFBja0YPSgdZ7dZtwhncLBcQe/I/E+fLuk5qxcYVJA==",
+          "dev": true
+        }
+      }
+    },
     "@angular-devkit/architect": {
-      "version": "0.1102.19",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1102.19.tgz",
-      "integrity": "sha512-5Opv6H+XyCkuQvQ1jsxw416YqMDPX3dVonMarFGBPLBe8YEXLRTJ60dvmuLsLpWk6ccTd3XiNT7WEJy4ctDc2Q==",
+      "version": "0.1202.17",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1202.17.tgz",
+      "integrity": "sha512-uUQcHcLbPvr9adALQSLU1MTDduVUR2kZAHi2e7SmL9ioel84pPVXBoD0WpSBeUMKwPiDs3TQDaxDB49hl0nBSQ==",
       "dev": true,
       "requires": {
-        "@angular-devkit/core": "11.2.19",
-        "rxjs": "6.6.3"
+        "@angular-devkit/core": "12.2.17",
+        "rxjs": "6.6.7"
       },
       "dependencies": {
         "rxjs": {
-          "version": "6.6.3",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
-          "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
+          "version": "6.6.7",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+          "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
           "dev": true,
           "requires": {
             "tslib": "^1.9.0"
@@ -32,114 +50,129 @@
       }
     },
     "@angular-devkit/build-angular": {
-      "version": "0.1102.19",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.1102.19.tgz",
-      "integrity": "sha512-frI8UyujPB5WV7l9uecH8Ev73TWTV7xEHrwYIKryD/mVmqeg64ILi4/ATPHm1qGFjAH27WWHtzL2vnik5wBlNg==",
-      "dev": true,
-      "requires": {
-        "@angular-devkit/architect": "0.1102.19",
-        "@angular-devkit/build-optimizer": "0.1102.19",
-        "@angular-devkit/build-webpack": "0.1102.19",
-        "@angular-devkit/core": "11.2.19",
-        "@babel/core": "7.12.10",
-        "@babel/generator": "7.12.11",
-        "@babel/plugin-transform-async-to-generator": "7.12.1",
-        "@babel/plugin-transform-runtime": "7.12.10",
-        "@babel/preset-env": "7.12.11",
-        "@babel/runtime": "7.12.5",
-        "@babel/template": "7.12.7",
-        "@discoveryjs/json-ext": "0.5.2",
+      "version": "12.2.17",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-12.2.17.tgz",
+      "integrity": "sha512-uc3HGHVQyatqQ/M53oxYBvhz0jx0hgdc7WT+L56GLHvgz7Ct2VEbpWaMfwHkFfE1F1iHkIgnTKHKWacJl1yQIg==",
+      "dev": true,
+      "requires": {
+        "@ampproject/remapping": "1.0.1",
+        "@angular-devkit/architect": "0.1202.17",
+        "@angular-devkit/build-optimizer": "0.1202.17",
+        "@angular-devkit/build-webpack": "0.1202.17",
+        "@angular-devkit/core": "12.2.17",
+        "@babel/core": "7.14.8",
+        "@babel/generator": "7.14.8",
+        "@babel/helper-annotate-as-pure": "7.14.5",
+        "@babel/plugin-proposal-async-generator-functions": "7.14.7",
+        "@babel/plugin-transform-async-to-generator": "7.14.5",
+        "@babel/plugin-transform-runtime": "7.14.5",
+        "@babel/preset-env": "7.14.8",
+        "@babel/runtime": "7.14.8",
+        "@babel/template": "7.14.5",
+        "@discoveryjs/json-ext": "0.5.3",
         "@jsdevtools/coverage-istanbul-loader": "3.0.5",
-        "@ngtools/webpack": "11.2.19",
+        "@ngtools/webpack": "12.2.17",
         "ansi-colors": "4.1.1",
-        "autoprefixer": "10.2.4",
         "babel-loader": "8.2.2",
         "browserslist": "^4.9.1",
-        "cacache": "15.0.5",
+        "cacache": "15.2.0",
         "caniuse-lite": "^1.0.30001032",
         "circular-dependency-plugin": "5.2.2",
-        "copy-webpack-plugin": "6.3.2",
-        "core-js": "3.8.3",
+        "copy-webpack-plugin": "9.0.1",
+        "core-js": "3.16.0",
         "critters": "0.0.12",
-        "css-loader": "5.0.1",
-        "cssnano": "5.0.2",
-        "file-loader": "6.2.0",
+        "css-loader": "6.2.0",
+        "css-minimizer-webpack-plugin": "3.0.2",
+        "esbuild": "0.13.8",
+        "esbuild-wasm": "0.13.8",
         "find-cache-dir": "3.3.1",
-        "glob": "7.1.6",
+        "glob": "7.1.7",
         "https-proxy-agent": "5.0.0",
-        "inquirer": "7.3.3",
-        "jest-worker": "26.6.2",
+        "inquirer": "8.1.2",
         "karma-source-map-support": "1.4.0",
         "less": "4.1.1",
-        "less-loader": "7.3.0",
-        "license-webpack-plugin": "2.3.11",
+        "less-loader": "10.0.1",
+        "license-webpack-plugin": "2.3.20",
         "loader-utils": "2.0.0",
-        "mini-css-extract-plugin": "1.3.5",
+        "mini-css-extract-plugin": "2.4.2",
         "minimatch": "3.0.4",
-        "open": "7.4.0",
-        "ora": "5.3.0",
+        "open": "8.2.1",
+        "ora": "5.4.1",
         "parse5-html-rewriting-stream": "6.0.1",
-        "pnp-webpack-plugin": "1.6.4",
-        "postcss": "8.2.15",
-        "postcss-import": "14.0.0",
-        "postcss-loader": "4.2.0",
-        "raw-loader": "4.0.2",
-        "regenerator-runtime": "0.13.7",
+        "piscina": "3.1.0",
+        "postcss": "8.3.6",
+        "postcss-import": "14.0.2",
+        "postcss-loader": "6.1.1",
+        "postcss-preset-env": "6.7.0",
+        "regenerator-runtime": "0.13.9",
         "resolve-url-loader": "4.0.0",
-        "rimraf": "3.0.2",
-        "rollup": "2.38.4",
-        "rxjs": "6.6.3",
-        "sass": "1.32.6",
-        "sass-loader": "10.1.1",
-        "semver": "7.3.4",
-        "source-map": "0.7.3",
-        "source-map-loader": "1.1.3",
+        "rxjs": "6.6.7",
+        "sass": "1.36.0",
+        "sass-loader": "12.1.0",
+        "semver": "7.3.5",
+        "source-map-loader": "3.0.0",
         "source-map-support": "0.5.19",
-        "speed-measure-webpack-plugin": "1.4.2",
-        "style-loader": "2.0.0",
+        "style-loader": "3.2.1",
         "stylus": "0.54.8",
-        "stylus-loader": "4.3.3",
-        "terser": "5.5.1",
-        "terser-webpack-plugin": "4.2.3",
+        "stylus-loader": "6.1.0",
+        "terser": "5.7.1",
+        "terser-webpack-plugin": "5.1.4",
         "text-table": "0.2.0",
         "tree-kill": "1.2.2",
-        "webpack": "4.44.2",
-        "webpack-dev-middleware": "3.7.2",
+        "tslib": "2.3.0",
+        "webpack": "5.50.0",
+        "webpack-dev-middleware": "5.0.0",
         "webpack-dev-server": "3.11.3",
-        "webpack-merge": "5.7.3",
-        "webpack-sources": "2.2.0",
-        "webpack-subresource-integrity": "1.5.2",
-        "worker-plugin": "5.0.0"
+        "webpack-merge": "5.8.0",
+        "webpack-subresource-integrity": "1.5.2"
       },
       "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+          "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+          "dev": true,
+          "requires": {
+            "@babel/highlight": "^7.18.6"
+          }
+        },
         "@babel/generator": {
-          "version": "7.12.11",
-          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz",
-          "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==",
+          "version": "7.14.8",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.8.tgz",
+          "integrity": "sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg==",
           "dev": true,
           "requires": {
-            "@babel/types": "^7.12.11",
+            "@babel/types": "^7.14.8",
             "jsesc": "^2.5.1",
             "source-map": "^0.5.0"
-          },
-          "dependencies": {
-            "source-map": {
-              "version": "0.5.7",
-              "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-              "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
-              "dev": true
-            }
+          }
+        },
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
+          "dev": true
+        },
+        "@babel/highlight": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+          "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "chalk": "^2.0.0",
+            "js-tokens": "^4.0.0"
           }
         },
         "@babel/template": {
-          "version": "7.12.7",
-          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz",
-          "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==",
+          "version": "7.14.5",
+          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz",
+          "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==",
           "dev": true,
           "requires": {
-            "@babel/code-frame": "^7.10.4",
-            "@babel/parser": "^7.12.7",
-            "@babel/types": "^7.12.7"
+            "@babel/code-frame": "^7.14.5",
+            "@babel/parser": "^7.14.5",
+            "@babel/types": "^7.14.5"
           }
         },
         "agent-base": {
@@ -175,16 +208,6 @@
             "color-convert": "^2.0.1"
           }
         },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
         "cli-width": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
@@ -206,6 +229,32 @@
           "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
           "dev": true
         },
+        "esbuild": {
+          "version": "0.13.8",
+          "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.8.tgz",
+          "integrity": "sha512-A4af7G7YZLfG5OnARJRMtlpEsCkq/zHZQXewgPA864l9D6VjjbH1SuFYK/OSV6BtHwDGkdwyRrX0qQFLnMfUcw==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "esbuild-android-arm64": "0.13.8",
+            "esbuild-darwin-64": "0.13.8",
+            "esbuild-darwin-arm64": "0.13.8",
+            "esbuild-freebsd-64": "0.13.8",
+            "esbuild-freebsd-arm64": "0.13.8",
+            "esbuild-linux-32": "0.13.8",
+            "esbuild-linux-64": "0.13.8",
+            "esbuild-linux-arm": "0.13.8",
+            "esbuild-linux-arm64": "0.13.8",
+            "esbuild-linux-mips64le": "0.13.8",
+            "esbuild-linux-ppc64le": "0.13.8",
+            "esbuild-netbsd-64": "0.13.8",
+            "esbuild-openbsd-64": "0.13.8",
+            "esbuild-sunos-64": "0.13.8",
+            "esbuild-windows-32": "0.13.8",
+            "esbuild-windows-64": "0.13.8",
+            "esbuild-windows-arm64": "0.13.8"
+          }
+        },
         "figures": {
           "version": "3.2.0",
           "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
@@ -216,9 +265,9 @@
           }
         },
         "glob": {
-          "version": "7.1.6",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
-          "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+          "version": "7.1.7",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+          "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
           "dev": true,
           "requires": {
             "fs.realpath": "^1.0.0",
@@ -246,24 +295,46 @@
           }
         },
         "inquirer": {
-          "version": "7.3.3",
-          "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz",
-          "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
+          "version": "8.1.2",
+          "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.2.tgz",
+          "integrity": "sha512-DHLKJwLPNgkfwNmsuEUKSejJFbkv0FMO9SMiQbjI3n5NQuCrSIBqP66ggqyz2a6t2qEolKrMjhQ3+W/xXgUQ+Q==",
           "dev": true,
           "requires": {
             "ansi-escapes": "^4.2.1",
-            "chalk": "^4.1.0",
+            "chalk": "^4.1.1",
             "cli-cursor": "^3.1.0",
             "cli-width": "^3.0.0",
             "external-editor": "^3.0.3",
             "figures": "^3.0.0",
-            "lodash": "^4.17.19",
+            "lodash": "^4.17.21",
             "mute-stream": "0.0.8",
+            "ora": "^5.3.0",
             "run-async": "^2.4.0",
-            "rxjs": "^6.6.0",
+            "rxjs": "^7.2.0",
             "string-width": "^4.1.0",
             "strip-ansi": "^6.0.0",
             "through": "^2.3.6"
+          },
+          "dependencies": {
+            "chalk": {
+              "version": "4.1.2",
+              "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+              "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+              "dev": true,
+              "requires": {
+                "ansi-styles": "^4.1.0",
+                "supports-color": "^7.1.0"
+              }
+            },
+            "rxjs": {
+              "version": "7.5.6",
+              "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz",
+              "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==",
+              "dev": true,
+              "requires": {
+                "tslib": "^2.1.0"
+              }
+            }
           }
         },
         "is-fullwidth-code-point": {
@@ -272,6 +343,12 @@
           "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
           "dev": true
         },
+        "lodash": {
+          "version": "4.17.21",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+          "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+          "dev": true
+        },
         "lru-cache": {
           "version": "6.0.0",
           "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -287,33 +364,49 @@
           "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
           "dev": true
         },
-        "rimraf": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+        "open": {
+          "version": "8.2.1",
+          "resolved": "https://registry.npmjs.org/open/-/open-8.2.1.tgz",
+          "integrity": "sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ==",
           "dev": true,
           "requires": {
-            "glob": "^7.1.3"
+            "define-lazy-prop": "^2.0.0",
+            "is-docker": "^2.1.1",
+            "is-wsl": "^2.2.0"
           }
         },
         "rxjs": {
-          "version": "6.6.3",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
-          "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
+          "version": "6.6.7",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+          "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
           "dev": true,
           "requires": {
             "tslib": "^1.9.0"
+          },
+          "dependencies": {
+            "tslib": {
+              "version": "1.14.1",
+              "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+              "dev": true
+            }
           }
         },
         "semver": {
-          "version": "7.3.4",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
-          "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
+          "version": "7.3.5",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
           "dev": true,
           "requires": {
             "lru-cache": "^6.0.0"
           }
         },
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+          "dev": true
+        },
         "source-map-support": {
           "version": "0.5.19",
           "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
@@ -362,9 +455,9 @@
           }
         },
         "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
+          "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==",
           "dev": true
         },
         "type-fest": {
@@ -376,47 +469,38 @@
       }
     },
     "@angular-devkit/build-optimizer": {
-      "version": "0.1102.19",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1102.19.tgz",
-      "integrity": "sha512-3665mNFwOCqD2HR6Kjrwqh+Jh72h3F7AB88p/oWBvH0GolFCz8JnbwUZJkzTtOsKUw5ZC1Z6b/nbUkCJemxFug==",
+      "version": "0.1202.17",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1202.17.tgz",
+      "integrity": "sha512-1qWGWw7cCNADB4LZ/zjiSK0GLmr2kebYyNG0KutCE8GNVxv2h6w6dJP6t1C/BgskRuBPCAhvE+lEKN8ljSutag==",
       "dev": true,
       "requires": {
-        "loader-utils": "2.0.0",
         "source-map": "0.7.3",
-        "tslib": "2.1.0",
-        "typescript": "4.1.5",
-        "webpack-sources": "2.2.0"
+        "tslib": "2.3.0",
+        "typescript": "4.3.5"
       },
       "dependencies": {
         "tslib": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
-          "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==",
-          "dev": true
-        },
-        "typescript": {
-          "version": "4.1.5",
-          "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz",
-          "integrity": "sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA==",
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
+          "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==",
           "dev": true
         }
       }
     },
     "@angular-devkit/build-webpack": {
-      "version": "0.1102.19",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1102.19.tgz",
-      "integrity": "sha512-IhN/eeaA2bA1daLTU7YDztxvaS9Hj2J2t889fBYn5xNnM3Z2QqwyncOoj0F0Cumx6tuFtwRSvaKm7+xbbCoJQA==",
+      "version": "0.1202.17",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1202.17.tgz",
+      "integrity": "sha512-z7FW43DJ4p8UZwbFRmMrh2ohqhI2Wtdg3+FZiTnl4opb3zYheGiNxPlTuiyKjG21JUkGCdthkkBLCNfaUU0U/Q==",
       "dev": true,
       "requires": {
-        "@angular-devkit/architect": "0.1102.19",
-        "@angular-devkit/core": "11.2.19",
-        "rxjs": "6.6.3"
+        "@angular-devkit/architect": "0.1202.17",
+        "rxjs": "6.6.7"
       },
       "dependencies": {
         "rxjs": {
-          "version": "6.6.3",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
-          "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
+          "version": "6.6.7",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+          "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
           "dev": true,
           "requires": {
             "tslib": "^1.9.0"
@@ -431,15 +515,16 @@
       }
     },
     "@angular-devkit/core": {
-      "version": "11.2.19",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.19.tgz",
-      "integrity": "sha512-kvS0QXDYDatLyf0NYv2sahPYD7kya4g5GpQAV1ddjjLmEVeZssHt+Xfk2tzrkzYzqRMiyspx3HPPrrOnMUAFhQ==",
+      "version": "12.2.17",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.17.tgz",
+      "integrity": "sha512-PyOY7LGUPPd6rakxUYbfQN6zAdOCMCouVp5tERY1WTdMdEiuULOtHsPee8kNbh75pD59KbJNU+fwozPRMuIm5g==",
       "dev": true,
       "requires": {
-        "ajv": "6.12.6",
+        "ajv": "8.6.2",
+        "ajv-formats": "2.1.0",
         "fast-json-stable-stringify": "2.1.0",
         "magic-string": "0.25.7",
-        "rxjs": "6.6.3",
+        "rxjs": "6.6.7",
         "source-map": "0.7.3"
       },
       "dependencies": {
@@ -450,9 +535,9 @@
           "dev": true
         },
         "rxjs": {
-          "version": "6.6.3",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
-          "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
+          "version": "6.6.7",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+          "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
           "dev": true,
           "requires": {
             "tslib": "^1.9.0"
@@ -467,20 +552,20 @@
       }
     },
     "@angular-devkit/schematics": {
-      "version": "11.2.19",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-11.2.19.tgz",
-      "integrity": "sha512-jefsjIlaznKxn5+dHSMwvXTO+QKCKtahu/iZoRcdb25JWGXrkj8/quCuj4VeMFY48g/EPjX+9WhDtRl8TjYBiA==",
+      "version": "12.2.17",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.2.17.tgz",
+      "integrity": "sha512-c0eNu/nx1Mnu7KcZgYTYHP736H4Y9pSyLBSmLAHYZv3t3m0dIPbhifRcLQX7hHQ8fGT2ZFxmOpaQG5/DcIghSw==",
       "dev": true,
       "requires": {
-        "@angular-devkit/core": "11.2.19",
-        "ora": "5.3.0",
-        "rxjs": "6.6.3"
+        "@angular-devkit/core": "12.2.17",
+        "ora": "5.4.1",
+        "rxjs": "6.6.7"
       },
       "dependencies": {
         "rxjs": {
-          "version": "6.6.3",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
-          "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
+          "version": "6.6.7",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+          "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
           "dev": true,
           "requires": {
             "tslib": "^1.9.0"
@@ -495,11 +580,11 @@
       }
     },
     "@angular/animations": {
-      "version": "11.2.14",
-      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-11.2.14.tgz",
-      "integrity": "sha512-Heq/nNrCmb3jbkusu+BQszOecfFI/31Oxxj+CDQkqqYpBcswk6bOJLoEE472o+vmgxaXbgeflU9qbIiCQhpMFA==",
+      "version": "12.2.16",
+      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-12.2.16.tgz",
+      "integrity": "sha512-Kf6C7Ta+fCMq5DvT9JNVhBkcECrqFa3wumiC6ssGo5sNaEzXz+tlep9ZgEbqfxSn7gAN7L1DgsbS9u0O6tbUkg==",
       "requires": {
-        "tslib": "^2.0.0"
+        "tslib": "^2.2.0"
       }
     },
     "@angular/cdk": {
@@ -520,32 +605,29 @@
       }
     },
     "@angular/cli": {
-      "version": "11.2.19",
-      "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-11.2.19.tgz",
-      "integrity": "sha512-B7ZRmcleBF/D6ojt+LOfHE/2Cs3jpHWK/Khho0c2i1jrqLjCTFlgGfK0NKztbFr0lmbhL6Z7Oj4ge3X6dMcSuQ==",
+      "version": "12.2.17",
+      "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-12.2.17.tgz",
+      "integrity": "sha512-mubRPp5hRIK/q0J8q6kVAqbYYuBUKMMBljUCqT4fHsl+qXYD27rgG3EqNzycKBMHUIlykotrDSdy47voD+atOg==",
       "dev": true,
       "requires": {
-        "@angular-devkit/architect": "0.1102.19",
-        "@angular-devkit/core": "11.2.19",
-        "@angular-devkit/schematics": "11.2.19",
-        "@schematics/angular": "11.2.19",
-        "@schematics/update": "0.1102.19",
+        "@angular-devkit/architect": "0.1202.17",
+        "@angular-devkit/core": "12.2.17",
+        "@angular-devkit/schematics": "12.2.17",
+        "@schematics/angular": "12.2.17",
         "@yarnpkg/lockfile": "1.1.0",
         "ansi-colors": "4.1.1",
-        "debug": "4.3.1",
+        "debug": "4.3.2",
         "ini": "2.0.0",
-        "inquirer": "7.3.3",
+        "inquirer": "8.1.2",
         "jsonc-parser": "3.0.0",
-        "npm-package-arg": "8.1.0",
-        "npm-pick-manifest": "6.1.0",
-        "open": "7.4.0",
-        "ora": "5.3.0",
-        "pacote": "11.2.4",
-        "resolve": "1.19.0",
-        "rimraf": "3.0.2",
-        "semver": "7.3.4",
-        "symbol-observable": "3.0.0",
-        "universal-analytics": "0.4.23",
+        "npm-package-arg": "8.1.5",
+        "npm-pick-manifest": "6.1.1",
+        "open": "8.2.1",
+        "ora": "5.4.1",
+        "pacote": "12.0.2",
+        "resolve": "1.20.0",
+        "semver": "7.3.5",
+        "symbol-observable": "4.0.0",
         "uuid": "8.3.2"
       },
       "dependencies": {
@@ -604,6 +686,15 @@
           "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
           "dev": true
         },
+        "debug": {
+          "version": "4.3.2",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+          "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+          "dev": true,
+          "requires": {
+            "ms": "2.1.2"
+          }
+        },
         "figures": {
           "version": "3.2.0",
           "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
@@ -626,21 +717,22 @@
           "dev": true
         },
         "inquirer": {
-          "version": "7.3.3",
-          "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz",
-          "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
+          "version": "8.1.2",
+          "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.2.tgz",
+          "integrity": "sha512-DHLKJwLPNgkfwNmsuEUKSejJFbkv0FMO9SMiQbjI3n5NQuCrSIBqP66ggqyz2a6t2qEolKrMjhQ3+W/xXgUQ+Q==",
           "dev": true,
           "requires": {
             "ansi-escapes": "^4.2.1",
-            "chalk": "^4.1.0",
+            "chalk": "^4.1.1",
             "cli-cursor": "^3.1.0",
             "cli-width": "^3.0.0",
             "external-editor": "^3.0.3",
             "figures": "^3.0.0",
-            "lodash": "^4.17.19",
+            "lodash": "^4.17.21",
             "mute-stream": "0.0.8",
+            "ora": "^5.3.0",
             "run-async": "^2.4.0",
-            "rxjs": "^6.6.0",
+            "rxjs": "^7.2.0",
             "string-width": "^4.1.0",
             "strip-ansi": "^6.0.0",
             "through": "^2.3.6"
@@ -652,6 +744,12 @@
           "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
           "dev": true
         },
+        "lodash": {
+          "version": "4.17.21",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+          "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+          "dev": true
+        },
         "lru-cache": {
           "version": "6.0.0",
           "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -667,28 +765,40 @@
           "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
           "dev": true
         },
-        "rimraf": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+        "open": {
+          "version": "8.2.1",
+          "resolved": "https://registry.npmjs.org/open/-/open-8.2.1.tgz",
+          "integrity": "sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ==",
           "dev": true,
           "requires": {
-            "glob": "^7.1.3"
+            "define-lazy-prop": "^2.0.0",
+            "is-docker": "^2.1.1",
+            "is-wsl": "^2.2.0"
+          }
+        },
+        "resolve": {
+          "version": "1.20.0",
+          "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
+          "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
+          "dev": true,
+          "requires": {
+            "is-core-module": "^2.2.0",
+            "path-parse": "^1.0.6"
           }
         },
         "rxjs": {
-          "version": "6.6.7",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
-          "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+          "version": "7.5.6",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz",
+          "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==",
           "dev": true,
           "requires": {
-            "tslib": "^1.9.0"
+            "tslib": "^2.1.0"
           }
         },
         "semver": {
-          "version": "7.3.4",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
-          "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
+          "version": "7.3.5",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
           "dev": true,
           "requires": {
             "lru-cache": "^6.0.0"
@@ -723,12 +833,6 @@
             "has-flag": "^4.0.0"
           }
         },
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-          "dev": true
-        },
         "type-fest": {
           "version": "0.21.3",
           "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
@@ -744,25 +848,25 @@
       }
     },
     "@angular/common": {
-      "version": "11.2.14",
-      "resolved": "https://registry.npmjs.org/@angular/common/-/common-11.2.14.tgz",
-      "integrity": "sha512-ZSLV/3j7eCTyLf/8g4yBFLWySjiLz3vLJAGWscYoUpnJWMnug1VRu6zoF/COxCbtORgE+Wz6K0uhfS6MziBGVw==",
+      "version": "12.2.16",
+      "resolved": "https://registry.npmjs.org/@angular/common/-/common-12.2.16.tgz",
+      "integrity": "sha512-FEqTXTEsnbDInqV1yFlm97Tz1OFqZS5t0TUkm8gzXRgpIce/F/jLwAg0u1VQkgOsno6cNm0xTWPoZgu85NI4ug==",
       "requires": {
-        "tslib": "^2.0.0"
+        "tslib": "^2.2.0"
       }
     },
     "@angular/compiler": {
-      "version": "11.2.14",
-      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-11.2.14.tgz",
-      "integrity": "sha512-XBOK3HgA+/y6Cz7kOX4zcJYmgJ264XnfcbXUMU2cD7Ac+mbNhLPKohWrEiSWalfcjnpf5gRfufQrQP7lpAGu0A==",
+      "version": "12.2.16",
+      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-12.2.16.tgz",
+      "integrity": "sha512-nsYEw+yu8QyeqPf9nAmG419i1mtGM4v8+U+S3eQHQFXTgJzLymMykWHYu2ETdjUpNSLK6xcIQDBWtWnWSfJjAA==",
       "requires": {
-        "tslib": "^2.0.0"
+        "tslib": "^2.2.0"
       }
     },
     "@angular/compiler-cli": {
-      "version": "11.2.14",
-      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-11.2.14.tgz",
-      "integrity": "sha512-A7ltnCp03/EVqK/Q3tVUDsokgz5GHW3dSPGl0Csk7Ys5uBB9ibHTmVt4eiXA4jt0+6Bk+mKxwe5BEDqLvwYFAg==",
+      "version": "12.2.16",
+      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-12.2.16.tgz",
+      "integrity": "sha512-tlalh8SJvdCWbUPRUR5GamaP+wSc/GuCsoUZpSbcczGKgSlbaEVXUYtVXm8/wuT6Slk2sSEbRs7tXGF2i7qxVw==",
       "dev": true,
       "requires": {
         "@babel/core": "^7.8.6",
@@ -770,16 +874,15 @@
         "canonical-path": "1.0.0",
         "chokidar": "^3.0.0",
         "convert-source-map": "^1.5.1",
-        "dependency-graph": "^0.7.2",
-        "fs-extra": "4.0.2",
+        "dependency-graph": "^0.11.0",
         "magic-string": "^0.25.0",
         "minimist": "^1.2.0",
         "reflect-metadata": "^0.1.2",
-        "semver": "^6.3.0",
+        "semver": "^7.0.0",
         "source-map": "^0.6.1",
         "sourcemap-codec": "^1.4.8",
-        "tslib": "^2.0.0",
-        "yargs": "^16.2.0"
+        "tslib": "^2.2.0",
+        "yargs": "^17.0.0"
       },
       "dependencies": {
         "ansi-regex": {
@@ -829,6 +932,24 @@
           "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
           "dev": true
         },
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
+        "semver": {
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        },
         "source-map": {
           "version": "0.6.1",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -873,34 +994,34 @@
           "dev": true
         },
         "yargs": {
-          "version": "16.2.0",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
-          "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+          "version": "17.5.1",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz",
+          "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==",
           "dev": true,
           "requires": {
             "cliui": "^7.0.2",
             "escalade": "^3.1.1",
             "get-caller-file": "^2.0.5",
             "require-directory": "^2.1.1",
-            "string-width": "^4.2.0",
+            "string-width": "^4.2.3",
             "y18n": "^5.0.5",
-            "yargs-parser": "^20.2.2"
+            "yargs-parser": "^21.0.0"
           }
         },
         "yargs-parser": {
-          "version": "20.2.9",
-          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
-          "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+          "version": "21.0.1",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz",
+          "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==",
           "dev": true
         }
       }
     },
     "@angular/core": {
-      "version": "11.2.14",
-      "resolved": "https://registry.npmjs.org/@angular/core/-/core-11.2.14.tgz",
-      "integrity": "sha512-vpR4XqBGitk1Faph37CSpemwIYTmJ3pdIVNoHKP6jLonpWu+0azkchf0f7oD8/2ivj2F81opcIw0tcsy/D/5Vg==",
+      "version": "12.2.16",
+      "resolved": "https://registry.npmjs.org/@angular/core/-/core-12.2.16.tgz",
+      "integrity": "sha512-jsmvaRdAfng99z2a9mAmkfcsCE1wm+tBYVDxnc5JquSXznwtncjzcoc2X0J0dzrkCDvzFfpTsZ9vehylytBc+A==",
       "requires": {
-        "tslib": "^2.0.0"
+        "tslib": "^2.2.0"
       }
     },
     "@angular/fire": {
@@ -919,27 +1040,27 @@
       }
     },
     "@angular/forms": {
-      "version": "11.2.14",
-      "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-11.2.14.tgz",
-      "integrity": "sha512-4LWqY6KEIk1AZQFnk+4PJSOCamlD4tumuVN06gO4D0dZo9Cx+GcvW6pM6N0CPubRvPs3sScCnu20WT11HNWC1w==",
+      "version": "12.2.16",
+      "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-12.2.16.tgz",
+      "integrity": "sha512-sb+gpNun5aN7CZfHXS6X7vJcd/0A1P/gRBZpYtQTzBYnqEFCOFIvR62eb05aHQ4JhgKaSPpIXrbz/bAwY/njZw==",
       "requires": {
-        "tslib": "^2.0.0"
+        "tslib": "^2.2.0"
       }
     },
     "@angular/language-service": {
-      "version": "11.2.14",
-      "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-11.2.14.tgz",
-      "integrity": "sha512-3+0F0X4r1WeNOV6VmaMzYnJENPVmLX2/MX3/lugwZPNYKVXl/oGyh/4PB8ktntIj0tnxQuErzqRSeucNStNGRw==",
+      "version": "12.2.16",
+      "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-12.2.16.tgz",
+      "integrity": "sha512-eDOd46Lu+4Nc/UA9q4G1xUTeIT2JXDdpedSRCk1fM+trYUZm7Xy2FZasP3pUSdtz04wt0kV9Mi5i3oCxfqU2Wg==",
       "dev": true
     },
     "@angular/localize": {
-      "version": "11.2.14",
-      "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-11.2.14.tgz",
-      "integrity": "sha512-ssMuquxxqxA98LgEICEO/3JdmSflWxu5rlm/HPo28bnGiZ4IzDamZjJ1cu4S6RgsonJ1drB3Z8wkidXfEYZiWA==",
+      "version": "12.2.16",
+      "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-12.2.16.tgz",
+      "integrity": "sha512-peWauKtqy7XG5OiG9L4uLg/yIMw0b/ipKOiovzpuj+DCghmeuYzle5kjCLvWydFeQqBoIdf2kcJYeskrYCAHfQ==",
       "requires": {
         "@babel/core": "7.8.3",
-        "glob": "7.1.2",
-        "yargs": "^16.2.0"
+        "glob": "7.1.7",
+        "yargs": "^17.0.0"
       },
       "dependencies": {
         "@babel/core": {
@@ -1001,9 +1122,9 @@
           "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
         },
         "glob": {
-          "version": "7.1.2",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
-          "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+          "version": "7.1.7",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+          "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
           "requires": {
             "fs.realpath": "^1.0.0",
             "inflight": "^1.0.4",
@@ -1062,23 +1183,23 @@
           "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
         },
         "yargs": {
-          "version": "16.2.0",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
-          "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+          "version": "17.5.1",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz",
+          "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==",
           "requires": {
             "cliui": "^7.0.2",
             "escalade": "^3.1.1",
             "get-caller-file": "^2.0.5",
             "require-directory": "^2.1.1",
-            "string-width": "^4.2.0",
+            "string-width": "^4.2.3",
             "y18n": "^5.0.5",
-            "yargs-parser": "^20.2.2"
+            "yargs-parser": "^21.0.0"
           }
         },
         "yargs-parser": {
-          "version": "20.2.9",
-          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
-          "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="
+          "version": "21.0.1",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz",
+          "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg=="
         }
       }
     },
@@ -1091,27 +1212,27 @@
       }
     },
     "@angular/platform-browser": {
-      "version": "11.2.14",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-11.2.14.tgz",
-      "integrity": "sha512-fb7b7ss/gRoP8wLAN17W62leMgjynuyjEPU2eUoAAazsG9f2cgM+z3rK29GYncDVyYQxZUZYnjSqvL6GSXx86A==",
+      "version": "12.2.16",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-12.2.16.tgz",
+      "integrity": "sha512-T855ppLeQO6hRHi7lGf5fwPoUVt+c0h2rgkV5jHElc3ylaGnhecmZc6fnWLX4pw82TMJUgUV88CY8JCFabJWwg==",
       "requires": {
-        "tslib": "^2.0.0"
+        "tslib": "^2.2.0"
       }
     },
     "@angular/platform-browser-dynamic": {
-      "version": "11.2.14",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-11.2.14.tgz",
-      "integrity": "sha512-TWTPdFs6iBBcp+/YMsgCRQwdHpWGq8KjeJDJ2tfatGgBD3Gqt2YaHOMST1zPW6RkrmupytTejuVqXzeaKWFxuw==",
+      "version": "12.2.16",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.2.16.tgz",
+      "integrity": "sha512-XGxoACAMW/bc3atiVRpaiYwU4LkobYwVzwlxTT/BxOfsdt8ILb5wU8Fx1TMKNECOQHSGdK0qqhch4pTBZ3cb2g==",
       "requires": {
-        "tslib": "^2.0.0"
+        "tslib": "^2.2.0"
       }
     },
     "@angular/router": {
-      "version": "11.2.14",
-      "resolved": "https://registry.npmjs.org/@angular/router/-/router-11.2.14.tgz",
-      "integrity": "sha512-3aYBmj+zrEL9yf/ntIQxHIYaWShZOBKP3U07X2mX+TPMpGlvHDnR7L6bWhQVZwewzMMz7YVR16ldg50IFuAlfA==",
+      "version": "12.2.16",
+      "resolved": "https://registry.npmjs.org/@angular/router/-/router-12.2.16.tgz",
+      "integrity": "sha512-LuFXSMIvX/VrB4jbYhigG2Y2pGQ9ULsSBUwDWwQCf4kr0eVI37LBJ2Vr74GBEznjgQ0UmWE89E+XYI80UhERTw==",
       "requires": {
-        "tslib": "^2.0.0"
+        "tslib": "^2.2.0"
       }
     },
     "@apidevtools/json-schema-ref-parser": {
@@ -1125,6 +1246,12 @@
         "js-yaml": "^3.13.1"
       }
     },
+    "@assemblyscript/loader": {
+      "version": "0.10.1",
+      "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz",
+      "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==",
+      "dev": true
+    },
     "@auth0/auth0-angular": {
       "version": "1.10.0",
       "resolved": "https://registry.npmjs.org/@auth0/auth0-angular/-/auth0-angular-1.10.0.tgz",
@@ -1182,34 +1309,54 @@
       "dev": true
     },
     "@babel/core": {
-      "version": "7.12.10",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz",
-      "integrity": "sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==",
-      "dev": true,
-      "requires": {
-        "@babel/code-frame": "^7.10.4",
-        "@babel/generator": "^7.12.10",
-        "@babel/helper-module-transforms": "^7.12.1",
-        "@babel/helpers": "^7.12.5",
-        "@babel/parser": "^7.12.10",
-        "@babel/template": "^7.12.7",
-        "@babel/traverse": "^7.12.10",
-        "@babel/types": "^7.12.10",
+      "version": "7.14.8",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.8.tgz",
+      "integrity": "sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.14.5",
+        "@babel/generator": "^7.14.8",
+        "@babel/helper-compilation-targets": "^7.14.5",
+        "@babel/helper-module-transforms": "^7.14.8",
+        "@babel/helpers": "^7.14.8",
+        "@babel/parser": "^7.14.8",
+        "@babel/template": "^7.14.5",
+        "@babel/traverse": "^7.14.8",
+        "@babel/types": "^7.14.8",
         "convert-source-map": "^1.7.0",
         "debug": "^4.1.0",
-        "gensync": "^1.0.0-beta.1",
+        "gensync": "^1.0.0-beta.2",
         "json5": "^2.1.2",
-        "lodash": "^4.17.19",
-        "semver": "^5.4.1",
+        "semver": "^6.3.0",
         "source-map": "^0.5.0"
       },
       "dependencies": {
-        "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+        "@babel/code-frame": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+          "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+          "dev": true,
+          "requires": {
+            "@babel/highlight": "^7.18.6"
+          }
+        },
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
           "dev": true
         },
+        "@babel/highlight": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+          "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "chalk": "^2.0.0",
+            "js-tokens": "^4.0.0"
+          }
+        },
         "source-map": {
           "version": "0.5.7",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
@@ -1229,12 +1376,12 @@
       }
     },
     "@babel/helper-annotate-as-pure": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
-      "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
+      "version": "7.14.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz",
+      "integrity": "sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.18.6"
+        "@babel/types": "^7.14.5"
       }
     },
     "@babel/helper-builder-binary-assignment-operator-visitor": {
@@ -1272,9 +1419,20 @@
         "@babel/helper-optimise-call-expression": "^7.18.6",
         "@babel/helper-replace-supers": "^7.18.6",
         "@babel/helper-split-export-declaration": "^7.18.6"
-      }
-    },
-    "@babel/helper-create-regexp-features-plugin": {
+      },
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
+          "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.18.6"
+          }
+        }
+      }
+    },
+    "@babel/helper-create-regexp-features-plugin": {
       "version": "7.18.6",
       "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz",
       "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==",
@@ -1282,6 +1440,33 @@
       "requires": {
         "@babel/helper-annotate-as-pure": "^7.18.6",
         "regexpu-core": "^5.1.0"
+      },
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
+          "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.18.6"
+          }
+        }
+      }
+    },
+    "@babel/helper-define-polyfill-provider": {
+      "version": "0.2.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.4.tgz",
+      "integrity": "sha512-OrpPZ97s+aPi6h2n1OXzdhVis1SGSsMU2aMHgLcOKfsp4/v1NWpx3CWT3lBj5eeBq9cDkPkh+YCfdF7O12uNDQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-compilation-targets": "^7.13.0",
+        "@babel/helper-module-imports": "^7.12.13",
+        "@babel/helper-plugin-utils": "^7.13.0",
+        "@babel/traverse": "^7.13.0",
+        "debug": "^4.1.1",
+        "lodash.debounce": "^4.0.8",
+        "resolve": "^1.14.2",
+        "semver": "^6.1.2"
       }
     },
     "@babel/helper-environment-visitor": {
@@ -1313,22 +1498,6 @@
       "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
       "requires": {
         "@babel/types": "^7.18.6"
-      },
-      "dependencies": {
-        "@babel/helper-validator-identifier": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
-          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g=="
-        },
-        "@babel/types": {
-          "version": "7.18.8",
-          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.8.tgz",
-          "integrity": "sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw==",
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "to-fast-properties": "^2.0.0"
-          }
-        }
       }
     },
     "@babel/helper-member-expression-to-functions": {
@@ -1398,6 +1567,17 @@
         "@babel/helper-environment-visitor": "^7.18.6",
         "@babel/helper-wrap-function": "^7.18.6",
         "@babel/types": "^7.18.6"
+      },
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
+          "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.18.6"
+          }
+        }
       }
     },
     "@babel/helper-replace-supers": {
@@ -1487,15 +1667,25 @@
       "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.8.tgz",
       "integrity": "sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA=="
     },
-    "@babel/plugin-proposal-async-generator-functions": {
+    "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
       "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz",
-      "integrity": "sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w==",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz",
+      "integrity": "sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw==",
       "dev": true,
       "requires": {
-        "@babel/helper-environment-visitor": "^7.18.6",
         "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/helper-remap-async-to-generator": "^7.18.6",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.18.6",
+        "@babel/plugin-proposal-optional-chaining": "^7.18.6"
+      }
+    },
+    "@babel/plugin-proposal-async-generator-functions": {
+      "version": "7.14.7",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.7.tgz",
+      "integrity": "sha512-RK8Wj7lXLY3bqei69/cc25gwS5puEc3dknoFPFbqfy3XxYQBQFvu4ioWpafMBAB+L9NyptQK4nMOa5Xz16og8Q==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-remap-async-to-generator": "^7.14.5",
         "@babel/plugin-syntax-async-generators": "^7.8.4"
       }
     },
@@ -1509,6 +1699,17 @@
         "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
+    "@babel/plugin-proposal-class-static-block": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz",
+      "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6",
+        "@babel/plugin-syntax-class-static-block": "^7.14.5"
+      }
+    },
     "@babel/plugin-proposal-dynamic-import": {
       "version": "7.18.6",
       "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz",
@@ -1613,6 +1814,29 @@
         "@babel/helper-plugin-utils": "^7.18.6"
       }
     },
+    "@babel/plugin-proposal-private-property-in-object": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz",
+      "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.18.6",
+        "@babel/helper-create-class-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+      },
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
+          "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.18.6"
+          }
+        }
+      }
+    },
     "@babel/plugin-proposal-unicode-property-regex": {
       "version": "7.18.6",
       "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz",
@@ -1641,6 +1865,15 @@
         "@babel/helper-plugin-utils": "^7.12.13"
       }
     },
+    "@babel/plugin-syntax-class-static-block": {
+      "version": "7.14.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+      "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
     "@babel/plugin-syntax-dynamic-import": {
       "version": "7.8.3",
       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
@@ -1722,6 +1955,15 @@
         "@babel/helper-plugin-utils": "^7.8.0"
       }
     },
+    "@babel/plugin-syntax-private-property-in-object": {
+      "version": "7.14.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+      "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
     "@babel/plugin-syntax-top-level-await": {
       "version": "7.14.5",
       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
@@ -1741,14 +1983,14 @@
       }
     },
     "@babel/plugin-transform-async-to-generator": {
-      "version": "7.12.1",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz",
-      "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==",
+      "version": "7.14.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz",
+      "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-imports": "^7.12.1",
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/helper-remap-async-to-generator": "^7.12.1"
+        "@babel/helper-module-imports": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-remap-async-to-generator": "^7.14.5"
       }
     },
     "@babel/plugin-transform-block-scoped-functions": {
@@ -1783,6 +2025,17 @@
         "@babel/helper-replace-supers": "^7.18.6",
         "@babel/helper-split-export-declaration": "^7.18.6",
         "globals": "^11.1.0"
+      },
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
+          "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.18.6"
+          }
+        }
       }
     },
     "@babel/plugin-transform-computed-properties": {
@@ -1991,22 +2244,17 @@
       }
     },
     "@babel/plugin-transform-runtime": {
-      "version": "7.12.10",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.10.tgz",
-      "integrity": "sha512-xOrUfzPxw7+WDm9igMgQCbO3cJKymX7dFdsgRr1eu9n3KjjyU4pptIXbXPseQDquw+W+RuJEJMHKHNsPNNm3CA==",
+      "version": "7.14.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.14.5.tgz",
+      "integrity": "sha512-fPMBhh1AV8ZyneiCIA+wYYUH1arzlXR1UMcApjvchDhfKxhy2r2lReJv8uHEyihi4IFIGlr1Pdx7S5fkESDQsg==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-imports": "^7.12.5",
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "semver": "^5.5.1"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-          "dev": true
-        }
+        "@babel/helper-module-imports": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "babel-plugin-polyfill-corejs2": "^0.2.2",
+        "babel-plugin-polyfill-corejs3": "^0.2.2",
+        "babel-plugin-polyfill-regenerator": "^0.2.2",
+        "semver": "^6.3.0"
       }
     },
     "@babel/plugin-transform-shorthand-properties": {
@@ -2075,85 +2323,84 @@
       }
     },
     "@babel/preset-env": {
-      "version": "7.12.11",
-      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz",
-      "integrity": "sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==",
-      "dev": true,
-      "requires": {
-        "@babel/compat-data": "^7.12.7",
-        "@babel/helper-compilation-targets": "^7.12.5",
-        "@babel/helper-module-imports": "^7.12.5",
-        "@babel/helper-plugin-utils": "^7.10.4",
-        "@babel/helper-validator-option": "^7.12.11",
-        "@babel/plugin-proposal-async-generator-functions": "^7.12.1",
-        "@babel/plugin-proposal-class-properties": "^7.12.1",
-        "@babel/plugin-proposal-dynamic-import": "^7.12.1",
-        "@babel/plugin-proposal-export-namespace-from": "^7.12.1",
-        "@babel/plugin-proposal-json-strings": "^7.12.1",
-        "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1",
-        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
-        "@babel/plugin-proposal-numeric-separator": "^7.12.7",
-        "@babel/plugin-proposal-object-rest-spread": "^7.12.1",
-        "@babel/plugin-proposal-optional-catch-binding": "^7.12.1",
-        "@babel/plugin-proposal-optional-chaining": "^7.12.7",
-        "@babel/plugin-proposal-private-methods": "^7.12.1",
-        "@babel/plugin-proposal-unicode-property-regex": "^7.12.1",
-        "@babel/plugin-syntax-async-generators": "^7.8.0",
-        "@babel/plugin-syntax-class-properties": "^7.12.1",
-        "@babel/plugin-syntax-dynamic-import": "^7.8.0",
+      "version": "7.14.8",
+      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.8.tgz",
+      "integrity": "sha512-a9aOppDU93oArQ51H+B8M1vH+tayZbuBqzjOhntGetZVa+4tTu5jp+XTwqHGG2lxslqomPYVSjIxQkFwXzgnxg==",
+      "dev": true,
+      "requires": {
+        "@babel/compat-data": "^7.14.7",
+        "@babel/helper-compilation-targets": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.14.5",
+        "@babel/helper-validator-option": "^7.14.5",
+        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5",
+        "@babel/plugin-proposal-async-generator-functions": "^7.14.7",
+        "@babel/plugin-proposal-class-properties": "^7.14.5",
+        "@babel/plugin-proposal-class-static-block": "^7.14.5",
+        "@babel/plugin-proposal-dynamic-import": "^7.14.5",
+        "@babel/plugin-proposal-export-namespace-from": "^7.14.5",
+        "@babel/plugin-proposal-json-strings": "^7.14.5",
+        "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5",
+        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5",
+        "@babel/plugin-proposal-numeric-separator": "^7.14.5",
+        "@babel/plugin-proposal-object-rest-spread": "^7.14.7",
+        "@babel/plugin-proposal-optional-catch-binding": "^7.14.5",
+        "@babel/plugin-proposal-optional-chaining": "^7.14.5",
+        "@babel/plugin-proposal-private-methods": "^7.14.5",
+        "@babel/plugin-proposal-private-property-in-object": "^7.14.5",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.14.5",
+        "@babel/plugin-syntax-async-generators": "^7.8.4",
+        "@babel/plugin-syntax-class-properties": "^7.12.13",
+        "@babel/plugin-syntax-class-static-block": "^7.14.5",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
         "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
-        "@babel/plugin-syntax-json-strings": "^7.8.0",
+        "@babel/plugin-syntax-json-strings": "^7.8.3",
         "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
-        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
         "@babel/plugin-syntax-numeric-separator": "^7.10.4",
-        "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
-        "@babel/plugin-syntax-optional-catch-binding": "^7.8.0",
-        "@babel/plugin-syntax-optional-chaining": "^7.8.0",
-        "@babel/plugin-syntax-top-level-await": "^7.12.1",
-        "@babel/plugin-transform-arrow-functions": "^7.12.1",
-        "@babel/plugin-transform-async-to-generator": "^7.12.1",
-        "@babel/plugin-transform-block-scoped-functions": "^7.12.1",
-        "@babel/plugin-transform-block-scoping": "^7.12.11",
-        "@babel/plugin-transform-classes": "^7.12.1",
-        "@babel/plugin-transform-computed-properties": "^7.12.1",
-        "@babel/plugin-transform-destructuring": "^7.12.1",
-        "@babel/plugin-transform-dotall-regex": "^7.12.1",
-        "@babel/plugin-transform-duplicate-keys": "^7.12.1",
-        "@babel/plugin-transform-exponentiation-operator": "^7.12.1",
-        "@babel/plugin-transform-for-of": "^7.12.1",
-        "@babel/plugin-transform-function-name": "^7.12.1",
-        "@babel/plugin-transform-literals": "^7.12.1",
-        "@babel/plugin-transform-member-expression-literals": "^7.12.1",
-        "@babel/plugin-transform-modules-amd": "^7.12.1",
-        "@babel/plugin-transform-modules-commonjs": "^7.12.1",
-        "@babel/plugin-transform-modules-systemjs": "^7.12.1",
-        "@babel/plugin-transform-modules-umd": "^7.12.1",
-        "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1",
-        "@babel/plugin-transform-new-target": "^7.12.1",
-        "@babel/plugin-transform-object-super": "^7.12.1",
-        "@babel/plugin-transform-parameters": "^7.12.1",
-        "@babel/plugin-transform-property-literals": "^7.12.1",
-        "@babel/plugin-transform-regenerator": "^7.12.1",
-        "@babel/plugin-transform-reserved-words": "^7.12.1",
-        "@babel/plugin-transform-shorthand-properties": "^7.12.1",
-        "@babel/plugin-transform-spread": "^7.12.1",
-        "@babel/plugin-transform-sticky-regex": "^7.12.7",
-        "@babel/plugin-transform-template-literals": "^7.12.1",
-        "@babel/plugin-transform-typeof-symbol": "^7.12.10",
-        "@babel/plugin-transform-unicode-escapes": "^7.12.1",
-        "@babel/plugin-transform-unicode-regex": "^7.12.1",
-        "@babel/preset-modules": "^0.1.3",
-        "@babel/types": "^7.12.11",
-        "core-js-compat": "^3.8.0",
-        "semver": "^5.5.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-          "dev": true
-        }
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+        "@babel/plugin-syntax-top-level-await": "^7.14.5",
+        "@babel/plugin-transform-arrow-functions": "^7.14.5",
+        "@babel/plugin-transform-async-to-generator": "^7.14.5",
+        "@babel/plugin-transform-block-scoped-functions": "^7.14.5",
+        "@babel/plugin-transform-block-scoping": "^7.14.5",
+        "@babel/plugin-transform-classes": "^7.14.5",
+        "@babel/plugin-transform-computed-properties": "^7.14.5",
+        "@babel/plugin-transform-destructuring": "^7.14.7",
+        "@babel/plugin-transform-dotall-regex": "^7.14.5",
+        "@babel/plugin-transform-duplicate-keys": "^7.14.5",
+        "@babel/plugin-transform-exponentiation-operator": "^7.14.5",
+        "@babel/plugin-transform-for-of": "^7.14.5",
+        "@babel/plugin-transform-function-name": "^7.14.5",
+        "@babel/plugin-transform-literals": "^7.14.5",
+        "@babel/plugin-transform-member-expression-literals": "^7.14.5",
+        "@babel/plugin-transform-modules-amd": "^7.14.5",
+        "@babel/plugin-transform-modules-commonjs": "^7.14.5",
+        "@babel/plugin-transform-modules-systemjs": "^7.14.5",
+        "@babel/plugin-transform-modules-umd": "^7.14.5",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.7",
+        "@babel/plugin-transform-new-target": "^7.14.5",
+        "@babel/plugin-transform-object-super": "^7.14.5",
+        "@babel/plugin-transform-parameters": "^7.14.5",
+        "@babel/plugin-transform-property-literals": "^7.14.5",
+        "@babel/plugin-transform-regenerator": "^7.14.5",
+        "@babel/plugin-transform-reserved-words": "^7.14.5",
+        "@babel/plugin-transform-shorthand-properties": "^7.14.5",
+        "@babel/plugin-transform-spread": "^7.14.6",
+        "@babel/plugin-transform-sticky-regex": "^7.14.5",
+        "@babel/plugin-transform-template-literals": "^7.14.5",
+        "@babel/plugin-transform-typeof-symbol": "^7.14.5",
+        "@babel/plugin-transform-unicode-escapes": "^7.14.5",
+        "@babel/plugin-transform-unicode-regex": "^7.14.5",
+        "@babel/preset-modules": "^0.1.4",
+        "@babel/types": "^7.14.8",
+        "babel-plugin-polyfill-corejs2": "^0.2.2",
+        "babel-plugin-polyfill-corejs3": "^0.2.2",
+        "babel-plugin-polyfill-regenerator": "^0.2.2",
+        "core-js-compat": "^3.15.0",
+        "semver": "^6.3.0"
       }
     },
     "@babel/preset-modules": {
@@ -2170,9 +2417,9 @@
       }
     },
     "@babel/runtime": {
-      "version": "7.12.5",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz",
-      "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==",
+      "version": "7.14.8",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.8.tgz",
+      "integrity": "sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg==",
       "dev": true,
       "requires": {
         "regenerator-runtime": "^0.13.4"
@@ -2277,6 +2524,12 @@
       "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
       "dev": true
     },
+    "@csstools/convert-colors": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz",
+      "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==",
+      "dev": true
+    },
     "@dabh/diagnostics": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz",
@@ -2289,9 +2542,9 @@
       }
     },
     "@discoveryjs/json-ext": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz",
-      "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==",
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz",
+      "integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==",
       "dev": true
     },
     "@firebase/analytics": {
@@ -2923,15 +3176,10 @@
       "dev": true
     },
     "@ngtools/webpack": {
-      "version": "11.2.19",
-      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-11.2.19.tgz",
-      "integrity": "sha512-HwLHA6ZrLSk7VHm5Bv3a8ljM6uU8+/670u2fKfMFwM4UQ42+yTFihwfFKLWQIcawBOlVCaUosr6o1xmeSquAqA==",
-      "dev": true,
-      "requires": {
-        "@angular-devkit/core": "11.2.19",
-        "enhanced-resolve": "5.7.0",
-        "webpack-sources": "2.2.0"
-      }
+      "version": "12.2.17",
+      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.2.17.tgz",
+      "integrity": "sha512-uaS+2YZgPDW3VmUuwh4/yfIFV1KRVGWefc6xLWIqKRKs6mlRYs65m3ib9dX7CTS4kQMCbhxkxMbpBO2yXlzfvA==",
+      "dev": true
     },
     "@nodelib/fs.scandir": {
       "version": "2.1.5",
@@ -2959,12 +3207,6 @@
         "fastq": "^1.6.0"
       }
     },
-    "@npmcli/ci-detect": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz",
-      "integrity": "sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q==",
-      "dev": true
-    },
     "@npmcli/git": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz",
@@ -2981,15 +3223,6 @@
         "which": "^2.0.2"
       },
       "dependencies": {
-        "hosted-git-info": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
-          "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        },
         "lru-cache": {
           "version": "6.0.0",
           "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -3005,39 +3238,6 @@
           "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
           "dev": true
         },
-        "npm-package-arg": {
-          "version": "8.1.5",
-          "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz",
-          "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==",
-          "dev": true,
-          "requires": {
-            "hosted-git-info": "^4.0.1",
-            "semver": "^7.3.4",
-            "validate-npm-package-name": "^3.0.0"
-          }
-        },
-        "npm-pick-manifest": {
-          "version": "6.1.1",
-          "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz",
-          "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==",
-          "dev": true,
-          "requires": {
-            "npm-install-checks": "^4.0.0",
-            "npm-normalize-package-bin": "^1.0.1",
-            "npm-package-arg": "^8.1.2",
-            "semver": "^7.3.4"
-          }
-        },
-        "promise-retry": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
-          "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
-          "dev": true,
-          "requires": {
-            "err-code": "^2.0.2",
-            "retry": "^0.12.0"
-          }
-        },
         "semver": {
           "version": "7.3.7",
           "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
@@ -3111,114 +3311,65 @@
       }
     },
     "@npmcli/run-script": {
-      "version": "1.8.6",
-      "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz",
-      "integrity": "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-2.0.0.tgz",
+      "integrity": "sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig==",
       "dev": true,
       "requires": {
         "@npmcli/node-gyp": "^1.0.2",
         "@npmcli/promise-spawn": "^1.3.2",
-        "node-gyp": "^7.1.0",
+        "node-gyp": "^8.2.0",
         "read-package-json-fast": "^2.0.1"
       },
       "dependencies": {
-        "read-package-json-fast": {
-          "version": "2.0.3",
-          "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz",
-          "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==",
+        "ansi-regex": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+          "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+          "dev": true
+        },
+        "are-we-there-yet": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz",
+          "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==",
           "dev": true,
           "requires": {
-            "json-parse-even-better-errors": "^2.3.0",
-            "npm-normalize-package-bin": "^1.0.1"
+            "delegates": "^1.0.0",
+            "readable-stream": "^3.6.0"
           }
-        }
-      }
-    },
-    "@protobufjs/aspromise": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
-      "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78="
-    },
-    "@protobufjs/base64": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
-      "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
-    },
-    "@protobufjs/codegen": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
-      "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
-    },
-    "@protobufjs/eventemitter": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
-      "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A="
-    },
-    "@protobufjs/fetch": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
-      "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=",
-      "requires": {
-        "@protobufjs/aspromise": "^1.1.1",
-        "@protobufjs/inquire": "^1.1.0"
-      }
-    },
-    "@protobufjs/float": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
-      "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E="
-    },
-    "@protobufjs/inquire": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
-      "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik="
-    },
-    "@protobufjs/path": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
-      "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0="
-    },
-    "@protobufjs/pool": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
-      "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q="
-    },
-    "@protobufjs/utf8": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
-      "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="
-    },
-    "@schematics/angular": {
-      "version": "11.2.19",
-      "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-11.2.19.tgz",
-      "integrity": "sha512-cZys7nRo/CI81EtPu4VJiAyv53gPfIfLteykhrTQpAp9AZK9UuRHauiJq7BhHRAUEc3z148xjSQgMvEu7/vAuA==",
-      "dev": true,
-      "requires": {
-        "@angular-devkit/core": "11.2.19",
-        "@angular-devkit/schematics": "11.2.19",
-        "jsonc-parser": "3.0.0"
-      }
-    },
-    "@schematics/update": {
-      "version": "0.1102.19",
-      "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.1102.19.tgz",
-      "integrity": "sha512-NdWzL6n/ZEgnposWdAPo8PTOn+8Baf/J9isjF+QOUUMbpZY/+QfLpej7eDAlcQ2Begiz/selMsnod70r9PYZUg==",
-      "dev": true,
-      "requires": {
-        "@angular-devkit/core": "11.2.19",
-        "@angular-devkit/schematics": "11.2.19",
-        "@yarnpkg/lockfile": "1.1.0",
-        "ini": "2.0.0",
-        "npm-package-arg": "^8.0.0",
-        "pacote": "11.2.4",
-        "semver": "7.3.4",
-        "semver-intersect": "1.4.0"
-      },
-      "dependencies": {
-        "ini": {
+        },
+        "chownr": {
           "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
-          "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
+          "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+          "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+          "dev": true
+        },
+        "gauge": {
+          "version": "4.0.4",
+          "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz",
+          "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==",
+          "dev": true,
+          "requires": {
+            "aproba": "^1.0.3 || ^2.0.0",
+            "color-support": "^1.1.3",
+            "console-control-strings": "^1.1.0",
+            "has-unicode": "^2.0.1",
+            "signal-exit": "^3.0.7",
+            "string-width": "^4.2.3",
+            "strip-ansi": "^6.0.1",
+            "wide-align": "^1.1.5"
+          }
+        },
+        "graceful-fs": {
+          "version": "4.2.10",
+          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+          "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
           "dev": true
         },
         "lru-cache": {
@@ -3230,15 +3381,204 @@
             "yallist": "^4.0.0"
           }
         },
-        "semver": {
-          "version": "7.3.4",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
-          "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
+        "minizlib": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+          "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
           "dev": true,
           "requires": {
-            "lru-cache": "^6.0.0"
+            "minipass": "^3.0.0",
+            "yallist": "^4.0.0"
           }
-        }
+        },
+        "mkdirp": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+          "dev": true
+        },
+        "node-gyp": {
+          "version": "8.4.1",
+          "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz",
+          "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==",
+          "dev": true,
+          "requires": {
+            "env-paths": "^2.2.0",
+            "glob": "^7.1.4",
+            "graceful-fs": "^4.2.6",
+            "make-fetch-happen": "^9.1.0",
+            "nopt": "^5.0.0",
+            "npmlog": "^6.0.0",
+            "rimraf": "^3.0.2",
+            "semver": "^7.3.5",
+            "tar": "^6.1.2",
+            "which": "^2.0.2"
+          }
+        },
+        "npmlog": {
+          "version": "6.0.2",
+          "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz",
+          "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==",
+          "dev": true,
+          "requires": {
+            "are-we-there-yet": "^3.0.0",
+            "console-control-strings": "^1.1.0",
+            "gauge": "^4.0.3",
+            "set-blocking": "^2.0.0"
+          }
+        },
+        "readable-stream": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+          "dev": true,
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        },
+        "rimraf": {
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+          "dev": true,
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        },
+        "semver": {
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        },
+        "signal-exit": {
+          "version": "3.0.7",
+          "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+          "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+          "dev": true
+        },
+        "string-width": {
+          "version": "4.2.3",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.1"
+          }
+        },
+        "strip-ansi": {
+          "version": "6.0.1",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+          "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^5.0.1"
+          }
+        },
+        "tar": {
+          "version": "6.1.11",
+          "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz",
+          "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==",
+          "dev": true,
+          "requires": {
+            "chownr": "^2.0.0",
+            "fs-minipass": "^2.0.0",
+            "minipass": "^3.0.0",
+            "minizlib": "^2.1.1",
+            "mkdirp": "^1.0.3",
+            "yallist": "^4.0.0"
+          }
+        },
+        "which": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+          "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+          "dev": true,
+          "requires": {
+            "isexe": "^2.0.0"
+          }
+        },
+        "wide-align": {
+          "version": "1.1.5",
+          "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
+          "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
+          "dev": true,
+          "requires": {
+            "string-width": "^1.0.2 || 2 || 3 || 4"
+          }
+        }
+      }
+    },
+    "@protobufjs/aspromise": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
+      "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78="
+    },
+    "@protobufjs/base64": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
+      "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
+    },
+    "@protobufjs/codegen": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
+      "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
+    },
+    "@protobufjs/eventemitter": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
+      "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A="
+    },
+    "@protobufjs/fetch": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
+      "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=",
+      "requires": {
+        "@protobufjs/aspromise": "^1.1.1",
+        "@protobufjs/inquire": "^1.1.0"
+      }
+    },
+    "@protobufjs/float": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
+      "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E="
+    },
+    "@protobufjs/inquire": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
+      "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik="
+    },
+    "@protobufjs/path": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
+      "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0="
+    },
+    "@protobufjs/pool": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
+      "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q="
+    },
+    "@protobufjs/utf8": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
+      "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="
+    },
+    "@schematics/angular": {
+      "version": "12.2.17",
+      "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.17.tgz",
+      "integrity": "sha512-HM/4KkQu944KL5ebhIyy1Ot5OV6prHNW7kmGeMVeQefLSbbfMQCHLa1psB9UU9BoahwGhUBvleLylNSitOBCgg==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/core": "12.2.17",
+        "@angular-devkit/schematics": "12.2.17",
+        "jsonc-parser": "3.0.0"
       }
     },
     "@sindresorhus/is": {
@@ -3295,6 +3635,32 @@
         "@types/node": "*"
       }
     },
+    "@types/eslint": {
+      "version": "8.4.5",
+      "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz",
+      "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==",
+      "dev": true,
+      "requires": {
+        "@types/estree": "*",
+        "@types/json-schema": "*"
+      }
+    },
+    "@types/eslint-scope": {
+      "version": "3.7.4",
+      "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz",
+      "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==",
+      "dev": true,
+      "requires": {
+        "@types/eslint": "*",
+        "@types/estree": "*"
+      }
+    },
+    "@types/estree": {
+      "version": "0.0.50",
+      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz",
+      "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==",
+      "dev": true
+    },
     "@types/fs-extra": {
       "version": "8.1.1",
       "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.1.tgz",
@@ -3394,177 +3760,148 @@
       }
     },
     "@webassemblyjs/ast": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
-      "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==",
+      "version": "1.11.1",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz",
+      "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/helper-module-context": "1.9.0",
-        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
-        "@webassemblyjs/wast-parser": "1.9.0"
+        "@webassemblyjs/helper-numbers": "1.11.1",
+        "@webassemblyjs/helper-wasm-bytecode": "1.11.1"
       }
     },
     "@webassemblyjs/floating-point-hex-parser": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz",
-      "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==",
+      "version": "1.11.1",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz",
+      "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==",
       "dev": true
     },
     "@webassemblyjs/helper-api-error": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz",
-      "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==",
+      "version": "1.11.1",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz",
+      "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==",
       "dev": true
     },
     "@webassemblyjs/helper-buffer": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz",
-      "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==",
-      "dev": true
-    },
-    "@webassemblyjs/helper-code-frame": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz",
-      "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==",
-      "dev": true,
-      "requires": {
-        "@webassemblyjs/wast-printer": "1.9.0"
-      }
-    },
-    "@webassemblyjs/helper-fsm": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz",
-      "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==",
+      "version": "1.11.1",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz",
+      "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==",
       "dev": true
     },
-    "@webassemblyjs/helper-module-context": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz",
-      "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==",
+    "@webassemblyjs/helper-numbers": {
+      "version": "1.11.1",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz",
+      "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.9.0"
+        "@webassemblyjs/floating-point-hex-parser": "1.11.1",
+        "@webassemblyjs/helper-api-error": "1.11.1",
+        "@xtuc/long": "4.2.2"
       }
     },
     "@webassemblyjs/helper-wasm-bytecode": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz",
-      "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==",
+      "version": "1.11.1",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz",
+      "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==",
       "dev": true
     },
     "@webassemblyjs/helper-wasm-section": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz",
-      "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==",
+      "version": "1.11.1",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz",
+      "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.9.0",
-        "@webassemblyjs/helper-buffer": "1.9.0",
-        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
-        "@webassemblyjs/wasm-gen": "1.9.0"
+        "@webassemblyjs/ast": "1.11.1",
+        "@webassemblyjs/helper-buffer": "1.11.1",
+        "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
+        "@webassemblyjs/wasm-gen": "1.11.1"
       }
     },
     "@webassemblyjs/ieee754": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz",
-      "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==",
+      "version": "1.11.1",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz",
+      "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==",
       "dev": true,
       "requires": {
         "@xtuc/ieee754": "^1.2.0"
       }
     },
     "@webassemblyjs/leb128": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz",
-      "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==",
+      "version": "1.11.1",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz",
+      "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==",
       "dev": true,
       "requires": {
         "@xtuc/long": "4.2.2"
       }
     },
     "@webassemblyjs/utf8": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz",
-      "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==",
+      "version": "1.11.1",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz",
+      "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==",
       "dev": true
     },
     "@webassemblyjs/wasm-edit": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz",
-      "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==",
+      "version": "1.11.1",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz",
+      "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.9.0",
-        "@webassemblyjs/helper-buffer": "1.9.0",
-        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
-        "@webassemblyjs/helper-wasm-section": "1.9.0",
-        "@webassemblyjs/wasm-gen": "1.9.0",
-        "@webassemblyjs/wasm-opt": "1.9.0",
-        "@webassemblyjs/wasm-parser": "1.9.0",
-        "@webassemblyjs/wast-printer": "1.9.0"
+        "@webassemblyjs/ast": "1.11.1",
+        "@webassemblyjs/helper-buffer": "1.11.1",
+        "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
+        "@webassemblyjs/helper-wasm-section": "1.11.1",
+        "@webassemblyjs/wasm-gen": "1.11.1",
+        "@webassemblyjs/wasm-opt": "1.11.1",
+        "@webassemblyjs/wasm-parser": "1.11.1",
+        "@webassemblyjs/wast-printer": "1.11.1"
       }
     },
     "@webassemblyjs/wasm-gen": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz",
-      "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==",
+      "version": "1.11.1",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz",
+      "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.9.0",
-        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
-        "@webassemblyjs/ieee754": "1.9.0",
-        "@webassemblyjs/leb128": "1.9.0",
-        "@webassemblyjs/utf8": "1.9.0"
+        "@webassemblyjs/ast": "1.11.1",
+        "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
+        "@webassemblyjs/ieee754": "1.11.1",
+        "@webassemblyjs/leb128": "1.11.1",
+        "@webassemblyjs/utf8": "1.11.1"
       }
     },
     "@webassemblyjs/wasm-opt": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz",
-      "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==",
+      "version": "1.11.1",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz",
+      "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.9.0",
-        "@webassemblyjs/helper-buffer": "1.9.0",
-        "@webassemblyjs/wasm-gen": "1.9.0",
-        "@webassemblyjs/wasm-parser": "1.9.0"
+        "@webassemblyjs/ast": "1.11.1",
+        "@webassemblyjs/helper-buffer": "1.11.1",
+        "@webassemblyjs/wasm-gen": "1.11.1",
+        "@webassemblyjs/wasm-parser": "1.11.1"
       }
     },
     "@webassemblyjs/wasm-parser": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz",
-      "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==",
-      "dev": true,
-      "requires": {
-        "@webassemblyjs/ast": "1.9.0",
-        "@webassemblyjs/helper-api-error": "1.9.0",
-        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
-        "@webassemblyjs/ieee754": "1.9.0",
-        "@webassemblyjs/leb128": "1.9.0",
-        "@webassemblyjs/utf8": "1.9.0"
-      }
-    },
-    "@webassemblyjs/wast-parser": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz",
-      "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==",
+      "version": "1.11.1",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz",
+      "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.9.0",
-        "@webassemblyjs/floating-point-hex-parser": "1.9.0",
-        "@webassemblyjs/helper-api-error": "1.9.0",
-        "@webassemblyjs/helper-code-frame": "1.9.0",
-        "@webassemblyjs/helper-fsm": "1.9.0",
-        "@xtuc/long": "4.2.2"
+        "@webassemblyjs/ast": "1.11.1",
+        "@webassemblyjs/helper-api-error": "1.11.1",
+        "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
+        "@webassemblyjs/ieee754": "1.11.1",
+        "@webassemblyjs/leb128": "1.11.1",
+        "@webassemblyjs/utf8": "1.11.1"
       }
     },
     "@webassemblyjs/wast-printer": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz",
-      "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==",
+      "version": "1.11.1",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz",
+      "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.9.0",
-        "@webassemblyjs/wast-parser": "1.9.0",
+        "@webassemblyjs/ast": "1.11.1",
         "@xtuc/long": "4.2.2"
       }
     },
@@ -3632,9 +3969,15 @@
       }
     },
     "acorn": {
-      "version": "6.4.2",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
-      "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
+      "version": "8.7.1",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz",
+      "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==",
+      "dev": true
+    },
+    "acorn-import-assertions": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
+      "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
       "dev": true
     },
     "adjust-sourcemap-loader": {
@@ -3684,15 +4027,23 @@
       }
     },
     "ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+      "version": "8.6.2",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz",
+      "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==",
       "dev": true,
       "requires": {
         "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
+        "json-schema-traverse": "^1.0.0",
+        "require-from-string": "^2.0.2",
         "uri-js": "^4.2.2"
+      },
+      "dependencies": {
+        "json-schema-traverse": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+          "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+          "dev": true
+        }
       }
     },
     "ajv-errors": {
@@ -3701,6 +4052,15 @@
       "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
       "dev": true
     },
+    "ajv-formats": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz",
+      "integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==",
+      "dev": true,
+      "requires": {
+        "ajv": "^8.0.0"
+      }
+    },
     "ajv-keywords": {
       "version": "3.5.2",
       "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
@@ -3889,6 +4249,7 @@
       "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
       "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
       "dev": true,
+      "optional": true,
       "requires": {
         "delegates": "^1.0.0",
         "readable-stream": "^2.0.6"
@@ -3985,53 +4346,6 @@
         "safer-buffer": "~2.1.0"
       }
     },
-    "asn1.js": {
-      "version": "5.4.1",
-      "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
-      "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
-      "dev": true,
-      "requires": {
-        "bn.js": "^4.0.0",
-        "inherits": "^2.0.1",
-        "minimalistic-assert": "^1.0.0",
-        "safer-buffer": "^2.1.0"
-      },
-      "dependencies": {
-        "bn.js": {
-          "version": "4.12.0",
-          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-          "dev": true
-        }
-      }
-    },
-    "assert": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
-      "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
-      "dev": true,
-      "requires": {
-        "object-assign": "^4.1.1",
-        "util": "0.10.3"
-      },
-      "dependencies": {
-        "inherits": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
-          "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==",
-          "dev": true
-        },
-        "util": {
-          "version": "0.10.3",
-          "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
-          "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==",
-          "dev": true,
-          "requires": {
-            "inherits": "2.0.1"
-          }
-        }
-      }
-    },
     "assert-plus": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
@@ -4084,17 +4398,42 @@
       "dev": true
     },
     "autoprefixer": {
-      "version": "10.2.4",
-      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.2.4.tgz",
-      "integrity": "sha512-DCCdUQiMD+P/as8m3XkeTUkUKuuRqLGcwD0nll7wevhqoJfMRpJlkFd1+MQh1pvupjiQuip42lc/VFvfUTMSKw==",
+      "version": "9.8.8",
+      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz",
+      "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==",
       "dev": true,
       "requires": {
-        "browserslist": "^4.16.1",
-        "caniuse-lite": "^1.0.30001181",
-        "colorette": "^1.2.1",
-        "fraction.js": "^4.0.13",
+        "browserslist": "^4.12.0",
+        "caniuse-lite": "^1.0.30001109",
         "normalize-range": "^0.1.2",
+        "num2fraction": "^1.2.2",
+        "picocolors": "^0.2.1",
+        "postcss": "^7.0.32",
         "postcss-value-parser": "^4.1.0"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
     "aws-sign2": {
@@ -4170,18 +4509,48 @@
         "object.assign": "^4.1.0"
       }
     },
-    "balanced-match": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
-      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+    "babel-plugin-polyfill-corejs2": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.3.tgz",
+      "integrity": "sha512-NDZ0auNRzmAfE1oDDPW2JhzIMXUk+FFe2ICejmt5T4ocKgiQx3e0VCRx9NCAidcMtL2RUZaWtXnmjTCkx0tcbA==",
+      "dev": true,
+      "requires": {
+        "@babel/compat-data": "^7.13.11",
+        "@babel/helper-define-polyfill-provider": "^0.2.4",
+        "semver": "^6.1.1"
+      }
     },
-    "base": {
-      "version": "0.11.2",
-      "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
-      "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+    "babel-plugin-polyfill-corejs3": {
+      "version": "0.2.5",
+      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz",
+      "integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==",
       "dev": true,
       "requires": {
-        "cache-base": "^1.0.1",
+        "@babel/helper-define-polyfill-provider": "^0.2.2",
+        "core-js-compat": "^3.16.2"
+      }
+    },
+    "babel-plugin-polyfill-regenerator": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.3.tgz",
+      "integrity": "sha512-JVE78oRZPKFIeUqFGrSORNzQnrDwZR16oiWeGM8ZyjBn2XAT5OjP+wXx5ESuo33nUsFUEJYjtklnsKbxW5L+7g==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-define-polyfill-provider": "^0.2.4"
+      }
+    },
+    "balanced-match": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+    },
+    "base": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+      "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+      "dev": true,
+      "requires": {
+        "cache-base": "^1.0.1",
         "class-utils": "^0.3.5",
         "component-emitter": "^1.2.1",
         "define-property": "^1.0.0",
@@ -4304,6 +4673,16 @@
       "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
       "dev": true
     },
+    "bindings": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
+      "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "file-uri-to-path": "1.0.0"
+      }
+    },
     "bl": {
       "version": "4.1.0",
       "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
@@ -4353,18 +4732,6 @@
         "minimist": "^1.2.0"
       }
     },
-    "bluebird": {
-      "version": "3.7.2",
-      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
-      "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
-      "dev": true
-    },
-    "bn.js": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
-      "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
-      "dev": true
-    },
     "body-parser": {
       "version": "1.19.0",
       "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
@@ -4554,12 +4921,6 @@
         "fill-range": "^7.0.1"
       }
     },
-    "brorand": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
-      "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==",
-      "dev": true
-    },
     "browser-tabs-lock": {
       "version": "1.2.15",
       "resolved": "https://registry.npmjs.org/browser-tabs-lock/-/browser-tabs-lock-1.2.15.tgz",
@@ -4575,98 +4936,6 @@
         }
       }
     },
-    "browserify-aes": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
-      "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
-      "dev": true,
-      "requires": {
-        "buffer-xor": "^1.0.3",
-        "cipher-base": "^1.0.0",
-        "create-hash": "^1.1.0",
-        "evp_bytestokey": "^1.0.3",
-        "inherits": "^2.0.1",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "browserify-cipher": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
-      "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
-      "dev": true,
-      "requires": {
-        "browserify-aes": "^1.0.4",
-        "browserify-des": "^1.0.0",
-        "evp_bytestokey": "^1.0.0"
-      }
-    },
-    "browserify-des": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
-      "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
-      "dev": true,
-      "requires": {
-        "cipher-base": "^1.0.1",
-        "des.js": "^1.0.0",
-        "inherits": "^2.0.1",
-        "safe-buffer": "^5.1.2"
-      }
-    },
-    "browserify-rsa": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
-      "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
-      "dev": true,
-      "requires": {
-        "bn.js": "^5.0.0",
-        "randombytes": "^2.0.1"
-      }
-    },
-    "browserify-sign": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz",
-      "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
-      "dev": true,
-      "requires": {
-        "bn.js": "^5.1.1",
-        "browserify-rsa": "^4.0.1",
-        "create-hash": "^1.2.0",
-        "create-hmac": "^1.1.7",
-        "elliptic": "^6.5.3",
-        "inherits": "^2.0.4",
-        "parse-asn1": "^5.1.5",
-        "readable-stream": "^3.6.0",
-        "safe-buffer": "^5.2.0"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "3.6.0",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-          "dev": true,
-          "requires": {
-            "inherits": "^2.0.3",
-            "string_decoder": "^1.1.1",
-            "util-deprecate": "^1.0.1"
-          }
-        },
-        "safe-buffer": {
-          "version": "5.2.1",
-          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-          "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-          "dev": true
-        }
-      }
-    },
-    "browserify-zlib": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
-      "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
-      "dev": true,
-      "requires": {
-        "pako": "~1.0.5"
-      }
-    },
     "browserslist": {
       "version": "4.21.1",
       "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz",
@@ -4688,17 +4957,6 @@
         "https-proxy-agent": "^2.2.1"
       }
     },
-    "buffer": {
-      "version": "4.9.2",
-      "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
-      "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
-      "dev": true,
-      "requires": {
-        "base64-js": "^1.0.2",
-        "ieee754": "^1.1.4",
-        "isarray": "^1.0.0"
-      }
-    },
     "buffer-crc32": {
       "version": "0.2.13",
       "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
@@ -4728,12 +4986,6 @@
       "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==",
       "dev": true
     },
-    "buffer-xor": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
-      "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==",
-      "dev": true
-    },
     "buffers": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
@@ -4746,12 +4998,6 @@
       "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==",
       "dev": true
     },
-    "builtin-status-codes": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
-      "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==",
-      "dev": true
-    },
     "builtins": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
@@ -4765,9 +5011,9 @@
       "dev": true
     },
     "cacache": {
-      "version": "15.0.5",
-      "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz",
-      "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==",
+      "version": "15.2.0",
+      "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.2.0.tgz",
+      "integrity": "sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw==",
       "dev": true,
       "requires": {
         "@npmcli/move-file": "^1.0.1",
@@ -4784,7 +5030,7 @@
         "p-map": "^4.0.0",
         "promise-inflight": "^1.0.1",
         "rimraf": "^3.0.2",
-        "ssri": "^8.0.0",
+        "ssri": "^8.0.1",
         "tar": "^6.0.2",
         "unique-filename": "^1.1.1"
       },
@@ -5044,16 +5290,6 @@
       "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
       "dev": true
     },
-    "cipher-base": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
-      "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.1",
-        "safe-buffer": "^5.0.1"
-      }
-    },
     "circular-dependency-plugin": {
       "version": "5.2.2",
       "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz",
@@ -5252,7 +5488,8 @@
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
       "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
-      "dev": true
+      "dev": true,
+      "optional": true
     },
     "codelyzer": {
       "version": "6.0.2",
@@ -5305,6 +5542,12 @@
           "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
           "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
           "dev": true
+        },
+        "zone.js": {
+          "version": "0.10.3",
+          "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz",
+          "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==",
+          "dev": true
         }
       }
     },
@@ -5341,6 +5584,12 @@
         "simple-swizzle": "^0.2.2"
       }
     },
+    "color-support": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
+      "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+      "dev": true
+    },
     "colord": {
       "version": "2.9.2",
       "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz",
@@ -5483,18 +5732,6 @@
       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
       "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
     },
-    "concat-stream": {
-      "version": "1.6.2",
-      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
-      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
-      "dev": true,
-      "requires": {
-        "buffer-from": "^1.0.0",
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.2.2",
-        "typedarray": "^0.0.6"
-      }
-    },
     "configstore": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
@@ -5555,24 +5792,12 @@
       "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
       "dev": true
     },
-    "console-browserify": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
-      "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
-      "dev": true
-    },
     "console-control-strings": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
       "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
       "dev": true
     },
-    "constants-browserify": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
-      "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==",
-      "dev": true
-    },
     "content-disposition": {
       "version": "0.5.3",
       "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
@@ -5617,31 +5842,6 @@
         "is-what": "^3.14.1"
       }
     },
-    "copy-concurrently": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
-      "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
-      "dev": true,
-      "requires": {
-        "aproba": "^1.1.1",
-        "fs-write-stream-atomic": "^1.0.8",
-        "iferr": "^0.1.5",
-        "mkdirp": "^0.5.1",
-        "rimraf": "^2.5.4",
-        "run-queue": "^1.0.0"
-      },
-      "dependencies": {
-        "rimraf": {
-          "version": "2.7.1",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-          "dev": true,
-          "requires": {
-            "glob": "^7.1.3"
-          }
-        }
-      }
-    },
     "copy-descriptor": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
@@ -5649,24 +5849,32 @@
       "dev": true
     },
     "copy-webpack-plugin": {
-      "version": "6.3.2",
-      "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.3.2.tgz",
-      "integrity": "sha512-MgJ1uouLIbDg4ST1GzqrGQyKoXY5iPqi6fghFqarijam7FQcBa/r6Rg0VkoIuzx75Xq8iAMghyOueMkWUQ5OaA==",
+      "version": "9.0.1",
+      "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz",
+      "integrity": "sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw==",
       "dev": true,
       "requires": {
-        "cacache": "^15.0.5",
-        "fast-glob": "^3.2.4",
-        "find-cache-dir": "^3.3.1",
-        "glob-parent": "^5.1.1",
-        "globby": "^11.0.1",
-        "loader-utils": "^2.0.0",
+        "fast-glob": "^3.2.5",
+        "glob-parent": "^6.0.0",
+        "globby": "^11.0.3",
         "normalize-path": "^3.0.0",
-        "p-limit": "^3.0.2",
+        "p-limit": "^3.1.0",
         "schema-utils": "^3.0.0",
-        "serialize-javascript": "^5.0.1",
-        "webpack-sources": "^1.4.3"
+        "serialize-javascript": "^6.0.0"
       },
       "dependencies": {
+        "ajv": {
+          "version": "6.12.6",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^3.1.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
+          }
+        },
         "p-limit": {
           "version": "3.1.0",
           "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
@@ -5686,29 +5894,13 @@
             "ajv": "^6.12.5",
             "ajv-keywords": "^3.5.2"
           }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        },
-        "webpack-sources": {
-          "version": "1.4.3",
-          "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
-          "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
-          "dev": true,
-          "requires": {
-            "source-list-map": "^2.0.0",
-            "source-map": "~0.6.1"
-          }
         }
       }
     },
     "core-js": {
-      "version": "3.8.3",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz",
-      "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==",
+      "version": "3.16.0",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.16.0.tgz",
+      "integrity": "sha512-5+5VxRFmSf97nM8Jr2wzOwLqRo6zphH2aX+7KsAUONObyzakDNq2G/bgbhinxB4PoV9L3aXQYhiDKyIKWd2c8g==",
       "dev": true
     },
     "core-js-compat": {
@@ -5802,51 +5994,6 @@
         }
       }
     },
-    "create-ecdh": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
-      "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
-      "dev": true,
-      "requires": {
-        "bn.js": "^4.1.0",
-        "elliptic": "^6.5.3"
-      },
-      "dependencies": {
-        "bn.js": {
-          "version": "4.12.0",
-          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-          "dev": true
-        }
-      }
-    },
-    "create-hash": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
-      "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
-      "dev": true,
-      "requires": {
-        "cipher-base": "^1.0.1",
-        "inherits": "^2.0.1",
-        "md5.js": "^1.3.4",
-        "ripemd160": "^2.0.1",
-        "sha.js": "^2.4.0"
-      }
-    },
-    "create-hmac": {
-      "version": "1.1.7",
-      "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
-      "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
-      "dev": true,
-      "requires": {
-        "cipher-base": "^1.0.3",
-        "create-hash": "^1.1.0",
-        "inherits": "^2.0.1",
-        "ripemd160": "^2.0.0",
-        "safe-buffer": "^5.0.1",
-        "sha.js": "^2.4.8"
-      }
-    },
     "critters": {
       "version": "0.0.12",
       "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.12.tgz",
@@ -5953,25 +6100,6 @@
         }
       }
     },
-    "crypto-browserify": {
-      "version": "3.12.0",
-      "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
-      "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
-      "dev": true,
-      "requires": {
-        "browserify-cipher": "^1.0.0",
-        "browserify-sign": "^4.0.0",
-        "create-ecdh": "^4.0.0",
-        "create-hash": "^1.1.0",
-        "create-hmac": "^1.1.0",
-        "diffie-hellman": "^5.0.0",
-        "inherits": "^2.0.1",
-        "pbkdf2": "^3.0.3",
-        "public-encrypt": "^4.0.0",
-        "randombytes": "^2.0.0",
-        "randomfill": "^1.0.3"
-      }
-    },
     "crypto-random-string": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
@@ -5998,56 +6126,119 @@
         }
       }
     },
+    "css-blank-pseudo": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz",
+      "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.5"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
     "css-declaration-sorter": {
       "version": "6.3.0",
       "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz",
       "integrity": "sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og==",
       "dev": true
     },
-    "css-loader": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.0.1.tgz",
-      "integrity": "sha512-cXc2ti9V234cq7rJzFKhirb2L2iPy8ZjALeVJAozXYz9te3r4eqLSixNAbMDJSgJEQywqXzs8gonxaboeKqwiw==",
+    "css-has-pseudo": {
+      "version": "0.10.0",
+      "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz",
+      "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==",
       "dev": true,
       "requires": {
-        "camelcase": "^6.2.0",
-        "cssesc": "^3.0.0",
-        "icss-utils": "^5.0.0",
-        "loader-utils": "^2.0.0",
-        "postcss": "^8.1.4",
-        "postcss-modules-extract-imports": "^3.0.0",
-        "postcss-modules-local-by-default": "^4.0.0",
-        "postcss-modules-scope": "^3.0.0",
-        "postcss-modules-values": "^4.0.0",
-        "postcss-value-parser": "^4.1.0",
-        "schema-utils": "^3.0.0",
-        "semver": "^7.3.2"
+        "postcss": "^7.0.6",
+        "postcss-selector-parser": "^5.0.0-rc.4"
       },
       "dependencies": {
-        "camelcase": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
-          "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+        "cssesc": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
+          "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
           "dev": true
         },
-        "lru-cache": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
           "dev": true,
           "requires": {
-            "yallist": "^4.0.0"
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
           }
         },
-        "schema-utils": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
-          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+        "postcss-selector-parser": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
+          "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
           "dev": true,
           "requires": {
-            "@types/json-schema": "^7.0.8",
-            "ajv": "^6.12.5",
-            "ajv-keywords": "^3.5.2"
+            "cssesc": "^2.0.0",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
+    "css-loader": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.2.0.tgz",
+      "integrity": "sha512-/rvHfYRjIpymZblf49w8jYcRo2y9gj6rV8UroHGmBxKrIyGLokpycyKzp9OkitvqT29ZSpzJ0Ic7SpnJX3sC8g==",
+      "dev": true,
+      "requires": {
+        "icss-utils": "^5.1.0",
+        "postcss": "^8.2.15",
+        "postcss-modules-extract-imports": "^3.0.0",
+        "postcss-modules-local-by-default": "^4.0.0",
+        "postcss-modules-scope": "^3.0.0",
+        "postcss-modules-values": "^4.0.0",
+        "postcss-value-parser": "^4.1.0",
+        "semver": "^7.3.5"
+      },
+      "dependencies": {
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
           }
         },
         "semver": {
@@ -6061,6 +6252,61 @@
         }
       }
     },
+    "css-minimizer-webpack-plugin": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.0.2.tgz",
+      "integrity": "sha512-B3I5e17RwvKPJwsxjjWcdgpU/zqylzK1bPVghcmpFHRL48DXiBgrtqz1BJsn68+t/zzaLp9kYAaEDvQ7GyanFQ==",
+      "dev": true,
+      "requires": {
+        "cssnano": "^5.0.6",
+        "jest-worker": "^27.0.2",
+        "p-limit": "^3.0.2",
+        "postcss": "^8.3.5",
+        "schema-utils": "^3.0.0",
+        "serialize-javascript": "^6.0.0",
+        "source-map": "^0.6.1"
+      },
+      "dependencies": {
+        "ajv": {
+          "version": "6.12.6",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^3.1.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
+          }
+        },
+        "p-limit": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+          "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+          "dev": true,
+          "requires": {
+            "yocto-queue": "^0.1.0"
+          }
+        },
+        "schema-utils": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+          "dev": true,
+          "requires": {
+            "@types/json-schema": "^7.0.8",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
     "css-parse": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz",
@@ -6070,6 +6316,39 @@
         "css": "^2.0.0"
       }
     },
+    "css-prefers-color-scheme": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz",
+      "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.5"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
     "css-select": {
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
@@ -6126,6 +6405,12 @@
         "through": "X.X.X"
       }
     },
+    "cssdb": {
+      "version": "4.4.0",
+      "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz",
+      "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==",
+      "dev": true
+    },
     "cssesc": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
@@ -6133,14 +6418,14 @@
       "dev": true
     },
     "cssnano": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.2.tgz",
-      "integrity": "sha512-8JK3EnPsjQsULme9/e5M2hF564f/480hwsdcHvQ7ZtAIMfQ1O3SCfs+b8Mjf5KJxhYApyRshR2QSovEJi2K72Q==",
+      "version": "5.1.12",
+      "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.12.tgz",
+      "integrity": "sha512-TgvArbEZu0lk/dvg2ja+B7kYoD7BBCmn3+k58xD0qjrGHsFzXY/wKTo9M5egcUCabPol05e/PVoIu79s2JN4WQ==",
       "dev": true,
       "requires": {
-        "cosmiconfig": "^7.0.0",
-        "cssnano-preset-default": "^5.0.1",
-        "is-resolvable": "^1.1.0"
+        "cssnano-preset-default": "^5.2.12",
+        "lilconfig": "^2.0.3",
+        "yaml": "^1.10.2"
       }
     },
     "cssnano-preset-default": {
@@ -6248,12 +6533,6 @@
       "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==",
       "dev": true
     },
-    "cyclist": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
-      "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==",
-      "dev": true
-    },
     "d": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
@@ -6379,6 +6658,12 @@
       "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
       "dev": true
     },
+    "define-lazy-prop": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+      "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+      "dev": true
+    },
     "define-properties": {
       "version": "1.1.4",
       "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
@@ -6502,21 +6787,11 @@
       "dev": true
     },
     "dependency-graph": {
-      "version": "0.7.2",
-      "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.7.2.tgz",
-      "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==",
+      "version": "0.11.0",
+      "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz",
+      "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==",
       "dev": true
     },
-    "des.js": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
-      "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.1",
-        "minimalistic-assert": "^1.0.0"
-      }
-    },
     "destroy": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
@@ -6541,25 +6816,6 @@
       "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
       "dev": true
     },
-    "diffie-hellman": {
-      "version": "5.0.3",
-      "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
-      "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
-      "dev": true,
-      "requires": {
-        "bn.js": "^4.1.0",
-        "miller-rabin": "^4.0.0",
-        "randombytes": "^2.0.0"
-      },
-      "dependencies": {
-        "bn.js": {
-          "version": "4.12.0",
-          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-          "dev": true
-        }
-      }
-    },
     "dir-glob": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
@@ -6622,12 +6878,6 @@
       "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz",
       "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q=="
     },
-    "domain-browser": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
-      "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
-      "dev": true
-    },
     "domelementtype": {
       "version": "2.3.0",
       "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
@@ -6726,29 +6976,6 @@
       "integrity": "sha512-9kV/isoOGpKkBt04yYNaSWIBn3187Q5VZRtoReq8oz5NY/A4XmU6cAoqgQlDp7kKJCZMRjWZ8nsQyxfpFHvfyw==",
       "dev": true
     },
-    "elliptic": {
-      "version": "6.5.4",
-      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
-      "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
-      "dev": true,
-      "requires": {
-        "bn.js": "^4.11.9",
-        "brorand": "^1.1.0",
-        "hash.js": "^1.0.0",
-        "hmac-drbg": "^1.0.1",
-        "inherits": "^2.0.4",
-        "minimalistic-assert": "^1.0.1",
-        "minimalistic-crypto-utils": "^1.0.1"
-      },
-      "dependencies": {
-        "bn.js": {
-          "version": "4.12.0",
-          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-          "dev": true
-        }
-      }
-    },
     "emoji-regex": {
       "version": "8.0.0",
       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
@@ -6842,9 +7069,9 @@
       "dev": true
     },
     "enhanced-resolve": {
-      "version": "5.7.0",
-      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz",
-      "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==",
+      "version": "5.10.0",
+      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz",
+      "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==",
       "dev": true,
       "requires": {
         "graceful-fs": "^4.2.4",
@@ -6898,6 +7125,12 @@
       "resolved": "https://registry.npmjs.org/es-cookie/-/es-cookie-1.3.2.tgz",
       "integrity": "sha512-UTlYYhXGLOy05P/vKVT2Ui7WtC7NiRzGtJyAKKn32g5Gvcjn7KAClLPWlipCtxIus934dFg9o9jXiBL0nP+t9Q=="
     },
+    "es-module-lexer": {
+      "version": "0.7.1",
+      "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.7.1.tgz",
+      "integrity": "sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==",
+      "dev": true
+    },
     "es5-ext": {
       "version": "0.10.53",
       "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz",
@@ -6957,6 +7190,131 @@
         "es6-symbol": "^3.1.1"
       }
     },
+    "esbuild-android-arm64": {
+      "version": "0.13.8",
+      "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.8.tgz",
+      "integrity": "sha512-AilbChndywpk7CdKkNSZ9klxl+9MboLctXd9LwLo3b0dawmOF/i/t2U5d8LM6SbT1Xw36F8yngSUPrd8yPs2RA==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-darwin-64": {
+      "version": "0.13.8",
+      "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.8.tgz",
+      "integrity": "sha512-b6sdiT84zV5LVaoF+UoMVGJzR/iE2vNUfUDfFQGrm4LBwM/PWXweKpuu6RD9mcyCq18cLxkP6w/LD/w9DtX3ng==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-darwin-arm64": {
+      "version": "0.13.8",
+      "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.8.tgz",
+      "integrity": "sha512-R8YuPiiJayuJJRUBG4H0VwkEKo6AvhJs2m7Tl0JaIer3u1FHHXwGhMxjJDmK+kXwTFPriSysPvcobXC/UrrZCQ==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-freebsd-64": {
+      "version": "0.13.8",
+      "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.8.tgz",
+      "integrity": "sha512-zBn6urrn8FnKC+YSgDxdof9jhPCeU8kR/qaamlV4gI8R3KUaUK162WYM7UyFVAlj9N0MyD3AtB+hltzu4cysTw==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-freebsd-arm64": {
+      "version": "0.13.8",
+      "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.8.tgz",
+      "integrity": "sha512-pWW2slN7lGlkx0MOEBoUGwRX5UgSCLq3dy2c8RIOpiHtA87xAUpDBvZK10MykbT+aMfXc0NI2lu1X+6kI34xng==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-linux-32": {
+      "version": "0.13.8",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.8.tgz",
+      "integrity": "sha512-T0I0ueeKVO/Is0CAeSEOG9s2jeNNb8jrrMwG9QBIm3UU18MRB60ERgkS2uV3fZ1vP2F8i3Z2e3Zju4lg9dhVmw==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-linux-64": {
+      "version": "0.13.8",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.8.tgz",
+      "integrity": "sha512-Bm8SYmFtvfDCIu9sjKppFXzRXn2BVpuCinU1ChTuMtdKI/7aPpXIrkqBNOgPTOQO9AylJJc1Zw6EvtKORhn64w==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-linux-arm": {
+      "version": "0.13.8",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.8.tgz",
+      "integrity": "sha512-4/HfcC40LJ4GPyboHA+db0jpFarTB628D1ifU+/5bunIgY+t6mHkJWyxWxAAE8wl/ZIuRYB9RJFdYpu1AXGPdg==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-linux-arm64": {
+      "version": "0.13.8",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.8.tgz",
+      "integrity": "sha512-X4pWZ+SL+FJ09chWFgRNO3F+YtvAQRcWh0uxKqZSWKiWodAB20flsW/OWFYLXBKiVCTeoGMvENZS/GeVac7+tQ==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-linux-mips64le": {
+      "version": "0.13.8",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.8.tgz",
+      "integrity": "sha512-o7e0D+sqHKT31v+mwFircJFjwSKVd2nbkHEn4l9xQ1hLR+Bv8rnt3HqlblY3+sBdlrOTGSwz0ReROlKUMJyldA==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-linux-ppc64le": {
+      "version": "0.13.8",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.8.tgz",
+      "integrity": "sha512-eZSQ0ERsWkukJp2px/UWJHVNuy0lMoz/HZcRWAbB6reoaBw7S9vMzYNUnflfL3XA6WDs+dZn3ekHE4Y2uWLGig==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-netbsd-64": {
+      "version": "0.13.8",
+      "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.8.tgz",
+      "integrity": "sha512-gZX4kP7gVvOrvX0ZwgHmbuHczQUwqYppxqtoyC7VNd80t5nBHOFXVhWo2Ad/Lms0E8b+wwgI/WjZFTCpUHOg9Q==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-openbsd-64": {
+      "version": "0.13.8",
+      "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.8.tgz",
+      "integrity": "sha512-afzza308X4WmcebexbTzAgfEWt9MUkdTvwIa8xOu4CM2qGbl2LanqEl8/LUs8jh6Gqw6WsicEK52GPrS9wvkcw==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-sunos-64": {
+      "version": "0.13.8",
+      "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.8.tgz",
+      "integrity": "sha512-mWPZibmBbuMKD+LDN23LGcOZ2EawMYBONMXXHmbuxeT0XxCNwadbCVwUQ/2p5Dp5Kvf6mhrlIffcnWOiCBpiVw==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-wasm": {
+      "version": "0.13.8",
+      "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.13.8.tgz",
+      "integrity": "sha512-UbD+3nloiSpJWXTCInZQrqPe8Y+RLfDkY/5kEHiXsw/lmaEvibe69qTzQu16m5R9je/0bF7VYQ5jaEOq0z9lLA==",
+      "dev": true
+    },
+    "esbuild-windows-32": {
+      "version": "0.13.8",
+      "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.8.tgz",
+      "integrity": "sha512-QsZ1HnWIcnIEApETZWw8HlOhDSWqdZX2SylU7IzGxOYyVcX7QI06ety/aDcn437mwyO7Ph4RrbhB+2ntM8kX8A==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-windows-64": {
+      "version": "0.13.8",
+      "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.8.tgz",
+      "integrity": "sha512-76Fb57B9eE/JmJi1QmUW0tRLQZfGo0it+JeYoCDTSlbTn7LV44ecOHIMJSSgZADUtRMWT9z0Kz186bnaB3amSg==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-windows-arm64": {
+      "version": "0.13.8",
+      "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.8.tgz",
+      "integrity": "sha512-HW6Mtq5eTudllxY2YgT62MrVcn7oq2o8TAoAvDUhyiEmRmDY8tPwAhb1vxw5/cdkbukM3KdMYtksnUhF/ekWeg==",
+      "dev": true,
+      "optional": true
+    },
     "escalade": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
@@ -6980,12 +7338,12 @@
       "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
     },
     "eslint-scope": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
-      "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+      "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
       "dev": true,
       "requires": {
-        "esrecurse": "^4.1.0",
+        "esrecurse": "^4.3.0",
         "estraverse": "^4.1.1"
       }
     },
@@ -7045,6 +7403,12 @@
       "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
       "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
     },
+    "eventemitter-asyncresource": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz",
+      "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==",
+      "dev": true
+    },
     "eventemitter3": {
       "version": "4.0.7",
       "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
@@ -7069,16 +7433,6 @@
       "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==",
       "dev": true
     },
-    "evp_bytestokey": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
-      "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
-      "dev": true,
-      "requires": {
-        "md5.js": "^1.3.4",
-        "safe-buffer": "^5.1.1"
-      }
-    },
     "execa": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
@@ -7442,6 +7796,17 @@
         "glob-parent": "^5.1.2",
         "merge2": "^1.3.0",
         "micromatch": "^4.0.4"
+      },
+      "dependencies": {
+        "glob-parent": {
+          "version": "5.1.2",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+          "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+          "dev": true,
+          "requires": {
+            "is-glob": "^4.0.1"
+          }
+        }
       }
     },
     "fast-json-stable-stringify": {
@@ -7508,12 +7873,6 @@
       "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==",
       "dev": true
     },
-    "figgy-pudding": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
-      "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==",
-      "dev": true
-    },
     "figures": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
@@ -7523,28 +7882,12 @@
         "escape-string-regexp": "^1.0.5"
       }
     },
-    "file-loader": {
-      "version": "6.2.0",
-      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz",
-      "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==",
+    "file-uri-to-path": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+      "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
       "dev": true,
-      "requires": {
-        "loader-utils": "^2.0.0",
-        "schema-utils": "^3.0.0"
-      },
-      "dependencies": {
-        "schema-utils": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
-          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
-          "dev": true,
-          "requires": {
-            "@types/json-schema": "^7.0.8",
-            "ajv": "^6.12.5",
-            "ajv-keywords": "^3.5.2"
-          }
-        }
-      }
+      "optional": true
     },
     "filesize": {
       "version": "3.6.1",
@@ -8082,15 +8425,11 @@
       "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==",
       "dev": true
     },
-    "flush-write-stream": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
-      "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.3.6"
-      }
+    "flatten": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz",
+      "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==",
+      "dev": true
     },
     "fn.name": {
       "version": "1.1.0",
@@ -8133,12 +8472,6 @@
       "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
       "dev": true
     },
-    "fraction.js": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
-      "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
-      "dev": true
-    },
     "fragment-cache": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
@@ -8154,33 +8487,12 @@
       "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
       "dev": true
     },
-    "from2": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
-      "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.1",
-        "readable-stream": "^2.0.0"
-      }
-    },
     "fs-constants": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
       "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
       "dev": true
     },
-    "fs-extra": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz",
-      "integrity": "sha512-wYid1zXctNLgas1pZ8q8ChdsnGg4DHZVqMzJ7pOE85q5BppAEXgQGSoOjVgrcw5yI7pzz49p9AfMhM7z5PRuaw==",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.2",
-        "jsonfile": "^4.0.0",
-        "universalify": "^0.1.0"
-      }
-    },
     "fs-minipass": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
@@ -8190,17 +8502,11 @@
         "minipass": "^3.0.0"
       }
     },
-    "fs-write-stream-atomic": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
-      "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.2",
-        "iferr": "^0.1.5",
-        "imurmurhash": "^0.1.4",
-        "readable-stream": "1 || 2"
-      }
+    "fs-monkey": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz",
+      "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==",
+      "dev": true
     },
     "fs.realpath": {
       "version": "1.0.0",
@@ -8259,6 +8565,7 @@
       "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
       "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
       "dev": true,
+      "optional": true,
       "requires": {
         "aproba": "^1.0.3",
         "console-control-strings": "^1.0.0",
@@ -8275,6 +8582,7 @@
           "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
           "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
           "dev": true,
+          "optional": true,
           "requires": {
             "number-is-nan": "^1.0.0"
           }
@@ -8284,6 +8592,7 @@
           "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
           "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
           "dev": true,
+          "optional": true,
           "requires": {
             "code-point-at": "^1.0.0",
             "is-fullwidth-code-point": "^1.0.0",
@@ -8397,12 +8706,23 @@
       }
     },
     "glob-parent": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+      "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
       "dev": true,
       "requires": {
-        "is-glob": "^4.0.1"
+        "is-glob": "^4.0.3"
+      },
+      "dependencies": {
+        "is-glob": {
+          "version": "4.0.3",
+          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+          "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^2.1.1"
+          }
+        }
       }
     },
     "glob-slash": {
@@ -8422,6 +8742,12 @@
         "toxic": "^1.0.0"
       }
     },
+    "glob-to-regexp": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+      "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+      "dev": true
+    },
     "global-dirs": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz",
@@ -8838,56 +9164,22 @@
       "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==",
       "dev": true
     },
-    "hash-base": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
-      "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.4",
-        "readable-stream": "^3.6.0",
-        "safe-buffer": "^5.2.0"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "3.6.0",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-          "dev": true,
-          "requires": {
-            "inherits": "^2.0.3",
-            "string_decoder": "^1.1.1",
-            "util-deprecate": "^1.0.1"
-          }
-        },
-        "safe-buffer": {
-          "version": "5.2.1",
-          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-          "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-          "dev": true
-        }
-      }
-    },
-    "hash.js": {
-      "version": "1.1.7",
-      "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
-      "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+    "hdr-histogram-js": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz",
+      "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==",
       "dev": true,
       "requires": {
-        "inherits": "^2.0.3",
-        "minimalistic-assert": "^1.0.1"
+        "@assemblyscript/loader": "^0.10.1",
+        "base64-js": "^1.2.0",
+        "pako": "^1.0.3"
       }
     },
-    "hmac-drbg": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
-      "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
-      "dev": true,
-      "requires": {
-        "hash.js": "^1.0.3",
-        "minimalistic-assert": "^1.0.0",
-        "minimalistic-crypto-utils": "^1.0.1"
-      }
+    "hdr-histogram-percentiles-obj": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz",
+      "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==",
+      "dev": true
     },
     "home-dir": {
       "version": "1.0.0",
@@ -8896,9 +9188,9 @@
       "dev": true
     },
     "hosted-git-info": {
-      "version": "3.0.8",
-      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz",
-      "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==",
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
+      "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
       "dev": true,
       "requires": {
         "lru-cache": "^6.0.0"
@@ -9138,12 +9430,6 @@
         "sshpk": "^1.7.0"
       }
     },
-    "https-browserify": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
-      "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==",
-      "dev": true
-    },
     "https-proxy-agent": {
       "version": "2.2.4",
       "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz",
@@ -9200,12 +9486,6 @@
       "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
       "dev": true
     },
-    "iferr": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
-      "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==",
-      "dev": true
-    },
     "ignore": {
       "version": "5.2.0",
       "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
@@ -9213,9 +9493,9 @@
       "dev": true
     },
     "ignore-walk": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz",
-      "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==",
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-4.0.1.tgz",
+      "integrity": "sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==",
       "dev": true,
       "requires": {
         "minimatch": "^3.0.4"
@@ -9317,6 +9597,12 @@
       "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
       "dev": true
     },
+    "indexes-of": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
+      "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==",
+      "dev": true
+    },
     "infer-owner": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
@@ -9809,12 +10095,6 @@
         "has-tostringtag": "^1.0.0"
       }
     },
-    "is-resolvable": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
-      "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
-      "dev": true
-    },
     "is-stream": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
@@ -10063,14 +10343,14 @@
       "dev": true
     },
     "jest-worker": {
-      "version": "26.6.2",
-      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
-      "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
+      "version": "27.5.1",
+      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+      "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
       "dev": true,
       "requires": {
         "@types/node": "*",
         "merge-stream": "^2.0.0",
-        "supports-color": "^7.0.0"
+        "supports-color": "^8.0.0"
       },
       "dependencies": {
         "has-flag": {
@@ -10080,9 +10360,9 @@
           "dev": true
         },
         "supports-color": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "version": "8.1.1",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+          "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
           "dev": true,
           "requires": {
             "has-flag": "^4.0.0"
@@ -10670,27 +10950,12 @@
       }
     },
     "less-loader": {
-      "version": "7.3.0",
-      "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz",
-      "integrity": "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==",
+      "version": "10.0.1",
+      "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-10.0.1.tgz",
+      "integrity": "sha512-Crln//HpW9M5CbtdfWm3IO66Cvx1WhZQvNybXgfB2dD/6Sav9ppw+IWqs/FQKPBFO4B6X0X28Z0WNznshgwUzA==",
       "dev": true,
       "requires": {
-        "klona": "^2.0.4",
-        "loader-utils": "^2.0.0",
-        "schema-utils": "^3.0.0"
-      },
-      "dependencies": {
-        "schema-utils": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
-          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
-          "dev": true,
-          "requires": {
-            "@types/json-schema": "^7.0.8",
-            "ajv": "^6.12.5",
-            "ajv-keywords": "^3.5.2"
-          }
-        }
+        "klona": "^2.0.4"
       }
     },
     "leven": {
@@ -10700,31 +10965,13 @@
       "dev": true
     },
     "license-webpack-plugin": {
-      "version": "2.3.11",
-      "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.11.tgz",
-      "integrity": "sha512-0iVGoX5vx0WDy8dmwTTpOOMYiGqILyUbDeVMFH52AjgBlS58lHwOlFMSoqg5nY8Kxl6+FRKyUZY/UdlQaOyqDw==",
+      "version": "2.3.20",
+      "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.20.tgz",
+      "integrity": "sha512-AHVueg9clOKACSHkhmEI+PCC9x8+qsQVuKECZD3ETxETK5h/PCv5/MUzyG1gm8OMcip/s1tcNxqo9Qb7WhjGsg==",
       "dev": true,
       "requires": {
         "@types/webpack-sources": "^0.1.5",
         "webpack-sources": "^1.2.0"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        },
-        "webpack-sources": {
-          "version": "1.4.3",
-          "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
-          "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
-          "dev": true,
-          "requires": {
-            "source-list-map": "^2.0.0",
-            "source-map": "~0.6.1"
-          }
-        }
       }
     },
     "lie": {
@@ -10736,6 +10983,12 @@
         "immediate": "~3.0.5"
       }
     },
+    "lilconfig": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz",
+      "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==",
+      "dev": true
+    },
     "lines-and-columns": {
       "version": "1.2.4",
       "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
@@ -10749,9 +11002,9 @@
       "dev": true
     },
     "loader-runner": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz",
-      "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==",
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
+      "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
       "dev": true
     },
     "loader-utils": {
@@ -10811,6 +11064,12 @@
       "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
       "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY="
     },
+    "lodash.debounce": {
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+      "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+      "dev": true
+    },
     "lodash.defaults": {
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
@@ -11130,13 +11389,13 @@
       "dev": true
     },
     "make-fetch-happen": {
-      "version": "8.0.14",
-      "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz",
-      "integrity": "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==",
+      "version": "9.1.0",
+      "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz",
+      "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==",
       "dev": true,
       "requires": {
         "agentkeepalive": "^4.1.3",
-        "cacache": "^15.0.5",
+        "cacache": "^15.2.0",
         "http-cache-semantics": "^4.1.0",
         "http-proxy-agent": "^4.0.1",
         "https-proxy-agent": "^5.0.0",
@@ -11147,8 +11406,9 @@
         "minipass-fetch": "^1.3.2",
         "minipass-flush": "^1.0.5",
         "minipass-pipeline": "^1.2.4",
+        "negotiator": "^0.6.2",
         "promise-retry": "^2.0.1",
-        "socks-proxy-agent": "^5.0.0",
+        "socks-proxy-agent": "^6.0.0",
         "ssri": "^8.0.0"
       },
       "dependencies": {
@@ -11179,19 +11439,18 @@
           "requires": {
             "yallist": "^4.0.0"
           }
-        },
-        "promise-retry": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
-          "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
-          "dev": true,
-          "requires": {
-            "err-code": "^2.0.2",
-            "retry": "^0.12.0"
-          }
         }
       }
     },
+    "map-age-cleaner": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
+      "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
+      "dev": true,
+      "requires": {
+        "p-defer": "^1.0.0"
+      }
+    },
     "map-cache": {
       "version": "0.2.2",
       "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
@@ -11227,17 +11486,6 @@
         "supports-hyperlinks": "^1.0.1"
       }
     },
-    "md5.js": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
-      "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
-      "dev": true,
-      "requires": {
-        "hash-base": "^3.0.0",
-        "inherits": "^2.0.1",
-        "safe-buffer": "^5.1.2"
-      }
-    },
     "mdn-data": {
       "version": "2.0.14",
       "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
@@ -11250,6 +11498,33 @@
       "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
       "dev": true
     },
+    "mem": {
+      "version": "8.1.1",
+      "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz",
+      "integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==",
+      "dev": true,
+      "requires": {
+        "map-age-cleaner": "^0.1.3",
+        "mimic-fn": "^3.1.0"
+      },
+      "dependencies": {
+        "mimic-fn": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz",
+          "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==",
+          "dev": true
+        }
+      }
+    },
+    "memfs": {
+      "version": "3.4.7",
+      "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz",
+      "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==",
+      "dev": true,
+      "requires": {
+        "fs-monkey": "^1.0.3"
+      }
+    },
     "memoizee": {
       "version": "0.4.15",
       "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz",
@@ -11343,24 +11618,6 @@
         }
       }
     },
-    "miller-rabin": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
-      "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
-      "dev": true,
-      "requires": {
-        "bn.js": "^4.0.0",
-        "brorand": "^1.0.1"
-      },
-      "dependencies": {
-        "bn.js": {
-          "version": "4.12.0",
-          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-          "dev": true
-        }
-      }
-    },
     "mime": {
       "version": "1.6.0",
       "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
@@ -11395,16 +11652,26 @@
       "dev": true
     },
     "mini-css-extract-plugin": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.3.5.tgz",
-      "integrity": "sha512-tvmzcwqJJXau4OQE5vT72pRT18o2zF+tQJp8CWchqvfQnTlflkzS+dANYcRdyPRWUWRkfmeNTKltx0NZI/b5dQ==",
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.2.tgz",
+      "integrity": "sha512-ZmqShkn79D36uerdED+9qdo1ZYG8C1YsWvXu0UMJxurZnSdgz7gQKO2EGv8T55MhDqG3DYmGtizZNpM/UbTlcA==",
       "dev": true,
       "requires": {
-        "loader-utils": "^2.0.0",
-        "schema-utils": "^3.0.0",
-        "webpack-sources": "^1.1.0"
+        "schema-utils": "^3.1.0"
       },
       "dependencies": {
+        "ajv": {
+          "version": "6.12.6",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^3.1.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
+          }
+        },
         "schema-utils": {
           "version": "3.1.1",
           "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
@@ -11415,22 +11682,6 @@
             "ajv": "^6.12.5",
             "ajv-keywords": "^3.5.2"
           }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        },
-        "webpack-sources": {
-          "version": "1.4.3",
-          "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
-          "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
-          "dev": true,
-          "requires": {
-            "source-list-map": "^2.0.0",
-            "source-map": "~0.6.1"
-          }
         }
       }
     },
@@ -11440,12 +11691,6 @@
       "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
       "dev": true
     },
-    "minimalistic-crypto-utils": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
-      "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==",
-      "dev": true
-    },
     "minimatch": {
       "version": "3.0.4",
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
@@ -11566,24 +11811,6 @@
         }
       }
     },
-    "mississippi": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
-      "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
-      "dev": true,
-      "requires": {
-        "concat-stream": "^1.5.0",
-        "duplexify": "^3.4.2",
-        "end-of-stream": "^1.1.0",
-        "flush-write-stream": "^1.0.0",
-        "from2": "^2.1.0",
-        "parallel-transform": "^1.1.0",
-        "pump": "^3.0.0",
-        "pumpify": "^1.3.3",
-        "stream-each": "^1.1.0",
-        "through2": "^2.0.0"
-      }
-    },
     "mixin-deep": {
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
@@ -11650,31 +11877,6 @@
         }
       }
     },
-    "move-concurrently": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
-      "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==",
-      "dev": true,
-      "requires": {
-        "aproba": "^1.1.1",
-        "copy-concurrently": "^1.0.0",
-        "fs-write-stream-atomic": "^1.0.8",
-        "mkdirp": "^0.5.1",
-        "rimraf": "^2.5.4",
-        "run-queue": "^1.0.3"
-      },
-      "dependencies": {
-        "rimraf": {
-          "version": "2.7.1",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-          "dev": true,
-          "requires": {
-            "glob": "^7.1.3"
-          }
-        }
-      }
-    },
     "ms": {
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -11888,12 +12090,30 @@
         }
       }
     },
+    "nice-napi": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz",
+      "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "node-addon-api": "^3.0.0",
+        "node-gyp-build": "^4.2.2"
+      }
+    },
     "nice-try": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
       "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
       "dev": true
     },
+    "node-addon-api": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
+      "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
+      "dev": true,
+      "optional": true
+    },
     "node-emoji": {
       "version": "1.10.0",
       "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz",
@@ -11918,6 +12138,7 @@
       "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz",
       "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==",
       "dev": true,
+      "optional": true,
       "requires": {
         "env-paths": "^2.2.0",
         "glob": "^7.1.4",
@@ -11935,13 +12156,15 @@
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
           "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "lru-cache": {
           "version": "6.0.0",
           "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
           "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
           "dev": true,
+          "optional": true,
           "requires": {
             "yallist": "^4.0.0"
           }
@@ -11951,6 +12174,7 @@
           "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
           "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
           "dev": true,
+          "optional": true,
           "requires": {
             "minipass": "^3.0.0",
             "yallist": "^4.0.0"
@@ -11960,13 +12184,15 @@
           "version": "1.0.4",
           "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
           "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "rimraf": {
           "version": "3.0.2",
           "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
           "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
           "dev": true,
+          "optional": true,
           "requires": {
             "glob": "^7.1.3"
           }
@@ -11976,6 +12202,7 @@
           "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
           "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
           "dev": true,
+          "optional": true,
           "requires": {
             "lru-cache": "^6.0.0"
           }
@@ -11985,6 +12212,7 @@
           "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz",
           "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==",
           "dev": true,
+          "optional": true,
           "requires": {
             "chownr": "^2.0.0",
             "fs-minipass": "^2.0.0",
@@ -11999,50 +12227,19 @@
           "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
           "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
           "dev": true,
+          "optional": true,
           "requires": {
             "isexe": "^2.0.0"
           }
         }
       }
     },
-    "node-libs-browser": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
-      "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
-      "dev": true,
-      "requires": {
-        "assert": "^1.1.1",
-        "browserify-zlib": "^0.2.0",
-        "buffer": "^4.3.0",
-        "console-browserify": "^1.1.0",
-        "constants-browserify": "^1.0.0",
-        "crypto-browserify": "^3.11.0",
-        "domain-browser": "^1.1.1",
-        "events": "^3.0.0",
-        "https-browserify": "^1.0.0",
-        "os-browserify": "^0.3.0",
-        "path-browserify": "0.0.1",
-        "process": "^0.11.10",
-        "punycode": "^1.2.4",
-        "querystring-es3": "^0.2.0",
-        "readable-stream": "^2.3.3",
-        "stream-browserify": "^2.0.1",
-        "stream-http": "^2.7.2",
-        "string_decoder": "^1.0.0",
-        "timers-browserify": "^2.0.4",
-        "tty-browserify": "0.0.0",
-        "url": "^0.11.0",
-        "util": "^0.11.0",
-        "vm-browserify": "^1.0.1"
-      },
-      "dependencies": {
-        "punycode": {
-          "version": "1.4.1",
-          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
-          "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
-          "dev": true
-        }
-      }
+    "node-gyp-build": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz",
+      "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==",
+      "dev": true,
+      "optional": true
     },
     "node-releases": {
       "version": "2.0.6",
@@ -12122,13 +12319,13 @@
       "dev": true
     },
     "npm-package-arg": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.0.tgz",
-      "integrity": "sha512-/ep6QDxBkm9HvOhOg0heitSd7JHA1U7y1qhhlRlteYYAi9Pdb/ZV7FW5aHpkrpM8+P+4p/jjR8zCyKPBMBjSig==",
+      "version": "8.1.5",
+      "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz",
+      "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==",
       "dev": true,
       "requires": {
-        "hosted-git-info": "^3.0.6",
-        "semver": "^7.0.0",
+        "hosted-git-info": "^4.0.1",
+        "semver": "^7.3.4",
         "validate-npm-package-name": "^3.0.0"
       },
       "dependencies": {
@@ -12153,13 +12350,13 @@
       }
     },
     "npm-packlist": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz",
-      "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-3.0.0.tgz",
+      "integrity": "sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ==",
       "dev": true,
       "requires": {
         "glob": "^7.1.6",
-        "ignore-walk": "^3.0.3",
+        "ignore-walk": "^4.0.1",
         "npm-bundled": "^1.1.1",
         "npm-normalize-package-bin": "^1.0.1"
       },
@@ -12190,14 +12387,15 @@
       }
     },
     "npm-pick-manifest": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz",
-      "integrity": "sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw==",
+      "version": "6.1.1",
+      "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz",
+      "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==",
       "dev": true,
       "requires": {
         "npm-install-checks": "^4.0.0",
-        "npm-package-arg": "^8.0.0",
-        "semver": "^7.0.0"
+        "npm-normalize-package-bin": "^1.0.1",
+        "npm-package-arg": "^8.1.2",
+        "semver": "^7.3.4"
       },
       "dependencies": {
         "lru-cache": {
@@ -12221,14 +12419,12 @@
       }
     },
     "npm-registry-fetch": {
-      "version": "9.0.0",
-      "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz",
-      "integrity": "sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA==",
+      "version": "11.0.0",
+      "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz",
+      "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==",
       "dev": true,
       "requires": {
-        "@npmcli/ci-detect": "^1.0.0",
-        "lru-cache": "^6.0.0",
-        "make-fetch-happen": "^8.0.9",
+        "make-fetch-happen": "^9.0.1",
         "minipass": "^3.1.3",
         "minipass-fetch": "^1.3.0",
         "minipass-json-stream": "^1.0.1",
@@ -12236,15 +12432,6 @@
         "npm-package-arg": "^8.0.0"
       },
       "dependencies": {
-        "lru-cache": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-          "dev": true,
-          "requires": {
-            "yallist": "^4.0.0"
-          }
-        },
         "minizlib": {
           "version": "2.1.2",
           "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
@@ -12271,6 +12458,7 @@
       "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
       "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
       "dev": true,
+      "optional": true,
       "requires": {
         "are-we-there-yet": "~1.1.2",
         "console-control-strings": "~1.1.0",
@@ -12287,11 +12475,18 @@
         "boolbase": "^1.0.0"
       }
     },
+    "num2fraction": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
+      "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==",
+      "dev": true
+    },
     "number-is-nan": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
       "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
-      "dev": true
+      "dev": true,
+      "optional": true
     },
     "oauth-sign": {
       "version": "0.9.0",
@@ -12463,17 +12658,18 @@
       }
     },
     "ora": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz",
-      "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==",
+      "version": "5.4.1",
+      "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
+      "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
       "dev": true,
       "requires": {
-        "bl": "^4.0.3",
+        "bl": "^4.1.0",
         "chalk": "^4.1.0",
         "cli-cursor": "^3.1.0",
         "cli-spinners": "^2.5.0",
         "is-interactive": "^1.0.0",
-        "log-symbols": "^4.0.0",
+        "is-unicode-supported": "^0.1.0",
+        "log-symbols": "^4.1.0",
         "strip-ansi": "^6.0.0",
         "wcwidth": "^1.0.1"
       },
@@ -12544,12 +12740,6 @@
         }
       }
     },
-    "os-browserify": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
-      "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==",
-      "dev": true
-    },
     "os-tmpdir": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
@@ -12562,6 +12752,12 @@
       "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
       "dev": true
     },
+    "p-defer": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
+      "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==",
+      "dev": true
+    },
     "p-finally": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
@@ -12623,15 +12819,15 @@
       }
     },
     "pacote": {
-      "version": "11.2.4",
-      "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.2.4.tgz",
-      "integrity": "sha512-GfTeVQGJ6WyBQbQD4t3ocHbyOmTQLmWjkCKSZPmKiGFKYKNUaM5U2gbLzUW8WG1XmS9yQFnsTFA0k3o1+q4klQ==",
+      "version": "12.0.2",
+      "resolved": "https://registry.npmjs.org/pacote/-/pacote-12.0.2.tgz",
+      "integrity": "sha512-Ar3mhjcxhMzk+OVZ8pbnXdb0l8+pimvlsqBGRNkble2NVgyqOGE3yrCGi/lAYq7E7NRDMz89R1Wx5HIMCGgeYg==",
       "dev": true,
       "requires": {
-        "@npmcli/git": "^2.0.1",
-        "@npmcli/installed-package-contents": "^1.0.5",
+        "@npmcli/git": "^2.1.0",
+        "@npmcli/installed-package-contents": "^1.0.6",
         "@npmcli/promise-spawn": "^1.2.0",
-        "@npmcli/run-script": "^1.3.0",
+        "@npmcli/run-script": "^2.0.0",
         "cacache": "^15.0.5",
         "chownr": "^2.0.0",
         "fs-minipass": "^2.1.0",
@@ -12639,13 +12835,13 @@
         "minipass": "^3.1.3",
         "mkdirp": "^1.0.3",
         "npm-package-arg": "^8.0.1",
-        "npm-packlist": "^2.1.4",
+        "npm-packlist": "^3.0.0",
         "npm-pick-manifest": "^6.0.0",
-        "npm-registry-fetch": "^9.0.0",
-        "promise-retry": "^1.1.1",
-        "read-package-json-fast": "^1.1.3",
+        "npm-registry-fetch": "^11.0.0",
+        "promise-retry": "^2.0.1",
+        "read-package-json-fast": "^2.0.1",
         "rimraf": "^3.0.2",
-        "ssri": "^8.0.0",
+        "ssri": "^8.0.1",
         "tar": "^6.1.0"
       },
       "dependencies": {
@@ -12702,17 +12898,6 @@
       "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
       "dev": true
     },
-    "parallel-transform": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
-      "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
-      "dev": true,
-      "requires": {
-        "cyclist": "^1.0.1",
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.1.5"
-      }
-    },
     "parent-module": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
@@ -12722,19 +12907,6 @@
         "callsites": "^3.0.0"
       }
     },
-    "parse-asn1": {
-      "version": "5.1.6",
-      "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
-      "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
-      "dev": true,
-      "requires": {
-        "asn1.js": "^5.2.0",
-        "browserify-aes": "^1.0.0",
-        "evp_bytestokey": "^1.0.0",
-        "pbkdf2": "^3.0.3",
-        "safe-buffer": "^5.1.1"
-      }
-    },
     "parse-json": {
       "version": "5.2.0",
       "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
@@ -12799,12 +12971,6 @@
       "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
       "dev": true
     },
-    "path-browserify": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
-      "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
-      "dev": true
-    },
     "path-dirname": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
@@ -12851,19 +13017,6 @@
       "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
       "dev": true
     },
-    "pbkdf2": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz",
-      "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
-      "dev": true,
-      "requires": {
-        "create-hash": "^1.1.2",
-        "create-hmac": "^1.1.4",
-        "ripemd160": "^2.0.1",
-        "safe-buffer": "^5.0.1",
-        "sha.js": "^2.4.8"
-      }
-    },
     "pdfjs-dist": {
       "version": "2.5.207",
       "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.5.207.tgz",
@@ -12908,6 +13061,18 @@
         "pinkie": "^2.0.0"
       }
     },
+    "piscina": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.1.0.tgz",
+      "integrity": "sha512-KTW4sjsCD34MHrUbx9eAAbuUSpVj407hQSgk/6Epkg0pbRBmv4a3UX7Sr8wxm9xYqQLnsN4mFOjqGDzHAdgKQg==",
+      "dev": true,
+      "requires": {
+        "eventemitter-asyncresource": "^1.0.0",
+        "hdr-histogram-js": "^2.0.1",
+        "hdr-histogram-percentiles-obj": "^3.0.0",
+        "nice-napi": "^1.0.2"
+      }
+    },
     "pkg-dir": {
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
@@ -12936,15 +13101,6 @@
         }
       }
     },
-    "pnp-webpack-plugin": {
-      "version": "1.6.4",
-      "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz",
-      "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==",
-      "dev": true,
-      "requires": {
-        "ts-pnp": "^1.1.6"
-      }
-    },
     "portfinder": {
       "version": "1.0.28",
       "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz",
@@ -12974,16 +13130,50 @@
       "dev": true
     },
     "postcss": {
-      "version": "8.2.15",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.15.tgz",
-      "integrity": "sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q==",
+      "version": "8.3.6",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.6.tgz",
+      "integrity": "sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==",
       "dev": true,
       "requires": {
         "colorette": "^1.2.2",
         "nanoid": "^3.1.23",
-        "source-map": "^0.6.1"
+        "source-map-js": "^0.6.2"
+      },
+      "dependencies": {
+        "source-map-js": {
+          "version": "0.6.2",
+          "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz",
+          "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-attribute-case-insensitive": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz",
+      "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.2",
+        "postcss-selector-parser": "^6.0.2"
       },
       "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
         "source-map": {
           "version": "0.6.1",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -13002,1125 +13192,1303 @@
         "postcss-value-parser": "^4.2.0"
       }
     },
-    "postcss-colormin": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz",
-      "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==",
+    "postcss-color-functional-notation": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz",
+      "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==",
       "dev": true,
       "requires": {
-        "browserslist": "^4.16.6",
-        "caniuse-api": "^3.0.0",
-        "colord": "^2.9.1",
-        "postcss-value-parser": "^4.2.0"
+        "postcss": "^7.0.2",
+        "postcss-values-parser": "^2.0.0"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
-    "postcss-convert-values": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz",
-      "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==",
+    "postcss-color-gray": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz",
+      "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==",
       "dev": true,
       "requires": {
-        "browserslist": "^4.20.3",
-        "postcss-value-parser": "^4.2.0"
+        "@csstools/convert-colors": "^1.4.0",
+        "postcss": "^7.0.5",
+        "postcss-values-parser": "^2.0.0"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
-    "postcss-discard-comments": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz",
-      "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==",
-      "dev": true
-    },
-    "postcss-discard-duplicates": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz",
-      "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==",
-      "dev": true
-    },
-    "postcss-discard-empty": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz",
-      "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==",
-      "dev": true
-    },
-    "postcss-discard-overridden": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz",
-      "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==",
-      "dev": true
-    },
-    "postcss-import": {
-      "version": "14.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.0.tgz",
-      "integrity": "sha512-gFDDzXhqr9ELmnLHgCC3TbGfA6Dm/YMb/UN8/f7Uuq4fL7VTk2vOIj6hwINEwbokEmp123bLD7a5m+E+KIetRg==",
+    "postcss-color-hex-alpha": {
+      "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz",
+      "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==",
       "dev": true,
       "requires": {
-        "postcss-value-parser": "^4.0.0",
-        "read-cache": "^1.0.0",
-        "resolve": "^1.1.7"
+        "postcss": "^7.0.14",
+        "postcss-values-parser": "^2.0.1"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
-    "postcss-loader": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.2.0.tgz",
-      "integrity": "sha512-mqgScxHqbiz1yxbnNcPdKYo/6aVt+XExURmEbQlviFVWogDbM4AJ0A/B+ZBpYsJrTRxKw7HyRazg9x0Q9SWwLA==",
+    "postcss-color-mod-function": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz",
+      "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==",
       "dev": true,
       "requires": {
-        "cosmiconfig": "^7.0.0",
-        "klona": "^2.0.4",
-        "loader-utils": "^2.0.0",
-        "schema-utils": "^3.0.0",
-        "semver": "^7.3.4"
+        "@csstools/convert-colors": "^1.4.0",
+        "postcss": "^7.0.2",
+        "postcss-values-parser": "^2.0.0"
       },
       "dependencies": {
-        "lru-cache": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-          "dev": true,
-          "requires": {
-            "yallist": "^4.0.0"
-          }
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
         },
-        "schema-utils": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
-          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
           "dev": true,
           "requires": {
-            "@types/json-schema": "^7.0.8",
-            "ajv": "^6.12.5",
-            "ajv-keywords": "^3.5.2"
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
           }
         },
-        "semver": {
-          "version": "7.3.7",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
-          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
         }
       }
     },
-    "postcss-merge-longhand": {
-      "version": "5.1.6",
-      "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz",
-      "integrity": "sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==",
+    "postcss-color-rebeccapurple": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz",
+      "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==",
       "dev": true,
       "requires": {
-        "postcss-value-parser": "^4.2.0",
-        "stylehacks": "^5.1.0"
-      }
-    },
-    "postcss-merge-rules": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz",
-      "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==",
-      "dev": true,
-      "requires": {
-        "browserslist": "^4.16.6",
-        "caniuse-api": "^3.0.0",
-        "cssnano-utils": "^3.1.0",
-        "postcss-selector-parser": "^6.0.5"
-      }
-    },
-    "postcss-minify-font-values": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz",
-      "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==",
-      "dev": true,
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
+        "postcss": "^7.0.2",
+        "postcss-values-parser": "^2.0.0"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
-    "postcss-minify-gradients": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz",
-      "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==",
+    "postcss-colormin": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz",
+      "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==",
       "dev": true,
       "requires": {
+        "browserslist": "^4.16.6",
+        "caniuse-api": "^3.0.0",
         "colord": "^2.9.1",
-        "cssnano-utils": "^3.1.0",
         "postcss-value-parser": "^4.2.0"
       }
     },
-    "postcss-minify-params": {
-      "version": "5.1.3",
-      "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz",
-      "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==",
+    "postcss-convert-values": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz",
+      "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==",
       "dev": true,
       "requires": {
-        "browserslist": "^4.16.6",
-        "cssnano-utils": "^3.1.0",
+        "browserslist": "^4.20.3",
         "postcss-value-parser": "^4.2.0"
       }
     },
-    "postcss-minify-selectors": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz",
-      "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==",
+    "postcss-custom-media": {
+      "version": "7.0.8",
+      "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz",
+      "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==",
       "dev": true,
       "requires": {
-        "postcss-selector-parser": "^6.0.5"
+        "postcss": "^7.0.14"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
-    "postcss-modules-extract-imports": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
-      "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
-      "dev": true
-    },
-    "postcss-modules-local-by-default": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz",
-      "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==",
+    "postcss-custom-properties": {
+      "version": "8.0.11",
+      "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz",
+      "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==",
       "dev": true,
       "requires": {
-        "icss-utils": "^5.0.0",
-        "postcss-selector-parser": "^6.0.2",
-        "postcss-value-parser": "^4.1.0"
+        "postcss": "^7.0.17",
+        "postcss-values-parser": "^2.0.1"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
-    "postcss-modules-scope": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz",
-      "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==",
+    "postcss-custom-selectors": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz",
+      "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==",
       "dev": true,
       "requires": {
-        "postcss-selector-parser": "^6.0.4"
+        "postcss": "^7.0.2",
+        "postcss-selector-parser": "^5.0.0-rc.3"
+      },
+      "dependencies": {
+        "cssesc": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
+          "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
+          "dev": true
+        },
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "postcss-selector-parser": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
+          "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
+          "dev": true,
+          "requires": {
+            "cssesc": "^2.0.0",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
-    "postcss-modules-values": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
-      "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
+    "postcss-dir-pseudo-class": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz",
+      "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==",
       "dev": true,
       "requires": {
-        "icss-utils": "^5.0.0"
+        "postcss": "^7.0.2",
+        "postcss-selector-parser": "^5.0.0-rc.3"
+      },
+      "dependencies": {
+        "cssesc": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
+          "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
+          "dev": true
+        },
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "postcss-selector-parser": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
+          "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
+          "dev": true,
+          "requires": {
+            "cssesc": "^2.0.0",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
-    "postcss-normalize-charset": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz",
-      "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==",
+    "postcss-discard-comments": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz",
+      "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==",
       "dev": true
     },
-    "postcss-normalize-display-values": {
+    "postcss-discard-duplicates": {
       "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz",
-      "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==",
-      "dev": true,
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "postcss-normalize-positions": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz",
-      "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==",
-      "dev": true,
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
+      "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz",
+      "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==",
+      "dev": true
     },
-    "postcss-normalize-repeat-style": {
+    "postcss-discard-empty": {
       "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz",
-      "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==",
-      "dev": true,
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
+      "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz",
+      "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==",
+      "dev": true
     },
-    "postcss-normalize-string": {
+    "postcss-discard-overridden": {
       "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz",
-      "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==",
+      "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz",
+      "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==",
+      "dev": true
+    },
+    "postcss-double-position-gradients": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz",
+      "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==",
       "dev": true,
       "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "postcss-normalize-timing-functions": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz",
-      "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==",
-      "dev": true,
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
+        "postcss": "^7.0.5",
+        "postcss-values-parser": "^2.0.0"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
-    "postcss-normalize-unicode": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz",
-      "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==",
+    "postcss-env-function": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz",
+      "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==",
       "dev": true,
       "requires": {
-        "browserslist": "^4.16.6",
-        "postcss-value-parser": "^4.2.0"
+        "postcss": "^7.0.2",
+        "postcss-values-parser": "^2.0.0"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
-    "postcss-normalize-url": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz",
-      "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==",
+    "postcss-focus-visible": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz",
+      "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==",
       "dev": true,
       "requires": {
-        "normalize-url": "^6.0.1",
-        "postcss-value-parser": "^4.2.0"
+        "postcss": "^7.0.2"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
-    "postcss-normalize-whitespace": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz",
-      "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==",
+    "postcss-focus-within": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz",
+      "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==",
       "dev": true,
       "requires": {
-        "postcss-value-parser": "^4.2.0"
+        "postcss": "^7.0.2"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
-    "postcss-ordered-values": {
-      "version": "5.1.3",
-      "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz",
-      "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==",
+    "postcss-font-variant": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz",
+      "integrity": "sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==",
       "dev": true,
       "requires": {
-        "cssnano-utils": "^3.1.0",
-        "postcss-value-parser": "^4.2.0"
+        "postcss": "^7.0.2"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
-    "postcss-reduce-initial": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz",
-      "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==",
+    "postcss-gap-properties": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz",
+      "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==",
       "dev": true,
       "requires": {
-        "browserslist": "^4.16.6",
-        "caniuse-api": "^3.0.0"
+        "postcss": "^7.0.2"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
-    "postcss-reduce-transforms": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz",
-      "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==",
+    "postcss-image-set-function": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz",
+      "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==",
       "dev": true,
       "requires": {
-        "postcss-value-parser": "^4.2.0"
+        "postcss": "^7.0.2",
+        "postcss-values-parser": "^2.0.0"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
-    "postcss-selector-parser": {
-      "version": "6.0.10",
-      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
-      "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
+    "postcss-import": {
+      "version": "14.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.2.tgz",
+      "integrity": "sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==",
       "dev": true,
       "requires": {
-        "cssesc": "^3.0.0",
-        "util-deprecate": "^1.0.2"
+        "postcss-value-parser": "^4.0.0",
+        "read-cache": "^1.0.0",
+        "resolve": "^1.1.7"
       }
     },
-    "postcss-svgo": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz",
-      "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==",
+    "postcss-initial": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.4.tgz",
+      "integrity": "sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg==",
       "dev": true,
       "requires": {
-        "postcss-value-parser": "^4.2.0",
-        "svgo": "^2.7.0"
+        "postcss": "^7.0.2"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
-    "postcss-unique-selectors": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz",
-      "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==",
-      "dev": true,
-      "requires": {
-        "postcss-selector-parser": "^6.0.5"
-      }
-    },
-    "postcss-value-parser": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
-      "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
-      "dev": true
-    },
-    "pretty-bytes": {
-      "version": "5.6.0",
-      "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
-      "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==",
-      "dev": true
-    },
-    "process": {
-      "version": "0.11.10",
-      "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
-      "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
-      "dev": true
-    },
-    "process-nextick-args": {
+    "postcss-lab-function": {
       "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
-      "dev": true
-    },
-    "progress": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
-      "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
-      "dev": true
-    },
-    "promise-breaker": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/promise-breaker/-/promise-breaker-5.0.0.tgz",
-      "integrity": "sha512-mgsWQuG4kJ1dtO6e/QlNDLFtMkMzzecsC69aI5hlLEjGHFNpHrvGhFi4LiK5jg2SMQj74/diH+wZliL9LpGsyA==",
-      "dev": true
-    },
-    "promise-inflight": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
-      "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
-      "dev": true
-    },
-    "promise-polyfill": {
-      "version": "8.1.3",
-      "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz",
-      "integrity": "sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g=="
-    },
-    "promise-retry": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz",
-      "integrity": "sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw==",
+      "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz",
+      "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==",
       "dev": true,
       "requires": {
-        "err-code": "^1.0.0",
-        "retry": "^0.10.0"
+        "@csstools/convert-colors": "^1.4.0",
+        "postcss": "^7.0.2",
+        "postcss-values-parser": "^2.0.0"
       },
       "dependencies": {
-        "err-code": {
-          "version": "1.1.2",
-          "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz",
-          "integrity": "sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==",
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
           "dev": true
         },
-        "retry": {
-          "version": "0.10.1",
-          "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz",
-          "integrity": "sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==",
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true
         }
       }
     },
-    "protobufjs": {
-      "version": "6.10.2",
-      "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.10.2.tgz",
-      "integrity": "sha512-27yj+04uF6ya9l+qfpH187aqEzfCF4+Uit0I9ZBQVqK09hk/SQzKa2MUqUpXaVa7LOFRg1TSSr3lVxGOk6c0SQ==",
-      "requires": {
-        "@protobufjs/aspromise": "^1.1.2",
-        "@protobufjs/base64": "^1.1.2",
-        "@protobufjs/codegen": "^2.0.4",
-        "@protobufjs/eventemitter": "^1.1.0",
-        "@protobufjs/fetch": "^1.1.0",
-        "@protobufjs/float": "^1.0.2",
-        "@protobufjs/inquire": "^1.1.0",
-        "@protobufjs/path": "^1.1.2",
-        "@protobufjs/pool": "^1.1.0",
-        "@protobufjs/utf8": "^1.1.0",
-        "@types/long": "^4.0.1",
-        "@types/node": "^13.7.0",
-        "long": "^4.0.0"
-      },
-      "dependencies": {
-        "@types/node": {
-          "version": "13.13.41",
-          "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.41.tgz",
-          "integrity": "sha512-qLT9IvHiXJfdrje9VmsLzun7cQ65obsBTmtU3EOnCSLFOoSHx1hpiRHoBnpdbyFqnzqdUUIv81JcEJQCB8un9g=="
-        }
-      }
-    },
-    "protractor": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz",
-      "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==",
+    "postcss-loader": {
+      "version": "6.1.1",
+      "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.1.1.tgz",
+      "integrity": "sha512-lBmJMvRh1D40dqpWKr9Rpygwxn8M74U9uaCSeYGNKLGInbk9mXBt1ultHf2dH9Ghk6Ue4UXlXWwGMH9QdUJ5ug==",
       "dev": true,
       "requires": {
-        "@types/q": "^0.0.32",
-        "@types/selenium-webdriver": "^3.0.0",
-        "blocking-proxy": "^1.0.0",
-        "browserstack": "^1.5.1",
-        "chalk": "^1.1.3",
-        "glob": "^7.0.3",
-        "jasmine": "2.8.0",
-        "jasminewd2": "^2.1.0",
-        "q": "1.4.1",
-        "saucelabs": "^1.5.0",
-        "selenium-webdriver": "3.6.0",
-        "source-map-support": "~0.4.0",
-        "webdriver-js-extender": "2.1.0",
-        "webdriver-manager": "^12.1.7",
-        "yargs": "^15.3.1"
+        "cosmiconfig": "^7.0.0",
+        "klona": "^2.0.4",
+        "semver": "^7.3.5"
       },
       "dependencies": {
-        "@types/q": {
-          "version": "0.0.32",
-          "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz",
-          "integrity": "sha512-qYi3YV9inU/REEfxwVcGZzbS3KG/Xs90lv0Pr+lDtuVjBPGd1A+eciXzVSaRvLify132BfcvhvEjeVahrUl0Ug==",
-          "dev": true
-        },
-        "ansi-styles": {
-          "version": "2.2.1",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-          "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
-          "dev": true
-        },
-        "chalk": {
-          "version": "1.1.3",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-          "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^2.2.1",
-            "escape-string-regexp": "^1.0.2",
-            "has-ansi": "^2.0.0",
-            "strip-ansi": "^3.0.0",
-            "supports-color": "^2.0.0"
-          }
-        },
-        "del": {
-          "version": "2.2.2",
-          "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
-          "integrity": "sha512-Z4fzpbIRjOu7lO5jCETSWoqUDVe0IPOlfugBsF6suen2LKDlVb4QZpKEM9P+buNJ4KI1eN7I083w/pbKUpsrWQ==",
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
           "dev": true,
           "requires": {
-            "globby": "^5.0.0",
-            "is-path-cwd": "^1.0.0",
-            "is-path-in-cwd": "^1.0.0",
-            "object-assign": "^4.0.1",
-            "pify": "^2.0.0",
-            "pinkie-promise": "^2.0.0",
-            "rimraf": "^2.2.8"
+            "yallist": "^4.0.0"
           }
         },
-        "globby": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
-          "integrity": "sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ==",
+        "semver": {
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
           "dev": true,
           "requires": {
-            "array-union": "^1.0.1",
-            "arrify": "^1.0.0",
-            "glob": "^7.0.3",
-            "object-assign": "^4.0.1",
-            "pify": "^2.0.0",
-            "pinkie-promise": "^2.0.0"
+            "lru-cache": "^6.0.0"
           }
-        },
-        "is-path-cwd": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
-          "integrity": "sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==",
+        }
+      }
+    },
+    "postcss-logical": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz",
+      "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.2"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
           "dev": true
         },
-        "is-path-in-cwd": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
-          "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
-          "dev": true,
-          "requires": {
-            "is-path-inside": "^1.0.0"
-          }
-        },
-        "is-path-inside": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
-          "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==",
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
           "dev": true,
           "requires": {
-            "path-is-inside": "^1.0.1"
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
           }
         },
-        "pify": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-          "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true
-        },
-        "q": {
-          "version": "1.4.1",
-          "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
-          "integrity": "sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==",
+        }
+      }
+    },
+    "postcss-media-minmax": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz",
+      "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.2"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
           "dev": true
         },
-        "rimraf": {
-          "version": "2.7.1",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
           "dev": true,
           "requires": {
-            "glob": "^7.1.3"
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
           }
         },
-        "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-          "dev": true
-        },
         "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
-          "dev": true
-        },
-        "source-map-support": {
-          "version": "0.4.18",
-          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
-          "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
-          "dev": true,
-          "requires": {
-            "source-map": "^0.5.6"
-          }
-        },
-        "supports-color": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-          "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true
-        },
-        "webdriver-manager": {
-          "version": "12.1.8",
-          "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.8.tgz",
-          "integrity": "sha512-qJR36SXG2VwKugPcdwhaqcLQOD7r8P2Xiv9sfNbfZrKBnX243iAkOueX1yAmeNgIKhJ3YAT/F2gq6IiEZzahsg==",
-          "dev": true,
-          "requires": {
-            "adm-zip": "^0.4.9",
-            "chalk": "^1.1.1",
-            "del": "^2.2.0",
-            "glob": "^7.0.3",
-            "ini": "^1.3.4",
-            "minimist": "^1.2.0",
-            "q": "^1.4.1",
-            "request": "^2.87.0",
-            "rimraf": "^2.5.2",
-            "semver": "^5.3.0",
-            "xml2js": "^0.4.17"
-          }
         }
       }
     },
-    "proxy-addr": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
-      "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
+    "postcss-merge-longhand": {
+      "version": "5.1.6",
+      "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz",
+      "integrity": "sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==",
       "dev": true,
       "requires": {
-        "forwarded": "~0.1.2",
-        "ipaddr.js": "1.9.1"
+        "postcss-value-parser": "^4.2.0",
+        "stylehacks": "^5.1.0"
       }
     },
-    "prr": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
-      "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
-      "dev": true
-    },
-    "psl": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
-      "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
-      "dev": true
-    },
-    "public-encrypt": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
-      "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+    "postcss-merge-rules": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz",
+      "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==",
       "dev": true,
       "requires": {
-        "bn.js": "^4.1.0",
-        "browserify-rsa": "^4.0.0",
-        "create-hash": "^1.1.0",
-        "parse-asn1": "^5.0.0",
-        "randombytes": "^2.0.1",
-        "safe-buffer": "^5.1.2"
-      },
-      "dependencies": {
-        "bn.js": {
-          "version": "4.12.0",
-          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-          "dev": true
-        }
+        "browserslist": "^4.16.6",
+        "caniuse-api": "^3.0.0",
+        "cssnano-utils": "^3.1.0",
+        "postcss-selector-parser": "^6.0.5"
       }
     },
-    "pump": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
-      "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+    "postcss-minify-font-values": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz",
+      "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==",
       "dev": true,
       "requires": {
-        "end-of-stream": "^1.1.0",
-        "once": "^1.3.1"
+        "postcss-value-parser": "^4.2.0"
       }
     },
-    "pumpify": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
-      "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+    "postcss-minify-gradients": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz",
+      "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==",
       "dev": true,
       "requires": {
-        "duplexify": "^3.6.0",
-        "inherits": "^2.0.3",
-        "pump": "^2.0.0"
-      },
-      "dependencies": {
-        "pump": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
-          "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
-          "dev": true,
-          "requires": {
-            "end-of-stream": "^1.1.0",
-            "once": "^1.3.1"
-          }
-        }
+        "colord": "^2.9.1",
+        "cssnano-utils": "^3.1.0",
+        "postcss-value-parser": "^4.2.0"
       }
     },
-    "punycode": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
-      "dev": true
-    },
-    "pupa": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz",
-      "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==",
+    "postcss-minify-params": {
+      "version": "5.1.3",
+      "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz",
+      "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==",
       "dev": true,
       "requires": {
-        "escape-goat": "^2.0.0"
+        "browserslist": "^4.16.6",
+        "cssnano-utils": "^3.1.0",
+        "postcss-value-parser": "^4.2.0"
       }
     },
-    "qjobs": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz",
-      "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==",
-      "dev": true
-    },
-    "qs": {
-      "version": "6.5.2",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
-      "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
-      "dev": true
-    },
-    "querystring": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
-      "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==",
-      "dev": true
-    },
-    "querystring-es3": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
-      "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==",
-      "dev": true
-    },
-    "querystringify": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
-      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
-      "dev": true
+    "postcss-minify-selectors": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz",
+      "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==",
+      "dev": true,
+      "requires": {
+        "postcss-selector-parser": "^6.0.5"
+      }
     },
-    "queue-microtask": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
-      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+    "postcss-modules-extract-imports": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
+      "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
       "dev": true
     },
-    "randombytes": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
-      "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+    "postcss-modules-local-by-default": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz",
+      "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==",
       "dev": true,
       "requires": {
-        "safe-buffer": "^5.1.0"
+        "icss-utils": "^5.0.0",
+        "postcss-selector-parser": "^6.0.2",
+        "postcss-value-parser": "^4.1.0"
       }
     },
-    "randomfill": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
-      "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+    "postcss-modules-scope": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz",
+      "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==",
       "dev": true,
       "requires": {
-        "randombytes": "^2.0.5",
-        "safe-buffer": "^5.1.0"
+        "postcss-selector-parser": "^6.0.4"
       }
     },
-    "range-parser": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
-      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
-      "dev": true
-    },
-    "raw-body": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
-      "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
+    "postcss-modules-values": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
+      "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
       "dev": true,
       "requires": {
-        "bytes": "3.1.0",
-        "http-errors": "1.7.2",
-        "iconv-lite": "0.4.24",
-        "unpipe": "1.0.0"
-      },
-      "dependencies": {
-        "bytes": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
-          "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
-          "dev": true
-        }
+        "icss-utils": "^5.0.0"
       }
     },
-    "raw-loader": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz",
-      "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==",
+    "postcss-nesting": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz",
+      "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==",
       "dev": true,
       "requires": {
-        "loader-utils": "^2.0.0",
-        "schema-utils": "^3.0.0"
+        "postcss": "^7.0.2"
       },
       "dependencies": {
-        "schema-utils": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
-          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
           "dev": true,
           "requires": {
-            "@types/json-schema": "^7.0.8",
-            "ajv": "^6.12.5",
-            "ajv-keywords": "^3.5.2"
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
           }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
         }
       }
     },
-    "rc": {
-      "version": "1.2.8",
-      "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
-      "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+    "postcss-normalize-charset": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz",
+      "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==",
+      "dev": true
+    },
+    "postcss-normalize-display-values": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz",
+      "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==",
       "dev": true,
       "requires": {
-        "deep-extend": "^0.6.0",
-        "ini": "~1.3.0",
-        "minimist": "^1.2.0",
-        "strip-json-comments": "~2.0.1"
+        "postcss-value-parser": "^4.2.0"
       }
     },
-    "re2": {
-      "version": "1.15.9",
-      "resolved": "https://registry.npmjs.org/re2/-/re2-1.15.9.tgz",
-      "integrity": "sha512-AXWEhpMTBdC+3oqbjdU07dk0pBCvxh5vbOMLERL6Y8FYBSGn4vXlLe8cYszn64Yy7H8keVMrgPzoSvOd4mePpg==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "install-artifact-from-github": "^1.2.0",
-        "nan": "^2.14.2",
-        "node-gyp": "^7.1.2"
-      }
-    },
-    "read-cache": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
-      "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
-      "dev": true,
-      "requires": {
-        "pify": "^2.3.0"
-      },
-      "dependencies": {
-        "pify": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-          "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
-          "dev": true
-        }
-      }
-    },
-    "read-package-json-fast": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-1.2.2.tgz",
-      "integrity": "sha512-39DbPJjkltEzfXJXB6D8/Ir3GFOU2YbSKa2HaB/Y3nKrc/zY+0XrALpID6/13ezWyzqvOHrBbR4t4cjQuTdBVQ==",
-      "dev": true,
-      "requires": {
-        "json-parse-even-better-errors": "^2.3.0",
-        "npm-normalize-package-bin": "^1.0.1"
-      }
-    },
-    "readable-stream": {
-      "version": "2.3.7",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
-      "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+    "postcss-normalize-positions": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz",
+      "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==",
       "dev": true,
       "requires": {
-        "core-util-is": "~1.0.0",
-        "inherits": "~2.0.3",
-        "isarray": "~1.0.0",
-        "process-nextick-args": "~2.0.0",
-        "safe-buffer": "~5.1.1",
-        "string_decoder": "~1.1.1",
-        "util-deprecate": "~1.0.1"
+        "postcss-value-parser": "^4.2.0"
       }
     },
-    "readdirp": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
-      "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
+    "postcss-normalize-repeat-style": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz",
+      "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==",
       "dev": true,
       "requires": {
-        "picomatch": "^2.2.1"
+        "postcss-value-parser": "^4.2.0"
       }
     },
-    "recordrtc": {
-      "version": "5.6.1",
-      "resolved": "https://registry.npmjs.org/recordrtc/-/recordrtc-5.6.1.tgz",
-      "integrity": "sha512-UU7Fd9IIuz60TPq4GgL1qtgo2mzEZWzPxEraNe32eo4/ndjKmuj715HB7W1k63G09teM1dXJYubPEmLkQ/lq5Q=="
-    },
-    "redeyed": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz",
-      "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=",
+    "postcss-normalize-string": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz",
+      "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==",
       "dev": true,
       "requires": {
-        "esprima": "~4.0.0"
+        "postcss-value-parser": "^4.2.0"
       }
     },
-    "reflect-metadata": {
-      "version": "0.1.13",
-      "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
-      "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==",
-      "dev": true
-    },
-    "regenerate": {
-      "version": "1.4.2",
-      "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
-      "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
-      "dev": true
-    },
-    "regenerate-unicode-properties": {
-      "version": "10.0.1",
-      "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz",
-      "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==",
+    "postcss-normalize-timing-functions": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz",
+      "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==",
       "dev": true,
       "requires": {
-        "regenerate": "^1.4.2"
+        "postcss-value-parser": "^4.2.0"
       }
     },
-    "regenerator-runtime": {
-      "version": "0.13.7",
-      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
-      "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==",
-      "dev": true
-    },
-    "regenerator-transform": {
-      "version": "0.15.0",
-      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz",
-      "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==",
+    "postcss-normalize-unicode": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz",
+      "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==",
       "dev": true,
       "requires": {
-        "@babel/runtime": "^7.8.4"
+        "browserslist": "^4.16.6",
+        "postcss-value-parser": "^4.2.0"
       }
     },
-    "regex-not": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
-      "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+    "postcss-normalize-url": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz",
+      "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==",
       "dev": true,
       "requires": {
-        "extend-shallow": "^3.0.2",
-        "safe-regex": "^1.1.0"
+        "normalize-url": "^6.0.1",
+        "postcss-value-parser": "^4.2.0"
       }
     },
-    "regex-parser": {
-      "version": "2.2.11",
-      "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz",
-      "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==",
-      "dev": true
-    },
-    "regexp.prototype.flags": {
-      "version": "1.4.3",
-      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
-      "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
+    "postcss-normalize-whitespace": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz",
+      "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==",
       "dev": true,
       "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3",
-        "functions-have-names": "^1.2.2"
+        "postcss-value-parser": "^4.2.0"
       }
     },
-    "regexpu-core": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz",
-      "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==",
+    "postcss-ordered-values": {
+      "version": "5.1.3",
+      "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz",
+      "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==",
       "dev": true,
       "requires": {
-        "regenerate": "^1.4.2",
-        "regenerate-unicode-properties": "^10.0.1",
-        "regjsgen": "^0.6.0",
-        "regjsparser": "^0.8.2",
-        "unicode-match-property-ecmascript": "^2.0.0",
-        "unicode-match-property-value-ecmascript": "^2.0.0"
+        "cssnano-utils": "^3.1.0",
+        "postcss-value-parser": "^4.2.0"
       }
     },
-    "registry-auth-token": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz",
-      "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==",
+    "postcss-overflow-shorthand": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz",
+      "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==",
       "dev": true,
       "requires": {
-        "rc": "^1.2.8"
+        "postcss": "^7.0.2"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
-    "registry-url": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz",
-      "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==",
+    "postcss-page-break": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz",
+      "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==",
       "dev": true,
       "requires": {
-        "rc": "^1.2.8"
+        "postcss": "^7.0.2"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
-    "regjsgen": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz",
-      "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==",
-      "dev": true
-    },
-    "regjsparser": {
-      "version": "0.8.4",
-      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz",
-      "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==",
+    "postcss-place": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz",
+      "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==",
       "dev": true,
       "requires": {
-        "jsesc": "~0.5.0"
+        "postcss": "^7.0.2",
+        "postcss-values-parser": "^2.0.0"
       },
       "dependencies": {
-        "jsesc": {
-          "version": "0.5.0",
-          "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
-          "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true
         }
       }
     },
-    "remove-trailing-separator": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
-      "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==",
-      "dev": true
-    },
-    "repeat-element": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
-      "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
-      "dev": true
-    },
-    "repeat-string": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
-      "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
-      "dev": true
+    "postcss-preset-env": {
+      "version": "6.7.0",
+      "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz",
+      "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==",
+      "dev": true,
+      "requires": {
+        "autoprefixer": "^9.6.1",
+        "browserslist": "^4.6.4",
+        "caniuse-lite": "^1.0.30000981",
+        "css-blank-pseudo": "^0.1.4",
+        "css-has-pseudo": "^0.10.0",
+        "css-prefers-color-scheme": "^3.1.1",
+        "cssdb": "^4.4.0",
+        "postcss": "^7.0.17",
+        "postcss-attribute-case-insensitive": "^4.0.1",
+        "postcss-color-functional-notation": "^2.0.1",
+        "postcss-color-gray": "^5.0.0",
+        "postcss-color-hex-alpha": "^5.0.3",
+        "postcss-color-mod-function": "^3.0.3",
+        "postcss-color-rebeccapurple": "^4.0.1",
+        "postcss-custom-media": "^7.0.8",
+        "postcss-custom-properties": "^8.0.11",
+        "postcss-custom-selectors": "^5.1.2",
+        "postcss-dir-pseudo-class": "^5.0.0",
+        "postcss-double-position-gradients": "^1.0.0",
+        "postcss-env-function": "^2.0.2",
+        "postcss-focus-visible": "^4.0.0",
+        "postcss-focus-within": "^3.0.0",
+        "postcss-font-variant": "^4.0.0",
+        "postcss-gap-properties": "^2.0.0",
+        "postcss-image-set-function": "^3.0.1",
+        "postcss-initial": "^3.0.0",
+        "postcss-lab-function": "^2.0.1",
+        "postcss-logical": "^3.0.0",
+        "postcss-media-minmax": "^4.0.0",
+        "postcss-nesting": "^7.0.0",
+        "postcss-overflow-shorthand": "^2.0.0",
+        "postcss-page-break": "^2.0.0",
+        "postcss-place": "^4.0.1",
+        "postcss-pseudo-class-any-link": "^6.0.0",
+        "postcss-replace-overflow-wrap": "^3.0.0",
+        "postcss-selector-matches": "^4.0.0",
+        "postcss-selector-not": "^4.0.0"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
     },
-    "request": {
-      "version": "2.88.2",
-      "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
-      "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
+    "postcss-pseudo-class-any-link": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz",
+      "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==",
       "dev": true,
       "requires": {
-        "aws-sign2": "~0.7.0",
-        "aws4": "^1.8.0",
-        "caseless": "~0.12.0",
-        "combined-stream": "~1.0.6",
-        "extend": "~3.0.2",
-        "forever-agent": "~0.6.1",
-        "form-data": "~2.3.2",
-        "har-validator": "~5.1.3",
-        "http-signature": "~1.2.0",
-        "is-typedarray": "~1.0.0",
-        "isstream": "~0.1.2",
-        "json-stringify-safe": "~5.0.1",
-        "mime-types": "~2.1.19",
-        "oauth-sign": "~0.9.0",
-        "performance-now": "^2.1.0",
-        "qs": "~6.5.2",
-        "safe-buffer": "^5.1.2",
-        "tough-cookie": "~2.5.0",
-        "tunnel-agent": "^0.6.0",
-        "uuid": "^3.3.2"
+        "postcss": "^7.0.2",
+        "postcss-selector-parser": "^5.0.0-rc.3"
+      },
+      "dependencies": {
+        "cssesc": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
+          "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
+          "dev": true
+        },
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "postcss-selector-parser": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
+          "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
+          "dev": true,
+          "requires": {
+            "cssesc": "^2.0.0",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
-    "require-directory": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
-      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
-    },
-    "require-main-filename": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
-      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
-      "dev": true
-    },
-    "requires-port": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
-      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
-      "dev": true
+    "postcss-reduce-initial": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz",
+      "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.16.6",
+        "caniuse-api": "^3.0.0"
+      }
     },
-    "resolve": {
-      "version": "1.19.0",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz",
-      "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==",
+    "postcss-reduce-transforms": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz",
+      "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==",
+      "dev": true,
       "requires": {
-        "is-core-module": "^2.1.0",
-        "path-parse": "^1.0.6"
+        "postcss-value-parser": "^4.2.0"
       }
     },
-    "resolve-cwd": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
-      "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==",
+    "postcss-replace-overflow-wrap": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz",
+      "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==",
       "dev": true,
       "requires": {
-        "resolve-from": "^3.0.0"
+        "postcss": "^7.0.2"
       },
       "dependencies": {
-        "resolve-from": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
-          "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true
         }
       }
     },
-    "resolve-from": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
-      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
-      "dev": true
-    },
-    "resolve-url": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
-      "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
-      "dev": true
-    },
-    "resolve-url-loader": {
+    "postcss-selector-matches": {
       "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz",
-      "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==",
+      "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz",
+      "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==",
       "dev": true,
       "requires": {
-        "adjust-sourcemap-loader": "^4.0.0",
-        "convert-source-map": "^1.7.0",
-        "loader-utils": "^2.0.0",
-        "postcss": "^7.0.35",
-        "source-map": "0.6.1"
+        "balanced-match": "^1.0.0",
+        "postcss": "^7.0.2"
       },
       "dependencies": {
         "picocolors": {
@@ -14147,292 +14515,271 @@
         }
       }
     },
-    "responselike": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
-      "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
+    "postcss-selector-not": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz",
+      "integrity": "sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ==",
       "dev": true,
       "requires": {
-        "lowercase-keys": "^1.0.0"
+        "balanced-match": "^1.0.0",
+        "postcss": "^7.0.2"
+      },
+      "dependencies": {
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+          "dev": true,
+          "requires": {
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
-    "restore-cursor": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
-      "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+    "postcss-selector-parser": {
+      "version": "6.0.10",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
+      "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
       "dev": true,
       "requires": {
-        "onetime": "^5.1.0",
-        "signal-exit": "^3.0.2"
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
       }
     },
-    "ret": {
-      "version": "0.1.15",
-      "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
-      "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
-      "dev": true
-    },
-    "retry": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
-      "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
-      "dev": true
-    },
-    "retry-request": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.1.3.tgz",
-      "integrity": "sha512-QnRZUpuPNgX0+D1xVxul6DbJ9slvo4Rm6iV/dn63e048MvGbUZiKySVt6Tenp04JqmchxjiLltGerOJys7kJYQ==",
+    "postcss-svgo": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz",
+      "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==",
       "dev": true,
       "requires": {
-        "debug": "^4.1.1"
+        "postcss-value-parser": "^4.2.0",
+        "svgo": "^2.7.0"
       }
     },
-    "reusify": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
-      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
-      "dev": true
-    },
-    "rfdc": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
-      "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==",
-      "dev": true
-    },
-    "rimraf": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz",
-      "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==",
+    "postcss-unique-selectors": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz",
+      "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==",
       "dev": true,
       "requires": {
-        "glob": "^7.1.3"
+        "postcss-selector-parser": "^6.0.5"
       }
     },
-    "ripemd160": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
-      "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
-      "dev": true,
-      "requires": {
-        "hash-base": "^3.0.0",
-        "inherits": "^2.0.1"
-      }
+    "postcss-value-parser": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+      "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+      "dev": true
     },
-    "rollup": {
-      "version": "2.38.4",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.38.4.tgz",
-      "integrity": "sha512-B0LcJhjiwKkTl79aGVF/u5KdzsH8IylVfV56Ut6c9ouWLJcUK17T83aZBetNYSnZtXf2OHD4+2PbmRW+Fp5ulg==",
+    "postcss-values-parser": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz",
+      "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==",
       "dev": true,
       "requires": {
-        "fsevents": "~2.3.1"
+        "flatten": "^1.0.2",
+        "indexes-of": "^1.0.1",
+        "uniq": "^1.0.1"
       }
     },
-    "router": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/router/-/router-1.3.5.tgz",
-      "integrity": "sha512-kozCJZUhuSJ5VcLhSb3F8fsmGXy+8HaDbKCAerR1G6tq3mnMZFMuSohbFvGv1c5oMFipijDjRZuuN/Sq5nMf3g==",
-      "dev": true,
-      "requires": {
-        "array-flatten": "3.0.0",
-        "debug": "2.6.9",
-        "methods": "~1.1.2",
-        "parseurl": "~1.3.3",
-        "path-to-regexp": "0.1.7",
-        "setprototypeof": "1.2.0",
-        "utils-merge": "1.0.1"
-      },
-      "dependencies": {
-        "array-flatten": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz",
-          "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==",
-          "dev": true
-        },
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-          "dev": true
-        },
-        "setprototypeof": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
-          "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
-          "dev": true
-        }
-      }
+    "pretty-bytes": {
+      "version": "5.6.0",
+      "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
+      "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==",
+      "dev": true
     },
-    "rsvp": {
-      "version": "4.8.5",
-      "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
-      "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==",
+    "process-nextick-args": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
       "dev": true
     },
-    "run-async": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
-      "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
+    "progress": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+      "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
       "dev": true
     },
-    "run-parallel": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
-      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
-      "dev": true,
-      "requires": {
-        "queue-microtask": "^1.2.2"
-      }
+    "promise-breaker": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/promise-breaker/-/promise-breaker-5.0.0.tgz",
+      "integrity": "sha512-mgsWQuG4kJ1dtO6e/QlNDLFtMkMzzecsC69aI5hlLEjGHFNpHrvGhFi4LiK5jg2SMQj74/diH+wZliL9LpGsyA==",
+      "dev": true
     },
-    "run-queue": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
-      "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==",
+    "promise-inflight": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
+      "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
+      "dev": true
+    },
+    "promise-polyfill": {
+      "version": "8.1.3",
+      "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz",
+      "integrity": "sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g=="
+    },
+    "promise-retry": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
+      "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
       "dev": true,
       "requires": {
-        "aproba": "^1.1.1"
+        "err-code": "^2.0.2",
+        "retry": "^0.12.0"
       }
     },
-    "rxjs": {
-      "version": "6.5.5",
-      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz",
-      "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==",
+    "protobufjs": {
+      "version": "6.10.2",
+      "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.10.2.tgz",
+      "integrity": "sha512-27yj+04uF6ya9l+qfpH187aqEzfCF4+Uit0I9ZBQVqK09hk/SQzKa2MUqUpXaVa7LOFRg1TSSr3lVxGOk6c0SQ==",
       "requires": {
-        "tslib": "^1.9.0"
+        "@protobufjs/aspromise": "^1.1.2",
+        "@protobufjs/base64": "^1.1.2",
+        "@protobufjs/codegen": "^2.0.4",
+        "@protobufjs/eventemitter": "^1.1.0",
+        "@protobufjs/fetch": "^1.1.0",
+        "@protobufjs/float": "^1.0.2",
+        "@protobufjs/inquire": "^1.1.0",
+        "@protobufjs/path": "^1.1.2",
+        "@protobufjs/pool": "^1.1.0",
+        "@protobufjs/utf8": "^1.1.0",
+        "@types/long": "^4.0.1",
+        "@types/node": "^13.7.0",
+        "long": "^4.0.0"
       },
       "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+        "@types/node": {
+          "version": "13.13.41",
+          "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.41.tgz",
+          "integrity": "sha512-qLT9IvHiXJfdrje9VmsLzun7cQ65obsBTmtU3EOnCSLFOoSHx1hpiRHoBnpdbyFqnzqdUUIv81JcEJQCB8un9g=="
         }
       }
     },
-    "safe-buffer": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
-    },
-    "safe-regex": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
-      "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
-      "dev": true,
-      "requires": {
-        "ret": "~0.1.10"
-      }
-    },
-    "safer-buffer": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
-      "dev": true
-    },
-    "sass": {
-      "version": "1.32.6",
-      "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.6.tgz",
-      "integrity": "sha512-1bcDHDcSqeFtMr0JXI3xc/CXX6c4p0wHHivJdru8W7waM7a1WjKMm4m/Z5sY7CbVw4Whi2Chpcw6DFfSWwGLzQ==",
-      "dev": true,
-      "requires": {
-        "chokidar": ">=2.0.0 <4.0.0"
-      }
-    },
-    "sass-loader": {
-      "version": "10.1.1",
-      "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.1.1.tgz",
-      "integrity": "sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==",
+    "protractor": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz",
+      "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==",
       "dev": true,
       "requires": {
-        "klona": "^2.0.4",
-        "loader-utils": "^2.0.0",
-        "neo-async": "^2.6.2",
-        "schema-utils": "^3.0.0",
-        "semver": "^7.3.2"
+        "@types/q": "^0.0.32",
+        "@types/selenium-webdriver": "^3.0.0",
+        "blocking-proxy": "^1.0.0",
+        "browserstack": "^1.5.1",
+        "chalk": "^1.1.3",
+        "glob": "^7.0.3",
+        "jasmine": "2.8.0",
+        "jasminewd2": "^2.1.0",
+        "q": "1.4.1",
+        "saucelabs": "^1.5.0",
+        "selenium-webdriver": "3.6.0",
+        "source-map-support": "~0.4.0",
+        "webdriver-js-extender": "2.1.0",
+        "webdriver-manager": "^12.1.7",
+        "yargs": "^15.3.1"
       },
       "dependencies": {
-        "lru-cache": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+        "@types/q": {
+          "version": "0.0.32",
+          "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz",
+          "integrity": "sha512-qYi3YV9inU/REEfxwVcGZzbS3KG/Xs90lv0Pr+lDtuVjBPGd1A+eciXzVSaRvLify132BfcvhvEjeVahrUl0Ug==",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
           "dev": true,
           "requires": {
-            "yallist": "^4.0.0"
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
           }
         },
-        "schema-utils": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
-          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+        "del": {
+          "version": "2.2.2",
+          "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
+          "integrity": "sha512-Z4fzpbIRjOu7lO5jCETSWoqUDVe0IPOlfugBsF6suen2LKDlVb4QZpKEM9P+buNJ4KI1eN7I083w/pbKUpsrWQ==",
           "dev": true,
           "requires": {
-            "@types/json-schema": "^7.0.8",
-            "ajv": "^6.12.5",
-            "ajv-keywords": "^3.5.2"
+            "globby": "^5.0.0",
+            "is-path-cwd": "^1.0.0",
+            "is-path-in-cwd": "^1.0.0",
+            "object-assign": "^4.0.1",
+            "pify": "^2.0.0",
+            "pinkie-promise": "^2.0.0",
+            "rimraf": "^2.2.8"
           }
         },
-        "semver": {
-          "version": "7.3.7",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
-          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+        "globby": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
+          "integrity": "sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ==",
           "dev": true,
           "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        }
-      }
-    },
-    "saucelabs": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz",
-      "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==",
-      "dev": true,
-      "requires": {
-        "https-proxy-agent": "^2.2.1"
-      }
-    },
-    "sax": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
-      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
-      "dev": true
-    },
-    "schema-utils": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
-      "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
-      "dev": true,
-      "requires": {
-        "@types/json-schema": "^7.0.5",
-        "ajv": "^6.12.4",
-        "ajv-keywords": "^3.5.2"
-      }
-    },
-    "select-hose": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
-      "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==",
-      "dev": true
-    },
-    "selenium-webdriver": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz",
-      "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==",
-      "dev": true,
-      "requires": {
-        "jszip": "^3.1.3",
-        "rimraf": "^2.5.4",
-        "tmp": "0.0.30",
-        "xml2js": "^0.4.17"
-      },
-      "dependencies": {
+            "array-union": "^1.0.1",
+            "arrify": "^1.0.0",
+            "glob": "^7.0.3",
+            "object-assign": "^4.0.1",
+            "pify": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "is-path-cwd": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
+          "integrity": "sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==",
+          "dev": true
+        },
+        "is-path-in-cwd": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
+          "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
+          "dev": true,
+          "requires": {
+            "is-path-inside": "^1.0.0"
+          }
+        },
+        "is-path-inside": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
+          "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==",
+          "dev": true,
+          "requires": {
+            "path-is-inside": "^1.0.1"
+          }
+        },
+        "pify": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+          "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+          "dev": true
+        },
+        "q": {
+          "version": "1.4.1",
+          "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
+          "integrity": "sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==",
+          "dev": true
+        },
         "rimraf": {
           "version": "2.7.1",
           "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
@@ -14442,602 +14789,507 @@
             "glob": "^7.1.3"
           }
         },
-        "tmp": {
-          "version": "0.0.30",
-          "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz",
-          "integrity": "sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w==",
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+          "dev": true
+        },
+        "source-map-support": {
+          "version": "0.4.18",
+          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
+          "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
           "dev": true,
           "requires": {
-            "os-tmpdir": "~1.0.1"
+            "source-map": "^0.5.6"
+          }
+        },
+        "supports-color": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+          "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+          "dev": true
+        },
+        "webdriver-manager": {
+          "version": "12.1.8",
+          "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.8.tgz",
+          "integrity": "sha512-qJR36SXG2VwKugPcdwhaqcLQOD7r8P2Xiv9sfNbfZrKBnX243iAkOueX1yAmeNgIKhJ3YAT/F2gq6IiEZzahsg==",
+          "dev": true,
+          "requires": {
+            "adm-zip": "^0.4.9",
+            "chalk": "^1.1.1",
+            "del": "^2.2.0",
+            "glob": "^7.0.3",
+            "ini": "^1.3.4",
+            "minimist": "^1.2.0",
+            "q": "^1.4.1",
+            "request": "^2.87.0",
+            "rimraf": "^2.5.2",
+            "semver": "^5.3.0",
+            "xml2js": "^0.4.17"
           }
         }
       }
     },
-    "selfsigned": {
-      "version": "1.10.14",
-      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz",
-      "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==",
+    "proxy-addr": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
+      "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
       "dev": true,
       "requires": {
-        "node-forge": "^0.10.0"
+        "forwarded": "~0.1.2",
+        "ipaddr.js": "1.9.1"
       }
     },
-    "semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+    "prr": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+      "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
+      "dev": true
     },
-    "semver-diff": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz",
-      "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==",
+    "psl": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
+      "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
+      "dev": true
+    },
+    "pump": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+      "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
       "dev": true,
       "requires": {
-        "semver": "^6.3.0"
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
       }
     },
-    "semver-dsl": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz",
-      "integrity": "sha512-e8BOaTo007E3dMuQQTnPdalbKTABKNS7UxoBIDnwOqRa+QwMrCPjynB8zAlPF6xlqUfdLPPLIJ13hJNmhtq8Ng==",
+    "punycode": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+      "dev": true
+    },
+    "pupa": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz",
+      "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==",
       "dev": true,
       "requires": {
-        "semver": "^5.3.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-          "dev": true
-        }
+        "escape-goat": "^2.0.0"
       }
     },
-    "semver-intersect": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.4.0.tgz",
-      "integrity": "sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ==",
+    "qjobs": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz",
+      "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==",
+      "dev": true
+    },
+    "qs": {
+      "version": "6.5.2",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+      "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+      "dev": true
+    },
+    "querystring": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+      "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==",
+      "dev": true
+    },
+    "querystringify": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
+      "dev": true
+    },
+    "queue-microtask": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+      "dev": true
+    },
+    "randombytes": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+      "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
       "dev": true,
       "requires": {
-        "semver": "^5.0.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-          "dev": true
-        }
+        "safe-buffer": "^5.1.0"
       }
     },
-    "send": {
-      "version": "0.17.1",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
-      "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
+    "range-parser": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+      "dev": true
+    },
+    "raw-body": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
+      "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
       "dev": true,
       "requires": {
-        "debug": "2.6.9",
-        "depd": "~1.1.2",
-        "destroy": "~1.0.4",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "etag": "~1.8.1",
-        "fresh": "0.5.2",
-        "http-errors": "~1.7.2",
-        "mime": "1.6.0",
-        "ms": "2.1.1",
-        "on-finished": "~2.3.0",
-        "range-parser": "~1.2.1",
-        "statuses": "~1.5.0"
+        "bytes": "3.1.0",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
       },
       "dependencies": {
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          },
-          "dependencies": {
-            "ms": {
-              "version": "2.0.0",
-              "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-              "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-              "dev": true
-            }
-          }
-        },
-        "ms": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
-          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+        "bytes": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+          "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
           "dev": true
         }
       }
     },
-    "serialize-javascript": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz",
-      "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==",
+    "rc": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+      "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
       "dev": true,
       "requires": {
-        "randombytes": "^2.1.0"
+        "deep-extend": "^0.6.0",
+        "ini": "~1.3.0",
+        "minimist": "^1.2.0",
+        "strip-json-comments": "~2.0.1"
       }
     },
-    "serve-index": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
-      "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
+    "re2": {
+      "version": "1.15.9",
+      "resolved": "https://registry.npmjs.org/re2/-/re2-1.15.9.tgz",
+      "integrity": "sha512-AXWEhpMTBdC+3oqbjdU07dk0pBCvxh5vbOMLERL6Y8FYBSGn4vXlLe8cYszn64Yy7H8keVMrgPzoSvOd4mePpg==",
       "dev": true,
+      "optional": true,
       "requires": {
-        "accepts": "~1.3.4",
-        "batch": "0.6.1",
-        "debug": "2.6.9",
-        "escape-html": "~1.0.3",
-        "http-errors": "~1.6.2",
-        "mime-types": "~2.1.17",
-        "parseurl": "~1.3.2"
+        "install-artifact-from-github": "^1.2.0",
+        "nan": "^2.14.2",
+        "node-gyp": "^7.1.2"
+      }
+    },
+    "read-cache": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
+      "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+      "dev": true,
+      "requires": {
+        "pify": "^2.3.0"
       },
       "dependencies": {
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "http-errors": {
-          "version": "1.6.3",
-          "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
-          "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
-          "dev": true,
-          "requires": {
-            "depd": "~1.1.2",
-            "inherits": "2.0.3",
-            "setprototypeof": "1.1.0",
-            "statuses": ">= 1.4.0 < 2"
-          }
-        },
-        "inherits": {
-          "version": "2.0.3",
-          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-          "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
-          "dev": true
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-          "dev": true
-        },
-        "setprototypeof": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
-          "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+        "pify": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+          "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
           "dev": true
         }
       }
     },
-    "serve-static": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
-      "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
+    "read-package-json-fast": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz",
+      "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==",
       "dev": true,
       "requires": {
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "parseurl": "~1.3.3",
-        "send": "0.17.1"
+        "json-parse-even-better-errors": "^2.3.0",
+        "npm-normalize-package-bin": "^1.0.1"
       }
     },
-    "set-blocking": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
-      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
-      "dev": true
-    },
-    "set-value": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
-      "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+    "readable-stream": {
+      "version": "2.3.7",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+      "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
       "dev": true,
       "requires": {
-        "extend-shallow": "^2.0.1",
-        "is-extendable": "^0.1.1",
-        "is-plain-object": "^2.0.3",
-        "split-string": "^3.0.1"
-      },
-      "dependencies": {
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        }
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
       }
     },
-    "setimmediate": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
-      "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
-      "dev": true
-    },
-    "setprototypeof": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
-      "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
-      "dev": true
-    },
-    "sha.js": {
-      "version": "2.4.11",
-      "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
-      "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+    "readdirp": {
+      "version": "3.5.0",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
+      "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
       "dev": true,
       "requires": {
-        "inherits": "^2.0.1",
-        "safe-buffer": "^5.0.1"
+        "picomatch": "^2.2.1"
       }
     },
-    "shallow-clone": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
-      "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
-      "dev": true,
-      "requires": {
-        "kind-of": "^6.0.2"
-      }
+    "recordrtc": {
+      "version": "5.6.1",
+      "resolved": "https://registry.npmjs.org/recordrtc/-/recordrtc-5.6.1.tgz",
+      "integrity": "sha512-UU7Fd9IIuz60TPq4GgL1qtgo2mzEZWzPxEraNe32eo4/ndjKmuj715HB7W1k63G09teM1dXJYubPEmLkQ/lq5Q=="
     },
-    "shebang-command": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
-      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+    "redeyed": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz",
+      "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=",
       "dev": true,
       "requires": {
-        "shebang-regex": "^1.0.0"
+        "esprima": "~4.0.0"
       }
     },
-    "shebang-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
-      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+    "reflect-metadata": {
+      "version": "0.1.13",
+      "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
+      "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==",
       "dev": true
     },
-    "signal-exit": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
-      "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
+    "regenerate": {
+      "version": "1.4.2",
+      "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
+      "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
       "dev": true
     },
-    "simple-swizzle": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
-      "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
+    "regenerate-unicode-properties": {
+      "version": "10.0.1",
+      "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz",
+      "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==",
       "dev": true,
       "requires": {
-        "is-arrayish": "^0.3.1"
-      },
-      "dependencies": {
-        "is-arrayish": {
-          "version": "0.3.2",
-          "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
-          "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
-          "dev": true
-        }
+        "regenerate": "^1.4.2"
       }
     },
-    "slash": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-      "dev": true
-    },
-    "smart-buffer": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
-      "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+    "regenerator-runtime": {
+      "version": "0.13.9",
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
+      "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==",
       "dev": true
     },
-    "snapdragon": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
-      "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+    "regenerator-transform": {
+      "version": "0.15.0",
+      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz",
+      "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==",
       "dev": true,
       "requires": {
-        "base": "^0.11.1",
-        "debug": "^2.2.0",
-        "define-property": "^0.2.5",
-        "extend-shallow": "^2.0.1",
-        "map-cache": "^0.2.2",
-        "source-map": "^0.5.6",
-        "source-map-resolve": "^0.5.0",
-        "use": "^3.1.0"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
-          "dev": true
-        }
+        "@babel/runtime": "^7.8.4"
       }
     },
-    "snapdragon-node": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
-      "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+    "regex-not": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+      "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
       "dev": true,
       "requires": {
-        "define-property": "^1.0.0",
-        "isobject": "^3.0.0",
-        "snapdragon-util": "^3.0.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^1.0.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
+        "extend-shallow": "^3.0.2",
+        "safe-regex": "^1.1.0"
       }
     },
-    "snapdragon-util": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
-      "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+    "regex-parser": {
+      "version": "2.2.11",
+      "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz",
+      "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==",
+      "dev": true
+    },
+    "regexp.prototype.flags": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
+      "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
       "dev": true,
       "requires": {
-        "kind-of": "^3.2.0"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3",
+        "functions-have-names": "^1.2.2"
       }
     },
-    "socket.io": {
-      "version": "4.5.1",
-      "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.1.tgz",
-      "integrity": "sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==",
+    "regexpu-core": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz",
+      "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==",
       "dev": true,
       "requires": {
-        "accepts": "~1.3.4",
-        "base64id": "~2.0.0",
-        "debug": "~4.3.2",
-        "engine.io": "~6.2.0",
-        "socket.io-adapter": "~2.4.0",
-        "socket.io-parser": "~4.0.4"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "4.3.4",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-          "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-          "dev": true,
-          "requires": {
-            "ms": "2.1.2"
-          }
-        }
+        "regenerate": "^1.4.2",
+        "regenerate-unicode-properties": "^10.0.1",
+        "regjsgen": "^0.6.0",
+        "regjsparser": "^0.8.2",
+        "unicode-match-property-ecmascript": "^2.0.0",
+        "unicode-match-property-value-ecmascript": "^2.0.0"
       }
     },
-    "socket.io-adapter": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz",
-      "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==",
-      "dev": true
-    },
-    "socket.io-parser": {
-      "version": "4.0.5",
-      "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz",
-      "integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==",
+    "registry-auth-token": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz",
+      "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==",
       "dev": true,
       "requires": {
-        "@types/component-emitter": "^1.2.10",
-        "component-emitter": "~1.3.0",
-        "debug": "~4.3.1"
+        "rc": "^1.2.8"
       }
     },
-    "sockjs": {
-      "version": "0.3.24",
-      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz",
-      "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==",
+    "registry-url": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz",
+      "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==",
       "dev": true,
       "requires": {
-        "faye-websocket": "^0.11.3",
-        "uuid": "^8.3.2",
-        "websocket-driver": "^0.7.4"
-      },
-      "dependencies": {
-        "uuid": {
-          "version": "8.3.2",
-          "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
-          "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
-          "dev": true
-        }
+        "rc": "^1.2.8"
       }
     },
-    "sockjs-client": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz",
-      "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==",
+    "regjsgen": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz",
+      "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==",
+      "dev": true
+    },
+    "regjsparser": {
+      "version": "0.8.4",
+      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz",
+      "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==",
       "dev": true,
       "requires": {
-        "debug": "^3.2.7",
-        "eventsource": "^2.0.2",
-        "faye-websocket": "^0.11.4",
-        "inherits": "^2.0.4",
-        "url-parse": "^1.5.10"
+        "jsesc": "~0.5.0"
       },
       "dependencies": {
-        "debug": {
-          "version": "3.2.7",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-          "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-          "dev": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
+        "jsesc": {
+          "version": "0.5.0",
+          "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+          "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
+          "dev": true
         }
       }
     },
-    "socks": {
-      "version": "2.6.2",
-      "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz",
-      "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==",
-      "dev": true,
-      "requires": {
-        "ip": "^1.1.5",
-        "smart-buffer": "^4.2.0"
-      }
+    "remove-trailing-separator": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+      "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==",
+      "dev": true
     },
-    "socks-proxy-agent": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz",
-      "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==",
+    "repeat-element": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
+      "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
+      "dev": true
+    },
+    "repeat-string": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+      "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
+      "dev": true
+    },
+    "request": {
+      "version": "2.88.2",
+      "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
+      "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
       "dev": true,
       "requires": {
-        "agent-base": "^6.0.2",
-        "debug": "4",
-        "socks": "^2.3.3"
+        "aws-sign2": "~0.7.0",
+        "aws4": "^1.8.0",
+        "caseless": "~0.12.0",
+        "combined-stream": "~1.0.6",
+        "extend": "~3.0.2",
+        "forever-agent": "~0.6.1",
+        "form-data": "~2.3.2",
+        "har-validator": "~5.1.3",
+        "http-signature": "~1.2.0",
+        "is-typedarray": "~1.0.0",
+        "isstream": "~0.1.2",
+        "json-stringify-safe": "~5.0.1",
+        "mime-types": "~2.1.19",
+        "oauth-sign": "~0.9.0",
+        "performance-now": "^2.1.0",
+        "qs": "~6.5.2",
+        "safe-buffer": "^5.1.2",
+        "tough-cookie": "~2.5.0",
+        "tunnel-agent": "^0.6.0",
+        "uuid": "^3.3.2"
+      }
+    },
+    "require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
+    },
+    "require-from-string": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+      "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+      "dev": true
+    },
+    "require-main-filename": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+      "dev": true
+    },
+    "requires-port": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+      "dev": true
+    },
+    "resolve": {
+      "version": "1.19.0",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz",
+      "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==",
+      "requires": {
+        "is-core-module": "^2.1.0",
+        "path-parse": "^1.0.6"
+      }
+    },
+    "resolve-cwd": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
+      "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==",
+      "dev": true,
+      "requires": {
+        "resolve-from": "^3.0.0"
       },
       "dependencies": {
-        "agent-base": {
-          "version": "6.0.2",
-          "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
-          "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
-          "dev": true,
-          "requires": {
-            "debug": "4"
-          }
+        "resolve-from": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+          "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
+          "dev": true
         }
       }
     },
-    "source-list-map": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
-      "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
-      "dev": true
-    },
-    "source-map": {
-      "version": "0.7.3",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
-      "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+    "resolve-from": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
       "dev": true
     },
-    "source-map-js": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
-      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+    "resolve-url": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+      "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
       "dev": true
     },
-    "source-map-loader": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.1.3.tgz",
-      "integrity": "sha512-6YHeF+XzDOrT/ycFJNI53cgEsp/tHTMl37hi7uVyqFAlTXW109JazaQCkbc+jjoL2637qkH1amLi+JzrIpt5lA==",
+    "resolve-url-loader": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz",
+      "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==",
       "dev": true,
       "requires": {
-        "abab": "^2.0.5",
-        "iconv-lite": "^0.6.2",
+        "adjust-sourcemap-loader": "^4.0.0",
+        "convert-source-map": "^1.7.0",
         "loader-utils": "^2.0.0",
-        "schema-utils": "^3.0.0",
-        "source-map": "^0.6.1",
-        "whatwg-mimetype": "^2.3.0"
+        "postcss": "^7.0.35",
+        "source-map": "0.6.1"
       },
       "dependencies": {
-        "iconv-lite": {
-          "version": "0.6.3",
-          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
-          "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
-          "dev": true,
-          "requires": {
-            "safer-buffer": ">= 2.1.2 < 3.0.0"
-          }
+        "picocolors": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
+          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+          "dev": true
         },
-        "schema-utils": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
-          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+        "postcss": {
+          "version": "7.0.39",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
+          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
           "dev": true,
           "requires": {
-            "@types/json-schema": "^7.0.8",
-            "ajv": "^6.12.5",
-            "ajv-keywords": "^3.5.2"
+            "picocolors": "^0.2.1",
+            "source-map": "^0.6.1"
           }
         },
         "source-map": {
@@ -15048,468 +15300,399 @@
         }
       }
     },
-    "source-map-resolve": {
-      "version": "0.5.3",
-      "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
-      "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
+    "responselike": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
+      "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
       "dev": true,
       "requires": {
-        "atob": "^2.1.2",
-        "decode-uri-component": "^0.2.0",
-        "resolve-url": "^0.2.1",
-        "source-map-url": "^0.4.0",
-        "urix": "^0.1.0"
+        "lowercase-keys": "^1.0.0"
       }
     },
-    "source-map-support": {
-      "version": "0.5.16",
-      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
-      "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
+    "restore-cursor": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+      "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
       "dev": true,
       "requires": {
-        "buffer-from": "^1.0.0",
-        "source-map": "^0.6.0"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
+        "onetime": "^5.1.0",
+        "signal-exit": "^3.0.2"
       }
     },
-    "source-map-url": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
-      "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
+    "ret": {
+      "version": "0.1.15",
+      "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+      "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
       "dev": true
     },
-    "sourcemap-codec": {
-      "version": "1.4.8",
-      "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
-      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+    "retry": {
+      "version": "0.12.0",
+      "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
+      "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
       "dev": true
     },
-    "spdy": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
-      "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
+    "retry-request": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.1.3.tgz",
+      "integrity": "sha512-QnRZUpuPNgX0+D1xVxul6DbJ9slvo4Rm6iV/dn63e048MvGbUZiKySVt6Tenp04JqmchxjiLltGerOJys7kJYQ==",
       "dev": true,
       "requires": {
-        "debug": "^4.1.0",
-        "handle-thing": "^2.0.0",
-        "http-deceiver": "^1.2.7",
-        "select-hose": "^2.0.0",
-        "spdy-transport": "^3.0.0"
+        "debug": "^4.1.1"
       }
     },
-    "spdy-transport": {
+    "reusify": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+      "dev": true
+    },
+    "rfdc": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
+      "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==",
+      "dev": true
+    },
+    "rimraf": {
       "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz",
-      "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz",
+      "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==",
       "dev": true,
       "requires": {
-        "debug": "^4.1.0",
-        "detect-node": "^2.0.4",
-        "hpack.js": "^2.1.6",
-        "obuf": "^1.1.2",
-        "readable-stream": "^3.0.6",
-        "wbuf": "^1.7.3"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "3.6.0",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-          "dev": true,
-          "requires": {
-            "inherits": "^2.0.3",
-            "string_decoder": "^1.1.1",
-            "util-deprecate": "^1.0.1"
-          }
-        }
+        "glob": "^7.1.3"
       }
     },
-    "speed-measure-webpack-plugin": {
-      "version": "1.4.2",
-      "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.4.2.tgz",
-      "integrity": "sha512-AtVzD0bnIy2/B0fWqJpJgmhcrfWFhBlduzSo0uwplr/QvB33ZNZj2NEth3NONgdnZJqicK0W0mSxnLSbsVCDbw==",
-      "dev": true,
-      "requires": {
-        "chalk": "^4.1.0"
+    "router": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/router/-/router-1.3.5.tgz",
+      "integrity": "sha512-kozCJZUhuSJ5VcLhSb3F8fsmGXy+8HaDbKCAerR1G6tq3mnMZFMuSohbFvGv1c5oMFipijDjRZuuN/Sq5nMf3g==",
+      "dev": true,
+      "requires": {
+        "array-flatten": "3.0.0",
+        "debug": "2.6.9",
+        "methods": "~1.1.2",
+        "parseurl": "~1.3.3",
+        "path-to-regexp": "0.1.7",
+        "setprototypeof": "1.2.0",
+        "utils-merge": "1.0.1"
       },
       "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "dev": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
+        "array-flatten": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz",
+          "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==",
+          "dev": true
         },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
           "dev": true,
           "requires": {
-            "color-name": "~1.1.4"
+            "ms": "2.0.0"
           }
         },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
           "dev": true
         },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+        "setprototypeof": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+          "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
           "dev": true
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
         }
       }
     },
-    "split-string": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
-      "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
-      "dev": true,
-      "requires": {
-        "extend-shallow": "^3.0.0"
-      }
+    "rsvp": {
+      "version": "4.8.5",
+      "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
+      "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==",
+      "dev": true
     },
-    "sprintf-js": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
-      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+    "run-async": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
+      "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
       "dev": true
     },
-    "sshpk": {
-      "version": "1.16.1",
-      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
-      "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
+    "run-parallel": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
       "dev": true,
       "requires": {
-        "asn1": "~0.2.3",
-        "assert-plus": "^1.0.0",
-        "bcrypt-pbkdf": "^1.0.0",
-        "dashdash": "^1.12.0",
-        "ecc-jsbn": "~0.1.1",
-        "getpass": "^0.1.1",
-        "jsbn": "~0.1.0",
-        "safer-buffer": "^2.0.2",
-        "tweetnacl": "~0.14.0"
+        "queue-microtask": "^1.2.2"
       }
     },
-    "ssri": {
-      "version": "8.0.1",
-      "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
-      "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
-      "dev": true,
+    "rxjs": {
+      "version": "6.5.5",
+      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz",
+      "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==",
       "requires": {
-        "minipass": "^3.1.1"
+        "tslib": "^1.9.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+        }
       }
     },
-    "stable": {
-      "version": "0.1.8",
-      "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
-      "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
-      "dev": true
-    },
-    "stack-trace": {
-      "version": "0.0.10",
-      "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
-      "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
-      "dev": true
+    "safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
     },
-    "static-extend": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
-      "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
+    "safe-regex": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+      "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
       "dev": true,
       "requires": {
-        "define-property": "^0.2.5",
-        "object-copy": "^0.1.0"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        }
+        "ret": "~0.1.10"
       }
     },
-    "statuses": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
-      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
+    "safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
       "dev": true
     },
-    "stream-browserify": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
-      "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
+    "sass": {
+      "version": "1.36.0",
+      "resolved": "https://registry.npmjs.org/sass/-/sass-1.36.0.tgz",
+      "integrity": "sha512-fQzEjipfOv5kh930nu3Imzq3ie/sGDc/4KtQMJlt7RRdrkQSfe37Bwi/Rf/gfuYHsIuE1fIlDMvpyMcEwjnPvg==",
       "dev": true,
       "requires": {
-        "inherits": "~2.0.1",
-        "readable-stream": "^2.0.2"
+        "chokidar": ">=3.0.0 <4.0.0"
       }
     },
-    "stream-each": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
-      "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
+    "sass-loader": {
+      "version": "12.1.0",
+      "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.1.0.tgz",
+      "integrity": "sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg==",
       "dev": true,
       "requires": {
-        "end-of-stream": "^1.1.0",
-        "stream-shift": "^1.0.0"
+        "klona": "^2.0.4",
+        "neo-async": "^2.6.2"
       }
     },
-    "stream-http": {
-      "version": "2.8.3",
-      "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
-      "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
+    "saucelabs": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz",
+      "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==",
       "dev": true,
       "requires": {
-        "builtin-status-codes": "^3.0.0",
-        "inherits": "^2.0.1",
-        "readable-stream": "^2.3.6",
-        "to-arraybuffer": "^1.0.0",
-        "xtend": "^4.0.0"
+        "https-proxy-agent": "^2.2.1"
       }
     },
-    "stream-shift": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
-      "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
+    "sax": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
       "dev": true
     },
-    "streamroller": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.1.tgz",
-      "integrity": "sha512-iPhtd9unZ6zKdWgMeYGfSBuqCngyJy1B/GPi/lTpwGpa3bajuX30GjUVd0/Tn/Xhg0mr4DOSENozz9Y06qyonQ==",
+    "schema-utils": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
+      "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
       "dev": true,
       "requires": {
-        "date-format": "^4.0.10",
-        "debug": "^4.3.4",
-        "fs-extra": "^10.1.0"
+        "@types/json-schema": "^7.0.5",
+        "ajv": "^6.12.4",
+        "ajv-keywords": "^3.5.2"
       },
       "dependencies": {
-        "debug": {
-          "version": "4.3.4",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-          "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+        "ajv": {
+          "version": "6.12.6",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
           "dev": true,
           "requires": {
-            "ms": "2.1.2"
+            "fast-deep-equal": "^3.1.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
           }
-        },
-        "fs-extra": {
-          "version": "10.1.0",
-          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
-          "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+        }
+      }
+    },
+    "select-hose": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
+      "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==",
+      "dev": true
+    },
+    "selenium-webdriver": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz",
+      "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==",
+      "dev": true,
+      "requires": {
+        "jszip": "^3.1.3",
+        "rimraf": "^2.5.4",
+        "tmp": "0.0.30",
+        "xml2js": "^0.4.17"
+      },
+      "dependencies": {
+        "rimraf": {
+          "version": "2.7.1",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
           "dev": true,
           "requires": {
-            "graceful-fs": "^4.2.0",
-            "jsonfile": "^6.0.1",
-            "universalify": "^2.0.0"
+            "glob": "^7.1.3"
           }
         },
-        "jsonfile": {
-          "version": "6.1.0",
-          "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
-          "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+        "tmp": {
+          "version": "0.0.30",
+          "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz",
+          "integrity": "sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w==",
           "dev": true,
           "requires": {
-            "graceful-fs": "^4.1.6",
-            "universalify": "^2.0.0"
+            "os-tmpdir": "~1.0.1"
           }
-        },
-        "universalify": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
-          "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
-          "dev": true
         }
       }
     },
-    "string-length": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz",
-      "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=",
+    "selfsigned": {
+      "version": "1.10.14",
+      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz",
+      "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==",
       "dev": true,
       "requires": {
-        "strip-ansi": "^3.0.0"
+        "node-forge": "^0.10.0"
       }
     },
-    "string-width": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-      "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
-      "dev": true,
-      "requires": {
-        "is-fullwidth-code-point": "^2.0.0",
-        "strip-ansi": "^4.0.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
-          "dev": true
-        },
-        "strip-ansi": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^3.0.0"
-          }
-        }
-      }
+    "semver": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
     },
-    "string_decoder": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+    "semver-diff": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz",
+      "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==",
       "dev": true,
       "requires": {
-        "safe-buffer": "~5.1.0"
+        "semver": "^6.3.0"
       }
     },
-    "strip-ansi": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+    "semver-dsl": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz",
+      "integrity": "sha512-e8BOaTo007E3dMuQQTnPdalbKTABKNS7UxoBIDnwOqRa+QwMrCPjynB8zAlPF6xlqUfdLPPLIJ13hJNmhtq8Ng==",
       "dev": true,
       "requires": {
-        "ansi-regex": "^2.0.0"
+        "semver": "^5.3.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+          "dev": true
+        }
       }
     },
-    "strip-eof": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
-      "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
-      "dev": true
-    },
-    "strip-json-comments": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
-      "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
-      "dev": true
-    },
-    "style-loader": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz",
-      "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==",
+    "send": {
+      "version": "0.17.1",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
+      "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
       "dev": true,
       "requires": {
-        "loader-utils": "^2.0.0",
-        "schema-utils": "^3.0.0"
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "destroy": "~1.0.4",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "fresh": "0.5.2",
+        "http-errors": "~1.7.2",
+        "mime": "1.6.0",
+        "ms": "2.1.1",
+        "on-finished": "~2.3.0",
+        "range-parser": "~1.2.1",
+        "statuses": "~1.5.0"
       },
       "dependencies": {
-        "schema-utils": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
-          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
           "dev": true,
           "requires": {
-            "@types/json-schema": "^7.0.8",
-            "ajv": "^6.12.5",
-            "ajv-keywords": "^3.5.2"
+            "ms": "2.0.0"
+          },
+          "dependencies": {
+            "ms": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+              "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+              "dev": true
+            }
           }
+        },
+        "ms": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+          "dev": true
         }
       }
     },
-    "stylehacks": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz",
-      "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==",
+    "serialize-javascript": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
+      "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
       "dev": true,
       "requires": {
-        "browserslist": "^4.16.6",
-        "postcss-selector-parser": "^6.0.4"
+        "randombytes": "^2.1.0"
       }
     },
-    "stylus": {
-      "version": "0.54.8",
-      "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz",
-      "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==",
+    "serve-index": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
+      "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
       "dev": true,
       "requires": {
-        "css-parse": "~2.0.0",
-        "debug": "~3.1.0",
-        "glob": "^7.1.6",
-        "mkdirp": "~1.0.4",
-        "safer-buffer": "^2.1.2",
-        "sax": "~1.2.4",
-        "semver": "^6.3.0",
-        "source-map": "^0.7.3"
+        "accepts": "~1.3.4",
+        "batch": "0.6.1",
+        "debug": "2.6.9",
+        "escape-html": "~1.0.3",
+        "http-errors": "~1.6.2",
+        "mime-types": "~2.1.17",
+        "parseurl": "~1.3.2"
       },
       "dependencies": {
         "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
           "dev": true,
           "requires": {
             "ms": "2.0.0"
           }
         },
-        "glob": {
-          "version": "7.2.3",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
-          "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
-          "dev": true,
-          "requires": {
-            "fs.realpath": "^1.0.0",
-            "inflight": "^1.0.4",
-            "inherits": "2",
-            "minimatch": "^3.1.1",
-            "once": "^1.3.0",
-            "path-is-absolute": "^1.0.0"
-          }
-        },
-        "minimatch": {
-          "version": "3.1.2",
-          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-          "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+        "http-errors": {
+          "version": "1.6.3",
+          "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+          "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
           "dev": true,
           "requires": {
-            "brace-expansion": "^1.1.7"
+            "depd": "~1.1.2",
+            "inherits": "2.0.3",
+            "setprototypeof": "1.1.0",
+            "statuses": ">= 1.4.0 < 2"
           }
         },
-        "mkdirp": {
-          "version": "1.0.4",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
-          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+        "inherits": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+          "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
           "dev": true
         },
         "ms": {
@@ -15517,1799 +15700,2018 @@
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
           "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
           "dev": true
+        },
+        "setprototypeof": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+          "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+          "dev": true
         }
       }
     },
-    "stylus-loader": {
-      "version": "4.3.3",
-      "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-4.3.3.tgz",
-      "integrity": "sha512-PpWB5PnCXUzW4WMYhCvNzAHJBjIBPMXwsdfkkKuA9W7k8OQFMl/19/AQvaWsxz2IptxUlCseyJ6TY/eEKJ4+UQ==",
+    "serve-static": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
+      "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
       "dev": true,
       "requires": {
-        "fast-glob": "^3.2.4",
-        "klona": "^2.0.4",
-        "loader-utils": "^2.0.0",
-        "normalize-path": "^3.0.0",
-        "schema-utils": "^3.0.0"
-      },
-      "dependencies": {
-        "schema-utils": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
-          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
-          "dev": true,
-          "requires": {
-            "@types/json-schema": "^7.0.8",
-            "ajv": "^6.12.5",
-            "ajv-keywords": "^3.5.2"
-          }
-        }
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.17.1"
       }
     },
-    "superstatic": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/superstatic/-/superstatic-7.1.0.tgz",
-      "integrity": "sha512-yBU8iw07nM3Bu4jFc8lnKwLey0cj61OaGmFJZcYC2X+kEpXVmXzERJ3OTAHZAESe1OTeNIuWadt81U5IULGGAA==",
-      "dev": true,
-      "requires": {
-        "basic-auth-connect": "^1.0.0",
-        "chalk": "^1.1.3",
-        "compare-semver": "^1.0.0",
-        "compression": "^1.7.0",
-        "connect": "^3.6.2",
-        "destroy": "^1.0.4",
-        "fast-url-parser": "^1.1.3",
-        "fs-extra": "^8.1.0",
-        "glob-slasher": "^1.0.1",
-        "home-dir": "^1.0.0",
-        "is-url": "^1.2.2",
-        "join-path": "^1.1.1",
-        "lodash": "^4.17.19",
-        "mime-types": "^2.1.16",
-        "minimatch": "^3.0.4",
-        "morgan": "^1.8.2",
-        "nash": "^3.0.0",
-        "on-finished": "^2.2.0",
-        "on-headers": "^1.0.0",
-        "path-to-regexp": "^1.8.0",
-        "re2": "^1.15.8",
-        "router": "^1.3.1",
-        "rsvp": "^4.8.5",
-        "string-length": "^1.0.0",
-        "update-notifier": "^4.1.1"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "2.2.1",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
-          "dev": true
-        },
-        "chalk": {
-          "version": "1.1.3",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^2.2.1",
-            "escape-string-regexp": "^1.0.2",
-            "has-ansi": "^2.0.0",
-            "strip-ansi": "^3.0.0",
-            "supports-color": "^2.0.0"
-          }
-        },
-        "fs-extra": {
-          "version": "8.1.0",
-          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
-          "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
-          "dev": true,
-          "requires": {
-            "graceful-fs": "^4.2.0",
-            "jsonfile": "^4.0.0",
-            "universalify": "^0.1.0"
-          }
-        },
-        "isarray": {
-          "version": "0.0.1",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
-          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
-          "dev": true
-        },
-        "path-to-regexp": {
-          "version": "1.8.0",
-          "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
-          "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
-          "dev": true,
-          "requires": {
-            "isarray": "0.0.1"
-          }
-        },
-        "supports-color": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-          "dev": true
-        }
-      }
-    },
-    "supports-color": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-      "requires": {
-        "has-flag": "^3.0.0"
-      }
+    "set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+      "dev": true
     },
-    "supports-hyperlinks": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz",
-      "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==",
+    "set-value": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
+      "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
       "dev": true,
       "requires": {
-        "has-flag": "^2.0.0",
-        "supports-color": "^5.0.0"
+        "extend-shallow": "^2.0.1",
+        "is-extendable": "^0.1.1",
+        "is-plain-object": "^2.0.3",
+        "split-string": "^3.0.1"
       },
       "dependencies": {
-        "has-flag": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
-          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
-          "dev": true
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
         }
       }
     },
-    "svg.draggable.js": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz",
-      "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==",
-      "requires": {
-        "svg.js": "^2.0.1"
-      }
+    "setimmediate": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+      "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+      "dev": true
     },
-    "svg.easing.js": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz",
-      "integrity": "sha1-iqmUawqOJ4V6XEChDrpAkeVpHxI=",
-      "requires": {
-        "svg.js": ">=2.3.x"
-      }
+    "setprototypeof": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+      "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
+      "dev": true
     },
-    "svg.filter.js": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz",
-      "integrity": "sha1-kQCOFROJ3ZIwd5/L5uLJo2LRwgM=",
+    "shallow-clone": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
+      "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
+      "dev": true,
       "requires": {
-        "svg.js": "^2.2.5"
+        "kind-of": "^6.0.2"
       }
     },
-    "svg.js": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz",
-      "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA=="
-    },
-    "svg.pathmorphing.js": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz",
-      "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==",
+    "shebang-command": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+      "dev": true,
       "requires": {
-        "svg.js": "^2.4.0"
+        "shebang-regex": "^1.0.0"
       }
     },
-    "svg.resize.js": {
-      "version": "1.4.3",
-      "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz",
-      "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==",
-      "requires": {
-        "svg.js": "^2.6.5",
-        "svg.select.js": "^2.1.2"
-      },
-      "dependencies": {
-        "svg.select.js": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz",
-          "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==",
-          "requires": {
-            "svg.js": "^2.2.5"
-          }
-        }
-      }
+    "shebang-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+      "dev": true
     },
-    "svg.select.js": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz",
-      "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==",
-      "requires": {
-        "svg.js": "^2.6.5"
-      }
+    "signal-exit": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
+      "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
+      "dev": true
     },
-    "svgo": {
-      "version": "2.8.0",
-      "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz",
-      "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==",
+    "simple-swizzle": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+      "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
       "dev": true,
       "requires": {
-        "@trysound/sax": "0.2.0",
-        "commander": "^7.2.0",
-        "css-select": "^4.1.3",
-        "css-tree": "^1.1.3",
-        "csso": "^4.2.0",
-        "picocolors": "^1.0.0",
-        "stable": "^0.1.8"
+        "is-arrayish": "^0.3.1"
       },
       "dependencies": {
-        "commander": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
-          "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+        "is-arrayish": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+          "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
           "dev": true
         }
       }
     },
-    "sweetalert2": {
-      "version": "10.13.3",
-      "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-10.13.3.tgz",
-      "integrity": "sha512-kSvTkXvc59+vPf9CfZ/wc/uvFkccxoOMLK1aUibN0mXU4hbYg/NylBTlmfvuUjJQ5SWL3X6s8w7AG5croH8U1w=="
-    },
-    "symbol-observable": {
+    "slash": {
       "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-3.0.0.tgz",
-      "integrity": "sha512-6tDOXSHiVjuCaasQSWTmHUWn4PuG7qa3+1WT031yTc/swT7+rLiw3GOrFxaH1E3lLP09dH3bVuVDf2gK5rxG3Q==",
+      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
       "dev": true
     },
-    "tapable": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
-      "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+    "smart-buffer": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+      "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
       "dev": true
     },
-    "tar": {
-      "version": "4.4.13",
-      "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
-      "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
+    "snapdragon": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+      "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
       "dev": true,
       "requires": {
-        "chownr": "^1.1.1",
-        "fs-minipass": "^1.2.5",
-        "minipass": "^2.8.6",
-        "minizlib": "^1.2.1",
-        "mkdirp": "^0.5.0",
-        "safe-buffer": "^5.1.2",
-        "yallist": "^3.0.3"
+        "base": "^0.11.1",
+        "debug": "^2.2.0",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "map-cache": "^0.2.2",
+        "source-map": "^0.5.6",
+        "source-map-resolve": "^0.5.0",
+        "use": "^3.1.0"
       },
       "dependencies": {
-        "fs-minipass": {
-          "version": "1.2.7",
-          "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
-          "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
           "dev": true,
           "requires": {
-            "minipass": "^2.6.0"
+            "ms": "2.0.0"
           }
         },
-        "minipass": {
-          "version": "2.9.0",
-          "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
-          "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
           "dev": true,
           "requires": {
-            "safe-buffer": "^5.1.2",
-            "yallist": "^3.0.0"
+            "is-descriptor": "^0.1.0"
           }
         },
-        "yallist": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-          "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
           "dev": true
         }
       }
     },
-    "tar-stream": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
-      "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+    "snapdragon-node": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+      "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
       "dev": true,
       "requires": {
-        "bl": "^4.0.3",
-        "end-of-stream": "^1.4.1",
-        "fs-constants": "^1.0.0",
-        "inherits": "^2.0.3",
-        "readable-stream": "^3.1.1"
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.0",
+        "snapdragon-util": "^3.0.1"
       },
       "dependencies": {
-        "readable-stream": {
-          "version": "3.6.0",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+          "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
           "dev": true,
           "requires": {
-            "inherits": "^2.0.3",
-            "string_decoder": "^1.1.1",
-            "util-deprecate": "^1.0.1"
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
           }
         }
       }
     },
-    "tcp-port-used": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.2.tgz",
-      "integrity": "sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==",
-      "dev": true,
-      "requires": {
-        "debug": "4.3.1",
-        "is2": "^2.0.6"
-      }
-    },
-    "term-size": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz",
-      "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==",
-      "dev": true
-    },
-    "terser": {
-      "version": "5.5.1",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz",
-      "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==",
+    "snapdragon-util": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+      "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
       "dev": true,
       "requires": {
-        "commander": "^2.20.0",
-        "source-map": "~0.7.2",
-        "source-map-support": "~0.5.19"
+        "kind-of": "^3.2.0"
       },
       "dependencies": {
-        "source-map-support": {
-          "version": "0.5.21",
-          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
-          "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
           "dev": true,
           "requires": {
-            "buffer-from": "^1.0.0",
-            "source-map": "^0.6.0"
-          },
-          "dependencies": {
-            "source-map": {
-              "version": "0.6.1",
-              "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-              "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-              "dev": true
-            }
+            "is-buffer": "^1.1.5"
           }
         }
       }
     },
-    "terser-webpack-plugin": {
-      "version": "4.2.3",
-      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz",
-      "integrity": "sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==",
+    "socket.io": {
+      "version": "4.5.1",
+      "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.1.tgz",
+      "integrity": "sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==",
       "dev": true,
       "requires": {
-        "cacache": "^15.0.5",
-        "find-cache-dir": "^3.3.1",
-        "jest-worker": "^26.5.0",
-        "p-limit": "^3.0.2",
-        "schema-utils": "^3.0.0",
-        "serialize-javascript": "^5.0.1",
-        "source-map": "^0.6.1",
-        "terser": "^5.3.4",
-        "webpack-sources": "^1.4.3"
+        "accepts": "~1.3.4",
+        "base64id": "~2.0.0",
+        "debug": "~4.3.2",
+        "engine.io": "~6.2.0",
+        "socket.io-adapter": "~2.4.0",
+        "socket.io-parser": "~4.0.4"
       },
       "dependencies": {
-        "p-limit": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
-          "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
-          "dev": true,
-          "requires": {
-            "yocto-queue": "^0.1.0"
-          }
-        },
-        "schema-utils": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
-          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
-          "dev": true,
-          "requires": {
-            "@types/json-schema": "^7.0.8",
-            "ajv": "^6.12.5",
-            "ajv-keywords": "^3.5.2"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        },
-        "webpack-sources": {
-          "version": "1.4.3",
-          "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
-          "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+        "debug": {
+          "version": "4.3.4",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+          "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
           "dev": true,
           "requires": {
-            "source-list-map": "^2.0.0",
-            "source-map": "~0.6.1"
+            "ms": "2.1.2"
           }
         }
       }
     },
-    "text-hex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
-      "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==",
-      "dev": true
-    },
-    "text-table": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
-      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
-      "dev": true
-    },
-    "through": {
-      "version": "2.3.8",
-      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
-      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+    "socket.io-adapter": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz",
+      "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==",
       "dev": true
     },
-    "through2": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
-      "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+    "socket.io-parser": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz",
+      "integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==",
       "dev": true,
       "requires": {
-        "readable-stream": "~2.3.6",
-        "xtend": "~4.0.1"
+        "@types/component-emitter": "^1.2.10",
+        "component-emitter": "~1.3.0",
+        "debug": "~4.3.1"
       }
     },
-    "thunky": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
-      "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
-      "dev": true
-    },
-    "timers-browserify": {
-      "version": "2.0.12",
-      "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz",
-      "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==",
+    "sockjs": {
+      "version": "0.3.24",
+      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz",
+      "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==",
       "dev": true,
       "requires": {
-        "setimmediate": "^1.0.4"
+        "faye-websocket": "^0.11.3",
+        "uuid": "^8.3.2",
+        "websocket-driver": "^0.7.4"
+      },
+      "dependencies": {
+        "uuid": {
+          "version": "8.3.2",
+          "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+          "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+          "dev": true
+        }
       }
     },
-    "timers-ext": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
-      "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==",
+    "sockjs-client": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz",
+      "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==",
       "dev": true,
       "requires": {
-        "es5-ext": "~0.10.46",
-        "next-tick": "1"
+        "debug": "^3.2.7",
+        "eventsource": "^2.0.2",
+        "faye-websocket": "^0.11.4",
+        "inherits": "^2.0.4",
+        "url-parse": "^1.5.10"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.7",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+          "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        }
       }
     },
-    "tmp": {
-      "version": "0.0.33",
-      "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
-      "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+    "socks": {
+      "version": "2.6.2",
+      "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz",
+      "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==",
       "dev": true,
       "requires": {
-        "os-tmpdir": "~1.0.2"
+        "ip": "^1.1.5",
+        "smart-buffer": "^4.2.0"
       }
     },
-    "to-arraybuffer": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
-      "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==",
+    "socks-proxy-agent": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz",
+      "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==",
+      "dev": true,
+      "requires": {
+        "agent-base": "^6.0.2",
+        "debug": "^4.3.3",
+        "socks": "^2.6.2"
+      },
+      "dependencies": {
+        "agent-base": {
+          "version": "6.0.2",
+          "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+          "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+          "dev": true,
+          "requires": {
+            "debug": "4"
+          }
+        },
+        "debug": {
+          "version": "4.3.4",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+          "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+          "dev": true,
+          "requires": {
+            "ms": "2.1.2"
+          }
+        }
+      }
+    },
+    "source-list-map": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
+      "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
       "dev": true
     },
-    "to-fast-properties": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
-      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
+    "source-map": {
+      "version": "0.7.3",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+      "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+      "dev": true
     },
-    "to-object-path": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
-      "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
+    "source-map-js": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+      "dev": true
+    },
+    "source-map-loader": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.0.tgz",
+      "integrity": "sha512-GKGWqWvYr04M7tn8dryIWvb0s8YM41z82iQv01yBtIylgxax0CwvSy6gc2Y02iuXwEfGWRlMicH0nvms9UZphw==",
       "dev": true,
       "requires": {
-        "kind-of": "^3.0.2"
+        "abab": "^2.0.5",
+        "iconv-lite": "^0.6.2",
+        "source-map-js": "^0.6.2"
       },
       "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+        "iconv-lite": {
+          "version": "0.6.3",
+          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+          "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
           "dev": true,
           "requires": {
-            "is-buffer": "^1.1.5"
+            "safer-buffer": ">= 2.1.2 < 3.0.0"
           }
+        },
+        "source-map-js": {
+          "version": "0.6.2",
+          "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz",
+          "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==",
+          "dev": true
         }
       }
     },
-    "to-readable-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
-      "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
-      "dev": true
-    },
-    "to-regex": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
-      "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+    "source-map-resolve": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
+      "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
       "dev": true,
       "requires": {
-        "define-property": "^2.0.2",
-        "extend-shallow": "^3.0.2",
-        "regex-not": "^1.0.2",
-        "safe-regex": "^1.1.0"
+        "atob": "^2.1.2",
+        "decode-uri-component": "^0.2.0",
+        "resolve-url": "^0.2.1",
+        "source-map-url": "^0.4.0",
+        "urix": "^0.1.0"
       }
     },
-    "to-regex-range": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+    "source-map-support": {
+      "version": "0.5.16",
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
+      "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
       "dev": true,
       "requires": {
-        "is-number": "^7.0.0"
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
-    "toidentifier": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
-      "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
+    "source-map-url": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
+      "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
       "dev": true
     },
-    "tough-cookie": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
-      "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
+    "sourcemap-codec": {
+      "version": "1.4.8",
+      "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+      "dev": true
+    },
+    "spdy": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
+      "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
       "dev": true,
       "requires": {
-        "psl": "^1.1.28",
-        "punycode": "^2.1.1"
+        "debug": "^4.1.0",
+        "handle-thing": "^2.0.0",
+        "http-deceiver": "^1.2.7",
+        "select-hose": "^2.0.0",
+        "spdy-transport": "^3.0.0"
       }
     },
-    "toxic": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/toxic/-/toxic-1.0.1.tgz",
-      "integrity": "sha512-WI3rIGdcaKULYg7KVoB0zcjikqvcYYvcuT6D89bFPz2rVR0Rl0PK6x8/X62rtdLtBKIE985NzVf/auTtGegIIg==",
+    "spdy-transport": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz",
+      "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
       "dev": true,
       "requires": {
-        "lodash": "^4.17.10"
+        "debug": "^4.1.0",
+        "detect-node": "^2.0.4",
+        "hpack.js": "^2.1.6",
+        "obuf": "^1.1.2",
+        "readable-stream": "^3.0.6",
+        "wbuf": "^1.7.3"
+      },
+      "dependencies": {
+        "readable-stream": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+          "dev": true,
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        }
       }
     },
-    "traverse": {
-      "version": "0.3.9",
-      "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
-      "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=",
-      "dev": true
-    },
-    "tree-kill": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
-      "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
-      "dev": true
-    },
-    "triple-beam": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
-      "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==",
-      "dev": true
-    },
-    "ts-node": {
-      "version": "8.3.0",
-      "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
-      "integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
+    "split-string": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+      "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
       "dev": true,
       "requires": {
-        "arg": "^4.1.0",
-        "diff": "^4.0.1",
-        "make-error": "^1.1.1",
-        "source-map-support": "^0.5.6",
-        "yn": "^3.0.0"
+        "extend-shallow": "^3.0.0"
       }
     },
-    "ts-pnp": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz",
-      "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==",
+    "sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
       "dev": true
     },
-    "tslib": {
-      "version": "2.4.0",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
-      "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
-    },
-    "tslint": {
-      "version": "6.1.3",
-      "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz",
-      "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==",
+    "sshpk": {
+      "version": "1.16.1",
+      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
+      "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
       "dev": true,
       "requires": {
-        "@babel/code-frame": "^7.0.0",
-        "builtin-modules": "^1.1.1",
-        "chalk": "^2.3.0",
-        "commander": "^2.12.1",
-        "diff": "^4.0.1",
-        "glob": "^7.1.1",
-        "js-yaml": "^3.13.1",
-        "minimatch": "^3.0.4",
-        "mkdirp": "^0.5.3",
-        "resolve": "^1.3.2",
-        "semver": "^5.3.0",
-        "tslib": "^1.13.0",
-        "tsutils": "^2.29.0"
+        "asn1": "~0.2.3",
+        "assert-plus": "^1.0.0",
+        "bcrypt-pbkdf": "^1.0.0",
+        "dashdash": "^1.12.0",
+        "ecc-jsbn": "~0.1.1",
+        "getpass": "^0.1.1",
+        "jsbn": "~0.1.0",
+        "safer-buffer": "^2.0.2",
+        "tweetnacl": "~0.14.0"
+      }
+    },
+    "ssri": {
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
+      "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
+      "dev": true,
+      "requires": {
+        "minipass": "^3.1.1"
+      }
+    },
+    "stable": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
+      "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
+      "dev": true
+    },
+    "stack-trace": {
+      "version": "0.0.10",
+      "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
+      "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
+      "dev": true
+    },
+    "static-extend": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+      "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
+      "dev": true,
+      "requires": {
+        "define-property": "^0.2.5",
+        "object-copy": "^0.1.0"
       },
       "dependencies": {
-        "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-          "dev": true
-        },
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-          "dev": true
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
         }
       }
     },
-    "tsutils": {
-      "version": "2.29.0",
-      "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz",
-      "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==",
+    "statuses": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
+      "dev": true
+    },
+    "stream-shift": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
+      "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
+      "dev": true
+    },
+    "streamroller": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.1.tgz",
+      "integrity": "sha512-iPhtd9unZ6zKdWgMeYGfSBuqCngyJy1B/GPi/lTpwGpa3bajuX30GjUVd0/Tn/Xhg0mr4DOSENozz9Y06qyonQ==",
       "dev": true,
       "requires": {
-        "tslib": "^1.8.1"
+        "date-format": "^4.0.10",
+        "debug": "^4.3.4",
+        "fs-extra": "^10.1.0"
       },
       "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+        "debug": {
+          "version": "4.3.4",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+          "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+          "dev": true,
+          "requires": {
+            "ms": "2.1.2"
+          }
+        },
+        "fs-extra": {
+          "version": "10.1.0",
+          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+          "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.2.0",
+            "jsonfile": "^6.0.1",
+            "universalify": "^2.0.0"
+          }
+        },
+        "jsonfile": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+          "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.6",
+            "universalify": "^2.0.0"
+          }
+        },
+        "universalify": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+          "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
           "dev": true
         }
       }
     },
-    "tty-browserify": {
-      "version": "0.0.0",
-      "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
-      "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==",
-      "dev": true
-    },
-    "tunnel-agent": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
-      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+    "string-length": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz",
+      "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=",
       "dev": true,
       "requires": {
-        "safe-buffer": "^5.0.1"
+        "strip-ansi": "^3.0.0"
       }
     },
-    "tweetnacl": {
-      "version": "0.14.5",
-      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
-      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
-      "dev": true
-    },
-    "tweetsodium": {
-      "version": "0.0.5",
-      "resolved": "https://registry.npmjs.org/tweetsodium/-/tweetsodium-0.0.5.tgz",
-      "integrity": "sha512-T3aXZtx7KqQbutTtBfn+P5By3HdBuB1eCoGviIrRJV2sXeToxv2X2cv5RvYqgG26PSnN5m3fYixds22Gkfd11w==",
+    "string-width": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+      "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
       "dev": true,
       "requires": {
-        "blakejs": "^1.1.0",
-        "tweetnacl": "^1.0.1"
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^4.0.0"
       },
       "dependencies": {
-        "tweetnacl": {
-          "version": "1.0.3",
-          "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz",
-          "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==",
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
           "dev": true
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^3.0.0"
+          }
         }
       }
     },
-    "type": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
-      "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
-      "dev": true
-    },
-    "type-fest": {
-      "version": "0.8.1",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
-      "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
-      "dev": true
-    },
-    "type-is": {
-      "version": "1.6.18",
-      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
-      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+    "string_decoder": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
       "dev": true,
       "requires": {
-        "media-typer": "0.3.0",
-        "mime-types": "~2.1.24"
+        "safe-buffer": "~5.1.0"
       }
     },
-    "typedarray": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
-      "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
-      "dev": true
-    },
-    "typedarray-to-buffer": {
-      "version": "3.1.5",
-      "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
-      "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+    "strip-ansi": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
       "dev": true,
       "requires": {
-        "is-typedarray": "^1.0.0"
+        "ansi-regex": "^2.0.0"
       }
     },
-    "typescript": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.8.tgz",
-      "integrity": "sha512-oz1765PN+imfz1MlZzSZPtC/tqcwsCyIYA8L47EkRnRW97ztRk83SzMiWLrnChC0vqoYxSU1fcFUDA5gV/ZiPg==",
+    "strip-eof": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+      "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
       "dev": true
     },
-    "ua-parser-js": {
-      "version": "0.7.31",
-      "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz",
-      "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==",
+    "strip-json-comments": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+      "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
       "dev": true
     },
-    "unfetch": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz",
-      "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA=="
-    },
-    "unicode-canonical-property-names-ecmascript": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
-      "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
+    "style-loader": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.2.1.tgz",
+      "integrity": "sha512-1k9ZosJCRFaRbY6hH49JFlRB0fVSbmnyq1iTPjNxUmGVjBNEmwrrHPenhlp+Lgo51BojHSf6pl2FcqYaN3PfVg==",
       "dev": true
     },
-    "unicode-match-property-ecmascript": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
-      "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+    "stylehacks": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz",
+      "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==",
       "dev": true,
       "requires": {
-        "unicode-canonical-property-names-ecmascript": "^2.0.0",
-        "unicode-property-aliases-ecmascript": "^2.0.0"
+        "browserslist": "^4.16.6",
+        "postcss-selector-parser": "^6.0.4"
       }
     },
-    "unicode-match-property-value-ecmascript": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz",
-      "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==",
-      "dev": true
-    },
-    "unicode-property-aliases-ecmascript": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz",
-      "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==",
-      "dev": true
-    },
-    "union-value": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
-      "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
-      "dev": true,
-      "requires": {
-        "arr-union": "^3.1.0",
-        "get-value": "^2.0.6",
-        "is-extendable": "^0.1.1",
-        "set-value": "^2.0.1"
-      }
-    },
-    "unique-filename": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
-      "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
-      "dev": true,
-      "requires": {
-        "unique-slug": "^2.0.0"
-      }
-    },
-    "unique-slug": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
-      "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
-      "dev": true,
-      "requires": {
-        "imurmurhash": "^0.1.4"
-      }
-    },
-    "unique-string": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
-      "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
-      "dev": true,
-      "requires": {
-        "crypto-random-string": "^2.0.0"
-      }
-    },
-    "universal-analytics": {
-      "version": "0.4.23",
-      "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.23.tgz",
-      "integrity": "sha512-lgMIH7XBI6OgYn1woDEmxhGdj8yDefMKg7GkWdeATAlQZFrMrNyxSkpDzY57iY0/6fdlzTbBV03OawvvzG+q7A==",
-      "dev": true,
-      "requires": {
-        "debug": "^4.1.1",
-        "request": "^2.88.2",
-        "uuid": "^3.0.0"
-      }
-    },
-    "universalify": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
-      "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
-      "dev": true
-    },
-    "unpipe": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
-      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
-      "dev": true
-    },
-    "unset-value": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
-      "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
+    "stylus": {
+      "version": "0.54.8",
+      "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz",
+      "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==",
       "dev": true,
       "requires": {
-        "has-value": "^0.3.1",
-        "isobject": "^3.0.0"
+        "css-parse": "~2.0.0",
+        "debug": "~3.1.0",
+        "glob": "^7.1.6",
+        "mkdirp": "~1.0.4",
+        "safer-buffer": "^2.1.2",
+        "sax": "~1.2.4",
+        "semver": "^6.3.0",
+        "source-map": "^0.7.3"
       },
       "dependencies": {
-        "has-value": {
-          "version": "0.3.1",
-          "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
-          "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
           "dev": true,
           "requires": {
-            "get-value": "^2.0.3",
-            "has-values": "^0.1.4",
-            "isobject": "^2.0.0"
-          },
-          "dependencies": {
-            "isobject": {
-              "version": "2.1.0",
-              "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
-              "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
-              "dev": true,
-              "requires": {
-                "isarray": "1.0.0"
-              }
-            }
+            "ms": "2.0.0"
           }
         },
-        "has-values": {
-          "version": "0.1.4",
-          "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
-          "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
+        "glob": {
+          "version": "7.2.3",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+          "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+          "dev": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.1.1",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        },
+        "minimatch": {
+          "version": "3.1.2",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+          "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
+        },
+        "mkdirp": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
           "dev": true
-        }
-      }
-    },
-    "unzipper": {
-      "version": "0.10.11",
-      "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz",
-      "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==",
-      "dev": true,
-      "requires": {
-        "big-integer": "^1.6.17",
-        "binary": "~0.3.0",
-        "bluebird": "~3.4.1",
-        "buffer-indexof-polyfill": "~1.0.0",
-        "duplexer2": "~0.1.4",
-        "fstream": "^1.0.12",
-        "graceful-fs": "^4.2.2",
-        "listenercount": "~1.0.1",
-        "readable-stream": "~2.3.6",
-        "setimmediate": "~1.0.4"
-      },
-      "dependencies": {
-        "bluebird": {
-          "version": "3.4.7",
-          "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz",
-          "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=",
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
           "dev": true
         }
       }
     },
-    "upath": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
-      "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
-      "dev": true
-    },
-    "update-browserslist-db": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz",
-      "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==",
+    "stylus-loader": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-6.1.0.tgz",
+      "integrity": "sha512-qKO34QCsOtSJrXxQQmXsPeaVHh6hMumBAFIoJTcsSr2VzrA6o/CW9HCGR8spCjzJhN8oKQHdj/Ytx0wwXyElkw==",
       "dev": true,
       "requires": {
-        "escalade": "^3.1.1",
-        "picocolors": "^1.0.0"
+        "fast-glob": "^3.2.5",
+        "klona": "^2.0.4",
+        "normalize-path": "^3.0.0"
       }
     },
-    "update-notifier": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz",
-      "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==",
+    "superstatic": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/superstatic/-/superstatic-7.1.0.tgz",
+      "integrity": "sha512-yBU8iw07nM3Bu4jFc8lnKwLey0cj61OaGmFJZcYC2X+kEpXVmXzERJ3OTAHZAESe1OTeNIuWadt81U5IULGGAA==",
       "dev": true,
       "requires": {
-        "boxen": "^4.2.0",
-        "chalk": "^3.0.0",
-        "configstore": "^5.0.1",
-        "has-yarn": "^2.1.0",
-        "import-lazy": "^2.1.0",
-        "is-ci": "^2.0.0",
-        "is-installed-globally": "^0.3.1",
-        "is-npm": "^4.0.0",
-        "is-yarn-global": "^0.3.0",
-        "latest-version": "^5.0.0",
-        "pupa": "^2.0.1",
-        "semver-diff": "^3.1.1",
-        "xdg-basedir": "^4.0.0"
+        "basic-auth-connect": "^1.0.0",
+        "chalk": "^1.1.3",
+        "compare-semver": "^1.0.0",
+        "compression": "^1.7.0",
+        "connect": "^3.6.2",
+        "destroy": "^1.0.4",
+        "fast-url-parser": "^1.1.3",
+        "fs-extra": "^8.1.0",
+        "glob-slasher": "^1.0.1",
+        "home-dir": "^1.0.0",
+        "is-url": "^1.2.2",
+        "join-path": "^1.1.1",
+        "lodash": "^4.17.19",
+        "mime-types": "^2.1.16",
+        "minimatch": "^3.0.4",
+        "morgan": "^1.8.2",
+        "nash": "^3.0.0",
+        "on-finished": "^2.2.0",
+        "on-headers": "^1.0.0",
+        "path-to-regexp": "^1.8.0",
+        "re2": "^1.15.8",
+        "router": "^1.3.1",
+        "rsvp": "^4.8.5",
+        "string-length": "^1.0.0",
+        "update-notifier": "^4.1.1"
       },
       "dependencies": {
         "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "dev": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
         },
         "chalk": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-          "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
           "dev": true,
           "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
           }
         },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+        "fs-extra": {
+          "version": "8.1.0",
+          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+          "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
           "dev": true,
           "requires": {
-            "color-name": "~1.1.4"
+            "graceful-fs": "^4.2.0",
+            "jsonfile": "^4.0.0",
+            "universalify": "^0.1.0"
           }
         },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-          "dev": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+        "isarray": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
           "dev": true
         },
-        "supports-color": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+        "path-to-regexp": {
+          "version": "1.8.0",
+          "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
+          "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
           "dev": true,
           "requires": {
-            "has-flag": "^4.0.0"
+            "isarray": "0.0.1"
           }
+        },
+        "supports-color": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+          "dev": true
         }
       }
     },
-    "uri-js": {
-      "version": "4.4.1",
-      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
-      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-      "dev": true,
+    "supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
       "requires": {
-        "punycode": "^2.1.0"
+        "has-flag": "^3.0.0"
       }
     },
-    "urix": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
-      "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
-      "dev": true
-    },
-    "url": {
-      "version": "0.11.0",
-      "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
-      "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==",
+    "supports-hyperlinks": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz",
+      "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==",
       "dev": true,
       "requires": {
-        "punycode": "1.3.2",
-        "querystring": "0.2.0"
+        "has-flag": "^2.0.0",
+        "supports-color": "^5.0.0"
       },
       "dependencies": {
-        "punycode": {
-          "version": "1.3.2",
-          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
-          "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==",
+        "has-flag": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
           "dev": true
         }
       }
     },
-    "url-join": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz",
-      "integrity": "sha1-HbSK1CLTQCRpqH99l73r/k+x48g=",
-      "dev": true
+    "svg.draggable.js": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz",
+      "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==",
+      "requires": {
+        "svg.js": "^2.0.1"
+      }
     },
-    "url-parse": {
-      "version": "1.5.10",
-      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
-      "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
-      "dev": true,
+    "svg.easing.js": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz",
+      "integrity": "sha1-iqmUawqOJ4V6XEChDrpAkeVpHxI=",
       "requires": {
-        "querystringify": "^2.1.1",
-        "requires-port": "^1.0.0"
+        "svg.js": ">=2.3.x"
       }
     },
-    "url-parse-lax": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
-      "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
-      "dev": true,
+    "svg.filter.js": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz",
+      "integrity": "sha1-kQCOFROJ3ZIwd5/L5uLJo2LRwgM=",
       "requires": {
-        "prepend-http": "^2.0.0"
-      },
-      "dependencies": {
-        "prepend-http": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
-          "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
-          "dev": true
-        }
+        "svg.js": "^2.2.5"
       }
     },
-    "use": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
-      "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
-      "dev": true
+    "svg.js": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz",
+      "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA=="
     },
-    "util": {
-      "version": "0.11.1",
-      "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
-      "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
-      "dev": true,
+    "svg.pathmorphing.js": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz",
+      "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==",
+      "requires": {
+        "svg.js": "^2.4.0"
+      }
+    },
+    "svg.resize.js": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz",
+      "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==",
       "requires": {
-        "inherits": "2.0.3"
+        "svg.js": "^2.6.5",
+        "svg.select.js": "^2.1.2"
       },
       "dependencies": {
-        "inherits": {
-          "version": "2.0.3",
-          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-          "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
-          "dev": true
+        "svg.select.js": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz",
+          "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==",
+          "requires": {
+            "svg.js": "^2.2.5"
+          }
         }
       }
     },
-    "util-deprecate": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
-      "dev": true
-    },
-    "utils-merge": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
-      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
-      "dev": true
-    },
-    "uuid": {
-      "version": "3.4.0",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
-      "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
-      "dev": true
-    },
-    "valid-url": {
-      "version": "1.0.9",
-      "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz",
-      "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=",
-      "dev": true
-    },
-    "validate-npm-package-name": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
-      "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==",
-      "dev": true,
+    "svg.select.js": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz",
+      "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==",
       "requires": {
-        "builtins": "^1.0.3"
+        "svg.js": "^2.6.5"
       }
     },
-    "vary": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
-      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
-      "dev": true
-    },
-    "verror": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
-      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+    "svgo": {
+      "version": "2.8.0",
+      "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz",
+      "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==",
       "dev": true,
       "requires": {
-        "assert-plus": "^1.0.0",
-        "core-util-is": "1.0.2",
-        "extsprintf": "^1.2.0"
+        "@trysound/sax": "0.2.0",
+        "commander": "^7.2.0",
+        "css-select": "^4.1.3",
+        "css-tree": "^1.1.3",
+        "csso": "^4.2.0",
+        "picocolors": "^1.0.0",
+        "stable": "^0.1.8"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+          "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+          "dev": true
+        }
       }
     },
-    "vm-browserify": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
-      "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
-      "dev": true
+    "sweetalert2": {
+      "version": "10.13.3",
+      "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-10.13.3.tgz",
+      "integrity": "sha512-kSvTkXvc59+vPf9CfZ/wc/uvFkccxoOMLK1aUibN0mXU4hbYg/NylBTlmfvuUjJQ5SWL3X6s8w7AG5croH8U1w=="
     },
-    "void-elements": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
-      "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==",
+    "symbol-observable": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz",
+      "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==",
       "dev": true
     },
-    "walkdir": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.4.1.tgz",
-      "integrity": "sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ==",
+    "tapable": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+      "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
       "dev": true
     },
-    "watchpack": {
-      "version": "1.7.5",
-      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
-      "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==",
-      "dev": true,
-      "requires": {
-        "chokidar": "^3.4.1",
-        "graceful-fs": "^4.1.2",
-        "neo-async": "^2.5.0",
-        "watchpack-chokidar2": "^2.0.1"
-      }
-    },
-    "watchpack-chokidar2": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz",
-      "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==",
+    "tar": {
+      "version": "4.4.13",
+      "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
+      "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
       "dev": true,
-      "optional": true,
       "requires": {
-        "chokidar": "^2.1.8"
-      },
+        "chownr": "^1.1.1",
+        "fs-minipass": "^1.2.5",
+        "minipass": "^2.8.6",
+        "minizlib": "^1.2.1",
+        "mkdirp": "^0.5.0",
+        "safe-buffer": "^5.1.2",
+        "yallist": "^3.0.3"
+      },
       "dependencies": {
-        "anymatch": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-          "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+        "fs-minipass": {
+          "version": "1.2.7",
+          "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
+          "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
           "dev": true,
-          "optional": true,
           "requires": {
-            "micromatch": "^3.1.4",
-            "normalize-path": "^2.1.1"
-          },
-          "dependencies": {
-            "normalize-path": {
-              "version": "2.1.1",
-              "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-              "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "remove-trailing-separator": "^1.0.1"
-              }
-            }
+            "minipass": "^2.6.0"
           }
         },
-        "binary-extensions": {
-          "version": "1.13.1",
-          "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
-          "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
-          "dev": true,
-          "optional": true
-        },
-        "braces": {
-          "version": "2.3.2",
-          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+        "minipass": {
+          "version": "2.9.0",
+          "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
+          "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
           "dev": true,
-          "optional": true,
           "requires": {
-            "arr-flatten": "^1.1.0",
-            "array-unique": "^0.3.2",
-            "extend-shallow": "^2.0.1",
-            "fill-range": "^4.0.0",
-            "isobject": "^3.0.1",
-            "repeat-element": "^1.1.2",
-            "snapdragon": "^0.8.1",
-            "snapdragon-node": "^2.0.1",
-            "split-string": "^3.0.2",
-            "to-regex": "^3.0.1"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "is-extendable": "^0.1.0"
-              }
-            }
+            "safe-buffer": "^5.1.2",
+            "yallist": "^3.0.0"
           }
         },
-        "chokidar": {
-          "version": "2.1.8",
-          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
-          "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+        "yallist": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+          "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+          "dev": true
+        }
+      }
+    },
+    "tar-stream": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+      "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+      "dev": true,
+      "requires": {
+        "bl": "^4.0.3",
+        "end-of-stream": "^1.4.1",
+        "fs-constants": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^3.1.1"
+      },
+      "dependencies": {
+        "readable-stream": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
           "dev": true,
-          "optional": true,
           "requires": {
-            "anymatch": "^2.0.0",
-            "async-each": "^1.0.1",
-            "braces": "^2.3.2",
-            "fsevents": "^1.2.7",
-            "glob-parent": "^3.1.0",
             "inherits": "^2.0.3",
-            "is-binary-path": "^1.0.0",
-            "is-glob": "^4.0.0",
-            "normalize-path": "^3.0.0",
-            "path-is-absolute": "^1.0.0",
-            "readdirp": "^2.2.1",
-            "upath": "^1.1.1"
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
           }
-        },
-        "fill-range": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
+        }
+      }
+    },
+    "tcp-port-used": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.2.tgz",
+      "integrity": "sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==",
+      "dev": true,
+      "requires": {
+        "debug": "4.3.1",
+        "is2": "^2.0.6"
+      }
+    },
+    "term-size": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz",
+      "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==",
+      "dev": true
+    },
+    "terser": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz",
+      "integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==",
+      "dev": true,
+      "requires": {
+        "commander": "^2.20.0",
+        "source-map": "~0.7.2",
+        "source-map-support": "~0.5.19"
+      },
+      "dependencies": {
+        "source-map-support": {
+          "version": "0.5.21",
+          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+          "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
           "dev": true,
-          "optional": true,
           "requires": {
-            "extend-shallow": "^2.0.1",
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1",
-            "to-regex-range": "^2.1.0"
+            "buffer-from": "^1.0.0",
+            "source-map": "^0.6.0"
           },
           "dependencies": {
-            "extend-shallow": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "is-extendable": "^0.1.0"
-              }
+            "source-map": {
+              "version": "0.6.1",
+              "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+              "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+              "dev": true
             }
           }
-        },
-        "fsevents": {
-          "version": "1.2.13",
-          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
-          "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+        }
+      }
+    },
+    "terser-webpack-plugin": {
+      "version": "5.1.4",
+      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.4.tgz",
+      "integrity": "sha512-C2WkFwstHDhVEmsmlCxrXUtVklS+Ir1A7twrYzrDrQQOIMOaVAYykaoo/Aq1K0QRkMoY2hhvDQY1cm4jnIMFwA==",
+      "dev": true,
+      "requires": {
+        "jest-worker": "^27.0.2",
+        "p-limit": "^3.1.0",
+        "schema-utils": "^3.0.0",
+        "serialize-javascript": "^6.0.0",
+        "source-map": "^0.6.1",
+        "terser": "^5.7.0"
+      },
+      "dependencies": {
+        "ajv": {
+          "version": "6.12.6",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
           "dev": true,
-          "optional": true,
           "requires": {
-            "nan": "^2.12.1"
+            "fast-deep-equal": "^3.1.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
           }
         },
-        "glob-parent": {
+        "p-limit": {
           "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-          "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "is-glob": "^3.1.0",
-            "path-dirname": "^1.0.0"
-          },
-          "dependencies": {
-            "is-glob": {
-              "version": "3.1.0",
-              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-              "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "is-extglob": "^2.1.0"
-              }
-            }
-          }
-        },
-        "is-binary-path": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-          "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+          "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
           "dev": true,
-          "optional": true,
           "requires": {
-            "binary-extensions": "^1.0.0"
+            "yocto-queue": "^0.1.0"
           }
         },
-        "is-number": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+        "schema-utils": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
           "dev": true,
-          "optional": true,
           "requires": {
-            "kind-of": "^3.0.2"
-          },
-          "dependencies": {
-            "kind-of": {
-              "version": "3.2.2",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-              "dev": true,
-              "optional": true,
-              "requires": {
-                "is-buffer": "^1.1.5"
-              }
-            }
+            "@types/json-schema": "^7.0.8",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
           }
         },
-        "micromatch": {
-          "version": "3.1.10",
-          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "arr-diff": "^4.0.0",
-            "array-unique": "^0.3.2",
-            "braces": "^2.3.1",
-            "define-property": "^2.0.2",
-            "extend-shallow": "^3.0.2",
-            "extglob": "^2.0.4",
-            "fragment-cache": "^0.2.1",
-            "kind-of": "^6.0.2",
-            "nanomatch": "^1.2.9",
-            "object.pick": "^1.3.0",
-            "regex-not": "^1.0.0",
-            "snapdragon": "^0.8.1",
-            "to-regex": "^3.0.2"
-          }
-        },
-        "readdirp": {
-          "version": "2.2.1",
-          "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
-          "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "graceful-fs": "^4.1.11",
-            "micromatch": "^3.1.10",
-            "readable-stream": "^2.0.2"
-          }
-        },
-        "to-regex-range": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-          "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
+    "text-hex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
+      "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==",
+      "dev": true
+    },
+    "text-table": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+      "dev": true
+    },
+    "through": {
+      "version": "2.3.8",
+      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+      "dev": true
+    },
+    "thunky": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
+      "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
+      "dev": true
+    },
+    "timers-ext": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
+      "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==",
+      "dev": true,
+      "requires": {
+        "es5-ext": "~0.10.46",
+        "next-tick": "1"
+      }
+    },
+    "tmp": {
+      "version": "0.0.33",
+      "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+      "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+      "dev": true,
+      "requires": {
+        "os-tmpdir": "~1.0.2"
+      }
+    },
+    "to-fast-properties": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
+    },
+    "to-object-path": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+      "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
           "dev": true,
-          "optional": true,
           "requires": {
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1"
+            "is-buffer": "^1.1.5"
           }
         }
       }
     },
-    "wavesurfer": {
-      "version": "1.3.4",
-      "resolved": "https://registry.npmjs.org/wavesurfer/-/wavesurfer-1.3.4.tgz",
-      "integrity": "sha1-F5CKvSDaEajbRgxaF2Z5Yh1Rm/o="
+    "to-readable-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
+      "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
+      "dev": true
     },
-    "wbuf": {
-      "version": "1.7.3",
-      "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
-      "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
+    "to-regex": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+      "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
       "dev": true,
       "requires": {
-        "minimalistic-assert": "^1.0.0"
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "regex-not": "^1.0.2",
+        "safe-regex": "^1.1.0"
       }
     },
-    "wcwidth": {
+    "to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dev": true,
+      "requires": {
+        "is-number": "^7.0.0"
+      }
+    },
+    "toidentifier": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+      "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
+      "dev": true
+    },
+    "tough-cookie": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
+      "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
+      "dev": true,
+      "requires": {
+        "psl": "^1.1.28",
+        "punycode": "^2.1.1"
+      }
+    },
+    "toxic": {
       "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
-      "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
+      "resolved": "https://registry.npmjs.org/toxic/-/toxic-1.0.1.tgz",
+      "integrity": "sha512-WI3rIGdcaKULYg7KVoB0zcjikqvcYYvcuT6D89bFPz2rVR0Rl0PK6x8/X62rtdLtBKIE985NzVf/auTtGegIIg==",
       "dev": true,
       "requires": {
-        "defaults": "^1.0.3"
+        "lodash": "^4.17.10"
       }
     },
-    "webdriver-js-extender": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz",
-      "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==",
+    "traverse": {
+      "version": "0.3.9",
+      "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
+      "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=",
+      "dev": true
+    },
+    "tree-kill": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
+      "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
+      "dev": true
+    },
+    "triple-beam": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
+      "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==",
+      "dev": true
+    },
+    "ts-node": {
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
+      "integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
       "dev": true,
       "requires": {
-        "@types/selenium-webdriver": "^3.0.0",
-        "selenium-webdriver": "^3.0.1"
+        "arg": "^4.1.0",
+        "diff": "^4.0.1",
+        "make-error": "^1.1.1",
+        "source-map-support": "^0.5.6",
+        "yn": "^3.0.0"
       }
     },
-    "webpack": {
-      "version": "4.44.2",
-      "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz",
-      "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==",
-      "dev": true,
-      "requires": {
-        "@webassemblyjs/ast": "1.9.0",
-        "@webassemblyjs/helper-module-context": "1.9.0",
-        "@webassemblyjs/wasm-edit": "1.9.0",
-        "@webassemblyjs/wasm-parser": "1.9.0",
-        "acorn": "^6.4.1",
-        "ajv": "^6.10.2",
-        "ajv-keywords": "^3.4.1",
-        "chrome-trace-event": "^1.0.2",
-        "enhanced-resolve": "^4.3.0",
-        "eslint-scope": "^4.0.3",
-        "json-parse-better-errors": "^1.0.2",
-        "loader-runner": "^2.4.0",
-        "loader-utils": "^1.2.3",
-        "memory-fs": "^0.4.1",
-        "micromatch": "^3.1.10",
+    "tslib": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
+      "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
+    },
+    "tslint": {
+      "version": "6.1.3",
+      "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz",
+      "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.0.0",
+        "builtin-modules": "^1.1.1",
+        "chalk": "^2.3.0",
+        "commander": "^2.12.1",
+        "diff": "^4.0.1",
+        "glob": "^7.1.1",
+        "js-yaml": "^3.13.1",
+        "minimatch": "^3.0.4",
         "mkdirp": "^0.5.3",
-        "neo-async": "^2.6.1",
-        "node-libs-browser": "^2.2.1",
-        "schema-utils": "^1.0.0",
-        "tapable": "^1.1.3",
-        "terser-webpack-plugin": "^1.4.3",
-        "watchpack": "^1.7.4",
-        "webpack-sources": "^1.4.1"
+        "resolve": "^1.3.2",
+        "semver": "^5.3.0",
+        "tslib": "^1.13.0",
+        "tsutils": "^2.29.0"
       },
       "dependencies": {
-        "braces": {
-          "version": "2.3.2",
-          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-          "dev": true,
-          "requires": {
-            "arr-flatten": "^1.1.0",
-            "array-unique": "^0.3.2",
-            "extend-shallow": "^2.0.1",
-            "fill-range": "^4.0.0",
-            "isobject": "^3.0.1",
-            "repeat-element": "^1.1.2",
-            "snapdragon": "^0.8.1",
-            "snapdragon-node": "^2.0.1",
-            "split-string": "^3.0.2",
-            "to-regex": "^3.0.1"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
-              "dev": true,
-              "requires": {
-                "is-extendable": "^0.1.0"
-              }
-            }
-          }
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+          "dev": true
         },
-        "cacache": {
-          "version": "12.0.4",
-          "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
-          "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
-          "dev": true,
-          "requires": {
-            "bluebird": "^3.5.5",
-            "chownr": "^1.1.1",
-            "figgy-pudding": "^3.5.1",
-            "glob": "^7.1.4",
-            "graceful-fs": "^4.1.15",
-            "infer-owner": "^1.0.3",
-            "lru-cache": "^5.1.1",
-            "mississippi": "^3.0.0",
-            "mkdirp": "^0.5.1",
-            "move-concurrently": "^1.0.1",
-            "promise-inflight": "^1.0.1",
-            "rimraf": "^2.6.3",
-            "ssri": "^6.0.1",
-            "unique-filename": "^1.1.1",
-            "y18n": "^4.0.0"
-          }
-        },
-        "enhanced-resolve": {
-          "version": "4.5.0",
-          "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz",
-          "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==",
-          "dev": true,
-          "requires": {
-            "graceful-fs": "^4.1.2",
-            "memory-fs": "^0.5.0",
-            "tapable": "^1.0.0"
-          },
-          "dependencies": {
-            "memory-fs": {
-              "version": "0.5.0",
-              "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
-              "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
-              "dev": true,
-              "requires": {
-                "errno": "^0.1.3",
-                "readable-stream": "^2.0.1"
-              }
-            }
-          }
-        },
-        "fill-range": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
-          "dev": true,
-          "requires": {
-            "extend-shallow": "^2.0.1",
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1",
-            "to-regex-range": "^2.1.0"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
-              "dev": true,
-              "requires": {
-                "is-extendable": "^0.1.0"
-              }
-            }
-          }
-        },
-        "find-cache-dir": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
-          "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
-          "dev": true,
-          "requires": {
-            "commondir": "^1.0.1",
-            "make-dir": "^2.0.0",
-            "pkg-dir": "^3.0.0"
-          }
-        },
-        "find-up": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-          "dev": true,
-          "requires": {
-            "locate-path": "^3.0.0"
-          }
-        },
-        "is-number": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^3.0.2"
-          },
-          "dependencies": {
-            "kind-of": {
-              "version": "3.2.2",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-              "dev": true,
-              "requires": {
-                "is-buffer": "^1.1.5"
-              }
-            }
-          }
-        },
-        "is-wsl": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
-          "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
           "dev": true
-        },
-        "json5": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
-          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
-          "dev": true,
-          "requires": {
-            "minimist": "^1.2.0"
-          }
-        },
-        "loader-utils": {
-          "version": "1.4.0",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
-          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+        }
+      }
+    },
+    "tsutils": {
+      "version": "2.29.0",
+      "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz",
+      "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==",
+      "dev": true,
+      "requires": {
+        "tslib": "^1.8.1"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+          "dev": true
+        }
+      }
+    },
+    "tunnel-agent": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "tweetnacl": {
+      "version": "0.14.5",
+      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+      "dev": true
+    },
+    "tweetsodium": {
+      "version": "0.0.5",
+      "resolved": "https://registry.npmjs.org/tweetsodium/-/tweetsodium-0.0.5.tgz",
+      "integrity": "sha512-T3aXZtx7KqQbutTtBfn+P5By3HdBuB1eCoGviIrRJV2sXeToxv2X2cv5RvYqgG26PSnN5m3fYixds22Gkfd11w==",
+      "dev": true,
+      "requires": {
+        "blakejs": "^1.1.0",
+        "tweetnacl": "^1.0.1"
+      },
+      "dependencies": {
+        "tweetnacl": {
+          "version": "1.0.3",
+          "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz",
+          "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==",
+          "dev": true
+        }
+      }
+    },
+    "type": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
+      "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
+      "dev": true
+    },
+    "type-fest": {
+      "version": "0.8.1",
+      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+      "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+      "dev": true
+    },
+    "type-is": {
+      "version": "1.6.18",
+      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+      "dev": true,
+      "requires": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.24"
+      }
+    },
+    "typedarray-to-buffer": {
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+      "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+      "dev": true,
+      "requires": {
+        "is-typedarray": "^1.0.0"
+      }
+    },
+    "typescript": {
+      "version": "4.3.5",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz",
+      "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==",
+      "dev": true
+    },
+    "ua-parser-js": {
+      "version": "0.7.31",
+      "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz",
+      "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==",
+      "dev": true
+    },
+    "unfetch": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz",
+      "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA=="
+    },
+    "unicode-canonical-property-names-ecmascript": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
+      "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
+      "dev": true
+    },
+    "unicode-match-property-ecmascript": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+      "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+      "dev": true,
+      "requires": {
+        "unicode-canonical-property-names-ecmascript": "^2.0.0",
+        "unicode-property-aliases-ecmascript": "^2.0.0"
+      }
+    },
+    "unicode-match-property-value-ecmascript": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz",
+      "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==",
+      "dev": true
+    },
+    "unicode-property-aliases-ecmascript": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz",
+      "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==",
+      "dev": true
+    },
+    "union-value": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
+      "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+      "dev": true,
+      "requires": {
+        "arr-union": "^3.1.0",
+        "get-value": "^2.0.6",
+        "is-extendable": "^0.1.1",
+        "set-value": "^2.0.1"
+      }
+    },
+    "uniq": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
+      "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==",
+      "dev": true
+    },
+    "unique-filename": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
+      "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+      "dev": true,
+      "requires": {
+        "unique-slug": "^2.0.0"
+      }
+    },
+    "unique-slug": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
+      "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
+      "dev": true,
+      "requires": {
+        "imurmurhash": "^0.1.4"
+      }
+    },
+    "unique-string": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
+      "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
+      "dev": true,
+      "requires": {
+        "crypto-random-string": "^2.0.0"
+      }
+    },
+    "universal-analytics": {
+      "version": "0.4.23",
+      "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.23.tgz",
+      "integrity": "sha512-lgMIH7XBI6OgYn1woDEmxhGdj8yDefMKg7GkWdeATAlQZFrMrNyxSkpDzY57iY0/6fdlzTbBV03OawvvzG+q7A==",
+      "dev": true,
+      "requires": {
+        "debug": "^4.1.1",
+        "request": "^2.88.2",
+        "uuid": "^3.0.0"
+      }
+    },
+    "universalify": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+      "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+      "dev": true
+    },
+    "unpipe": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+      "dev": true
+    },
+    "unset-value": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+      "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
+      "dev": true,
+      "requires": {
+        "has-value": "^0.3.1",
+        "isobject": "^3.0.0"
+      },
+      "dependencies": {
+        "has-value": {
+          "version": "0.3.1",
+          "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+          "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
           "dev": true,
           "requires": {
-            "big.js": "^5.2.2",
-            "emojis-list": "^3.0.0",
-            "json5": "^1.0.1"
+            "get-value": "^2.0.3",
+            "has-values": "^0.1.4",
+            "isobject": "^2.0.0"
+          },
+          "dependencies": {
+            "isobject": {
+              "version": "2.1.0",
+              "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+              "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
+              "dev": true,
+              "requires": {
+                "isarray": "1.0.0"
+              }
+            }
           }
         },
-        "locate-path": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+        "has-values": {
+          "version": "0.1.4",
+          "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+          "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
+          "dev": true
+        }
+      }
+    },
+    "unzipper": {
+      "version": "0.10.11",
+      "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz",
+      "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==",
+      "dev": true,
+      "requires": {
+        "big-integer": "^1.6.17",
+        "binary": "~0.3.0",
+        "bluebird": "~3.4.1",
+        "buffer-indexof-polyfill": "~1.0.0",
+        "duplexer2": "~0.1.4",
+        "fstream": "^1.0.12",
+        "graceful-fs": "^4.2.2",
+        "listenercount": "~1.0.1",
+        "readable-stream": "~2.3.6",
+        "setimmediate": "~1.0.4"
+      },
+      "dependencies": {
+        "bluebird": {
+          "version": "3.4.7",
+          "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz",
+          "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=",
+          "dev": true
+        }
+      }
+    },
+    "upath": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
+      "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
+      "dev": true
+    },
+    "update-browserslist-db": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz",
+      "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==",
+      "dev": true,
+      "requires": {
+        "escalade": "^3.1.1",
+        "picocolors": "^1.0.0"
+      }
+    },
+    "update-notifier": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz",
+      "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==",
+      "dev": true,
+      "requires": {
+        "boxen": "^4.2.0",
+        "chalk": "^3.0.0",
+        "configstore": "^5.0.1",
+        "has-yarn": "^2.1.0",
+        "import-lazy": "^2.1.0",
+        "is-ci": "^2.0.0",
+        "is-installed-globally": "^0.3.1",
+        "is-npm": "^4.0.0",
+        "is-yarn-global": "^0.3.0",
+        "latest-version": "^5.0.0",
+        "pupa": "^2.0.1",
+        "semver-diff": "^3.1.1",
+        "xdg-basedir": "^4.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
           "dev": true,
           "requires": {
-            "p-locate": "^3.0.0",
-            "path-exists": "^3.0.0"
+            "color-convert": "^2.0.1"
           }
         },
-        "micromatch": {
-          "version": "3.1.10",
-          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+        "chalk": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+          "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
           "dev": true,
           "requires": {
-            "arr-diff": "^4.0.0",
-            "array-unique": "^0.3.2",
-            "braces": "^2.3.1",
-            "define-property": "^2.0.2",
-            "extend-shallow": "^3.0.2",
-            "extglob": "^2.0.4",
-            "fragment-cache": "^0.2.1",
-            "kind-of": "^6.0.2",
-            "nanomatch": "^1.2.9",
-            "object.pick": "^1.3.0",
-            "regex-not": "^1.0.0",
-            "snapdragon": "^0.8.1",
-            "to-regex": "^3.0.2"
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
           }
         },
-        "p-locate": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-          "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
           "dev": true,
           "requires": {
-            "p-limit": "^2.0.0"
+            "color-name": "~1.1.4"
           }
         },
-        "path-exists": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-          "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
           "dev": true
         },
-        "pkg-dir": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
-          "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
           "dev": true,
           "requires": {
-            "find-up": "^3.0.0"
+            "has-flag": "^4.0.0"
           }
-        },
-        "rimraf": {
-          "version": "2.7.1",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+        }
+      }
+    },
+    "uri-js": {
+      "version": "4.4.1",
+      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+      "dev": true,
+      "requires": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "urix": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+      "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
+      "dev": true
+    },
+    "url": {
+      "version": "0.11.0",
+      "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+      "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==",
+      "dev": true,
+      "requires": {
+        "punycode": "1.3.2",
+        "querystring": "0.2.0"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "1.3.2",
+          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+          "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==",
+          "dev": true
+        }
+      }
+    },
+    "url-join": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz",
+      "integrity": "sha1-HbSK1CLTQCRpqH99l73r/k+x48g=",
+      "dev": true
+    },
+    "url-parse": {
+      "version": "1.5.10",
+      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+      "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+      "dev": true,
+      "requires": {
+        "querystringify": "^2.1.1",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "url-parse-lax": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
+      "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
+      "dev": true,
+      "requires": {
+        "prepend-http": "^2.0.0"
+      },
+      "dependencies": {
+        "prepend-http": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
+          "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
+          "dev": true
+        }
+      }
+    },
+    "use": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+      "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+      "dev": true
+    },
+    "util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+      "dev": true
+    },
+    "utils-merge": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+      "dev": true
+    },
+    "uuid": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
+      "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+      "dev": true
+    },
+    "valid-url": {
+      "version": "1.0.9",
+      "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz",
+      "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=",
+      "dev": true
+    },
+    "validate-npm-package-name": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
+      "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==",
+      "dev": true,
+      "requires": {
+        "builtins": "^1.0.3"
+      }
+    },
+    "vary": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+      "dev": true
+    },
+    "verror": {
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0",
+        "core-util-is": "1.0.2",
+        "extsprintf": "^1.2.0"
+      }
+    },
+    "void-elements": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
+      "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==",
+      "dev": true
+    },
+    "walkdir": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.4.1.tgz",
+      "integrity": "sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ==",
+      "dev": true
+    },
+    "watchpack": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
+      "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
+      "dev": true,
+      "requires": {
+        "glob-to-regexp": "^0.4.1",
+        "graceful-fs": "^4.1.2"
+      }
+    },
+    "wavesurfer": {
+      "version": "1.3.4",
+      "resolved": "https://registry.npmjs.org/wavesurfer/-/wavesurfer-1.3.4.tgz",
+      "integrity": "sha1-F5CKvSDaEajbRgxaF2Z5Yh1Rm/o="
+    },
+    "wbuf": {
+      "version": "1.7.3",
+      "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
+      "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
+      "dev": true,
+      "requires": {
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "wcwidth": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
+      "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
+      "dev": true,
+      "requires": {
+        "defaults": "^1.0.3"
+      }
+    },
+    "webdriver-js-extender": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz",
+      "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==",
+      "dev": true,
+      "requires": {
+        "@types/selenium-webdriver": "^3.0.0",
+        "selenium-webdriver": "^3.0.1"
+      }
+    },
+    "webpack": {
+      "version": "5.50.0",
+      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.50.0.tgz",
+      "integrity": "sha512-hqxI7t/KVygs0WRv/kTgUW8Kl3YC81uyWQSo/7WUs5LsuRw0htH/fCwbVBGCuiX/t4s7qzjXFcf41O8Reiypag==",
+      "dev": true,
+      "requires": {
+        "@types/eslint-scope": "^3.7.0",
+        "@types/estree": "^0.0.50",
+        "@webassemblyjs/ast": "1.11.1",
+        "@webassemblyjs/wasm-edit": "1.11.1",
+        "@webassemblyjs/wasm-parser": "1.11.1",
+        "acorn": "^8.4.1",
+        "acorn-import-assertions": "^1.7.6",
+        "browserslist": "^4.14.5",
+        "chrome-trace-event": "^1.0.2",
+        "enhanced-resolve": "^5.8.0",
+        "es-module-lexer": "^0.7.1",
+        "eslint-scope": "5.1.1",
+        "events": "^3.2.0",
+        "glob-to-regexp": "^0.4.1",
+        "graceful-fs": "^4.2.4",
+        "json-parse-better-errors": "^1.0.2",
+        "loader-runner": "^4.2.0",
+        "mime-types": "^2.1.27",
+        "neo-async": "^2.6.2",
+        "schema-utils": "^3.1.0",
+        "tapable": "^2.1.1",
+        "terser-webpack-plugin": "^5.1.3",
+        "watchpack": "^2.2.0",
+        "webpack-sources": "^3.2.0"
+      },
+      "dependencies": {
+        "ajv": {
+          "version": "6.12.6",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
           "dev": true,
           "requires": {
-            "glob": "^7.1.3"
+            "fast-deep-equal": "^3.1.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
           }
         },
         "schema-utils": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.1.0",
-            "ajv-errors": "^1.0.0",
-            "ajv-keywords": "^3.1.0"
-          }
-        },
-        "serialize-javascript": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
-          "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
           "dev": true,
           "requires": {
-            "randombytes": "^2.1.0"
+            "@types/json-schema": "^7.0.8",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
           }
         },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+        "webpack-sources": {
+          "version": "3.2.3",
+          "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+          "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
           "dev": true
-        },
-        "ssri": {
-          "version": "6.0.2",
-          "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz",
-          "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
+        }
+      }
+    },
+    "webpack-dev-middleware": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.0.0.tgz",
+      "integrity": "sha512-9zng2Z60pm6A98YoRcA0wSxw1EYn7B7y5owX/Tckyt9KGyULTkLtiavjaXlWqOMkM0YtqGgL3PvMOFgyFLq8vw==",
+      "dev": true,
+      "requires": {
+        "colorette": "^1.2.2",
+        "mem": "^8.1.1",
+        "memfs": "^3.2.2",
+        "mime-types": "^2.1.31",
+        "range-parser": "^1.2.1",
+        "schema-utils": "^3.0.0"
+      },
+      "dependencies": {
+        "ajv": {
+          "version": "6.12.6",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
           "dev": true,
           "requires": {
-            "figgy-pudding": "^3.5.1"
+            "fast-deep-equal": "^3.1.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
           }
         },
-        "tapable": {
-          "version": "1.1.3",
-          "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
-          "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
+        "mime-db": {
+          "version": "1.52.0",
+          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+          "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
           "dev": true
         },
-        "terser": {
-          "version": "4.8.0",
-          "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
-          "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
+        "mime-types": {
+          "version": "2.1.35",
+          "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+          "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
           "dev": true,
           "requires": {
-            "commander": "^2.20.0",
-            "source-map": "~0.6.1",
-            "source-map-support": "~0.5.12"
+            "mime-db": "1.52.0"
           }
         },
-        "terser-webpack-plugin": {
-          "version": "1.4.5",
-          "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz",
-          "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==",
-          "dev": true,
-          "requires": {
-            "cacache": "^12.0.2",
-            "find-cache-dir": "^2.1.0",
-            "is-wsl": "^1.1.0",
-            "schema-utils": "^1.0.0",
-            "serialize-javascript": "^4.0.0",
-            "source-map": "^0.6.1",
-            "terser": "^4.1.2",
-            "webpack-sources": "^1.4.0",
-            "worker-farm": "^1.7.0"
-          }
-        },
-        "to-regex-range": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-          "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
-          "dev": true,
-          "requires": {
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1"
-          }
-        },
-        "webpack-sources": {
-          "version": "1.4.3",
-          "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
-          "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+        "schema-utils": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
           "dev": true,
           "requires": {
-            "source-list-map": "^2.0.0",
-            "source-map": "~0.6.1"
+            "@types/json-schema": "^7.0.8",
+            "ajv": "^6.12.5",
+            "ajv-keywords": "^3.5.2"
           }
         }
       }
     },
-    "webpack-dev-middleware": {
-      "version": "3.7.2",
-      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz",
-      "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==",
-      "dev": true,
-      "requires": {
-        "memory-fs": "^0.4.1",
-        "mime": "^2.4.4",
-        "mkdirp": "^0.5.1",
-        "range-parser": "^1.2.1",
-        "webpack-log": "^2.0.0"
-      },
-      "dependencies": {
-        "mime": {
-          "version": "2.6.0",
-          "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
-          "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
-          "dev": true
-        }
-      }
-    },
     "webpack-dev-server": {
       "version": "3.11.3",
       "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz",
@@ -17351,6 +17753,18 @@
         "yargs": "^13.3.2"
       },
       "dependencies": {
+        "ajv": {
+          "version": "6.12.6",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+          "dev": true,
+          "requires": {
+            "fast-deep-equal": "^3.1.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
+          }
+        },
         "ansi-regex": {
           "version": "4.1.1",
           "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
@@ -17500,6 +17914,7 @@
           "dev": true,
           "optional": true,
           "requires": {
+            "bindings": "^1.5.0",
             "nan": "^2.12.1"
           }
         },
@@ -17584,6 +17999,12 @@
             "to-regex": "^3.0.2"
           }
         },
+        "mime": {
+          "version": "2.6.0",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
+          "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
+          "dev": true
+        },
         "p-locate": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
@@ -17662,6 +18083,19 @@
             "repeat-string": "^1.6.1"
           }
         },
+        "webpack-dev-middleware": {
+          "version": "3.7.3",
+          "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz",
+          "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==",
+          "dev": true,
+          "requires": {
+            "memory-fs": "^0.4.1",
+            "mime": "^2.4.4",
+            "mkdirp": "^0.5.1",
+            "range-parser": "^1.2.1",
+            "webpack-log": "^2.0.0"
+          }
+        },
         "wrap-ansi": {
           "version": "5.1.0",
           "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
@@ -17733,9 +18167,9 @@
       }
     },
     "webpack-merge": {
-      "version": "5.7.3",
-      "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz",
-      "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==",
+      "version": "5.8.0",
+      "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz",
+      "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==",
       "dev": true,
       "requires": {
         "clone-deep": "^4.0.1",
@@ -17743,13 +18177,13 @@
       }
     },
     "webpack-sources": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz",
-      "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==",
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
+      "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
       "dev": true,
       "requires": {
-        "source-list-map": "^2.0.1",
-        "source-map": "^0.6.1"
+        "source-list-map": "^2.0.0",
+        "source-map": "~0.6.1"
       },
       "dependencies": {
         "source-map": {
@@ -17767,24 +18201,6 @@
       "dev": true,
       "requires": {
         "webpack-sources": "^1.3.0"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        },
-        "webpack-sources": {
-          "version": "1.4.3",
-          "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
-          "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
-          "dev": true,
-          "requires": {
-            "source-list-map": "^2.0.0",
-            "source-map": "~0.6.1"
-          }
-        }
       }
     },
     "websocket-driver": {
@@ -17807,12 +18223,6 @@
       "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
       "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng=="
     },
-    "whatwg-mimetype": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
-      "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
-      "dev": true
-    },
     "which": {
       "version": "1.3.1",
       "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
@@ -17833,6 +18243,7 @@
       "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
       "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
       "dev": true,
+      "optional": true,
       "requires": {
         "string-width": "^1.0.2 || 2"
       }
@@ -17938,46 +18349,6 @@
         "triple-beam": "^1.2.0"
       }
     },
-    "worker-farm": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
-      "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
-      "dev": true,
-      "requires": {
-        "errno": "~0.1.7"
-      }
-    },
-    "worker-plugin": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-5.0.0.tgz",
-      "integrity": "sha512-AXMUstURCxDD6yGam2r4E34aJg6kW85IiaeX72hi+I1cxyaMUtrvVY6sbfpGKAj5e7f68Acl62BjQF5aOOx2IQ==",
-      "dev": true,
-      "requires": {
-        "loader-utils": "^1.1.0"
-      },
-      "dependencies": {
-        "json5": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
-          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
-          "dev": true,
-          "requires": {
-            "minimist": "^1.2.0"
-          }
-        },
-        "loader-utils": {
-          "version": "1.4.0",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
-          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
-          "dev": true,
-          "requires": {
-            "big.js": "^5.2.2",
-            "emojis-list": "^3.0.0",
-            "json5": "^1.0.1"
-          }
-        }
-      }
-    },
     "wrap-ansi": {
       "version": "6.2.0",
       "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
@@ -18263,9 +18634,12 @@
       }
     },
     "zone.js": {
-      "version": "0.10.3",
-      "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz",
-      "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg=="
+      "version": "0.11.6",
+      "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.6.tgz",
+      "integrity": "sha512-umJqFtKyZlPli669gB1gOrRE9hxUUGkZr7mo878z+NEBJZZixJkKeVYfnoLa7g25SseUDc92OZrMKKHySyJrFg==",
+      "requires": {
+        "tslib": "^2.3.0"
+      }
     }
   }
 }
diff --git a/package.json b/package.json
index 8f48767..154e2c9 100644
--- a/package.json
+++ b/package.json
@@ -11,18 +11,18 @@
   },
   "private": true,
   "dependencies": {
-    "@angular/animations": "~11.2.14",
+    "@angular/animations": "~12.2.16",
     "@angular/cdk": "^11.2.13",
-    "@angular/common": "~11.2.14",
-    "@angular/compiler": "~11.2.14",
-    "@angular/core": "~11.2.14",
+    "@angular/common": "~12.2.16",
+    "@angular/compiler": "~12.2.16",
+    "@angular/core": "~12.2.16",
     "@angular/fire": "^6.1.4",
-    "@angular/forms": "~11.2.14",
-    "@angular/localize": "^11.2.14",
+    "@angular/forms": "~12.2.16",
+    "@angular/localize": "^12.2.16",
     "@angular/material": "^11.2.13",
-    "@angular/platform-browser": "~11.2.14",
-    "@angular/platform-browser-dynamic": "~11.2.14",
-    "@angular/router": "~11.2.14",
+    "@angular/platform-browser": "~12.2.16",
+    "@angular/platform-browser-dynamic": "~12.2.16",
+    "@angular/router": "~12.2.16",
     "@auth0/auth0-angular": "^1.10.0",
     "angular-walkthrough": "^0.8.2",
     "apexcharts": "^3.24.0",
@@ -40,14 +40,14 @@
     "sweetalert2": "^10.13.3",
     "tslib": "^2.0.0",
     "wavesurfer": "^1.3.4",
-    "zone.js": "~0.10.2"
+    "zone.js": "~0.11.6"
   },
   "devDependencies": {
-    "@angular-devkit/architect": "0.1102.19",
-    "@angular-devkit/build-angular": "~0.1102.19",
-    "@angular/cli": "~11.2.19",
-    "@angular/compiler-cli": "~11.2.14",
-    "@angular/language-service": "~11.2.14",
+    "@angular-devkit/architect": "0.1202.17",
+    "@angular-devkit/build-angular": "~12.2.17",
+    "@angular/cli": "~12.2.17",
+    "@angular/compiler-cli": "~12.2.16",
+    "@angular/language-service": "~12.2.16",
     "@types/jasmine": "~3.6.0",
     "@types/jasminewd2": "~2.0.3",
     "@types/node": "^12.11.1",
@@ -67,6 +67,6 @@
     "protractor": "~7.0.0",
     "ts-node": "~8.3.0",
     "tslint": "~6.1.0",
-    "typescript": "~4.0.8"
+    "typescript": "~4.3.5"
   }
 }
-- 
GitLab


From c0f678c285932696fa891a9bd8f513a122583146 Mon Sep 17 00:00:00 2001
From: ramesh <rdramesh2009@gmail.com>
Date: Mon, 11 Jul 2022 14:50:10 -0400
Subject: [PATCH 14/23] angular 12 material

---
 package-lock.json | 16 ++++++++--------
 package.json      |  4 ++--
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index c2645b0..21fb499 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -588,12 +588,12 @@
       }
     },
     "@angular/cdk": {
-      "version": "11.2.13",
-      "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-11.2.13.tgz",
-      "integrity": "sha512-FkE4iCwoLbQxLDUOjV1I7M/6hmpyb7erAjEdWgch7nGRNxF1hqX5Bqf1lvLFKPNCbx5NRI5K7YVAdIUQUR8vug==",
+      "version": "12.2.13",
+      "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-12.2.13.tgz",
+      "integrity": "sha512-zSKRhECyFqhingIeyRInIyTvYErt4gWo+x5DQr0b7YLUbU8DZSwWnG4w76Ke2s4U8T7ry1jpJBHoX/e8YBpGMg==",
       "requires": {
         "parse5": "^5.0.0",
-        "tslib": "^2.0.0"
+        "tslib": "^2.2.0"
       },
       "dependencies": {
         "parse5": {
@@ -1204,11 +1204,11 @@
       }
     },
     "@angular/material": {
-      "version": "11.2.13",
-      "resolved": "https://registry.npmjs.org/@angular/material/-/material-11.2.13.tgz",
-      "integrity": "sha512-FqFdGSkOtqsmeLyTSousodDGUy2NqbtxCIKv2rwbsIRwHNKB0KpR/UQhA2gMRuGa5hxhMJ0DW0Tf9neMRuLCTg==",
+      "version": "12.2.13",
+      "resolved": "https://registry.npmjs.org/@angular/material/-/material-12.2.13.tgz",
+      "integrity": "sha512-6g2GyN4qp2D+DqY2AwrQuPB3cd9gybvQVXvNRbTPXEulHr+LgGei00ySdFHFp6RvdGSMZ4i3LM1Fq3VkFxhCfQ==",
       "requires": {
-        "tslib": "^2.0.0"
+        "tslib": "^2.2.0"
       }
     },
     "@angular/platform-browser": {
diff --git a/package.json b/package.json
index 154e2c9..c7e313f 100644
--- a/package.json
+++ b/package.json
@@ -12,14 +12,14 @@
   "private": true,
   "dependencies": {
     "@angular/animations": "~12.2.16",
-    "@angular/cdk": "^11.2.13",
+    "@angular/cdk": "^12.2.13",
     "@angular/common": "~12.2.16",
     "@angular/compiler": "~12.2.16",
     "@angular/core": "~12.2.16",
     "@angular/fire": "^6.1.4",
     "@angular/forms": "~12.2.16",
     "@angular/localize": "^12.2.16",
-    "@angular/material": "^11.2.13",
+    "@angular/material": "^12.2.13",
     "@angular/platform-browser": "~12.2.16",
     "@angular/platform-browser-dynamic": "~12.2.16",
     "@angular/router": "~12.2.16",
-- 
GitLab


From 0a6ccdb5ecd9b663b74652aec9f0a87379bd05c3 Mon Sep 17 00:00:00 2001
From: ramesh <rdramesh2009@gmail.com>
Date: Mon, 11 Jul 2022 15:04:21 -0400
Subject: [PATCH 15/23] angular 13

---
 .gitignore        |    1 +
 angular.json      |   13 -
 package-lock.json | 6548 ++++++++++++++-------------------------------
 package.json      |   30 +-
 src/polyfills.ts  |   10 -
 src/test.ts       |    4 +-
 6 files changed, 2010 insertions(+), 4596 deletions(-)

diff --git a/.gitignore b/.gitignore
index 86d943a..53a8849 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,6 +32,7 @@ speed-measure-plugin*.json
 .history/*
 
 # misc
+/.angular/cache
 /.sass-cache
 /connect.lock
 /coverage
diff --git a/angular.json b/angular.json
index 83ee957..9a009e6 100644
--- a/angular.json
+++ b/angular.json
@@ -97,19 +97,6 @@
             "scripts": []
           }
         },
-        "lint": {
-          "builder": "@angular-devkit/build-angular:tslint",
-          "options": {
-            "tsConfig": [
-              "tsconfig.app.json",
-              "tsconfig.spec.json",
-              "e2e/tsconfig.json"
-            ],
-            "exclude": [
-              "**/node_modules/**"
-            ]
-          }
-        },
         "e2e": {
           "builder": "@angular-devkit/build-angular:protractor",
           "options": {
diff --git a/package-lock.json b/package-lock.json
index 21fb499..4cd1a1e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5,30 +5,22 @@
   "requires": true,
   "dependencies": {
     "@ampproject/remapping": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-1.0.1.tgz",
-      "integrity": "sha512-Ta9bMA3EtUHDaZJXqUoT5cn/EecwOp+SXpKJqxDbDuMbLvEMu6YTyDDuvTWeStODfdmXyfMo7LymQyPkN3BicA==",
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
+      "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
       "dev": true,
       "requires": {
-        "@jridgewell/resolve-uri": "1.0.0",
-        "sourcemap-codec": "1.4.8"
-      },
-      "dependencies": {
-        "@jridgewell/resolve-uri": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-1.0.0.tgz",
-          "integrity": "sha512-9oLAnygRMi8Q5QkYEU4XWK04B+nuoXoxjRvRxgjuChkLZFBja0YPSgdZ7dZtwhncLBcQe/I/E+fLuk5qxcYVJA==",
-          "dev": true
-        }
+        "@jridgewell/gen-mapping": "^0.1.0",
+        "@jridgewell/trace-mapping": "^0.3.9"
       }
     },
     "@angular-devkit/architect": {
-      "version": "0.1202.17",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1202.17.tgz",
-      "integrity": "sha512-uUQcHcLbPvr9adALQSLU1MTDduVUR2kZAHi2e7SmL9ioel84pPVXBoD0WpSBeUMKwPiDs3TQDaxDB49hl0nBSQ==",
+      "version": "0.1303.8",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1303.8.tgz",
+      "integrity": "sha512-2zaNejnfZbq+fFOVgkmWkh+2UmK/CBDbWTq7VJHopJLtUuf7pFNvRk73s9xayuJ3Lt2/sY17Mykku2LziBF89A==",
       "dev": true,
       "requires": {
-        "@angular-devkit/core": "12.2.17",
+        "@angular-devkit/core": "13.3.8",
         "rxjs": "6.6.7"
       },
       "dependencies": {
@@ -50,81 +42,76 @@
       }
     },
     "@angular-devkit/build-angular": {
-      "version": "12.2.17",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-12.2.17.tgz",
-      "integrity": "sha512-uc3HGHVQyatqQ/M53oxYBvhz0jx0hgdc7WT+L56GLHvgz7Ct2VEbpWaMfwHkFfE1F1iHkIgnTKHKWacJl1yQIg==",
-      "dev": true,
-      "requires": {
-        "@ampproject/remapping": "1.0.1",
-        "@angular-devkit/architect": "0.1202.17",
-        "@angular-devkit/build-optimizer": "0.1202.17",
-        "@angular-devkit/build-webpack": "0.1202.17",
-        "@angular-devkit/core": "12.2.17",
-        "@babel/core": "7.14.8",
-        "@babel/generator": "7.14.8",
-        "@babel/helper-annotate-as-pure": "7.14.5",
-        "@babel/plugin-proposal-async-generator-functions": "7.14.7",
-        "@babel/plugin-transform-async-to-generator": "7.14.5",
-        "@babel/plugin-transform-runtime": "7.14.5",
-        "@babel/preset-env": "7.14.8",
-        "@babel/runtime": "7.14.8",
-        "@babel/template": "7.14.5",
-        "@discoveryjs/json-ext": "0.5.3",
-        "@jsdevtools/coverage-istanbul-loader": "3.0.5",
-        "@ngtools/webpack": "12.2.17",
+      "version": "13.3.8",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.3.8.tgz",
+      "integrity": "sha512-5nWqb58oLcWoBoAECqHiUlOV23/J/4W1a9aqaFQcN6bThRzoy54S69zUuQREnBE36elDrSxhn2Y34poqYe8iKQ==",
+      "dev": true,
+      "requires": {
+        "@ampproject/remapping": "2.2.0",
+        "@angular-devkit/architect": "0.1303.8",
+        "@angular-devkit/build-webpack": "0.1303.8",
+        "@angular-devkit/core": "13.3.8",
+        "@babel/core": "7.16.12",
+        "@babel/generator": "7.16.8",
+        "@babel/helper-annotate-as-pure": "7.16.7",
+        "@babel/plugin-proposal-async-generator-functions": "7.16.8",
+        "@babel/plugin-transform-async-to-generator": "7.16.8",
+        "@babel/plugin-transform-runtime": "7.16.10",
+        "@babel/preset-env": "7.16.11",
+        "@babel/runtime": "7.16.7",
+        "@babel/template": "7.16.7",
+        "@discoveryjs/json-ext": "0.5.6",
+        "@ngtools/webpack": "13.3.8",
         "ansi-colors": "4.1.1",
-        "babel-loader": "8.2.2",
+        "babel-loader": "8.2.5",
+        "babel-plugin-istanbul": "6.1.1",
         "browserslist": "^4.9.1",
-        "cacache": "15.2.0",
-        "caniuse-lite": "^1.0.30001032",
+        "cacache": "15.3.0",
         "circular-dependency-plugin": "5.2.2",
-        "copy-webpack-plugin": "9.0.1",
-        "core-js": "3.16.0",
-        "critters": "0.0.12",
-        "css-loader": "6.2.0",
-        "css-minimizer-webpack-plugin": "3.0.2",
-        "esbuild": "0.13.8",
-        "esbuild-wasm": "0.13.8",
-        "find-cache-dir": "3.3.1",
-        "glob": "7.1.7",
+        "copy-webpack-plugin": "10.2.1",
+        "core-js": "3.20.3",
+        "critters": "0.0.16",
+        "css-loader": "6.5.1",
+        "esbuild": "0.14.22",
+        "esbuild-wasm": "0.14.22",
+        "glob": "7.2.0",
         "https-proxy-agent": "5.0.0",
-        "inquirer": "8.1.2",
+        "inquirer": "8.2.0",
+        "jsonc-parser": "3.0.0",
         "karma-source-map-support": "1.4.0",
-        "less": "4.1.1",
-        "less-loader": "10.0.1",
-        "license-webpack-plugin": "2.3.20",
-        "loader-utils": "2.0.0",
-        "mini-css-extract-plugin": "2.4.2",
-        "minimatch": "3.0.4",
-        "open": "8.2.1",
+        "less": "4.1.2",
+        "less-loader": "10.2.0",
+        "license-webpack-plugin": "4.0.2",
+        "loader-utils": "3.2.0",
+        "mini-css-extract-plugin": "2.5.3",
+        "minimatch": "3.0.5",
+        "open": "8.4.0",
         "ora": "5.4.1",
         "parse5-html-rewriting-stream": "6.0.1",
-        "piscina": "3.1.0",
-        "postcss": "8.3.6",
+        "piscina": "3.2.0",
+        "postcss": "8.4.5",
         "postcss-import": "14.0.2",
-        "postcss-loader": "6.1.1",
-        "postcss-preset-env": "6.7.0",
+        "postcss-loader": "6.2.1",
+        "postcss-preset-env": "7.2.3",
         "regenerator-runtime": "0.13.9",
-        "resolve-url-loader": "4.0.0",
+        "resolve-url-loader": "5.0.0",
         "rxjs": "6.6.7",
-        "sass": "1.36.0",
-        "sass-loader": "12.1.0",
+        "sass": "1.49.9",
+        "sass-loader": "12.4.0",
         "semver": "7.3.5",
-        "source-map-loader": "3.0.0",
-        "source-map-support": "0.5.19",
-        "style-loader": "3.2.1",
-        "stylus": "0.54.8",
-        "stylus-loader": "6.1.0",
-        "terser": "5.7.1",
-        "terser-webpack-plugin": "5.1.4",
+        "source-map-loader": "3.0.1",
+        "source-map-support": "0.5.21",
+        "stylus": "0.56.0",
+        "stylus-loader": "6.2.0",
+        "terser": "5.11.0",
         "text-table": "0.2.0",
         "tree-kill": "1.2.2",
-        "tslib": "2.3.0",
-        "webpack": "5.50.0",
-        "webpack-dev-middleware": "5.0.0",
-        "webpack-dev-server": "3.11.3",
+        "tslib": "2.3.1",
+        "webpack": "5.70.0",
+        "webpack-dev-middleware": "5.3.0",
+        "webpack-dev-server": "4.7.3",
         "webpack-merge": "5.8.0",
-        "webpack-subresource-integrity": "1.5.2"
+        "webpack-subresource-integrity": "5.1.0"
       },
       "dependencies": {
         "@babel/code-frame": {
@@ -137,12 +124,12 @@
           }
         },
         "@babel/generator": {
-          "version": "7.14.8",
-          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.8.tgz",
-          "integrity": "sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg==",
+          "version": "7.16.8",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz",
+          "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==",
           "dev": true,
           "requires": {
-            "@babel/types": "^7.14.8",
+            "@babel/types": "^7.16.8",
             "jsesc": "^2.5.1",
             "source-map": "^0.5.0"
           }
@@ -165,14 +152,14 @@
           }
         },
         "@babel/template": {
-          "version": "7.14.5",
-          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz",
-          "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==",
+          "version": "7.16.7",
+          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz",
+          "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==",
           "dev": true,
           "requires": {
-            "@babel/code-frame": "^7.14.5",
-            "@babel/parser": "^7.14.5",
-            "@babel/types": "^7.14.5"
+            "@babel/code-frame": "^7.16.7",
+            "@babel/parser": "^7.16.7",
+            "@babel/types": "^7.16.7"
           }
         },
         "agent-base": {
@@ -230,29 +217,31 @@
           "dev": true
         },
         "esbuild": {
-          "version": "0.13.8",
-          "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.8.tgz",
-          "integrity": "sha512-A4af7G7YZLfG5OnARJRMtlpEsCkq/zHZQXewgPA864l9D6VjjbH1SuFYK/OSV6BtHwDGkdwyRrX0qQFLnMfUcw==",
+          "version": "0.14.22",
+          "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.22.tgz",
+          "integrity": "sha512-CjFCFGgYtbFOPrwZNJf7wsuzesx8kqwAffOlbYcFDLFuUtP8xloK1GH+Ai13Qr0RZQf9tE7LMTHJ2iVGJ1SKZA==",
           "dev": true,
           "optional": true,
           "requires": {
-            "esbuild-android-arm64": "0.13.8",
-            "esbuild-darwin-64": "0.13.8",
-            "esbuild-darwin-arm64": "0.13.8",
-            "esbuild-freebsd-64": "0.13.8",
-            "esbuild-freebsd-arm64": "0.13.8",
-            "esbuild-linux-32": "0.13.8",
-            "esbuild-linux-64": "0.13.8",
-            "esbuild-linux-arm": "0.13.8",
-            "esbuild-linux-arm64": "0.13.8",
-            "esbuild-linux-mips64le": "0.13.8",
-            "esbuild-linux-ppc64le": "0.13.8",
-            "esbuild-netbsd-64": "0.13.8",
-            "esbuild-openbsd-64": "0.13.8",
-            "esbuild-sunos-64": "0.13.8",
-            "esbuild-windows-32": "0.13.8",
-            "esbuild-windows-64": "0.13.8",
-            "esbuild-windows-arm64": "0.13.8"
+            "esbuild-android-arm64": "0.14.22",
+            "esbuild-darwin-64": "0.14.22",
+            "esbuild-darwin-arm64": "0.14.22",
+            "esbuild-freebsd-64": "0.14.22",
+            "esbuild-freebsd-arm64": "0.14.22",
+            "esbuild-linux-32": "0.14.22",
+            "esbuild-linux-64": "0.14.22",
+            "esbuild-linux-arm": "0.14.22",
+            "esbuild-linux-arm64": "0.14.22",
+            "esbuild-linux-mips64le": "0.14.22",
+            "esbuild-linux-ppc64le": "0.14.22",
+            "esbuild-linux-riscv64": "0.14.22",
+            "esbuild-linux-s390x": "0.14.22",
+            "esbuild-netbsd-64": "0.14.22",
+            "esbuild-openbsd-64": "0.14.22",
+            "esbuild-sunos-64": "0.14.22",
+            "esbuild-windows-32": "0.14.22",
+            "esbuild-windows-64": "0.14.22",
+            "esbuild-windows-arm64": "0.14.22"
           }
         },
         "figures": {
@@ -265,9 +254,9 @@
           }
         },
         "glob": {
-          "version": "7.1.7",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
-          "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
+          "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
           "dev": true,
           "requires": {
             "fs.realpath": "^1.0.0",
@@ -295,9 +284,9 @@
           }
         },
         "inquirer": {
-          "version": "8.1.2",
-          "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.2.tgz",
-          "integrity": "sha512-DHLKJwLPNgkfwNmsuEUKSejJFbkv0FMO9SMiQbjI3n5NQuCrSIBqP66ggqyz2a6t2qEolKrMjhQ3+W/xXgUQ+Q==",
+          "version": "8.2.0",
+          "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz",
+          "integrity": "sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==",
           "dev": true,
           "requires": {
             "ansi-escapes": "^4.2.1",
@@ -308,7 +297,7 @@
             "figures": "^3.0.0",
             "lodash": "^4.17.21",
             "mute-stream": "0.0.8",
-            "ora": "^5.3.0",
+            "ora": "^5.4.1",
             "run-async": "^2.4.0",
             "rxjs": "^7.2.0",
             "string-width": "^4.1.0",
@@ -358,6 +347,15 @@
             "yallist": "^4.0.0"
           }
         },
+        "minimatch": {
+          "version": "3.0.5",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz",
+          "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
+        },
         "mute-stream": {
           "version": "0.0.8",
           "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
@@ -365,9 +363,9 @@
           "dev": true
         },
         "open": {
-          "version": "8.2.1",
-          "resolved": "https://registry.npmjs.org/open/-/open-8.2.1.tgz",
-          "integrity": "sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ==",
+          "version": "8.4.0",
+          "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
+          "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
           "dev": true,
           "requires": {
             "define-lazy-prop": "^2.0.0",
@@ -408,9 +406,9 @@
           "dev": true
         },
         "source-map-support": {
-          "version": "0.5.19",
-          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
-          "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
+          "version": "0.5.21",
+          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+          "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
           "dev": true,
           "requires": {
             "buffer-from": "^1.0.0",
@@ -455,9 +453,9 @@
           }
         },
         "tslib": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
-          "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==",
+          "version": "2.3.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+          "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
           "dev": true
         },
         "type-fest": {
@@ -468,32 +466,13 @@
         }
       }
     },
-    "@angular-devkit/build-optimizer": {
-      "version": "0.1202.17",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1202.17.tgz",
-      "integrity": "sha512-1qWGWw7cCNADB4LZ/zjiSK0GLmr2kebYyNG0KutCE8GNVxv2h6w6dJP6t1C/BgskRuBPCAhvE+lEKN8ljSutag==",
-      "dev": true,
-      "requires": {
-        "source-map": "0.7.3",
-        "tslib": "2.3.0",
-        "typescript": "4.3.5"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
-          "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==",
-          "dev": true
-        }
-      }
-    },
     "@angular-devkit/build-webpack": {
-      "version": "0.1202.17",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1202.17.tgz",
-      "integrity": "sha512-z7FW43DJ4p8UZwbFRmMrh2ohqhI2Wtdg3+FZiTnl4opb3zYheGiNxPlTuiyKjG21JUkGCdthkkBLCNfaUU0U/Q==",
+      "version": "0.1303.8",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1303.8.tgz",
+      "integrity": "sha512-N3DehEQ4uARricbYTuASBCnHdrtKFIMZpl6A4GB5DKQILF7KctsaAz0QvAiA8y4ojhSIRvXK5XVWklX3QVlJIw==",
       "dev": true,
       "requires": {
-        "@angular-devkit/architect": "0.1202.17",
+        "@angular-devkit/architect": "0.1303.8",
         "rxjs": "6.6.7"
       },
       "dependencies": {
@@ -515,13 +494,13 @@
       }
     },
     "@angular-devkit/core": {
-      "version": "12.2.17",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.17.tgz",
-      "integrity": "sha512-PyOY7LGUPPd6rakxUYbfQN6zAdOCMCouVp5tERY1WTdMdEiuULOtHsPee8kNbh75pD59KbJNU+fwozPRMuIm5g==",
+      "version": "13.3.8",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.8.tgz",
+      "integrity": "sha512-PCmfMkErpnH429l1cANak4PnCpAscqAubS6Dw83++cS34ht0/bgKRb2zSyBuB2Ka6kw7wAZ3fCyTcVvyfxVFEg==",
       "dev": true,
       "requires": {
-        "ajv": "8.6.2",
-        "ajv-formats": "2.1.0",
+        "ajv": "8.9.0",
+        "ajv-formats": "2.1.1",
         "fast-json-stable-stringify": "2.1.0",
         "magic-string": "0.25.7",
         "rxjs": "6.6.7",
@@ -552,12 +531,14 @@
       }
     },
     "@angular-devkit/schematics": {
-      "version": "12.2.17",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.2.17.tgz",
-      "integrity": "sha512-c0eNu/nx1Mnu7KcZgYTYHP736H4Y9pSyLBSmLAHYZv3t3m0dIPbhifRcLQX7hHQ8fGT2ZFxmOpaQG5/DcIghSw==",
+      "version": "13.3.8",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.8.tgz",
+      "integrity": "sha512-7mTlxZhS9uHxtmOiZeSMkKdIE5r5FmQ/1IBhRBfD5XDQdipQkUJyOtclPO/+t/AJIG0+LYt9+7X5hHUr7W3kZA==",
       "dev": true,
       "requires": {
-        "@angular-devkit/core": "12.2.17",
+        "@angular-devkit/core": "13.3.8",
+        "jsonc-parser": "3.0.0",
+        "magic-string": "0.25.7",
         "ora": "5.4.1",
         "rxjs": "6.6.7"
       },
@@ -580,11 +561,11 @@
       }
     },
     "@angular/animations": {
-      "version": "12.2.16",
-      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-12.2.16.tgz",
-      "integrity": "sha512-Kf6C7Ta+fCMq5DvT9JNVhBkcECrqFa3wumiC6ssGo5sNaEzXz+tlep9ZgEbqfxSn7gAN7L1DgsbS9u0O6tbUkg==",
+      "version": "13.3.11",
+      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.3.11.tgz",
+      "integrity": "sha512-KE/3RuvixHIk9YTSwaUsezsUm9Ig9Y8rZMpHOT/8bRtzPiJ5ld2GnDHjrJgyZn7TdoP4wz4YCta5eC4ycu+KCw==",
       "requires": {
-        "tslib": "^2.2.0"
+        "tslib": "^2.3.0"
       }
     },
     "@angular/cdk": {
@@ -605,27 +586,27 @@
       }
     },
     "@angular/cli": {
-      "version": "12.2.17",
-      "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-12.2.17.tgz",
-      "integrity": "sha512-mubRPp5hRIK/q0J8q6kVAqbYYuBUKMMBljUCqT4fHsl+qXYD27rgG3EqNzycKBMHUIlykotrDSdy47voD+atOg==",
+      "version": "13.3.8",
+      "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.8.tgz",
+      "integrity": "sha512-dsvum8oGnbgX5mLh9CDzP1ip2UGDZdppPD6np2XXhqX75DfJxRlgl4u3NxBSnDmeyhIGTsGV0HKAxoB5EOoHcw==",
       "dev": true,
       "requires": {
-        "@angular-devkit/architect": "0.1202.17",
-        "@angular-devkit/core": "12.2.17",
-        "@angular-devkit/schematics": "12.2.17",
-        "@schematics/angular": "12.2.17",
+        "@angular-devkit/architect": "0.1303.8",
+        "@angular-devkit/core": "13.3.8",
+        "@angular-devkit/schematics": "13.3.8",
+        "@schematics/angular": "13.3.8",
         "@yarnpkg/lockfile": "1.1.0",
         "ansi-colors": "4.1.1",
-        "debug": "4.3.2",
+        "debug": "4.3.3",
         "ini": "2.0.0",
-        "inquirer": "8.1.2",
+        "inquirer": "8.2.0",
         "jsonc-parser": "3.0.0",
         "npm-package-arg": "8.1.5",
         "npm-pick-manifest": "6.1.1",
-        "open": "8.2.1",
+        "open": "8.4.0",
         "ora": "5.4.1",
-        "pacote": "12.0.2",
-        "resolve": "1.20.0",
+        "pacote": "12.0.3",
+        "resolve": "1.22.0",
         "semver": "7.3.5",
         "symbol-observable": "4.0.0",
         "uuid": "8.3.2"
@@ -687,9 +668,9 @@
           "dev": true
         },
         "debug": {
-          "version": "4.3.2",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
-          "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+          "version": "4.3.3",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
+          "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
           "dev": true,
           "requires": {
             "ms": "2.1.2"
@@ -717,9 +698,9 @@
           "dev": true
         },
         "inquirer": {
-          "version": "8.1.2",
-          "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.2.tgz",
-          "integrity": "sha512-DHLKJwLPNgkfwNmsuEUKSejJFbkv0FMO9SMiQbjI3n5NQuCrSIBqP66ggqyz2a6t2qEolKrMjhQ3+W/xXgUQ+Q==",
+          "version": "8.2.0",
+          "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz",
+          "integrity": "sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==",
           "dev": true,
           "requires": {
             "ansi-escapes": "^4.2.1",
@@ -730,7 +711,7 @@
             "figures": "^3.0.0",
             "lodash": "^4.17.21",
             "mute-stream": "0.0.8",
-            "ora": "^5.3.0",
+            "ora": "^5.4.1",
             "run-async": "^2.4.0",
             "rxjs": "^7.2.0",
             "string-width": "^4.1.0",
@@ -738,6 +719,15 @@
             "through": "^2.3.6"
           }
         },
+        "is-core-module": {
+          "version": "2.9.0",
+          "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
+          "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
+          "dev": true,
+          "requires": {
+            "has": "^1.0.3"
+          }
+        },
         "is-fullwidth-code-point": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
@@ -766,9 +756,9 @@
           "dev": true
         },
         "open": {
-          "version": "8.2.1",
-          "resolved": "https://registry.npmjs.org/open/-/open-8.2.1.tgz",
-          "integrity": "sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ==",
+          "version": "8.4.0",
+          "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
+          "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
           "dev": true,
           "requires": {
             "define-lazy-prop": "^2.0.0",
@@ -776,14 +766,21 @@
             "is-wsl": "^2.2.0"
           }
         },
+        "path-parse": {
+          "version": "1.0.7",
+          "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+          "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+          "dev": true
+        },
         "resolve": {
-          "version": "1.20.0",
-          "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
-          "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
+          "version": "1.22.0",
+          "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
+          "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
           "dev": true,
           "requires": {
-            "is-core-module": "^2.2.0",
-            "path-parse": "^1.0.6"
+            "is-core-module": "^2.8.1",
+            "path-parse": "^1.0.7",
+            "supports-preserve-symlinks-flag": "^1.0.0"
           }
         },
         "rxjs": {
@@ -848,43 +845,96 @@
       }
     },
     "@angular/common": {
-      "version": "12.2.16",
-      "resolved": "https://registry.npmjs.org/@angular/common/-/common-12.2.16.tgz",
-      "integrity": "sha512-FEqTXTEsnbDInqV1yFlm97Tz1OFqZS5t0TUkm8gzXRgpIce/F/jLwAg0u1VQkgOsno6cNm0xTWPoZgu85NI4ug==",
+      "version": "13.3.11",
+      "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.3.11.tgz",
+      "integrity": "sha512-gPMwDYIAag1izXm2tRQ6EOIx9FVEUqLdr+qYtRVoQtoBmfkoTSLGcpeBXqqlPVxVPbA6Li1WZZT5wxLLlLAN+Q==",
       "requires": {
-        "tslib": "^2.2.0"
+        "tslib": "^2.3.0"
       }
     },
     "@angular/compiler": {
-      "version": "12.2.16",
-      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-12.2.16.tgz",
-      "integrity": "sha512-nsYEw+yu8QyeqPf9nAmG419i1mtGM4v8+U+S3eQHQFXTgJzLymMykWHYu2ETdjUpNSLK6xcIQDBWtWnWSfJjAA==",
+      "version": "13.3.11",
+      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.3.11.tgz",
+      "integrity": "sha512-EV6JCBbXdHDHbPShWmymvuoxFYG0KVc8sDJpYp47WLHCY2zgZaXhvWs//Hrls3fmi+TGTekgRa2jOBBNce/Ggg==",
       "requires": {
-        "tslib": "^2.2.0"
+        "tslib": "^2.3.0"
       }
     },
     "@angular/compiler-cli": {
-      "version": "12.2.16",
-      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-12.2.16.tgz",
-      "integrity": "sha512-tlalh8SJvdCWbUPRUR5GamaP+wSc/GuCsoUZpSbcczGKgSlbaEVXUYtVXm8/wuT6Slk2sSEbRs7tXGF2i7qxVw==",
+      "version": "13.3.11",
+      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.3.11.tgz",
+      "integrity": "sha512-cl+3Wzxt8NRi2WY+RdsxuQ3yQRUp8pSlfSlJJnfaKE1BEqap6uem2DovuhnIbmrLhxZ5xt7o+I1szyO6sn6+ag==",
       "dev": true,
       "requires": {
-        "@babel/core": "^7.8.6",
-        "@babel/types": "^7.8.6",
-        "canonical-path": "1.0.0",
+        "@babel/core": "^7.17.2",
         "chokidar": "^3.0.0",
         "convert-source-map": "^1.5.1",
         "dependency-graph": "^0.11.0",
-        "magic-string": "^0.25.0",
-        "minimist": "^1.2.0",
+        "magic-string": "^0.26.0",
         "reflect-metadata": "^0.1.2",
         "semver": "^7.0.0",
-        "source-map": "^0.6.1",
         "sourcemap-codec": "^1.4.8",
-        "tslib": "^2.2.0",
-        "yargs": "^17.0.0"
+        "tslib": "^2.3.0",
+        "yargs": "^17.2.1"
       },
       "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+          "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+          "dev": true,
+          "requires": {
+            "@babel/highlight": "^7.18.6"
+          }
+        },
+        "@babel/core": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz",
+          "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==",
+          "dev": true,
+          "requires": {
+            "@ampproject/remapping": "^2.1.0",
+            "@babel/code-frame": "^7.18.6",
+            "@babel/generator": "^7.18.6",
+            "@babel/helper-compilation-targets": "^7.18.6",
+            "@babel/helper-module-transforms": "^7.18.6",
+            "@babel/helpers": "^7.18.6",
+            "@babel/parser": "^7.18.6",
+            "@babel/template": "^7.18.6",
+            "@babel/traverse": "^7.18.6",
+            "@babel/types": "^7.18.6",
+            "convert-source-map": "^1.7.0",
+            "debug": "^4.1.0",
+            "gensync": "^1.0.0-beta.2",
+            "json5": "^2.2.1",
+            "semver": "^6.3.0"
+          },
+          "dependencies": {
+            "semver": {
+              "version": "6.3.0",
+              "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+              "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+              "dev": true
+            }
+          }
+        },
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
+          "dev": true
+        },
+        "@babel/highlight": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+          "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "chalk": "^2.0.0",
+            "js-tokens": "^4.0.0"
+          }
+        },
         "ansi-regex": {
           "version": "5.0.1",
           "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
@@ -941,6 +991,15 @@
             "yallist": "^4.0.0"
           }
         },
+        "magic-string": {
+          "version": "0.26.2",
+          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz",
+          "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==",
+          "dev": true,
+          "requires": {
+            "sourcemap-codec": "^1.4.8"
+          }
+        },
         "semver": {
           "version": "7.3.7",
           "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
@@ -950,12 +1009,6 @@
             "lru-cache": "^6.0.0"
           }
         },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        },
         "string-width": {
           "version": "4.2.3",
           "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
@@ -1017,11 +1070,11 @@
       }
     },
     "@angular/core": {
-      "version": "12.2.16",
-      "resolved": "https://registry.npmjs.org/@angular/core/-/core-12.2.16.tgz",
-      "integrity": "sha512-jsmvaRdAfng99z2a9mAmkfcsCE1wm+tBYVDxnc5JquSXznwtncjzcoc2X0J0dzrkCDvzFfpTsZ9vehylytBc+A==",
+      "version": "13.3.11",
+      "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.3.11.tgz",
+      "integrity": "sha512-9BmE2CxyV0g+AkBeuc8IwjSOiJ8Y+kptXnqD/J8EAFT3B0/fLGVnjFdZC6Sev9L0SNZb6qdzebpfIOLqbUjReQ==",
       "requires": {
-        "tslib": "^2.2.0"
+        "tslib": "^2.3.0"
       }
     },
     "@angular/fire": {
@@ -1040,49 +1093,81 @@
       }
     },
     "@angular/forms": {
-      "version": "12.2.16",
-      "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-12.2.16.tgz",
-      "integrity": "sha512-sb+gpNun5aN7CZfHXS6X7vJcd/0A1P/gRBZpYtQTzBYnqEFCOFIvR62eb05aHQ4JhgKaSPpIXrbz/bAwY/njZw==",
+      "version": "13.3.11",
+      "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.3.11.tgz",
+      "integrity": "sha512-iMgTNB+Qc3TsfAZSk1FnUE6MVoddPzxhG9AKCfSlvpjFh8VmXkIjxPL3dun7J8OjayT3X+B8f7LZ9AkKNXtBKw==",
       "requires": {
-        "tslib": "^2.2.0"
+        "tslib": "^2.3.0"
       }
     },
     "@angular/language-service": {
-      "version": "12.2.16",
-      "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-12.2.16.tgz",
-      "integrity": "sha512-eDOd46Lu+4Nc/UA9q4G1xUTeIT2JXDdpedSRCk1fM+trYUZm7Xy2FZasP3pUSdtz04wt0kV9Mi5i3oCxfqU2Wg==",
+      "version": "13.3.11",
+      "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-13.3.11.tgz",
+      "integrity": "sha512-EDw8L0RKrRYUYWB2P0xS1WRazYvv5gOguX+IwPZlCpR95QLQPTTpmNaqvnYjmFlvQjGHJYc8wqtJJIIMiL6FSA==",
       "dev": true
     },
     "@angular/localize": {
-      "version": "12.2.16",
-      "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-12.2.16.tgz",
-      "integrity": "sha512-peWauKtqy7XG5OiG9L4uLg/yIMw0b/ipKOiovzpuj+DCghmeuYzle5kjCLvWydFeQqBoIdf2kcJYeskrYCAHfQ==",
+      "version": "13.3.11",
+      "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-13.3.11.tgz",
+      "integrity": "sha512-plMAkj07mcYYsidv7R4NFRYdxQEJJMK7IGp7BeaEwtrBbplqQORIMy2HOUDet/gWg/D1b/KFTjTAhlmNdczYtg==",
       "requires": {
-        "@babel/core": "7.8.3",
-        "glob": "7.1.7",
-        "yargs": "^17.0.0"
+        "@babel/core": "7.17.2",
+        "glob": "7.2.0",
+        "yargs": "^17.2.1"
       },
       "dependencies": {
+        "@ampproject/remapping": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
+          "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
+          "requires": {
+            "@jridgewell/gen-mapping": "^0.1.0",
+            "@jridgewell/trace-mapping": "^0.3.9"
+          }
+        },
+        "@babel/code-frame": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
+          "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+          "requires": {
+            "@babel/highlight": "^7.18.6"
+          }
+        },
         "@babel/core": {
-          "version": "7.8.3",
-          "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.3.tgz",
-          "integrity": "sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA==",
-          "requires": {
-            "@babel/code-frame": "^7.8.3",
-            "@babel/generator": "^7.8.3",
-            "@babel/helpers": "^7.8.3",
-            "@babel/parser": "^7.8.3",
-            "@babel/template": "^7.8.3",
-            "@babel/traverse": "^7.8.3",
-            "@babel/types": "^7.8.3",
+          "version": "7.17.2",
+          "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.2.tgz",
+          "integrity": "sha512-R3VH5G42VSDolRHyUO4V2cfag8WHcZyxdq5Z/m8Xyb92lW/Erm/6kM+XtRFGf3Mulre3mveni2NHfEUws8wSvw==",
+          "requires": {
+            "@ampproject/remapping": "^2.0.0",
+            "@babel/code-frame": "^7.16.7",
+            "@babel/generator": "^7.17.0",
+            "@babel/helper-compilation-targets": "^7.16.7",
+            "@babel/helper-module-transforms": "^7.16.7",
+            "@babel/helpers": "^7.17.2",
+            "@babel/parser": "^7.17.0",
+            "@babel/template": "^7.16.7",
+            "@babel/traverse": "^7.17.0",
+            "@babel/types": "^7.17.0",
             "convert-source-map": "^1.7.0",
             "debug": "^4.1.0",
-            "gensync": "^1.0.0-beta.1",
-            "json5": "^2.1.0",
-            "lodash": "^4.17.13",
-            "resolve": "^1.3.2",
-            "semver": "^5.4.1",
-            "source-map": "^0.5.0"
+            "gensync": "^1.0.0-beta.2",
+            "json5": "^2.1.2",
+            "semver": "^6.3.0"
+          }
+        },
+        "@babel/helper-validator-identifier": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g=="
+        },
+        "@babel/highlight": {
+          "version": "7.18.6",
+          "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
+          "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+          "requires": {
+            "@babel/helper-validator-identifier": "^7.18.6",
+            "chalk": "^2.0.0",
+            "js-tokens": "^4.0.0"
           }
         },
         "ansi-regex": {
@@ -1122,9 +1207,9 @@
           "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
         },
         "glob": {
-          "version": "7.1.7",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
-          "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
+          "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
           "requires": {
             "fs.realpath": "^1.0.0",
             "inflight": "^1.0.4",
@@ -1139,16 +1224,6 @@
           "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
           "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
         },
-        "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
-        },
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="
-        },
         "string-width": {
           "version": "4.2.3",
           "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
@@ -1212,27 +1287,27 @@
       }
     },
     "@angular/platform-browser": {
-      "version": "12.2.16",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-12.2.16.tgz",
-      "integrity": "sha512-T855ppLeQO6hRHi7lGf5fwPoUVt+c0h2rgkV5jHElc3ylaGnhecmZc6fnWLX4pw82TMJUgUV88CY8JCFabJWwg==",
+      "version": "13.3.11",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.3.11.tgz",
+      "integrity": "sha512-PG3chCErARb6wNzkOed2NsZmgvTmbumRx/6sMXqGkDKXYQm0JULnl4X42Rn+JCgJ9DLJi5/jrd1dbcBCrKk9Vg==",
       "requires": {
-        "tslib": "^2.2.0"
+        "tslib": "^2.3.0"
       }
     },
     "@angular/platform-browser-dynamic": {
-      "version": "12.2.16",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.2.16.tgz",
-      "integrity": "sha512-XGxoACAMW/bc3atiVRpaiYwU4LkobYwVzwlxTT/BxOfsdt8ILb5wU8Fx1TMKNECOQHSGdK0qqhch4pTBZ3cb2g==",
+      "version": "13.3.11",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.3.11.tgz",
+      "integrity": "sha512-xM0VRC1Nw//SHO3gkghUHyjCaaQbk1UYMq4vIu3iKVq9KLqOSZgccv0NcOKHzXXN3S5RgX2auuyOUOCD6ny1Pg==",
       "requires": {
-        "tslib": "^2.2.0"
+        "tslib": "^2.3.0"
       }
     },
     "@angular/router": {
-      "version": "12.2.16",
-      "resolved": "https://registry.npmjs.org/@angular/router/-/router-12.2.16.tgz",
-      "integrity": "sha512-LuFXSMIvX/VrB4jbYhigG2Y2pGQ9ULsSBUwDWwQCf4kr0eVI37LBJ2Vr74GBEznjgQ0UmWE89E+XYI80UhERTw==",
+      "version": "13.3.11",
+      "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.3.11.tgz",
+      "integrity": "sha512-bJTcxDYKEyoqtsi1kJcDJWLmEN+dXpwhU07SsqUwfyN4V5fYF1ApDhpJ4c17hNdjEqe106srT9tiHXhmWayhmQ==",
       "requires": {
-        "tslib": "^2.2.0"
+        "tslib": "^2.3.0"
       }
     },
     "@apidevtools/json-schema-ref-parser": {
@@ -1298,6 +1373,7 @@
       "version": "7.12.11",
       "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
       "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
+      "dev": true,
       "requires": {
         "@babel/highlight": "^7.10.4"
       }
@@ -1305,24 +1381,23 @@
     "@babel/compat-data": {
       "version": "7.18.8",
       "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz",
-      "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==",
-      "dev": true
+      "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ=="
     },
     "@babel/core": {
-      "version": "7.14.8",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.8.tgz",
-      "integrity": "sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q==",
-      "dev": true,
-      "requires": {
-        "@babel/code-frame": "^7.14.5",
-        "@babel/generator": "^7.14.8",
-        "@babel/helper-compilation-targets": "^7.14.5",
-        "@babel/helper-module-transforms": "^7.14.8",
-        "@babel/helpers": "^7.14.8",
-        "@babel/parser": "^7.14.8",
-        "@babel/template": "^7.14.5",
-        "@babel/traverse": "^7.14.8",
-        "@babel/types": "^7.14.8",
+      "version": "7.16.12",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz",
+      "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.16.7",
+        "@babel/generator": "^7.16.8",
+        "@babel/helper-compilation-targets": "^7.16.7",
+        "@babel/helper-module-transforms": "^7.16.7",
+        "@babel/helpers": "^7.16.7",
+        "@babel/parser": "^7.16.12",
+        "@babel/template": "^7.16.7",
+        "@babel/traverse": "^7.16.10",
+        "@babel/types": "^7.16.8",
         "convert-source-map": "^1.7.0",
         "debug": "^4.1.0",
         "gensync": "^1.0.0-beta.2",
@@ -1373,15 +1448,27 @@
         "@babel/types": "^7.18.7",
         "@jridgewell/gen-mapping": "^0.3.2",
         "jsesc": "^2.5.1"
+      },
+      "dependencies": {
+        "@jridgewell/gen-mapping": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
+          "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+          "requires": {
+            "@jridgewell/set-array": "^1.0.1",
+            "@jridgewell/sourcemap-codec": "^1.4.10",
+            "@jridgewell/trace-mapping": "^0.3.9"
+          }
+        }
       }
     },
     "@babel/helper-annotate-as-pure": {
-      "version": "7.14.5",
-      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz",
-      "integrity": "sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==",
+      "version": "7.16.7",
+      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz",
+      "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==",
       "dev": true,
       "requires": {
-        "@babel/types": "^7.14.5"
+        "@babel/types": "^7.16.7"
       }
     },
     "@babel/helper-builder-binary-assignment-operator-visitor": {
@@ -1398,7 +1485,6 @@
       "version": "7.18.6",
       "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz",
       "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==",
-      "dev": true,
       "requires": {
         "@babel/compat-data": "^7.18.6",
         "@babel/helper-validator-option": "^7.18.6",
@@ -1454,9 +1540,9 @@
       }
     },
     "@babel/helper-define-polyfill-provider": {
-      "version": "0.2.4",
-      "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.4.tgz",
-      "integrity": "sha512-OrpPZ97s+aPi6h2n1OXzdhVis1SGSsMU2aMHgLcOKfsp4/v1NWpx3CWT3lBj5eeBq9cDkPkh+YCfdF7O12uNDQ==",
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz",
+      "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==",
       "dev": true,
       "requires": {
         "@babel/helper-compilation-targets": "^7.13.0",
@@ -1513,7 +1599,6 @@
       "version": "7.18.6",
       "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
       "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
-      "dev": true,
       "requires": {
         "@babel/types": "^7.18.6"
       }
@@ -1522,7 +1607,6 @@
       "version": "7.18.8",
       "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.8.tgz",
       "integrity": "sha512-che3jvZwIcZxrwh63VfnFTUzcAM9v/lznYkkRxIBGMPt1SudOKHAEec0SIRCfiuIzTcF7VGj/CaTT6gY4eWxvA==",
-      "dev": true,
       "requires": {
         "@babel/helper-environment-visitor": "^7.18.6",
         "@babel/helper-module-imports": "^7.18.6",
@@ -1537,8 +1621,7 @@
         "@babel/helper-validator-identifier": {
           "version": "7.18.6",
           "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
-          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
-          "dev": true
+          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g=="
         }
       }
     },
@@ -1597,7 +1680,6 @@
       "version": "7.18.6",
       "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz",
       "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==",
-      "dev": true,
       "requires": {
         "@babel/types": "^7.18.6"
       }
@@ -1622,13 +1704,13 @@
     "@babel/helper-validator-identifier": {
       "version": "7.12.11",
       "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz",
-      "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw=="
+      "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==",
+      "dev": true
     },
     "@babel/helper-validator-option": {
       "version": "7.18.6",
       "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
-      "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
-      "dev": true
+      "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw=="
     },
     "@babel/helper-wrap-function": {
       "version": "7.18.6",
@@ -1656,6 +1738,7 @@
       "version": "7.10.4",
       "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
       "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
+      "dev": true,
       "requires": {
         "@babel/helper-validator-identifier": "^7.10.4",
         "chalk": "^2.0.0",
@@ -1667,6 +1750,15 @@
       "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.8.tgz",
       "integrity": "sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA=="
     },
+    "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz",
+      "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.18.6"
+      }
+    },
     "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
       "version": "7.18.6",
       "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz",
@@ -1679,13 +1771,13 @@
       }
     },
     "@babel/plugin-proposal-async-generator-functions": {
-      "version": "7.14.7",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.7.tgz",
-      "integrity": "sha512-RK8Wj7lXLY3bqei69/cc25gwS5puEc3dknoFPFbqfy3XxYQBQFvu4ioWpafMBAB+L9NyptQK4nMOa5Xz16og8Q==",
+      "version": "7.16.8",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz",
+      "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "@babel/helper-remap-async-to-generator": "^7.14.5",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-remap-async-to-generator": "^7.16.8",
         "@babel/plugin-syntax-async-generators": "^7.8.4"
       }
     },
@@ -1983,14 +2075,14 @@
       }
     },
     "@babel/plugin-transform-async-to-generator": {
-      "version": "7.14.5",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz",
-      "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==",
+      "version": "7.16.8",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz",
+      "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-imports": "^7.14.5",
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "@babel/helper-remap-async-to-generator": "^7.14.5"
+        "@babel/helper-module-imports": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-remap-async-to-generator": "^7.16.8"
       }
     },
     "@babel/plugin-transform-block-scoped-functions": {
@@ -2244,16 +2336,16 @@
       }
     },
     "@babel/plugin-transform-runtime": {
-      "version": "7.14.5",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.14.5.tgz",
-      "integrity": "sha512-fPMBhh1AV8ZyneiCIA+wYYUH1arzlXR1UMcApjvchDhfKxhy2r2lReJv8uHEyihi4IFIGlr1Pdx7S5fkESDQsg==",
+      "version": "7.16.10",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.10.tgz",
+      "integrity": "sha512-9nwTiqETv2G7xI4RvXHNfpGdr8pAA+Q/YtN3yLK7OoK7n9OibVm/xymJ838a9A6E/IciOLPj82lZk0fW6O4O7w==",
       "dev": true,
       "requires": {
-        "@babel/helper-module-imports": "^7.14.5",
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "babel-plugin-polyfill-corejs2": "^0.2.2",
-        "babel-plugin-polyfill-corejs3": "^0.2.2",
-        "babel-plugin-polyfill-regenerator": "^0.2.2",
+        "@babel/helper-module-imports": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "babel-plugin-polyfill-corejs2": "^0.3.0",
+        "babel-plugin-polyfill-corejs3": "^0.5.0",
+        "babel-plugin-polyfill-regenerator": "^0.3.0",
         "semver": "^6.3.0"
       }
     },
@@ -2323,31 +2415,32 @@
       }
     },
     "@babel/preset-env": {
-      "version": "7.14.8",
-      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.8.tgz",
-      "integrity": "sha512-a9aOppDU93oArQ51H+B8M1vH+tayZbuBqzjOhntGetZVa+4tTu5jp+XTwqHGG2lxslqomPYVSjIxQkFwXzgnxg==",
-      "dev": true,
-      "requires": {
-        "@babel/compat-data": "^7.14.7",
-        "@babel/helper-compilation-targets": "^7.14.5",
-        "@babel/helper-plugin-utils": "^7.14.5",
-        "@babel/helper-validator-option": "^7.14.5",
-        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5",
-        "@babel/plugin-proposal-async-generator-functions": "^7.14.7",
-        "@babel/plugin-proposal-class-properties": "^7.14.5",
-        "@babel/plugin-proposal-class-static-block": "^7.14.5",
-        "@babel/plugin-proposal-dynamic-import": "^7.14.5",
-        "@babel/plugin-proposal-export-namespace-from": "^7.14.5",
-        "@babel/plugin-proposal-json-strings": "^7.14.5",
-        "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5",
-        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5",
-        "@babel/plugin-proposal-numeric-separator": "^7.14.5",
-        "@babel/plugin-proposal-object-rest-spread": "^7.14.7",
-        "@babel/plugin-proposal-optional-catch-binding": "^7.14.5",
-        "@babel/plugin-proposal-optional-chaining": "^7.14.5",
-        "@babel/plugin-proposal-private-methods": "^7.14.5",
-        "@babel/plugin-proposal-private-property-in-object": "^7.14.5",
-        "@babel/plugin-proposal-unicode-property-regex": "^7.14.5",
+      "version": "7.16.11",
+      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz",
+      "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==",
+      "dev": true,
+      "requires": {
+        "@babel/compat-data": "^7.16.8",
+        "@babel/helper-compilation-targets": "^7.16.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "@babel/helper-validator-option": "^7.16.7",
+        "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7",
+        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7",
+        "@babel/plugin-proposal-async-generator-functions": "^7.16.8",
+        "@babel/plugin-proposal-class-properties": "^7.16.7",
+        "@babel/plugin-proposal-class-static-block": "^7.16.7",
+        "@babel/plugin-proposal-dynamic-import": "^7.16.7",
+        "@babel/plugin-proposal-export-namespace-from": "^7.16.7",
+        "@babel/plugin-proposal-json-strings": "^7.16.7",
+        "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7",
+        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7",
+        "@babel/plugin-proposal-numeric-separator": "^7.16.7",
+        "@babel/plugin-proposal-object-rest-spread": "^7.16.7",
+        "@babel/plugin-proposal-optional-catch-binding": "^7.16.7",
+        "@babel/plugin-proposal-optional-chaining": "^7.16.7",
+        "@babel/plugin-proposal-private-methods": "^7.16.11",
+        "@babel/plugin-proposal-private-property-in-object": "^7.16.7",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.16.7",
         "@babel/plugin-syntax-async-generators": "^7.8.4",
         "@babel/plugin-syntax-class-properties": "^7.12.13",
         "@babel/plugin-syntax-class-static-block": "^7.14.5",
@@ -2362,44 +2455,44 @@
         "@babel/plugin-syntax-optional-chaining": "^7.8.3",
         "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
         "@babel/plugin-syntax-top-level-await": "^7.14.5",
-        "@babel/plugin-transform-arrow-functions": "^7.14.5",
-        "@babel/plugin-transform-async-to-generator": "^7.14.5",
-        "@babel/plugin-transform-block-scoped-functions": "^7.14.5",
-        "@babel/plugin-transform-block-scoping": "^7.14.5",
-        "@babel/plugin-transform-classes": "^7.14.5",
-        "@babel/plugin-transform-computed-properties": "^7.14.5",
-        "@babel/plugin-transform-destructuring": "^7.14.7",
-        "@babel/plugin-transform-dotall-regex": "^7.14.5",
-        "@babel/plugin-transform-duplicate-keys": "^7.14.5",
-        "@babel/plugin-transform-exponentiation-operator": "^7.14.5",
-        "@babel/plugin-transform-for-of": "^7.14.5",
-        "@babel/plugin-transform-function-name": "^7.14.5",
-        "@babel/plugin-transform-literals": "^7.14.5",
-        "@babel/plugin-transform-member-expression-literals": "^7.14.5",
-        "@babel/plugin-transform-modules-amd": "^7.14.5",
-        "@babel/plugin-transform-modules-commonjs": "^7.14.5",
-        "@babel/plugin-transform-modules-systemjs": "^7.14.5",
-        "@babel/plugin-transform-modules-umd": "^7.14.5",
-        "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.7",
-        "@babel/plugin-transform-new-target": "^7.14.5",
-        "@babel/plugin-transform-object-super": "^7.14.5",
-        "@babel/plugin-transform-parameters": "^7.14.5",
-        "@babel/plugin-transform-property-literals": "^7.14.5",
-        "@babel/plugin-transform-regenerator": "^7.14.5",
-        "@babel/plugin-transform-reserved-words": "^7.14.5",
-        "@babel/plugin-transform-shorthand-properties": "^7.14.5",
-        "@babel/plugin-transform-spread": "^7.14.6",
-        "@babel/plugin-transform-sticky-regex": "^7.14.5",
-        "@babel/plugin-transform-template-literals": "^7.14.5",
-        "@babel/plugin-transform-typeof-symbol": "^7.14.5",
-        "@babel/plugin-transform-unicode-escapes": "^7.14.5",
-        "@babel/plugin-transform-unicode-regex": "^7.14.5",
-        "@babel/preset-modules": "^0.1.4",
-        "@babel/types": "^7.14.8",
-        "babel-plugin-polyfill-corejs2": "^0.2.2",
-        "babel-plugin-polyfill-corejs3": "^0.2.2",
-        "babel-plugin-polyfill-regenerator": "^0.2.2",
-        "core-js-compat": "^3.15.0",
+        "@babel/plugin-transform-arrow-functions": "^7.16.7",
+        "@babel/plugin-transform-async-to-generator": "^7.16.8",
+        "@babel/plugin-transform-block-scoped-functions": "^7.16.7",
+        "@babel/plugin-transform-block-scoping": "^7.16.7",
+        "@babel/plugin-transform-classes": "^7.16.7",
+        "@babel/plugin-transform-computed-properties": "^7.16.7",
+        "@babel/plugin-transform-destructuring": "^7.16.7",
+        "@babel/plugin-transform-dotall-regex": "^7.16.7",
+        "@babel/plugin-transform-duplicate-keys": "^7.16.7",
+        "@babel/plugin-transform-exponentiation-operator": "^7.16.7",
+        "@babel/plugin-transform-for-of": "^7.16.7",
+        "@babel/plugin-transform-function-name": "^7.16.7",
+        "@babel/plugin-transform-literals": "^7.16.7",
+        "@babel/plugin-transform-member-expression-literals": "^7.16.7",
+        "@babel/plugin-transform-modules-amd": "^7.16.7",
+        "@babel/plugin-transform-modules-commonjs": "^7.16.8",
+        "@babel/plugin-transform-modules-systemjs": "^7.16.7",
+        "@babel/plugin-transform-modules-umd": "^7.16.7",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8",
+        "@babel/plugin-transform-new-target": "^7.16.7",
+        "@babel/plugin-transform-object-super": "^7.16.7",
+        "@babel/plugin-transform-parameters": "^7.16.7",
+        "@babel/plugin-transform-property-literals": "^7.16.7",
+        "@babel/plugin-transform-regenerator": "^7.16.7",
+        "@babel/plugin-transform-reserved-words": "^7.16.7",
+        "@babel/plugin-transform-shorthand-properties": "^7.16.7",
+        "@babel/plugin-transform-spread": "^7.16.7",
+        "@babel/plugin-transform-sticky-regex": "^7.16.7",
+        "@babel/plugin-transform-template-literals": "^7.16.7",
+        "@babel/plugin-transform-typeof-symbol": "^7.16.7",
+        "@babel/plugin-transform-unicode-escapes": "^7.16.7",
+        "@babel/plugin-transform-unicode-regex": "^7.16.7",
+        "@babel/preset-modules": "^0.1.5",
+        "@babel/types": "^7.16.8",
+        "babel-plugin-polyfill-corejs2": "^0.3.0",
+        "babel-plugin-polyfill-corejs3": "^0.5.0",
+        "babel-plugin-polyfill-regenerator": "^0.3.0",
+        "core-js-compat": "^3.20.2",
         "semver": "^6.3.0"
       }
     },
@@ -2417,9 +2510,9 @@
       }
     },
     "@babel/runtime": {
-      "version": "7.14.8",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.8.tgz",
-      "integrity": "sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg==",
+      "version": "7.16.7",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz",
+      "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==",
       "dev": true,
       "requires": {
         "regenerator-runtime": "^0.13.4"
@@ -2524,10 +2617,19 @@
       "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
       "dev": true
     },
-    "@csstools/convert-colors": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz",
-      "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==",
+    "@csstools/postcss-progressive-custom-properties": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz",
+      "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==",
+      "dev": true,
+      "requires": {
+        "postcss-value-parser": "^4.2.0"
+      }
+    },
+    "@csstools/selector-specificity": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz",
+      "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==",
       "dev": true
     },
     "@dabh/diagnostics": {
@@ -2542,9 +2644,9 @@
       }
     },
     "@discoveryjs/json-ext": {
-      "version": "0.5.3",
-      "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz",
-      "integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==",
+      "version": "0.5.6",
+      "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz",
+      "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==",
       "dev": true
     },
     "@firebase/analytics": {
@@ -2885,6 +2987,12 @@
       "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.4.1.tgz",
       "integrity": "sha512-0yPjzuzGMkW1GkrC8yWsiN7vt1OzkMIi9HgxRmKREZl2wnNPOKo/yScTjXf/O57HM8dltqxPF6jlNLFVtc2qdw=="
     },
+    "@gar/promisify": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
+      "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==",
+      "dev": true
+    },
     "@google-cloud/paginator": {
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-2.0.3.tgz",
@@ -3116,6 +3224,19 @@
         "protobufjs": "^6.8.6"
       }
     },
+    "@istanbuljs/load-nyc-config": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
+      "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
+      "dev": true,
+      "requires": {
+        "camelcase": "^5.3.1",
+        "find-up": "^4.1.0",
+        "get-package-type": "^0.1.0",
+        "js-yaml": "^3.13.1",
+        "resolve-from": "^5.0.0"
+      }
+    },
     "@istanbuljs/schema": {
       "version": "0.1.3",
       "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
@@ -3123,13 +3244,12 @@
       "dev": true
     },
     "@jridgewell/gen-mapping": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
-      "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
+      "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
       "requires": {
-        "@jridgewell/set-array": "^1.0.1",
-        "@jridgewell/sourcemap-codec": "^1.4.10",
-        "@jridgewell/trace-mapping": "^0.3.9"
+        "@jridgewell/set-array": "^1.0.0",
+        "@jridgewell/sourcemap-codec": "^1.4.10"
       }
     },
     "@jridgewell/resolve-uri": {
@@ -3156,19 +3276,6 @@
         "@jridgewell/sourcemap-codec": "^1.4.10"
       }
     },
-    "@jsdevtools/coverage-istanbul-loader": {
-      "version": "3.0.5",
-      "resolved": "https://registry.npmjs.org/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.5.tgz",
-      "integrity": "sha512-EUCPEkaRPvmHjWAAZkWMT7JDzpw7FKB00WTISaiXsbNOd5hCHg77XLA8sLYLFDo1zepYLo2w7GstN8YBqRXZfA==",
-      "dev": true,
-      "requires": {
-        "convert-source-map": "^1.7.0",
-        "istanbul-lib-instrument": "^4.0.3",
-        "loader-utils": "^2.0.0",
-        "merge-source-map": "^1.1.0",
-        "schema-utils": "^2.7.0"
-      }
-    },
     "@jsdevtools/ono": {
       "version": "7.1.3",
       "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz",
@@ -3176,9 +3283,9 @@
       "dev": true
     },
     "@ngtools/webpack": {
-      "version": "12.2.17",
-      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.2.17.tgz",
-      "integrity": "sha512-uaS+2YZgPDW3VmUuwh4/yfIFV1KRVGWefc6xLWIqKRKs6mlRYs65m3ib9dX7CTS4kQMCbhxkxMbpBO2yXlzfvA==",
+      "version": "13.3.8",
+      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.3.8.tgz",
+      "integrity": "sha512-meuXHb1zQ5lz7Uj7kGYTgjd9Tknsi/0jJxs+12nz06h0tifIyIoGU01YA3mUj4/bntIjfWif35KGYP+23bbAVw==",
       "dev": true
     },
     "@nodelib/fs.scandir": {
@@ -3207,6 +3314,36 @@
         "fastq": "^1.6.0"
       }
     },
+    "@npmcli/fs": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz",
+      "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==",
+      "dev": true,
+      "requires": {
+        "@gar/promisify": "^1.0.1",
+        "semver": "^7.3.5"
+      },
+      "dependencies": {
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
+        "semver": {
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        }
+      }
+    },
     "@npmcli/git": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz",
@@ -3571,13 +3708,13 @@
       "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="
     },
     "@schematics/angular": {
-      "version": "12.2.17",
-      "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.17.tgz",
-      "integrity": "sha512-HM/4KkQu944KL5ebhIyy1Ot5OV6prHNW7kmGeMVeQefLSbbfMQCHLa1psB9UU9BoahwGhUBvleLylNSitOBCgg==",
+      "version": "13.3.8",
+      "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.8.tgz",
+      "integrity": "sha512-VKRTTNYX5OsaJ6sWlCIuU71qihV3ysNNJ49wqLedOlWm1v0GMwoyGMCTJk9OZab1rpo/tYfLTcUlYqP3l6GVDQ==",
       "dev": true,
       "requires": {
-        "@angular-devkit/core": "12.2.17",
-        "@angular-devkit/schematics": "12.2.17",
+        "@angular-devkit/core": "13.3.8",
+        "@angular-devkit/schematics": "13.3.8",
         "jsonc-parser": "3.0.0"
       }
     },
@@ -3602,11 +3739,24 @@
       "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
       "dev": true
     },
-    "@trysound/sax": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
-      "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
-      "dev": true
+    "@types/body-parser": {
+      "version": "1.19.2",
+      "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
+      "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==",
+      "dev": true,
+      "requires": {
+        "@types/connect": "*",
+        "@types/node": "*"
+      }
+    },
+    "@types/bonjour": {
+      "version": "3.5.10",
+      "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz",
+      "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==",
+      "dev": true,
+      "requires": {
+        "@types/node": "*"
+      }
     },
     "@types/component-emitter": {
       "version": "1.2.11",
@@ -3614,6 +3764,25 @@
       "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==",
       "dev": true
     },
+    "@types/connect": {
+      "version": "3.4.35",
+      "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
+      "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
+      "dev": true,
+      "requires": {
+        "@types/node": "*"
+      }
+    },
+    "@types/connect-history-api-fallback": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz",
+      "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==",
+      "dev": true,
+      "requires": {
+        "@types/express-serve-static-core": "*",
+        "@types/node": "*"
+      }
+    },
     "@types/cookie": {
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
@@ -3656,28 +3825,50 @@
       }
     },
     "@types/estree": {
-      "version": "0.0.50",
-      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz",
-      "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==",
+      "version": "0.0.51",
+      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz",
+      "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==",
       "dev": true
     },
-    "@types/fs-extra": {
-      "version": "8.1.1",
-      "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.1.tgz",
-      "integrity": "sha512-TcUlBem321DFQzBNuz8p0CLLKp0VvF/XH9E4KHNmgwyp4E3AfgI5cjiIVZWlbfThBop2qxFIh4+LeY6hVWWZ2w==",
+    "@types/express": {
+      "version": "4.17.13",
+      "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz",
+      "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==",
       "dev": true,
       "requires": {
-        "@types/node": "*"
+        "@types/body-parser": "*",
+        "@types/express-serve-static-core": "^4.17.18",
+        "@types/qs": "*",
+        "@types/serve-static": "*"
       }
     },
-    "@types/glob": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
-      "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
+    "@types/express-serve-static-core": {
+      "version": "4.17.29",
+      "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz",
+      "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==",
       "dev": true,
       "requires": {
-        "@types/minimatch": "*",
-        "@types/node": "*"
+        "@types/node": "*",
+        "@types/qs": "*",
+        "@types/range-parser": "*"
+      }
+    },
+    "@types/fs-extra": {
+      "version": "8.1.1",
+      "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.1.tgz",
+      "integrity": "sha512-TcUlBem321DFQzBNuz8p0CLLKp0VvF/XH9E4KHNmgwyp4E3AfgI5cjiIVZWlbfThBop2qxFIh4+LeY6hVWWZ2w==",
+      "dev": true,
+      "requires": {
+        "@types/node": "*"
+      }
+    },
+    "@types/http-proxy": {
+      "version": "1.17.9",
+      "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz",
+      "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==",
+      "dev": true,
+      "requires": {
+        "@types/node": "*"
       }
     },
     "@types/jasmine": {
@@ -3706,10 +3897,10 @@
       "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz",
       "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w=="
     },
-    "@types/minimatch": {
-      "version": "3.0.5",
-      "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
-      "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
+    "@types/mime": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
+      "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==",
       "dev": true
     },
     "@types/node": {
@@ -3728,35 +3919,65 @@
       "resolved": "https://registry.npmjs.org/@types/pdfjs-dist/-/pdfjs-dist-2.1.7.tgz",
       "integrity": "sha512-nQIwcPUhkAIyn7x9NS0lR/qxYfd5unRtfGkMjvpgF4Sh28IXftRymaNmFKTTdejDNY25NDGSIyjwj/BRwAPexg=="
     },
+    "@types/qs": {
+      "version": "6.9.7",
+      "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
+      "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==",
+      "dev": true
+    },
+    "@types/range-parser": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz",
+      "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
+      "dev": true
+    },
+    "@types/retry": {
+      "version": "0.12.0",
+      "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz",
+      "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==",
+      "dev": true
+    },
     "@types/selenium-webdriver": {
       "version": "3.0.20",
       "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.20.tgz",
       "integrity": "sha512-6d8Q5fqS9DWOXEhMDiF6/2FjyHdmP/jSTAUyeQR7QwrFeNmYyzmvGxD5aLIHL445HjWgibs0eAig+KPnbaesXA==",
       "dev": true
     },
-    "@types/source-list-map": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz",
-      "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==",
-      "dev": true
+    "@types/serve-index": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz",
+      "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==",
+      "dev": true,
+      "requires": {
+        "@types/express": "*"
+      }
     },
-    "@types/webpack-sources": {
-      "version": "0.1.9",
-      "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.9.tgz",
-      "integrity": "sha512-bvzMnzqoK16PQIC8AYHNdW45eREJQMd6WG/msQWX5V2+vZmODCOPb4TJcbgRljTZZTwTM4wUMcsI8FftNA7new==",
+    "@types/serve-static": {
+      "version": "1.13.10",
+      "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz",
+      "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==",
       "dev": true,
       "requires": {
-        "@types/node": "*",
-        "@types/source-list-map": "*",
-        "source-map": "^0.6.1"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
+        "@types/mime": "^1",
+        "@types/node": "*"
+      }
+    },
+    "@types/sockjs": {
+      "version": "0.3.33",
+      "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz",
+      "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==",
+      "dev": true,
+      "requires": {
+        "@types/node": "*"
+      }
+    },
+    "@types/ws": {
+      "version": "8.5.3",
+      "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz",
+      "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==",
+      "dev": true,
+      "requires": {
+        "@types/node": "*"
       }
     },
     "@webassemblyjs/ast": {
@@ -3988,6 +4209,19 @@
       "requires": {
         "loader-utils": "^2.0.0",
         "regex-parser": "^2.2.11"
+      },
+      "dependencies": {
+        "loader-utils": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz",
+          "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^2.1.2"
+          }
+        }
       }
     },
     "adm-zip": {
@@ -4027,9 +4261,9 @@
       }
     },
     "ajv": {
-      "version": "8.6.2",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz",
-      "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==",
+      "version": "8.9.0",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz",
+      "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==",
       "dev": true,
       "requires": {
         "fast-deep-equal": "^3.1.1",
@@ -4046,16 +4280,10 @@
         }
       }
     },
-    "ajv-errors": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
-      "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
-      "dev": true
-    },
     "ajv-formats": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz",
-      "integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
+      "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
       "dev": true,
       "requires": {
         "ajv": "^8.0.0"
@@ -4280,24 +4508,6 @@
         "commander": "^2.11.0"
       }
     },
-    "arr-diff": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
-      "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
-      "dev": true
-    },
-    "arr-flatten": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
-      "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
-      "dev": true
-    },
-    "arr-union": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
-      "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
-      "dev": true
-    },
     "array-flatten": {
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
@@ -4319,12 +4529,6 @@
       "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
       "dev": true
     },
-    "array-unique": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
-      "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
-      "dev": true
-    },
     "arrify": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
@@ -4352,12 +4556,6 @@
       "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
       "dev": true
     },
-    "assign-symbols": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
-      "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
-      "dev": true
-    },
     "ast-types-flow": {
       "version": "0.0.7",
       "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
@@ -4379,12 +4577,6 @@
       "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
       "dev": true
     },
-    "async-limiter": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
-      "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
-      "dev": true
-    },
     "asynckit": {
       "version": "0.4.0",
       "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
@@ -4398,42 +4590,17 @@
       "dev": true
     },
     "autoprefixer": {
-      "version": "9.8.8",
-      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz",
-      "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==",
+      "version": "10.4.7",
+      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz",
+      "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==",
       "dev": true,
       "requires": {
-        "browserslist": "^4.12.0",
-        "caniuse-lite": "^1.0.30001109",
+        "browserslist": "^4.20.3",
+        "caniuse-lite": "^1.0.30001335",
+        "fraction.js": "^4.2.0",
         "normalize-range": "^0.1.2",
-        "num2fraction": "^1.2.2",
-        "picocolors": "^0.2.1",
-        "postcss": "^7.0.32",
-        "postcss-value-parser": "^4.1.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
+        "picocolors": "^1.0.0",
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "aws-sign2": {
@@ -4458,35 +4625,26 @@
       }
     },
     "babel-loader": {
-      "version": "8.2.2",
-      "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz",
-      "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==",
+      "version": "8.2.5",
+      "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz",
+      "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==",
       "dev": true,
       "requires": {
         "find-cache-dir": "^3.3.1",
-        "loader-utils": "^1.4.0",
+        "loader-utils": "^2.0.0",
         "make-dir": "^3.1.0",
         "schema-utils": "^2.6.5"
       },
       "dependencies": {
-        "json5": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
-          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
-          "dev": true,
-          "requires": {
-            "minimist": "^1.2.0"
-          }
-        },
         "loader-utils": {
-          "version": "1.4.0",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
-          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz",
+          "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==",
           "dev": true,
           "requires": {
             "big.js": "^5.2.2",
             "emojis-list": "^3.0.0",
-            "json5": "^1.0.1"
+            "json5": "^2.1.2"
           }
         },
         "make-dir": {
@@ -4509,34 +4667,47 @@
         "object.assign": "^4.1.0"
       }
     },
+    "babel-plugin-istanbul": {
+      "version": "6.1.1",
+      "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
+      "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@istanbuljs/load-nyc-config": "^1.0.0",
+        "@istanbuljs/schema": "^0.1.2",
+        "istanbul-lib-instrument": "^5.0.4",
+        "test-exclude": "^6.0.0"
+      }
+    },
     "babel-plugin-polyfill-corejs2": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.3.tgz",
-      "integrity": "sha512-NDZ0auNRzmAfE1oDDPW2JhzIMXUk+FFe2ICejmt5T4ocKgiQx3e0VCRx9NCAidcMtL2RUZaWtXnmjTCkx0tcbA==",
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz",
+      "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==",
       "dev": true,
       "requires": {
         "@babel/compat-data": "^7.13.11",
-        "@babel/helper-define-polyfill-provider": "^0.2.4",
+        "@babel/helper-define-polyfill-provider": "^0.3.1",
         "semver": "^6.1.1"
       }
     },
     "babel-plugin-polyfill-corejs3": {
-      "version": "0.2.5",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz",
-      "integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==",
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz",
+      "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==",
       "dev": true,
       "requires": {
-        "@babel/helper-define-polyfill-provider": "^0.2.2",
-        "core-js-compat": "^3.16.2"
+        "@babel/helper-define-polyfill-provider": "^0.3.1",
+        "core-js-compat": "^3.21.0"
       }
     },
     "babel-plugin-polyfill-regenerator": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.3.tgz",
-      "integrity": "sha512-JVE78oRZPKFIeUqFGrSORNzQnrDwZR16oiWeGM8ZyjBn2XAT5OjP+wXx5ESuo33nUsFUEJYjtklnsKbxW5L+7g==",
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz",
+      "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==",
       "dev": true,
       "requires": {
-        "@babel/helper-define-polyfill-provider": "^0.2.4"
+        "@babel/helper-define-polyfill-provider": "^0.3.1"
       }
     },
     "balanced-match": {
@@ -4544,61 +4715,6 @@
       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
       "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
     },
-    "base": {
-      "version": "0.11.2",
-      "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
-      "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
-      "dev": true,
-      "requires": {
-        "cache-base": "^1.0.1",
-        "class-utils": "^0.3.5",
-        "component-emitter": "^1.2.1",
-        "define-property": "^1.0.0",
-        "isobject": "^3.0.1",
-        "mixin-deep": "^1.2.0",
-        "pascalcase": "^0.1.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^1.0.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
-      }
-    },
     "base64-js": {
       "version": "1.5.1",
       "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
@@ -4673,16 +4789,6 @@
       "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
       "dev": true
     },
-    "bindings": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
-      "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "file-uri-to-path": "1.0.0"
-      }
-    },
     "bl": {
       "version": "4.1.0",
       "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
@@ -4940,7 +5046,6 @@
       "version": "4.21.1",
       "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz",
       "integrity": "sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==",
-      "dev": true,
       "requires": {
         "caniuse-lite": "^1.0.30001359",
         "electron-to-chromium": "^1.4.172",
@@ -5011,11 +5116,12 @@
       "dev": true
     },
     "cacache": {
-      "version": "15.2.0",
-      "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.2.0.tgz",
-      "integrity": "sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw==",
+      "version": "15.3.0",
+      "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz",
+      "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==",
       "dev": true,
       "requires": {
+        "@npmcli/fs": "^1.0.0",
         "@npmcli/move-file": "^1.0.1",
         "chownr": "^2.0.0",
         "fs-minipass": "^2.0.0",
@@ -5091,23 +5197,6 @@
         }
       }
     },
-    "cache-base": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
-      "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
-      "dev": true,
-      "requires": {
-        "collection-visit": "^1.0.0",
-        "component-emitter": "^1.2.1",
-        "get-value": "^2.0.6",
-        "has-value": "^1.0.0",
-        "isobject": "^3.0.1",
-        "set-value": "^2.0.0",
-        "to-object-path": "^0.3.0",
-        "union-value": "^1.0.0",
-        "unset-value": "^1.0.0"
-      }
-    },
     "cacheable-request": {
       "version": "6.1.0",
       "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
@@ -5180,29 +5269,10 @@
       "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
       "dev": true
     },
-    "caniuse-api": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
-      "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
-      "dev": true,
-      "requires": {
-        "browserslist": "^4.0.0",
-        "caniuse-lite": "^1.0.0",
-        "lodash.memoize": "^4.1.2",
-        "lodash.uniq": "^4.5.0"
-      }
-    },
     "caniuse-lite": {
       "version": "1.0.30001364",
       "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001364.tgz",
-      "integrity": "sha512-9O0xzV3wVyX0SlegIQ6knz+okhBB5pE0PC40MNdwcipjwpxoUEHL24uJ+gG42cgklPjfO5ZjZPme9FTSN3QT2Q==",
-      "dev": true
-    },
-    "canonical-path": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz",
-      "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==",
-      "dev": true
+      "integrity": "sha512-9O0xzV3wVyX0SlegIQ6knz+okhBB5pE0PC40MNdwcipjwpxoUEHL24uJ+gG42cgklPjfO5ZjZPme9FTSN3QT2Q=="
     },
     "cardinal": {
       "version": "2.1.1",
@@ -5305,29 +5375,6 @@
         "json-parse-helpfulerror": "^1.0.3"
       }
     },
-    "class-utils": {
-      "version": "0.3.6",
-      "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
-      "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
-      "dev": true,
-      "requires": {
-        "arr-union": "^3.1.0",
-        "define-property": "^0.2.5",
-        "isobject": "^3.0.0",
-        "static-extend": "^0.1.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        }
-      }
-    },
     "clean-stack": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
@@ -5551,16 +5598,6 @@
         }
       }
     },
-    "collection-visit": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
-      "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
-      "dev": true,
-      "requires": {
-        "map-visit": "^1.0.0",
-        "object-visit": "^1.0.0"
-      }
-    },
     "color-convert": {
       "version": "1.9.3",
       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@@ -5590,16 +5627,10 @@
       "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
       "dev": true
     },
-    "colord": {
-      "version": "2.9.2",
-      "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz",
-      "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==",
-      "dev": true
-    },
     "colorette": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
-      "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==",
+      "version": "2.0.19",
+      "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz",
+      "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==",
       "dev": true
     },
     "colors": {
@@ -5842,65 +5873,47 @@
         "is-what": "^3.14.1"
       }
     },
-    "copy-descriptor": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
-      "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
-      "dev": true
-    },
     "copy-webpack-plugin": {
-      "version": "9.0.1",
-      "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz",
-      "integrity": "sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw==",
+      "version": "10.2.1",
+      "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.1.tgz",
+      "integrity": "sha512-nr81NhCAIpAWXGCK5thrKmfCQ6GDY0L5RN0U+BnIn/7Us55+UCex5ANNsNKmIVtDRnk0Ecf+/kzp9SUVrrBMLg==",
       "dev": true,
       "requires": {
-        "fast-glob": "^3.2.5",
-        "glob-parent": "^6.0.0",
-        "globby": "^11.0.3",
+        "fast-glob": "^3.2.7",
+        "glob-parent": "^6.0.1",
+        "globby": "^12.0.2",
         "normalize-path": "^3.0.0",
-        "p-limit": "^3.1.0",
-        "schema-utils": "^3.0.0",
+        "schema-utils": "^4.0.0",
         "serialize-javascript": "^6.0.0"
       },
       "dependencies": {
-        "ajv": {
-          "version": "6.12.6",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
-          }
-        },
-        "p-limit": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
-          "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+        "ajv-keywords": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+          "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
           "dev": true,
           "requires": {
-            "yocto-queue": "^0.1.0"
+            "fast-deep-equal": "^3.1.3"
           }
         },
         "schema-utils": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
-          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
+          "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
           "dev": true,
           "requires": {
-            "@types/json-schema": "^7.0.8",
-            "ajv": "^6.12.5",
-            "ajv-keywords": "^3.5.2"
+            "@types/json-schema": "^7.0.9",
+            "ajv": "^8.8.0",
+            "ajv-formats": "^2.1.1",
+            "ajv-keywords": "^5.0.0"
           }
         }
       }
     },
     "core-js": {
-      "version": "3.16.0",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.16.0.tgz",
-      "integrity": "sha512-5+5VxRFmSf97nM8Jr2wzOwLqRo6zphH2aX+7KsAUONObyzakDNq2G/bgbhinxB4PoV9L3aXQYhiDKyIKWd2c8g==",
+      "version": "3.20.3",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.20.3.tgz",
+      "integrity": "sha512-vVl8j8ph6tRS3B8qir40H7yw7voy17xL0piAjlbBUsH7WIfzoedL/ZOr1OV9FyZQLWXsayOJyV4tnRyXR85/ag==",
       "dev": true
     },
     "core-js-compat": {
@@ -5995,13 +6008,13 @@
       }
     },
     "critters": {
-      "version": "0.0.12",
-      "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.12.tgz",
-      "integrity": "sha512-ujxKtKc/mWpjrOKeaACTaQ1aP0O31M0ZPWhfl85jZF1smPU4Ivb9va5Ox2poif4zVJQQo0LCFlzGtEZAsCAPcw==",
+      "version": "0.0.16",
+      "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz",
+      "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==",
       "dev": true,
       "requires": {
         "chalk": "^4.1.0",
-        "css-select": "^4.1.3",
+        "css-select": "^4.2.0",
         "parse5": "^6.0.1",
         "parse5-htmlparser2-tree-adapter": "^6.0.1",
         "postcss": "^8.3.7",
@@ -6048,17 +6061,6 @@
           "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
           "dev": true
         },
-        "postcss": {
-          "version": "8.4.14",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
-          "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
-          "dev": true,
-          "requires": {
-            "nanoid": "^3.3.4",
-            "picocolors": "^1.0.0",
-            "source-map-js": "^1.0.2"
-          }
-        },
         "supports-color": {
           "version": "7.2.0",
           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -6107,15 +6109,14 @@
       "dev": true
     },
     "css": {
-      "version": "2.2.4",
-      "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz",
-      "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz",
+      "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==",
       "dev": true,
       "requires": {
-        "inherits": "^2.0.3",
+        "inherits": "^2.0.4",
         "source-map": "^0.6.1",
-        "source-map-resolve": "^0.5.2",
-        "urix": "^0.1.0"
+        "source-map-resolve": "^0.6.0"
       },
       "dependencies": {
         "source-map": {
@@ -6127,109 +6128,37 @@
       }
     },
     "css-blank-pseudo": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz",
-      "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==",
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz",
+      "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==",
       "dev": true,
       "requires": {
-        "postcss": "^7.0.5"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
+        "postcss-selector-parser": "^6.0.9"
       }
     },
-    "css-declaration-sorter": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz",
-      "integrity": "sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og==",
-      "dev": true
-    },
     "css-has-pseudo": {
-      "version": "0.10.0",
-      "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz",
-      "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==",
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz",
+      "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==",
+      "dev": true,
+      "requires": {
+        "postcss-selector-parser": "^6.0.9"
+      }
+    },
+    "css-loader": {
+      "version": "6.5.1",
+      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.5.1.tgz",
+      "integrity": "sha512-gEy2w9AnJNnD9Kuo4XAP9VflW/ujKoS9c/syO+uWMlm5igc7LysKzPXaDoR2vroROkSwsTS2tGr1yGGEbZOYZQ==",
       "dev": true,
       "requires": {
-        "postcss": "^7.0.6",
-        "postcss-selector-parser": "^5.0.0-rc.4"
-      },
-      "dependencies": {
-        "cssesc": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
-          "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
-          "dev": true
-        },
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-selector-parser": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
-          "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
-          "dev": true,
-          "requires": {
-            "cssesc": "^2.0.0",
-            "indexes-of": "^1.0.1",
-            "uniq": "^1.0.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "css-loader": {
-      "version": "6.2.0",
-      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.2.0.tgz",
-      "integrity": "sha512-/rvHfYRjIpymZblf49w8jYcRo2y9gj6rV8UroHGmBxKrIyGLokpycyKzp9OkitvqT29ZSpzJ0Ic7SpnJX3sC8g==",
-      "dev": true,
-      "requires": {
-        "icss-utils": "^5.1.0",
-        "postcss": "^8.2.15",
-        "postcss-modules-extract-imports": "^3.0.0",
-        "postcss-modules-local-by-default": "^4.0.0",
-        "postcss-modules-scope": "^3.0.0",
-        "postcss-modules-values": "^4.0.0",
-        "postcss-value-parser": "^4.1.0",
-        "semver": "^7.3.5"
+        "icss-utils": "^5.1.0",
+        "postcss": "^8.2.15",
+        "postcss-modules-extract-imports": "^3.0.0",
+        "postcss-modules-local-by-default": "^4.0.0",
+        "postcss-modules-scope": "^3.0.0",
+        "postcss-modules-values": "^4.0.0",
+        "postcss-value-parser": "^4.1.0",
+        "semver": "^7.3.5"
       },
       "dependencies": {
         "lru-cache": {
@@ -6252,102 +6181,11 @@
         }
       }
     },
-    "css-minimizer-webpack-plugin": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.0.2.tgz",
-      "integrity": "sha512-B3I5e17RwvKPJwsxjjWcdgpU/zqylzK1bPVghcmpFHRL48DXiBgrtqz1BJsn68+t/zzaLp9kYAaEDvQ7GyanFQ==",
-      "dev": true,
-      "requires": {
-        "cssnano": "^5.0.6",
-        "jest-worker": "^27.0.2",
-        "p-limit": "^3.0.2",
-        "postcss": "^8.3.5",
-        "schema-utils": "^3.0.0",
-        "serialize-javascript": "^6.0.0",
-        "source-map": "^0.6.1"
-      },
-      "dependencies": {
-        "ajv": {
-          "version": "6.12.6",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
-          }
-        },
-        "p-limit": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
-          "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
-          "dev": true,
-          "requires": {
-            "yocto-queue": "^0.1.0"
-          }
-        },
-        "schema-utils": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
-          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
-          "dev": true,
-          "requires": {
-            "@types/json-schema": "^7.0.8",
-            "ajv": "^6.12.5",
-            "ajv-keywords": "^3.5.2"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "css-parse": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz",
-      "integrity": "sha512-UNIFik2RgSbiTwIW1IsFwXWn6vs+bYdq83LKTSOsx7NJR7WII9dxewkHLltfTLVppoUApHV0118a4RZRI9FLwA==",
-      "dev": true,
-      "requires": {
-        "css": "^2.0.0"
-      }
-    },
     "css-prefers-color-scheme": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz",
-      "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.5"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz",
+      "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==",
+      "dev": true
     },
     "css-select": {
       "version": "4.3.0",
@@ -6372,24 +6210,6 @@
         "fastparse": "^1.1.2"
       }
     },
-    "css-tree": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
-      "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
-      "dev": true,
-      "requires": {
-        "mdn-data": "2.0.14",
-        "source-map": "^0.6.1"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
     "css-what": {
       "version": "6.1.0",
       "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
@@ -6406,9 +6226,9 @@
       }
     },
     "cssdb": {
-      "version": "4.4.0",
-      "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz",
-      "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-5.1.0.tgz",
+      "integrity": "sha512-/vqjXhv1x9eGkE/zO6o8ZOI7dgdZbLVLUGyVRbPgk6YipXbW87YzUCcO+Jrmi5bwJlAH6oD+MNeZyRgXea1GZw==",
       "dev": true
     },
     "cssesc": {
@@ -6417,69 +6237,6 @@
       "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
       "dev": true
     },
-    "cssnano": {
-      "version": "5.1.12",
-      "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.12.tgz",
-      "integrity": "sha512-TgvArbEZu0lk/dvg2ja+B7kYoD7BBCmn3+k58xD0qjrGHsFzXY/wKTo9M5egcUCabPol05e/PVoIu79s2JN4WQ==",
-      "dev": true,
-      "requires": {
-        "cssnano-preset-default": "^5.2.12",
-        "lilconfig": "^2.0.3",
-        "yaml": "^1.10.2"
-      }
-    },
-    "cssnano-preset-default": {
-      "version": "5.2.12",
-      "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz",
-      "integrity": "sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==",
-      "dev": true,
-      "requires": {
-        "css-declaration-sorter": "^6.3.0",
-        "cssnano-utils": "^3.1.0",
-        "postcss-calc": "^8.2.3",
-        "postcss-colormin": "^5.3.0",
-        "postcss-convert-values": "^5.1.2",
-        "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-minify-font-values": "^5.1.0",
-        "postcss-minify-gradients": "^5.1.1",
-        "postcss-minify-params": "^5.1.3",
-        "postcss-minify-selectors": "^5.2.1",
-        "postcss-normalize-charset": "^5.1.0",
-        "postcss-normalize-display-values": "^5.1.0",
-        "postcss-normalize-positions": "^5.1.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-url": "^5.1.0",
-        "postcss-normalize-whitespace": "^5.1.1",
-        "postcss-ordered-values": "^5.1.3",
-        "postcss-reduce-initial": "^5.1.0",
-        "postcss-reduce-transforms": "^5.1.0",
-        "postcss-svgo": "^5.1.0",
-        "postcss-unique-selectors": "^5.1.1"
-      }
-    },
-    "cssnano-utils": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz",
-      "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==",
-      "dev": true
-    },
-    "csso": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz",
-      "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
-      "dev": true,
-      "requires": {
-        "css-tree": "^1.1.2"
-      }
-    },
     "csv-streamify": {
       "version": "3.0.4",
       "resolved": "https://registry.npmjs.org/csv-streamify/-/csv-streamify-3.0.4.tgz",
@@ -6626,13 +6383,12 @@
       "dev": true
     },
     "default-gateway": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz",
-      "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==",
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz",
+      "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==",
       "dev": true,
       "requires": {
-        "execa": "^1.0.0",
-        "ip-regex": "^2.1.0"
+        "execa": "^5.0.0"
       }
     },
     "defaults": {
@@ -6674,97 +6430,56 @@
         "object-keys": "^1.1.1"
       }
     },
-    "define-property": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-      "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-      "dev": true,
-      "requires": {
-        "is-descriptor": "^1.0.2",
-        "isobject": "^3.0.1"
-      },
-      "dependencies": {
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
-      }
-    },
     "del": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz",
-      "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
+      "version": "6.1.1",
+      "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz",
+      "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==",
       "dev": true,
       "requires": {
-        "@types/glob": "^7.1.1",
-        "globby": "^6.1.0",
-        "is-path-cwd": "^2.0.0",
-        "is-path-in-cwd": "^2.0.0",
-        "p-map": "^2.0.0",
-        "pify": "^4.0.1",
-        "rimraf": "^2.6.3"
+        "globby": "^11.0.1",
+        "graceful-fs": "^4.2.4",
+        "is-glob": "^4.0.1",
+        "is-path-cwd": "^2.2.0",
+        "is-path-inside": "^3.0.2",
+        "p-map": "^4.0.0",
+        "rimraf": "^3.0.2",
+        "slash": "^3.0.0"
       },
       "dependencies": {
+        "array-union": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+          "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+          "dev": true
+        },
         "globby": {
-          "version": "6.1.0",
-          "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
-          "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==",
+          "version": "11.1.0",
+          "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+          "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
           "dev": true,
           "requires": {
-            "array-union": "^1.0.1",
-            "glob": "^7.0.3",
-            "object-assign": "^4.0.1",
-            "pify": "^2.0.0",
-            "pinkie-promise": "^2.0.0"
-          },
-          "dependencies": {
-            "pify": {
-              "version": "2.3.0",
-              "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-              "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
-              "dev": true
-            }
+            "array-union": "^2.1.0",
+            "dir-glob": "^3.0.1",
+            "fast-glob": "^3.2.9",
+            "ignore": "^5.2.0",
+            "merge2": "^1.4.1",
+            "slash": "^3.0.0"
           }
         },
-        "p-map": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
-          "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
-          "dev": true
-        },
         "rimraf": {
-          "version": "2.7.1",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
           "dev": true,
           "requires": {
             "glob": "^7.1.3"
           }
+        },
+        "slash": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+          "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+          "dev": true
         }
       }
     },
@@ -6973,8 +6688,7 @@
     "electron-to-chromium": {
       "version": "1.4.185",
       "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.185.tgz",
-      "integrity": "sha512-9kV/isoOGpKkBt04yYNaSWIBn3187Q5VZRtoReq8oz5NY/A4XmU6cAoqgQlDp7kKJCZMRjWZ8nsQyxfpFHvfyw==",
-      "dev": true
+      "integrity": "sha512-9kV/isoOGpKkBt04yYNaSWIBn3187Q5VZRtoReq8oz5NY/A4XmU6cAoqgQlDp7kKJCZMRjWZ8nsQyxfpFHvfyw=="
     },
     "emoji-regex": {
       "version": "8.0.0",
@@ -7107,6 +6821,7 @@
       "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
       "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
       "dev": true,
+      "optional": true,
       "requires": {
         "prr": "~1.0.1"
       }
@@ -7126,9 +6841,9 @@
       "integrity": "sha512-UTlYYhXGLOy05P/vKVT2Ui7WtC7NiRzGtJyAKKn32g5Gvcjn7KAClLPWlipCtxIus934dFg9o9jXiBL0nP+t9Q=="
     },
     "es-module-lexer": {
-      "version": "0.7.1",
-      "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.7.1.tgz",
-      "integrity": "sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==",
+      "version": "0.9.3",
+      "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
+      "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==",
       "dev": true
     },
     "es5-ext": {
@@ -7191,127 +6906,141 @@
       }
     },
     "esbuild-android-arm64": {
-      "version": "0.13.8",
-      "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.8.tgz",
-      "integrity": "sha512-AilbChndywpk7CdKkNSZ9klxl+9MboLctXd9LwLo3b0dawmOF/i/t2U5d8LM6SbT1Xw36F8yngSUPrd8yPs2RA==",
+      "version": "0.14.22",
+      "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.22.tgz",
+      "integrity": "sha512-k1Uu4uC4UOFgrnTj2zuj75EswFSEBK+H6lT70/DdS4mTAOfs2ECv2I9ZYvr3w0WL0T4YItzJdK7fPNxcPw6YmQ==",
       "dev": true,
       "optional": true
     },
     "esbuild-darwin-64": {
-      "version": "0.13.8",
-      "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.8.tgz",
-      "integrity": "sha512-b6sdiT84zV5LVaoF+UoMVGJzR/iE2vNUfUDfFQGrm4LBwM/PWXweKpuu6RD9mcyCq18cLxkP6w/LD/w9DtX3ng==",
+      "version": "0.14.22",
+      "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.22.tgz",
+      "integrity": "sha512-d8Ceuo6Vw6HM3fW218FB6jTY6O3r2WNcTAU0SGsBkXZ3k8SDoRLd3Nrc//EqzdgYnzDNMNtrWegK2Qsss4THhw==",
       "dev": true,
       "optional": true
     },
     "esbuild-darwin-arm64": {
-      "version": "0.13.8",
-      "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.8.tgz",
-      "integrity": "sha512-R8YuPiiJayuJJRUBG4H0VwkEKo6AvhJs2m7Tl0JaIer3u1FHHXwGhMxjJDmK+kXwTFPriSysPvcobXC/UrrZCQ==",
+      "version": "0.14.22",
+      "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.22.tgz",
+      "integrity": "sha512-YAt9Tj3SkIUkswuzHxkaNlT9+sg0xvzDvE75LlBo4DI++ogSgSmKNR6B4eUhU5EUUepVXcXdRIdqMq9ppeRqfw==",
       "dev": true,
       "optional": true
     },
     "esbuild-freebsd-64": {
-      "version": "0.13.8",
-      "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.8.tgz",
-      "integrity": "sha512-zBn6urrn8FnKC+YSgDxdof9jhPCeU8kR/qaamlV4gI8R3KUaUK162WYM7UyFVAlj9N0MyD3AtB+hltzu4cysTw==",
+      "version": "0.14.22",
+      "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.22.tgz",
+      "integrity": "sha512-ek1HUv7fkXMy87Qm2G4IRohN+Qux4IcnrDBPZGXNN33KAL0pEJJzdTv0hB/42+DCYWylSrSKxk3KUXfqXOoH4A==",
       "dev": true,
       "optional": true
     },
     "esbuild-freebsd-arm64": {
-      "version": "0.13.8",
-      "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.8.tgz",
-      "integrity": "sha512-pWW2slN7lGlkx0MOEBoUGwRX5UgSCLq3dy2c8RIOpiHtA87xAUpDBvZK10MykbT+aMfXc0NI2lu1X+6kI34xng==",
+      "version": "0.14.22",
+      "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.22.tgz",
+      "integrity": "sha512-zPh9SzjRvr9FwsouNYTqgqFlsMIW07O8mNXulGeQx6O5ApgGUBZBgtzSlBQXkHi18WjrosYfsvp5nzOKiWzkjQ==",
       "dev": true,
       "optional": true
     },
     "esbuild-linux-32": {
-      "version": "0.13.8",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.8.tgz",
-      "integrity": "sha512-T0I0ueeKVO/Is0CAeSEOG9s2jeNNb8jrrMwG9QBIm3UU18MRB60ERgkS2uV3fZ1vP2F8i3Z2e3Zju4lg9dhVmw==",
+      "version": "0.14.22",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.22.tgz",
+      "integrity": "sha512-SnpveoE4nzjb9t2hqCIzzTWBM0RzcCINDMBB67H6OXIuDa4KqFqaIgmTchNA9pJKOVLVIKd5FYxNiJStli21qg==",
       "dev": true,
       "optional": true
     },
     "esbuild-linux-64": {
-      "version": "0.13.8",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.8.tgz",
-      "integrity": "sha512-Bm8SYmFtvfDCIu9sjKppFXzRXn2BVpuCinU1ChTuMtdKI/7aPpXIrkqBNOgPTOQO9AylJJc1Zw6EvtKORhn64w==",
+      "version": "0.14.22",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.22.tgz",
+      "integrity": "sha512-Zcl9Wg7gKhOWWNqAjygyqzB+fJa19glgl2JG7GtuxHyL1uEnWlpSMytTLMqtfbmRykIHdab797IOZeKwk5g0zg==",
       "dev": true,
       "optional": true
     },
     "esbuild-linux-arm": {
-      "version": "0.13.8",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.8.tgz",
-      "integrity": "sha512-4/HfcC40LJ4GPyboHA+db0jpFarTB628D1ifU+/5bunIgY+t6mHkJWyxWxAAE8wl/ZIuRYB9RJFdYpu1AXGPdg==",
+      "version": "0.14.22",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.22.tgz",
+      "integrity": "sha512-soPDdbpt/C0XvOOK45p4EFt8HbH5g+0uHs5nUKjHVExfgR7du734kEkXR/mE5zmjrlymk5AA79I0VIvj90WZ4g==",
       "dev": true,
       "optional": true
     },
     "esbuild-linux-arm64": {
-      "version": "0.13.8",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.8.tgz",
-      "integrity": "sha512-X4pWZ+SL+FJ09chWFgRNO3F+YtvAQRcWh0uxKqZSWKiWodAB20flsW/OWFYLXBKiVCTeoGMvENZS/GeVac7+tQ==",
+      "version": "0.14.22",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.22.tgz",
+      "integrity": "sha512-8q/FRBJtV5IHnQChO3LHh/Jf7KLrxJ/RCTGdBvlVZhBde+dk3/qS9fFsUy+rs3dEi49aAsyVitTwlKw1SUFm+A==",
       "dev": true,
       "optional": true
     },
     "esbuild-linux-mips64le": {
-      "version": "0.13.8",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.8.tgz",
-      "integrity": "sha512-o7e0D+sqHKT31v+mwFircJFjwSKVd2nbkHEn4l9xQ1hLR+Bv8rnt3HqlblY3+sBdlrOTGSwz0ReROlKUMJyldA==",
+      "version": "0.14.22",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.22.tgz",
+      "integrity": "sha512-SiNDfuRXhGh1JQLLA9JPprBgPVFOsGuQ0yDfSPTNxztmVJd8W2mX++c4FfLpAwxuJe183mLuKf7qKCHQs5ZnBQ==",
       "dev": true,
       "optional": true
     },
     "esbuild-linux-ppc64le": {
-      "version": "0.13.8",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.8.tgz",
-      "integrity": "sha512-eZSQ0ERsWkukJp2px/UWJHVNuy0lMoz/HZcRWAbB6reoaBw7S9vMzYNUnflfL3XA6WDs+dZn3ekHE4Y2uWLGig==",
+      "version": "0.14.22",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.22.tgz",
+      "integrity": "sha512-6t/GI9I+3o1EFm2AyN9+TsjdgWCpg2nwniEhjm2qJWtJyJ5VzTXGUU3alCO3evopu8G0hN2Bu1Jhz2YmZD0kng==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-linux-riscv64": {
+      "version": "0.14.22",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.22.tgz",
+      "integrity": "sha512-AyJHipZKe88sc+tp5layovquw5cvz45QXw5SaDgAq2M911wLHiCvDtf/07oDx8eweCyzYzG5Y39Ih568amMTCQ==",
+      "dev": true,
+      "optional": true
+    },
+    "esbuild-linux-s390x": {
+      "version": "0.14.22",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.22.tgz",
+      "integrity": "sha512-Sz1NjZewTIXSblQDZWEFZYjOK6p8tV6hrshYdXZ0NHTjWE+lwxpOpWeElUGtEmiPcMT71FiuA9ODplqzzSxkzw==",
       "dev": true,
       "optional": true
     },
     "esbuild-netbsd-64": {
-      "version": "0.13.8",
-      "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.8.tgz",
-      "integrity": "sha512-gZX4kP7gVvOrvX0ZwgHmbuHczQUwqYppxqtoyC7VNd80t5nBHOFXVhWo2Ad/Lms0E8b+wwgI/WjZFTCpUHOg9Q==",
+      "version": "0.14.22",
+      "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.22.tgz",
+      "integrity": "sha512-TBbCtx+k32xydImsHxvFgsOCuFqCTGIxhzRNbgSL1Z2CKhzxwT92kQMhxort9N/fZM2CkRCPPs5wzQSamtzEHA==",
       "dev": true,
       "optional": true
     },
     "esbuild-openbsd-64": {
-      "version": "0.13.8",
-      "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.8.tgz",
-      "integrity": "sha512-afzza308X4WmcebexbTzAgfEWt9MUkdTvwIa8xOu4CM2qGbl2LanqEl8/LUs8jh6Gqw6WsicEK52GPrS9wvkcw==",
+      "version": "0.14.22",
+      "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.22.tgz",
+      "integrity": "sha512-vK912As725haT313ANZZZN+0EysEEQXWC/+YE4rQvOQzLuxAQc2tjbzlAFREx3C8+uMuZj/q7E5gyVB7TzpcTA==",
       "dev": true,
       "optional": true
     },
     "esbuild-sunos-64": {
-      "version": "0.13.8",
-      "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.8.tgz",
-      "integrity": "sha512-mWPZibmBbuMKD+LDN23LGcOZ2EawMYBONMXXHmbuxeT0XxCNwadbCVwUQ/2p5Dp5Kvf6mhrlIffcnWOiCBpiVw==",
+      "version": "0.14.22",
+      "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.22.tgz",
+      "integrity": "sha512-/mbJdXTW7MTcsPhtfDsDyPEOju9EOABvCjeUU2OJ7fWpX/Em/H3WYDa86tzLUbcVg++BScQDzqV/7RYw5XNY0g==",
       "dev": true,
       "optional": true
     },
     "esbuild-wasm": {
-      "version": "0.13.8",
-      "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.13.8.tgz",
-      "integrity": "sha512-UbD+3nloiSpJWXTCInZQrqPe8Y+RLfDkY/5kEHiXsw/lmaEvibe69qTzQu16m5R9je/0bF7VYQ5jaEOq0z9lLA==",
+      "version": "0.14.22",
+      "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.22.tgz",
+      "integrity": "sha512-FOSAM29GN1fWusw0oLMv6JYhoheDIh5+atC72TkJKfIUMID6yISlicoQSd9gsNSFsNBvABvtE2jR4JB1j4FkFw==",
       "dev": true
     },
     "esbuild-windows-32": {
-      "version": "0.13.8",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.8.tgz",
-      "integrity": "sha512-QsZ1HnWIcnIEApETZWw8HlOhDSWqdZX2SylU7IzGxOYyVcX7QI06ety/aDcn437mwyO7Ph4RrbhB+2ntM8kX8A==",
+      "version": "0.14.22",
+      "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.22.tgz",
+      "integrity": "sha512-1vRIkuvPTjeSVK3diVrnMLSbkuE36jxA+8zGLUOrT4bb7E/JZvDRhvtbWXWaveUc/7LbhaNFhHNvfPuSw2QOQg==",
       "dev": true,
       "optional": true
     },
     "esbuild-windows-64": {
-      "version": "0.13.8",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.8.tgz",
-      "integrity": "sha512-76Fb57B9eE/JmJi1QmUW0tRLQZfGo0it+JeYoCDTSlbTn7LV44ecOHIMJSSgZADUtRMWT9z0Kz186bnaB3amSg==",
+      "version": "0.14.22",
+      "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.22.tgz",
+      "integrity": "sha512-AxjIDcOmx17vr31C5hp20HIwz1MymtMjKqX4qL6whPj0dT9lwxPexmLj6G1CpR3vFhui6m75EnBEe4QL82SYqw==",
       "dev": true,
       "optional": true
     },
     "esbuild-windows-arm64": {
-      "version": "0.13.8",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.8.tgz",
-      "integrity": "sha512-HW6Mtq5eTudllxY2YgT62MrVcn7oq2o8TAoAvDUhyiEmRmDY8tPwAhb1vxw5/cdkbukM3KdMYtksnUhF/ekWeg==",
+      "version": "0.14.22",
+      "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.22.tgz",
+      "integrity": "sha512-5wvQ+39tHmRhNpu2Fx04l7QfeK3mQ9tKzDqqGR8n/4WUxsFxnVLfDRBGirIfk4AfWlxk60kqirlODPoT5LqMUg==",
       "dev": true,
       "optional": true
     },
@@ -7427,25 +7156,70 @@
       "integrity": "sha512-Kd3EgYfODHueq6GzVfs/VUolh2EgJsS8hkO3KpnDrxVjU3eq63eXM2ujXkhPP+OkeUOhL8CxdfZbQXzryb5C4g==",
       "dev": true
     },
-    "eventsource": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz",
-      "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==",
-      "dev": true
-    },
     "execa": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
-      "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+      "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
       "dev": true,
       "requires": {
-        "cross-spawn": "^6.0.0",
-        "get-stream": "^4.0.0",
-        "is-stream": "^1.1.0",
-        "npm-run-path": "^2.0.0",
-        "p-finally": "^1.0.0",
-        "signal-exit": "^3.0.0",
-        "strip-eof": "^1.0.0"
+        "cross-spawn": "^7.0.3",
+        "get-stream": "^6.0.0",
+        "human-signals": "^2.1.0",
+        "is-stream": "^2.0.0",
+        "merge-stream": "^2.0.0",
+        "npm-run-path": "^4.0.1",
+        "onetime": "^5.1.2",
+        "signal-exit": "^3.0.3",
+        "strip-final-newline": "^2.0.0"
+      },
+      "dependencies": {
+        "cross-spawn": {
+          "version": "7.0.3",
+          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+          "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+          "dev": true,
+          "requires": {
+            "path-key": "^3.1.0",
+            "shebang-command": "^2.0.0",
+            "which": "^2.0.1"
+          }
+        },
+        "get-stream": {
+          "version": "6.0.1",
+          "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+          "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+          "dev": true
+        },
+        "path-key": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+          "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+          "dev": true
+        },
+        "shebang-command": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+          "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+          "dev": true,
+          "requires": {
+            "shebang-regex": "^3.0.0"
+          }
+        },
+        "shebang-regex": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+          "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+          "dev": true
+        },
+        "which": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+          "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+          "dev": true,
+          "requires": {
+            "isexe": "^2.0.0"
+          }
+        }
       }
     },
     "exegesis": {
@@ -7537,60 +7311,10 @@
       "integrity": "sha1-zhZYEcnxF69qX4gpQLlq5/muzDQ=",
       "dev": true
     },
-    "expand-brackets": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
-      "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
-      "dev": true,
-      "requires": {
-        "debug": "^2.3.3",
-        "define-property": "^0.2.5",
-        "extend-shallow": "^2.0.1",
-        "posix-character-classes": "^0.1.0",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.1"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-          "dev": true
-        }
-      }
-    },
-    "express": {
-      "version": "4.17.1",
-      "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
-      "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
+    "express": {
+      "version": "4.17.1",
+      "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
+      "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
       "dev": true,
       "requires": {
         "accepts": "~1.3.7",
@@ -7676,27 +7400,6 @@
       "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
       "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
     },
-    "extend-shallow": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-      "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
-      "dev": true,
-      "requires": {
-        "assign-symbols": "^1.0.0",
-        "is-extendable": "^1.0.1"
-      },
-      "dependencies": {
-        "is-extendable": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-          "dev": true,
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
-        }
-      }
-    },
     "external-editor": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
@@ -7708,71 +7411,6 @@
         "tmp": "^0.0.33"
       }
     },
-    "extglob": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
-      "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
-      "dev": true,
-      "requires": {
-        "array-unique": "^0.3.2",
-        "define-property": "^1.0.0",
-        "expand-brackets": "^2.1.4",
-        "extend-shallow": "^2.0.1",
-        "fragment-cache": "^0.2.1",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^1.0.0"
-          }
-        },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
-      }
-    },
     "extsprintf": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
@@ -7882,13 +7520,6 @@
         "escape-string-regexp": "^1.0.5"
       }
     },
-    "file-uri-to-path": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
-      "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
-      "dev": true,
-      "optional": true
-    },
     "filesize": {
       "version": "3.6.1",
       "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
@@ -7937,9 +7568,9 @@
       }
     },
     "find-cache-dir": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz",
-      "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==",
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
+      "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
       "dev": true,
       "requires": {
         "commondir": "^1.0.1",
@@ -8425,12 +8056,6 @@
       "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==",
       "dev": true
     },
-    "flatten": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz",
-      "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==",
-      "dev": true
-    },
     "fn.name": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
@@ -8443,12 +8068,6 @@
       "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==",
       "dev": true
     },
-    "for-in": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
-      "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
-      "dev": true
-    },
     "forever-agent": {
       "version": "0.6.1",
       "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
@@ -8472,14 +8091,11 @@
       "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
       "dev": true
     },
-    "fragment-cache": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
-      "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
-      "dev": true,
-      "requires": {
-        "map-cache": "^0.2.2"
-      }
+    "fraction.js": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
+      "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
+      "dev": true
     },
     "fresh": {
       "version": "0.5.2",
@@ -8546,7 +8162,8 @@
     "function-bind": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+      "dev": true
     },
     "functions-have-names": {
       "version": "1.2.3",
@@ -8667,6 +8284,12 @@
         "has-symbols": "^1.0.3"
       }
     },
+    "get-package-type": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
+      "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
+      "dev": true
+    },
     "get-stream": {
       "version": "4.1.0",
       "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
@@ -8676,12 +8299,6 @@
         "pump": "^3.0.0"
       }
     },
-    "get-value": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
-      "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
-      "dev": true
-    },
     "getpass": {
       "version": "0.1.7",
       "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
@@ -8771,23 +8388,23 @@
       "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
     },
     "globby": {
-      "version": "11.1.0",
-      "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
-      "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+      "version": "12.2.0",
+      "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz",
+      "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==",
       "dev": true,
       "requires": {
-        "array-union": "^2.1.0",
+        "array-union": "^3.0.1",
         "dir-glob": "^3.0.1",
-        "fast-glob": "^3.2.9",
-        "ignore": "^5.2.0",
+        "fast-glob": "^3.2.7",
+        "ignore": "^5.1.9",
         "merge2": "^1.4.1",
-        "slash": "^3.0.0"
+        "slash": "^4.0.0"
       },
       "dependencies": {
         "array-union": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
-          "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz",
+          "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==",
           "dev": true
         }
       }
@@ -9058,6 +8675,7 @@
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
       "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "dev": true,
       "requires": {
         "function-bind": "^1.1.1"
       }
@@ -9106,58 +8724,6 @@
       "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
       "dev": true
     },
-    "has-value": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
-      "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
-      "dev": true,
-      "requires": {
-        "get-value": "^2.0.6",
-        "has-values": "^1.0.0",
-        "isobject": "^3.0.0"
-      }
-    },
-    "has-values": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
-      "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
-      "dev": true,
-      "requires": {
-        "is-number": "^3.0.0",
-        "kind-of": "^4.0.0"
-      },
-      "dependencies": {
-        "is-number": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^3.0.2"
-          },
-          "dependencies": {
-            "kind-of": {
-              "version": "3.2.2",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-              "dev": true,
-              "requires": {
-                "is-buffer": "^1.1.5"
-              }
-            }
-          }
-        },
-        "kind-of": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
-          "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
     "has-yarn": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz",
@@ -9220,9 +8786,9 @@
       }
     },
     "html-entities": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz",
-      "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==",
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz",
+      "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==",
       "dev": true
     },
     "html-escaper": {
@@ -9303,120 +8869,16 @@
       }
     },
     "http-proxy-middleware": {
-      "version": "0.19.1",
-      "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
-      "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz",
+      "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==",
       "dev": true,
       "requires": {
-        "http-proxy": "^1.17.0",
-        "is-glob": "^4.0.0",
-        "lodash": "^4.17.11",
-        "micromatch": "^3.1.10"
-      },
-      "dependencies": {
-        "braces": {
-          "version": "2.3.2",
-          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-          "dev": true,
-          "requires": {
-            "arr-flatten": "^1.1.0",
-            "array-unique": "^0.3.2",
-            "extend-shallow": "^2.0.1",
-            "fill-range": "^4.0.0",
-            "isobject": "^3.0.1",
-            "repeat-element": "^1.1.2",
-            "snapdragon": "^0.8.1",
-            "snapdragon-node": "^2.0.1",
-            "split-string": "^3.0.2",
-            "to-regex": "^3.0.1"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
-              "dev": true,
-              "requires": {
-                "is-extendable": "^0.1.0"
-              }
-            }
-          }
-        },
-        "fill-range": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
-          "dev": true,
-          "requires": {
-            "extend-shallow": "^2.0.1",
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1",
-            "to-regex-range": "^2.1.0"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
-              "dev": true,
-              "requires": {
-                "is-extendable": "^0.1.0"
-              }
-            }
-          }
-        },
-        "is-number": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^3.0.2"
-          },
-          "dependencies": {
-            "kind-of": {
-              "version": "3.2.2",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-              "dev": true,
-              "requires": {
-                "is-buffer": "^1.1.5"
-              }
-            }
-          }
-        },
-        "micromatch": {
-          "version": "3.1.10",
-          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-          "dev": true,
-          "requires": {
-            "arr-diff": "^4.0.0",
-            "array-unique": "^0.3.2",
-            "braces": "^2.3.1",
-            "define-property": "^2.0.2",
-            "extend-shallow": "^3.0.2",
-            "extglob": "^2.0.4",
-            "fragment-cache": "^0.2.1",
-            "kind-of": "^6.0.2",
-            "nanomatch": "^1.2.9",
-            "object.pick": "^1.3.0",
-            "regex-not": "^1.0.0",
-            "snapdragon": "^0.8.1",
-            "to-regex": "^3.0.2"
-          }
-        },
-        "to-regex-range": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-          "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
-          "dev": true,
-          "requires": {
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1"
-          }
-        }
+        "@types/http-proxy": "^1.17.8",
+        "http-proxy": "^1.18.1",
+        "is-glob": "^4.0.1",
+        "is-plain-obj": "^3.0.0",
+        "micromatch": "^4.0.2"
       }
     },
     "http-signature": {
@@ -9451,6 +8913,12 @@
         }
       }
     },
+    "human-signals": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+      "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+      "dev": true
+    },
     "humanize-ms": {
       "version": "1.2.1",
       "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
@@ -9514,6 +8982,12 @@
       "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
       "dev": true
     },
+    "immutable": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz",
+      "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==",
+      "dev": true
+    },
     "import-fresh": {
       "version": "3.3.0",
       "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
@@ -9522,6 +8996,14 @@
       "requires": {
         "parent-module": "^1.0.0",
         "resolve-from": "^4.0.0"
+      },
+      "dependencies": {
+        "resolve-from": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+          "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+          "dev": true
+        }
       }
     },
     "import-lazy": {
@@ -9530,61 +9012,6 @@
       "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
       "dev": true
     },
-    "import-local": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
-      "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
-      "dev": true,
-      "requires": {
-        "pkg-dir": "^3.0.0",
-        "resolve-cwd": "^2.0.0"
-      },
-      "dependencies": {
-        "find-up": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-          "dev": true,
-          "requires": {
-            "locate-path": "^3.0.0"
-          }
-        },
-        "locate-path": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-          "dev": true,
-          "requires": {
-            "p-locate": "^3.0.0",
-            "path-exists": "^3.0.0"
-          }
-        },
-        "p-locate": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-          "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-          "dev": true,
-          "requires": {
-            "p-limit": "^2.0.0"
-          }
-        },
-        "path-exists": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-          "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
-          "dev": true
-        },
-        "pkg-dir": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
-          "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
-          "dev": true,
-          "requires": {
-            "find-up": "^3.0.0"
-          }
-        }
-      }
-    },
     "imurmurhash": {
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
@@ -9597,12 +9024,6 @@
       "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
       "dev": true
     },
-    "indexes-of": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
-      "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==",
-      "dev": true
-    },
     "infer-owner": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
@@ -9815,60 +9236,18 @@
       "dev": true,
       "optional": true
     },
-    "internal-ip": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz",
-      "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==",
-      "dev": true,
-      "requires": {
-        "default-gateway": "^4.2.0",
-        "ipaddr.js": "^1.9.0"
-      }
-    },
     "ip": {
       "version": "1.1.8",
       "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
       "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==",
       "dev": true
     },
-    "ip-regex": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
-      "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==",
-      "dev": true
-    },
     "ipaddr.js": {
       "version": "1.9.1",
       "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
       "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
       "dev": true
     },
-    "is-absolute-url": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
-      "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
-      "dev": true
-    },
-    "is-accessor-descriptor": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
-      "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
-      "dev": true,
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
     "is-arguments": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
@@ -9894,12 +9273,6 @@
         "binary-extensions": "^2.0.0"
       }
     },
-    "is-buffer": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-      "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
-      "dev": true
-    },
     "is-ci": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
@@ -9913,30 +9286,11 @@
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz",
       "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==",
+      "dev": true,
       "requires": {
         "has": "^1.0.3"
       }
     },
-    "is-data-descriptor": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
-      "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
-      "dev": true,
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
     "is-date-object": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
@@ -9946,37 +9300,12 @@
         "has-tostringtag": "^1.0.0"
       }
     },
-    "is-descriptor": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
-      "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
-      "dev": true,
-      "requires": {
-        "is-accessor-descriptor": "^0.1.6",
-        "is-data-descriptor": "^0.1.4",
-        "kind-of": "^5.0.0"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "5.1.0",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
-          "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
-          "dev": true
-        }
-      }
-    },
     "is-docker": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz",
       "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==",
       "dev": true
     },
-    "is-extendable": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
-      "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
-      "dev": true
-    },
     "is-extglob": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -10052,23 +9381,17 @@
       "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
       "dev": true
     },
-    "is-path-in-cwd": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
-      "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==",
-      "dev": true,
-      "requires": {
-        "is-path-inside": "^2.1.0"
-      }
-    },
     "is-path-inside": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz",
-      "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==",
-      "dev": true,
-      "requires": {
-        "path-is-inside": "^1.0.2"
-      }
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+      "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+      "dev": true
+    },
+    "is-plain-obj": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
+      "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
+      "dev": true
     },
     "is-plain-object": {
       "version": "2.0.4",
@@ -10096,9 +9419,9 @@
       }
     },
     "is-stream": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
-      "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+      "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
       "dev": true
     },
     "is-stream-ended": {
@@ -10131,12 +9454,6 @@
       "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
       "dev": true
     },
-    "is-windows": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
-      "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
-      "dev": true
-    },
     "is-wsl": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
@@ -10208,14 +9525,15 @@
       "dev": true
     },
     "istanbul-lib-instrument": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
-      "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz",
+      "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==",
       "dev": true,
       "requires": {
-        "@babel/core": "^7.7.5",
+        "@babel/core": "^7.12.3",
+        "@babel/parser": "^7.14.7",
         "@istanbuljs/schema": "^0.1.2",
-        "istanbul-lib-coverage": "^3.0.0",
+        "istanbul-lib-coverage": "^3.2.0",
         "semver": "^6.3.0"
       }
     },
@@ -10874,12 +10192,6 @@
         "json-buffer": "3.0.0"
       }
     },
-    "killable": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
-      "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==",
-      "dev": true
-    },
     "kind-of": {
       "version": "6.0.3",
       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -10917,9 +10229,9 @@
       }
     },
     "less": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/less/-/less-4.1.1.tgz",
-      "integrity": "sha512-w09o8tZFPThBscl5d0Ggp3RcrKIouBoQscnOMgFH3n5V3kN/CXGHNfCkRPtxJk6nKryDXaV9aHLK55RXuH4sAw==",
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/less/-/less-4.1.2.tgz",
+      "integrity": "sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA==",
       "dev": true,
       "requires": {
         "copy-anything": "^2.0.1",
@@ -10931,7 +10243,7 @@
         "needle": "^2.5.2",
         "parse-node-version": "^1.0.1",
         "source-map": "~0.6.0",
-        "tslib": "^1.10.0"
+        "tslib": "^2.3.0"
       },
       "dependencies": {
         "source-map": {
@@ -10940,19 +10252,13 @@
           "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true,
           "optional": true
-        },
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-          "dev": true
         }
       }
     },
     "less-loader": {
-      "version": "10.0.1",
-      "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-10.0.1.tgz",
-      "integrity": "sha512-Crln//HpW9M5CbtdfWm3IO66Cvx1WhZQvNybXgfB2dD/6Sav9ppw+IWqs/FQKPBFO4B6X0X28Z0WNznshgwUzA==",
+      "version": "10.2.0",
+      "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-10.2.0.tgz",
+      "integrity": "sha512-AV5KHWvCezW27GT90WATaDnfXBv99llDbtaj4bshq6DvAihMdNjaPDcUMa6EXKLRF+P2opFenJp89BXg91XLYg==",
       "dev": true,
       "requires": {
         "klona": "^2.0.4"
@@ -10965,13 +10271,12 @@
       "dev": true
     },
     "license-webpack-plugin": {
-      "version": "2.3.20",
-      "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.20.tgz",
-      "integrity": "sha512-AHVueg9clOKACSHkhmEI+PCC9x8+qsQVuKECZD3ETxETK5h/PCv5/MUzyG1gm8OMcip/s1tcNxqo9Qb7WhjGsg==",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz",
+      "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==",
       "dev": true,
       "requires": {
-        "@types/webpack-sources": "^0.1.5",
-        "webpack-sources": "^1.2.0"
+        "webpack-sources": "^3.0.0"
       }
     },
     "lie": {
@@ -10983,12 +10288,6 @@
         "immediate": "~3.0.5"
       }
     },
-    "lilconfig": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz",
-      "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==",
-      "dev": true
-    },
     "lines-and-columns": {
       "version": "1.2.4",
       "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
@@ -11008,15 +10307,10 @@
       "dev": true
     },
     "loader-utils": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
-      "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
-      "dev": true,
-      "requires": {
-        "big.js": "^5.2.2",
-        "emojis-list": "^3.0.0",
-        "json5": "^2.1.2"
-      }
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz",
+      "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==",
+      "dev": true
     },
     "locate-path": {
       "version": "5.0.0",
@@ -11030,7 +10324,8 @@
     "lodash": {
       "version": "4.17.20",
       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
-      "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
+      "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
+      "dev": true
     },
     "lodash._isnative": {
       "version": "2.4.1",
@@ -11156,12 +10451,6 @@
         "lodash.isobject": "~2.4.1"
       }
     },
-    "lodash.memoize": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
-      "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
-      "dev": true
-    },
     "lodash.once": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
@@ -11186,12 +10475,6 @@
       "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=",
       "dev": true
     },
-    "lodash.uniq": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
-      "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
-      "dev": true
-    },
     "lodash.values": {
       "version": "2.4.1",
       "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-2.4.1.tgz",
@@ -11307,12 +10590,6 @@
         }
       }
     },
-    "loglevel": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz",
-      "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==",
-      "dev": true
-    },
     "long": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
@@ -11442,30 +10719,6 @@
         }
       }
     },
-    "map-age-cleaner": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
-      "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
-      "dev": true,
-      "requires": {
-        "p-defer": "^1.0.0"
-      }
-    },
-    "map-cache": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
-      "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
-      "dev": true
-    },
-    "map-visit": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
-      "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
-      "dev": true,
-      "requires": {
-        "object-visit": "^1.0.0"
-      }
-    },
     "marked": {
       "version": "0.7.0",
       "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz",
@@ -11486,36 +10739,12 @@
         "supports-hyperlinks": "^1.0.1"
       }
     },
-    "mdn-data": {
-      "version": "2.0.14",
-      "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
-      "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
-      "dev": true
-    },
     "media-typer": {
       "version": "0.3.0",
       "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
       "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
       "dev": true
     },
-    "mem": {
-      "version": "8.1.1",
-      "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz",
-      "integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==",
-      "dev": true,
-      "requires": {
-        "map-age-cleaner": "^0.1.3",
-        "mimic-fn": "^3.1.0"
-      },
-      "dependencies": {
-        "mimic-fn": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz",
-          "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==",
-          "dev": true
-        }
-      }
-    },
     "memfs": {
       "version": "3.4.7",
       "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz",
@@ -11549,39 +10778,12 @@
         }
       }
     },
-    "memory-fs": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
-      "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==",
-      "dev": true,
-      "requires": {
-        "errno": "^0.1.3",
-        "readable-stream": "^2.0.1"
-      }
-    },
     "merge-descriptors": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
       "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
       "dev": true
     },
-    "merge-source-map": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz",
-      "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==",
-      "dev": true,
-      "requires": {
-        "source-map": "^0.6.1"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
     "merge-stream": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -11652,35 +10854,33 @@
       "dev": true
     },
     "mini-css-extract-plugin": {
-      "version": "2.4.2",
-      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.2.tgz",
-      "integrity": "sha512-ZmqShkn79D36uerdED+9qdo1ZYG8C1YsWvXu0UMJxurZnSdgz7gQKO2EGv8T55MhDqG3DYmGtizZNpM/UbTlcA==",
+      "version": "2.5.3",
+      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.5.3.tgz",
+      "integrity": "sha512-YseMB8cs8U/KCaAGQoqYmfUuhhGW0a9p9XvWXrxVOkE3/IiISTLw4ALNt7JR5B2eYauFM+PQGSbXMDmVbR7Tfw==",
       "dev": true,
       "requires": {
-        "schema-utils": "^3.1.0"
+        "schema-utils": "^4.0.0"
       },
       "dependencies": {
-        "ajv": {
-          "version": "6.12.6",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+        "ajv-keywords": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+          "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
           "dev": true,
           "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
+            "fast-deep-equal": "^3.1.3"
           }
         },
         "schema-utils": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
-          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
+          "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
           "dev": true,
           "requires": {
-            "@types/json-schema": "^7.0.8",
-            "ajv": "^6.12.5",
-            "ajv-keywords": "^3.5.2"
+            "@types/json-schema": "^7.0.9",
+            "ajv": "^8.8.0",
+            "ajv-formats": "^2.1.1",
+            "ajv-keywords": "^5.0.0"
           }
         }
       }
@@ -11811,27 +11011,6 @@
         }
       }
     },
-    "mixin-deep": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
-      "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
-      "dev": true,
-      "requires": {
-        "for-in": "^1.0.2",
-        "is-extendable": "^1.0.1"
-      },
-      "dependencies": {
-        "is-extendable": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-          "dev": true,
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
-        }
-      }
-    },
     "mkdirp": {
       "version": "0.5.5",
       "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
@@ -11917,25 +11096,6 @@
       "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
       "dev": true
     },
-    "nanomatch": {
-      "version": "1.2.13",
-      "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
-      "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
-      "dev": true,
-      "requires": {
-        "arr-diff": "^4.0.0",
-        "array-unique": "^0.3.2",
-        "define-property": "^2.0.2",
-        "extend-shallow": "^3.0.2",
-        "fragment-cache": "^0.2.1",
-        "is-windows": "^1.0.2",
-        "kind-of": "^6.0.2",
-        "object.pick": "^1.3.0",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.1"
-      }
-    },
     "nash": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/nash/-/nash-3.0.0.tgz",
@@ -12244,8 +11404,7 @@
     "node-releases": {
       "version": "2.0.6",
       "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
-      "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==",
-      "dev": true
+      "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg=="
     },
     "nopt": {
       "version": "5.0.0",
@@ -12268,12 +11427,6 @@
       "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
       "dev": true
     },
-    "normalize-url": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
-      "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
-      "dev": true
-    },
     "npm-bundled": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz",
@@ -12419,143 +11572,390 @@
       }
     },
     "npm-registry-fetch": {
-      "version": "11.0.0",
-      "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz",
-      "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==",
+      "version": "12.0.2",
+      "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-12.0.2.tgz",
+      "integrity": "sha512-Df5QT3RaJnXYuOwtXBXS9BWs+tHH2olvkCLh6jcR/b/u3DvPMlp3J0TvvYwplPKxHMOwfg287PYih9QqaVFoKA==",
       "dev": true,
       "requires": {
-        "make-fetch-happen": "^9.0.1",
-        "minipass": "^3.1.3",
-        "minipass-fetch": "^1.3.0",
+        "make-fetch-happen": "^10.0.1",
+        "minipass": "^3.1.6",
+        "minipass-fetch": "^1.4.1",
         "minipass-json-stream": "^1.0.1",
-        "minizlib": "^2.0.0",
-        "npm-package-arg": "^8.0.0"
+        "minizlib": "^2.1.2",
+        "npm-package-arg": "^8.1.5"
       },
       "dependencies": {
-        "minizlib": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
-          "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+        "@npmcli/fs": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.0.tgz",
+          "integrity": "sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ==",
           "dev": true,
           "requires": {
-            "minipass": "^3.0.0",
-            "yallist": "^4.0.0"
+            "@gar/promisify": "^1.1.3",
+            "semver": "^7.3.5"
           }
-        }
-      }
-    },
-    "npm-run-path": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
-      "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
-      "dev": true,
-      "requires": {
-        "path-key": "^2.0.0"
-      }
-    },
-    "npmlog": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
-      "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "are-we-there-yet": "~1.1.2",
-        "console-control-strings": "~1.1.0",
-        "gauge": "~2.7.3",
-        "set-blocking": "~2.0.0"
-      }
-    },
-    "nth-check": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
-      "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
-      "dev": true,
-      "requires": {
-        "boolbase": "^1.0.0"
-      }
-    },
-    "num2fraction": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
-      "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==",
-      "dev": true
-    },
-    "number-is-nan": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
-      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
-      "dev": true,
-      "optional": true
-    },
-    "oauth-sign": {
-      "version": "0.9.0",
-      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
-      "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
-      "dev": true
-    },
-    "object-assign": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
-      "dev": true
-    },
-    "object-copy": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
-      "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
-      "dev": true,
-      "requires": {
-        "copy-descriptor": "^0.1.0",
-        "define-property": "^0.2.5",
-        "kind-of": "^3.0.3"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+        },
+        "@npmcli/move-file": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz",
+          "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==",
           "dev": true,
           "requires": {
-            "is-descriptor": "^0.1.0"
+            "mkdirp": "^1.0.4",
+            "rimraf": "^3.0.2"
           }
         },
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+        "@tootallnate/once": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
+          "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
+          "dev": true
+        },
+        "agent-base": {
+          "version": "6.0.2",
+          "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+          "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
           "dev": true,
           "requires": {
-            "is-buffer": "^1.1.5"
+            "debug": "4"
           }
-        }
-      }
-    },
-    "object-is": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
-      "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3"
-      }
-    },
-    "object-keys": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
-      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
-      "dev": true
+        },
+        "cacache": {
+          "version": "16.1.1",
+          "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz",
+          "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==",
+          "dev": true,
+          "requires": {
+            "@npmcli/fs": "^2.1.0",
+            "@npmcli/move-file": "^2.0.0",
+            "chownr": "^2.0.0",
+            "fs-minipass": "^2.1.0",
+            "glob": "^8.0.1",
+            "infer-owner": "^1.0.4",
+            "lru-cache": "^7.7.1",
+            "minipass": "^3.1.6",
+            "minipass-collect": "^1.0.2",
+            "minipass-flush": "^1.0.5",
+            "minipass-pipeline": "^1.2.4",
+            "mkdirp": "^1.0.4",
+            "p-map": "^4.0.0",
+            "promise-inflight": "^1.0.1",
+            "rimraf": "^3.0.2",
+            "ssri": "^9.0.0",
+            "tar": "^6.1.11",
+            "unique-filename": "^1.1.1"
+          }
+        },
+        "chownr": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+          "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+          "dev": true
+        },
+        "glob": {
+          "version": "8.0.3",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz",
+          "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==",
+          "dev": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^5.0.1",
+            "once": "^1.3.0"
+          },
+          "dependencies": {
+            "brace-expansion": {
+              "version": "2.0.1",
+              "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+              "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+              "dev": true,
+              "requires": {
+                "balanced-match": "^1.0.0"
+              }
+            },
+            "minimatch": {
+              "version": "5.1.0",
+              "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
+              "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
+              "dev": true,
+              "requires": {
+                "brace-expansion": "^2.0.1"
+              }
+            }
+          }
+        },
+        "http-proxy-agent": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+          "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+          "dev": true,
+          "requires": {
+            "@tootallnate/once": "2",
+            "agent-base": "6",
+            "debug": "4"
+          }
+        },
+        "https-proxy-agent": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+          "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+          "dev": true,
+          "requires": {
+            "agent-base": "6",
+            "debug": "4"
+          }
+        },
+        "lru-cache": {
+          "version": "7.12.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.12.0.tgz",
+          "integrity": "sha512-OIP3DwzRZDfLg9B9VP/huWBlpvbkmbfiBy8xmsXp4RPmE4A3MhwNozc5ZJ3fWnSg8fDcdlE/neRTPG2ycEKliw==",
+          "dev": true
+        },
+        "make-fetch-happen": {
+          "version": "10.1.8",
+          "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.8.tgz",
+          "integrity": "sha512-0ASJbG12Au6+N5I84W+8FhGS6iM8MyzvZady+zaQAu+6IOaESFzCLLD0AR1sAFF3Jufi8bxm586ABN6hWd3k7g==",
+          "dev": true,
+          "requires": {
+            "agentkeepalive": "^4.2.1",
+            "cacache": "^16.1.0",
+            "http-cache-semantics": "^4.1.0",
+            "http-proxy-agent": "^5.0.0",
+            "https-proxy-agent": "^5.0.0",
+            "is-lambda": "^1.0.1",
+            "lru-cache": "^7.7.1",
+            "minipass": "^3.1.6",
+            "minipass-collect": "^1.0.2",
+            "minipass-fetch": "^2.0.3",
+            "minipass-flush": "^1.0.5",
+            "minipass-pipeline": "^1.2.4",
+            "negotiator": "^0.6.3",
+            "promise-retry": "^2.0.1",
+            "socks-proxy-agent": "^7.0.0",
+            "ssri": "^9.0.0"
+          },
+          "dependencies": {
+            "minipass-fetch": {
+              "version": "2.1.0",
+              "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz",
+              "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==",
+              "dev": true,
+              "requires": {
+                "encoding": "^0.1.13",
+                "minipass": "^3.1.6",
+                "minipass-sized": "^1.0.3",
+                "minizlib": "^2.1.2"
+              }
+            }
+          }
+        },
+        "minimatch": {
+          "version": "3.1.2",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+          "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
+        },
+        "minipass": {
+          "version": "3.3.4",
+          "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz",
+          "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
+        "minizlib": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+          "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+          "dev": true,
+          "requires": {
+            "minipass": "^3.0.0",
+            "yallist": "^4.0.0"
+          }
+        },
+        "mkdirp": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+          "dev": true
+        },
+        "negotiator": {
+          "version": "0.6.3",
+          "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+          "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+          "dev": true
+        },
+        "rimraf": {
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+          "dev": true,
+          "requires": {
+            "glob": "^7.1.3"
+          },
+          "dependencies": {
+            "glob": {
+              "version": "7.2.3",
+              "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+              "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+              "dev": true,
+              "requires": {
+                "fs.realpath": "^1.0.0",
+                "inflight": "^1.0.4",
+                "inherits": "2",
+                "minimatch": "^3.1.1",
+                "once": "^1.3.0",
+                "path-is-absolute": "^1.0.0"
+              }
+            }
+          }
+        },
+        "semver": {
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          },
+          "dependencies": {
+            "lru-cache": {
+              "version": "6.0.0",
+              "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+              "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+              "dev": true,
+              "requires": {
+                "yallist": "^4.0.0"
+              }
+            }
+          }
+        },
+        "socks-proxy-agent": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz",
+          "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==",
+          "dev": true,
+          "requires": {
+            "agent-base": "^6.0.2",
+            "debug": "^4.3.3",
+            "socks": "^2.6.2"
+          },
+          "dependencies": {
+            "debug": {
+              "version": "4.3.4",
+              "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+              "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+              "dev": true,
+              "requires": {
+                "ms": "2.1.2"
+              }
+            }
+          }
+        },
+        "ssri": {
+          "version": "9.0.1",
+          "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz",
+          "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==",
+          "dev": true,
+          "requires": {
+            "minipass": "^3.1.1"
+          }
+        },
+        "tar": {
+          "version": "6.1.11",
+          "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz",
+          "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==",
+          "dev": true,
+          "requires": {
+            "chownr": "^2.0.0",
+            "fs-minipass": "^2.0.0",
+            "minipass": "^3.0.0",
+            "minizlib": "^2.1.1",
+            "mkdirp": "^1.0.3",
+            "yallist": "^4.0.0"
+          }
+        }
+      }
+    },
+    "npm-run-path": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+      "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+      "dev": true,
+      "requires": {
+        "path-key": "^3.0.0"
+      },
+      "dependencies": {
+        "path-key": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+          "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+          "dev": true
+        }
+      }
+    },
+    "npmlog": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
+      "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "are-we-there-yet": "~1.1.2",
+        "console-control-strings": "~1.1.0",
+        "gauge": "~2.7.3",
+        "set-blocking": "~2.0.0"
+      }
+    },
+    "nth-check": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+      "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+      "dev": true,
+      "requires": {
+        "boolbase": "^1.0.0"
+      }
     },
-    "object-visit": {
+    "number-is-nan": {
       "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
-      "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
+      "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+      "dev": true,
+      "optional": true
+    },
+    "oauth-sign": {
+      "version": "0.9.0",
+      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+      "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
+      "dev": true
+    },
+    "object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+      "dev": true
+    },
+    "object-is": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+      "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
       "dev": true,
       "requires": {
-        "isobject": "^3.0.0"
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
       }
     },
+    "object-keys": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+      "dev": true
+    },
     "object.assign": {
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
@@ -12568,15 +11968,6 @@
         "object-keys": "^1.1.1"
       }
     },
-    "object.pick": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
-      "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
-      "dev": true,
-      "requires": {
-        "isobject": "^3.0.1"
-      }
-    },
     "obuf": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
@@ -12640,23 +12031,6 @@
       "integrity": "sha512-8DmE2oKayvSkIR3XSZ4+pRliBsx19bSNeIzkTPswY8r4wvjX86bMxsORdqwAwMxE8PefOcSAT2auvi/0TZe9yA==",
       "dev": true
     },
-    "opn": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz",
-      "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==",
-      "dev": true,
-      "requires": {
-        "is-wsl": "^1.1.0"
-      },
-      "dependencies": {
-        "is-wsl": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
-          "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
-          "dev": true
-        }
-      }
-    },
     "ora": {
       "version": "5.4.1",
       "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
@@ -12752,18 +12126,6 @@
       "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
       "dev": true
     },
-    "p-defer": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
-      "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==",
-      "dev": true
-    },
-    "p-finally": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
-      "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
-      "dev": true
-    },
     "p-limit": {
       "version": "2.3.0",
       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
@@ -12792,12 +12154,13 @@
       }
     },
     "p-retry": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz",
-      "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==",
+      "version": "4.6.2",
+      "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz",
+      "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==",
       "dev": true,
       "requires": {
-        "retry": "^0.12.0"
+        "@types/retry": "0.12.0",
+        "retry": "^0.13.1"
       }
     },
     "p-try": {
@@ -12819,9 +12182,9 @@
       }
     },
     "pacote": {
-      "version": "12.0.2",
-      "resolved": "https://registry.npmjs.org/pacote/-/pacote-12.0.2.tgz",
-      "integrity": "sha512-Ar3mhjcxhMzk+OVZ8pbnXdb0l8+pimvlsqBGRNkble2NVgyqOGE3yrCGi/lAYq7E7NRDMz89R1Wx5HIMCGgeYg==",
+      "version": "12.0.3",
+      "resolved": "https://registry.npmjs.org/pacote/-/pacote-12.0.3.tgz",
+      "integrity": "sha512-CdYEl03JDrRO3x18uHjBYA9TyoW8gy+ThVcypcDkxPtKlw76e4ejhYB6i9lJ+/cebbjpqPW/CijjqxwDTts8Ow==",
       "dev": true,
       "requires": {
         "@npmcli/git": "^2.1.0",
@@ -12837,7 +12200,7 @@
         "npm-package-arg": "^8.0.1",
         "npm-packlist": "^3.0.0",
         "npm-pick-manifest": "^6.0.0",
-        "npm-registry-fetch": "^11.0.0",
+        "npm-registry-fetch": "^12.0.0",
         "promise-retry": "^2.0.1",
         "read-package-json-fast": "^2.0.1",
         "rimraf": "^3.0.2",
@@ -12965,18 +12328,6 @@
       "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
       "dev": true
     },
-    "pascalcase": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
-      "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
-      "dev": true
-    },
-    "path-dirname": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
-      "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==",
-      "dev": true
-    },
     "path-exists": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -13003,7 +12354,8 @@
     "path-parse": {
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
-      "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
+      "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
+      "dev": true
     },
     "path-to-regexp": {
       "version": "0.1.7",
@@ -13031,8 +12383,7 @@
     "picocolors": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
-      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
-      "dev": true
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
     },
     "picomatch": {
       "version": "2.2.2",
@@ -13062,9 +12413,9 @@
       }
     },
     "piscina": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.1.0.tgz",
-      "integrity": "sha512-KTW4sjsCD34MHrUbx9eAAbuUSpVj407hQSgk/6Epkg0pbRBmv4a3UX7Sr8wxm9xYqQLnsN4mFOjqGDzHAdgKQg==",
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz",
+      "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==",
       "dev": true,
       "requires": {
         "eventemitter-asyncresource": "^1.0.0",
@@ -13123,933 +12474,216 @@
         }
       }
     },
-    "posix-character-classes": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
-      "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
-      "dev": true
-    },
     "postcss": {
-      "version": "8.3.6",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.6.tgz",
-      "integrity": "sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==",
+      "version": "8.4.5",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz",
+      "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==",
       "dev": true,
       "requires": {
-        "colorette": "^1.2.2",
-        "nanoid": "^3.1.23",
-        "source-map-js": "^0.6.2"
-      },
-      "dependencies": {
-        "source-map-js": {
-          "version": "0.6.2",
-          "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz",
-          "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==",
-          "dev": true
-        }
+        "nanoid": "^3.1.30",
+        "picocolors": "^1.0.0",
+        "source-map-js": "^1.0.1"
       }
     },
     "postcss-attribute-case-insensitive": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz",
-      "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==",
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz",
+      "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==",
       "dev": true,
       "requires": {
-        "postcss": "^7.0.2",
-        "postcss-selector-parser": "^6.0.2"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
+        "postcss-selector-parser": "^6.0.10"
       }
     },
-    "postcss-calc": {
-      "version": "8.2.4",
-      "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz",
-      "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==",
+    "postcss-color-functional-notation": {
+      "version": "4.2.4",
+      "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz",
+      "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==",
       "dev": true,
       "requires": {
-        "postcss-selector-parser": "^6.0.9",
         "postcss-value-parser": "^4.2.0"
       }
     },
-    "postcss-color-functional-notation": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz",
-      "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==",
+    "postcss-color-hex-alpha": {
+      "version": "8.0.4",
+      "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz",
+      "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==",
       "dev": true,
       "requires": {
-        "postcss": "^7.0.2",
-        "postcss-values-parser": "^2.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
+        "postcss-value-parser": "^4.2.0"
       }
     },
-    "postcss-color-gray": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz",
-      "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==",
+    "postcss-color-rebeccapurple": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz",
+      "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==",
       "dev": true,
       "requires": {
-        "@csstools/convert-colors": "^1.4.0",
-        "postcss": "^7.0.5",
-        "postcss-values-parser": "^2.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
+        "postcss-value-parser": "^4.2.0"
       }
     },
-    "postcss-color-hex-alpha": {
-      "version": "5.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz",
-      "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==",
+    "postcss-custom-media": {
+      "version": "8.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz",
+      "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==",
       "dev": true,
       "requires": {
-        "postcss": "^7.0.14",
-        "postcss-values-parser": "^2.0.1"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
+        "postcss-value-parser": "^4.2.0"
       }
     },
-    "postcss-color-mod-function": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz",
-      "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==",
+    "postcss-custom-properties": {
+      "version": "12.1.8",
+      "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.8.tgz",
+      "integrity": "sha512-8rbj8kVu00RQh2fQF81oBqtduiANu4MIxhyf0HbbStgPtnFlWn0yiaYTpLHrPnJbffVY1s9apWsIoVZcc68FxA==",
       "dev": true,
       "requires": {
-        "@csstools/convert-colors": "^1.4.0",
-        "postcss": "^7.0.2",
-        "postcss-values-parser": "^2.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
+        "postcss-value-parser": "^4.2.0"
       }
     },
-    "postcss-color-rebeccapurple": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz",
-      "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==",
+    "postcss-custom-selectors": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz",
+      "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==",
       "dev": true,
       "requires": {
-        "postcss": "^7.0.2",
-        "postcss-values-parser": "^2.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
+        "postcss-selector-parser": "^6.0.4"
       }
     },
-    "postcss-colormin": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz",
-      "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==",
+    "postcss-dir-pseudo-class": {
+      "version": "6.0.5",
+      "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz",
+      "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==",
       "dev": true,
       "requires": {
-        "browserslist": "^4.16.6",
-        "caniuse-api": "^3.0.0",
-        "colord": "^2.9.1",
-        "postcss-value-parser": "^4.2.0"
+        "postcss-selector-parser": "^6.0.10"
       }
     },
-    "postcss-convert-values": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz",
-      "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==",
+    "postcss-double-position-gradients": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz",
+      "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==",
       "dev": true,
       "requires": {
-        "browserslist": "^4.20.3",
+        "@csstools/postcss-progressive-custom-properties": "^1.1.0",
         "postcss-value-parser": "^4.2.0"
       }
     },
-    "postcss-custom-media": {
-      "version": "7.0.8",
-      "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz",
-      "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==",
+    "postcss-env-function": {
+      "version": "4.0.6",
+      "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz",
+      "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==",
       "dev": true,
       "requires": {
-        "postcss": "^7.0.14"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
+        "postcss-value-parser": "^4.2.0"
       }
     },
-    "postcss-custom-properties": {
-      "version": "8.0.11",
-      "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz",
-      "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==",
+    "postcss-focus-visible": {
+      "version": "6.0.4",
+      "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz",
+      "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==",
       "dev": true,
       "requires": {
-        "postcss": "^7.0.17",
-        "postcss-values-parser": "^2.0.1"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
+        "postcss-selector-parser": "^6.0.9"
       }
     },
-    "postcss-custom-selectors": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz",
-      "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==",
+    "postcss-focus-within": {
+      "version": "5.0.4",
+      "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz",
+      "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==",
       "dev": true,
       "requires": {
-        "postcss": "^7.0.2",
-        "postcss-selector-parser": "^5.0.0-rc.3"
-      },
-      "dependencies": {
-        "cssesc": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
-          "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
-          "dev": true
-        },
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-selector-parser": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
-          "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
-          "dev": true,
-          "requires": {
-            "cssesc": "^2.0.0",
-            "indexes-of": "^1.0.1",
-            "uniq": "^1.0.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
+        "postcss-selector-parser": "^6.0.9"
       }
     },
-    "postcss-dir-pseudo-class": {
+    "postcss-font-variant": {
       "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz",
-      "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==",
+      "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz",
+      "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==",
+      "dev": true
+    },
+    "postcss-gap-properties": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.4.tgz",
+      "integrity": "sha512-PaEM4AUQY7uomyuVVXsIntdo4eT8VkBMrSinQxvXuMcJ1z3RHlFw4Kqef2X+rRVz3WHaYCa0EEtwousBT6vcIA==",
+      "dev": true
+    },
+    "postcss-image-set-function": {
+      "version": "4.0.7",
+      "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz",
+      "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==",
+      "dev": true,
+      "requires": {
+        "postcss-value-parser": "^4.2.0"
+      }
+    },
+    "postcss-import": {
+      "version": "14.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.2.tgz",
+      "integrity": "sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==",
+      "dev": true,
+      "requires": {
+        "postcss-value-parser": "^4.0.0",
+        "read-cache": "^1.0.0",
+        "resolve": "^1.1.7"
+      }
+    },
+    "postcss-initial": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz",
+      "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==",
+      "dev": true
+    },
+    "postcss-lab-function": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz",
+      "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==",
+      "dev": true,
+      "requires": {
+        "@csstools/postcss-progressive-custom-properties": "^1.1.0",
+        "postcss-value-parser": "^4.2.0"
+      }
+    },
+    "postcss-loader": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz",
+      "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==",
       "dev": true,
       "requires": {
-        "postcss": "^7.0.2",
-        "postcss-selector-parser": "^5.0.0-rc.3"
+        "cosmiconfig": "^7.0.0",
+        "klona": "^2.0.5",
+        "semver": "^7.3.5"
       },
       "dependencies": {
-        "cssesc": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
-          "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
-          "dev": true
-        },
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
           "dev": true,
           "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
+            "yallist": "^4.0.0"
           }
         },
-        "postcss-selector-parser": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
-          "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
+        "semver": {
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
           "dev": true,
           "requires": {
-            "cssesc": "^2.0.0",
-            "indexes-of": "^1.0.1",
-            "uniq": "^1.0.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-discard-comments": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz",
-      "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==",
-      "dev": true
-    },
-    "postcss-discard-duplicates": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz",
-      "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==",
-      "dev": true
-    },
-    "postcss-discard-empty": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz",
-      "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==",
-      "dev": true
-    },
-    "postcss-discard-overridden": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz",
-      "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==",
-      "dev": true
-    },
-    "postcss-double-position-gradients": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz",
-      "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.5",
-        "postcss-values-parser": "^2.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-env-function": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz",
-      "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.2",
-        "postcss-values-parser": "^2.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-focus-visible": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz",
-      "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.2"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-focus-within": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz",
-      "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.2"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-font-variant": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz",
-      "integrity": "sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.2"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-gap-properties": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz",
-      "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.2"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-image-set-function": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz",
-      "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.2",
-        "postcss-values-parser": "^2.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-import": {
-      "version": "14.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.2.tgz",
-      "integrity": "sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==",
-      "dev": true,
-      "requires": {
-        "postcss-value-parser": "^4.0.0",
-        "read-cache": "^1.0.0",
-        "resolve": "^1.1.7"
-      }
-    },
-    "postcss-initial": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.4.tgz",
-      "integrity": "sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.2"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-lab-function": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz",
-      "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==",
-      "dev": true,
-      "requires": {
-        "@csstools/convert-colors": "^1.4.0",
-        "postcss": "^7.0.2",
-        "postcss-values-parser": "^2.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-loader": {
-      "version": "6.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.1.1.tgz",
-      "integrity": "sha512-lBmJMvRh1D40dqpWKr9Rpygwxn8M74U9uaCSeYGNKLGInbk9mXBt1ultHf2dH9Ghk6Ue4UXlXWwGMH9QdUJ5ug==",
-      "dev": true,
-      "requires": {
-        "cosmiconfig": "^7.0.0",
-        "klona": "^2.0.4",
-        "semver": "^7.3.5"
-      },
-      "dependencies": {
-        "lru-cache": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-          "dev": true,
-          "requires": {
-            "yallist": "^4.0.0"
-          }
-        },
-        "semver": {
-          "version": "7.3.7",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
-          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
+            "lru-cache": "^6.0.0"
           }
         }
       }
     },
     "postcss-logical": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz",
-      "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.2"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
+      "version": "5.0.4",
+      "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz",
+      "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==",
+      "dev": true
     },
     "postcss-media-minmax": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz",
-      "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.2"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-merge-longhand": {
-      "version": "5.1.6",
-      "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz",
-      "integrity": "sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==",
-      "dev": true,
-      "requires": {
-        "postcss-value-parser": "^4.2.0",
-        "stylehacks": "^5.1.0"
-      }
-    },
-    "postcss-merge-rules": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz",
-      "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==",
-      "dev": true,
-      "requires": {
-        "browserslist": "^4.16.6",
-        "caniuse-api": "^3.0.0",
-        "cssnano-utils": "^3.1.0",
-        "postcss-selector-parser": "^6.0.5"
-      }
-    },
-    "postcss-minify-font-values": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz",
-      "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==",
-      "dev": true,
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "postcss-minify-gradients": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz",
-      "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==",
-      "dev": true,
-      "requires": {
-        "colord": "^2.9.1",
-        "cssnano-utils": "^3.1.0",
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "postcss-minify-params": {
-      "version": "5.1.3",
-      "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz",
-      "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==",
-      "dev": true,
-      "requires": {
-        "browserslist": "^4.16.6",
-        "cssnano-utils": "^3.1.0",
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "postcss-minify-selectors": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz",
-      "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==",
-      "dev": true,
-      "requires": {
-        "postcss-selector-parser": "^6.0.5"
-      }
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz",
+      "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==",
+      "dev": true
     },
     "postcss-modules-extract-imports": {
       "version": "3.0.0",
@@ -14081,472 +12715,108 @@
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
       "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
-      "dev": true,
-      "requires": {
-        "icss-utils": "^5.0.0"
-      }
-    },
-    "postcss-nesting": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz",
-      "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.2"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-normalize-charset": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz",
-      "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==",
-      "dev": true
-    },
-    "postcss-normalize-display-values": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz",
-      "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==",
-      "dev": true,
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "postcss-normalize-positions": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz",
-      "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==",
-      "dev": true,
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "postcss-normalize-repeat-style": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz",
-      "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==",
-      "dev": true,
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "postcss-normalize-string": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz",
-      "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==",
-      "dev": true,
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "postcss-normalize-timing-functions": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz",
-      "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==",
-      "dev": true,
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "postcss-normalize-unicode": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz",
-      "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==",
-      "dev": true,
-      "requires": {
-        "browserslist": "^4.16.6",
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "postcss-normalize-url": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz",
-      "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==",
-      "dev": true,
-      "requires": {
-        "normalize-url": "^6.0.1",
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "postcss-normalize-whitespace": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz",
-      "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==",
-      "dev": true,
-      "requires": {
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "postcss-ordered-values": {
-      "version": "5.1.3",
-      "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz",
-      "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==",
-      "dev": true,
-      "requires": {
-        "cssnano-utils": "^3.1.0",
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "postcss-overflow-shorthand": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz",
-      "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.2"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-page-break": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz",
-      "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.2"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-place": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz",
-      "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.2",
-        "postcss-values-parser": "^2.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-preset-env": {
-      "version": "6.7.0",
-      "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz",
-      "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==",
-      "dev": true,
-      "requires": {
-        "autoprefixer": "^9.6.1",
-        "browserslist": "^4.6.4",
-        "caniuse-lite": "^1.0.30000981",
-        "css-blank-pseudo": "^0.1.4",
-        "css-has-pseudo": "^0.10.0",
-        "css-prefers-color-scheme": "^3.1.1",
-        "cssdb": "^4.4.0",
-        "postcss": "^7.0.17",
-        "postcss-attribute-case-insensitive": "^4.0.1",
-        "postcss-color-functional-notation": "^2.0.1",
-        "postcss-color-gray": "^5.0.0",
-        "postcss-color-hex-alpha": "^5.0.3",
-        "postcss-color-mod-function": "^3.0.3",
-        "postcss-color-rebeccapurple": "^4.0.1",
-        "postcss-custom-media": "^7.0.8",
-        "postcss-custom-properties": "^8.0.11",
-        "postcss-custom-selectors": "^5.1.2",
-        "postcss-dir-pseudo-class": "^5.0.0",
-        "postcss-double-position-gradients": "^1.0.0",
-        "postcss-env-function": "^2.0.2",
-        "postcss-focus-visible": "^4.0.0",
-        "postcss-focus-within": "^3.0.0",
-        "postcss-font-variant": "^4.0.0",
-        "postcss-gap-properties": "^2.0.0",
-        "postcss-image-set-function": "^3.0.1",
-        "postcss-initial": "^3.0.0",
-        "postcss-lab-function": "^2.0.1",
-        "postcss-logical": "^3.0.0",
-        "postcss-media-minmax": "^4.0.0",
-        "postcss-nesting": "^7.0.0",
-        "postcss-overflow-shorthand": "^2.0.0",
-        "postcss-page-break": "^2.0.0",
-        "postcss-place": "^4.0.1",
-        "postcss-pseudo-class-any-link": "^6.0.0",
-        "postcss-replace-overflow-wrap": "^3.0.0",
-        "postcss-selector-matches": "^4.0.0",
-        "postcss-selector-not": "^4.0.0"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "postcss-pseudo-class-any-link": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz",
-      "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==",
-      "dev": true,
-      "requires": {
-        "postcss": "^7.0.2",
-        "postcss-selector-parser": "^5.0.0-rc.3"
-      },
-      "dependencies": {
-        "cssesc": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
-          "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
-          "dev": true
-        },
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "postcss-selector-parser": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
-          "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
-          "dev": true,
-          "requires": {
-            "cssesc": "^2.0.0",
-            "indexes-of": "^1.0.1",
-            "uniq": "^1.0.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
+      "dev": true,
+      "requires": {
+        "icss-utils": "^5.0.0"
       }
     },
-    "postcss-reduce-initial": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz",
-      "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==",
+    "postcss-nesting": {
+      "version": "10.1.10",
+      "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.10.tgz",
+      "integrity": "sha512-lqd7LXCq0gWc0wKXtoKDru5wEUNjm3OryLVNRZ8OnW8km6fSNUuFrjEhU3nklxXE2jvd4qrox566acgh+xQt8w==",
       "dev": true,
       "requires": {
-        "browserslist": "^4.16.6",
-        "caniuse-api": "^3.0.0"
+        "@csstools/selector-specificity": "^2.0.0",
+        "postcss-selector-parser": "^6.0.10"
       }
     },
-    "postcss-reduce-transforms": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz",
-      "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==",
+    "postcss-overflow-shorthand": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz",
+      "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==",
       "dev": true,
       "requires": {
         "postcss-value-parser": "^4.2.0"
       }
     },
-    "postcss-replace-overflow-wrap": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz",
-      "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==",
+    "postcss-page-break": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz",
+      "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==",
+      "dev": true
+    },
+    "postcss-place": {
+      "version": "7.0.5",
+      "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz",
+      "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==",
       "dev": true,
       "requires": {
-        "postcss": "^7.0.2"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
+        "postcss-value-parser": "^4.2.0"
       }
     },
-    "postcss-selector-matches": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz",
-      "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==",
+    "postcss-preset-env": {
+      "version": "7.2.3",
+      "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.2.3.tgz",
+      "integrity": "sha512-Ok0DhLfwrcNGrBn8sNdy1uZqWRk/9FId0GiQ39W4ILop5GHtjJs8bu1MY9isPwHInpVEPWjb4CEcEaSbBLpfwA==",
+      "dev": true,
+      "requires": {
+        "autoprefixer": "^10.4.2",
+        "browserslist": "^4.19.1",
+        "caniuse-lite": "^1.0.30001299",
+        "css-blank-pseudo": "^3.0.2",
+        "css-has-pseudo": "^3.0.3",
+        "css-prefers-color-scheme": "^6.0.2",
+        "cssdb": "^5.0.0",
+        "postcss-attribute-case-insensitive": "^5.0.0",
+        "postcss-color-functional-notation": "^4.2.1",
+        "postcss-color-hex-alpha": "^8.0.2",
+        "postcss-color-rebeccapurple": "^7.0.2",
+        "postcss-custom-media": "^8.0.0",
+        "postcss-custom-properties": "^12.1.2",
+        "postcss-custom-selectors": "^6.0.0",
+        "postcss-dir-pseudo-class": "^6.0.3",
+        "postcss-double-position-gradients": "^3.0.4",
+        "postcss-env-function": "^4.0.4",
+        "postcss-focus-visible": "^6.0.3",
+        "postcss-focus-within": "^5.0.3",
+        "postcss-font-variant": "^5.0.0",
+        "postcss-gap-properties": "^3.0.2",
+        "postcss-image-set-function": "^4.0.4",
+        "postcss-initial": "^4.0.1",
+        "postcss-lab-function": "^4.0.3",
+        "postcss-logical": "^5.0.3",
+        "postcss-media-minmax": "^5.0.0",
+        "postcss-nesting": "^10.1.2",
+        "postcss-overflow-shorthand": "^3.0.2",
+        "postcss-page-break": "^3.0.4",
+        "postcss-place": "^7.0.3",
+        "postcss-pseudo-class-any-link": "^7.0.2",
+        "postcss-replace-overflow-wrap": "^4.0.0",
+        "postcss-selector-not": "^5.0.0"
+      }
+    },
+    "postcss-pseudo-class-any-link": {
+      "version": "7.1.6",
+      "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz",
+      "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==",
       "dev": true,
       "requires": {
-        "balanced-match": "^1.0.0",
-        "postcss": "^7.0.2"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
+        "postcss-selector-parser": "^6.0.10"
       }
     },
+    "postcss-replace-overflow-wrap": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz",
+      "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==",
+      "dev": true
+    },
     "postcss-selector-not": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz",
-      "integrity": "sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ==",
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-5.0.0.tgz",
+      "integrity": "sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ==",
       "dev": true,
       "requires": {
-        "balanced-match": "^1.0.0",
-        "postcss": "^7.0.2"
-      },
-      "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
-          "dev": true,
-          "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
+        "balanced-match": "^1.0.0"
       }
     },
     "postcss-selector-parser": {
@@ -14559,42 +12829,12 @@
         "util-deprecate": "^1.0.2"
       }
     },
-    "postcss-svgo": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz",
-      "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==",
-      "dev": true,
-      "requires": {
-        "postcss-value-parser": "^4.2.0",
-        "svgo": "^2.7.0"
-      }
-    },
-    "postcss-unique-selectors": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz",
-      "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==",
-      "dev": true,
-      "requires": {
-        "postcss-selector-parser": "^6.0.5"
-      }
-    },
     "postcss-value-parser": {
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
       "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
       "dev": true
     },
-    "postcss-values-parser": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz",
-      "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==",
-      "dev": true,
-      "requires": {
-        "flatten": "^1.0.2",
-        "indexes-of": "^1.0.1",
-        "uniq": "^1.0.1"
-      }
-    },
     "pretty-bytes": {
       "version": "5.6.0",
       "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
@@ -14638,6 +12878,14 @@
       "requires": {
         "err-code": "^2.0.2",
         "retry": "^0.12.0"
+      },
+      "dependencies": {
+        "retry": {
+          "version": "0.12.0",
+          "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
+          "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
+          "dev": true
+        }
       }
     },
     "protobufjs": {
@@ -14851,7 +13099,8 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
       "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
-      "dev": true
+      "dev": true,
+      "optional": true
     },
     "psl": {
       "version": "1.8.0",
@@ -14896,18 +13145,6 @@
       "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
       "dev": true
     },
-    "querystring": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
-      "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==",
-      "dev": true
-    },
-    "querystringify": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
-      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
-      "dev": true
-    },
     "queue-microtask": {
       "version": "1.2.3",
       "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -15074,16 +13311,6 @@
         "@babel/runtime": "^7.8.4"
       }
     },
-    "regex-not": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
-      "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
-      "dev": true,
-      "requires": {
-        "extend-shallow": "^3.0.2",
-        "safe-regex": "^1.1.0"
-      }
-    },
     "regex-parser": {
       "version": "2.2.11",
       "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz",
@@ -15156,24 +13383,6 @@
         }
       }
     },
-    "remove-trailing-separator": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
-      "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==",
-      "dev": true
-    },
-    "repeat-element": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
-      "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
-      "dev": true
-    },
-    "repeat-string": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
-      "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
-      "dev": true
-    },
     "request": {
       "version": "2.88.2",
       "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
@@ -15229,67 +13438,40 @@
       "version": "1.19.0",
       "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz",
       "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==",
+      "dev": true,
       "requires": {
         "is-core-module": "^2.1.0",
         "path-parse": "^1.0.6"
       }
     },
-    "resolve-cwd": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
-      "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==",
-      "dev": true,
-      "requires": {
-        "resolve-from": "^3.0.0"
-      },
-      "dependencies": {
-        "resolve-from": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
-          "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
-          "dev": true
-        }
-      }
-    },
     "resolve-from": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
-      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
-      "dev": true
-    },
-    "resolve-url": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
-      "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+      "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
       "dev": true
     },
     "resolve-url-loader": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz",
-      "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==",
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz",
+      "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==",
       "dev": true,
       "requires": {
         "adjust-sourcemap-loader": "^4.0.0",
         "convert-source-map": "^1.7.0",
         "loader-utils": "^2.0.0",
-        "postcss": "^7.0.35",
+        "postcss": "^8.2.14",
         "source-map": "0.6.1"
       },
       "dependencies": {
-        "picocolors": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
-          "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "7.0.39",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
-          "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+        "loader-utils": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz",
+          "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==",
           "dev": true,
           "requires": {
-            "picocolors": "^0.2.1",
-            "source-map": "^0.6.1"
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^2.1.2"
           }
         },
         "source-map": {
@@ -15319,16 +13501,10 @@
         "signal-exit": "^3.0.2"
       }
     },
-    "ret": {
-      "version": "0.1.15",
-      "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
-      "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
-      "dev": true
-    },
     "retry": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
-      "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
+      "version": "0.13.1",
+      "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
+      "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
       "dev": true
     },
     "retry-request": {
@@ -15446,15 +13622,6 @@
       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
       "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
     },
-    "safe-regex": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
-      "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
-      "dev": true,
-      "requires": {
-        "ret": "~0.1.10"
-      }
-    },
     "safer-buffer": {
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
@@ -15462,18 +13629,20 @@
       "dev": true
     },
     "sass": {
-      "version": "1.36.0",
-      "resolved": "https://registry.npmjs.org/sass/-/sass-1.36.0.tgz",
-      "integrity": "sha512-fQzEjipfOv5kh930nu3Imzq3ie/sGDc/4KtQMJlt7RRdrkQSfe37Bwi/Rf/gfuYHsIuE1fIlDMvpyMcEwjnPvg==",
+      "version": "1.49.9",
+      "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.9.tgz",
+      "integrity": "sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==",
       "dev": true,
       "requires": {
-        "chokidar": ">=3.0.0 <4.0.0"
+        "chokidar": ">=3.0.0 <4.0.0",
+        "immutable": "^4.0.0",
+        "source-map-js": ">=0.6.2 <2.0.0"
       }
     },
     "sass-loader": {
-      "version": "12.1.0",
-      "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.1.0.tgz",
-      "integrity": "sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg==",
+      "version": "12.4.0",
+      "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.4.0.tgz",
+      "integrity": "sha512-7xN+8khDIzym1oL9XyS6zP6Ges+Bo2B2xbPrjdMHEYyV3AQYhd/wXeru++3ODHF0zMjYmVadblSKrPrjEkL8mg==",
       "dev": true,
       "requires": {
         "klona": "^2.0.4",
@@ -15559,12 +13728,20 @@
       }
     },
     "selfsigned": {
-      "version": "1.10.14",
-      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz",
-      "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz",
+      "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==",
       "dev": true,
       "requires": {
-        "node-forge": "^0.10.0"
+        "node-forge": "^1"
+      },
+      "dependencies": {
+        "node-forge": {
+          "version": "1.3.1",
+          "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
+          "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
+          "dev": true
+        }
       }
     },
     "semver": {
@@ -15727,29 +13904,6 @@
       "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
       "dev": true
     },
-    "set-value": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
-      "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
-      "dev": true,
-      "requires": {
-        "extend-shallow": "^2.0.1",
-        "is-extendable": "^0.1.1",
-        "is-plain-object": "^2.0.3",
-        "split-string": "^3.0.1"
-      },
-      "dependencies": {
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        }
-      }
-    },
     "setimmediate": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
@@ -15765,190 +13919,62 @@
     "shallow-clone": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
-      "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
-      "dev": true,
-      "requires": {
-        "kind-of": "^6.0.2"
-      }
-    },
-    "shebang-command": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
-      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
-      "dev": true,
-      "requires": {
-        "shebang-regex": "^1.0.0"
-      }
-    },
-    "shebang-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
-      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
-      "dev": true
-    },
-    "signal-exit": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
-      "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
-      "dev": true
-    },
-    "simple-swizzle": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
-      "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
-      "dev": true,
-      "requires": {
-        "is-arrayish": "^0.3.1"
-      },
-      "dependencies": {
-        "is-arrayish": {
-          "version": "0.3.2",
-          "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
-          "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
-          "dev": true
-        }
-      }
-    },
-    "slash": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-      "dev": true
-    },
-    "smart-buffer": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
-      "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
-      "dev": true
-    },
-    "snapdragon": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
-      "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
-      "dev": true,
-      "requires": {
-        "base": "^0.11.1",
-        "debug": "^2.2.0",
-        "define-property": "^0.2.5",
-        "extend-shallow": "^2.0.1",
-        "map-cache": "^0.2.2",
-        "source-map": "^0.5.6",
-        "source-map-resolve": "^0.5.0",
-        "use": "^3.1.0"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
-          "dev": true
-        }
+      "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
+      "dev": true,
+      "requires": {
+        "kind-of": "^6.0.2"
       }
     },
-    "snapdragon-node": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
-      "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+    "shebang-command": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
       "dev": true,
       "requires": {
-        "define-property": "^1.0.0",
-        "isobject": "^3.0.0",
-        "snapdragon-util": "^3.0.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^1.0.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
+        "shebang-regex": "^1.0.0"
       }
     },
-    "snapdragon-util": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
-      "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+    "shebang-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+      "dev": true
+    },
+    "signal-exit": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
+      "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
+      "dev": true
+    },
+    "simple-swizzle": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+      "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
       "dev": true,
       "requires": {
-        "kind-of": "^3.2.0"
+        "is-arrayish": "^0.3.1"
       },
       "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
+        "is-arrayish": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+          "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
+          "dev": true
         }
       }
     },
+    "slash": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
+      "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
+      "dev": true
+    },
+    "smart-buffer": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+      "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+      "dev": true
+    },
     "socket.io": {
       "version": "4.5.1",
       "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.1.tgz",
@@ -16010,30 +14036,6 @@
         }
       }
     },
-    "sockjs-client": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz",
-      "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==",
-      "dev": true,
-      "requires": {
-        "debug": "^3.2.7",
-        "eventsource": "^2.0.2",
-        "faye-websocket": "^0.11.4",
-        "inherits": "^2.0.4",
-        "url-parse": "^1.5.10"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.2.7",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-          "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-          "dev": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        }
-      }
-    },
     "socks": {
       "version": "2.6.2",
       "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz",
@@ -16075,12 +14077,6 @@
         }
       }
     },
-    "source-list-map": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
-      "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
-      "dev": true
-    },
     "source-map": {
       "version": "0.7.3",
       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
@@ -16094,14 +14090,14 @@
       "dev": true
     },
     "source-map-loader": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.0.tgz",
-      "integrity": "sha512-GKGWqWvYr04M7tn8dryIWvb0s8YM41z82iQv01yBtIylgxax0CwvSy6gc2Y02iuXwEfGWRlMicH0nvms9UZphw==",
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.1.tgz",
+      "integrity": "sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA==",
       "dev": true,
       "requires": {
         "abab": "^2.0.5",
-        "iconv-lite": "^0.6.2",
-        "source-map-js": "^0.6.2"
+        "iconv-lite": "^0.6.3",
+        "source-map-js": "^1.0.1"
       },
       "dependencies": {
         "iconv-lite": {
@@ -16112,26 +14108,17 @@
           "requires": {
             "safer-buffer": ">= 2.1.2 < 3.0.0"
           }
-        },
-        "source-map-js": {
-          "version": "0.6.2",
-          "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz",
-          "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==",
-          "dev": true
         }
       }
     },
     "source-map-resolve": {
-      "version": "0.5.3",
-      "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
-      "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz",
+      "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==",
       "dev": true,
       "requires": {
         "atob": "^2.1.2",
-        "decode-uri-component": "^0.2.0",
-        "resolve-url": "^0.2.1",
-        "source-map-url": "^0.4.0",
-        "urix": "^0.1.0"
+        "decode-uri-component": "^0.2.0"
       }
     },
     "source-map-support": {
@@ -16152,12 +14139,6 @@
         }
       }
     },
-    "source-map-url": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
-      "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
-      "dev": true
-    },
     "sourcemap-codec": {
       "version": "1.4.8",
       "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
@@ -16204,15 +14185,6 @@
         }
       }
     },
-    "split-string": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
-      "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
-      "dev": true,
-      "requires": {
-        "extend-shallow": "^3.0.0"
-      }
-    },
     "sprintf-js": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
@@ -16245,39 +14217,12 @@
         "minipass": "^3.1.1"
       }
     },
-    "stable": {
-      "version": "0.1.8",
-      "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
-      "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
-      "dev": true
-    },
     "stack-trace": {
       "version": "0.0.10",
       "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
       "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
       "dev": true
     },
-    "static-extend": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
-      "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
-      "dev": true,
-      "requires": {
-        "define-property": "^0.2.5",
-        "object-copy": "^0.1.0"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        }
-      }
-    },
     "statuses": {
       "version": "1.5.0",
       "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
@@ -16393,10 +14338,10 @@
         "ansi-regex": "^2.0.0"
       }
     },
-    "strip-eof": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
-      "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
+    "strip-final-newline": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+      "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
       "dev": true
     },
     "strip-json-comments": {
@@ -16405,45 +14350,27 @@
       "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
       "dev": true
     },
-    "style-loader": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.2.1.tgz",
-      "integrity": "sha512-1k9ZosJCRFaRbY6hH49JFlRB0fVSbmnyq1iTPjNxUmGVjBNEmwrrHPenhlp+Lgo51BojHSf6pl2FcqYaN3PfVg==",
-      "dev": true
-    },
-    "stylehacks": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz",
-      "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==",
-      "dev": true,
-      "requires": {
-        "browserslist": "^4.16.6",
-        "postcss-selector-parser": "^6.0.4"
-      }
-    },
     "stylus": {
-      "version": "0.54.8",
-      "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz",
-      "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==",
+      "version": "0.56.0",
+      "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.56.0.tgz",
+      "integrity": "sha512-Ev3fOb4bUElwWu4F9P9WjnnaSpc8XB9OFHSFZSKMFL1CE1oM+oFXWEgAqPmmZIyhBihuqIQlFsVTypiiS9RxeA==",
       "dev": true,
       "requires": {
-        "css-parse": "~2.0.0",
-        "debug": "~3.1.0",
+        "css": "^3.0.0",
+        "debug": "^4.3.2",
         "glob": "^7.1.6",
-        "mkdirp": "~1.0.4",
         "safer-buffer": "^2.1.2",
         "sax": "~1.2.4",
-        "semver": "^6.3.0",
         "source-map": "^0.7.3"
       },
       "dependencies": {
         "debug": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "version": "4.3.4",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+          "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
           "dev": true,
           "requires": {
-            "ms": "2.0.0"
+            "ms": "2.1.2"
           }
         },
         "glob": {
@@ -16468,28 +14395,16 @@
           "requires": {
             "brace-expansion": "^1.1.7"
           }
-        },
-        "mkdirp": {
-          "version": "1.0.4",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
-          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
-          "dev": true
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
-          "dev": true
         }
       }
     },
     "stylus-loader": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-6.1.0.tgz",
-      "integrity": "sha512-qKO34QCsOtSJrXxQQmXsPeaVHh6hMumBAFIoJTcsSr2VzrA6o/CW9HCGR8spCjzJhN8oKQHdj/Ytx0wwXyElkw==",
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-6.2.0.tgz",
+      "integrity": "sha512-5dsDc7qVQGRoc6pvCL20eYgRUxepZ9FpeK28XhdXaIPP6kXr6nI1zAAKFQgP5OBkOfKaURp4WUpJzspg1f01Gg==",
       "dev": true,
       "requires": {
-        "fast-glob": "^3.2.5",
+        "fast-glob": "^3.2.7",
         "klona": "^2.0.4",
         "normalize-path": "^3.0.0"
       }
@@ -16606,6 +14521,12 @@
         }
       }
     },
+    "supports-preserve-symlinks-flag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+      "dev": true
+    },
     "svg.draggable.js": {
       "version": "2.2.2",
       "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz",
@@ -16670,29 +14591,6 @@
         "svg.js": "^2.6.5"
       }
     },
-    "svgo": {
-      "version": "2.8.0",
-      "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz",
-      "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==",
-      "dev": true,
-      "requires": {
-        "@trysound/sax": "0.2.0",
-        "commander": "^7.2.0",
-        "css-select": "^4.1.3",
-        "css-tree": "^1.1.3",
-        "csso": "^4.2.0",
-        "picocolors": "^1.0.0",
-        "stable": "^0.1.8"
-      },
-      "dependencies": {
-        "commander": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
-          "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
-          "dev": true
-        }
-      }
-    },
     "sweetalert2": {
       "version": "10.13.3",
       "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-10.13.3.tgz",
@@ -16795,14 +14693,15 @@
       "dev": true
     },
     "terser": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz",
-      "integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==",
+      "version": "5.11.0",
+      "resolved": "https://registry.npmjs.org/terser/-/terser-5.11.0.tgz",
+      "integrity": "sha512-uCA9DLanzzWSsN1UirKwylhhRz3aKPInlfmpGfw8VN6jHsAtu8HJtIpeeHHK23rxnE/cDc+yvmq5wqkIC6Kn0A==",
       "dev": true,
       "requires": {
+        "acorn": "^8.5.0",
         "commander": "^2.20.0",
         "source-map": "~0.7.2",
-        "source-map-support": "~0.5.19"
+        "source-map-support": "~0.5.20"
       },
       "dependencies": {
         "source-map-support": {
@@ -16826,17 +14725,16 @@
       }
     },
     "terser-webpack-plugin": {
-      "version": "5.1.4",
-      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.4.tgz",
-      "integrity": "sha512-C2WkFwstHDhVEmsmlCxrXUtVklS+Ir1A7twrYzrDrQQOIMOaVAYykaoo/Aq1K0QRkMoY2hhvDQY1cm4jnIMFwA==",
+      "version": "5.3.3",
+      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz",
+      "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==",
       "dev": true,
       "requires": {
-        "jest-worker": "^27.0.2",
-        "p-limit": "^3.1.0",
-        "schema-utils": "^3.0.0",
+        "@jridgewell/trace-mapping": "^0.3.7",
+        "jest-worker": "^27.4.5",
+        "schema-utils": "^3.1.1",
         "serialize-javascript": "^6.0.0",
-        "source-map": "^0.6.1",
-        "terser": "^5.7.0"
+        "terser": "^5.7.2"
       },
       "dependencies": {
         "ajv": {
@@ -16851,15 +14749,6 @@
             "uri-js": "^4.2.2"
           }
         },
-        "p-limit": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
-          "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
-          "dev": true,
-          "requires": {
-            "yocto-queue": "^0.1.0"
-          }
-        },
         "schema-utils": {
           "version": "3.1.1",
           "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
@@ -16870,15 +14759,20 @@
             "ajv": "^6.12.5",
             "ajv-keywords": "^3.5.2"
           }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
         }
       }
     },
+    "test-exclude": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
+      "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+      "dev": true,
+      "requires": {
+        "@istanbuljs/schema": "^0.1.2",
+        "glob": "^7.1.4",
+        "minimatch": "^3.0.4"
+      }
+    },
     "text-hex": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
@@ -16927,44 +14821,12 @@
       "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
       "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
     },
-    "to-object-path": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
-      "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
-      "dev": true,
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
     "to-readable-stream": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
       "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
       "dev": true
     },
-    "to-regex": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
-      "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
-      "dev": true,
-      "requires": {
-        "define-property": "^2.0.2",
-        "extend-shallow": "^3.0.2",
-        "regex-not": "^1.0.2",
-        "safe-regex": "^1.1.0"
-      }
-    },
     "to-regex-range": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -17142,6 +15004,12 @@
         "mime-types": "~2.1.24"
       }
     },
+    "typed-assert": {
+      "version": "1.0.9",
+      "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz",
+      "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==",
+      "dev": true
+    },
     "typedarray-to-buffer": {
       "version": "3.1.5",
       "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
@@ -17152,9 +15020,9 @@
       }
     },
     "typescript": {
-      "version": "4.3.5",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz",
-      "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==",
+      "version": "4.6.4",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz",
+      "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==",
       "dev": true
     },
     "ua-parser-js": {
@@ -17196,24 +15064,6 @@
       "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==",
       "dev": true
     },
-    "union-value": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
-      "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
-      "dev": true,
-      "requires": {
-        "arr-union": "^3.1.0",
-        "get-value": "^2.0.6",
-        "is-extendable": "^0.1.1",
-        "set-value": "^2.0.1"
-      }
-    },
-    "uniq": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
-      "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==",
-      "dev": true
-    },
     "unique-filename": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
@@ -17264,46 +15114,6 @@
       "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
       "dev": true
     },
-    "unset-value": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
-      "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
-      "dev": true,
-      "requires": {
-        "has-value": "^0.3.1",
-        "isobject": "^3.0.0"
-      },
-      "dependencies": {
-        "has-value": {
-          "version": "0.3.1",
-          "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
-          "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
-          "dev": true,
-          "requires": {
-            "get-value": "^2.0.3",
-            "has-values": "^0.1.4",
-            "isobject": "^2.0.0"
-          },
-          "dependencies": {
-            "isobject": {
-              "version": "2.1.0",
-              "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
-              "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
-              "dev": true,
-              "requires": {
-                "isarray": "1.0.0"
-              }
-            }
-          }
-        },
-        "has-values": {
-          "version": "0.1.4",
-          "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
-          "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
-          "dev": true
-        }
-      }
-    },
     "unzipper": {
       "version": "0.10.11",
       "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz",
@@ -17330,17 +15140,10 @@
         }
       }
     },
-    "upath": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
-      "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
-      "dev": true
-    },
     "update-browserslist-db": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz",
       "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==",
-      "dev": true,
       "requires": {
         "escalade": "^3.1.1",
         "picocolors": "^1.0.0"
@@ -17427,45 +15230,11 @@
         "punycode": "^2.1.0"
       }
     },
-    "urix": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
-      "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
-      "dev": true
-    },
-    "url": {
-      "version": "0.11.0",
-      "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
-      "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==",
-      "dev": true,
-      "requires": {
-        "punycode": "1.3.2",
-        "querystring": "0.2.0"
-      },
-      "dependencies": {
-        "punycode": {
-          "version": "1.3.2",
-          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
-          "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==",
-          "dev": true
-        }
-      }
-    },
     "url-join": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz",
       "integrity": "sha1-HbSK1CLTQCRpqH99l73r/k+x48g=",
-      "dev": true
-    },
-    "url-parse": {
-      "version": "1.5.10",
-      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
-      "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
-      "dev": true,
-      "requires": {
-        "querystringify": "^2.1.1",
-        "requires-port": "^1.0.0"
-      }
+      "dev": true
     },
     "url-parse-lax": {
       "version": "3.0.0",
@@ -17484,12 +15253,6 @@
         }
       }
     },
-    "use": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
-      "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
-      "dev": true
-    },
     "util-deprecate": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -17596,13 +15359,13 @@
       }
     },
     "webpack": {
-      "version": "5.50.0",
-      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.50.0.tgz",
-      "integrity": "sha512-hqxI7t/KVygs0WRv/kTgUW8Kl3YC81uyWQSo/7WUs5LsuRw0htH/fCwbVBGCuiX/t4s7qzjXFcf41O8Reiypag==",
+      "version": "5.70.0",
+      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz",
+      "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==",
       "dev": true,
       "requires": {
-        "@types/eslint-scope": "^3.7.0",
-        "@types/estree": "^0.0.50",
+        "@types/eslint-scope": "^3.7.3",
+        "@types/estree": "^0.0.51",
         "@webassemblyjs/ast": "1.11.1",
         "@webassemblyjs/wasm-edit": "1.11.1",
         "@webassemblyjs/wasm-parser": "1.11.1",
@@ -17610,12 +15373,12 @@
         "acorn-import-assertions": "^1.7.6",
         "browserslist": "^4.14.5",
         "chrome-trace-event": "^1.0.2",
-        "enhanced-resolve": "^5.8.0",
-        "es-module-lexer": "^0.7.1",
+        "enhanced-resolve": "^5.9.2",
+        "es-module-lexer": "^0.9.0",
         "eslint-scope": "5.1.1",
         "events": "^3.2.0",
         "glob-to-regexp": "^0.4.1",
-        "graceful-fs": "^4.2.4",
+        "graceful-fs": "^4.2.9",
         "json-parse-better-errors": "^1.0.2",
         "loader-runner": "^4.2.0",
         "mime-types": "^2.1.27",
@@ -17623,8 +15386,8 @@
         "schema-utils": "^3.1.0",
         "tapable": "^2.1.1",
         "terser-webpack-plugin": "^5.1.3",
-        "watchpack": "^2.2.0",
-        "webpack-sources": "^3.2.0"
+        "watchpack": "^2.3.1",
+        "webpack-sources": "^3.2.3"
       },
       "dependencies": {
         "ajv": {
@@ -17639,6 +15402,12 @@
             "uri-js": "^4.2.2"
           }
         },
+        "graceful-fs": {
+          "version": "4.2.10",
+          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+          "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+          "dev": true
+        },
         "schema-utils": {
           "version": "3.1.1",
           "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
@@ -17649,39 +15418,29 @@
             "ajv": "^6.12.5",
             "ajv-keywords": "^3.5.2"
           }
-        },
-        "webpack-sources": {
-          "version": "3.2.3",
-          "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
-          "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
-          "dev": true
         }
       }
     },
     "webpack-dev-middleware": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.0.0.tgz",
-      "integrity": "sha512-9zng2Z60pm6A98YoRcA0wSxw1EYn7B7y5owX/Tckyt9KGyULTkLtiavjaXlWqOMkM0YtqGgL3PvMOFgyFLq8vw==",
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.0.tgz",
+      "integrity": "sha512-MouJz+rXAm9B1OTOYaJnn6rtD/lWZPy2ufQCH3BPs8Rloh/Du6Jze4p7AeLYHkVi0giJnYLaSGDC7S+GM9arhg==",
       "dev": true,
       "requires": {
-        "colorette": "^1.2.2",
-        "mem": "^8.1.1",
+        "colorette": "^2.0.10",
         "memfs": "^3.2.2",
         "mime-types": "^2.1.31",
         "range-parser": "^1.2.1",
-        "schema-utils": "^3.0.0"
+        "schema-utils": "^4.0.0"
       },
       "dependencies": {
-        "ajv": {
-          "version": "6.12.6",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+        "ajv-keywords": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+          "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
           "dev": true,
           "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
+            "fast-deep-equal": "^3.1.3"
           }
         },
         "mime-db": {
@@ -17700,472 +15459,168 @@
           }
         },
         "schema-utils": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
-          "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
+          "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
           "dev": true,
           "requires": {
-            "@types/json-schema": "^7.0.8",
-            "ajv": "^6.12.5",
-            "ajv-keywords": "^3.5.2"
+            "@types/json-schema": "^7.0.9",
+            "ajv": "^8.8.0",
+            "ajv-formats": "^2.1.1",
+            "ajv-keywords": "^5.0.0"
           }
         }
       }
     },
     "webpack-dev-server": {
-      "version": "3.11.3",
-      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz",
-      "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==",
+      "version": "4.7.3",
+      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.3.tgz",
+      "integrity": "sha512-mlxq2AsIw2ag016nixkzUkdyOE8ST2GTy34uKSABp1c4nhjZvH90D5ZRR+UOLSsG4Z3TFahAi72a3ymRtfRm+Q==",
       "dev": true,
       "requires": {
-        "ansi-html-community": "0.0.8",
+        "@types/bonjour": "^3.5.9",
+        "@types/connect-history-api-fallback": "^1.3.5",
+        "@types/serve-index": "^1.9.1",
+        "@types/sockjs": "^0.3.33",
+        "@types/ws": "^8.2.2",
+        "ansi-html-community": "^0.0.8",
         "bonjour": "^3.5.0",
-        "chokidar": "^2.1.8",
+        "chokidar": "^3.5.2",
+        "colorette": "^2.0.10",
         "compression": "^1.7.4",
         "connect-history-api-fallback": "^1.6.0",
-        "debug": "^4.1.1",
-        "del": "^4.1.1",
+        "default-gateway": "^6.0.3",
+        "del": "^6.0.0",
         "express": "^4.17.1",
-        "html-entities": "^1.3.1",
-        "http-proxy-middleware": "0.19.1",
-        "import-local": "^2.0.0",
-        "internal-ip": "^4.3.0",
-        "ip": "^1.1.5",
-        "is-absolute-url": "^3.0.3",
-        "killable": "^1.0.1",
-        "loglevel": "^1.6.8",
-        "opn": "^5.5.0",
-        "p-retry": "^3.0.1",
-        "portfinder": "^1.0.26",
-        "schema-utils": "^1.0.0",
-        "selfsigned": "^1.10.8",
-        "semver": "^6.3.0",
+        "graceful-fs": "^4.2.6",
+        "html-entities": "^2.3.2",
+        "http-proxy-middleware": "^2.0.0",
+        "ipaddr.js": "^2.0.1",
+        "open": "^8.0.9",
+        "p-retry": "^4.5.0",
+        "portfinder": "^1.0.28",
+        "schema-utils": "^4.0.0",
+        "selfsigned": "^2.0.0",
         "serve-index": "^1.9.1",
         "sockjs": "^0.3.21",
-        "sockjs-client": "^1.5.0",
         "spdy": "^4.0.2",
-        "strip-ansi": "^3.0.1",
-        "supports-color": "^6.1.0",
-        "url": "^0.11.0",
-        "webpack-dev-middleware": "^3.7.2",
-        "webpack-log": "^2.0.0",
-        "ws": "^6.2.1",
-        "yargs": "^13.3.2"
+        "strip-ansi": "^7.0.0",
+        "webpack-dev-middleware": "^5.3.0",
+        "ws": "^8.1.0"
       },
       "dependencies": {
-        "ajv": {
-          "version": "6.12.6",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+        "ajv-keywords": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+          "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
           "dev": true,
           "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
+            "fast-deep-equal": "^3.1.3"
           }
         },
         "ansi-regex": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
-          "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+          "version": "6.0.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+          "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
           "dev": true
         },
         "anymatch": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-          "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
-          "dev": true,
-          "requires": {
-            "micromatch": "^3.1.4",
-            "normalize-path": "^2.1.1"
-          },
-          "dependencies": {
-            "normalize-path": {
-              "version": "2.1.1",
-              "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-              "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
-              "dev": true,
-              "requires": {
-                "remove-trailing-separator": "^1.0.1"
-              }
-            }
-          }
-        },
-        "binary-extensions": {
-          "version": "1.13.1",
-          "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
-          "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
-          "dev": true
-        },
-        "braces": {
-          "version": "2.3.2",
-          "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-          "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-          "dev": true,
-          "requires": {
-            "arr-flatten": "^1.1.0",
-            "array-unique": "^0.3.2",
-            "extend-shallow": "^2.0.1",
-            "fill-range": "^4.0.0",
-            "isobject": "^3.0.1",
-            "repeat-element": "^1.1.2",
-            "snapdragon": "^0.8.1",
-            "snapdragon-node": "^2.0.1",
-            "split-string": "^3.0.2",
-            "to-regex": "^3.0.1"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
-              "dev": true,
-              "requires": {
-                "is-extendable": "^0.1.0"
-              }
-            }
-          }
-        },
-        "chokidar": {
-          "version": "2.1.8",
-          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
-          "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+          "version": "3.1.2",
+          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
+          "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
           "dev": true,
           "requires": {
-            "anymatch": "^2.0.0",
-            "async-each": "^1.0.1",
-            "braces": "^2.3.2",
-            "fsevents": "^1.2.7",
-            "glob-parent": "^3.1.0",
-            "inherits": "^2.0.3",
-            "is-binary-path": "^1.0.0",
-            "is-glob": "^4.0.0",
             "normalize-path": "^3.0.0",
-            "path-is-absolute": "^1.0.0",
-            "readdirp": "^2.2.1",
-            "upath": "^1.1.1"
-          }
-        },
-        "cliui": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
-          "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
-          "dev": true,
-          "requires": {
-            "string-width": "^3.1.0",
-            "strip-ansi": "^5.2.0",
-            "wrap-ansi": "^5.1.0"
-          },
-          "dependencies": {
-            "strip-ansi": {
-              "version": "5.2.0",
-              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-              "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-              "dev": true,
-              "requires": {
-                "ansi-regex": "^4.1.0"
-              }
-            }
-          }
-        },
-        "emoji-regex": {
-          "version": "7.0.3",
-          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-          "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
-          "dev": true
-        },
-        "fill-range": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-          "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
-          "dev": true,
-          "requires": {
-            "extend-shallow": "^2.0.1",
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1",
-            "to-regex-range": "^2.1.0"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-              "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
-              "dev": true,
-              "requires": {
-                "is-extendable": "^0.1.0"
-              }
-            }
+            "picomatch": "^2.0.4"
           }
         },
-        "find-up": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-          "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+        "chokidar": {
+          "version": "3.5.3",
+          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+          "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
           "dev": true,
           "requires": {
-            "locate-path": "^3.0.0"
+            "anymatch": "~3.1.2",
+            "braces": "~3.0.2",
+            "fsevents": "~2.3.2",
+            "glob-parent": "~5.1.2",
+            "is-binary-path": "~2.1.0",
+            "is-glob": "~4.0.1",
+            "normalize-path": "~3.0.0",
+            "readdirp": "~3.6.0"
           }
         },
         "fsevents": {
-          "version": "1.2.13",
-          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
-          "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+          "version": "2.3.2",
+          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+          "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
           "dev": true,
-          "optional": true,
-          "requires": {
-            "bindings": "^1.5.0",
-            "nan": "^2.12.1"
-          }
+          "optional": true
         },
         "glob-parent": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-          "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
-          "dev": true,
-          "requires": {
-            "is-glob": "^3.1.0",
-            "path-dirname": "^1.0.0"
-          },
-          "dependencies": {
-            "is-glob": {
-              "version": "3.1.0",
-              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-              "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
-              "dev": true,
-              "requires": {
-                "is-extglob": "^2.1.0"
-              }
-            }
-          }
-        },
-        "is-binary-path": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-          "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
-          "dev": true,
-          "requires": {
-            "binary-extensions": "^1.0.0"
-          }
-        },
-        "is-number": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-          "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^3.0.2"
-          },
-          "dependencies": {
-            "kind-of": {
-              "version": "3.2.2",
-              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
-              "dev": true,
-              "requires": {
-                "is-buffer": "^1.1.5"
-              }
-            }
-          }
-        },
-        "locate-path": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-          "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+          "version": "5.1.2",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+          "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
           "dev": true,
           "requires": {
-            "p-locate": "^3.0.0",
-            "path-exists": "^3.0.0"
+            "is-glob": "^4.0.1"
           }
         },
-        "micromatch": {
-          "version": "3.1.10",
-          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-          "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-          "dev": true,
-          "requires": {
-            "arr-diff": "^4.0.0",
-            "array-unique": "^0.3.2",
-            "braces": "^2.3.1",
-            "define-property": "^2.0.2",
-            "extend-shallow": "^3.0.2",
-            "extglob": "^2.0.4",
-            "fragment-cache": "^0.2.1",
-            "kind-of": "^6.0.2",
-            "nanomatch": "^1.2.9",
-            "object.pick": "^1.3.0",
-            "regex-not": "^1.0.0",
-            "snapdragon": "^0.8.1",
-            "to-regex": "^3.0.2"
-          }
+        "graceful-fs": {
+          "version": "4.2.10",
+          "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+          "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+          "dev": true
         },
-        "mime": {
-          "version": "2.6.0",
-          "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
-          "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
+        "ipaddr.js": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz",
+          "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==",
           "dev": true
         },
-        "p-locate": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-          "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+        "open": {
+          "version": "8.4.0",
+          "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
+          "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
           "dev": true,
           "requires": {
-            "p-limit": "^2.0.0"
+            "define-lazy-prop": "^2.0.0",
+            "is-docker": "^2.1.1",
+            "is-wsl": "^2.2.0"
           }
         },
-        "path-exists": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-          "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
-          "dev": true
-        },
         "readdirp": {
-          "version": "2.2.1",
-          "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
-          "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+          "version": "3.6.0",
+          "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+          "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
           "dev": true,
           "requires": {
-            "graceful-fs": "^4.1.11",
-            "micromatch": "^3.1.10",
-            "readable-stream": "^2.0.2"
+            "picomatch": "^2.2.1"
           }
         },
         "schema-utils": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-          "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-          "dev": true,
-          "requires": {
-            "ajv": "^6.1.0",
-            "ajv-errors": "^1.0.0",
-            "ajv-keywords": "^3.1.0"
-          }
-        },
-        "string-width": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^7.0.1",
-            "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^5.1.0"
-          },
-          "dependencies": {
-            "strip-ansi": {
-              "version": "5.2.0",
-              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-              "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-              "dev": true,
-              "requires": {
-                "ansi-regex": "^4.1.0"
-              }
-            }
-          }
-        },
-        "supports-color": {
-          "version": "6.1.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^3.0.0"
-          }
-        },
-        "to-regex-range": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-          "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
-          "dev": true,
-          "requires": {
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1"
-          }
-        },
-        "webpack-dev-middleware": {
-          "version": "3.7.3",
-          "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz",
-          "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==",
-          "dev": true,
-          "requires": {
-            "memory-fs": "^0.4.1",
-            "mime": "^2.4.4",
-            "mkdirp": "^0.5.1",
-            "range-parser": "^1.2.1",
-            "webpack-log": "^2.0.0"
-          }
-        },
-        "wrap-ansi": {
-          "version": "5.1.0",
-          "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
-          "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^3.2.0",
-            "string-width": "^3.0.0",
-            "strip-ansi": "^5.0.0"
-          },
-          "dependencies": {
-            "strip-ansi": {
-              "version": "5.2.0",
-              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-              "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-              "dev": true,
-              "requires": {
-                "ansi-regex": "^4.1.0"
-              }
-            }
-          }
-        },
-        "yargs": {
-          "version": "13.3.2",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
-          "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
+          "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
           "dev": true,
           "requires": {
-            "cliui": "^5.0.0",
-            "find-up": "^3.0.0",
-            "get-caller-file": "^2.0.1",
-            "require-directory": "^2.1.1",
-            "require-main-filename": "^2.0.0",
-            "set-blocking": "^2.0.0",
-            "string-width": "^3.0.0",
-            "which-module": "^2.0.0",
-            "y18n": "^4.0.0",
-            "yargs-parser": "^13.1.2"
+            "@types/json-schema": "^7.0.9",
+            "ajv": "^8.8.0",
+            "ajv-formats": "^2.1.1",
+            "ajv-keywords": "^5.0.0"
           }
         },
-        "yargs-parser": {
-          "version": "13.1.2",
-          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
-          "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+        "strip-ansi": {
+          "version": "7.0.1",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
+          "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
           "dev": true,
           "requires": {
-            "camelcase": "^5.0.0",
-            "decamelize": "^1.2.0"
+            "ansi-regex": "^6.0.1"
           }
         }
       }
     },
-    "webpack-log": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz",
-      "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
-      "dev": true,
-      "requires": {
-        "ansi-colors": "^3.0.0",
-        "uuid": "^3.3.2"
-      },
-      "dependencies": {
-        "ansi-colors": {
-          "version": "3.2.4",
-          "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
-          "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==",
-          "dev": true
-        }
-      }
-    },
     "webpack-merge": {
       "version": "5.8.0",
       "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz",
@@ -18177,30 +15632,18 @@
       }
     },
     "webpack-sources": {
-      "version": "1.4.3",
-      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
-      "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
-      "dev": true,
-      "requires": {
-        "source-list-map": "^2.0.0",
-        "source-map": "~0.6.1"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
+      "version": "3.2.3",
+      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+      "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+      "dev": true
     },
     "webpack-subresource-integrity": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.5.2.tgz",
-      "integrity": "sha512-GBWYBoyalbo5YClwWop9qe6Zclp8CIXYGIz12OPclJhIrSplDxs1Ls1JDMH8xBPPrg1T6ISaTW9Y6zOrwEiAzw==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz",
+      "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==",
       "dev": true,
       "requires": {
-        "webpack-sources": "^1.3.0"
+        "typed-assert": "^1.0.8"
       }
     },
     "websocket-driver": {
@@ -18436,13 +15879,10 @@
       }
     },
     "ws": {
-      "version": "6.2.2",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz",
-      "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
-      "dev": true,
-      "requires": {
-        "async-limiter": "~1.0.0"
-      }
+      "version": "8.8.0",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz",
+      "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==",
+      "dev": true
     },
     "xdg-basedir": {
       "version": "4.0.0",
@@ -18603,12 +16043,6 @@
       "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
       "dev": true
     },
-    "yocto-queue": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
-      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
-      "dev": true
-    },
     "zip-stream": {
       "version": "2.1.3",
       "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz",
diff --git a/package.json b/package.json
index c7e313f..08db4fc 100644
--- a/package.json
+++ b/package.json
@@ -11,18 +11,18 @@
   },
   "private": true,
   "dependencies": {
-    "@angular/animations": "~12.2.16",
+    "@angular/animations": "~13.3.11",
     "@angular/cdk": "^12.2.13",
-    "@angular/common": "~12.2.16",
-    "@angular/compiler": "~12.2.16",
-    "@angular/core": "~12.2.16",
+    "@angular/common": "~13.3.11",
+    "@angular/compiler": "~13.3.11",
+    "@angular/core": "~13.3.11",
     "@angular/fire": "^6.1.4",
-    "@angular/forms": "~12.2.16",
-    "@angular/localize": "^12.2.16",
+    "@angular/forms": "~13.3.11",
+    "@angular/localize": "^13.3.11",
     "@angular/material": "^12.2.13",
-    "@angular/platform-browser": "~12.2.16",
-    "@angular/platform-browser-dynamic": "~12.2.16",
-    "@angular/router": "~12.2.16",
+    "@angular/platform-browser": "~13.3.11",
+    "@angular/platform-browser-dynamic": "~13.3.11",
+    "@angular/router": "~13.3.11",
     "@auth0/auth0-angular": "^1.10.0",
     "angular-walkthrough": "^0.8.2",
     "apexcharts": "^3.24.0",
@@ -43,11 +43,11 @@
     "zone.js": "~0.11.6"
   },
   "devDependencies": {
-    "@angular-devkit/architect": "0.1202.17",
-    "@angular-devkit/build-angular": "~12.2.17",
-    "@angular/cli": "~12.2.17",
-    "@angular/compiler-cli": "~12.2.16",
-    "@angular/language-service": "~12.2.16",
+    "@angular-devkit/architect": "0.1303.8",
+    "@angular-devkit/build-angular": "~13.3.8",
+    "@angular/cli": "~13.3.8",
+    "@angular/compiler-cli": "~13.3.11",
+    "@angular/language-service": "~13.3.11",
     "@types/jasmine": "~3.6.0",
     "@types/jasminewd2": "~2.0.3",
     "@types/node": "^12.11.1",
@@ -67,6 +67,6 @@
     "protractor": "~7.0.0",
     "ts-node": "~8.3.0",
     "tslint": "~6.1.0",
-    "typescript": "~4.3.5"
+    "typescript": "~4.6.4"
   }
 }
diff --git a/src/polyfills.ts b/src/polyfills.ts
index 01e24d6..576bf9d 100644
--- a/src/polyfills.ts
+++ b/src/polyfills.ts
@@ -22,16 +22,6 @@ import '@angular/localize/init';
  * BROWSER POLYFILLS
  */
 
-/** IE10 and IE11 requires the following for NgClass support on SVG elements */
-// import 'classlist.js';  // Run `npm install --save classlist.js`.
-
-/**
- * Web Animations `@angular/platform-browser/animations`
- * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.
- * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).
- */
-// import 'web-animations-js';  // Run `npm install --save web-animations-js`.
-
 /**
  * By default, zone.js will patch all possible macroTask and DomEvents
  * user can disable parts of macroTask/DomEvents patch by setting following flags
diff --git a/src/test.ts b/src/test.ts
index 50193eb..fa95211 100644
--- a/src/test.ts
+++ b/src/test.ts
@@ -17,7 +17,9 @@ declare const require: {
 // First, initialize the Angular testing environment.
 getTestBed().initTestEnvironment(
   BrowserDynamicTestingModule,
-  platformBrowserDynamicTesting()
+  platformBrowserDynamicTesting(), {
+    teardown: { destroyAfterEach: false }
+}
 );
 // Then we find all the tests.
 const context = require.context('./', true, /\.spec\.ts$/);
-- 
GitLab


From bf4bd4bdebb554cc1ad970f9dda4b001e49fe7dc Mon Sep 17 00:00:00 2001
From: ramesh <rdramesh2009@gmail.com>
Date: Mon, 11 Jul 2022 15:10:22 -0400
Subject: [PATCH 16/23] angualr 13 done

---
 package-lock.json | 16 ++++++++--------
 package.json      |  8 +++++---
 2 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 4cd1a1e..0e88e04 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -569,12 +569,12 @@
       }
     },
     "@angular/cdk": {
-      "version": "12.2.13",
-      "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-12.2.13.tgz",
-      "integrity": "sha512-zSKRhECyFqhingIeyRInIyTvYErt4gWo+x5DQr0b7YLUbU8DZSwWnG4w76Ke2s4U8T7ry1jpJBHoX/e8YBpGMg==",
+      "version": "13.3.9",
+      "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-13.3.9.tgz",
+      "integrity": "sha512-XCuCbeuxWFyo3EYrgEYx7eHzwl76vaWcxtWXl00ka8d+WAOtMQ6Tf1D98ybYT5uwF9889fFpXAPw98mVnlo3MA==",
       "requires": {
         "parse5": "^5.0.0",
-        "tslib": "^2.2.0"
+        "tslib": "^2.3.0"
       },
       "dependencies": {
         "parse5": {
@@ -1279,11 +1279,11 @@
       }
     },
     "@angular/material": {
-      "version": "12.2.13",
-      "resolved": "https://registry.npmjs.org/@angular/material/-/material-12.2.13.tgz",
-      "integrity": "sha512-6g2GyN4qp2D+DqY2AwrQuPB3cd9gybvQVXvNRbTPXEulHr+LgGei00ySdFHFp6RvdGSMZ4i3LM1Fq3VkFxhCfQ==",
+      "version": "13.3.9",
+      "resolved": "https://registry.npmjs.org/@angular/material/-/material-13.3.9.tgz",
+      "integrity": "sha512-FU8lcMgo+AL8ckd27B4V097ZPoIZNRHiCe3wpgkImT1qC0YwcyXZVn0MqQTTFSdC9a/aI8wPm3AbTClJEVw5Vw==",
       "requires": {
-        "tslib": "^2.2.0"
+        "tslib": "^2.3.0"
       }
     },
     "@angular/platform-browser": {
diff --git a/package.json b/package.json
index 08db4fc..bb1cc94 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,9 @@
   "scripts": {
     "ng": "ng",
     "start": "ng serve",
-    "build": "ng build --prod",
+    "start-prod": "ng serve --configuration=production",
+    "build": "ng build",
+    "build-prod": "ng build --configuration=production",
     "test": "ng test",
     "lint": "ng lint",
     "e2e": "ng e2e"
@@ -12,14 +14,14 @@
   "private": true,
   "dependencies": {
     "@angular/animations": "~13.3.11",
-    "@angular/cdk": "^12.2.13",
+    "@angular/cdk": "^13.3.9",
     "@angular/common": "~13.3.11",
     "@angular/compiler": "~13.3.11",
     "@angular/core": "~13.3.11",
     "@angular/fire": "^6.1.4",
     "@angular/forms": "~13.3.11",
     "@angular/localize": "^13.3.11",
-    "@angular/material": "^12.2.13",
+    "@angular/material": "^13.3.9",
     "@angular/platform-browser": "~13.3.11",
     "@angular/platform-browser-dynamic": "~13.3.11",
     "@angular/router": "~13.3.11",
-- 
GitLab


From 4111b88eecf2fa2f7b02d26ca6b3cf75b6efadcc Mon Sep 17 00:00:00 2001
From: ramesh <rdramesh2009@gmail.com>
Date: Mon, 11 Jul 2022 15:18:04 -0400
Subject: [PATCH 17/23] angualr 14

---
 angular.json                                  |    1 -
 package-lock.json                             | 2434 ++++++++++-------
 package.json                                  |   28 +-
 .../cpcq-form/cpcq-form.component.ts          |   14 +-
 .../dialog-form/dialog-form.component.ts      |    8 +-
 .../final-feedback.component.ts               |   14 +-
 .../first-form/first-form.component.ts        |    4 +-
 .../graph-page/graph-page.component.ts        |   14 +-
 .../post-survey/post-survey.component.ts      |    6 +-
 .../pre-survey/pre-survey.component.ts        |    6 +-
 .../register-component.component.ts           |    6 +-
 .../score-page/score-page.component.ts        |   14 +-
 .../unpacking-page.component.ts               |   14 +-
 tsconfig.json                                 |    2 +-
 14 files changed, 1585 insertions(+), 980 deletions(-)

diff --git a/angular.json b/angular.json
index 9a009e6..3374a4e 100644
--- a/angular.json
+++ b/angular.json
@@ -116,7 +116,6 @@
       }
     }
   },
-  "defaultProject": "iMatt-FE",
   "cli": {
     "analytics": "14348ac1-8da5-4252-9e0c-b861a78c6b1a"
   }
diff --git a/package-lock.json b/package-lock.json
index 0e88e04..3618edb 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,19 +8,18 @@
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
       "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
-      "dev": true,
       "requires": {
         "@jridgewell/gen-mapping": "^0.1.0",
         "@jridgewell/trace-mapping": "^0.3.9"
       }
     },
     "@angular-devkit/architect": {
-      "version": "0.1303.8",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1303.8.tgz",
-      "integrity": "sha512-2zaNejnfZbq+fFOVgkmWkh+2UmK/CBDbWTq7VJHopJLtUuf7pFNvRk73s9xayuJ3Lt2/sY17Mykku2LziBF89A==",
+      "version": "0.1400.5",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1400.5.tgz",
+      "integrity": "sha512-A5sRLPK3qGJAehYtX4ayUDwxQZ02yvsrxcpf3sv492IxbF7ymdMhcxIp+0UG6wIsLvpQkpW9ekJUdKmFB6GVAw==",
       "dev": true,
       "requires": {
-        "@angular-devkit/core": "13.3.8",
+        "@angular-devkit/core": "14.0.5",
         "rxjs": "6.6.7"
       },
       "dependencies": {
@@ -42,74 +41,72 @@
       }
     },
     "@angular-devkit/build-angular": {
-      "version": "13.3.8",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.3.8.tgz",
-      "integrity": "sha512-5nWqb58oLcWoBoAECqHiUlOV23/J/4W1a9aqaFQcN6bThRzoy54S69zUuQREnBE36elDrSxhn2Y34poqYe8iKQ==",
+      "version": "14.0.5",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.0.5.tgz",
+      "integrity": "sha512-Yjp0KyuJz4BvvW3xGC6UzYyVhMXTr5geYQskI7pkXaoNvVVD9Su4kaxl78dZBT/GRNZmNkrB2fJ4D8OOWH/oBg==",
       "dev": true,
       "requires": {
         "@ampproject/remapping": "2.2.0",
-        "@angular-devkit/architect": "0.1303.8",
-        "@angular-devkit/build-webpack": "0.1303.8",
-        "@angular-devkit/core": "13.3.8",
-        "@babel/core": "7.16.12",
-        "@babel/generator": "7.16.8",
+        "@angular-devkit/architect": "0.1400.5",
+        "@angular-devkit/build-webpack": "0.1400.5",
+        "@angular-devkit/core": "14.0.5",
+        "@babel/core": "7.17.10",
+        "@babel/generator": "7.17.10",
         "@babel/helper-annotate-as-pure": "7.16.7",
         "@babel/plugin-proposal-async-generator-functions": "7.16.8",
         "@babel/plugin-transform-async-to-generator": "7.16.8",
-        "@babel/plugin-transform-runtime": "7.16.10",
-        "@babel/preset-env": "7.16.11",
-        "@babel/runtime": "7.16.7",
+        "@babel/plugin-transform-runtime": "7.17.10",
+        "@babel/preset-env": "7.17.10",
+        "@babel/runtime": "7.17.9",
         "@babel/template": "7.16.7",
-        "@discoveryjs/json-ext": "0.5.6",
-        "@ngtools/webpack": "13.3.8",
+        "@discoveryjs/json-ext": "0.5.7",
+        "@ngtools/webpack": "14.0.5",
         "ansi-colors": "4.1.1",
         "babel-loader": "8.2.5",
         "babel-plugin-istanbul": "6.1.1",
         "browserslist": "^4.9.1",
-        "cacache": "15.3.0",
-        "circular-dependency-plugin": "5.2.2",
-        "copy-webpack-plugin": "10.2.1",
-        "core-js": "3.20.3",
+        "cacache": "16.0.7",
+        "copy-webpack-plugin": "10.2.4",
         "critters": "0.0.16",
-        "css-loader": "6.5.1",
-        "esbuild": "0.14.22",
-        "esbuild-wasm": "0.14.22",
-        "glob": "7.2.0",
-        "https-proxy-agent": "5.0.0",
-        "inquirer": "8.2.0",
+        "css-loader": "6.7.1",
+        "esbuild": "0.14.38",
+        "esbuild-wasm": "0.14.38",
+        "glob": "8.0.1",
+        "https-proxy-agent": "5.0.1",
+        "inquirer": "8.2.4",
         "jsonc-parser": "3.0.0",
         "karma-source-map-support": "1.4.0",
         "less": "4.1.2",
         "less-loader": "10.2.0",
         "license-webpack-plugin": "4.0.2",
         "loader-utils": "3.2.0",
-        "mini-css-extract-plugin": "2.5.3",
-        "minimatch": "3.0.5",
+        "mini-css-extract-plugin": "2.6.0",
+        "minimatch": "5.0.1",
         "open": "8.4.0",
         "ora": "5.4.1",
         "parse5-html-rewriting-stream": "6.0.1",
         "piscina": "3.2.0",
-        "postcss": "8.4.5",
-        "postcss-import": "14.0.2",
+        "postcss": "8.4.13",
+        "postcss-import": "14.1.0",
         "postcss-loader": "6.2.1",
-        "postcss-preset-env": "7.2.3",
+        "postcss-preset-env": "7.5.0",
         "regenerator-runtime": "0.13.9",
         "resolve-url-loader": "5.0.0",
         "rxjs": "6.6.7",
-        "sass": "1.49.9",
-        "sass-loader": "12.4.0",
-        "semver": "7.3.5",
+        "sass": "1.51.0",
+        "sass-loader": "12.6.0",
+        "semver": "7.3.7",
         "source-map-loader": "3.0.1",
         "source-map-support": "0.5.21",
-        "stylus": "0.56.0",
+        "stylus": "0.57.0",
         "stylus-loader": "6.2.0",
-        "terser": "5.11.0",
+        "terser": "5.13.1",
         "text-table": "0.2.0",
         "tree-kill": "1.2.2",
-        "tslib": "2.3.1",
-        "webpack": "5.70.0",
-        "webpack-dev-middleware": "5.3.0",
-        "webpack-dev-server": "4.7.3",
+        "tslib": "2.4.0",
+        "webpack": "5.72.1",
+        "webpack-dev-middleware": "5.3.1",
+        "webpack-dev-server": "4.9.0",
         "webpack-merge": "5.8.0",
         "webpack-subresource-integrity": "5.1.0"
       },
@@ -124,14 +121,14 @@
           }
         },
         "@babel/generator": {
-          "version": "7.16.8",
-          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz",
-          "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==",
+          "version": "7.17.10",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz",
+          "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==",
           "dev": true,
           "requires": {
-            "@babel/types": "^7.16.8",
-            "jsesc": "^2.5.1",
-            "source-map": "^0.5.0"
+            "@babel/types": "^7.17.10",
+            "@jridgewell/gen-mapping": "^0.1.0",
+            "jsesc": "^2.5.1"
           }
         },
         "@babel/helper-validator-identifier": {
@@ -195,6 +192,15 @@
             "color-convert": "^2.0.1"
           }
         },
+        "brace-expansion": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+          "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+          "dev": true,
+          "requires": {
+            "balanced-match": "^1.0.0"
+          }
+        },
         "cli-width": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
@@ -217,31 +223,32 @@
           "dev": true
         },
         "esbuild": {
-          "version": "0.14.22",
-          "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.22.tgz",
-          "integrity": "sha512-CjFCFGgYtbFOPrwZNJf7wsuzesx8kqwAffOlbYcFDLFuUtP8xloK1GH+Ai13Qr0RZQf9tE7LMTHJ2iVGJ1SKZA==",
+          "version": "0.14.38",
+          "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.38.tgz",
+          "integrity": "sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA==",
           "dev": true,
           "optional": true,
           "requires": {
-            "esbuild-android-arm64": "0.14.22",
-            "esbuild-darwin-64": "0.14.22",
-            "esbuild-darwin-arm64": "0.14.22",
-            "esbuild-freebsd-64": "0.14.22",
-            "esbuild-freebsd-arm64": "0.14.22",
-            "esbuild-linux-32": "0.14.22",
-            "esbuild-linux-64": "0.14.22",
-            "esbuild-linux-arm": "0.14.22",
-            "esbuild-linux-arm64": "0.14.22",
-            "esbuild-linux-mips64le": "0.14.22",
-            "esbuild-linux-ppc64le": "0.14.22",
-            "esbuild-linux-riscv64": "0.14.22",
-            "esbuild-linux-s390x": "0.14.22",
-            "esbuild-netbsd-64": "0.14.22",
-            "esbuild-openbsd-64": "0.14.22",
-            "esbuild-sunos-64": "0.14.22",
-            "esbuild-windows-32": "0.14.22",
-            "esbuild-windows-64": "0.14.22",
-            "esbuild-windows-arm64": "0.14.22"
+            "esbuild-android-64": "0.14.38",
+            "esbuild-android-arm64": "0.14.38",
+            "esbuild-darwin-64": "0.14.38",
+            "esbuild-darwin-arm64": "0.14.38",
+            "esbuild-freebsd-64": "0.14.38",
+            "esbuild-freebsd-arm64": "0.14.38",
+            "esbuild-linux-32": "0.14.38",
+            "esbuild-linux-64": "0.14.38",
+            "esbuild-linux-arm": "0.14.38",
+            "esbuild-linux-arm64": "0.14.38",
+            "esbuild-linux-mips64le": "0.14.38",
+            "esbuild-linux-ppc64le": "0.14.38",
+            "esbuild-linux-riscv64": "0.14.38",
+            "esbuild-linux-s390x": "0.14.38",
+            "esbuild-netbsd-64": "0.14.38",
+            "esbuild-openbsd-64": "0.14.38",
+            "esbuild-sunos-64": "0.14.38",
+            "esbuild-windows-32": "0.14.38",
+            "esbuild-windows-64": "0.14.38",
+            "esbuild-windows-arm64": "0.14.38"
           }
         },
         "figures": {
@@ -254,15 +261,15 @@
           }
         },
         "glob": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
-          "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+          "version": "8.0.1",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.1.tgz",
+          "integrity": "sha512-cF7FYZZ47YzmCu7dDy50xSRRfO3ErRfrXuLZcNIuyiJEco0XSrGtuilG19L5xp3NcwTx7Gn+X6Tv3fmsUPTbow==",
           "dev": true,
           "requires": {
             "fs.realpath": "^1.0.0",
             "inflight": "^1.0.4",
             "inherits": "2",
-            "minimatch": "^3.0.4",
+            "minimatch": "^5.0.1",
             "once": "^1.3.0",
             "path-is-absolute": "^1.0.0"
           }
@@ -274,9 +281,9 @@
           "dev": true
         },
         "https-proxy-agent": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
-          "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+          "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
           "dev": true,
           "requires": {
             "agent-base": "6",
@@ -284,9 +291,9 @@
           }
         },
         "inquirer": {
-          "version": "8.2.0",
-          "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz",
-          "integrity": "sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==",
+          "version": "8.2.4",
+          "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz",
+          "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==",
           "dev": true,
           "requires": {
             "ansi-escapes": "^4.2.1",
@@ -299,10 +306,11 @@
             "mute-stream": "0.0.8",
             "ora": "^5.4.1",
             "run-async": "^2.4.0",
-            "rxjs": "^7.2.0",
+            "rxjs": "^7.5.5",
             "string-width": "^4.1.0",
             "strip-ansi": "^6.0.0",
-            "through": "^2.3.6"
+            "through": "^2.3.6",
+            "wrap-ansi": "^7.0.0"
           },
           "dependencies": {
             "chalk": {
@@ -348,12 +356,12 @@
           }
         },
         "minimatch": {
-          "version": "3.0.5",
-          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz",
-          "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==",
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz",
+          "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==",
           "dev": true,
           "requires": {
-            "brace-expansion": "^1.1.7"
+            "brace-expansion": "^2.0.1"
           }
         },
         "mute-stream": {
@@ -391,18 +399,18 @@
           }
         },
         "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
           "dev": true,
           "requires": {
             "lru-cache": "^6.0.0"
           }
         },
         "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
           "dev": true
         },
         "source-map-support": {
@@ -413,14 +421,6 @@
           "requires": {
             "buffer-from": "^1.0.0",
             "source-map": "^0.6.0"
-          },
-          "dependencies": {
-            "source-map": {
-              "version": "0.6.1",
-              "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-              "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-              "dev": true
-            }
           }
         },
         "string-width": {
@@ -452,27 +452,32 @@
             "has-flag": "^4.0.0"
           }
         },
-        "tslib": {
-          "version": "2.3.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
-          "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
-          "dev": true
-        },
         "type-fest": {
           "version": "0.21.3",
           "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
           "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
           "dev": true
+        },
+        "wrap-ansi": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+          "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.0.0",
+            "string-width": "^4.1.0",
+            "strip-ansi": "^6.0.0"
+          }
         }
       }
     },
     "@angular-devkit/build-webpack": {
-      "version": "0.1303.8",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1303.8.tgz",
-      "integrity": "sha512-N3DehEQ4uARricbYTuASBCnHdrtKFIMZpl6A4GB5DKQILF7KctsaAz0QvAiA8y4ojhSIRvXK5XVWklX3QVlJIw==",
+      "version": "0.1400.5",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1400.5.tgz",
+      "integrity": "sha512-bg5P9e7ZqV4Vmj3eFmfZhGXxp2FICN/myvu9IpUyIaNfwsi/0S98Cc4MMH0GtoK0uy27kB5QSyWUO1rwB+npJA==",
       "dev": true,
       "requires": {
-        "@angular-devkit/architect": "0.1303.8",
+        "@angular-devkit/architect": "0.1400.5",
         "rxjs": "6.6.7"
       },
       "dependencies": {
@@ -494,25 +499,18 @@
       }
     },
     "@angular-devkit/core": {
-      "version": "13.3.8",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.8.tgz",
-      "integrity": "sha512-PCmfMkErpnH429l1cANak4PnCpAscqAubS6Dw83++cS34ht0/bgKRb2zSyBuB2Ka6kw7wAZ3fCyTcVvyfxVFEg==",
+      "version": "14.0.5",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.5.tgz",
+      "integrity": "sha512-/CUGi6QLwh79FvsOY7M+1LQL3asZsbQW/WBd5f1iu5y7TLNqCwo+wOb0ZXLDNPw45vYBxFajtt3ob3U7qx3jNg==",
       "dev": true,
       "requires": {
-        "ajv": "8.9.0",
+        "ajv": "8.11.0",
         "ajv-formats": "2.1.1",
-        "fast-json-stable-stringify": "2.1.0",
-        "magic-string": "0.25.7",
+        "jsonc-parser": "3.0.0",
         "rxjs": "6.6.7",
         "source-map": "0.7.3"
       },
       "dependencies": {
-        "fast-json-stable-stringify": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-          "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
-          "dev": true
-        },
         "rxjs": {
           "version": "6.6.7",
           "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
@@ -531,14 +529,14 @@
       }
     },
     "@angular-devkit/schematics": {
-      "version": "13.3.8",
-      "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.8.tgz",
-      "integrity": "sha512-7mTlxZhS9uHxtmOiZeSMkKdIE5r5FmQ/1IBhRBfD5XDQdipQkUJyOtclPO/+t/AJIG0+LYt9+7X5hHUr7W3kZA==",
+      "version": "14.0.5",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.0.5.tgz",
+      "integrity": "sha512-sufxITBkn2MvgEREt9JQ3QCKHS+sue1WsVzLE+TWqG5MC/RPk0f9tQ5VoHk6ZTzDKUvOtSoc7G+n0RscQsyp5g==",
       "dev": true,
       "requires": {
-        "@angular-devkit/core": "13.3.8",
+        "@angular-devkit/core": "14.0.5",
         "jsonc-parser": "3.0.0",
-        "magic-string": "0.25.7",
+        "magic-string": "0.26.1",
         "ora": "5.4.1",
         "rxjs": "6.6.7"
       },
@@ -561,9 +559,9 @@
       }
     },
     "@angular/animations": {
-      "version": "13.3.11",
-      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.3.11.tgz",
-      "integrity": "sha512-KE/3RuvixHIk9YTSwaUsezsUm9Ig9Y8rZMpHOT/8bRtzPiJ5ld2GnDHjrJgyZn7TdoP4wz4YCta5eC4ycu+KCw==",
+      "version": "14.0.5",
+      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.0.5.tgz",
+      "integrity": "sha512-oQy4rZIsJUHbK4CMxEgxVVOKAbX+k16Wqc9t6zPlqayvj0wQA1XdTdbXMfiZyekFgtfnjb+UPjmXa2FNe1G8NQ==",
       "requires": {
         "tslib": "^2.3.0"
       }
@@ -586,30 +584,31 @@
       }
     },
     "@angular/cli": {
-      "version": "13.3.8",
-      "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.8.tgz",
-      "integrity": "sha512-dsvum8oGnbgX5mLh9CDzP1ip2UGDZdppPD6np2XXhqX75DfJxRlgl4u3NxBSnDmeyhIGTsGV0HKAxoB5EOoHcw==",
+      "version": "14.0.5",
+      "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.0.5.tgz",
+      "integrity": "sha512-/Iqvy3vRqakHdxNi+Qo18xXQr8E1cCaKzMBnxR2wHNdlu1lyaw0p20E8LumoueXCrs+/SK6aKDvN6ek0R/q8Jg==",
       "dev": true,
       "requires": {
-        "@angular-devkit/architect": "0.1303.8",
-        "@angular-devkit/core": "13.3.8",
-        "@angular-devkit/schematics": "13.3.8",
-        "@schematics/angular": "13.3.8",
+        "@angular-devkit/architect": "0.1400.5",
+        "@angular-devkit/core": "14.0.5",
+        "@angular-devkit/schematics": "14.0.5",
+        "@schematics/angular": "14.0.5",
         "@yarnpkg/lockfile": "1.1.0",
         "ansi-colors": "4.1.1",
-        "debug": "4.3.3",
-        "ini": "2.0.0",
-        "inquirer": "8.2.0",
+        "debug": "4.3.4",
+        "ini": "3.0.0",
+        "inquirer": "8.2.4",
         "jsonc-parser": "3.0.0",
-        "npm-package-arg": "8.1.5",
-        "npm-pick-manifest": "6.1.1",
+        "npm-package-arg": "9.0.2",
+        "npm-pick-manifest": "7.0.1",
         "open": "8.4.0",
         "ora": "5.4.1",
-        "pacote": "12.0.3",
+        "pacote": "13.3.0",
         "resolve": "1.22.0",
-        "semver": "7.3.5",
+        "semver": "7.3.7",
         "symbol-observable": "4.0.0",
-        "uuid": "8.3.2"
+        "uuid": "8.3.2",
+        "yargs": "17.4.1"
       },
       "dependencies": {
         "ansi-escapes": {
@@ -652,6 +651,17 @@
           "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
           "dev": true
         },
+        "cliui": {
+          "version": "7.0.4",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+          "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+          "dev": true,
+          "requires": {
+            "string-width": "^4.2.0",
+            "strip-ansi": "^6.0.0",
+            "wrap-ansi": "^7.0.0"
+          }
+        },
         "color-convert": {
           "version": "2.0.1",
           "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -668,9 +678,9 @@
           "dev": true
         },
         "debug": {
-          "version": "4.3.3",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
-          "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+          "version": "4.3.4",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+          "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
           "dev": true,
           "requires": {
             "ms": "2.1.2"
@@ -692,15 +702,15 @@
           "dev": true
         },
         "ini": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
-          "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.0.tgz",
+          "integrity": "sha512-TxYQaeNW/N8ymDvwAxPyRbhMBtnEwuvaTYpOQkFx1nSeusgezHniEc/l35Vo4iCq/mMiTJbpD7oYxN98hFlfmw==",
           "dev": true
         },
         "inquirer": {
-          "version": "8.2.0",
-          "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz",
-          "integrity": "sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==",
+          "version": "8.2.4",
+          "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz",
+          "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==",
           "dev": true,
           "requires": {
             "ansi-escapes": "^4.2.1",
@@ -713,10 +723,11 @@
             "mute-stream": "0.0.8",
             "ora": "^5.4.1",
             "run-async": "^2.4.0",
-            "rxjs": "^7.2.0",
+            "rxjs": "^7.5.5",
             "string-width": "^4.1.0",
             "strip-ansi": "^6.0.0",
-            "through": "^2.3.6"
+            "through": "^2.3.6",
+            "wrap-ansi": "^7.0.0"
           }
         },
         "is-core-module": {
@@ -793,9 +804,9 @@
           }
         },
         "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
           "dev": true,
           "requires": {
             "lru-cache": "^6.0.0"
@@ -841,29 +852,67 @@
           "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
           "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
           "dev": true
+        },
+        "wrap-ansi": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+          "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.0.0",
+            "string-width": "^4.1.0",
+            "strip-ansi": "^6.0.0"
+          }
+        },
+        "y18n": {
+          "version": "5.0.8",
+          "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+          "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+          "dev": true
+        },
+        "yargs": {
+          "version": "17.4.1",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz",
+          "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==",
+          "dev": true,
+          "requires": {
+            "cliui": "^7.0.2",
+            "escalade": "^3.1.1",
+            "get-caller-file": "^2.0.5",
+            "require-directory": "^2.1.1",
+            "string-width": "^4.2.3",
+            "y18n": "^5.0.5",
+            "yargs-parser": "^21.0.0"
+          }
+        },
+        "yargs-parser": {
+          "version": "21.0.1",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz",
+          "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==",
+          "dev": true
         }
       }
     },
     "@angular/common": {
-      "version": "13.3.11",
-      "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.3.11.tgz",
-      "integrity": "sha512-gPMwDYIAag1izXm2tRQ6EOIx9FVEUqLdr+qYtRVoQtoBmfkoTSLGcpeBXqqlPVxVPbA6Li1WZZT5wxLLlLAN+Q==",
+      "version": "14.0.5",
+      "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.0.5.tgz",
+      "integrity": "sha512-YFRPxx3yRLjk0gPL7tm/97mi8+Pjt3q6zWCjrLkAlDjniDvgmKNWIQ1h6crZQR0Cw7yNqK0QoFXQgTw0GJIWLQ==",
       "requires": {
         "tslib": "^2.3.0"
       }
     },
     "@angular/compiler": {
-      "version": "13.3.11",
-      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.3.11.tgz",
-      "integrity": "sha512-EV6JCBbXdHDHbPShWmymvuoxFYG0KVc8sDJpYp47WLHCY2zgZaXhvWs//Hrls3fmi+TGTekgRa2jOBBNce/Ggg==",
+      "version": "14.0.5",
+      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.0.5.tgz",
+      "integrity": "sha512-2Fxrdd5558FFSgWU0szYMo6Lea1jzBPzn8oAcLxo/OkaHgX8tSrlmY6y3TMlSxJu8NbdKcq1CqFMrfw5mqtoDA==",
       "requires": {
         "tslib": "^2.3.0"
       }
     },
     "@angular/compiler-cli": {
-      "version": "13.3.11",
-      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.3.11.tgz",
-      "integrity": "sha512-cl+3Wzxt8NRi2WY+RdsxuQ3yQRUp8pSlfSlJJnfaKE1BEqap6uem2DovuhnIbmrLhxZ5xt7o+I1szyO6sn6+ag==",
+      "version": "14.0.5",
+      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.0.5.tgz",
+      "integrity": "sha512-1bzojB5OoI/YLC7er+h+v1teG4Pp4jUxsFm9FmmgGaJ4gfadsPshzhZNASKoq/g7bQB7RnX0kgTGwwQImpirwQ==",
       "dev": true,
       "requires": {
         "@babel/core": "^7.17.2",
@@ -878,63 +927,6 @@
         "yargs": "^17.2.1"
       },
       "dependencies": {
-        "@babel/code-frame": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
-          "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
-          "dev": true,
-          "requires": {
-            "@babel/highlight": "^7.18.6"
-          }
-        },
-        "@babel/core": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz",
-          "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==",
-          "dev": true,
-          "requires": {
-            "@ampproject/remapping": "^2.1.0",
-            "@babel/code-frame": "^7.18.6",
-            "@babel/generator": "^7.18.6",
-            "@babel/helper-compilation-targets": "^7.18.6",
-            "@babel/helper-module-transforms": "^7.18.6",
-            "@babel/helpers": "^7.18.6",
-            "@babel/parser": "^7.18.6",
-            "@babel/template": "^7.18.6",
-            "@babel/traverse": "^7.18.6",
-            "@babel/types": "^7.18.6",
-            "convert-source-map": "^1.7.0",
-            "debug": "^4.1.0",
-            "gensync": "^1.0.0-beta.2",
-            "json5": "^2.2.1",
-            "semver": "^6.3.0"
-          },
-          "dependencies": {
-            "semver": {
-              "version": "6.3.0",
-              "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-              "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-              "dev": true
-            }
-          }
-        },
-        "@babel/helper-validator-identifier": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
-          "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
-          "dev": true
-        },
-        "@babel/highlight": {
-          "version": "7.18.6",
-          "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
-          "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-validator-identifier": "^7.18.6",
-            "chalk": "^2.0.0",
-            "js-tokens": "^4.0.0"
-          }
-        },
         "ansi-regex": {
           "version": "5.0.1",
           "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
@@ -991,15 +983,6 @@
             "yallist": "^4.0.0"
           }
         },
-        "magic-string": {
-          "version": "0.26.2",
-          "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz",
-          "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==",
-          "dev": true,
-          "requires": {
-            "sourcemap-codec": "^1.4.8"
-          }
-        },
         "semver": {
           "version": "7.3.7",
           "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
@@ -1070,9 +1053,9 @@
       }
     },
     "@angular/core": {
-      "version": "13.3.11",
-      "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.3.11.tgz",
-      "integrity": "sha512-9BmE2CxyV0g+AkBeuc8IwjSOiJ8Y+kptXnqD/J8EAFT3B0/fLGVnjFdZC6Sev9L0SNZb6qdzebpfIOLqbUjReQ==",
+      "version": "14.0.5",
+      "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.0.5.tgz",
+      "integrity": "sha512-4MIfFM2nD+N0/Dk8xKfKvbdS/zYRhQgdnKT6ZIIV7Y/XCfn5QAIa4+vB5BEAZpuzSsZHLVdBQQ0TkaiONLfL2Q==",
       "requires": {
         "tslib": "^2.3.0"
       }
@@ -1093,38 +1076,29 @@
       }
     },
     "@angular/forms": {
-      "version": "13.3.11",
-      "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.3.11.tgz",
-      "integrity": "sha512-iMgTNB+Qc3TsfAZSk1FnUE6MVoddPzxhG9AKCfSlvpjFh8VmXkIjxPL3dun7J8OjayT3X+B8f7LZ9AkKNXtBKw==",
+      "version": "14.0.5",
+      "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.0.5.tgz",
+      "integrity": "sha512-N1sxzaG4r0rwT3++lyYmbCUgSZaZA7E2NURvU1OFw6fay/XlI+ss1ZBFc6X0XfSa+OWxPuIBKnPmmQlP7aKOiQ==",
       "requires": {
         "tslib": "^2.3.0"
       }
     },
     "@angular/language-service": {
-      "version": "13.3.11",
-      "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-13.3.11.tgz",
-      "integrity": "sha512-EDw8L0RKrRYUYWB2P0xS1WRazYvv5gOguX+IwPZlCpR95QLQPTTpmNaqvnYjmFlvQjGHJYc8wqtJJIIMiL6FSA==",
+      "version": "14.0.5",
+      "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.0.5.tgz",
+      "integrity": "sha512-ynPBlUKXlvMOUtv5pJ7t/dPKa7By3hCkKMziW5q6G/jwg6d0ddrQf3tAdRAjsCO6pL0yR6kQ6f/lky7+3Km4SQ==",
       "dev": true
     },
     "@angular/localize": {
-      "version": "13.3.11",
-      "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-13.3.11.tgz",
-      "integrity": "sha512-plMAkj07mcYYsidv7R4NFRYdxQEJJMK7IGp7BeaEwtrBbplqQORIMy2HOUDet/gWg/D1b/KFTjTAhlmNdczYtg==",
+      "version": "14.0.5",
+      "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-14.0.5.tgz",
+      "integrity": "sha512-TjyzlNAv5AA5kvIvy5UoOt32pv/1NPdhNena0LMR9XK+YhXbgK4ezJqj+mLPmZlqE56DChBpYGLFfHRA057mDA==",
       "requires": {
-        "@babel/core": "7.17.2",
-        "glob": "7.2.0",
+        "@babel/core": "7.18.2",
+        "glob": "8.0.3",
         "yargs": "^17.2.1"
       },
       "dependencies": {
-        "@ampproject/remapping": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
-          "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
-          "requires": {
-            "@jridgewell/gen-mapping": "^0.1.0",
-            "@jridgewell/trace-mapping": "^0.3.9"
-          }
-        },
         "@babel/code-frame": {
           "version": "7.18.6",
           "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
@@ -1134,24 +1108,24 @@
           }
         },
         "@babel/core": {
-          "version": "7.17.2",
-          "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.2.tgz",
-          "integrity": "sha512-R3VH5G42VSDolRHyUO4V2cfag8WHcZyxdq5Z/m8Xyb92lW/Erm/6kM+XtRFGf3Mulre3mveni2NHfEUws8wSvw==",
+          "version": "7.18.2",
+          "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz",
+          "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==",
           "requires": {
-            "@ampproject/remapping": "^2.0.0",
+            "@ampproject/remapping": "^2.1.0",
             "@babel/code-frame": "^7.16.7",
-            "@babel/generator": "^7.17.0",
-            "@babel/helper-compilation-targets": "^7.16.7",
-            "@babel/helper-module-transforms": "^7.16.7",
-            "@babel/helpers": "^7.17.2",
-            "@babel/parser": "^7.17.0",
+            "@babel/generator": "^7.18.2",
+            "@babel/helper-compilation-targets": "^7.18.2",
+            "@babel/helper-module-transforms": "^7.18.0",
+            "@babel/helpers": "^7.18.2",
+            "@babel/parser": "^7.18.0",
             "@babel/template": "^7.16.7",
-            "@babel/traverse": "^7.17.0",
-            "@babel/types": "^7.17.0",
+            "@babel/traverse": "^7.18.2",
+            "@babel/types": "^7.18.2",
             "convert-source-map": "^1.7.0",
             "debug": "^4.1.0",
             "gensync": "^1.0.0-beta.2",
-            "json5": "^2.1.2",
+            "json5": "^2.2.1",
             "semver": "^6.3.0"
           }
         },
@@ -1183,6 +1157,14 @@
             "color-convert": "^2.0.1"
           }
         },
+        "brace-expansion": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+          "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+          "requires": {
+            "balanced-match": "^1.0.0"
+          }
+        },
         "cliui": {
           "version": "7.0.4",
           "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
@@ -1207,16 +1189,15 @@
           "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
         },
         "glob": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
-          "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+          "version": "8.0.3",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz",
+          "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==",
           "requires": {
             "fs.realpath": "^1.0.0",
             "inflight": "^1.0.4",
             "inherits": "2",
-            "minimatch": "^3.0.4",
-            "once": "^1.3.0",
-            "path-is-absolute": "^1.0.0"
+            "minimatch": "^5.0.1",
+            "once": "^1.3.0"
           }
         },
         "is-fullwidth-code-point": {
@@ -1224,6 +1205,14 @@
           "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
           "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
         },
+        "minimatch": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
+          "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
+          "requires": {
+            "brace-expansion": "^2.0.1"
+          }
+        },
         "string-width": {
           "version": "4.2.3",
           "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
@@ -1287,25 +1276,25 @@
       }
     },
     "@angular/platform-browser": {
-      "version": "13.3.11",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.3.11.tgz",
-      "integrity": "sha512-PG3chCErARb6wNzkOed2NsZmgvTmbumRx/6sMXqGkDKXYQm0JULnl4X42Rn+JCgJ9DLJi5/jrd1dbcBCrKk9Vg==",
+      "version": "14.0.5",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.0.5.tgz",
+      "integrity": "sha512-uWFLBKuEgLuT1HnWctr8rMdnwZZ2gEcUWbhbf6DvwePcN1G5T+ltDOcQ3o2a8396hgmU0JyxBFVyGC/PiCe5fQ==",
       "requires": {
         "tslib": "^2.3.0"
       }
     },
     "@angular/platform-browser-dynamic": {
-      "version": "13.3.11",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.3.11.tgz",
-      "integrity": "sha512-xM0VRC1Nw//SHO3gkghUHyjCaaQbk1UYMq4vIu3iKVq9KLqOSZgccv0NcOKHzXXN3S5RgX2auuyOUOCD6ny1Pg==",
+      "version": "14.0.5",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.0.5.tgz",
+      "integrity": "sha512-VVka6K5jFd6DkFOq+ddMUj1QuI5+As5SbDLkJW0N452cYXA+CE5Y265DvbNbdXXl5wSffGGrizlKrI8jp9uLEQ==",
       "requires": {
         "tslib": "^2.3.0"
       }
     },
     "@angular/router": {
-      "version": "13.3.11",
-      "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.3.11.tgz",
-      "integrity": "sha512-bJTcxDYKEyoqtsi1kJcDJWLmEN+dXpwhU07SsqUwfyN4V5fYF1ApDhpJ4c17hNdjEqe106srT9tiHXhmWayhmQ==",
+      "version": "14.0.5",
+      "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.0.5.tgz",
+      "integrity": "sha512-10V6MCzg65HdnylSOSDvmcvhWhsVaedrzyfulvAT1/f77HZkK8yv1lTZ9gL/rAMOnKoH3uzdQqlDj8AnuRLKFw==",
       "requires": {
         "tslib": "^2.3.0"
       }
@@ -1384,26 +1373,26 @@
       "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ=="
     },
     "@babel/core": {
-      "version": "7.16.12",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz",
-      "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==",
+      "version": "7.17.10",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz",
+      "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==",
       "dev": true,
       "requires": {
+        "@ampproject/remapping": "^2.1.0",
         "@babel/code-frame": "^7.16.7",
-        "@babel/generator": "^7.16.8",
-        "@babel/helper-compilation-targets": "^7.16.7",
-        "@babel/helper-module-transforms": "^7.16.7",
-        "@babel/helpers": "^7.16.7",
-        "@babel/parser": "^7.16.12",
+        "@babel/generator": "^7.17.10",
+        "@babel/helper-compilation-targets": "^7.17.10",
+        "@babel/helper-module-transforms": "^7.17.7",
+        "@babel/helpers": "^7.17.9",
+        "@babel/parser": "^7.17.10",
         "@babel/template": "^7.16.7",
-        "@babel/traverse": "^7.16.10",
-        "@babel/types": "^7.16.8",
+        "@babel/traverse": "^7.17.10",
+        "@babel/types": "^7.17.10",
         "convert-source-map": "^1.7.0",
         "debug": "^4.1.0",
         "gensync": "^1.0.0-beta.2",
-        "json5": "^2.1.2",
-        "semver": "^6.3.0",
-        "source-map": "^0.5.0"
+        "json5": "^2.2.1",
+        "semver": "^6.3.0"
       },
       "dependencies": {
         "@babel/code-frame": {
@@ -1431,12 +1420,6 @@
             "chalk": "^2.0.0",
             "js-tokens": "^4.0.0"
           }
-        },
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
-          "dev": true
         }
       }
     },
@@ -2336,9 +2319,9 @@
       }
     },
     "@babel/plugin-transform-runtime": {
-      "version": "7.16.10",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.10.tgz",
-      "integrity": "sha512-9nwTiqETv2G7xI4RvXHNfpGdr8pAA+Q/YtN3yLK7OoK7n9OibVm/xymJ838a9A6E/IciOLPj82lZk0fW6O4O7w==",
+      "version": "7.17.10",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.10.tgz",
+      "integrity": "sha512-6jrMilUAJhktTr56kACL8LnWC5hx3Lf27BS0R0DSyW/OoJfb/iTHeE96V3b1dgKG3FSFdd/0culnYWMkjcKCig==",
       "dev": true,
       "requires": {
         "@babel/helper-module-imports": "^7.16.7",
@@ -2415,27 +2398,27 @@
       }
     },
     "@babel/preset-env": {
-      "version": "7.16.11",
-      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz",
-      "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==",
+      "version": "7.17.10",
+      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.17.10.tgz",
+      "integrity": "sha512-YNgyBHZQpeoBSRBg0xixsZzfT58Ze1iZrajvv0lJc70qDDGuGfonEnMGfWeSY0mQ3JTuCWFbMkzFRVafOyJx4g==",
       "dev": true,
       "requires": {
-        "@babel/compat-data": "^7.16.8",
-        "@babel/helper-compilation-targets": "^7.16.7",
+        "@babel/compat-data": "^7.17.10",
+        "@babel/helper-compilation-targets": "^7.17.10",
         "@babel/helper-plugin-utils": "^7.16.7",
         "@babel/helper-validator-option": "^7.16.7",
         "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7",
         "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7",
         "@babel/plugin-proposal-async-generator-functions": "^7.16.8",
         "@babel/plugin-proposal-class-properties": "^7.16.7",
-        "@babel/plugin-proposal-class-static-block": "^7.16.7",
+        "@babel/plugin-proposal-class-static-block": "^7.17.6",
         "@babel/plugin-proposal-dynamic-import": "^7.16.7",
         "@babel/plugin-proposal-export-namespace-from": "^7.16.7",
         "@babel/plugin-proposal-json-strings": "^7.16.7",
         "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7",
         "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7",
         "@babel/plugin-proposal-numeric-separator": "^7.16.7",
-        "@babel/plugin-proposal-object-rest-spread": "^7.16.7",
+        "@babel/plugin-proposal-object-rest-spread": "^7.17.3",
         "@babel/plugin-proposal-optional-catch-binding": "^7.16.7",
         "@babel/plugin-proposal-optional-chaining": "^7.16.7",
         "@babel/plugin-proposal-private-methods": "^7.16.11",
@@ -2461,7 +2444,7 @@
         "@babel/plugin-transform-block-scoping": "^7.16.7",
         "@babel/plugin-transform-classes": "^7.16.7",
         "@babel/plugin-transform-computed-properties": "^7.16.7",
-        "@babel/plugin-transform-destructuring": "^7.16.7",
+        "@babel/plugin-transform-destructuring": "^7.17.7",
         "@babel/plugin-transform-dotall-regex": "^7.16.7",
         "@babel/plugin-transform-duplicate-keys": "^7.16.7",
         "@babel/plugin-transform-exponentiation-operator": "^7.16.7",
@@ -2470,15 +2453,15 @@
         "@babel/plugin-transform-literals": "^7.16.7",
         "@babel/plugin-transform-member-expression-literals": "^7.16.7",
         "@babel/plugin-transform-modules-amd": "^7.16.7",
-        "@babel/plugin-transform-modules-commonjs": "^7.16.8",
-        "@babel/plugin-transform-modules-systemjs": "^7.16.7",
+        "@babel/plugin-transform-modules-commonjs": "^7.17.9",
+        "@babel/plugin-transform-modules-systemjs": "^7.17.8",
         "@babel/plugin-transform-modules-umd": "^7.16.7",
-        "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.10",
         "@babel/plugin-transform-new-target": "^7.16.7",
         "@babel/plugin-transform-object-super": "^7.16.7",
         "@babel/plugin-transform-parameters": "^7.16.7",
         "@babel/plugin-transform-property-literals": "^7.16.7",
-        "@babel/plugin-transform-regenerator": "^7.16.7",
+        "@babel/plugin-transform-regenerator": "^7.17.9",
         "@babel/plugin-transform-reserved-words": "^7.16.7",
         "@babel/plugin-transform-shorthand-properties": "^7.16.7",
         "@babel/plugin-transform-spread": "^7.16.7",
@@ -2488,11 +2471,11 @@
         "@babel/plugin-transform-unicode-escapes": "^7.16.7",
         "@babel/plugin-transform-unicode-regex": "^7.16.7",
         "@babel/preset-modules": "^0.1.5",
-        "@babel/types": "^7.16.8",
+        "@babel/types": "^7.17.10",
         "babel-plugin-polyfill-corejs2": "^0.3.0",
         "babel-plugin-polyfill-corejs3": "^0.5.0",
         "babel-plugin-polyfill-regenerator": "^0.3.0",
-        "core-js-compat": "^3.20.2",
+        "core-js-compat": "^3.22.1",
         "semver": "^6.3.0"
       }
     },
@@ -2510,9 +2493,9 @@
       }
     },
     "@babel/runtime": {
-      "version": "7.16.7",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz",
-      "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==",
+      "version": "7.17.9",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz",
+      "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==",
       "dev": true,
       "requires": {
         "regenerator-runtime": "^0.13.4"
@@ -2617,6 +2600,73 @@
       "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
       "dev": true
     },
+    "@csstools/postcss-color-function": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz",
+      "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==",
+      "dev": true,
+      "requires": {
+        "@csstools/postcss-progressive-custom-properties": "^1.1.0",
+        "postcss-value-parser": "^4.2.0"
+      }
+    },
+    "@csstools/postcss-font-format-keywords": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz",
+      "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==",
+      "dev": true,
+      "requires": {
+        "postcss-value-parser": "^4.2.0"
+      }
+    },
+    "@csstools/postcss-hwb-function": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz",
+      "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==",
+      "dev": true,
+      "requires": {
+        "postcss-value-parser": "^4.2.0"
+      }
+    },
+    "@csstools/postcss-ic-unit": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz",
+      "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==",
+      "dev": true,
+      "requires": {
+        "@csstools/postcss-progressive-custom-properties": "^1.1.0",
+        "postcss-value-parser": "^4.2.0"
+      }
+    },
+    "@csstools/postcss-is-pseudo-class": {
+      "version": "2.0.7",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz",
+      "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==",
+      "dev": true,
+      "requires": {
+        "@csstools/selector-specificity": "^2.0.0",
+        "postcss-selector-parser": "^6.0.10"
+      }
+    },
+    "@csstools/postcss-normalize-display-values": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz",
+      "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==",
+      "dev": true,
+      "requires": {
+        "postcss-value-parser": "^4.2.0"
+      }
+    },
+    "@csstools/postcss-oklab-function": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz",
+      "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==",
+      "dev": true,
+      "requires": {
+        "@csstools/postcss-progressive-custom-properties": "^1.1.0",
+        "postcss-value-parser": "^4.2.0"
+      }
+    },
     "@csstools/postcss-progressive-custom-properties": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz",
@@ -2626,6 +2676,21 @@
         "postcss-value-parser": "^4.2.0"
       }
     },
+    "@csstools/postcss-stepped-value-functions": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz",
+      "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==",
+      "dev": true,
+      "requires": {
+        "postcss-value-parser": "^4.2.0"
+      }
+    },
+    "@csstools/postcss-unset-value": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz",
+      "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==",
+      "dev": true
+    },
     "@csstools/selector-specificity": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz",
@@ -2644,9 +2709,9 @@
       }
     },
     "@discoveryjs/json-ext": {
-      "version": "0.5.6",
-      "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz",
-      "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==",
+      "version": "0.5.7",
+      "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
+      "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
       "dev": true
     },
     "@firebase/analytics": {
@@ -3282,10 +3347,16 @@
       "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==",
       "dev": true
     },
+    "@leichtgewicht/ip-codec": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz",
+      "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==",
+      "dev": true
+    },
     "@ngtools/webpack": {
-      "version": "13.3.8",
-      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.3.8.tgz",
-      "integrity": "sha512-meuXHb1zQ5lz7Uj7kGYTgjd9Tknsi/0jJxs+12nz06h0tifIyIoGU01YA3mUj4/bntIjfWif35KGYP+23bbAVw==",
+      "version": "14.0.5",
+      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.0.5.tgz",
+      "integrity": "sha512-fOHtOYfuQhMTcqOfASuH5z8LwEmIG8323yPTP528w9RM9bUr3JaoK1RNcVuLKSvAGRTvTfeykK3/Eri/YW1DvQ==",
       "dev": true
     },
     "@nodelib/fs.scandir": {
@@ -3315,12 +3386,12 @@
       }
     },
     "@npmcli/fs": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz",
-      "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.0.tgz",
+      "integrity": "sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ==",
       "dev": true,
       "requires": {
-        "@gar/promisify": "^1.0.1",
+        "@gar/promisify": "^1.1.3",
         "semver": "^7.3.5"
       },
       "dependencies": {
@@ -3345,15 +3416,16 @@
       }
     },
     "@npmcli/git": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz",
-      "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==",
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.1.tgz",
+      "integrity": "sha512-UU85F/T+F1oVn3IsB/L6k9zXIMpXBuUBE25QDH0SsURwT6IOBqkC7M16uqo2vVZIyji3X1K4XH9luip7YekH1A==",
       "dev": true,
       "requires": {
-        "@npmcli/promise-spawn": "^1.3.2",
-        "lru-cache": "^6.0.0",
+        "@npmcli/promise-spawn": "^3.0.0",
+        "lru-cache": "^7.4.4",
         "mkdirp": "^1.0.4",
-        "npm-pick-manifest": "^6.1.1",
+        "npm-pick-manifest": "^7.0.0",
+        "proc-log": "^2.0.0",
         "promise-inflight": "^1.0.1",
         "promise-retry": "^2.0.1",
         "semver": "^7.3.5",
@@ -3361,13 +3433,10 @@
       },
       "dependencies": {
         "lru-cache": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-          "dev": true,
-          "requires": {
-            "yallist": "^4.0.0"
-          }
+          "version": "7.12.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.12.0.tgz",
+          "integrity": "sha512-OIP3DwzRZDfLg9B9VP/huWBlpvbkmbfiBy8xmsXp4RPmE4A3MhwNozc5ZJ3fWnSg8fDcdlE/neRTPG2ycEKliw==",
+          "dev": true
         },
         "mkdirp": {
           "version": "1.0.4",
@@ -3382,6 +3451,17 @@
           "dev": true,
           "requires": {
             "lru-cache": "^6.0.0"
+          },
+          "dependencies": {
+            "lru-cache": {
+              "version": "6.0.0",
+              "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+              "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+              "dev": true,
+              "requires": {
+                "yallist": "^4.0.0"
+              }
+            }
           }
         },
         "which": {
@@ -3406,9 +3486,9 @@
       }
     },
     "@npmcli/move-file": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz",
-      "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz",
+      "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==",
       "dev": true,
       "requires": {
         "mkdirp": "^1.0.4",
@@ -3433,30 +3513,30 @@
       }
     },
     "@npmcli/node-gyp": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz",
-      "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz",
+      "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==",
       "dev": true
     },
     "@npmcli/promise-spawn": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz",
-      "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz",
+      "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==",
       "dev": true,
       "requires": {
         "infer-owner": "^1.0.4"
       }
     },
     "@npmcli/run-script": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-2.0.0.tgz",
-      "integrity": "sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig==",
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-3.0.3.tgz",
+      "integrity": "sha512-ZXL6qgC5NjwfZJ2nET+ZSLEz/PJgJ/5CU90C2S66dZY4Jw73DasS4ZCXuy/KHWYP0imjJ4VtA+Gebb5BxxKp9Q==",
       "dev": true,
       "requires": {
-        "@npmcli/node-gyp": "^1.0.2",
-        "@npmcli/promise-spawn": "^1.3.2",
-        "node-gyp": "^8.2.0",
-        "read-package-json-fast": "^2.0.1"
+        "@npmcli/node-gyp": "^2.0.0",
+        "@npmcli/promise-spawn": "^3.0.0",
+        "node-gyp": "^8.4.1",
+        "read-package-json-fast": "^2.0.3"
       },
       "dependencies": {
         "ansi-regex": {
@@ -3708,13 +3788,13 @@
       "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="
     },
     "@schematics/angular": {
-      "version": "13.3.8",
-      "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.8.tgz",
-      "integrity": "sha512-VKRTTNYX5OsaJ6sWlCIuU71qihV3ysNNJ49wqLedOlWm1v0GMwoyGMCTJk9OZab1rpo/tYfLTcUlYqP3l6GVDQ==",
+      "version": "14.0.5",
+      "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.0.5.tgz",
+      "integrity": "sha512-xZjXHLn1djIvKJFiOfspTrzAomtDGRqGgsOo06glBkC+cqKCyyXU1Hgxnd3S5V+8a6TpYgX25AXihtE3BeCJzg==",
       "dev": true,
       "requires": {
-        "@angular-devkit/core": "13.3.8",
-        "@angular-devkit/schematics": "13.3.8",
+        "@angular-devkit/core": "14.0.5",
+        "@angular-devkit/schematics": "14.0.5",
         "jsonc-parser": "3.0.0"
       }
     },
@@ -4261,9 +4341,9 @@
       }
     },
     "ajv": {
-      "version": "8.9.0",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz",
-      "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==",
+      "version": "8.11.0",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
+      "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
       "dev": true,
       "requires": {
         "fast-deep-equal": "^3.1.1",
@@ -4885,18 +4965,16 @@
         }
       }
     },
-    "bonjour": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
-      "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==",
+    "bonjour-service": {
+      "version": "1.0.13",
+      "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.13.tgz",
+      "integrity": "sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA==",
       "dev": true,
       "requires": {
-        "array-flatten": "^2.1.0",
-        "deep-equal": "^1.0.1",
+        "array-flatten": "^2.1.2",
         "dns-equal": "^1.0.0",
-        "dns-txt": "^2.0.2",
-        "multicast-dns": "^6.0.1",
-        "multicast-dns-service-types": "^1.1.0"
+        "fast-deep-equal": "^3.1.3",
+        "multicast-dns": "^7.2.5"
       }
     },
     "boolbase": {
@@ -5013,6 +5091,7 @@
       "version": "1.1.11",
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
       "requires": {
         "balanced-match": "^1.0.0",
         "concat-map": "0.0.1"
@@ -5079,12 +5158,6 @@
       "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
       "dev": true
     },
-    "buffer-indexof": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
-      "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
-      "dev": true
-    },
     "buffer-indexof-polyfill": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz",
@@ -5104,10 +5177,33 @@
       "dev": true
     },
     "builtins": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
-      "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==",
-      "dev": true
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz",
+      "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==",
+      "dev": true,
+      "requires": {
+        "semver": "^7.0.0"
+      },
+      "dependencies": {
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
+        "semver": {
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        }
+      }
     },
     "bytes": {
       "version": "3.0.0",
@@ -5116,41 +5212,78 @@
       "dev": true
     },
     "cacache": {
-      "version": "15.3.0",
-      "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz",
-      "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==",
+      "version": "16.0.7",
+      "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.0.7.tgz",
+      "integrity": "sha512-a4zfQpp5vm4Ipdvbj+ZrPonikRhm6WBEd4zT1Yc1DXsmAxrPgDwWBLF/u/wTVXSFPIgOJ1U3ghSa2Xm4s3h28w==",
       "dev": true,
       "requires": {
-        "@npmcli/fs": "^1.0.0",
-        "@npmcli/move-file": "^1.0.1",
+        "@npmcli/fs": "^2.1.0",
+        "@npmcli/move-file": "^2.0.0",
         "chownr": "^2.0.0",
-        "fs-minipass": "^2.0.0",
-        "glob": "^7.1.4",
+        "fs-minipass": "^2.1.0",
+        "glob": "^8.0.1",
         "infer-owner": "^1.0.4",
-        "lru-cache": "^6.0.0",
-        "minipass": "^3.1.1",
+        "lru-cache": "^7.7.1",
+        "minipass": "^3.1.6",
         "minipass-collect": "^1.0.2",
         "minipass-flush": "^1.0.5",
-        "minipass-pipeline": "^1.2.2",
-        "mkdirp": "^1.0.3",
+        "minipass-pipeline": "^1.2.4",
+        "mkdirp": "^1.0.4",
         "p-map": "^4.0.0",
         "promise-inflight": "^1.0.1",
         "rimraf": "^3.0.2",
-        "ssri": "^8.0.1",
-        "tar": "^6.0.2",
+        "ssri": "^9.0.0",
+        "tar": "^6.1.11",
         "unique-filename": "^1.1.1"
       },
       "dependencies": {
+        "brace-expansion": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+          "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+          "dev": true,
+          "requires": {
+            "balanced-match": "^1.0.0"
+          }
+        },
         "chownr": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
           "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
           "dev": true
         },
+        "glob": {
+          "version": "8.0.3",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz",
+          "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==",
+          "dev": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^5.0.1",
+            "once": "^1.3.0"
+          }
+        },
         "lru-cache": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+          "version": "7.12.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.12.0.tgz",
+          "integrity": "sha512-OIP3DwzRZDfLg9B9VP/huWBlpvbkmbfiBy8xmsXp4RPmE4A3MhwNozc5ZJ3fWnSg8fDcdlE/neRTPG2ycEKliw==",
+          "dev": true
+        },
+        "minimatch": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
+          "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^2.0.1"
+          }
+        },
+        "minipass": {
+          "version": "3.3.4",
+          "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz",
+          "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==",
           "dev": true,
           "requires": {
             "yallist": "^4.0.0"
@@ -5179,6 +5312,41 @@
           "dev": true,
           "requires": {
             "glob": "^7.1.3"
+          },
+          "dependencies": {
+            "brace-expansion": {
+              "version": "1.1.11",
+              "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+              "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+              "dev": true,
+              "requires": {
+                "balanced-match": "^1.0.0",
+                "concat-map": "0.0.1"
+              }
+            },
+            "glob": {
+              "version": "7.2.3",
+              "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+              "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+              "dev": true,
+              "requires": {
+                "fs.realpath": "^1.0.0",
+                "inflight": "^1.0.4",
+                "inherits": "2",
+                "minimatch": "^3.1.1",
+                "once": "^1.3.0",
+                "path-is-absolute": "^1.0.0"
+              }
+            },
+            "minimatch": {
+              "version": "3.1.2",
+              "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+              "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+              "dev": true,
+              "requires": {
+                "brace-expansion": "^1.1.7"
+              }
+            }
           }
         },
         "tar": {
@@ -5360,12 +5528,6 @@
       "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
       "dev": true
     },
-    "circular-dependency-plugin": {
-      "version": "5.2.2",
-      "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz",
-      "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==",
-      "dev": true
-    },
     "cjson": {
       "version": "0.3.3",
       "resolved": "https://registry.npmjs.org/cjson/-/cjson-0.3.3.tgz",
@@ -5761,7 +5923,8 @@
     "concat-map": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+      "dev": true
     },
     "configstore": {
       "version": "5.0.1",
@@ -5874,9 +6037,9 @@
       }
     },
     "copy-webpack-plugin": {
-      "version": "10.2.1",
-      "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.1.tgz",
-      "integrity": "sha512-nr81NhCAIpAWXGCK5thrKmfCQ6GDY0L5RN0U+BnIn/7Us55+UCex5ANNsNKmIVtDRnk0Ecf+/kzp9SUVrrBMLg==",
+      "version": "10.2.4",
+      "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz",
+      "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==",
       "dev": true,
       "requires": {
         "fast-glob": "^3.2.7",
@@ -5910,12 +6073,6 @@
         }
       }
     },
-    "core-js": {
-      "version": "3.20.3",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.20.3.tgz",
-      "integrity": "sha512-vVl8j8ph6tRS3B8qir40H7yw7voy17xL0piAjlbBUsH7WIfzoedL/ZOr1OV9FyZQLWXsayOJyV4tnRyXR85/ag==",
-      "dev": true
-    },
     "core-js-compat": {
       "version": "3.23.4",
       "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.4.tgz",
@@ -6146,18 +6303,18 @@
       }
     },
     "css-loader": {
-      "version": "6.5.1",
-      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.5.1.tgz",
-      "integrity": "sha512-gEy2w9AnJNnD9Kuo4XAP9VflW/ujKoS9c/syO+uWMlm5igc7LysKzPXaDoR2vroROkSwsTS2tGr1yGGEbZOYZQ==",
+      "version": "6.7.1",
+      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz",
+      "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==",
       "dev": true,
       "requires": {
         "icss-utils": "^5.1.0",
-        "postcss": "^8.2.15",
+        "postcss": "^8.4.7",
         "postcss-modules-extract-imports": "^3.0.0",
         "postcss-modules-local-by-default": "^4.0.0",
         "postcss-modules-scope": "^3.0.0",
         "postcss-modules-values": "^4.0.0",
-        "postcss-value-parser": "^4.1.0",
+        "postcss-value-parser": "^4.2.0",
         "semver": "^7.3.5"
       },
       "dependencies": {
@@ -6226,9 +6383,9 @@
       }
     },
     "cssdb": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-5.1.0.tgz",
-      "integrity": "sha512-/vqjXhv1x9eGkE/zO6o8ZOI7dgdZbLVLUGyVRbPgk6YipXbW87YzUCcO+Jrmi5bwJlAH6oD+MNeZyRgXea1GZw==",
+      "version": "6.6.3",
+      "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.6.3.tgz",
+      "integrity": "sha512-7GDvDSmE+20+WcSMhP17Q1EVWUrLlbxxpMDqG731n8P99JhnQZHR9YvtjPvEHfjFUjvQJvdpKCjlKOX+xe4UVA==",
       "dev": true
     },
     "cssesc": {
@@ -6350,20 +6507,6 @@
         "mimic-response": "^1.0.0"
       }
     },
-    "deep-equal": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
-      "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
-      "dev": true,
-      "requires": {
-        "is-arguments": "^1.0.4",
-        "is-date-object": "^1.0.1",
-        "is-regex": "^1.0.4",
-        "object-is": "^1.0.1",
-        "object-keys": "^1.1.1",
-        "regexp.prototype.flags": "^1.2.0"
-      }
-    },
     "deep-extend": {
       "version": "0.6.0",
       "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
@@ -6430,59 +6573,6 @@
         "object-keys": "^1.1.1"
       }
     },
-    "del": {
-      "version": "6.1.1",
-      "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz",
-      "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==",
-      "dev": true,
-      "requires": {
-        "globby": "^11.0.1",
-        "graceful-fs": "^4.2.4",
-        "is-glob": "^4.0.1",
-        "is-path-cwd": "^2.2.0",
-        "is-path-inside": "^3.0.2",
-        "p-map": "^4.0.0",
-        "rimraf": "^3.0.2",
-        "slash": "^3.0.0"
-      },
-      "dependencies": {
-        "array-union": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
-          "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
-          "dev": true
-        },
-        "globby": {
-          "version": "11.1.0",
-          "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
-          "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
-          "dev": true,
-          "requires": {
-            "array-union": "^2.1.0",
-            "dir-glob": "^3.0.1",
-            "fast-glob": "^3.2.9",
-            "ignore": "^5.2.0",
-            "merge2": "^1.4.1",
-            "slash": "^3.0.0"
-          }
-        },
-        "rimraf": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
-          "dev": true,
-          "requires": {
-            "glob": "^7.1.3"
-          }
-        },
-        "slash": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-          "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-          "dev": true
-        }
-      }
-    },
     "delayed-stream": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -6547,22 +6637,12 @@
       "dev": true
     },
     "dns-packet": {
-      "version": "1.3.4",
-      "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz",
-      "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==",
+      "version": "5.4.0",
+      "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz",
+      "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==",
       "dev": true,
       "requires": {
-        "ip": "^1.1.0",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "dns-txt": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz",
-      "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==",
-      "dev": true,
-      "requires": {
-        "buffer-indexof": "^1.0.0"
+        "@leichtgewicht/ip-codec": "^2.0.1"
       }
     },
     "dom-serialize": {
@@ -6905,142 +6985,149 @@
         "es6-symbol": "^3.1.1"
       }
     },
+    "esbuild-android-64": {
+      "version": "0.14.38",
+      "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.38.tgz",
+      "integrity": "sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw==",
+      "dev": true,
+      "optional": true
+    },
     "esbuild-android-arm64": {
-      "version": "0.14.22",
-      "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.22.tgz",
-      "integrity": "sha512-k1Uu4uC4UOFgrnTj2zuj75EswFSEBK+H6lT70/DdS4mTAOfs2ECv2I9ZYvr3w0WL0T4YItzJdK7fPNxcPw6YmQ==",
+      "version": "0.14.38",
+      "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.38.tgz",
+      "integrity": "sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA==",
       "dev": true,
       "optional": true
     },
     "esbuild-darwin-64": {
-      "version": "0.14.22",
-      "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.22.tgz",
-      "integrity": "sha512-d8Ceuo6Vw6HM3fW218FB6jTY6O3r2WNcTAU0SGsBkXZ3k8SDoRLd3Nrc//EqzdgYnzDNMNtrWegK2Qsss4THhw==",
+      "version": "0.14.38",
+      "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.38.tgz",
+      "integrity": "sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA==",
       "dev": true,
       "optional": true
     },
     "esbuild-darwin-arm64": {
-      "version": "0.14.22",
-      "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.22.tgz",
-      "integrity": "sha512-YAt9Tj3SkIUkswuzHxkaNlT9+sg0xvzDvE75LlBo4DI++ogSgSmKNR6B4eUhU5EUUepVXcXdRIdqMq9ppeRqfw==",
+      "version": "0.14.38",
+      "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.38.tgz",
+      "integrity": "sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ==",
       "dev": true,
       "optional": true
     },
     "esbuild-freebsd-64": {
-      "version": "0.14.22",
-      "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.22.tgz",
-      "integrity": "sha512-ek1HUv7fkXMy87Qm2G4IRohN+Qux4IcnrDBPZGXNN33KAL0pEJJzdTv0hB/42+DCYWylSrSKxk3KUXfqXOoH4A==",
+      "version": "0.14.38",
+      "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.38.tgz",
+      "integrity": "sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig==",
       "dev": true,
       "optional": true
     },
     "esbuild-freebsd-arm64": {
-      "version": "0.14.22",
-      "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.22.tgz",
-      "integrity": "sha512-zPh9SzjRvr9FwsouNYTqgqFlsMIW07O8mNXulGeQx6O5ApgGUBZBgtzSlBQXkHi18WjrosYfsvp5nzOKiWzkjQ==",
+      "version": "0.14.38",
+      "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.38.tgz",
+      "integrity": "sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ==",
       "dev": true,
       "optional": true
     },
     "esbuild-linux-32": {
-      "version": "0.14.22",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.22.tgz",
-      "integrity": "sha512-SnpveoE4nzjb9t2hqCIzzTWBM0RzcCINDMBB67H6OXIuDa4KqFqaIgmTchNA9pJKOVLVIKd5FYxNiJStli21qg==",
+      "version": "0.14.38",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.38.tgz",
+      "integrity": "sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g==",
       "dev": true,
       "optional": true
     },
     "esbuild-linux-64": {
-      "version": "0.14.22",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.22.tgz",
-      "integrity": "sha512-Zcl9Wg7gKhOWWNqAjygyqzB+fJa19glgl2JG7GtuxHyL1uEnWlpSMytTLMqtfbmRykIHdab797IOZeKwk5g0zg==",
+      "version": "0.14.38",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.38.tgz",
+      "integrity": "sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q==",
       "dev": true,
       "optional": true
     },
     "esbuild-linux-arm": {
-      "version": "0.14.22",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.22.tgz",
-      "integrity": "sha512-soPDdbpt/C0XvOOK45p4EFt8HbH5g+0uHs5nUKjHVExfgR7du734kEkXR/mE5zmjrlymk5AA79I0VIvj90WZ4g==",
+      "version": "0.14.38",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.38.tgz",
+      "integrity": "sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA==",
       "dev": true,
       "optional": true
     },
     "esbuild-linux-arm64": {
-      "version": "0.14.22",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.22.tgz",
-      "integrity": "sha512-8q/FRBJtV5IHnQChO3LHh/Jf7KLrxJ/RCTGdBvlVZhBde+dk3/qS9fFsUy+rs3dEi49aAsyVitTwlKw1SUFm+A==",
+      "version": "0.14.38",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.38.tgz",
+      "integrity": "sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA==",
       "dev": true,
       "optional": true
     },
     "esbuild-linux-mips64le": {
-      "version": "0.14.22",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.22.tgz",
-      "integrity": "sha512-SiNDfuRXhGh1JQLLA9JPprBgPVFOsGuQ0yDfSPTNxztmVJd8W2mX++c4FfLpAwxuJe183mLuKf7qKCHQs5ZnBQ==",
+      "version": "0.14.38",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.38.tgz",
+      "integrity": "sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ==",
       "dev": true,
       "optional": true
     },
     "esbuild-linux-ppc64le": {
-      "version": "0.14.22",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.22.tgz",
-      "integrity": "sha512-6t/GI9I+3o1EFm2AyN9+TsjdgWCpg2nwniEhjm2qJWtJyJ5VzTXGUU3alCO3evopu8G0hN2Bu1Jhz2YmZD0kng==",
+      "version": "0.14.38",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.38.tgz",
+      "integrity": "sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q==",
       "dev": true,
       "optional": true
     },
     "esbuild-linux-riscv64": {
-      "version": "0.14.22",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.22.tgz",
-      "integrity": "sha512-AyJHipZKe88sc+tp5layovquw5cvz45QXw5SaDgAq2M911wLHiCvDtf/07oDx8eweCyzYzG5Y39Ih568amMTCQ==",
+      "version": "0.14.38",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.38.tgz",
+      "integrity": "sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ==",
       "dev": true,
       "optional": true
     },
     "esbuild-linux-s390x": {
-      "version": "0.14.22",
-      "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.22.tgz",
-      "integrity": "sha512-Sz1NjZewTIXSblQDZWEFZYjOK6p8tV6hrshYdXZ0NHTjWE+lwxpOpWeElUGtEmiPcMT71FiuA9ODplqzzSxkzw==",
+      "version": "0.14.38",
+      "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.38.tgz",
+      "integrity": "sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ==",
       "dev": true,
       "optional": true
     },
     "esbuild-netbsd-64": {
-      "version": "0.14.22",
-      "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.22.tgz",
-      "integrity": "sha512-TBbCtx+k32xydImsHxvFgsOCuFqCTGIxhzRNbgSL1Z2CKhzxwT92kQMhxort9N/fZM2CkRCPPs5wzQSamtzEHA==",
+      "version": "0.14.38",
+      "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.38.tgz",
+      "integrity": "sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q==",
       "dev": true,
       "optional": true
     },
     "esbuild-openbsd-64": {
-      "version": "0.14.22",
-      "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.22.tgz",
-      "integrity": "sha512-vK912As725haT313ANZZZN+0EysEEQXWC/+YE4rQvOQzLuxAQc2tjbzlAFREx3C8+uMuZj/q7E5gyVB7TzpcTA==",
+      "version": "0.14.38",
+      "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.38.tgz",
+      "integrity": "sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ==",
       "dev": true,
       "optional": true
     },
     "esbuild-sunos-64": {
-      "version": "0.14.22",
-      "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.22.tgz",
-      "integrity": "sha512-/mbJdXTW7MTcsPhtfDsDyPEOju9EOABvCjeUU2OJ7fWpX/Em/H3WYDa86tzLUbcVg++BScQDzqV/7RYw5XNY0g==",
+      "version": "0.14.38",
+      "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.38.tgz",
+      "integrity": "sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA==",
       "dev": true,
       "optional": true
     },
     "esbuild-wasm": {
-      "version": "0.14.22",
-      "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.22.tgz",
-      "integrity": "sha512-FOSAM29GN1fWusw0oLMv6JYhoheDIh5+atC72TkJKfIUMID6yISlicoQSd9gsNSFsNBvABvtE2jR4JB1j4FkFw==",
+      "version": "0.14.38",
+      "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.38.tgz",
+      "integrity": "sha512-mObTw5/3+KIOTShVgk3fuEn+INnHgOSbWJuGkInEZTWpUOh/+TCSgRxl5cDon4OkoaLU5rWm7R7Dkl/mJv8SGw==",
       "dev": true
     },
     "esbuild-windows-32": {
-      "version": "0.14.22",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.22.tgz",
-      "integrity": "sha512-1vRIkuvPTjeSVK3diVrnMLSbkuE36jxA+8zGLUOrT4bb7E/JZvDRhvtbWXWaveUc/7LbhaNFhHNvfPuSw2QOQg==",
+      "version": "0.14.38",
+      "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.38.tgz",
+      "integrity": "sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw==",
       "dev": true,
       "optional": true
     },
     "esbuild-windows-64": {
-      "version": "0.14.22",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.22.tgz",
-      "integrity": "sha512-AxjIDcOmx17vr31C5hp20HIwz1MymtMjKqX4qL6whPj0dT9lwxPexmLj6G1CpR3vFhui6m75EnBEe4QL82SYqw==",
+      "version": "0.14.38",
+      "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.38.tgz",
+      "integrity": "sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw==",
       "dev": true,
       "optional": true
     },
     "esbuild-windows-arm64": {
-      "version": "0.14.22",
-      "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.22.tgz",
-      "integrity": "sha512-5wvQ+39tHmRhNpu2Fx04l7QfeK3mQ9tKzDqqGR8n/4WUxsFxnVLfDRBGirIfk4AfWlxk60kqirlODPoT5LqMUg==",
+      "version": "0.14.38",
+      "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.38.tgz",
+      "integrity": "sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw==",
       "dev": true,
       "optional": true
     },
@@ -8165,12 +8252,6 @@
       "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
       "dev": true
     },
-    "functions-have-names": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
-      "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
-      "dev": true
-    },
     "fuzzy": {
       "version": "0.1.3",
       "resolved": "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz",
@@ -8709,15 +8790,6 @@
       "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
       "dev": true
     },
-    "has-tostringtag": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
-      "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
-      "dev": true,
-      "requires": {
-        "has-symbols": "^1.0.2"
-      }
-    },
     "has-unicode": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
@@ -8754,22 +8826,19 @@
       "dev": true
     },
     "hosted-git-info": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
-      "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz",
+      "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==",
       "dev": true,
       "requires": {
-        "lru-cache": "^6.0.0"
+        "lru-cache": "^7.5.1"
       },
       "dependencies": {
         "lru-cache": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-          "dev": true,
-          "requires": {
-            "yallist": "^4.0.0"
-          }
+          "version": "7.12.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.12.0.tgz",
+          "integrity": "sha512-OIP3DwzRZDfLg9B9VP/huWBlpvbkmbfiBy8xmsXp4RPmE4A3MhwNozc5ZJ3fWnSg8fDcdlE/neRTPG2ycEKliw==",
+          "dev": true
         }
       }
     },
@@ -8961,12 +9030,32 @@
       "dev": true
     },
     "ignore-walk": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-4.0.1.tgz",
-      "integrity": "sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==",
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz",
+      "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==",
       "dev": true,
       "requires": {
-        "minimatch": "^3.0.4"
+        "minimatch": "^5.0.1"
+      },
+      "dependencies": {
+        "brace-expansion": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+          "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+          "dev": true,
+          "requires": {
+            "balanced-match": "^1.0.0"
+          }
+        },
+        "minimatch": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
+          "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^2.0.1"
+          }
+        }
       }
     },
     "image-size": {
@@ -9248,16 +9337,6 @@
       "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
       "dev": true
     },
-    "is-arguments": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
-      "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      }
-    },
     "is-arrayish": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
@@ -9291,15 +9370,6 @@
         "has": "^1.0.3"
       }
     },
-    "is-date-object": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
-      "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
-      "dev": true,
-      "requires": {
-        "has-tostringtag": "^1.0.0"
-      }
-    },
     "is-docker": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz",
@@ -9375,18 +9445,6 @@
       "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
       "dev": true
     },
-    "is-path-cwd": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
-      "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
-      "dev": true
-    },
-    "is-path-inside": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
-      "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
-      "dev": true
-    },
     "is-plain-obj": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
@@ -9408,16 +9466,6 @@
       "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==",
       "dev": true
     },
-    "is-regex": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
-      "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      }
-    },
     "is-stream": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
@@ -9745,12 +9793,6 @@
       "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
       "dev": true
     },
-    "json-parse-better-errors": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
-      "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
-      "dev": true
-    },
     "json-parse-even-better-errors": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
@@ -10463,6 +10505,12 @@
       "integrity": "sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40=",
       "dev": true
     },
+    "lodash.sortby": {
+      "version": "4.7.0",
+      "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
+      "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
+      "dev": true
+    },
     "lodash.toarray": {
       "version": "4.4.0",
       "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
@@ -10633,12 +10681,12 @@
       }
     },
     "magic-string": {
-      "version": "0.25.7",
-      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
-      "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
+      "version": "0.26.1",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz",
+      "integrity": "sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==",
       "dev": true,
       "requires": {
-        "sourcemap-codec": "^1.4.4"
+        "sourcemap-codec": "^1.4.8"
       }
     },
     "make-dir": {
@@ -10689,6 +10737,26 @@
         "ssri": "^8.0.0"
       },
       "dependencies": {
+        "@npmcli/fs": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz",
+          "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==",
+          "dev": true,
+          "requires": {
+            "@gar/promisify": "^1.0.1",
+            "semver": "^7.3.5"
+          }
+        },
+        "@npmcli/move-file": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz",
+          "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==",
+          "dev": true,
+          "requires": {
+            "mkdirp": "^1.0.4",
+            "rimraf": "^3.0.2"
+          }
+        },
         "agent-base": {
           "version": "6.0.2",
           "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
@@ -10698,6 +10766,38 @@
             "debug": "4"
           }
         },
+        "cacache": {
+          "version": "15.3.0",
+          "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz",
+          "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==",
+          "dev": true,
+          "requires": {
+            "@npmcli/fs": "^1.0.0",
+            "@npmcli/move-file": "^1.0.1",
+            "chownr": "^2.0.0",
+            "fs-minipass": "^2.0.0",
+            "glob": "^7.1.4",
+            "infer-owner": "^1.0.4",
+            "lru-cache": "^6.0.0",
+            "minipass": "^3.1.1",
+            "minipass-collect": "^1.0.2",
+            "minipass-flush": "^1.0.5",
+            "minipass-pipeline": "^1.2.2",
+            "mkdirp": "^1.0.3",
+            "p-map": "^4.0.0",
+            "promise-inflight": "^1.0.1",
+            "rimraf": "^3.0.2",
+            "ssri": "^8.0.1",
+            "tar": "^6.0.2",
+            "unique-filename": "^1.1.1"
+          }
+        },
+        "chownr": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+          "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+          "dev": true
+        },
         "https-proxy-agent": {
           "version": "5.0.1",
           "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
@@ -10716,6 +10816,63 @@
           "requires": {
             "yallist": "^4.0.0"
           }
+        },
+        "minizlib": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+          "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+          "dev": true,
+          "requires": {
+            "minipass": "^3.0.0",
+            "yallist": "^4.0.0"
+          }
+        },
+        "mkdirp": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+          "dev": true
+        },
+        "rimraf": {
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+          "dev": true,
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        },
+        "semver": {
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        },
+        "ssri": {
+          "version": "8.0.1",
+          "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
+          "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
+          "dev": true,
+          "requires": {
+            "minipass": "^3.1.1"
+          }
+        },
+        "tar": {
+          "version": "6.1.11",
+          "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz",
+          "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==",
+          "dev": true,
+          "requires": {
+            "chownr": "^2.0.0",
+            "fs-minipass": "^2.0.0",
+            "minipass": "^3.0.0",
+            "minizlib": "^2.1.1",
+            "mkdirp": "^1.0.3",
+            "yallist": "^4.0.0"
+          }
         }
       }
     },
@@ -10854,9 +11011,9 @@
       "dev": true
     },
     "mini-css-extract-plugin": {
-      "version": "2.5.3",
-      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.5.3.tgz",
-      "integrity": "sha512-YseMB8cs8U/KCaAGQoqYmfUuhhGW0a9p9XvWXrxVOkE3/IiISTLw4ALNt7JR5B2eYauFM+PQGSbXMDmVbR7Tfw==",
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz",
+      "integrity": "sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w==",
       "dev": true,
       "requires": {
         "schema-utils": "^4.0.0"
@@ -10895,6 +11052,7 @@
       "version": "3.0.4",
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
       "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+      "dev": true,
       "requires": {
         "brace-expansion": "^1.1.7"
       }
@@ -11062,21 +11220,15 @@
       "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
     },
     "multicast-dns": {
-      "version": "6.2.3",
-      "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz",
-      "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
+      "version": "7.2.5",
+      "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz",
+      "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==",
       "dev": true,
       "requires": {
-        "dns-packet": "^1.3.1",
+        "dns-packet": "^5.2.2",
         "thunky": "^1.0.2"
       }
     },
-    "multicast-dns-service-types": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
-      "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==",
-      "dev": true
-    },
     "mute-stream": {
       "version": "0.0.7",
       "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
@@ -11415,6 +11567,47 @@
         "abbrev": "1"
       }
     },
+    "normalize-package-data": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.0.tgz",
+      "integrity": "sha512-m+GL22VXJKkKbw62ZaBBjv8u6IE3UI4Mh5QakIqs3fWiKe0Xyi6L97hakwZK41/LD4R/2ly71Bayx0NLMwLA/g==",
+      "dev": true,
+      "requires": {
+        "hosted-git-info": "^5.0.0",
+        "is-core-module": "^2.8.1",
+        "semver": "^7.3.5",
+        "validate-npm-package-license": "^3.0.4"
+      },
+      "dependencies": {
+        "is-core-module": {
+          "version": "2.9.0",
+          "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
+          "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
+          "dev": true,
+          "requires": {
+            "has": "^1.0.3"
+          }
+        },
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
+        "semver": {
+          "version": "7.3.7",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        }
+      }
+    },
     "normalize-path": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -11437,9 +11630,9 @@
       }
     },
     "npm-install-checks": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz",
-      "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==",
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz",
+      "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==",
       "dev": true,
       "requires": {
         "semver": "^7.1.1"
@@ -11472,14 +11665,14 @@
       "dev": true
     },
     "npm-package-arg": {
-      "version": "8.1.5",
-      "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz",
-      "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==",
+      "version": "9.0.2",
+      "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.0.2.tgz",
+      "integrity": "sha512-v/miORuX8cndiOheW8p2moNuPJ7QhcFh9WGlTorruG8hXSA23vMTEp5hTCmDxic0nD8KHhj/NQgFuySD3GYY3g==",
       "dev": true,
       "requires": {
-        "hosted-git-info": "^4.0.1",
-        "semver": "^7.3.4",
-        "validate-npm-package-name": "^3.0.0"
+        "hosted-git-info": "^5.0.0",
+        "semver": "^7.3.5",
+        "validate-npm-package-name": "^4.0.0"
       },
       "dependencies": {
         "lru-cache": {
@@ -11503,52 +11696,60 @@
       }
     },
     "npm-packlist": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-3.0.0.tgz",
-      "integrity": "sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ==",
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.1.tgz",
+      "integrity": "sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==",
       "dev": true,
       "requires": {
-        "glob": "^7.1.6",
-        "ignore-walk": "^4.0.1",
-        "npm-bundled": "^1.1.1",
+        "glob": "^8.0.1",
+        "ignore-walk": "^5.0.1",
+        "npm-bundled": "^1.1.2",
         "npm-normalize-package-bin": "^1.0.1"
       },
       "dependencies": {
+        "brace-expansion": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+          "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+          "dev": true,
+          "requires": {
+            "balanced-match": "^1.0.0"
+          }
+        },
         "glob": {
-          "version": "7.2.3",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
-          "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+          "version": "8.0.3",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz",
+          "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==",
           "dev": true,
           "requires": {
             "fs.realpath": "^1.0.0",
             "inflight": "^1.0.4",
             "inherits": "2",
-            "minimatch": "^3.1.1",
-            "once": "^1.3.0",
-            "path-is-absolute": "^1.0.0"
+            "minimatch": "^5.0.1",
+            "once": "^1.3.0"
           }
         },
         "minimatch": {
-          "version": "3.1.2",
-          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-          "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
+          "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
           "dev": true,
           "requires": {
-            "brace-expansion": "^1.1.7"
+            "brace-expansion": "^2.0.1"
           }
         }
       }
     },
     "npm-pick-manifest": {
-      "version": "6.1.1",
-      "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz",
-      "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==",
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz",
+      "integrity": "sha512-IA8+tuv8KujbsbLQvselW2XQgmXWS47t3CB0ZrzsRZ82DbDfkcFunOaPm4X7qNuhMfq+FmV7hQT4iFVpHqV7mg==",
       "dev": true,
       "requires": {
-        "npm-install-checks": "^4.0.0",
+        "npm-install-checks": "^5.0.0",
         "npm-normalize-package-bin": "^1.0.1",
-        "npm-package-arg": "^8.1.2",
-        "semver": "^7.3.4"
+        "npm-package-arg": "^9.0.0",
+        "semver": "^7.3.5"
       },
       "dependencies": {
         "lru-cache": {
@@ -11572,39 +11773,20 @@
       }
     },
     "npm-registry-fetch": {
-      "version": "12.0.2",
-      "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-12.0.2.tgz",
-      "integrity": "sha512-Df5QT3RaJnXYuOwtXBXS9BWs+tHH2olvkCLh6jcR/b/u3DvPMlp3J0TvvYwplPKxHMOwfg287PYih9QqaVFoKA==",
+      "version": "13.1.1",
+      "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.1.tgz",
+      "integrity": "sha512-5p8rwe6wQPLJ8dMqeTnA57Dp9Ox6GH9H60xkyJup07FmVlu3Mk7pf/kIIpl9gaN5bM8NM+UUx3emUWvDNTt39w==",
       "dev": true,
       "requires": {
-        "make-fetch-happen": "^10.0.1",
+        "make-fetch-happen": "^10.0.6",
         "minipass": "^3.1.6",
-        "minipass-fetch": "^1.4.1",
+        "minipass-fetch": "^2.0.3",
         "minipass-json-stream": "^1.0.1",
         "minizlib": "^2.1.2",
-        "npm-package-arg": "^8.1.5"
+        "npm-package-arg": "^9.0.1",
+        "proc-log": "^2.0.0"
       },
       "dependencies": {
-        "@npmcli/fs": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.0.tgz",
-          "integrity": "sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ==",
-          "dev": true,
-          "requires": {
-            "@gar/promisify": "^1.1.3",
-            "semver": "^7.3.5"
-          }
-        },
-        "@npmcli/move-file": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz",
-          "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==",
-          "dev": true,
-          "requires": {
-            "mkdirp": "^1.0.4",
-            "rimraf": "^3.0.2"
-          }
-        },
         "@tootallnate/once": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
@@ -11620,6 +11802,15 @@
             "debug": "4"
           }
         },
+        "brace-expansion": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+          "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+          "dev": true,
+          "requires": {
+            "balanced-match": "^1.0.0"
+          }
+        },
         "cacache": {
           "version": "16.1.1",
           "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz",
@@ -11663,26 +11854,6 @@
             "inherits": "2",
             "minimatch": "^5.0.1",
             "once": "^1.3.0"
-          },
-          "dependencies": {
-            "brace-expansion": {
-              "version": "2.0.1",
-              "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-              "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
-              "dev": true,
-              "requires": {
-                "balanced-match": "^1.0.0"
-              }
-            },
-            "minimatch": {
-              "version": "5.1.0",
-              "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
-              "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
-              "dev": true,
-              "requires": {
-                "brace-expansion": "^2.0.1"
-              }
-            }
           }
         },
         "http-proxy-agent": {
@@ -11734,29 +11905,15 @@
             "promise-retry": "^2.0.1",
             "socks-proxy-agent": "^7.0.0",
             "ssri": "^9.0.0"
-          },
-          "dependencies": {
-            "minipass-fetch": {
-              "version": "2.1.0",
-              "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz",
-              "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==",
-              "dev": true,
-              "requires": {
-                "encoding": "^0.1.13",
-                "minipass": "^3.1.6",
-                "minipass-sized": "^1.0.3",
-                "minizlib": "^2.1.2"
-              }
-            }
           }
         },
         "minimatch": {
-          "version": "3.1.2",
-          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-          "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
+          "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
           "dev": true,
           "requires": {
-            "brace-expansion": "^1.1.7"
+            "brace-expansion": "^2.0.1"
           }
         },
         "minipass": {
@@ -11768,6 +11925,18 @@
             "yallist": "^4.0.0"
           }
         },
+        "minipass-fetch": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz",
+          "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==",
+          "dev": true,
+          "requires": {
+            "encoding": "^0.1.13",
+            "minipass": "^3.1.6",
+            "minipass-sized": "^1.0.3",
+            "minizlib": "^2.1.2"
+          }
+        },
         "minizlib": {
           "version": "2.1.2",
           "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
@@ -11799,6 +11968,16 @@
             "glob": "^7.1.3"
           },
           "dependencies": {
+            "brace-expansion": {
+              "version": "1.1.11",
+              "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+              "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+              "dev": true,
+              "requires": {
+                "balanced-match": "^1.0.0",
+                "concat-map": "0.0.1"
+              }
+            },
             "glob": {
               "version": "7.2.3",
               "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
@@ -11812,25 +11991,14 @@
                 "once": "^1.3.0",
                 "path-is-absolute": "^1.0.0"
               }
-            }
-          }
-        },
-        "semver": {
-          "version": "7.3.7",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
-          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          },
-          "dependencies": {
-            "lru-cache": {
-              "version": "6.0.0",
-              "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-              "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+            },
+            "minimatch": {
+              "version": "3.1.2",
+              "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+              "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
               "dev": true,
               "requires": {
-                "yallist": "^4.0.0"
+                "brace-expansion": "^1.1.7"
               }
             }
           }
@@ -11857,15 +12025,6 @@
             }
           }
         },
-        "ssri": {
-          "version": "9.0.1",
-          "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz",
-          "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==",
-          "dev": true,
-          "requires": {
-            "minipass": "^3.1.1"
-          }
-        },
         "tar": {
           "version": "6.1.11",
           "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz",
@@ -11940,15 +12099,11 @@
       "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
       "dev": true
     },
-    "object-is": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
-      "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3"
-      }
+    "object-inspect": {
+      "version": "1.12.2",
+      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
+      "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
+      "dev": true
     },
     "object-keys": {
       "version": "1.1.1",
@@ -12182,30 +12337,32 @@
       }
     },
     "pacote": {
-      "version": "12.0.3",
-      "resolved": "https://registry.npmjs.org/pacote/-/pacote-12.0.3.tgz",
-      "integrity": "sha512-CdYEl03JDrRO3x18uHjBYA9TyoW8gy+ThVcypcDkxPtKlw76e4ejhYB6i9lJ+/cebbjpqPW/CijjqxwDTts8Ow==",
+      "version": "13.3.0",
+      "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.3.0.tgz",
+      "integrity": "sha512-auhJAUlfC2TALo6I0s1vFoPvVFgWGx+uz/PnIojTTgkGwlK3Np8sGJ0ghfFhiuzJXTZoTycMLk8uLskdntPbDw==",
       "dev": true,
       "requires": {
-        "@npmcli/git": "^2.1.0",
-        "@npmcli/installed-package-contents": "^1.0.6",
-        "@npmcli/promise-spawn": "^1.2.0",
-        "@npmcli/run-script": "^2.0.0",
-        "cacache": "^15.0.5",
+        "@npmcli/git": "^3.0.0",
+        "@npmcli/installed-package-contents": "^1.0.7",
+        "@npmcli/promise-spawn": "^3.0.0",
+        "@npmcli/run-script": "^3.0.1",
+        "cacache": "^16.0.0",
         "chownr": "^2.0.0",
         "fs-minipass": "^2.1.0",
         "infer-owner": "^1.0.4",
-        "minipass": "^3.1.3",
-        "mkdirp": "^1.0.3",
-        "npm-package-arg": "^8.0.1",
-        "npm-packlist": "^3.0.0",
-        "npm-pick-manifest": "^6.0.0",
-        "npm-registry-fetch": "^12.0.0",
+        "minipass": "^3.1.6",
+        "mkdirp": "^1.0.4",
+        "npm-package-arg": "^9.0.0",
+        "npm-packlist": "^5.0.0",
+        "npm-pick-manifest": "^7.0.0",
+        "npm-registry-fetch": "^13.0.1",
+        "proc-log": "^2.0.0",
         "promise-retry": "^2.0.1",
-        "read-package-json-fast": "^2.0.1",
+        "read-package-json": "^5.0.0",
+        "read-package-json-fast": "^2.0.3",
         "rimraf": "^3.0.2",
-        "ssri": "^8.0.1",
-        "tar": "^6.1.0"
+        "ssri": "^9.0.0",
+        "tar": "^6.1.11"
       },
       "dependencies": {
         "chownr": {
@@ -12214,6 +12371,15 @@
           "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
           "dev": true
         },
+        "minipass": {
+          "version": "3.3.4",
+          "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz",
+          "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
         "minizlib": {
           "version": "2.1.2",
           "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
@@ -12337,7 +12503,8 @@
     "path-is-absolute": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+      "dev": true
     },
     "path-is-inside": {
       "version": "1.0.2",
@@ -12475,14 +12642,14 @@
       }
     },
     "postcss": {
-      "version": "8.4.5",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz",
-      "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==",
+      "version": "8.4.13",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.13.tgz",
+      "integrity": "sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA==",
       "dev": true,
       "requires": {
-        "nanoid": "^3.1.30",
+        "nanoid": "^3.3.3",
         "picocolors": "^1.0.0",
-        "source-map-js": "^1.0.1"
+        "source-map-js": "^1.0.2"
       }
     },
     "postcss-attribute-case-insensitive": {
@@ -12494,6 +12661,15 @@
         "postcss-selector-parser": "^6.0.10"
       }
     },
+    "postcss-clamp": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz",
+      "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==",
+      "dev": true,
+      "requires": {
+        "postcss-value-parser": "^4.2.0"
+      }
+    },
     "postcss-color-functional-notation": {
       "version": "4.2.4",
       "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz",
@@ -12616,9 +12792,9 @@
       }
     },
     "postcss-import": {
-      "version": "14.0.2",
-      "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.2.tgz",
-      "integrity": "sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==",
+      "version": "14.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz",
+      "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
       "dev": true,
       "requires": {
         "postcss-value-parser": "^4.0.0",
@@ -12730,6 +12906,12 @@
         "postcss-selector-parser": "^6.0.10"
       }
     },
+    "postcss-opacity-percentage": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz",
+      "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==",
+      "dev": true
+    },
     "postcss-overflow-shorthand": {
       "version": "3.0.4",
       "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz",
@@ -12755,44 +12937,56 @@
       }
     },
     "postcss-preset-env": {
-      "version": "7.2.3",
-      "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.2.3.tgz",
-      "integrity": "sha512-Ok0DhLfwrcNGrBn8sNdy1uZqWRk/9FId0GiQ39W4ILop5GHtjJs8bu1MY9isPwHInpVEPWjb4CEcEaSbBLpfwA==",
-      "dev": true,
-      "requires": {
-        "autoprefixer": "^10.4.2",
-        "browserslist": "^4.19.1",
-        "caniuse-lite": "^1.0.30001299",
-        "css-blank-pseudo": "^3.0.2",
-        "css-has-pseudo": "^3.0.3",
-        "css-prefers-color-scheme": "^6.0.2",
-        "cssdb": "^5.0.0",
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.5.0.tgz",
+      "integrity": "sha512-0BJzWEfCdTtK2R3EiKKSdkE51/DI/BwnhlnicSW482Ym6/DGHud8K0wGLcdjip1epVX0HKo4c8zzTeV/SkiejQ==",
+      "dev": true,
+      "requires": {
+        "@csstools/postcss-color-function": "^1.1.0",
+        "@csstools/postcss-font-format-keywords": "^1.0.0",
+        "@csstools/postcss-hwb-function": "^1.0.0",
+        "@csstools/postcss-ic-unit": "^1.0.0",
+        "@csstools/postcss-is-pseudo-class": "^2.0.2",
+        "@csstools/postcss-normalize-display-values": "^1.0.0",
+        "@csstools/postcss-oklab-function": "^1.1.0",
+        "@csstools/postcss-progressive-custom-properties": "^1.3.0",
+        "@csstools/postcss-stepped-value-functions": "^1.0.0",
+        "@csstools/postcss-unset-value": "^1.0.0",
+        "autoprefixer": "^10.4.6",
+        "browserslist": "^4.20.3",
+        "css-blank-pseudo": "^3.0.3",
+        "css-has-pseudo": "^3.0.4",
+        "css-prefers-color-scheme": "^6.0.3",
+        "cssdb": "^6.6.1",
         "postcss-attribute-case-insensitive": "^5.0.0",
-        "postcss-color-functional-notation": "^4.2.1",
-        "postcss-color-hex-alpha": "^8.0.2",
+        "postcss-clamp": "^4.1.0",
+        "postcss-color-functional-notation": "^4.2.2",
+        "postcss-color-hex-alpha": "^8.0.3",
         "postcss-color-rebeccapurple": "^7.0.2",
         "postcss-custom-media": "^8.0.0",
-        "postcss-custom-properties": "^12.1.2",
+        "postcss-custom-properties": "^12.1.7",
         "postcss-custom-selectors": "^6.0.0",
-        "postcss-dir-pseudo-class": "^6.0.3",
-        "postcss-double-position-gradients": "^3.0.4",
-        "postcss-env-function": "^4.0.4",
-        "postcss-focus-visible": "^6.0.3",
-        "postcss-focus-within": "^5.0.3",
+        "postcss-dir-pseudo-class": "^6.0.4",
+        "postcss-double-position-gradients": "^3.1.1",
+        "postcss-env-function": "^4.0.6",
+        "postcss-focus-visible": "^6.0.4",
+        "postcss-focus-within": "^5.0.4",
         "postcss-font-variant": "^5.0.0",
-        "postcss-gap-properties": "^3.0.2",
-        "postcss-image-set-function": "^4.0.4",
+        "postcss-gap-properties": "^3.0.3",
+        "postcss-image-set-function": "^4.0.6",
         "postcss-initial": "^4.0.1",
-        "postcss-lab-function": "^4.0.3",
-        "postcss-logical": "^5.0.3",
+        "postcss-lab-function": "^4.2.0",
+        "postcss-logical": "^5.0.4",
         "postcss-media-minmax": "^5.0.0",
-        "postcss-nesting": "^10.1.2",
-        "postcss-overflow-shorthand": "^3.0.2",
+        "postcss-nesting": "^10.1.4",
+        "postcss-opacity-percentage": "^1.1.2",
+        "postcss-overflow-shorthand": "^3.0.3",
         "postcss-page-break": "^3.0.4",
-        "postcss-place": "^7.0.3",
-        "postcss-pseudo-class-any-link": "^7.0.2",
+        "postcss-place": "^7.0.4",
+        "postcss-pseudo-class-any-link": "^7.1.2",
         "postcss-replace-overflow-wrap": "^4.0.0",
-        "postcss-selector-not": "^5.0.0"
+        "postcss-selector-not": "^5.0.0",
+        "postcss-value-parser": "^4.2.0"
       }
     },
     "postcss-pseudo-class-any-link": {
@@ -12841,6 +13035,12 @@
       "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==",
       "dev": true
     },
+    "proc-log": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz",
+      "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==",
+      "dev": true
+    },
     "process-nextick-args": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
@@ -13227,6 +13427,51 @@
         }
       }
     },
+    "read-package-json": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.1.tgz",
+      "integrity": "sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg==",
+      "dev": true,
+      "requires": {
+        "glob": "^8.0.1",
+        "json-parse-even-better-errors": "^2.3.1",
+        "normalize-package-data": "^4.0.0",
+        "npm-normalize-package-bin": "^1.0.1"
+      },
+      "dependencies": {
+        "brace-expansion": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+          "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+          "dev": true,
+          "requires": {
+            "balanced-match": "^1.0.0"
+          }
+        },
+        "glob": {
+          "version": "8.0.3",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz",
+          "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==",
+          "dev": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^5.0.1",
+            "once": "^1.3.0"
+          }
+        },
+        "minimatch": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
+          "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^2.0.1"
+          }
+        }
+      }
+    },
     "read-package-json-fast": {
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz",
@@ -13317,17 +13562,6 @@
       "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==",
       "dev": true
     },
-    "regexp.prototype.flags": {
-      "version": "1.4.3",
-      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
-      "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
-      "dev": true,
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3",
-        "functions-have-names": "^1.2.2"
-      }
-    },
     "regexpu-core": {
       "version": "5.1.0",
       "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz",
@@ -13629,9 +13863,9 @@
       "dev": true
     },
     "sass": {
-      "version": "1.49.9",
-      "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.9.tgz",
-      "integrity": "sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==",
+      "version": "1.51.0",
+      "resolved": "https://registry.npmjs.org/sass/-/sass-1.51.0.tgz",
+      "integrity": "sha512-haGdpTgywJTvHC2b91GSq+clTKGbtkkZmVAb82jZQN/wTy6qs8DdFm2lhEQbEwrY0QDRgSQ3xDurqM977C3noA==",
       "dev": true,
       "requires": {
         "chokidar": ">=3.0.0 <4.0.0",
@@ -13640,9 +13874,9 @@
       }
     },
     "sass-loader": {
-      "version": "12.4.0",
-      "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.4.0.tgz",
-      "integrity": "sha512-7xN+8khDIzym1oL9XyS6zP6Ges+Bo2B2xbPrjdMHEYyV3AQYhd/wXeru++3ODHF0zMjYmVadblSKrPrjEkL8mg==",
+      "version": "12.6.0",
+      "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz",
+      "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==",
       "dev": true,
       "requires": {
         "klona": "^2.0.4",
@@ -13940,6 +14174,17 @@
       "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
       "dev": true
     },
+    "side-channel": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+      "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.0",
+        "get-intrinsic": "^1.0.2",
+        "object-inspect": "^1.9.0"
+      }
+    },
     "signal-exit": {
       "version": "3.0.3",
       "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
@@ -14145,6 +14390,38 @@
       "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
       "dev": true
     },
+    "spdx-correct": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
+      "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
+      "dev": true,
+      "requires": {
+        "spdx-expression-parse": "^3.0.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-exceptions": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+      "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
+      "dev": true
+    },
+    "spdx-expression-parse": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+      "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+      "dev": true,
+      "requires": {
+        "spdx-exceptions": "^2.1.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-license-ids": {
+      "version": "3.0.11",
+      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz",
+      "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==",
+      "dev": true
+    },
     "spdy": {
       "version": "4.0.2",
       "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
@@ -14209,9 +14486,9 @@
       }
     },
     "ssri": {
-      "version": "8.0.1",
-      "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
-      "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
+      "version": "9.0.1",
+      "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz",
+      "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==",
       "dev": true,
       "requires": {
         "minipass": "^3.1.1"
@@ -14351,9 +14628,9 @@
       "dev": true
     },
     "stylus": {
-      "version": "0.56.0",
-      "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.56.0.tgz",
-      "integrity": "sha512-Ev3fOb4bUElwWu4F9P9WjnnaSpc8XB9OFHSFZSKMFL1CE1oM+oFXWEgAqPmmZIyhBihuqIQlFsVTypiiS9RxeA==",
+      "version": "0.57.0",
+      "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.57.0.tgz",
+      "integrity": "sha512-yOI6G8WYfr0q8v8rRvE91wbxFU+rJPo760Va4MF6K0I6BZjO4r+xSynkvyPBP9tV1CIEUeRsiidjIs2rzb1CnQ==",
       "dev": true,
       "requires": {
         "css": "^3.0.0",
@@ -14693,17 +14970,26 @@
       "dev": true
     },
     "terser": {
-      "version": "5.11.0",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-5.11.0.tgz",
-      "integrity": "sha512-uCA9DLanzzWSsN1UirKwylhhRz3aKPInlfmpGfw8VN6jHsAtu8HJtIpeeHHK23rxnE/cDc+yvmq5wqkIC6Kn0A==",
+      "version": "5.13.1",
+      "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz",
+      "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==",
       "dev": true,
       "requires": {
         "acorn": "^8.5.0",
         "commander": "^2.20.0",
-        "source-map": "~0.7.2",
+        "source-map": "~0.8.0-beta.0",
         "source-map-support": "~0.5.20"
       },
       "dependencies": {
+        "source-map": {
+          "version": "0.8.0-beta.0",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
+          "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
+          "dev": true,
+          "requires": {
+            "whatwg-url": "^7.0.0"
+          }
+        },
         "source-map-support": {
           "version": "0.5.21",
           "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
@@ -14861,6 +15147,15 @@
         "lodash": "^4.17.10"
       }
     },
+    "tr46": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
+      "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
+      "dev": true,
+      "requires": {
+        "punycode": "^2.1.0"
+      }
+    },
     "traverse": {
       "version": "0.3.9",
       "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
@@ -15277,13 +15572,23 @@
       "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=",
       "dev": true
     },
+    "validate-npm-package-license": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+      "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+      "dev": true,
+      "requires": {
+        "spdx-correct": "^3.0.0",
+        "spdx-expression-parse": "^3.0.0"
+      }
+    },
     "validate-npm-package-name": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
-      "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz",
+      "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==",
       "dev": true,
       "requires": {
-        "builtins": "^1.0.3"
+        "builtins": "^5.0.0"
       }
     },
     "vary": {
@@ -15358,10 +15663,16 @@
         "selenium-webdriver": "^3.0.1"
       }
     },
+    "webidl-conversions": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+      "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+      "dev": true
+    },
     "webpack": {
-      "version": "5.70.0",
-      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz",
-      "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==",
+      "version": "5.72.1",
+      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.1.tgz",
+      "integrity": "sha512-dXG5zXCLspQR4krZVR6QgajnZOjW2K/djHvdcRaDQvsjV9z9vaW6+ja5dZOYbqBBjF6kGXka/2ZyxNdc+8Jung==",
       "dev": true,
       "requires": {
         "@types/eslint-scope": "^3.7.3",
@@ -15373,13 +15684,13 @@
         "acorn-import-assertions": "^1.7.6",
         "browserslist": "^4.14.5",
         "chrome-trace-event": "^1.0.2",
-        "enhanced-resolve": "^5.9.2",
+        "enhanced-resolve": "^5.9.3",
         "es-module-lexer": "^0.9.0",
         "eslint-scope": "5.1.1",
         "events": "^3.2.0",
         "glob-to-regexp": "^0.4.1",
         "graceful-fs": "^4.2.9",
-        "json-parse-better-errors": "^1.0.2",
+        "json-parse-even-better-errors": "^2.3.1",
         "loader-runner": "^4.2.0",
         "mime-types": "^2.1.27",
         "neo-async": "^2.6.2",
@@ -15422,13 +15733,13 @@
       }
     },
     "webpack-dev-middleware": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.0.tgz",
-      "integrity": "sha512-MouJz+rXAm9B1OTOYaJnn6rtD/lWZPy2ufQCH3BPs8Rloh/Du6Jze4p7AeLYHkVi0giJnYLaSGDC7S+GM9arhg==",
+      "version": "5.3.1",
+      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz",
+      "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==",
       "dev": true,
       "requires": {
         "colorette": "^2.0.10",
-        "memfs": "^3.2.2",
+        "memfs": "^3.4.1",
         "mime-types": "^2.1.31",
         "range-parser": "^1.2.1",
         "schema-utils": "^4.0.0"
@@ -15473,42 +15784,51 @@
       }
     },
     "webpack-dev-server": {
-      "version": "4.7.3",
-      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.3.tgz",
-      "integrity": "sha512-mlxq2AsIw2ag016nixkzUkdyOE8ST2GTy34uKSABp1c4nhjZvH90D5ZRR+UOLSsG4Z3TFahAi72a3ymRtfRm+Q==",
+      "version": "4.9.0",
+      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.0.tgz",
+      "integrity": "sha512-+Nlb39iQSOSsFv0lWUuUTim3jDQO8nhK3E68f//J2r5rIcp4lULHXz2oZ0UVdEeWXEh5lSzYUlzarZhDAeAVQw==",
       "dev": true,
       "requires": {
         "@types/bonjour": "^3.5.9",
         "@types/connect-history-api-fallback": "^1.3.5",
+        "@types/express": "^4.17.13",
         "@types/serve-index": "^1.9.1",
         "@types/sockjs": "^0.3.33",
-        "@types/ws": "^8.2.2",
+        "@types/ws": "^8.5.1",
         "ansi-html-community": "^0.0.8",
-        "bonjour": "^3.5.0",
-        "chokidar": "^3.5.2",
+        "bonjour-service": "^1.0.11",
+        "chokidar": "^3.5.3",
         "colorette": "^2.0.10",
         "compression": "^1.7.4",
         "connect-history-api-fallback": "^1.6.0",
         "default-gateway": "^6.0.3",
-        "del": "^6.0.0",
-        "express": "^4.17.1",
+        "express": "^4.17.3",
         "graceful-fs": "^4.2.6",
         "html-entities": "^2.3.2",
-        "http-proxy-middleware": "^2.0.0",
+        "http-proxy-middleware": "^2.0.3",
         "ipaddr.js": "^2.0.1",
         "open": "^8.0.9",
         "p-retry": "^4.5.0",
-        "portfinder": "^1.0.28",
+        "rimraf": "^3.0.2",
         "schema-utils": "^4.0.0",
-        "selfsigned": "^2.0.0",
+        "selfsigned": "^2.0.1",
         "serve-index": "^1.9.1",
         "sockjs": "^0.3.21",
         "spdy": "^4.0.2",
-        "strip-ansi": "^7.0.0",
-        "webpack-dev-middleware": "^5.3.0",
-        "ws": "^8.1.0"
+        "webpack-dev-middleware": "^5.3.1",
+        "ws": "^8.4.2"
       },
       "dependencies": {
+        "accepts": {
+          "version": "1.3.8",
+          "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+          "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+          "dev": true,
+          "requires": {
+            "mime-types": "~2.1.34",
+            "negotiator": "0.6.3"
+          }
+        },
         "ajv-keywords": {
           "version": "5.1.0",
           "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
@@ -15518,12 +15838,6 @@
             "fast-deep-equal": "^3.1.3"
           }
         },
-        "ansi-regex": {
-          "version": "6.0.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-          "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-          "dev": true
-        },
         "anymatch": {
           "version": "3.1.2",
           "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
@@ -15534,6 +15848,38 @@
             "picomatch": "^2.0.4"
           }
         },
+        "array-flatten": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+          "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+          "dev": true
+        },
+        "body-parser": {
+          "version": "1.20.0",
+          "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz",
+          "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==",
+          "dev": true,
+          "requires": {
+            "bytes": "3.1.2",
+            "content-type": "~1.0.4",
+            "debug": "2.6.9",
+            "depd": "2.0.0",
+            "destroy": "1.2.0",
+            "http-errors": "2.0.0",
+            "iconv-lite": "0.4.24",
+            "on-finished": "2.4.1",
+            "qs": "6.10.3",
+            "raw-body": "2.5.1",
+            "type-is": "~1.6.18",
+            "unpipe": "1.0.0"
+          }
+        },
+        "bytes": {
+          "version": "3.1.2",
+          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+          "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+          "dev": true
+        },
         "chokidar": {
           "version": "3.5.3",
           "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@@ -15550,6 +15896,102 @@
             "readdirp": "~3.6.0"
           }
         },
+        "content-disposition": {
+          "version": "0.5.4",
+          "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+          "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+          "dev": true,
+          "requires": {
+            "safe-buffer": "5.2.1"
+          }
+        },
+        "cookie": {
+          "version": "0.5.0",
+          "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+          "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+          "dev": true
+        },
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "depd": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+          "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+          "dev": true
+        },
+        "destroy": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+          "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+          "dev": true
+        },
+        "express": {
+          "version": "4.18.1",
+          "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz",
+          "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==",
+          "dev": true,
+          "requires": {
+            "accepts": "~1.3.8",
+            "array-flatten": "1.1.1",
+            "body-parser": "1.20.0",
+            "content-disposition": "0.5.4",
+            "content-type": "~1.0.4",
+            "cookie": "0.5.0",
+            "cookie-signature": "1.0.6",
+            "debug": "2.6.9",
+            "depd": "2.0.0",
+            "encodeurl": "~1.0.2",
+            "escape-html": "~1.0.3",
+            "etag": "~1.8.1",
+            "finalhandler": "1.2.0",
+            "fresh": "0.5.2",
+            "http-errors": "2.0.0",
+            "merge-descriptors": "1.0.1",
+            "methods": "~1.1.2",
+            "on-finished": "2.4.1",
+            "parseurl": "~1.3.3",
+            "path-to-regexp": "0.1.7",
+            "proxy-addr": "~2.0.7",
+            "qs": "6.10.3",
+            "range-parser": "~1.2.1",
+            "safe-buffer": "5.2.1",
+            "send": "0.18.0",
+            "serve-static": "1.15.0",
+            "setprototypeof": "1.2.0",
+            "statuses": "2.0.1",
+            "type-is": "~1.6.18",
+            "utils-merge": "1.0.1",
+            "vary": "~1.1.2"
+          }
+        },
+        "finalhandler": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+          "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+          "dev": true,
+          "requires": {
+            "debug": "2.6.9",
+            "encodeurl": "~1.0.2",
+            "escape-html": "~1.0.3",
+            "on-finished": "2.4.1",
+            "parseurl": "~1.3.3",
+            "statuses": "2.0.1",
+            "unpipe": "~1.0.0"
+          }
+        },
+        "forwarded": {
+          "version": "0.2.0",
+          "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+          "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+          "dev": true
+        },
         "fsevents": {
           "version": "2.3.2",
           "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
@@ -15572,12 +16014,61 @@
           "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
           "dev": true
         },
+        "http-errors": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+          "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+          "dev": true,
+          "requires": {
+            "depd": "2.0.0",
+            "inherits": "2.0.4",
+            "setprototypeof": "1.2.0",
+            "statuses": "2.0.1",
+            "toidentifier": "1.0.1"
+          }
+        },
         "ipaddr.js": {
           "version": "2.0.1",
           "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz",
           "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==",
           "dev": true
         },
+        "mime-db": {
+          "version": "1.52.0",
+          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+          "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+          "dev": true
+        },
+        "mime-types": {
+          "version": "2.1.35",
+          "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+          "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+          "dev": true,
+          "requires": {
+            "mime-db": "1.52.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+          "dev": true
+        },
+        "negotiator": {
+          "version": "0.6.3",
+          "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+          "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+          "dev": true
+        },
+        "on-finished": {
+          "version": "2.4.1",
+          "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+          "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+          "dev": true,
+          "requires": {
+            "ee-first": "1.1.1"
+          }
+        },
         "open": {
           "version": "8.4.0",
           "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
@@ -15589,6 +16080,45 @@
             "is-wsl": "^2.2.0"
           }
         },
+        "proxy-addr": {
+          "version": "2.0.7",
+          "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+          "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+          "dev": true,
+          "requires": {
+            "forwarded": "0.2.0",
+            "ipaddr.js": "1.9.1"
+          },
+          "dependencies": {
+            "ipaddr.js": {
+              "version": "1.9.1",
+              "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+              "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+              "dev": true
+            }
+          }
+        },
+        "qs": {
+          "version": "6.10.3",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
+          "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
+          "dev": true,
+          "requires": {
+            "side-channel": "^1.0.4"
+          }
+        },
+        "raw-body": {
+          "version": "2.5.1",
+          "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
+          "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+          "dev": true,
+          "requires": {
+            "bytes": "3.1.2",
+            "http-errors": "2.0.0",
+            "iconv-lite": "0.4.24",
+            "unpipe": "1.0.0"
+          }
+        },
         "readdirp": {
           "version": "3.6.0",
           "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@@ -15598,6 +16128,21 @@
             "picomatch": "^2.2.1"
           }
         },
+        "rimraf": {
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+          "dev": true,
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.2.1",
+          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+          "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+          "dev": true
+        },
         "schema-utils": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
@@ -15610,14 +16155,64 @@
             "ajv-keywords": "^5.0.0"
           }
         },
-        "strip-ansi": {
-          "version": "7.0.1",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
-          "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
+        "send": {
+          "version": "0.18.0",
+          "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+          "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+          "dev": true,
+          "requires": {
+            "debug": "2.6.9",
+            "depd": "2.0.0",
+            "destroy": "1.2.0",
+            "encodeurl": "~1.0.2",
+            "escape-html": "~1.0.3",
+            "etag": "~1.8.1",
+            "fresh": "0.5.2",
+            "http-errors": "2.0.0",
+            "mime": "1.6.0",
+            "ms": "2.1.3",
+            "on-finished": "2.4.1",
+            "range-parser": "~1.2.1",
+            "statuses": "2.0.1"
+          },
+          "dependencies": {
+            "ms": {
+              "version": "2.1.3",
+              "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+              "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+              "dev": true
+            }
+          }
+        },
+        "serve-static": {
+          "version": "1.15.0",
+          "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+          "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
           "dev": true,
           "requires": {
-            "ansi-regex": "^6.0.1"
+            "encodeurl": "~1.0.2",
+            "escape-html": "~1.0.3",
+            "parseurl": "~1.3.3",
+            "send": "0.18.0"
           }
+        },
+        "setprototypeof": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+          "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+          "dev": true
+        },
+        "statuses": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+          "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+          "dev": true
+        },
+        "toidentifier": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+          "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+          "dev": true
         }
       }
     },
@@ -15666,6 +16261,17 @@
       "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
       "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng=="
     },
+    "whatwg-url": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
+      "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
+      "dev": true,
+      "requires": {
+        "lodash.sortby": "^4.7.0",
+        "tr46": "^1.0.1",
+        "webidl-conversions": "^4.0.2"
+      }
+    },
     "which": {
       "version": "1.3.1",
       "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
diff --git a/package.json b/package.json
index bb1cc94..eb7bcc6 100644
--- a/package.json
+++ b/package.json
@@ -13,18 +13,18 @@
   },
   "private": true,
   "dependencies": {
-    "@angular/animations": "~13.3.11",
+    "@angular/animations": "^14.0.5",
     "@angular/cdk": "^13.3.9",
-    "@angular/common": "~13.3.11",
-    "@angular/compiler": "~13.3.11",
-    "@angular/core": "~13.3.11",
+    "@angular/common": "^14.0.5",
+    "@angular/compiler": "^14.0.5",
+    "@angular/core": "^14.0.5",
     "@angular/fire": "^6.1.4",
-    "@angular/forms": "~13.3.11",
-    "@angular/localize": "^13.3.11",
+    "@angular/forms": "^14.0.5",
+    "@angular/localize": "^14.0.5",
     "@angular/material": "^13.3.9",
-    "@angular/platform-browser": "~13.3.11",
-    "@angular/platform-browser-dynamic": "~13.3.11",
-    "@angular/router": "~13.3.11",
+    "@angular/platform-browser": "^14.0.5",
+    "@angular/platform-browser-dynamic": "^14.0.5",
+    "@angular/router": "^14.0.5",
     "@auth0/auth0-angular": "^1.10.0",
     "angular-walkthrough": "^0.8.2",
     "apexcharts": "^3.24.0",
@@ -45,11 +45,11 @@
     "zone.js": "~0.11.6"
   },
   "devDependencies": {
-    "@angular-devkit/architect": "0.1303.8",
-    "@angular-devkit/build-angular": "~13.3.8",
-    "@angular/cli": "~13.3.8",
-    "@angular/compiler-cli": "~13.3.11",
-    "@angular/language-service": "~13.3.11",
+    "@angular-devkit/architect": "0.1400.5",
+    "@angular-devkit/build-angular": "^14.0.5",
+    "@angular/cli": "^14.0.5",
+    "@angular/compiler-cli": "^14.0.5",
+    "@angular/language-service": "^14.0.5",
     "@types/jasmine": "~3.6.0",
     "@types/jasminewd2": "~2.0.3",
     "@types/node": "^12.11.1",
diff --git a/src/app/components/cpcq-form/cpcq-form.component.ts b/src/app/components/cpcq-form/cpcq-form.component.ts
index a042fff..869857d 100644
--- a/src/app/components/cpcq-form/cpcq-form.component.ts
+++ b/src/app/components/cpcq-form/cpcq-form.component.ts
@@ -2,7 +2,7 @@ import { Component, OnInit, Inject } from "@angular/core";
 import { AfterViewInit, ElementRef, ViewChild } from "@angular/core";
 import { Router } from "@angular/router";
 import { FirstForm } from "src/app/services/firstForm.service";
-import { FormBuilder, FormGroup, Validators } from "@angular/forms";
+import { UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms";
 import Swal from "sweetalert2";
 import { ThemePalette } from "@angular/material/core";
 import { ProgressBarMode } from "@angular/material/progress-bar";
@@ -25,7 +25,7 @@ export interface DialogData {
   styleUrls: ["./cpcq-form.component.css"],
 })
 export class CpcqFormComponent implements OnInit, AfterViewInit {
-  firstForm: FormGroup;
+  firstForm: UntypedFormGroup;
   responseList: any;
   loaded = false;
 
@@ -67,11 +67,11 @@ export class CpcqFormComponent implements OnInit, AfterViewInit {
   randomList = [[]];
   finalList = [[]];
   finalList1 = [];
-  attitudeForm: FormGroup;
-  empathyForm: FormGroup;
-  policyForm: FormGroup;
+  attitudeForm: UntypedFormGroup;
+  empathyForm: UntypedFormGroup;
+  policyForm: UntypedFormGroup;
 
-  finalFeedbackForm: FormGroup;
+  finalFeedbackForm: UntypedFormGroup;
 
   //arrays of data getting from the backend
 
@@ -391,7 +391,7 @@ export class CpcqFormComponent implements OnInit, AfterViewInit {
     }
   }
   constructor(
-    private fb: FormBuilder,
+    private fb: UntypedFormBuilder,
     private apiService: CPCQService,
     private router: Router,
     private formService: FirstForm,
diff --git a/src/app/components/cpcq-form/dialog-form/dialog-form.component.ts b/src/app/components/cpcq-form/dialog-form/dialog-form.component.ts
index 3378878..e8a6cfd 100644
--- a/src/app/components/cpcq-form/dialog-form/dialog-form.component.ts
+++ b/src/app/components/cpcq-form/dialog-form/dialog-form.component.ts
@@ -2,7 +2,7 @@ import { Component, OnInit, ViewChild, ElementRef, AfterViewInit, ChangeDetector
 import { Inject } from "@angular/core";
 import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dialog";
 import { ITimeUpdateEvent, NgWaveformComponent, IRegionPositions } from "ng-waveform";
-import { FormBuilder, FormGroup, Validators } from "@angular/forms";
+import { UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms";
 import { CPCQService } from "src/app/services/cpcq.service";
 export interface DialogData {
   animal;
@@ -24,8 +24,8 @@ export class DialogFormComponent implements OnInit {
   selectedIndex = 0;
   displayTextControl = false;
   displayText = "";
-  wordDescriptionForm: FormGroup;
-  unpackingForm: FormGroup;
+  wordDescriptionForm: UntypedFormGroup;
+  unpackingForm: UntypedFormGroup;
 
   unpackingArray = {};
 
@@ -98,7 +98,7 @@ export class DialogFormComponent implements OnInit {
     @Inject(MAT_DIALOG_DATA) public data: DialogData,
     public dialogRef: MatDialogRef<DialogFormComponent>,
     public dialog: MatDialog,
-    private fb: FormBuilder,
+    private fb: UntypedFormBuilder,
     private domSanitizer: DomSanitizer,
     public cpcqService: CPCQService
   ) {}
diff --git a/src/app/components/final-feedback/final-feedback.component.ts b/src/app/components/final-feedback/final-feedback.component.ts
index 75d508b..b002577 100644
--- a/src/app/components/final-feedback/final-feedback.component.ts
+++ b/src/app/components/final-feedback/final-feedback.component.ts
@@ -2,7 +2,7 @@ import { Component, OnInit, Inject } from "@angular/core";
 import { AfterViewInit, ElementRef, ViewChild } from "@angular/core";
 import { Router } from "@angular/router";
 import { FirstForm } from "src/app/services/firstForm.service";
-import { FormBuilder, FormGroup, Validators } from "@angular/forms";
+import { UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms";
 import Swal from "sweetalert2";
 import { ThemePalette } from "@angular/material/core";
 import { ProgressBarMode } from "@angular/material/progress-bar";
@@ -25,7 +25,7 @@ export interface DialogData {
   styleUrls: ["./final-feedback.component.css"],
 })
 export class FinalFeedbackComponent implements OnInit, AfterViewInit {
-  firstForm: FormGroup;
+  firstForm: UntypedFormGroup;
   responseList: any;
   loaded = false;
 
@@ -67,11 +67,11 @@ export class FinalFeedbackComponent implements OnInit, AfterViewInit {
   randomList = [[]];
   finalList = [[]];
   finalList1 = [];
-  attitudeForm: FormGroup;
-  empathyForm: FormGroup;
-  policyForm: FormGroup;
+  attitudeForm: UntypedFormGroup;
+  empathyForm: UntypedFormGroup;
+  policyForm: UntypedFormGroup;
 
-  finalFeedbackForm: FormGroup;
+  finalFeedbackForm: UntypedFormGroup;
 
   //arrays of data getting from the backend
 
@@ -391,7 +391,7 @@ export class FinalFeedbackComponent implements OnInit, AfterViewInit {
     }
   }
   constructor(
-    private fb: FormBuilder,
+    private fb: UntypedFormBuilder,
     private apiService: CPCQService,
     private router: Router,
     private formService: FirstForm,
diff --git a/src/app/components/first-form/first-form.component.ts b/src/app/components/first-form/first-form.component.ts
index dfe755f..cb8d01b 100644
--- a/src/app/components/first-form/first-form.component.ts
+++ b/src/app/components/first-form/first-form.component.ts
@@ -1,7 +1,7 @@
 import { Component, OnInit } from "@angular/core";
 import { Router } from "@angular/router";
 import { FirstForm } from "src/app/services/firstForm.service";
-import { FormBuilder, FormGroup, FormControl, Validators } from "@angular/forms";
+import { FormBuilder, UntypedFormGroup, FormControl, Validators } from "@angular/forms";
 import Swal from "sweetalert2";
 declare var $: any;
 import * as RecordRTC from "recordrtc";
@@ -13,7 +13,7 @@ import { DomSanitizer } from "@angular/platform-browser";
   styleUrls: ["./first-form.component.css"],
 })
 export class FirstFormComponent implements OnInit {
-  firstForm: FormGroup;
+  firstForm: UntypedFormGroup;
   responseList: any;
 
   questionArray = [
diff --git a/src/app/components/graph-page/graph-page.component.ts b/src/app/components/graph-page/graph-page.component.ts
index 9941211..df9a4b9 100644
--- a/src/app/components/graph-page/graph-page.component.ts
+++ b/src/app/components/graph-page/graph-page.component.ts
@@ -2,7 +2,7 @@ import { Component, OnInit } from "@angular/core";
 import { AfterViewInit, ElementRef, ViewChild } from "@angular/core";
 import { Router } from "@angular/router";
 import { FirstForm } from "src/app/services/firstForm.service";
-import { FormBuilder, FormGroup, Validators } from "@angular/forms";
+import { UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms";
 import Swal from "sweetalert2";
 import { ThemePalette } from "@angular/material/core";
 import { ProgressBarMode } from "@angular/material/progress-bar";
@@ -48,7 +48,7 @@ export type ChartOptions = {
   styleUrls: ["./graph-page.component.css"],
 })
 export class GraphPageComponent implements OnInit {
-  firstForm: FormGroup;
+  firstForm: UntypedFormGroup;
   responseList: any;
   loaded = false;
 
@@ -99,11 +99,11 @@ export class GraphPageComponent implements OnInit {
   randomList = [[]];
   finalList = [[]];
   finalList1 = [];
-  attitudeForm: FormGroup;
-  empathyForm: FormGroup;
-  policyForm: FormGroup;
+  attitudeForm: UntypedFormGroup;
+  empathyForm: UntypedFormGroup;
+  policyForm: UntypedFormGroup;
 
-  finalFeedbackForm: FormGroup;
+  finalFeedbackForm: UntypedFormGroup;
 
   //arrays of data getting from the backend
 
@@ -566,7 +566,7 @@ export class GraphPageComponent implements OnInit {
   }
 
   constructor(
-    private fb: FormBuilder,
+    private fb: UntypedFormBuilder,
     private apiService: CPCQService,
     private router: Router,
     private formService: FirstForm,
diff --git a/src/app/components/post-survey/post-survey.component.ts b/src/app/components/post-survey/post-survey.component.ts
index 15fb65d..a8c13c4 100644
--- a/src/app/components/post-survey/post-survey.component.ts
+++ b/src/app/components/post-survey/post-survey.component.ts
@@ -1,5 +1,5 @@
 import { Component, OnInit } from "@angular/core";
-import { FormBuilder, FormGroup } from "@angular/forms";
+import { UntypedFormBuilder, UntypedFormGroup } from "@angular/forms";
 import { MatDialog } from "@angular/material/dialog";
 import { Router } from "@angular/router";
 import { CPCQService } from "src/app/services/cpcq.service";
@@ -13,7 +13,7 @@ import { DialogPDfComponent } from "../pre-survey/dialog-pdf/dialog-pdf.componen
   styleUrls: ["./post-survey.component.css"],
 })
 export class PostSurveyComponent implements OnInit {
-  postSurveyForm: FormGroup;
+  postSurveyForm: UntypedFormGroup;
 
   consentFlag: boolean;
   formQuestion: any;
@@ -21,7 +21,7 @@ export class PostSurveyComponent implements OnInit {
   constructor(
     private router: Router,
     public dialog: MatDialog,
-    private fb: FormBuilder,
+    private fb: UntypedFormBuilder,
     private presurvey: PreSurveyService,
     private apiService: CPCQService
   ) {}
diff --git a/src/app/components/pre-survey/pre-survey.component.ts b/src/app/components/pre-survey/pre-survey.component.ts
index 7a4675a..cd904d4 100644
--- a/src/app/components/pre-survey/pre-survey.component.ts
+++ b/src/app/components/pre-survey/pre-survey.component.ts
@@ -1,5 +1,5 @@
 import { Component, OnInit } from "@angular/core";
-import { FormBuilder, FormGroup } from "@angular/forms";
+import { UntypedFormBuilder, UntypedFormGroup } from "@angular/forms";
 import { MatDialog } from "@angular/material/dialog";
 import { Router } from "@angular/router";
 import { PreSurveyService } from "src/app/services/preSurvey.service";
@@ -14,7 +14,7 @@ export interface DialogData {
   styleUrls: ["./pre-survey.component.css"],
 })
 export class PreSurveyComponent implements OnInit {
-  preSurveyForm: FormGroup;
+  preSurveyForm: UntypedFormGroup;
   email: any;
   startTime: any;
   endTime: any;
@@ -23,7 +23,7 @@ export class PreSurveyComponent implements OnInit {
   constructor(
     private router: Router,
     public dialog: MatDialog,
-    private fb: FormBuilder,
+    private fb: UntypedFormBuilder,
     private presurvey: PreSurveyService
   ) {}
 
diff --git a/src/app/components/register-component/register-component.component.ts b/src/app/components/register-component/register-component.component.ts
index 85af6f3..0fef0d1 100644
--- a/src/app/components/register-component/register-component.component.ts
+++ b/src/app/components/register-component/register-component.component.ts
@@ -1,5 +1,5 @@
 import { Component, OnInit } from "@angular/core";
-import { FormBuilder, FormGroup, Validators } from "@angular/forms";
+import { UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms";
 import { Router } from "@angular/router";
 import { LoginService } from "src/app/services/login.service";
 import Swal from "sweetalert2";
@@ -9,9 +9,9 @@ import Swal from "sweetalert2";
   styleUrls: ["./register-component.component.css"],
 })
 export class RegisterComponentComponent implements OnInit {
-  loginForm: FormGroup;
+  loginForm: UntypedFormGroup;
   hide = true;
-  constructor(private fb: FormBuilder, private router: Router, private loginService: LoginService) {}
+  constructor(private fb: UntypedFormBuilder, private router: Router, private loginService: LoginService) {}
 
   ngOnInit(): void {
     this.loginForm = this.fb.group({
diff --git a/src/app/components/score-page/score-page.component.ts b/src/app/components/score-page/score-page.component.ts
index dfdaa67..de00a35 100644
--- a/src/app/components/score-page/score-page.component.ts
+++ b/src/app/components/score-page/score-page.component.ts
@@ -2,7 +2,7 @@ import { Component, OnInit } from "@angular/core";
 import { AfterViewInit, ElementRef, ViewChild } from "@angular/core";
 import { Router } from "@angular/router";
 import { FirstForm } from "src/app/services/firstForm.service";
-import { FormBuilder, FormGroup, Validators } from "@angular/forms";
+import { UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms";
 import Swal from "sweetalert2";
 import { ThemePalette } from "@angular/material/core";
 import { ProgressBarMode } from "@angular/material/progress-bar";
@@ -26,7 +26,7 @@ export interface DialogData {
   styleUrls: ["./score-page.component.css"],
 })
 export class ScorePageComponent implements OnInit {
-  firstForm: FormGroup;
+  firstForm: UntypedFormGroup;
   responseList: any;
   loaded = false;
 
@@ -79,11 +79,11 @@ export class ScorePageComponent implements OnInit {
   randomList = [[]];
   finalList = [[]];
   finalList1 = [];
-  attitudeForm: FormGroup;
-  empathyForm: FormGroup;
-  policyForm: FormGroup;
+  attitudeForm: UntypedFormGroup;
+  empathyForm: UntypedFormGroup;
+  policyForm: UntypedFormGroup;
 
-  finalFeedbackForm: FormGroup;
+  finalFeedbackForm: UntypedFormGroup;
 
   progressBar: any = true;
 
@@ -405,7 +405,7 @@ export class ScorePageComponent implements OnInit {
     }
   }
   constructor(
-    private fb: FormBuilder,
+    private fb: UntypedFormBuilder,
     private apiService: CPCQService,
     private router: Router,
     private formService: FirstForm,
diff --git a/src/app/components/unpacking-page/unpacking-page.component.ts b/src/app/components/unpacking-page/unpacking-page.component.ts
index d3eb2e3..ebd6ed9 100644
--- a/src/app/components/unpacking-page/unpacking-page.component.ts
+++ b/src/app/components/unpacking-page/unpacking-page.component.ts
@@ -2,7 +2,7 @@ import { Component, OnInit, Inject } from "@angular/core";
 import { AfterViewInit, ElementRef, ViewChild } from "@angular/core";
 import { Router } from "@angular/router";
 import { FirstForm } from "src/app/services/firstForm.service";
-import { FormBuilder, FormGroup, Validators } from "@angular/forms";
+import { UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms";
 import Swal from "sweetalert2";
 import { ThemePalette } from "@angular/material/core";
 import { ProgressBarMode } from "@angular/material/progress-bar";
@@ -25,7 +25,7 @@ export interface DialogData {
   styleUrls: ["./unpacking-page.component.css"],
 })
 export class UnpackingPageComponent implements OnInit, AfterViewInit {
-  firstForm: FormGroup;
+  firstForm: UntypedFormGroup;
   responseList: any;
   loaded = false;
 
@@ -67,11 +67,11 @@ export class UnpackingPageComponent implements OnInit, AfterViewInit {
   randomList = [[]];
   finalList = [[]];
   finalList1 = [];
-  attitudeForm: FormGroup;
-  empathyForm: FormGroup;
-  policyForm: FormGroup;
+  attitudeForm: UntypedFormGroup;
+  empathyForm: UntypedFormGroup;
+  policyForm: UntypedFormGroup;
 
-  finalFeedbackForm: FormGroup;
+  finalFeedbackForm: UntypedFormGroup;
 
   //arrays of data getting from the backend
 
@@ -391,7 +391,7 @@ export class UnpackingPageComponent implements OnInit, AfterViewInit {
     }
   }
   constructor(
-    private fb: FormBuilder,
+    private fb: UntypedFormBuilder,
     private apiService: CPCQService,
     private router: Router,
     private formService: FirstForm,
diff --git a/tsconfig.json b/tsconfig.json
index 2b58f9c..29a3fc4 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -10,7 +10,7 @@
         "module": "es2020",
         "moduleResolution": "node",
         "importHelpers": true,
-        "target": "es2015",
+        "target": "es2020",
         "lib": ["es2018", "dom"],
         "paths": {
             "src/*": ["src/*"]
-- 
GitLab


From b17af197dcce102417852ca168ef7e54f1badfdb Mon Sep 17 00:00:00 2001
From: ramesh <rdramesh2009@gmail.com>
Date: Mon, 11 Jul 2022 15:24:34 -0400
Subject: [PATCH 18/23] wip

---
 package.json | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/package.json b/package.json
index eb7bcc6..69c7bae 100644
--- a/package.json
+++ b/package.json
@@ -14,14 +14,14 @@
   "private": true,
   "dependencies": {
     "@angular/animations": "^14.0.5",
-    "@angular/cdk": "^13.3.9",
+    "@angular/cdk": "^14.0.4",
     "@angular/common": "^14.0.5",
     "@angular/compiler": "^14.0.5",
     "@angular/core": "^14.0.5",
     "@angular/fire": "^6.1.4",
     "@angular/forms": "^14.0.5",
     "@angular/localize": "^14.0.5",
-    "@angular/material": "^13.3.9",
+    "@angular/material": "^14.0.4",
     "@angular/platform-browser": "^14.0.5",
     "@angular/platform-browser-dynamic": "^14.0.5",
     "@angular/router": "^14.0.5",
@@ -71,4 +71,4 @@
     "tslint": "~6.1.0",
     "typescript": "~4.6.4"
   }
-}
+}
\ No newline at end of file
-- 
GitLab


From 9ce6e49f5bfe9400c32fbb4d64389707f1455ec3 Mon Sep 17 00:00:00 2001
From: ramesh <rdramesh2009@gmail.com>
Date: Mon, 11 Jul 2022 15:32:14 -0400
Subject: [PATCH 19/23] angular 14 upgrade

---
 package-lock.json                             | 605 ++----------------
 package.json                                  |   4 +-
 src/app/app.module.ts                         |   4 +-
 .../dashboard-dialog.component.css}           |   0
 .../dashboard-dialog.component.html}          |   0
 .../dashboard-dialog.component.spec.ts}       |  12 +-
 .../dashboard-dialog.component.ts}            |  10 +-
 .../dashboard/dashboard.component.ts          |   4 +-
 .../final-dashboard.component.ts              |   4 +-
 .../result-dashboard.component.ts             |   4 +-
 10 files changed, 80 insertions(+), 567 deletions(-)
 rename src/app/components/dashboard/{dashboard-dialo/dashboard-dialo.component.css => dashboard-dialog/dashboard-dialog.component.css} (100%)
 rename src/app/components/dashboard/{dashboard-dialo/dashboard-dialo.component.html => dashboard-dialog/dashboard-dialog.component.html} (100%)
 rename src/app/components/dashboard/{dashboard-dialo/dashboard-dialo.component.spec.ts => dashboard-dialog/dashboard-dialog.component.spec.ts} (52%)
 rename src/app/components/dashboard/{dashboard-dialo/dashboard-dialo.component.ts => dashboard-dialog/dashboard-dialog.component.ts} (88%)

diff --git a/package-lock.json b/package-lock.json
index 3618edb..d9c537c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -567,9 +567,9 @@
       }
     },
     "@angular/cdk": {
-      "version": "13.3.9",
-      "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-13.3.9.tgz",
-      "integrity": "sha512-XCuCbeuxWFyo3EYrgEYx7eHzwl76vaWcxtWXl00ka8d+WAOtMQ6Tf1D98ybYT5uwF9889fFpXAPw98mVnlo3MA==",
+      "version": "14.0.4",
+      "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.0.4.tgz",
+      "integrity": "sha512-zPM4VZadoKzTF9TZ7Yx5gJ7GtQpt62f8ofdH/BF2atG+TaNzOEFqtzogP4WuJDFAxJXOPMePobhth4YjUk0Wbw==",
       "requires": {
         "parse5": "^5.0.0",
         "tslib": "^2.3.0"
@@ -1060,21 +1060,6 @@
         "tslib": "^2.3.0"
       }
     },
-    "@angular/fire": {
-      "version": "6.1.4",
-      "resolved": "https://registry.npmjs.org/@angular/fire/-/fire-6.1.4.tgz",
-      "integrity": "sha512-5u305XnBC041JMrAtczLa0bdprxw7RkXy4kgcRCisPI8maGuiN4XzlwNYX+plCHZCo4R0motxQom//tPTA2edQ==",
-      "requires": {
-        "tslib": "^2.0.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
-          "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
-        }
-      }
-    },
     "@angular/forms": {
       "version": "14.0.5",
       "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.0.5.tgz",
@@ -1268,9 +1253,9 @@
       }
     },
     "@angular/material": {
-      "version": "13.3.9",
-      "resolved": "https://registry.npmjs.org/@angular/material/-/material-13.3.9.tgz",
-      "integrity": "sha512-FU8lcMgo+AL8ckd27B4V097ZPoIZNRHiCe3wpgkImT1qC0YwcyXZVn0MqQTTFSdC9a/aI8wPm3AbTClJEVw5Vw==",
+      "version": "14.0.4",
+      "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.0.4.tgz",
+      "integrity": "sha512-Ysz6oPbpLH7CvRR6oxQwpUImSbFqxL4+eiH0LPc7vkaOSrvGdZ/7cWhAfT6hVnw3bEY+eq5qBSMgyVUB44z4eg==",
       "requires": {
         "tslib": "^2.3.0"
       }
@@ -2714,344 +2699,6 @@
       "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
       "dev": true
     },
-    "@firebase/analytics": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.6.2.tgz",
-      "integrity": "sha512-4Ceov+rPfOEPIdbjlpTim/wbcUUneIesHag4UOzvmFsRRXqbxLwQpyZQWEbTSriUeU8uTKj9yOW32hsskV9Klg==",
-      "requires": {
-        "@firebase/analytics-types": "0.4.0",
-        "@firebase/component": "0.1.21",
-        "@firebase/installations": "0.4.19",
-        "@firebase/logger": "0.2.6",
-        "@firebase/util": "0.3.4",
-        "tslib": "^1.11.1"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
-        }
-      }
-    },
-    "@firebase/analytics-types": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.4.0.tgz",
-      "integrity": "sha512-Jj2xW+8+8XPfWGkv9HPv/uR+Qrmq37NPYT352wf7MvE9LrstpLVmFg3LqG6MCRr5miLAom5sen2gZ+iOhVDeRA=="
-    },
-    "@firebase/app": {
-      "version": "0.6.14",
-      "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.6.14.tgz",
-      "integrity": "sha512-ZQKuiJ+fzr4tULgWoXbW+AZVTGsejOkSrlQ+zx78WiGKIubpFJLklnP3S0oYr/1nHzr4vaKuM4G8IL1Wv/+MpQ==",
-      "requires": {
-        "@firebase/app-types": "0.6.1",
-        "@firebase/component": "0.1.21",
-        "@firebase/logger": "0.2.6",
-        "@firebase/util": "0.3.4",
-        "dom-storage": "2.1.0",
-        "tslib": "^1.11.1",
-        "xmlhttprequest": "1.8.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
-        }
-      }
-    },
-    "@firebase/app-types": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.6.1.tgz",
-      "integrity": "sha512-L/ZnJRAq7F++utfuoTKX4CLBG5YR7tFO3PLzG1/oXXKEezJ0kRL3CMRoueBEmTCzVb/6SIs2Qlaw++uDgi5Xyg=="
-    },
-    "@firebase/auth": {
-      "version": "0.16.3",
-      "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.16.3.tgz",
-      "integrity": "sha512-0U+SJrh9K8vDv+lvWPYU9cAQBRPt8fpm3cK7yRZAwnN4jbcqfg+KBaddrDn28aIQYX+n4TrLiZ9TMJXPJfUYhQ==",
-      "requires": {
-        "@firebase/auth-types": "0.10.1"
-      }
-    },
-    "@firebase/auth-interop-types": {
-      "version": "0.1.5",
-      "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.5.tgz",
-      "integrity": "sha512-88h74TMQ6wXChPA6h9Q3E1Jg6TkTHep2+k63OWg3s0ozyGVMeY+TTOti7PFPzq5RhszQPQOoCi59es4MaRvgCw=="
-    },
-    "@firebase/auth-types": {
-      "version": "0.10.1",
-      "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.10.1.tgz",
-      "integrity": "sha512-/+gBHb1O9x/YlG7inXfxff/6X3BPZt4zgBv4kql6HEmdzNQCodIRlEYnI+/da+lN+dha7PjaFH7C7ewMmfV7rw=="
-    },
-    "@firebase/component": {
-      "version": "0.1.21",
-      "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.21.tgz",
-      "integrity": "sha512-kd5sVmCLB95EK81Pj+yDTea8pzN2qo/1yr0ua9yVi6UgMzm6zAeih73iVUkaat96MAHy26yosMufkvd3zC4IKg==",
-      "requires": {
-        "@firebase/util": "0.3.4",
-        "tslib": "^1.11.1"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
-        }
-      }
-    },
-    "@firebase/database": {
-      "version": "0.9.2",
-      "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.9.2.tgz",
-      "integrity": "sha512-pNvgKUNCdKvZxTLBt8Mg1iFbDOkACUHvfXs1tqLYASa9AvBZA64W4qH/uv6nXWlt+iXmknAKcJ+s9AOQ/hDPCw==",
-      "requires": {
-        "@firebase/auth-interop-types": "0.1.5",
-        "@firebase/component": "0.1.21",
-        "@firebase/database-types": "0.6.1",
-        "@firebase/logger": "0.2.6",
-        "@firebase/util": "0.3.4",
-        "faye-websocket": "0.11.3",
-        "tslib": "^1.11.1"
-      },
-      "dependencies": {
-        "faye-websocket": {
-          "version": "0.11.3",
-          "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz",
-          "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==",
-          "requires": {
-            "websocket-driver": ">=0.5.1"
-          }
-        },
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
-        }
-      }
-    },
-    "@firebase/database-types": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.6.1.tgz",
-      "integrity": "sha512-JtL3FUbWG+bM59iYuphfx9WOu2Mzf0OZNaqWiQ7lJR8wBe7bS9rIm9jlBFtksB7xcya1lZSQPA/GAy2jIlMIkA==",
-      "requires": {
-        "@firebase/app-types": "0.6.1"
-      }
-    },
-    "@firebase/firestore": {
-      "version": "2.1.5",
-      "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-2.1.5.tgz",
-      "integrity": "sha512-y680BvGOBw8MUvls5aVxTyougSedwHSDEoWZ4htZ9FJGnlI/jk5LhmmrJ4ELk0vmK9sbloHn2kFSkMaoUVDeZQ==",
-      "requires": {
-        "@firebase/component": "0.1.21",
-        "@firebase/firestore-types": "2.1.0",
-        "@firebase/logger": "0.2.6",
-        "@firebase/util": "0.3.4",
-        "@firebase/webchannel-wrapper": "0.4.1",
-        "@grpc/grpc-js": "^1.0.0",
-        "@grpc/proto-loader": "^0.5.0",
-        "node-fetch": "2.6.1",
-        "tslib": "^1.11.1"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
-        }
-      }
-    },
-    "@firebase/firestore-types": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-2.1.0.tgz",
-      "integrity": "sha512-jietErBWihMvJkqqEquQy5GgoEwzHnMXXC/TsVoe9FPysXm1/AeJS12taS7ZYvenAtyvL/AEJyKrRKRh4adcJQ=="
-    },
-    "@firebase/functions": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.6.1.tgz",
-      "integrity": "sha512-xNCAY3cLlVWE8Azf+/84OjnaXMoyUstJ3vwVRG0ie22QhsdQuPa1tXTiPX4Tmm+Hbbd/Aw0A/7dkEnuW+zYzaQ==",
-      "requires": {
-        "@firebase/component": "0.1.21",
-        "@firebase/functions-types": "0.4.0",
-        "@firebase/messaging-types": "0.5.0",
-        "node-fetch": "2.6.1",
-        "tslib": "^1.11.1"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
-        }
-      }
-    },
-    "@firebase/functions-types": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.4.0.tgz",
-      "integrity": "sha512-3KElyO3887HNxtxNF1ytGFrNmqD+hheqjwmT3sI09FaDCuaxGbOnsXAXH2eQ049XRXw9YQpHMgYws/aUNgXVyQ=="
-    },
-    "@firebase/installations": {
-      "version": "0.4.19",
-      "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.4.19.tgz",
-      "integrity": "sha512-QqAQzosKVVqIx7oMt5ujF4NsIXgtlTnej4JXGJ8sQQuJoMnt3T+PFQRHbr7uOfVaBiHYhEaXCcmmhfKUHwKftw==",
-      "requires": {
-        "@firebase/component": "0.1.21",
-        "@firebase/installations-types": "0.3.4",
-        "@firebase/util": "0.3.4",
-        "idb": "3.0.2",
-        "tslib": "^1.11.1"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
-        }
-      }
-    },
-    "@firebase/installations-types": {
-      "version": "0.3.4",
-      "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.3.4.tgz",
-      "integrity": "sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q=="
-    },
-    "@firebase/logger": {
-      "version": "0.2.6",
-      "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.2.6.tgz",
-      "integrity": "sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw=="
-    },
-    "@firebase/messaging": {
-      "version": "0.7.3",
-      "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.7.3.tgz",
-      "integrity": "sha512-63nOP2SmQJrj9jrhV3K96L5MRKS6AqmFVLX1XbGk6K6lz38ZC4LIoCcHxzUBXY7fCAuZvNmh/YB3pE8B2mTs8A==",
-      "requires": {
-        "@firebase/component": "0.1.21",
-        "@firebase/installations": "0.4.19",
-        "@firebase/messaging-types": "0.5.0",
-        "@firebase/util": "0.3.4",
-        "idb": "3.0.2",
-        "tslib": "^1.11.1"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
-        }
-      }
-    },
-    "@firebase/messaging-types": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.5.0.tgz",
-      "integrity": "sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg=="
-    },
-    "@firebase/performance": {
-      "version": "0.4.5",
-      "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.4.5.tgz",
-      "integrity": "sha512-oenEOaV/UzvV8XPi8afYQ71RzyrHoBesqOyXqb1TOg7dpU+i+UJ5PS8K64DytKUHTxQl+UJFcuxNpsoy9BpWzw==",
-      "requires": {
-        "@firebase/component": "0.1.21",
-        "@firebase/installations": "0.4.19",
-        "@firebase/logger": "0.2.6",
-        "@firebase/performance-types": "0.0.13",
-        "@firebase/util": "0.3.4",
-        "tslib": "^1.11.1"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
-        }
-      }
-    },
-    "@firebase/performance-types": {
-      "version": "0.0.13",
-      "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.0.13.tgz",
-      "integrity": "sha512-6fZfIGjQpwo9S5OzMpPyqgYAUZcFzZxHFqOyNtorDIgNXq33nlldTL/vtaUZA8iT9TT5cJlCrF/jthKU7X21EA=="
-    },
-    "@firebase/polyfill": {
-      "version": "0.3.36",
-      "resolved": "https://registry.npmjs.org/@firebase/polyfill/-/polyfill-0.3.36.tgz",
-      "integrity": "sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg==",
-      "requires": {
-        "core-js": "3.6.5",
-        "promise-polyfill": "8.1.3",
-        "whatwg-fetch": "2.0.4"
-      },
-      "dependencies": {
-        "core-js": {
-          "version": "3.6.5",
-          "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz",
-          "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA=="
-        }
-      }
-    },
-    "@firebase/remote-config": {
-      "version": "0.1.30",
-      "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.1.30.tgz",
-      "integrity": "sha512-LAfLDcp1AN0V/7AkxBuTKy+Qnq9fKYKxbA5clrXRNVzJbTVnF5eFGsaUOlkes0ESG6lbqKy5ZcDgdl73zBIhAA==",
-      "requires": {
-        "@firebase/component": "0.1.21",
-        "@firebase/installations": "0.4.19",
-        "@firebase/logger": "0.2.6",
-        "@firebase/remote-config-types": "0.1.9",
-        "@firebase/util": "0.3.4",
-        "tslib": "^1.11.1"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
-        }
-      }
-    },
-    "@firebase/remote-config-types": {
-      "version": "0.1.9",
-      "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz",
-      "integrity": "sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA=="
-    },
-    "@firebase/storage": {
-      "version": "0.4.2",
-      "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.4.2.tgz",
-      "integrity": "sha512-87CrvKrf8kijVekRBmUs8htsNz7N5X/pDhv3BvJBqw8K65GsUolpyjx0f4QJRkCRUYmh3MSkpa5P08lpVbC6nQ==",
-      "requires": {
-        "@firebase/component": "0.1.21",
-        "@firebase/storage-types": "0.3.13",
-        "@firebase/util": "0.3.4",
-        "tslib": "^1.11.1"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
-        }
-      }
-    },
-    "@firebase/storage-types": {
-      "version": "0.3.13",
-      "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.3.13.tgz",
-      "integrity": "sha512-pL7b8d5kMNCCL0w9hF7pr16POyKkb3imOW7w0qYrhBnbyJTdVxMWZhb0HxCFyQWC0w3EiIFFmxoz8NTFZDEFog=="
-    },
-    "@firebase/util": {
-      "version": "0.3.4",
-      "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.3.4.tgz",
-      "integrity": "sha512-VwjJUE2Vgr2UMfH63ZtIX9Hd7x+6gayi6RUXaTqEYxSbf/JmehLmAEYSuxS/NckfzAXWeGnKclvnXVibDgpjQQ==",
-      "requires": {
-        "tslib": "^1.11.1"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
-        }
-      }
-    },
-    "@firebase/webchannel-wrapper": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.4.1.tgz",
-      "integrity": "sha512-0yPjzuzGMkW1GkrC8yWsiN7vt1OzkMIi9HgxRmKREZl2wnNPOKo/yScTjXf/O57HM8dltqxPF6jlNLFVtc2qdw=="
-    },
     "@gar/promisify": {
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
@@ -3270,20 +2917,11 @@
         }
       }
     },
-    "@grpc/grpc-js": {
-      "version": "1.2.6",
-      "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.2.6.tgz",
-      "integrity": "sha512-wfYwFy7CvVEmBKzeDX1kQQYrv5NBpe8Z+VwXipFvqof3lCXKch7k+4T3grKtptaH5GQ5KP9iKwPr9hMDSynIUw==",
-      "requires": {
-        "@types/node": ">=12.12.47",
-        "google-auth-library": "^6.1.1",
-        "semver": "^6.2.0"
-      }
-    },
     "@grpc/proto-loader": {
       "version": "0.5.6",
       "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.6.tgz",
       "integrity": "sha512-DT14xgw3PSzPxwS13auTEwxhMMOoz33DPUKNtmYK/QYbBSpLXJy78FGGs5yVoxVobEqPm4iW9MOIoz0A3bLTRQ==",
+      "dev": true,
       "requires": {
         "lodash.camelcase": "^4.3.0",
         "protobufjs": "^6.8.6"
@@ -3736,27 +3374,32 @@
     "@protobufjs/aspromise": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
-      "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78="
+      "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=",
+      "dev": true
     },
     "@protobufjs/base64": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
-      "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
+      "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==",
+      "dev": true
     },
     "@protobufjs/codegen": {
       "version": "2.0.4",
       "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
-      "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
+      "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==",
+      "dev": true
     },
     "@protobufjs/eventemitter": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
-      "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A="
+      "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=",
+      "dev": true
     },
     "@protobufjs/fetch": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
       "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=",
+      "dev": true,
       "requires": {
         "@protobufjs/aspromise": "^1.1.1",
         "@protobufjs/inquire": "^1.1.0"
@@ -3765,27 +3408,32 @@
     "@protobufjs/float": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
-      "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E="
+      "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=",
+      "dev": true
     },
     "@protobufjs/inquire": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
-      "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik="
+      "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=",
+      "dev": true
     },
     "@protobufjs/path": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
-      "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0="
+      "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=",
+      "dev": true
     },
     "@protobufjs/pool": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
-      "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q="
+      "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=",
+      "dev": true
     },
     "@protobufjs/utf8": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
-      "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="
+      "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=",
+      "dev": true
     },
     "@schematics/angular": {
       "version": "14.0.5",
@@ -3975,7 +3623,8 @@
     "@types/long": {
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz",
-      "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w=="
+      "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==",
+      "dev": true
     },
     "@types/mime": {
       "version": "1.3.2",
@@ -3986,7 +3635,8 @@
     "@types/node": {
       "version": "12.19.15",
       "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.15.tgz",
-      "integrity": "sha512-lowukE3GUI+VSYSu6VcBXl14d61Rp5hA1D+61r16qnwC0lYNSqdxcvRh0pswejorHfS+HgwBasM8jLXz0/aOsw=="
+      "integrity": "sha512-lowukE3GUI+VSYSu6VcBXl14d61Rp5hA1D+61r16qnwC0lYNSqdxcvRh0pswejorHfS+HgwBasM8jLXz0/aOsw==",
+      "dev": true
     },
     "@types/parse-json": {
       "version": "4.0.0",
@@ -4250,6 +3900,7 @@
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
       "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+      "dev": true,
       "requires": {
         "event-target-shim": "^5.0.0"
       }
@@ -4798,7 +4449,8 @@
     "base64-js": {
       "version": "1.5.1",
       "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
-      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
+      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+      "dev": true
     },
     "base64id": {
       "version": "2.0.0",
@@ -4851,7 +4503,8 @@
     "bignumber.js": {
       "version": "9.0.1",
       "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz",
-      "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA=="
+      "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==",
+      "dev": true
     },
     "binary": {
       "version": "0.3.0",
@@ -5150,7 +4803,8 @@
     "buffer-equal-constant-time": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
-      "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
+      "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=",
+      "dev": true
     },
     "buffer-from": {
       "version": "1.1.1",
@@ -6668,11 +6322,6 @@
         "entities": "^2.0.0"
       }
     },
-    "dom-storage": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz",
-      "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q=="
-    },
     "domelementtype": {
       "version": "2.3.0",
       "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
@@ -6755,6 +6404,7 @@
       "version": "1.0.11",
       "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
       "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+      "dev": true,
       "requires": {
         "safe-buffer": "^5.0.1"
       }
@@ -7217,7 +6867,8 @@
     "event-target-shim": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
-      "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
+      "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
+      "dev": true
     },
     "eventemitter-asyncresource": {
       "version": "1.0.0",
@@ -7485,7 +7136,8 @@
     "extend": {
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
-      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+      "dev": true
     },
     "external-editor": {
       "version": "3.1.0",
@@ -7686,27 +7338,6 @@
         "path-exists": "^4.0.0"
       }
     },
-    "firebase": {
-      "version": "8.2.6",
-      "resolved": "https://registry.npmjs.org/firebase/-/firebase-8.2.6.tgz",
-      "integrity": "sha512-UHBAA8r7oIdbdafTGo3ED8wL9r/vdSgllN0yBzJMCyxk16DtL0oQnXRXwTU7FSc2c3JrvTUX9jtMFjtKjOUNMQ==",
-      "requires": {
-        "@firebase/analytics": "0.6.2",
-        "@firebase/app": "0.6.14",
-        "@firebase/app-types": "0.6.1",
-        "@firebase/auth": "0.16.3",
-        "@firebase/database": "0.9.2",
-        "@firebase/firestore": "2.1.5",
-        "@firebase/functions": "0.6.1",
-        "@firebase/installations": "0.4.19",
-        "@firebase/messaging": "0.7.3",
-        "@firebase/performance": "0.4.5",
-        "@firebase/polyfill": "0.3.36",
-        "@firebase/remote-config": "0.1.30",
-        "@firebase/storage": "0.4.2",
-        "@firebase/util": "0.3.4"
-      }
-    },
     "firebase-tools": {
       "version": "8.20.0",
       "resolved": "https://registry.npmjs.org/firebase-tools/-/firebase-tools-8.20.0.tgz",
@@ -8299,51 +7930,6 @@
         }
       }
     },
-    "gaxios": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.1.0.tgz",
-      "integrity": "sha512-vb0to8xzGnA2qcgywAjtshOKKVDf2eQhJoiL6fHhgW5tVN7wNk7egnYIO9zotfn3lQ3De1VPdf7V5/BWfCtCmg==",
-      "requires": {
-        "abort-controller": "^3.0.0",
-        "extend": "^3.0.2",
-        "https-proxy-agent": "^5.0.0",
-        "is-stream": "^2.0.0",
-        "node-fetch": "^2.3.0"
-      },
-      "dependencies": {
-        "agent-base": {
-          "version": "6.0.2",
-          "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
-          "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
-          "requires": {
-            "debug": "4"
-          }
-        },
-        "https-proxy-agent": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
-          "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
-          "requires": {
-            "agent-base": "6",
-            "debug": "4"
-          }
-        },
-        "is-stream": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
-          "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw=="
-        }
-      }
-    },
-    "gcp-metadata": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.2.1.tgz",
-      "integrity": "sha512-tSk+REe5iq/N+K+SK1XjZJUrFPuDqGZVzCy2vocIHIGmPlTGsa8owXMJwGkrXr73NO0AzhPW4MF2DEHz7P2AVw==",
-      "requires": {
-        "gaxios": "^4.0.0",
-        "json-bigint": "^1.0.0"
-      }
-    },
     "gensync": {
       "version": "1.0.0-beta.2",
       "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
@@ -8490,37 +8076,6 @@
         }
       }
     },
-    "google-auth-library": {
-      "version": "6.1.6",
-      "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.1.6.tgz",
-      "integrity": "sha512-Q+ZjUEvLQj/lrVHF/IQwRo6p3s8Nc44Zk/DALsN+ac3T4HY/g/3rrufkgtl+nZ1TW7DNAw5cTChdVp4apUXVgQ==",
-      "requires": {
-        "arrify": "^2.0.0",
-        "base64-js": "^1.3.0",
-        "ecdsa-sig-formatter": "^1.0.11",
-        "fast-text-encoding": "^1.0.0",
-        "gaxios": "^4.0.0",
-        "gcp-metadata": "^4.2.0",
-        "gtoken": "^5.0.4",
-        "jws": "^4.0.0",
-        "lru-cache": "^6.0.0"
-      },
-      "dependencies": {
-        "arrify": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
-          "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug=="
-        },
-        "lru-cache": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-          "requires": {
-            "yallist": "^4.0.0"
-          }
-        }
-      }
-    },
     "google-gax": {
       "version": "1.12.0",
       "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-1.12.0.tgz",
@@ -8667,14 +8222,6 @@
         }
       }
     },
-    "google-p12-pem": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.0.3.tgz",
-      "integrity": "sha512-wS0ek4ZtFx/ACKYF3JhyGe5kzH7pgiQ7J5otlumqR9psmWMYc+U9cErKlCYVYHoUaidXHdZ2xbo34kB+S+24hA==",
-      "requires": {
-        "node-forge": "^0.10.0"
-      }
-    },
     "got": {
       "version": "9.6.0",
       "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
@@ -8700,16 +8247,6 @@
       "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
       "dev": true
     },
-    "gtoken": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.2.1.tgz",
-      "integrity": "sha512-OY0BfPKe3QnMsY9MzTHTSKn+Vl2l1CcLe6BwDEQj00mbbkl5nyQ/7EUREstg4fQNZ8iYE7br4JJ7TdKeDOPWmw==",
-      "requires": {
-        "gaxios": "^4.0.0",
-        "google-p12-pem": "^3.0.3",
-        "jws": "^4.0.0"
-      }
-    },
     "handle-thing": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz",
@@ -8902,7 +8439,8 @@
     "http-parser-js": {
       "version": "0.5.3",
       "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz",
-      "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg=="
+      "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==",
+      "dev": true
     },
     "http-proxy": {
       "version": "1.18.1",
@@ -9012,11 +8550,6 @@
       "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
       "dev": true
     },
-    "idb": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz",
-      "integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw=="
-    },
     "ieee754": {
       "version": "1.2.1",
       "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
@@ -9779,14 +9312,6 @@
       "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
       "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
     },
-    "json-bigint": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
-      "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
-      "requires": {
-        "bignumber.js": "^9.0.0"
-      }
-    },
     "json-buffer": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
@@ -9950,6 +9475,7 @@
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
       "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
+      "dev": true,
       "requires": {
         "buffer-equal-constant-time": "1.0.1",
         "ecdsa-sig-formatter": "1.0.11",
@@ -9960,6 +9486,7 @@
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
       "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
+      "dev": true,
       "requires": {
         "jwa": "^2.0.0",
         "safe-buffer": "^5.0.1"
@@ -10399,7 +9926,8 @@
     "lodash.camelcase": {
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
-      "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY="
+      "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=",
+      "dev": true
     },
     "lodash.debounce": {
       "version": "4.0.8",
@@ -10641,7 +10169,8 @@
     "long": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
-      "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
+      "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==",
+      "dev": true
     },
     "lottie-web": {
       "version": "5.7.6",
@@ -11438,12 +10967,8 @@
     "node-fetch": {
       "version": "2.6.1",
       "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
-      "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
-    },
-    "node-forge": {
-      "version": "0.10.0",
-      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
-      "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA=="
+      "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
+      "dev": true
     },
     "node-gyp": {
       "version": "7.1.2",
@@ -13065,11 +12590,6 @@
       "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
       "dev": true
     },
-    "promise-polyfill": {
-      "version": "8.1.3",
-      "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz",
-      "integrity": "sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g=="
-    },
     "promise-retry": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
@@ -13092,6 +12612,7 @@
       "version": "6.10.2",
       "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.10.2.tgz",
       "integrity": "sha512-27yj+04uF6ya9l+qfpH187aqEzfCF4+Uit0I9ZBQVqK09hk/SQzKa2MUqUpXaVa7LOFRg1TSSr3lVxGOk6c0SQ==",
+      "dev": true,
       "requires": {
         "@protobufjs/aspromise": "^1.1.2",
         "@protobufjs/base64": "^1.1.2",
@@ -13111,7 +12632,8 @@
         "@types/node": {
           "version": "13.13.41",
           "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.41.tgz",
-          "integrity": "sha512-qLT9IvHiXJfdrje9VmsLzun7cQ65obsBTmtU3EOnCSLFOoSHx1hpiRHoBnpdbyFqnzqdUUIv81JcEJQCB8un9g=="
+          "integrity": "sha512-qLT9IvHiXJfdrje9VmsLzun7cQ65obsBTmtU3EOnCSLFOoSHx1hpiRHoBnpdbyFqnzqdUUIv81JcEJQCB8un9g==",
+          "dev": true
         }
       }
     },
@@ -16245,6 +15767,7 @@
       "version": "0.7.4",
       "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
       "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
+      "dev": true,
       "requires": {
         "http-parser-js": ">=0.5.1",
         "safe-buffer": ">=5.1.0",
@@ -16254,12 +15777,8 @@
     "websocket-extensions": {
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
-      "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg=="
-    },
-    "whatwg-fetch": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
-      "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng=="
+      "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
+      "dev": true
     },
     "whatwg-url": {
       "version": "7.1.0",
@@ -16518,11 +16037,6 @@
       "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==",
       "dev": true
     },
-    "xmlhttprequest": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
-      "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw="
-    },
     "xtend": {
       "version": "4.0.2",
       "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
@@ -16538,7 +16052,8 @@
     "yallist": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+      "dev": true
     },
     "yaml": {
       "version": "1.10.2",
diff --git a/package.json b/package.json
index 69c7bae..d80c1a1 100644
--- a/package.json
+++ b/package.json
@@ -18,7 +18,6 @@
     "@angular/common": "^14.0.5",
     "@angular/compiler": "^14.0.5",
     "@angular/core": "^14.0.5",
-    "@angular/fire": "^6.1.4",
     "@angular/forms": "^14.0.5",
     "@angular/localize": "^14.0.5",
     "@angular/material": "^14.0.4",
@@ -29,7 +28,6 @@
     "angular-walkthrough": "^0.8.2",
     "apexcharts": "^3.24.0",
     "bootstrap": "^4.6.0",
-    "firebase": "^7.0 || ^8.0",
     "lottie-web": "^5.7.6",
     "ng-apexcharts": "^1.5.7",
     "ng-waveform": "^0.2.1",
@@ -71,4 +69,4 @@
     "tslint": "~6.1.0",
     "typescript": "~4.6.4"
   }
-}
\ No newline at end of file
+}
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index b60133e..d967a90 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -47,7 +47,7 @@ import { AboutCompComponent } from "./components/about-comp/about-comp.component
 import { ConsentFormComponent } from "./components/consent-form/consent-form.component";
 import { CpcqFormComponent } from "./components/cpcq-form/cpcq-form.component";
 import { DialogFormComponent } from "./components/cpcq-form/dialog-form/dialog-form.component";
-import { DashboardDialoComponent } from "./components/dashboard/dashboard-dialo/dashboard-dialo.component";
+import { DashboardDialogComponent } from "./components/dashboard/dashboard-dialog/dashboard-dialog.component";
 import { DashboardComponent } from "./components/dashboard/dashboard.component";
 import { FinalDashboardComponent } from "./components/final-dashboard/final-dashboard.component";
 import { FinalFeedbackComponent } from "./components/final-feedback/final-feedback.component";
@@ -93,7 +93,7 @@ export function playerFactory() {
     PostSurveyComponent,
     DialogFormComponent,
     DashboardComponent,
-    DashboardDialoComponent,
+    DashboardDialogComponent,
     FooterComponent,
     ResultDashboardComponent,
     AboutCompComponent,
diff --git a/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.css b/src/app/components/dashboard/dashboard-dialog/dashboard-dialog.component.css
similarity index 100%
rename from src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.css
rename to src/app/components/dashboard/dashboard-dialog/dashboard-dialog.component.css
diff --git a/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.html b/src/app/components/dashboard/dashboard-dialog/dashboard-dialog.component.html
similarity index 100%
rename from src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.html
rename to src/app/components/dashboard/dashboard-dialog/dashboard-dialog.component.html
diff --git a/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.spec.ts b/src/app/components/dashboard/dashboard-dialog/dashboard-dialog.component.spec.ts
similarity index 52%
rename from src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.spec.ts
rename to src/app/components/dashboard/dashboard-dialog/dashboard-dialog.component.spec.ts
index 97157fd..5e6ae83 100644
--- a/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.spec.ts
+++ b/src/app/components/dashboard/dashboard-dialog/dashboard-dialog.component.spec.ts
@@ -1,19 +1,19 @@
 import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing";
 
-import { DashboardDialoComponent } from "./dashboard-dialo.component";
+import { DashboardDialogComponent } from "./dashboard-dialog.component";
 
-describe("DashboardDialoComponent", () => {
-  let component: DashboardDialoComponent;
-  let fixture: ComponentFixture<DashboardDialoComponent>;
+describe("DashboardDialogComponent", () => {
+  let component: DashboardDialogComponent;
+  let fixture: ComponentFixture<DashboardDialogComponent>;
 
   beforeEach(waitForAsync(() => {
     TestBed.configureTestingModule({
-      declarations: [DashboardDialoComponent],
+      declarations: [DashboardDialogComponent],
     }).compileComponents();
   }));
 
   beforeEach(() => {
-    fixture = TestBed.createComponent(DashboardDialoComponent);
+    fixture = TestBed.createComponent(DashboardDialogComponent);
     component = fixture.componentInstance;
     fixture.detectChanges();
   });
diff --git a/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.ts b/src/app/components/dashboard/dashboard-dialog/dashboard-dialog.component.ts
similarity index 88%
rename from src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.ts
rename to src/app/components/dashboard/dashboard-dialog/dashboard-dialog.component.ts
index 130e889..e6a46de 100644
--- a/src/app/components/dashboard/dashboard-dialo/dashboard-dialo.component.ts
+++ b/src/app/components/dashboard/dashboard-dialog/dashboard-dialog.component.ts
@@ -7,11 +7,11 @@ export interface DialogData {
   animal;
 }
 @Component({
-  selector: "app-dashboard-dialo",
-  templateUrl: "./dashboard-dialo.component.html",
-  styleUrls: ["./dashboard-dialo.component.css"],
+  selector: "app-dashboard-dialog",
+  templateUrl: "./dashboard-dialog.component.html",
+  styleUrls: ["./dashboard-dialog.component.css"],
 })
-export class DashboardDialoComponent implements OnInit {
+export class DashboardDialogComponent implements OnInit {
   arr1 = [
     "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar1.png?alt=media&token=43a091f7-a828-4f7b-9478-991de35a5f5c",
     "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/avatar2.png?alt=media&token=f2020833-12c5-4597-9b1c-b723c988d4d5",
@@ -23,7 +23,7 @@ export class DashboardDialoComponent implements OnInit {
     "https://firebasestorage.googleapis.com/v0/b/cpcdp-vcu.appspot.com/o/dog.png?alt=media&token=4bf29ae2-7ddd-4eab-bb0e-749f885bda0b",
   ];
   constructor(
-    public dialogRef: MatDialogRef<DashboardDialoComponent>,
+    public dialogRef: MatDialogRef<DashboardDialogComponent>,
     public profileService: PreSurveyService,
     @Inject(MAT_DIALOG_DATA) public data: DialogData
   ) {}
diff --git a/src/app/components/dashboard/dashboard.component.ts b/src/app/components/dashboard/dashboard.component.ts
index 2642a18..1e16666 100644
--- a/src/app/components/dashboard/dashboard.component.ts
+++ b/src/app/components/dashboard/dashboard.component.ts
@@ -14,7 +14,7 @@ import {
 import { AnimationOptions } from "ngx-lottie";
 import { PreSurveyService } from "src/app/services/preSurvey.service";
 import Swal from "sweetalert2";
-import { DashboardDialoComponent } from "./dashboard-dialo/dashboard-dialo.component";
+import { DashboardDialogComponent } from "./dashboard-dialog/dashboard-dialog.component";
 
 export interface DialogData {
   animal;
@@ -192,7 +192,7 @@ export class DashboardComponent implements OnInit {
   }
 
   openDialog() {
-    const dialogRef = this.dialog.open(DashboardDialoComponent, {
+    const dialogRef = this.dialog.open(DashboardDialogComponent, {
       data: { userID: this.profileDetails[0]["id"] },
       disableClose: true,
     });
diff --git a/src/app/components/final-dashboard/final-dashboard.component.ts b/src/app/components/final-dashboard/final-dashboard.component.ts
index 3668ea5..6ab667d 100644
--- a/src/app/components/final-dashboard/final-dashboard.component.ts
+++ b/src/app/components/final-dashboard/final-dashboard.component.ts
@@ -15,7 +15,7 @@ import { AnimationOptions } from "ngx-lottie";
 import { CPCQService } from "src/app/services/cpcq.service";
 import { PreSurveyService } from "src/app/services/preSurvey.service";
 import Swal from "sweetalert2";
-import { DashboardDialoComponent } from "../dashboard/dashboard-dialo/dashboard-dialo.component";
+import { DashboardDialogComponent } from "../dashboard/dashboard-dialog/dashboard-dialog.component";
 
 export interface DialogData {
   animal;
@@ -199,7 +199,7 @@ export class FinalDashboardComponent implements OnInit {
   }
 
   openDialog() {
-    const dialogRef = this.dialog.open(DashboardDialoComponent, {
+    const dialogRef = this.dialog.open(DashboardDialogComponent, {
       data: { userID: this.profileDetails[0]["id"] },
     });
 
diff --git a/src/app/components/result-dashboard/result-dashboard.component.ts b/src/app/components/result-dashboard/result-dashboard.component.ts
index dc70e78..e23c7ae 100644
--- a/src/app/components/result-dashboard/result-dashboard.component.ts
+++ b/src/app/components/result-dashboard/result-dashboard.component.ts
@@ -2,7 +2,7 @@ import { Component, OnInit, ViewChild, Inject } from "@angular/core";
 import { Router } from "@angular/router";
 import { MatDialog, MAT_DIALOG_DATA } from "@angular/material/dialog";
 import Swal from "sweetalert2";
-import { DashboardDialoComponent } from "../dashboard/dashboard-dialo/dashboard-dialo.component";
+import { DashboardDialogComponent } from "../dashboard/dashboard-dialog/dashboard-dialog.component";
 import { AnimationItem } from "lottie-web";
 import { PreSurveyService } from "src/app/services/preSurvey.service";
 import { CPCQService } from "src/app/services/cpcq.service";
@@ -197,7 +197,7 @@ export class ResultDashboardComponent implements OnInit {
   }
 
   openDialog() {
-    const dialogRef = this.dialog.open(DashboardDialoComponent, {
+    const dialogRef = this.dialog.open(DashboardDialogComponent, {
       data: { userID: this.profileDetails[0]["id"] },
     });
 
-- 
GitLab


From 97d5fa97e18ab4aa557cd71b5aac7f9281ec72a1 Mon Sep 17 00:00:00 2001
From: ramesh <rdramesh2009@gmail.com>
Date: Mon, 11 Jul 2022 15:47:37 -0400
Subject: [PATCH 20/23] imports organized

---
 package-lock.json                             |  6 +-
 package.json                                  |  2 +-
 .../cpcq-form/cpcq-form.component.ts          | 15 +++--
 .../dialog-form/dialog-form.component.ts      | 11 ++--
 .../final-feedback.component.ts               | 15 +++--
 .../first-form/first-form.component.ts        |  6 +-
 .../graph-page/graph-page.component.html      |  5 --
 .../graph-page/graph-page.component.ts        | 33 +++++-----
 src/app/components/header/header.component.ts |  1 -
 .../main-game/main-game.component.ts          |  4 +-
 .../dialog-pdf/dialog-pdf.component.ts        |  7 +--
 .../result-dashboard.component.ts             | 20 +++---
 .../score-page/score-page.component.ts        | 17 +++--
 .../test/my-overlay/my-overlay.component.ts   | 13 ++--
 src/app/components/test/test.component.ts     |  2 +-
 .../trial-component.component.ts              | 62 -------------------
 .../unpacking-page.component.ts               | 16 +++--
 17 files changed, 78 insertions(+), 157 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index d9c537c..15d7de4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -14391,9 +14391,9 @@
       }
     },
     "sweetalert2": {
-      "version": "10.13.3",
-      "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-10.13.3.tgz",
-      "integrity": "sha512-kSvTkXvc59+vPf9CfZ/wc/uvFkccxoOMLK1aUibN0mXU4hbYg/NylBTlmfvuUjJQ5SWL3X6s8w7AG5croH8U1w=="
+      "version": "11.4.20",
+      "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.4.20.tgz",
+      "integrity": "sha512-3LiBFa5yRmTcqM0vGcFmo0EnhmaMSJfzhFpvZoXK6BOY94HIcIUbwhhW+NY5oXOpz5CT21qFAu0fKCUkOc/Pew=="
     },
     "symbol-observable": {
       "version": "4.0.0",
diff --git a/package.json b/package.json
index d80c1a1..49577cc 100644
--- a/package.json
+++ b/package.json
@@ -37,7 +37,7 @@
     "ngx-walkthrough": "^0.3.2",
     "recordrtc": "^5.6.1",
     "rxjs": "~6.5.4",
-    "sweetalert2": "^10.13.3",
+    "sweetalert2": "^11.4.20",
     "tslib": "^2.0.0",
     "wavesurfer": "^1.3.4",
     "zone.js": "~0.11.6"
diff --git a/src/app/components/cpcq-form/cpcq-form.component.ts b/src/app/components/cpcq-form/cpcq-form.component.ts
index 869857d..b37dd11 100644
--- a/src/app/components/cpcq-form/cpcq-form.component.ts
+++ b/src/app/components/cpcq-form/cpcq-form.component.ts
@@ -1,16 +1,15 @@
-import { Component, OnInit, Inject } from "@angular/core";
-import { AfterViewInit, ElementRef, ViewChild } from "@angular/core";
-import { Router } from "@angular/router";
-import { FirstForm } from "src/app/services/firstForm.service";
+import { AfterViewInit, Component, ElementRef, OnInit, ViewChild } from "@angular/core";
 import { UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms";
-import Swal from "sweetalert2";
 import { ThemePalette } from "@angular/material/core";
+import { MatDialog } from "@angular/material/dialog";
 import { ProgressBarMode } from "@angular/material/progress-bar";
-declare var $: any;
-import * as RecordRTC from "recordrtc";
 import { DomSanitizer } from "@angular/platform-browser";
-import { MatDialog, MAT_DIALOG_DATA } from "@angular/material/dialog";
+import { Router } from "@angular/router";
+import * as RecordRTC from "recordrtc";
+import { FirstForm } from "src/app/services/firstForm.service";
+import Swal from "sweetalert2";
 import { DialogFormComponent } from "./dialog-form/dialog-form.component";
+declare var $: any;
 
 import { CPCQService } from "src/app/services/cpcq.service";
 
diff --git a/src/app/components/cpcq-form/dialog-form/dialog-form.component.ts b/src/app/components/cpcq-form/dialog-form/dialog-form.component.ts
index e8a6cfd..dd36435 100644
--- a/src/app/components/cpcq-form/dialog-form/dialog-form.component.ts
+++ b/src/app/components/cpcq-form/dialog-form/dialog-form.component.ts
@@ -1,8 +1,9 @@
-import { Component, OnInit, ViewChild, ElementRef, AfterViewInit, ChangeDetectorRef } from "@angular/core";
-import { Inject } from "@angular/core";
-import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dialog";
-import { ITimeUpdateEvent, NgWaveformComponent, IRegionPositions } from "ng-waveform";
+import { Component, Inject, OnInit, ViewChild } from "@angular/core";
 import { UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms";
+import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dialog";
+import { DomSanitizer } from "@angular/platform-browser";
+import { NgWaveformComponent } from "ng-waveform";
+import * as RecordRTC from "recordrtc";
 import { CPCQService } from "src/app/services/cpcq.service";
 export interface DialogData {
   animal;
@@ -11,8 +12,6 @@ export interface DialogData {
 }
 
 declare var $: any;
-import * as RecordRTC from "recordrtc";
-import { DomSanitizer } from "@angular/platform-browser";
 @Component({
   selector: "app-dialog-form",
   templateUrl: "./dialog-form.component.html",
diff --git a/src/app/components/final-feedback/final-feedback.component.ts b/src/app/components/final-feedback/final-feedback.component.ts
index b002577..9520eff 100644
--- a/src/app/components/final-feedback/final-feedback.component.ts
+++ b/src/app/components/final-feedback/final-feedback.component.ts
@@ -1,16 +1,15 @@
-import { Component, OnInit, Inject } from "@angular/core";
-import { AfterViewInit, ElementRef, ViewChild } from "@angular/core";
-import { Router } from "@angular/router";
-import { FirstForm } from "src/app/services/firstForm.service";
+import { AfterViewInit, Component, ElementRef, OnInit, ViewChild } from "@angular/core";
 import { UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms";
-import Swal from "sweetalert2";
 import { ThemePalette } from "@angular/material/core";
+import { MatDialog } from "@angular/material/dialog";
 import { ProgressBarMode } from "@angular/material/progress-bar";
-declare var $: any;
-import * as RecordRTC from "recordrtc";
 import { DomSanitizer } from "@angular/platform-browser";
-import { MatDialog, MAT_DIALOG_DATA } from "@angular/material/dialog";
+import { Router } from "@angular/router";
+import * as RecordRTC from "recordrtc";
+import { FirstForm } from "src/app/services/firstForm.service";
+import Swal from "sweetalert2";
 import { DialogFormComponent } from "../cpcq-form/dialog-form/dialog-form.component";
+declare var $: any;
 
 import { CPCQService } from "src/app/services/cpcq.service";
 
diff --git a/src/app/components/first-form/first-form.component.ts b/src/app/components/first-form/first-form.component.ts
index cb8d01b..9ce2c1c 100644
--- a/src/app/components/first-form/first-form.component.ts
+++ b/src/app/components/first-form/first-form.component.ts
@@ -1,11 +1,11 @@
 import { Component, OnInit } from "@angular/core";
+import { UntypedFormGroup } from "@angular/forms";
+import { DomSanitizer } from "@angular/platform-browser";
 import { Router } from "@angular/router";
+import * as RecordRTC from "recordrtc";
 import { FirstForm } from "src/app/services/firstForm.service";
-import { FormBuilder, UntypedFormGroup, FormControl, Validators } from "@angular/forms";
 import Swal from "sweetalert2";
 declare var $: any;
-import * as RecordRTC from "recordrtc";
-import { DomSanitizer } from "@angular/platform-browser";
 
 @Component({
   selector: "app-first-form",
diff --git a/src/app/components/graph-page/graph-page.component.html b/src/app/components/graph-page/graph-page.component.html
index dd56995..975b306 100644
--- a/src/app/components/graph-page/graph-page.component.html
+++ b/src/app/components/graph-page/graph-page.component.html
@@ -16,11 +16,6 @@
       <mat-tab-group [selectedIndex]="selectedIndex" style="margin: 0px">
         <mat-tab label="Seventh">
           <h2>Cultural Proficiency Continuum Q-Sort: Score Visualization</h2>
-          <!-- <p>Below are the results of the CPCQ forms filled by you. The numbers that you assigned to each vignette within each of the five categories to the right of the corresponding letter—A, B, C, D, E, F—in the spaces are provided below in
-                        the rating guide. Ideally, the final results in each row would read 1, 2, 3, 4, 5, 6, but because Cultural Proficiency is a fluid and dynamic phenomenon, these numbers may not align in numerical order. The final step in your analysis
-                        is to locate the culturally proficient interactions, which are 2 or more points higher or lower than the ideal number by each letter. For example, if a row reads 2, 1, 5, 4, 6, 3, then the numbers 5 and 3 are bold and clickable.
-                        Each number you bolded in each row represents an opportunity for inquiry and Dialogic for that particular culturally proficient behavior. Please click on the bolded numbers to unpack your views. Remember, this is not a judgment,
-                        but rather an opportunity for you to make inquiries and have a conversation about the sociocultural interactions that take place within majority-minority US Prek-12 schools. </p> -->
           <p>
             <span
               ><b>Info: </b> Each of the Bars indicate the overall score awarded by your rater for the vignette you
diff --git a/src/app/components/graph-page/graph-page.component.ts b/src/app/components/graph-page/graph-page.component.ts
index df9a4b9..677c3be 100644
--- a/src/app/components/graph-page/graph-page.component.ts
+++ b/src/app/components/graph-page/graph-page.component.ts
@@ -1,36 +1,35 @@
-import { Component, OnInit } from "@angular/core";
-import { AfterViewInit, ElementRef, ViewChild } from "@angular/core";
-import { Router } from "@angular/router";
-import { FirstForm } from "src/app/services/firstForm.service";
+import { Component, ElementRef, OnInit, ViewChild } from "@angular/core";
 import { UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms";
-import Swal from "sweetalert2";
 import { ThemePalette } from "@angular/material/core";
+import { MatDialog } from "@angular/material/dialog";
 import { ProgressBarMode } from "@angular/material/progress-bar";
-declare var $: any;
-import * as RecordRTC from "recordrtc";
 import { DomSanitizer } from "@angular/platform-browser";
-import { MatDialog, MAT_DIALOG_DATA } from "@angular/material/dialog";
+import { Router } from "@angular/router";
+import * as RecordRTC from "recordrtc";
+import { FirstForm } from "src/app/services/firstForm.service";
+import Swal from "sweetalert2";
 import { DialogFormComponent } from "../cpcq-form/dialog-form/dialog-form.component";
+declare var $: any;
 
 import { CPCQService } from "src/app/services/cpcq.service";
 
-import { LoginService } from "src/app/services/login.service";
-export interface DialogData {
-  animal: "panda" | "unicorn" | "lion";
-  status;
-  result;
-}
 import {
   ApexAxisChartSeries,
   ApexChart,
-  ChartComponent,
   ApexDataLabels,
+  ApexFill,
   ApexPlotOptions,
-  ApexYAxis,
   ApexTitleSubtitle,
   ApexXAxis,
-  ApexFill,
+  ApexYAxis,
+  ChartComponent,
 } from "ng-apexcharts";
+import { LoginService } from "src/app/services/login.service";
+export interface DialogData {
+  animal: "panda" | "unicorn" | "lion";
+  status;
+  result;
+}
 
 export type ChartOptions = {
   series: ApexAxisChartSeries;
diff --git a/src/app/components/header/header.component.ts b/src/app/components/header/header.component.ts
index 5b7c348..d35acf4 100644
--- a/src/app/components/header/header.component.ts
+++ b/src/app/components/header/header.component.ts
@@ -35,7 +35,6 @@ export class HeaderComponent implements OnInit {
   ) {}
 
   ngOnInit(): void {
-    console.log("this is header");
     this.loginService.getCurrentUser().subscribe((user) => {
       this.currentUser = user;
     });
diff --git a/src/app/components/main-game/main-game.component.ts b/src/app/components/main-game/main-game.component.ts
index baf38dd..76fc718 100644
--- a/src/app/components/main-game/main-game.component.ts
+++ b/src/app/components/main-game/main-game.component.ts
@@ -1,8 +1,8 @@
 import { Component, OnInit, ViewEncapsulation } from "@angular/core";
+import { MatDialog } from "@angular/material/dialog";
+import { MainGame } from "src/app/services/mainGame.service";
 import Swal from "sweetalert2";
-import { MatDialog, MAT_DIALOG_DATA } from "@angular/material/dialog";
 import { DialogComponent } from "./dialog/dialog.component";
-import { MainGame } from "src/app/services/mainGame.service";
 @Component({
   selector: "app-main-game",
   templateUrl: "./main-game.component.html",
diff --git a/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.ts b/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.ts
index 5ae9162..0de586e 100644
--- a/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.ts
+++ b/src/app/components/pre-survey/dialog-pdf/dialog-pdf.component.ts
@@ -1,8 +1,5 @@
-import { Component, OnInit, Inject } from "@angular/core";
-import Swal from "sweetalert2";
-import { Router } from "@angular/router";
-import { MatDialog, MAT_DIALOG_DATA } from "@angular/material/dialog";
-import { PdfViewerModule } from "ng2-pdf-viewer";
+import { Component, Inject, OnInit } from "@angular/core";
+import { MAT_DIALOG_DATA } from "@angular/material/dialog";
 
 export interface DialogData {
   animal: "panda" | "unicorn" | "lion";
diff --git a/src/app/components/result-dashboard/result-dashboard.component.ts b/src/app/components/result-dashboard/result-dashboard.component.ts
index e23c7ae..5e83505 100644
--- a/src/app/components/result-dashboard/result-dashboard.component.ts
+++ b/src/app/components/result-dashboard/result-dashboard.component.ts
@@ -1,21 +1,21 @@
-import { Component, OnInit, ViewChild, Inject } from "@angular/core";
+import { Component, OnInit, ViewChild } from "@angular/core";
+import { MatDialog } from "@angular/material/dialog";
 import { Router } from "@angular/router";
-import { MatDialog, MAT_DIALOG_DATA } from "@angular/material/dialog";
-import Swal from "sweetalert2";
-import { DashboardDialogComponent } from "../dashboard/dashboard-dialog/dashboard-dialog.component";
 import { AnimationItem } from "lottie-web";
-import { PreSurveyService } from "src/app/services/preSurvey.service";
-import { CPCQService } from "src/app/services/cpcq.service";
-import { AnimationOptions } from "ngx-lottie";
 import {
-  ApexNonAxisChartSeries,
-  ApexPlotOptions,
   ApexChart,
   ApexFill,
-  ChartComponent,
   ApexLegend,
+  ApexNonAxisChartSeries,
+  ApexPlotOptions,
   ApexResponsive,
+  ChartComponent,
 } from "ng-apexcharts";
+import { AnimationOptions } from "ngx-lottie";
+import { CPCQService } from "src/app/services/cpcq.service";
+import { PreSurveyService } from "src/app/services/preSurvey.service";
+import Swal from "sweetalert2";
+import { DashboardDialogComponent } from "../dashboard/dashboard-dialog/dashboard-dialog.component";
 
 export interface DialogData {
   animal;
diff --git a/src/app/components/score-page/score-page.component.ts b/src/app/components/score-page/score-page.component.ts
index de00a35..c8c17e9 100644
--- a/src/app/components/score-page/score-page.component.ts
+++ b/src/app/components/score-page/score-page.component.ts
@@ -1,17 +1,16 @@
-import { Component, OnInit } from "@angular/core";
-import { AfterViewInit, ElementRef, ViewChild } from "@angular/core";
-import { Router } from "@angular/router";
-import { FirstForm } from "src/app/services/firstForm.service";
+import { Component, ElementRef, OnInit, ViewChild } from "@angular/core";
 import { UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms";
-import Swal from "sweetalert2";
 import { ThemePalette } from "@angular/material/core";
+import { MatDialog } from "@angular/material/dialog";
 import { ProgressBarMode } from "@angular/material/progress-bar";
-declare var $: any;
-import * as RecordRTC from "recordrtc";
 import { DomSanitizer } from "@angular/platform-browser";
-import { MatDialog, MAT_DIALOG_DATA } from "@angular/material/dialog";
-import { DialogFormComponent } from "../cpcq-form/dialog-form/dialog-form.component";
+import { Router } from "@angular/router";
+import * as RecordRTC from "recordrtc";
+import { FirstForm } from "src/app/services/firstForm.service";
 import { LoginService } from "src/app/services/login.service";
+import Swal from "sweetalert2";
+import { DialogFormComponent } from "../cpcq-form/dialog-form/dialog-form.component";
+declare var $: any;
 
 import { CPCQService } from "src/app/services/cpcq.service";
 
diff --git a/src/app/components/test/my-overlay/my-overlay.component.ts b/src/app/components/test/my-overlay/my-overlay.component.ts
index 40646b1..c8de050 100644
--- a/src/app/components/test/my-overlay/my-overlay.component.ts
+++ b/src/app/components/test/my-overlay/my-overlay.component.ts
@@ -1,17 +1,16 @@
+import { Overlay, OverlayRef } from "@angular/cdk/overlay";
+import { CdkPortal } from "@angular/cdk/portal";
 import {
   Component,
-  OnInit,
-  ViewChild,
-  AfterViewInit,
   ElementRef,
+  EventEmitter,
   Input,
   OnDestroy,
-  Renderer2,
+  OnInit,
   Output,
-  EventEmitter,
+  Renderer2,
+  ViewChild,
 } from "@angular/core";
-import { Overlay, OverlayRef } from "@angular/cdk/overlay";
-import { CdkPortal } from "@angular/cdk/portal";
 import { OverlayServiceService } from "src/app/services/overlay-service.service";
 @Component({
   selector: "app-my-overlay",
diff --git a/src/app/components/test/test.component.ts b/src/app/components/test/test.component.ts
index 23ad629..f094c04 100644
--- a/src/app/components/test/test.component.ts
+++ b/src/app/components/test/test.component.ts
@@ -1,4 +1,4 @@
-import { Component, AfterViewInit } from "@angular/core";
+import { AfterViewInit, Component } from "@angular/core";
 import { OverlayServiceService } from "src/app/services/overlay-service.service";
 @Component({
   selector: "app-test",
diff --git a/src/app/components/trial-component/trial-component.component.ts b/src/app/components/trial-component/trial-component.component.ts
index ec87b2a..96acb6e 100644
--- a/src/app/components/trial-component/trial-component.component.ts
+++ b/src/app/components/trial-component/trial-component.component.ts
@@ -1,7 +1,5 @@
 import { Component, OnInit } from "@angular/core";
 declare var $: any;
-import * as RecordRTC from "recordrtc";
-import { DomSanitizer } from "@angular/platform-browser";
 
 @Component({
   selector: "app-trial-component",
@@ -9,65 +7,5 @@ import { DomSanitizer } from "@angular/platform-browser";
   styleUrls: ["./trial-component.component.css"],
 })
 export class TrialComponentComponent implements OnInit {
-  //   title = 'micRecorder';
-  // //Lets declare Record OBJ
-  // record;
-  // //Will use this flag for toggeling recording
-  // recording = false;
-  // //URL of Blob
-  // url;
-  // error;
-  // constructor(private domSanitizer: DomSanitizer) {}
-  // sanitize(url: string) {
-  // return this.domSanitizer.bypassSecurityTrustUrl(url);
-  // }
-  // /**
-  // * Start recording.
-  // */
-  // initiateRecording() {
-  // this.recording = true;
-  // let mediaConstraints = {
-  // video: true,
-  // audio: true
-  // };
-  // navigator.mediaDevices.getUserMedia(mediaConstraints).then(this.successCallback.bind(this), this.errorCallback.bind(this));
-  // }
-  // /**
-  // * Will be called automatically.
-  // */
-  // successCallback(stream) {
-  // var options = {
-  // mimeType: "video/webm",
-  // numberOfAudioChannels: 1,
-  // // sampleRate: 16000,
-  // };
-  // //Start Actuall Recording
-  // var StereoAudioRecorder = RecordRTC.StereoAudioRecorder;
-  // this.record = new StereoAudioRecorder(stream, options);
-  // this.record.record();
-  // }
-  // /**
-  // * Stop recording.
-  // */
-  // stopRecording() {
-  // this.recording = false;
-  // this.record.stop(this.processRecording.bind(this));
-  // }
-  // /**
-  // * processRecording Do what ever you want with blob
-  // * @param  {any} blob Blog
-  // */
-  // processRecording(blob) {
-  // this.url = URL.createObjectURL(blob);
-  //
-  //
-  // }
-  // /**
-  // * Process Error.
-  // */
-  // errorCallback(error) {
-  // this.error = 'Can not play audio in your browser';
-  // }
-
   ngOnInit(): void {}
 }
diff --git a/src/app/components/unpacking-page/unpacking-page.component.ts b/src/app/components/unpacking-page/unpacking-page.component.ts
index ebd6ed9..d088be0 100644
--- a/src/app/components/unpacking-page/unpacking-page.component.ts
+++ b/src/app/components/unpacking-page/unpacking-page.component.ts
@@ -1,16 +1,15 @@
-import { Component, OnInit, Inject } from "@angular/core";
-import { AfterViewInit, ElementRef, ViewChild } from "@angular/core";
-import { Router } from "@angular/router";
-import { FirstForm } from "src/app/services/firstForm.service";
+import { AfterViewInit, Component, ElementRef, OnInit, ViewChild } from "@angular/core";
 import { UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms";
-import Swal from "sweetalert2";
 import { ThemePalette } from "@angular/material/core";
+import { MatDialog } from "@angular/material/dialog";
 import { ProgressBarMode } from "@angular/material/progress-bar";
-declare var $: any;
-import * as RecordRTC from "recordrtc";
 import { DomSanitizer } from "@angular/platform-browser";
-import { MatDialog, MAT_DIALOG_DATA } from "@angular/material/dialog";
+import { Router } from "@angular/router";
+import * as RecordRTC from "recordrtc";
+import { FirstForm } from "src/app/services/firstForm.service";
+import Swal from "sweetalert2";
 import { DialogFormComponent } from "../cpcq-form/dialog-form/dialog-form.component";
+declare var $: any;
 
 import { CPCQService } from "src/app/services/cpcq.service";
 
@@ -255,7 +254,6 @@ export class UnpackingPageComponent implements OnInit, AfterViewInit {
     }
   }
   sliderFunction(e) {
-    //
     this.sliderValue = e.value;
     if (e.value == 1) {
       this.changeDiv.nativeElement.style.fontSize = "15px";
-- 
GitLab


From f18736076f00b7afe4b76270448e0c3b0b1ba84a Mon Sep 17 00:00:00 2001
From: ramesh <rdramesh2009@gmail.com>
Date: Mon, 11 Jul 2022 16:13:44 -0400
Subject: [PATCH 21/23] outdated packages updated

---
 package-lock.json                             | 249 +++++++-----------
 package.json                                  |  23 +-
 src/app/app.module.ts                         |   5 +-
 .../dashboard/dashboard.component.html        |   6 +-
 .../dashboard/dashboard.component.ts          | 217 ++++++++-------
 .../post-survey/post-survey.component.ts      |   8 +-
 .../pre-survey/pre-survey.component.ts        |   8 +-
 src/app/interceptors/token.interceptor.ts     |   1 +
 src/environments/environment.prod.ts          |  25 +-
 9 files changed, 239 insertions(+), 303 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 15d7de4..93f7b8c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3606,9 +3606,9 @@
       "dev": true
     },
     "@types/jasminewd2": {
-      "version": "2.0.8",
-      "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.8.tgz",
-      "integrity": "sha512-d9p31r7Nxk0ZH0U39PTH0hiDlJ+qNVGjlt1ucOoTUptxb2v+Y5VMnsxfwN+i3hK4yQnqBi3FMmoMFcd1JHDxdg==",
+      "version": "2.0.10",
+      "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.10.tgz",
+      "integrity": "sha512-J7mDz7ovjwjc+Y9rR9rY53hFWKATcIkrr9DwQWmOas4/pnIPJTXawnzjwpHm3RSxz/e3ZVUvQ7cRbd5UQLo10g==",
       "dev": true,
       "requires": {
         "@types/jasmine": "*"
@@ -3633,9 +3633,9 @@
       "dev": true
     },
     "@types/node": {
-      "version": "12.19.15",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.15.tgz",
-      "integrity": "sha512-lowukE3GUI+VSYSu6VcBXl14d61Rp5hA1D+61r16qnwC0lYNSqdxcvRh0pswejorHfS+HgwBasM8jLXz0/aOsw==",
+      "version": "18.0.3",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.3.tgz",
+      "integrity": "sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ==",
       "dev": true
     },
     "@types/parse-json": {
@@ -4133,9 +4133,9 @@
       }
     },
     "apexcharts": {
-      "version": "3.24.0",
-      "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.24.0.tgz",
-      "integrity": "sha512-iT6czJCIVrmAtrcO90MZTQCvC+xi6R6Acf0jNH/d40FVTtCfcqECuKIh5iAMyOTtgUb7+fQ8rbadH2bm1kbL9Q==",
+      "version": "3.35.3",
+      "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.35.3.tgz",
+      "integrity": "sha512-UDlxslJr3DG63I/SgoiivIu4lpP25GMaKFK8NvCHmTksTQshx4ng3oPPrYvdsBFOvD/ajPYIh/p7rNB0jq8vXg==",
       "requires": {
         "svg.draggable.js": "^2.2.2",
         "svg.easing.js": "^2.0.0",
@@ -4636,11 +4636,6 @@
       "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
       "dev": true
     },
-    "bootstrap": {
-      "version": "4.6.0",
-      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.0.tgz",
-      "integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw=="
-    },
     "boxen": {
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz",
@@ -5388,6 +5383,15 @@
           "integrity": "sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==",
           "dev": true
         },
+        "rxjs": {
+          "version": "6.6.7",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+          "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+          "dev": true,
+          "requires": {
+            "tslib": "^1.9.0"
+          }
+        },
         "source-map": {
           "version": "0.5.7",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
@@ -6214,8 +6218,7 @@
     "define-lazy-prop": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
-      "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
-      "dev": true
+      "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og=="
     },
     "define-properties": {
       "version": "1.1.4",
@@ -7560,6 +7563,17 @@
             "string-width": "^2.1.0",
             "strip-ansi": "^5.1.0",
             "through": "^2.3.6"
+          },
+          "dependencies": {
+            "rxjs": {
+              "version": "6.6.7",
+              "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+              "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+              "dev": true,
+              "requires": {
+                "tslib": "^1.9.0"
+              }
+            }
           }
         },
         "is-stream": {
@@ -7697,6 +7711,12 @@
             "ansi-regex": "^4.1.0"
           }
         },
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+          "dev": true
+        },
         "which": {
           "version": "2.0.2",
           "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -8727,6 +8747,15 @@
             "signal-exit": "^3.0.2"
           }
         },
+        "rxjs": {
+          "version": "6.6.7",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+          "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+          "dev": true,
+          "requires": {
+            "tslib": "^1.9.0"
+          }
+        },
         "strip-ansi": {
           "version": "5.2.0",
           "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
@@ -8743,111 +8772,55 @@
               "dev": true
             }
           }
+        },
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+          "dev": true
         }
       }
     },
     "inquirer-autocomplete-prompt": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-1.3.0.tgz",
-      "integrity": "sha512-zvAc+A6SZdcN+earG5SsBu1RnQdtBS4o8wZ/OqJiCfL34cfOx+twVRq7wumYix6Rkdjn1N2nVCcO3wHqKqgdGg==",
-      "dev": true,
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-2.0.0.tgz",
+      "integrity": "sha512-c2LljLP3ewVJe4AUZzKdA6oWjqhpy5pfsisHAjh7mP3WUQ/O02x5OLMMqcLOYuRHx6i2hlVSIhUv0xYGyFxFYA==",
       "requires": {
-        "ansi-escapes": "^4.3.1",
-        "chalk": "^4.0.0",
+        "ansi-escapes": "^4.3.2",
         "figures": "^3.2.0",
-        "run-async": "^2.4.0",
-        "rxjs": "^6.6.2"
+        "picocolors": "^1.0.0",
+        "run-async": "^2.4.1",
+        "rxjs": "^7.5.4"
       },
       "dependencies": {
         "ansi-escapes": {
-          "version": "4.3.1",
-          "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz",
-          "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==",
-          "dev": true,
-          "requires": {
-            "type-fest": "^0.11.0"
-          }
-        },
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "dev": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
-          "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-          "dev": true,
+          "version": "4.3.2",
+          "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+          "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
           "requires": {
-            "color-name": "~1.1.4"
+            "type-fest": "^0.21.3"
           }
         },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-          "dev": true
-        },
         "figures": {
           "version": "3.2.0",
           "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
           "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
-          "dev": true,
           "requires": {
             "escape-string-regexp": "^1.0.5"
           }
         },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-          "dev": true
-        },
         "rxjs": {
-          "version": "6.6.3",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
-          "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
-          "dev": true,
-          "requires": {
-            "tslib": "^1.9.0"
-          },
-          "dependencies": {
-            "tslib": {
-              "version": "1.14.1",
-              "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-              "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-              "dev": true
-            }
-          }
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-          "dev": true,
+          "version": "7.5.6",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz",
+          "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==",
           "requires": {
-            "has-flag": "^4.0.0"
+            "tslib": "^2.1.0"
           }
         },
         "type-fest": {
-          "version": "0.11.0",
-          "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz",
-          "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==",
-          "dev": true
+          "version": "0.21.3",
+          "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+          "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="
         }
       }
     },
@@ -8906,8 +8879,7 @@
     "is-docker": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz",
-      "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==",
-      "dev": true
+      "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw=="
     },
     "is-extglob": {
       "version": "2.1.1",
@@ -9039,7 +9011,6 @@
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
       "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
-      "dev": true,
       "requires": {
         "is-docker": "^2.0.0"
       }
@@ -9737,12 +9708,6 @@
         }
       }
     },
-    "karma-jasmine-html-reporter": {
-      "version": "1.5.4",
-      "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.4.tgz",
-      "integrity": "sha512-PtilRLno5O6wH3lDihRnz0Ba8oSn0YUJqKjjux1peoYGwo0AQqrWRbdWk/RLzcGlb+onTyXAnHl6M+Hu3UxG/Q==",
-      "dev": true
-    },
     "karma-source-map-support": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz",
@@ -10173,9 +10138,9 @@
       "dev": true
     },
     "lottie-web": {
-      "version": "5.7.6",
-      "resolved": "https://registry.npmjs.org/lottie-web/-/lottie-web-5.7.6.tgz",
-      "integrity": "sha512-qn/KYMI4QQvFDhtoxs0RPkn9uZKhDB9keE5BKgbJlSRfNEZpRiDlwBE9ibYz4nPhbyE+NUlt8IRIVR7g5OSX3w=="
+      "version": "5.9.6",
+      "resolved": "https://registry.npmjs.org/lottie-web/-/lottie-web-5.9.6.tgz",
+      "integrity": "sha512-JFs7KsHwflugH5qIXBpB4905yC1Sub2MZWtl/elvO/QC6qj1ApqbUZJyjzJseJUtVpgiDaXQLjBlIJGS7UUUXA=="
     },
     "lowercase-keys": {
       "version": "1.0.1",
@@ -10839,21 +10804,6 @@
       "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
       "dev": true
     },
-    "ng-apexcharts": {
-      "version": "1.5.7",
-      "resolved": "https://registry.npmjs.org/ng-apexcharts/-/ng-apexcharts-1.5.7.tgz",
-      "integrity": "sha512-7swEdaoXIZ1E6zfUpFfIJYNerPGBz47XRCa0ReyFGbj785LJPAOlTeo7t8CRzMI/ACKhHD/Y1IQatlwQkI2shg==",
-      "requires": {
-        "tslib": "^1.10.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
-        }
-      }
-    },
     "ng-waveform": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/ng-waveform/-/ng-waveform-0.2.1.tgz",
@@ -10887,18 +10837,11 @@
       }
     },
     "ngx-countdown": {
-      "version": "11.0.1",
-      "resolved": "https://registry.npmjs.org/ngx-countdown/-/ngx-countdown-11.0.1.tgz",
-      "integrity": "sha512-0qGSM+GSj/vQBJNy0rwPIsLFhm6Ley3tDtJPo+qJO0LqHq3zW5cTi5Pcf2YqypnxywLraJ4DX3WzhWMCDsDZkA==",
+      "version": "11.0.3",
+      "resolved": "https://registry.npmjs.org/ngx-countdown/-/ngx-countdown-11.0.3.tgz",
+      "integrity": "sha512-Porzyl9jo/lS0eg6dUS0UEloRyfk9naDeL2iSt/4Wwmogq+hlHXUDvVuLm/kO7haAGYOQPSsuAIoFB4m9fRMTg==",
       "requires": {
         "tslib": "^2.0.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
-          "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
-        }
       }
     },
     "ngx-lottie": {
@@ -11696,13 +11639,13 @@
       }
     },
     "open": {
-      "version": "7.4.0",
-      "resolved": "https://registry.npmjs.org/open/-/open-7.4.0.tgz",
-      "integrity": "sha512-PGoBCX/lclIWlpS/R2PQuIR4NJoXh6X5AwVzE7WXnWRGvHg7+4TBCgsujUgiPpm0K1y4qvQeWnCWVTpTKZBtvA==",
-      "dev": true,
+      "version": "8.4.0",
+      "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
+      "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
       "requires": {
-        "is-docker": "^2.0.0",
-        "is-wsl": "^2.1.1"
+        "define-lazy-prop": "^2.0.0",
+        "is-docker": "^2.1.1",
+        "is-wsl": "^2.2.0"
       }
     },
     "openapi3-ts": {
@@ -13029,9 +12972,9 @@
       }
     },
     "recordrtc": {
-      "version": "5.6.1",
-      "resolved": "https://registry.npmjs.org/recordrtc/-/recordrtc-5.6.1.tgz",
-      "integrity": "sha512-UU7Fd9IIuz60TPq4GgL1qtgo2mzEZWzPxEraNe32eo4/ndjKmuj715HB7W1k63G09teM1dXJYubPEmLkQ/lq5Q=="
+      "version": "5.6.2",
+      "resolved": "https://registry.npmjs.org/recordrtc/-/recordrtc-5.6.2.tgz",
+      "integrity": "sha512-1QNKKNtl7+KcwD1lyOgP3ZlbiJ1d0HtXnypUy7yq49xEERxk31PHvE9RCciDrulPCY7WJ+oz0R9hpNxgsIurGQ=="
     },
     "redeyed": {
       "version": "2.1.1",
@@ -13346,8 +13289,7 @@
     "run-async": {
       "version": "2.4.1",
       "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
-      "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
-      "dev": true
+      "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ=="
     },
     "run-parallel": {
       "version": "1.2.0",
@@ -13359,18 +13301,11 @@
       }
     },
     "rxjs": {
-      "version": "6.5.5",
-      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz",
-      "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==",
+      "version": "7.5.6",
+      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz",
+      "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==",
       "requires": {
-        "tslib": "^1.9.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
-        }
+        "tslib": "^2.1.0"
       }
     },
     "safe-buffer": {
@@ -14337,7 +14272,7 @@
     "svg.easing.js": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz",
-      "integrity": "sha1-iqmUawqOJ4V6XEChDrpAkeVpHxI=",
+      "integrity": "sha512-//ctPdJMGy22YoYGV+3HEfHbm6/69LJUTAqI2/5qBvaNHZ9uUFVC82B0Pl299HzgH13rKrBgi4+XyXXyVWWthA==",
       "requires": {
         "svg.js": ">=2.3.x"
       }
@@ -14345,7 +14280,7 @@
     "svg.filter.js": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz",
-      "integrity": "sha1-kQCOFROJ3ZIwd5/L5uLJo2LRwgM=",
+      "integrity": "sha512-xkGBwU+dKBzqg5PtilaTb0EYPqPfJ9Q6saVldX+5vCRy31P6TlRCP3U9NxH3HEufkKkpNgdTLBJnmhDHeTqAkw==",
       "requires": {
         "svg.js": "^2.2.5"
       }
diff --git a/package.json b/package.json
index 49577cc..c0ebf4c 100644
--- a/package.json
+++ b/package.json
@@ -26,17 +26,19 @@
     "@angular/router": "^14.0.5",
     "@auth0/auth0-angular": "^1.10.0",
     "angular-walkthrough": "^0.8.2",
-    "apexcharts": "^3.24.0",
-    "bootstrap": "^4.6.0",
-    "lottie-web": "^5.7.6",
-    "ng-apexcharts": "^1.5.7",
+    "apexcharts": "^3.35.3",
+    "bootstrap": "^5.1.3",
+    "inquirer-autocomplete-prompt": "^2.0.0",
+    "karma-jasmine-html-reporter": "^2.0.0",
+    "lottie-web": "^5.9.6",
     "ng-waveform": "^0.2.1",
     "ng2-pdf-viewer": "^6.4.1",
-    "ngx-countdown": "^11.0.1",
+    "ngx-countdown": "^11.0.3",
     "ngx-lottie": "^6.4.0",
     "ngx-walkthrough": "^0.3.2",
-    "recordrtc": "^5.6.1",
-    "rxjs": "~6.5.4",
+    "open": "^8.4.0",
+    "recordrtc": "^5.6.2",
+    "rxjs": "^7.5.6",
     "sweetalert2": "^11.4.20",
     "tslib": "^2.0.0",
     "wavesurfer": "^1.3.4",
@@ -49,21 +51,18 @@
     "@angular/compiler-cli": "^14.0.5",
     "@angular/language-service": "^14.0.5",
     "@types/jasmine": "~3.6.0",
-    "@types/jasminewd2": "~2.0.3",
-    "@types/node": "^12.11.1",
+    "@types/jasminewd2": "^2.0.10",
+    "@types/node": "^18.0.3",
     "codelyzer": "^6.0.0",
     "firebase-tools": "^8.0.0",
     "fuzzy": "^0.1.3",
     "inquirer": "^6.2.2",
-    "inquirer-autocomplete-prompt": "^1.0.1",
     "jasmine-core": "~3.6.0",
     "jasmine-spec-reporter": "~5.0.0",
     "karma": "~6.4.0",
     "karma-chrome-launcher": "~3.1.0",
     "karma-coverage-istanbul-reporter": "~3.0.2",
     "karma-jasmine": "~4.0.0",
-    "karma-jasmine-html-reporter": "^1.5.0",
-    "open": "^7.0.3",
     "protractor": "~7.0.0",
     "ts-node": "~8.3.0",
     "tslint": "~6.1.0",
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index d967a90..ed6ec52 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -33,7 +33,7 @@ import { MatTabsModule } from "@angular/material/tabs";
 import { MatToolbarModule } from "@angular/material/toolbar";
 import { MatTooltipModule } from "@angular/material/tooltip";
 import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
-import { NgApexchartsModule } from "ng-apexcharts";
+import { NgApexchartsModule as NgPenchantsModule } from "ng-apexcharts";
 import { NgWaveformModule } from "ng-waveform";
 import { PdfViewerModule } from "ng2-pdf-viewer";
 import { CountdownModule } from "ngx-countdown";
@@ -140,11 +140,10 @@ export function playerFactory() {
     WalkthroughModule,
     OverlayModule,
     PortalModule,
-    NgApexchartsModule,
+    NgPenchantsModule,
     NgWaveformModule,
     PdfViewerModule,
     LottieModule.forRoot({ player: playerFactory }),
-    // Import the module into the application, with configuration
     AuthModule.forRoot({
       domain: environment.auth0Settings.domain,
       clientId: environment.auth0Settings.clientId,
diff --git a/src/app/components/dashboard/dashboard.component.html b/src/app/components/dashboard/dashboard.component.html
index bf2b44a..1cdb6e2 100644
--- a/src/app/components/dashboard/dashboard.component.html
+++ b/src/app/components/dashboard/dashboard.component.html
@@ -106,7 +106,7 @@
         <h2>CPCDP ACTIVITIES</h2>
         <ul>
           <li>
-            Completed Pre-Survey on <span style="color: red"> {{ createdat }}.</span>
+            Completed Pre-Survey on <span style="color: red"> {{ createdAt }}.</span>
           </li>
           <li *ngIf="currentStatus >= 1">
             Cultural Proficiency Continuum Q-Sort form completed on
@@ -124,7 +124,7 @@
 
           <li *ngIf="currentStatus >= 3">
             Your facilitator's comments on your reactions were completed on
-            <span style="color: red">{{ createdat }}.</span>
+            <span style="color: red">{{ createdAt }}.</span>
           </li>
           <li *ngIf="!(currentStatus >= 3)">
             Your facilitator's comments on your reactions are pending the facilitator's completion. (You will receive an
@@ -132,7 +132,7 @@
           </li>
 
           <li *ngIf="currentStatus >= 4">
-            Post-Survey completed on <span style="color: red">{{ createdat }}.</span>
+            Post-Survey completed on <span style="color: red">{{ createdAt }}.</span>
           </li>
           <li *ngIf="!(currentStatus >= 4)">Post-Survey is pending your completion.</li>
         </ul>
diff --git a/src/app/components/dashboard/dashboard.component.ts b/src/app/components/dashboard/dashboard.component.ts
index 1e16666..cb6211f 100644
--- a/src/app/components/dashboard/dashboard.component.ts
+++ b/src/app/components/dashboard/dashboard.component.ts
@@ -1,6 +1,6 @@
 import { Component, OnInit, ViewChild } from "@angular/core";
 import { MatDialog } from "@angular/material/dialog";
-import { Router } from "@angular/router";
+import { User } from "@auth0/auth0-angular";
 import { AnimationItem } from "lottie-web";
 import {
   ApexChart,
@@ -12,6 +12,7 @@ import {
   ChartComponent,
 } from "ng-apexcharts";
 import { AnimationOptions } from "ngx-lottie";
+import { LoginService } from "src/app/services/login.service";
 import { PreSurveyService } from "src/app/services/preSurvey.service";
 import Swal from "sweetalert2";
 import { DashboardDialogComponent } from "./dashboard-dialog/dashboard-dialog.component";
@@ -61,14 +62,12 @@ export class DashboardComponent implements OnInit {
   email: any;
   location: any;
   gender: any;
-  createdat: any;
-  public photoUrl: string;
-
-  public name: string = "Nihaarika Jagadish";
-
-  public showInitials = false;
-  public initials: string;
-  public circleColor: string;
+  createdAt: any;
+  photoUrl: string;
+  showInitials = false;
+  initials: string;
+  circleColor: string;
+  currentUser: User;
 
   private colors = [
     "#EB7181", // red
@@ -86,6 +85,96 @@ export class DashboardComponent implements OnInit {
     path: "https://assets4.lottiefiles.com/packages/lf20_6pzxbf3o/free_site_survey.json",
   };
 
+  constructor(public dialog: MatDialog, private preSurvey: PreSurveyService, private loginService: LoginService) {
+    this.loginService.getCurrentUser().subscribe((user) => {
+      console.log("currentUser", user);
+      this.currentUser = user;
+    });
+
+    this.openDialog1(1);
+
+    this.chartOptions = {
+      series: [76],
+      chart: {
+        height: 300,
+        type: "radialBar",
+        offsetY: -20,
+      },
+      plotOptions: {
+        radialBar: {
+          startAngle: -90,
+          endAngle: 90,
+          track: {
+            background: "#e7e7e7",
+            strokeWidth: "97%",
+            margin: 5, // margin is in pixels
+            dropShadow: {
+              enabled: true,
+              top: 2,
+              left: 0,
+              opacity: 0.31,
+              blur: 2,
+            },
+          },
+          dataLabels: {
+            value: {
+              fontSize: "22px",
+            },
+            name: {
+              show: true,
+              fontSize: "13px",
+              color: "green",
+            },
+          },
+        },
+      },
+      fill: {
+        type: "gradient",
+        gradient: {
+          shade: "light",
+          shadeIntensity: 0.4,
+          inverseColors: false,
+          opacityFrom: 1,
+          opacityTo: 1,
+          stops: [0, 50, 53, 91],
+        },
+      },
+      labels: ["Culturally Competent"],
+    };
+
+    this.chartOptions1 = {
+      series: [44, 55, 67, 83, 56],
+      chart: {
+        height: 200,
+        width: 300,
+        type: "radialBar",
+        events: {
+          click: function (event, chartContext, config) {},
+        },
+      },
+      plotOptions: {
+        radialBar: {
+          dataLabels: {
+            name: {
+              fontSize: "22px",
+            },
+            value: {
+              fontSize: "16px",
+            },
+            total: {
+              show: true,
+              label: "Total",
+              formatter: function (w) {
+                return "249";
+              },
+            },
+          },
+        },
+      },
+      labels: ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"],
+    };
+  }
+
   animationCreated(animationItem: AnimationItem): void {}
 
   openDialog1(i) {
@@ -100,7 +189,6 @@ export class DashboardComponent implements OnInit {
               Swal.fire({
                 title: "Attitude",
                 html: "A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status. <br /> <br /> <span><b> B.4 </b> Black students have the same opportunities and access to attend college as their white peers. <br/> <br /><span><b> C.1 </b> Students who wear dreadlocks as a hairstyle are a distraction in the classroom. <br/> <br /> D.3 It should be required for students to remove hair accessories that are associated with their culture, tribe, sexuality, or religion. <br/> <br /> E.5 All students who live in the United States deserve a quality public education, even those students whose parents are undocumented immigrants. <br/> F.6 All faculty and staff within a school setting have equal ability to transfer knowledge to students in regards to life, culture, character, and/or academic content.",
-                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
               }).then((res) => {
                 window.location.reload();
               });
@@ -108,7 +196,6 @@ export class DashboardComponent implements OnInit {
               Swal.fire({
                 title: "Empathy",
                 html: "A.2 A 10th-grade male died as a result of a car accident during an illegal street race. A group of teachers will not attend the funeral because of the activity that led to the student’s cause of death. <br /> <br /> <span><b> B.4 </b> A public school Teacher is grounded by the philosophy of their religion. Throughout their career as an educator; they have learned to be welcoming to others’ cultural and religious beliefs even if those beliefs are in conflict with their own.<br/> <br /><span><b> C.1 </b> In two weeks, the 8th grade teaching cluster will be getting a new math teacher who is Muslim. Next week’s professional development is dedicated to learning about the customs and etiquette of Islam to ensure that the new colleague feels welcomed in their new school.<br/> <br /> D.3  An Asian student scored an 85 percent on today’s math quiz. The teacher expressed disappointment in the student by saying,Come on, you are Asian! You should’ve scored better than this. <br/> <br /> E.5  A school counselor advised a biracial student that they would appear more professional if they perm their hair (removing the kinks) for their upcoming college visits. <br/> F.6 Your colleague was pulled over by the police on the way to work this morning. You hear other colleagues in the break room discussing the reasons why they were pulled over, and all of the suspected reasons were related to what they may have done (i.e., speeding, running a stop sign, etc.), rather than acknowledging that they may have been pulled over for being a person of color driving a luxury car.",
-                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
               }).then((res) => {
                 window.location.reload();
               });
@@ -116,7 +203,6 @@ export class DashboardComponent implements OnInit {
               Swal.fire({
                 title: "Policy",
                 html: "A.2 A group of teachers and students are protesting the athletic department at a high school for changing the school’s logo to a silhouette of a Native American in a headdress; they have secured a place on the agenda for the next school board meeting to give a presentation on why this logo is offensive and trivializes Native Americans. <br /> <br /> <span><b> B.4 </b>  A school that does not consider factors related to culture and ethnicity in their decision-making process is more democratic than a school who does consider factors related to culture and ethnicity in their decision-making process.<br/> <br /><span><b> C.1 </b> A school leader makes a “diversity hire” to introduce new ideas around school culture, curriculum, leadership, and/or supervision. <br/> <br /> D.3 A principal implemented a policy that all faculty and staff have to participate in quarterly potlucks; they are to bring a traditional dish specific to their culture, as a way to facilitate cross-cultural discourse. <br/> <br /> E.5 Students in a high-poverty school who are absent 10 consecutive days in a marking period are referred to special education for excessive absenteeism. <br/> F.6A member of the school board is proposing a policy where English is the official language for all school related business in a community where the majority of the students’ and families’ primary language is Spanish.                ",
-                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
               }).then((res) => {
                 window.location.reload();
               });
@@ -124,7 +210,6 @@ export class DashboardComponent implements OnInit {
               Swal.fire({
                 title: "Professionalism",
                 html: "A.2A teacher asked the class who has traveled out of the country. A Black male raises his hand and states “I have.”  The teacher asked the student three follow-up questions to corroborate his story.                <br /> <br /> <span><b> B.4 </b> During lunch duty, teachers had a discussion in the presence of students about tomorrow’s district-wide racial sensitivity training. A teacher commented, Why do we have to attend this training; the United States is post-racial because we have a Black president.                <br/> <br /><span><b> C.1 </b> The social committee at an elementary school is planning an awards ceremony and dinner for the staff and faculty. Six of their colleagues are vegan because of their religious beliefs.  As a result, the committee has added a vegan selection to the menu to accommodate their colleagues’ religious beliefs. <br/> <br /> D.3  The reading specialist expressed some concerns to the Vice Principal about how her male students emasculates her during whole group instruction. The Vice Principal said, “Don’t worry about it, that's just how boys behave.”                 <br/> <br /> E.5  A history teacher refuses to acknowledge black history month and does not want to teach content about black history in the United States.                <br/> F.6 An AP English teacher has assigned a research paper where the students were required to write about their religion. The teacher did not let their own religious beliefs cloud their judgement; the teacher researched the student’s religion while grading the paper to offer relevant constructive feedback back on the arguments made within the paper.                ",
-                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
               }).then((res) => {
                 window.location.reload();
               });
@@ -132,7 +217,6 @@ export class DashboardComponent implements OnInit {
               Swal.fire({
                 title: "Teaching Practice",
                 html: "A.2 A novice teacher in a school where the majority of the students are African-American and Latino uses hip-hop as a way to make science relevant in the student's social and cultural context.                <br /> <br /> <span><b> B.4 </b>An algebra teacher who teaches in a school where the majority of the students are on free and reduced lunch requires that each student buy a specific graphing calculator for Algebra, which retails for over 100 dollars.                <br/> <br /><span><b> C.1 </b> A teacher created a seating chart that placed ‘unteachable students’ in the back of the classroom, all of whom were male: 2 Latinos and 6 African Americans.  In the same seating chart, her ‘good students,' all white, were seated in preferential seating.                <br/> <br /> D.3 A teacher puts together a petition to request a textbook company to remove the narrative about the enslavement of Africans in the United States in their history textbook to accommodate teachers’ discomfort with discussing this sensitive topic.                <br/> <br /> E.5  A teacher in a Title 1 school (high percentage of children from low-income families) checks homework for completeness rather than correctness as a strategy to improve student efficacy.                 <br/> F.6 There is an increase of LGBTQIA+ students reporting that they are being harassed both verbally and physically in United States public schools. A group of students and teachers are researching the best practices to implement and create a supportive environment for these students to voice their concerns in their school.",
-                // text: "Attitude \n A.2  Many suspect that a student from a high poverty school with a 4.0 GPA and a perfect score on the SAT has received a scholarship from an Ivy League School due to their socioeconomic status.               ",
               }).then((res) => {
                 window.location.reload();
               });
@@ -202,93 +286,6 @@ export class DashboardComponent implements OnInit {
       this.avatarLink = result;
     });
   }
-  constructor(private router: Router, public dialog: MatDialog, private presurvey: PreSurveyService) {
-    this.openDialog1(1);
-
-    this.chartOptions = {
-      series: [76],
-      chart: {
-        height: 300,
-        type: "radialBar",
-        offsetY: -20,
-      },
-      plotOptions: {
-        radialBar: {
-          startAngle: -90,
-          endAngle: 90,
-          track: {
-            background: "#e7e7e7",
-            strokeWidth: "97%",
-            margin: 5, // margin is in pixels
-            dropShadow: {
-              enabled: true,
-              top: 2,
-              left: 0,
-              opacity: 0.31,
-              blur: 2,
-            },
-          },
-          dataLabels: {
-            value: {
-              // offsetY: -2,
-              fontSize: "22px",
-            },
-            name: {
-              show: true,
-              fontSize: "13px",
-              color: "green",
-            },
-          },
-        },
-      },
-      fill: {
-        type: "gradient",
-        gradient: {
-          shade: "light",
-          shadeIntensity: 0.4,
-          inverseColors: false,
-          opacityFrom: 1,
-          opacityTo: 1,
-          stops: [0, 50, 53, 91],
-        },
-      },
-      labels: ["Culturally Competent"],
-    };
-
-    this.chartOptions1 = {
-      series: [44, 55, 67, 83, 56],
-      chart: {
-        height: 200,
-        width: 300,
-        type: "radialBar",
-        events: {
-          click: function (event, chartContext, config) {
-            // The last parameter config contains additional information like `seriesIndex` and `dataPointIndex` for cartesian charts.
-          },
-        },
-      },
-      plotOptions: {
-        radialBar: {
-          dataLabels: {
-            name: {
-              fontSize: "22px",
-            },
-            value: {
-              fontSize: "16px",
-            },
-            total: {
-              show: true,
-              label: "Total",
-              formatter: function (w) {
-                return "249";
-              },
-            },
-          },
-        },
-      },
-      labels: ["Attitude", "Empathy", "Policy", "Professionalism", "Teaching Practice"],
-    };
-  }
 
   public generateData(count, yrange) {
     var i = 0;
@@ -309,19 +306,19 @@ export class DashboardComponent implements OnInit {
   ngOnInit(): void {
     if (!this.photoUrl) {
       this.showInitials = true;
-      this.createInititals();
+      this.createInitials();
 
       const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length));
       this.circleColor = this.colors[randomIndex];
     }
 
-    this.presurvey.profileData().subscribe((res) => {
+    this.preSurvey.profileData().subscribe((res) => {
       this.profileDetails = res;
       this.email = res[0]["email"];
       this.location = res[0]["location"];
       this.gender = res[0]["gender"];
       this.userName = res[0]["first_name"];
-      this.createdat = new Date(res[0]["preSurveydate"]).toLocaleDateString("en-US", {
+      this.createdAt = new Date(res[0]["preSurveydate"]).toLocaleDateString("en-US", {
         weekday: "long",
         year: "numeric",
         month: "long",
@@ -337,17 +334,15 @@ export class DashboardComponent implements OnInit {
     });
   }
 
-  private createInititals(): void {
+  private createInitials(): void {
     let initials = "";
-
-    for (let i = 0; i < this.name.length; i++) {
-      if (this.name.charAt(i) === " ") {
+    for (let i = 0; i < this.currentUser?.name.length; i++) {
+      if (this.currentUser?.name.charAt(i) === " ") {
         continue;
       }
 
-      if (this.name.charAt(i) === this.name.charAt(i).toUpperCase()) {
-        initials += this.name.charAt(i);
-
+      if (this.currentUser?.name.charAt(i) === this.currentUser?.name.charAt(i).toUpperCase()) {
+        initials += this.currentUser?.name.charAt(i);
         if (initials.length == 2) {
           break;
         }
diff --git a/src/app/components/post-survey/post-survey.component.ts b/src/app/components/post-survey/post-survey.component.ts
index a8c13c4..eb54677 100644
--- a/src/app/components/post-survey/post-survey.component.ts
+++ b/src/app/components/post-survey/post-survey.component.ts
@@ -22,7 +22,7 @@ export class PostSurveyComponent implements OnInit {
     private router: Router,
     public dialog: MatDialog,
     private fb: UntypedFormBuilder,
-    private presurvey: PreSurveyService,
+    private preSurvey: PreSurveyService,
     private apiService: CPCQService
   ) {}
 
@@ -42,11 +42,11 @@ export class PostSurveyComponent implements OnInit {
       other9: [""],
     });
 
-    this.presurvey.getPreSurveyAnswer().subscribe((res) => {
+    this.preSurvey.getPreSurveyAnswer().subscribe((res) => {
       this.consentFlag = res[0]["consent"];
     });
 
-    this.presurvey.getPostSurveyFormQuestions().subscribe(
+    this.preSurvey.getPostSurveyFormQuestions().subscribe(
       (res) => {
         this.formQuestion = res[0];
         for (let key in this.formQuestion) {
@@ -108,7 +108,7 @@ export class PostSurveyComponent implements OnInit {
       }
       this.postSurveyForm.removeControl("other9");
 
-      this.presurvey.submitPostSurvey(this.postSurveyForm.value).subscribe(
+      this.preSurvey.submitPostSurvey(this.postSurveyForm.value).subscribe(
         (res) => {
           this.apiService.patchStatus("postsurveystatus").subscribe((res) => {
             Swal.fire({
diff --git a/src/app/components/pre-survey/pre-survey.component.ts b/src/app/components/pre-survey/pre-survey.component.ts
index cd904d4..d9e4e37 100644
--- a/src/app/components/pre-survey/pre-survey.component.ts
+++ b/src/app/components/pre-survey/pre-survey.component.ts
@@ -24,7 +24,7 @@ export class PreSurveyComponent implements OnInit {
     private router: Router,
     public dialog: MatDialog,
     private fb: UntypedFormBuilder,
-    private presurvey: PreSurveyService
+    private preSurvey: PreSurveyService
   ) {}
 
   ngOnInit(): void {
@@ -63,7 +63,7 @@ export class PreSurveyComponent implements OnInit {
       consent: "",
     });
 
-    this.presurvey.getFormQuestions().subscribe(
+    this.preSurvey.getFormQuestions().subscribe(
       (res) => {
         this.formQuestion = res[0];
         for (let key in this.formQuestion) {
@@ -85,7 +85,7 @@ export class PreSurveyComponent implements OnInit {
             this.formQuestion[key] = this.formQuestion[key].split("diversity, equity, and inclusion (DEI)");
           }
         }
-        this.presurvey.userData().subscribe(
+        this.preSurvey.userData().subscribe(
           (res) => {
             this.preSurveyForm.get("q1").setValue(res["last_name"]);
             this.preSurveyForm.get("q2").setValue(res["first_name"]);
@@ -181,7 +181,7 @@ export class PreSurveyComponent implements OnInit {
       this.durationTime = (this.endTime - this.startTime) / 1000;
       this.durationTime = this.durationTime / 60;
       this.preSurveyForm.value["duration"] = this.durationTime;
-      this.presurvey.submitForm(this.preSurveyForm.value).subscribe(
+      this.preSurvey.submitForm(this.preSurveyForm.value).subscribe(
         (res) => {
           Swal.fire({
             text: "Submitted",
diff --git a/src/app/interceptors/token.interceptor.ts b/src/app/interceptors/token.interceptor.ts
index d432d8c..5518907 100644
--- a/src/app/interceptors/token.interceptor.ts
+++ b/src/app/interceptors/token.interceptor.ts
@@ -8,6 +8,7 @@ export class TokenInterceptor implements HttpInterceptor {
   constructor(private loginService: LoginService) {}
 
   intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {
+    console.log("i am token interceptor");
     return from(this.handleIntercept(request, next));
   }
 
diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts
index 51e36f9..390207c 100644
--- a/src/environments/environment.prod.ts
+++ b/src/environments/environment.prod.ts
@@ -1,13 +1,20 @@
 const backendBaseUrl = "https://cpcdpvcu.bhoomee.org";
 const apiUrl = `${backendBaseUrl}/api`;
 export const environment = {
-    production: true,
-    registerUrl: `${apiUrl}/register`,
-    loginUrl: `${apiUrl}/login`,
-    logoutUrl: `${apiUrl}/logout`,
-    userUrl: `${apiUrl}/user`,
-    cqcqUrl: `${apiUrl}/cpcq`,
-    profileUrl: `${apiUrl}/profile`,
-    preSurveyUrl: `${apiUrl}/preSurvey`,
-    postSurveyUrl: `${apiUrl}/postSurvey`,
+  production: false,
+  auth0Settings: {
+    domain: "dev-x39z62vm.us.auth0.com",
+    clientId: "jN2jYbC5bPdFaquIZGsxJNxkZe42KCDl",
+    callBackUrl: "http://localhost:4200",
+    logoutUrl: "http://localhost:4200",
+  },
+  apiUrl: apiUrl,
+  registerUrl: `${apiUrl}/register`,
+  loginUrl: `${apiUrl}/login`,
+  logoutUrl: `${apiUrl}/logout`,
+  userUrl: `${apiUrl}/user`,
+  cqcqUrl: `${apiUrl}/cpcq`,
+  profileUrl: `${apiUrl}/profile`,
+  preSurveyUrl: `${apiUrl}/preSurvey`,
+  postSurveyUrl: `${apiUrl}/postSurvey`,
 };
-- 
GitLab


From ad62b47bf75b33a1a27ff9b98cd8cd2f31e698e9 Mon Sep 17 00:00:00 2001
From: ramesh <rdramesh2009@gmail.com>
Date: Mon, 11 Jul 2022 16:47:30 -0400
Subject: [PATCH 22/23] all outdated packagges udpated

---
 angular.json                                  |    1 -
 package-lock.json                             | 4469 +----------------
 package.json                                  |   25 +-
 .../unpacking-page.component.html             |   53 -
 .../unpacking-page.component.ts               |    2 -
 src/index.html                                |   58 +-
 6 files changed, 235 insertions(+), 4373 deletions(-)

diff --git a/angular.json b/angular.json
index 3374a4e..e979da9 100644
--- a/angular.json
+++ b/angular.json
@@ -25,7 +25,6 @@
             ],
             "styles": [
               "src/styles.css",
-              "./node_modules/bootstrap/dist/css/bootstrap.min.css",
               "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css"
             ],
             "scripts": [
diff --git a/package-lock.json b/package-lock.json
index 93f7b8c..decd507 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1284,17 +1284,6 @@
         "tslib": "^2.3.0"
       }
     },
-    "@apidevtools/json-schema-ref-parser": {
-      "version": "9.0.7",
-      "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.7.tgz",
-      "integrity": "sha512-QdwOGF1+eeyFh+17v2Tz626WX0nucd1iKOm6JUTUvCZdbolblCOOQCxGrQPY0f7jEhn36PiAWqZnsC2r5vmUWg==",
-      "dev": true,
-      "requires": {
-        "@jsdevtools/ono": "^7.1.3",
-        "call-me-maybe": "^1.0.1",
-        "js-yaml": "^3.13.1"
-      }
-    },
     "@assemblyscript/loader": {
       "version": "0.10.1",
       "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz",
@@ -2585,6 +2574,27 @@
       "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
       "dev": true
     },
+    "@cspotcode/source-map-support": {
+      "version": "0.8.1",
+      "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
+      "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
+      "dev": true,
+      "requires": {
+        "@jridgewell/trace-mapping": "0.3.9"
+      },
+      "dependencies": {
+        "@jridgewell/trace-mapping": {
+          "version": "0.3.9",
+          "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
+          "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
+          "dev": true,
+          "requires": {
+            "@jridgewell/resolve-uri": "^3.0.3",
+            "@jridgewell/sourcemap-codec": "^1.4.10"
+          }
+        }
+      }
+    },
     "@csstools/postcss-color-function": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz",
@@ -2682,17 +2692,6 @@
       "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==",
       "dev": true
     },
-    "@dabh/diagnostics": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz",
-      "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==",
-      "dev": true,
-      "requires": {
-        "colorspace": "1.1.x",
-        "enabled": "2.0.x",
-        "kuler": "^2.0.0"
-      }
-    },
     "@discoveryjs/json-ext": {
       "version": "0.5.7",
       "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
@@ -2705,228 +2704,6 @@
       "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==",
       "dev": true
     },
-    "@google-cloud/paginator": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-2.0.3.tgz",
-      "integrity": "sha512-kp/pkb2p/p0d8/SKUu4mOq8+HGwF8NPzHWkj+VKrIPQPyMRw8deZtrO/OcSiy9C/7bpfU5Txah5ltUNfPkgEXg==",
-      "dev": true,
-      "requires": {
-        "arrify": "^2.0.0",
-        "extend": "^3.0.2"
-      },
-      "dependencies": {
-        "arrify": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
-          "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
-          "dev": true
-        }
-      }
-    },
-    "@google-cloud/precise-date": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/@google-cloud/precise-date/-/precise-date-1.0.3.tgz",
-      "integrity": "sha512-wWnDGh9y3cJHLuVEY8t6un78vizzMWsS7oIWKeFtPj+Ndy+dXvHW0HTx29ZUhen+tswSlQYlwFubvuRP5kKdzQ==",
-      "dev": true
-    },
-    "@google-cloud/projectify": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-1.0.4.tgz",
-      "integrity": "sha512-ZdzQUN02eRsmTKfBj9FDL0KNDIFNjBn/d6tHQmA/+FImH5DO6ZV8E7FzxMgAUiVAUq41RFAkb25p1oHOZ8psfg==",
-      "dev": true
-    },
-    "@google-cloud/promisify": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-1.0.4.tgz",
-      "integrity": "sha512-VccZDcOql77obTnFh0TbNED/6ZbbmHDf8UMNnzO1d5g9V0Htfm4k5cllY8P1tJsRKC3zWYGRLaViiupcgVjBoQ==",
-      "dev": true
-    },
-    "@google-cloud/pubsub": {
-      "version": "1.7.3",
-      "resolved": "https://registry.npmjs.org/@google-cloud/pubsub/-/pubsub-1.7.3.tgz",
-      "integrity": "sha512-v+KdeaOS17WtHnsDf2bPGxKDT9HIRPYo3n+WsAEmvAzDHnh8q65mFcuYoQxuy2iRhmN/1ql2a0UU2tAAL7XZ8Q==",
-      "dev": true,
-      "requires": {
-        "@google-cloud/paginator": "^2.0.0",
-        "@google-cloud/precise-date": "^1.0.0",
-        "@google-cloud/projectify": "^1.0.0",
-        "@google-cloud/promisify": "^1.0.0",
-        "@types/duplexify": "^3.6.0",
-        "@types/long": "^4.0.0",
-        "arrify": "^2.0.0",
-        "async-each": "^1.0.1",
-        "extend": "^3.0.2",
-        "google-auth-library": "^5.5.0",
-        "google-gax": "^1.14.2",
-        "is-stream-ended": "^0.1.4",
-        "lodash.snakecase": "^4.1.1",
-        "p-defer": "^3.0.0",
-        "protobufjs": "^6.8.1"
-      },
-      "dependencies": {
-        "@grpc/grpc-js": {
-          "version": "1.0.5",
-          "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.0.5.tgz",
-          "integrity": "sha512-Hm+xOiqAhcpT9RYM8lc15dbQD7aQurM7ZU8ulmulepiPlN7iwBXXwP3vSBUimoFoApRqz7pSIisXU8pZaCB4og==",
-          "dev": true,
-          "requires": {
-            "semver": "^6.2.0"
-          }
-        },
-        "agent-base": {
-          "version": "6.0.2",
-          "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
-          "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
-          "dev": true,
-          "requires": {
-            "debug": "4"
-          }
-        },
-        "arrify": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
-          "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
-          "dev": true
-        },
-        "gaxios": {
-          "version": "2.3.4",
-          "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.3.4.tgz",
-          "integrity": "sha512-US8UMj8C5pRnao3Zykc4AAVr+cffoNKRTg9Rsf2GiuZCW69vgJj38VK2PzlPuQU73FZ/nTk9/Av6/JGcE1N9vA==",
-          "dev": true,
-          "requires": {
-            "abort-controller": "^3.0.0",
-            "extend": "^3.0.2",
-            "https-proxy-agent": "^5.0.0",
-            "is-stream": "^2.0.0",
-            "node-fetch": "^2.3.0"
-          }
-        },
-        "gcp-metadata": {
-          "version": "3.5.0",
-          "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-3.5.0.tgz",
-          "integrity": "sha512-ZQf+DLZ5aKcRpLzYUyBS3yo3N0JSa82lNDO8rj3nMSlovLcz2riKFBsYgDzeXcv75oo5eqB2lx+B14UvPoCRnA==",
-          "dev": true,
-          "requires": {
-            "gaxios": "^2.1.0",
-            "json-bigint": "^0.3.0"
-          }
-        },
-        "google-auth-library": {
-          "version": "5.10.1",
-          "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-5.10.1.tgz",
-          "integrity": "sha512-rOlaok5vlpV9rSiUu5EpR0vVpc+PhN62oF4RyX/6++DG1VsaulAFEMlDYBLjJDDPI6OcNOCGAKy9UVB/3NIDXg==",
-          "dev": true,
-          "requires": {
-            "arrify": "^2.0.0",
-            "base64-js": "^1.3.0",
-            "ecdsa-sig-formatter": "^1.0.11",
-            "fast-text-encoding": "^1.0.0",
-            "gaxios": "^2.1.0",
-            "gcp-metadata": "^3.4.0",
-            "gtoken": "^4.1.0",
-            "jws": "^4.0.0",
-            "lru-cache": "^5.0.0"
-          }
-        },
-        "google-gax": {
-          "version": "1.15.3",
-          "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-1.15.3.tgz",
-          "integrity": "sha512-3JKJCRumNm3x2EksUTw4P1Rad43FTpqrtW9jzpf3xSMYXx+ogaqTM1vGo7VixHB4xkAyATXVIa3OcNSh8H9zsQ==",
-          "dev": true,
-          "requires": {
-            "@grpc/grpc-js": "~1.0.3",
-            "@grpc/proto-loader": "^0.5.1",
-            "@types/fs-extra": "^8.0.1",
-            "@types/long": "^4.0.0",
-            "abort-controller": "^3.0.0",
-            "duplexify": "^3.6.0",
-            "google-auth-library": "^5.0.0",
-            "is-stream-ended": "^0.1.4",
-            "lodash.at": "^4.6.0",
-            "lodash.has": "^4.5.2",
-            "node-fetch": "^2.6.0",
-            "protobufjs": "^6.8.9",
-            "retry-request": "^4.0.0",
-            "semver": "^6.0.0",
-            "walkdir": "^0.4.0"
-          }
-        },
-        "google-p12-pem": {
-          "version": "2.0.4",
-          "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-2.0.4.tgz",
-          "integrity": "sha512-S4blHBQWZRnEW44OcR7TL9WR+QCqByRvhNDZ/uuQfpxywfupikf/miba8js1jZi6ZOGv5slgSuoshCWh6EMDzg==",
-          "dev": true,
-          "requires": {
-            "node-forge": "^0.9.0"
-          }
-        },
-        "gtoken": {
-          "version": "4.1.4",
-          "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-4.1.4.tgz",
-          "integrity": "sha512-VxirzD0SWoFUo5p8RDP8Jt2AGyOmyYcT/pOUgDKJCK+iSw0TMqwrVfY37RXTNmoKwrzmDHSk0GMT9FsgVmnVSA==",
-          "dev": true,
-          "requires": {
-            "gaxios": "^2.1.0",
-            "google-p12-pem": "^2.0.0",
-            "jws": "^4.0.0",
-            "mime": "^2.2.0"
-          }
-        },
-        "https-proxy-agent": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
-          "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
-          "dev": true,
-          "requires": {
-            "agent-base": "6",
-            "debug": "4"
-          }
-        },
-        "is-stream": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
-          "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
-          "dev": true
-        },
-        "json-bigint": {
-          "version": "0.3.1",
-          "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-0.3.1.tgz",
-          "integrity": "sha512-DGWnSzmusIreWlEupsUelHrhwmPPE+FiQvg+drKfk2p+bdEYa5mp4PJ8JsCWqae0M2jQNb0HPvnwvf1qOTThzQ==",
-          "dev": true,
-          "requires": {
-            "bignumber.js": "^9.0.0"
-          }
-        },
-        "mime": {
-          "version": "2.5.0",
-          "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz",
-          "integrity": "sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==",
-          "dev": true
-        },
-        "node-forge": {
-          "version": "0.9.2",
-          "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.2.tgz",
-          "integrity": "sha512-naKSScof4Wn+aoHU6HBsifh92Zeicm1GDQKd1vp3Y/kOi8ub0DozCa9KpvYNCXslFHYRmLNiqRopGdTGwNLpNw==",
-          "dev": true
-        },
-        "p-defer": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz",
-          "integrity": "sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==",
-          "dev": true
-        }
-      }
-    },
-    "@grpc/proto-loader": {
-      "version": "0.5.6",
-      "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.6.tgz",
-      "integrity": "sha512-DT14xgw3PSzPxwS13auTEwxhMMOoz33DPUKNtmYK/QYbBSpLXJy78FGGs5yVoxVobEqPm4iW9MOIoz0A3bLTRQ==",
-      "dev": true,
-      "requires": {
-        "lodash.camelcase": "^4.3.0",
-        "protobufjs": "^6.8.6"
-      }
-    },
     "@istanbuljs/load-nyc-config": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
@@ -2979,12 +2756,6 @@
         "@jridgewell/sourcemap-codec": "^1.4.10"
       }
     },
-    "@jsdevtools/ono": {
-      "version": "7.1.3",
-      "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz",
-      "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==",
-      "dev": true
-    },
     "@leichtgewicht/ip-codec": {
       "version": "2.0.4",
       "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz",
@@ -3371,70 +3142,6 @@
         }
       }
     },
-    "@protobufjs/aspromise": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
-      "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=",
-      "dev": true
-    },
-    "@protobufjs/base64": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
-      "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==",
-      "dev": true
-    },
-    "@protobufjs/codegen": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
-      "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==",
-      "dev": true
-    },
-    "@protobufjs/eventemitter": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
-      "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=",
-      "dev": true
-    },
-    "@protobufjs/fetch": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
-      "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=",
-      "dev": true,
-      "requires": {
-        "@protobufjs/aspromise": "^1.1.1",
-        "@protobufjs/inquire": "^1.1.0"
-      }
-    },
-    "@protobufjs/float": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
-      "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=",
-      "dev": true
-    },
-    "@protobufjs/inquire": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
-      "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=",
-      "dev": true
-    },
-    "@protobufjs/path": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
-      "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=",
-      "dev": true
-    },
-    "@protobufjs/pool": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
-      "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=",
-      "dev": true
-    },
-    "@protobufjs/utf8": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
-      "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=",
-      "dev": true
-    },
     "@schematics/angular": {
       "version": "14.0.5",
       "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.0.5.tgz",
@@ -3446,27 +3153,36 @@
         "jsonc-parser": "3.0.0"
       }
     },
-    "@sindresorhus/is": {
-      "version": "0.14.0",
-      "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
-      "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
-      "dev": true
-    },
-    "@szmarczak/http-timer": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
-      "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
-      "dev": true,
-      "requires": {
-        "defer-to-connect": "^1.0.1"
-      }
-    },
     "@tootallnate/once": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
       "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
       "dev": true
     },
+    "@tsconfig/node10": {
+      "version": "1.0.9",
+      "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
+      "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==",
+      "dev": true
+    },
+    "@tsconfig/node12": {
+      "version": "1.0.11",
+      "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
+      "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
+      "dev": true
+    },
+    "@tsconfig/node14": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
+      "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
+      "dev": true
+    },
+    "@tsconfig/node16": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz",
+      "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==",
+      "dev": true
+    },
     "@types/body-parser": {
       "version": "1.19.2",
       "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
@@ -3523,15 +3239,6 @@
       "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==",
       "dev": true
     },
-    "@types/duplexify": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/@types/duplexify/-/duplexify-3.6.0.tgz",
-      "integrity": "sha512-5zOA53RUlzN74bvrSGwjudssD9F3a797sDZQkiYpUOxW+WHaXTCPz4/d5Dgi6FKnOqZ2CpaTo0DhgIfsXAOE/A==",
-      "dev": true,
-      "requires": {
-        "@types/node": "*"
-      }
-    },
     "@types/eslint": {
       "version": "8.4.5",
       "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz",
@@ -3581,15 +3288,6 @@
         "@types/range-parser": "*"
       }
     },
-    "@types/fs-extra": {
-      "version": "8.1.1",
-      "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.1.tgz",
-      "integrity": "sha512-TcUlBem321DFQzBNuz8p0CLLKp0VvF/XH9E4KHNmgwyp4E3AfgI5cjiIVZWlbfThBop2qxFIh4+LeY6hVWWZ2w==",
-      "dev": true,
-      "requires": {
-        "@types/node": "*"
-      }
-    },
     "@types/http-proxy": {
       "version": "1.17.9",
       "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz",
@@ -3600,9 +3298,9 @@
       }
     },
     "@types/jasmine": {
-      "version": "3.6.11",
-      "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.6.11.tgz",
-      "integrity": "sha512-S6pvzQDvMZHrkBz2Mcn/8Du7cpr76PlRJBAoHnSDNbulULsH5dp0Gns+WRyNX5LHejz/ljxK4/vIHK/caHt6SQ==",
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.0.3.tgz",
+      "integrity": "sha512-Opp1LvvEuZdk8fSSvchK2mZwhVrsNT0JgJE9Di6MjnaIpmEXM8TLCPPrVtNTYh8+5MPdY8j9bAHMu2SSfwpZJg==",
       "dev": true
     },
     "@types/jasminewd2": {
@@ -3620,12 +3318,6 @@
       "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
       "dev": true
     },
-    "@types/long": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz",
-      "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==",
-      "dev": true
-    },
     "@types/mime": {
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
@@ -3644,11 +3336,6 @@
       "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
       "dev": true
     },
-    "@types/pdfjs-dist": {
-      "version": "2.1.7",
-      "resolved": "https://registry.npmjs.org/@types/pdfjs-dist/-/pdfjs-dist-2.1.7.tgz",
-      "integrity": "sha512-nQIwcPUhkAIyn7x9NS0lR/qxYfd5unRtfGkMjvpgF4Sh28IXftRymaNmFKTTdejDNY25NDGSIyjwj/BRwAPexg=="
-    },
     "@types/qs": {
       "version": "6.9.7",
       "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
@@ -3874,16 +3561,6 @@
       "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==",
       "dev": true
     },
-    "JSONStream": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
-      "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
-      "dev": true,
-      "requires": {
-        "jsonparse": "^1.2.0",
-        "through": ">=2.2.7 <3"
-      }
-    },
     "abab": {
       "version": "2.0.6",
       "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
@@ -3896,15 +3573,6 @@
       "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
       "dev": true
     },
-    "abort-controller": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
-      "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
-      "dev": true,
-      "requires": {
-        "event-target-shim": "^5.0.0"
-      }
-    },
     "abortcontroller-polyfill": {
       "version": "1.7.3",
       "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz",
@@ -3932,6 +3600,12 @@
       "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
       "dev": true
     },
+    "acorn-walk": {
+      "version": "8.2.0",
+      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
+      "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
+      "dev": true
+    },
     "adjust-sourcemap-loader": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz",
@@ -4027,61 +3701,11 @@
       "dev": true
     },
     "angular-walkthrough": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/angular-walkthrough/-/angular-walkthrough-0.8.2.tgz",
-      "integrity": "sha512-UoxFGFO1k99JP4LlS6aah0jD27389MmalGKKudM2b6cUl8ZLf6WK5oe+prsEBf/PNc3mnDSjHVVDLoH0V4cDtQ==",
-      "requires": {
-        "tslib": "^1.9.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
-        }
-      }
-    },
-    "ansi-align": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz",
-      "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==",
-      "dev": true,
+      "version": "0.9.8",
+      "resolved": "https://registry.npmjs.org/angular-walkthrough/-/angular-walkthrough-0.9.8.tgz",
+      "integrity": "sha512-aYfLM4nkWHRbiOlDEzwQ29CyJg/7xDQ2p/tYczw09oIamsoJYUw90bEBEPuhPx1+u69PeR98mbnNJrVomnW+Yg==",
       "requires": {
-        "string-width": "^3.0.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-          "dev": true
-        },
-        "emoji-regex": {
-          "version": "7.0.3",
-          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-          "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
-          "dev": true
-        },
-        "string-width": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^7.0.1",
-            "is-fullwidth-code-point": "^2.0.0",
-            "strip-ansi": "^5.1.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^4.1.0"
-          }
-        }
+        "tslib": "^2.0.0"
       }
     },
     "ansi-colors": {
@@ -4090,12 +3714,6 @@
       "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
       "dev": true
     },
-    "ansi-escapes": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
-      "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
-      "dev": true
-    },
     "ansi-html-community": {
       "version": "0.0.8",
       "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
@@ -4116,12 +3734,6 @@
         "color-convert": "^1.9.0"
       }
     },
-    "ansicolors": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz",
-      "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=",
-      "dev": true
-    },
     "anymatch": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
@@ -4157,73 +3769,16 @@
       "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
       "dev": true
     },
-    "archiver": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.1.1.tgz",
-      "integrity": "sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==",
-      "dev": true,
-      "requires": {
-        "archiver-utils": "^2.1.0",
-        "async": "^2.6.3",
-        "buffer-crc32": "^0.2.1",
-        "glob": "^7.1.4",
-        "readable-stream": "^3.4.0",
-        "tar-stream": "^2.1.0",
-        "zip-stream": "^2.1.2"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "3.6.0",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-          "dev": true,
-          "requires": {
-            "inherits": "^2.0.3",
-            "string_decoder": "^1.1.1",
-            "util-deprecate": "^1.0.1"
-          }
-        }
-      }
-    },
-    "archiver-utils": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz",
-      "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==",
-      "dev": true,
-      "requires": {
-        "glob": "^7.1.4",
-        "graceful-fs": "^4.2.0",
-        "lazystream": "^1.0.0",
-        "lodash.defaults": "^4.2.0",
-        "lodash.difference": "^4.5.0",
-        "lodash.flatten": "^4.4.0",
-        "lodash.isplainobject": "^4.0.6",
-        "lodash.union": "^4.6.0",
-        "normalize-path": "^3.0.0",
-        "readable-stream": "^2.0.0"
-      }
-    },
-    "are-we-there-yet": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
-      "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "delegates": "^1.0.0",
-        "readable-stream": "^2.0.6"
-      }
-    },
-    "arg": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
-      "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
-      "dev": true
-    },
-    "argparse": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
-      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+    "arg": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
+      "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
+      "dev": true
+    },
+    "argparse": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
       "dev": true,
       "requires": {
         "sprintf-js": "~1.0.2"
@@ -4266,12 +3821,6 @@
       "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
       "dev": true
     },
-    "as-array": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/as-array/-/as-array-2.0.0.tgz",
-      "integrity": "sha1-TwSAXYf4/OjlEbwhCPjl46KH1Uc=",
-      "dev": true
-    },
     "asn1": {
       "version": "0.2.4",
       "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
@@ -4293,21 +3842,6 @@
       "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==",
       "dev": true
     },
-    "async": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
-      "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
-      "dev": true,
-      "requires": {
-        "lodash": "^4.17.14"
-      }
-    },
-    "async-each": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
-      "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
-      "dev": true
-    },
     "asynckit": {
       "version": "0.4.0",
       "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
@@ -4458,21 +3992,6 @@
       "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
       "dev": true
     },
-    "basic-auth": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
-      "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "5.1.2"
-      }
-    },
-    "basic-auth-connect": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz",
-      "integrity": "sha1-/bC0OWLKe0BFanwrtI/hc9otISI=",
-      "dev": true
-    },
     "batch": {
       "version": "0.6.1",
       "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
@@ -4488,34 +4007,12 @@
         "tweetnacl": "^0.14.3"
       }
     },
-    "big-integer": {
-      "version": "1.6.48",
-      "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz",
-      "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==",
-      "dev": true
-    },
     "big.js": {
       "version": "5.2.2",
       "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
       "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
       "dev": true
     },
-    "bignumber.js": {
-      "version": "9.0.1",
-      "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz",
-      "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==",
-      "dev": true
-    },
-    "binary": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
-      "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=",
-      "dev": true,
-      "requires": {
-        "buffers": "~0.1.1",
-        "chainsaw": "~0.1.0"
-      }
-    },
     "binary-extensions": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
@@ -4556,12 +4053,6 @@
         }
       }
     },
-    "blakejs": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz",
-      "integrity": "sha1-ad+S75U6qIylGjLfarHFShVfx6U=",
-      "dev": true
-    },
     "blocking-proxy": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz",
@@ -4636,104 +4127,10 @@
       "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
       "dev": true
     },
-    "boxen": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz",
-      "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==",
-      "dev": true,
-      "requires": {
-        "ansi-align": "^3.0.0",
-        "camelcase": "^5.3.1",
-        "chalk": "^3.0.0",
-        "cli-boxes": "^2.2.0",
-        "string-width": "^4.1.0",
-        "term-size": "^2.1.0",
-        "type-fest": "^0.8.1",
-        "widest-line": "^3.1.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-          "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
-          "dev": true
-        },
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "dev": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-          "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-          "dev": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-          "dev": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-          "dev": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-          "dev": true
-        },
-        "string-width": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
-          "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^8.0.0",
-            "is-fullwidth-code-point": "^3.0.0",
-            "strip-ansi": "^6.0.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-          "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^5.0.0"
-          }
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
+    "bootstrap": {
+      "version": "5.1.3",
+      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz",
+      "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q=="
     },
     "brace-expansion": {
       "version": "1.1.11",
@@ -4789,36 +4186,12 @@
         "https-proxy-agent": "^2.2.1"
       }
     },
-    "buffer-crc32": {
-      "version": "0.2.13",
-      "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
-      "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
-      "dev": true
-    },
-    "buffer-equal-constant-time": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
-      "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=",
-      "dev": true
-    },
     "buffer-from": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
       "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
       "dev": true
     },
-    "buffer-indexof-polyfill": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz",
-      "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==",
-      "dev": true
-    },
-    "buffers": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
-      "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=",
-      "dev": true
-    },
     "builtin-modules": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
@@ -5014,50 +4387,6 @@
         }
       }
     },
-    "cacheable-request": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
-      "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
-      "dev": true,
-      "requires": {
-        "clone-response": "^1.0.2",
-        "get-stream": "^5.1.0",
-        "http-cache-semantics": "^4.0.0",
-        "keyv": "^3.0.0",
-        "lowercase-keys": "^2.0.0",
-        "normalize-url": "^4.1.0",
-        "responselike": "^1.0.2"
-      },
-      "dependencies": {
-        "get-stream": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
-          "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
-          "dev": true,
-          "requires": {
-            "pump": "^3.0.0"
-          }
-        },
-        "http-cache-semantics": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
-          "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
-          "dev": true
-        },
-        "lowercase-keys": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
-          "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
-          "dev": true
-        },
-        "normalize-url": {
-          "version": "4.5.0",
-          "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
-          "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==",
-          "dev": true
-        }
-      }
-    },
     "call-bind": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
@@ -5068,12 +4397,6 @@
         "get-intrinsic": "^1.0.2"
       }
     },
-    "call-me-maybe": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
-      "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=",
-      "dev": true
-    },
     "callsites": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
@@ -5091,31 +4414,12 @@
       "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001364.tgz",
       "integrity": "sha512-9O0xzV3wVyX0SlegIQ6knz+okhBB5pE0PC40MNdwcipjwpxoUEHL24uJ+gG42cgklPjfO5ZjZPme9FTSN3QT2Q=="
     },
-    "cardinal": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz",
-      "integrity": "sha1-fMEFXYItISlU0HsIXeolHMe8VQU=",
-      "dev": true,
-      "requires": {
-        "ansicolors": "~0.3.2",
-        "redeyed": "~2.1.0"
-      }
-    },
     "caseless": {
       "version": "0.12.0",
       "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
       "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
       "dev": true
     },
-    "chainsaw": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
-      "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=",
-      "dev": true,
-      "requires": {
-        "traverse": ">=0.3.0 <0.4"
-      }
-    },
     "chalk": {
       "version": "2.4.2",
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
@@ -5159,59 +4463,18 @@
         }
       }
     },
-    "chownr": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
-      "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
-      "dev": true
-    },
     "chrome-trace-event": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
       "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
       "dev": true
     },
-    "ci-info": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
-      "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
-      "dev": true
-    },
-    "cjson": {
-      "version": "0.3.3",
-      "resolved": "https://registry.npmjs.org/cjson/-/cjson-0.3.3.tgz",
-      "integrity": "sha1-qS2ceG5b+bkwgGMp7gXV0yYbSvo=",
-      "dev": true,
-      "requires": {
-        "json-parse-helpfulerror": "^1.0.3"
-      }
-    },
     "clean-stack": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
       "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
       "dev": true
     },
-    "cli-boxes": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
-      "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
-      "dev": true
-    },
-    "cli-color": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz",
-      "integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==",
-      "dev": true,
-      "requires": {
-        "ansi-regex": "^2.1.1",
-        "d": "1",
-        "es5-ext": "^0.10.46",
-        "es6-iterator": "^2.0.3",
-        "memoizee": "^0.4.14",
-        "timers-ext": "^0.1.5"
-      }
-    },
     "cli-cursor": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
@@ -5227,56 +4490,6 @@
       "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==",
       "dev": true
     },
-    "cli-table": {
-      "version": "0.3.4",
-      "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.4.tgz",
-      "integrity": "sha512-1vinpnX/ZERcmE443i3SZTmU5DF0rPO9DrL4I2iVAllhxzCM9SzPlHnz19fsZB78htkKZvYBvj6SZ6vXnaxmTA==",
-      "dev": true,
-      "requires": {
-        "chalk": "^2.4.1",
-        "string-width": "^4.2.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-          "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
-          "dev": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-          "dev": true
-        },
-        "string-width": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
-          "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^8.0.0",
-            "is-fullwidth-code-point": "^3.0.0",
-            "strip-ansi": "^6.0.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-          "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^5.0.0"
-          }
-        }
-      }
-    },
-    "cli-width": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
-      "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
-      "dev": true
-    },
     "cliui": {
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
@@ -5333,22 +4546,6 @@
         "shallow-clone": "^3.0.0"
       }
     },
-    "clone-response": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
-      "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
-      "dev": true,
-      "requires": {
-        "mimic-response": "^1.0.0"
-      }
-    },
-    "code-point-at": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
-      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
-      "dev": true,
-      "optional": true
-    },
     "codelyzer": {
       "version": "6.0.2",
       "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-6.0.2.tgz",
@@ -5431,16 +4628,6 @@
       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
       "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
     },
-    "color-string": {
-      "version": "1.5.4",
-      "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz",
-      "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==",
-      "dev": true,
-      "requires": {
-        "color-name": "^1.0.0",
-        "simple-swizzle": "^0.2.2"
-      }
-    },
     "color-support": {
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
@@ -5459,32 +4646,10 @@
       "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
       "dev": true
     },
-    "colorspace": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz",
-      "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==",
-      "dev": true,
-      "requires": {
-        "color": "3.0.x",
-        "text-hex": "1.0.x"
-      },
-      "dependencies": {
-        "color": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz",
-          "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==",
-          "dev": true,
-          "requires": {
-            "color-convert": "^1.9.1",
-            "color-string": "^1.5.2"
-          }
-        }
-      }
-    },
-    "combined-stream": {
-      "version": "1.0.8",
-      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
-      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+    "combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
       "dev": true,
       "requires": {
         "delayed-stream": "~1.0.0"
@@ -5502,41 +4667,12 @@
       "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
       "dev": true
     },
-    "compare-semver": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/compare-semver/-/compare-semver-1.1.0.tgz",
-      "integrity": "sha1-fAp5onu4C2xplERfgpWCWdPQIVM=",
-      "dev": true,
-      "requires": {
-        "semver": "^5.0.1"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-          "dev": true
-        }
-      }
-    },
     "component-emitter": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
       "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
       "dev": true
     },
-    "compress-commons": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-2.1.1.tgz",
-      "integrity": "sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==",
-      "dev": true,
-      "requires": {
-        "buffer-crc32": "^0.2.13",
-        "crc32-stream": "^3.0.1",
-        "normalize-path": "^3.0.0",
-        "readable-stream": "^2.3.6"
-      }
-    },
     "compressible": {
       "version": "2.0.18",
       "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
@@ -5584,31 +4720,6 @@
       "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
       "dev": true
     },
-    "configstore": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
-      "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
-      "dev": true,
-      "requires": {
-        "dot-prop": "^5.2.0",
-        "graceful-fs": "^4.1.2",
-        "make-dir": "^3.0.0",
-        "unique-string": "^2.0.0",
-        "write-file-atomic": "^3.0.0",
-        "xdg-basedir": "^4.0.0"
-      },
-      "dependencies": {
-        "make-dir": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
-          "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
-          "dev": true,
-          "requires": {
-            "semver": "^6.0.0"
-          }
-        }
-      }
-    },
     "connect": {
       "version": "3.7.0",
       "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
@@ -5650,15 +4761,6 @@
       "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
       "dev": true
     },
-    "content-disposition": {
-      "version": "0.5.3",
-      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
-      "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "5.1.2"
-      }
-    },
     "content-type": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
@@ -5673,12 +4775,6 @@
         "safe-buffer": "~5.1.1"
       }
     },
-    "cookie": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
-      "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
-      "dev": true
-    },
     "cookie-signature": {
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
@@ -5778,49 +4874,11 @@
         "yaml": "^1.10.0"
       }
     },
-    "crc": {
-      "version": "3.8.0",
-      "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz",
-      "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==",
-      "dev": true,
-      "requires": {
-        "buffer": "^5.1.0"
-      },
-      "dependencies": {
-        "buffer": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
-          "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
-          "dev": true,
-          "requires": {
-            "base64-js": "^1.3.1",
-            "ieee754": "^1.1.13"
-          }
-        }
-      }
-    },
-    "crc32-stream": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz",
-      "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==",
-      "dev": true,
-      "requires": {
-        "crc": "^3.4.4",
-        "readable-stream": "^3.4.0"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "3.6.0",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-          "dev": true,
-          "requires": {
-            "inherits": "^2.0.3",
-            "string_decoder": "^1.1.1",
-            "util-deprecate": "^1.0.1"
-          }
-        }
-      }
+    "create-require": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
+      "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
+      "dev": true
     },
     "critters": {
       "version": "0.0.16",
@@ -5887,42 +4945,6 @@
         }
       }
     },
-    "cross-env": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz",
-      "integrity": "sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==",
-      "dev": true,
-      "requires": {
-        "cross-spawn": "^6.0.5"
-      }
-    },
-    "cross-spawn": {
-      "version": "6.0.5",
-      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-      "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
-      "dev": true,
-      "requires": {
-        "nice-try": "^1.0.4",
-        "path-key": "^2.0.1",
-        "semver": "^5.5.0",
-        "shebang-command": "^1.2.0",
-        "which": "^1.2.9"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-          "dev": true
-        }
-      }
-    },
-    "crypto-random-string": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
-      "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
-      "dev": true
-    },
     "css": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz",
@@ -6052,69 +5074,12 @@
       "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
       "dev": true
     },
-    "csv-streamify": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/csv-streamify/-/csv-streamify-3.0.4.tgz",
-      "integrity": "sha1-TLYUxX4/KZzKF7Y/3LStFnd39Ho=",
-      "dev": true,
-      "requires": {
-        "through2": "2.0.1"
-      },
-      "dependencies": {
-        "process-nextick-args": {
-          "version": "1.0.7",
-          "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
-          "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
-          "dev": true
-        },
-        "readable-stream": {
-          "version": "2.0.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
-          "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
-          "dev": true,
-          "requires": {
-            "core-util-is": "~1.0.0",
-            "inherits": "~2.0.1",
-            "isarray": "~1.0.0",
-            "process-nextick-args": "~1.0.6",
-            "string_decoder": "~0.10.x",
-            "util-deprecate": "~1.0.1"
-          }
-        },
-        "string_decoder": {
-          "version": "0.10.31",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
-          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
-          "dev": true
-        },
-        "through2": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz",
-          "integrity": "sha1-OE51MU1J8y3hLuu4E2uOtrXVnak=",
-          "dev": true,
-          "requires": {
-            "readable-stream": "~2.0.0",
-            "xtend": "~4.0.0"
-          }
-        }
-      }
-    },
     "custom-event": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz",
       "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==",
       "dev": true
     },
-    "d": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
-      "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
-      "dev": true,
-      "requires": {
-        "es5-ext": "^0.10.50",
-        "type": "^1.0.1"
-      }
-    },
     "damerau-levenshtein": {
       "version": "1.0.8",
       "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
@@ -6156,33 +5121,6 @@
       "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==",
       "dev": true
     },
-    "decompress-response": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
-      "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
-      "dev": true,
-      "requires": {
-        "mimic-response": "^1.0.0"
-      }
-    },
-    "deep-extend": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
-      "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
-      "dev": true
-    },
-    "deep-freeze": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz",
-      "integrity": "sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ=",
-      "dev": true
-    },
-    "deep-is": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
-      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
-      "dev": true
-    },
     "default-gateway": {
       "version": "6.0.3",
       "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz",
@@ -6209,12 +5147,6 @@
         }
       }
     },
-    "defer-to-connect": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
-      "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
-      "dev": true
-    },
     "define-lazy-prop": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
@@ -6254,12 +5186,6 @@
       "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==",
       "dev": true
     },
-    "destroy": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
-      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
-      "dev": true
-    },
     "detect-node": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
@@ -6351,48 +5277,6 @@
         "domhandler": "^4.2.0"
       }
     },
-    "dot-prop": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
-      "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
-      "dev": true,
-      "requires": {
-        "is-obj": "^2.0.0"
-      }
-    },
-    "dotenv": {
-      "version": "6.2.0",
-      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz",
-      "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==",
-      "dev": true
-    },
-    "duplexer2": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
-      "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
-      "dev": true,
-      "requires": {
-        "readable-stream": "^2.0.2"
-      }
-    },
-    "duplexer3": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
-      "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
-      "dev": true
-    },
-    "duplexify": {
-      "version": "3.7.1",
-      "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
-      "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
-      "dev": true,
-      "requires": {
-        "end-of-stream": "^1.0.0",
-        "inherits": "^2.0.1",
-        "readable-stream": "^2.0.0",
-        "stream-shift": "^1.0.0"
-      }
-    },
     "ecc-jsbn": {
       "version": "0.1.2",
       "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
@@ -6403,15 +5287,6 @@
         "safer-buffer": "^2.1.0"
       }
     },
-    "ecdsa-sig-formatter": {
-      "version": "1.0.11",
-      "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
-      "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "^5.0.1"
-      }
-    },
     "ee-first": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@@ -6434,12 +5309,6 @@
       "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
       "dev": true
     },
-    "enabled": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
-      "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==",
-      "dev": true
-    },
     "encodeurl": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
@@ -6468,15 +5337,6 @@
         }
       }
     },
-    "end-of-stream": {
-      "version": "1.4.4",
-      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
-      "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
-      "dev": true,
-      "requires": {
-        "once": "^1.4.0"
-      }
-    },
     "engine.io": {
       "version": "6.2.0",
       "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz",
@@ -6579,28 +5439,6 @@
       "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==",
       "dev": true
     },
-    "es5-ext": {
-      "version": "0.10.53",
-      "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz",
-      "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==",
-      "dev": true,
-      "requires": {
-        "es6-iterator": "~2.0.3",
-        "es6-symbol": "~3.1.3",
-        "next-tick": "~1.0.0"
-      }
-    },
-    "es6-iterator": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
-      "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
-      "dev": true,
-      "requires": {
-        "d": "1",
-        "es5-ext": "^0.10.35",
-        "es6-symbol": "^3.1.1"
-      }
-    },
     "es6-promise": {
       "version": "4.2.8",
       "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
@@ -6616,28 +5454,6 @@
         "es6-promise": "^4.0.3"
       }
     },
-    "es6-symbol": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
-      "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
-      "dev": true,
-      "requires": {
-        "d": "^1.0.1",
-        "ext": "^1.1.2"
-      }
-    },
-    "es6-weak-map": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
-      "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
-      "dev": true,
-      "requires": {
-        "d": "1",
-        "es5-ext": "^0.10.46",
-        "es6-iterator": "^2.0.3",
-        "es6-symbol": "^3.1.1"
-      }
-    },
     "esbuild-android-64": {
       "version": "0.14.38",
       "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.38.tgz",
@@ -6789,12 +5605,6 @@
       "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
       "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
     },
-    "escape-goat": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz",
-      "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==",
-      "dev": true
-    },
     "escape-html": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
@@ -6857,22 +5667,6 @@
       "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
       "dev": true
     },
-    "event-emitter": {
-      "version": "0.3.5",
-      "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
-      "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
-      "dev": true,
-      "requires": {
-        "d": "1",
-        "es5-ext": "~0.10.14"
-      }
-    },
-    "event-target-shim": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
-      "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
-      "dev": true
-    },
     "eventemitter-asyncresource": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz",
@@ -6891,12 +5685,6 @@
       "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
       "dev": true
     },
-    "events-listener": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/events-listener/-/events-listener-1.1.0.tgz",
-      "integrity": "sha512-Kd3EgYfODHueq6GzVfs/VUolh2EgJsS8hkO3KpnDrxVjU3eq63eXM2ujXkhPP+OkeUOhL8CxdfZbQXzryb5C4g==",
-      "dev": true
-    },
     "execa": {
       "version": "5.1.1",
       "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
@@ -6963,179 +5751,12 @@
         }
       }
     },
-    "exegesis": {
-      "version": "2.5.6",
-      "resolved": "https://registry.npmjs.org/exegesis/-/exegesis-2.5.6.tgz",
-      "integrity": "sha512-e+YkH/zZTN2njiwrV8tY6tHGDsFu3LyR/YbrqdWvDZaAJ5YGWaBYyd3oX/Y26iGqQc+7jLEKLDTv2UPzjAYL8w==",
-      "dev": true,
-      "requires": {
-        "@apidevtools/json-schema-ref-parser": "^9.0.3",
-        "ajv": "^6.12.2",
-        "body-parser": "^1.18.3",
-        "content-type": "^1.0.4",
-        "deep-freeze": "0.0.1",
-        "events-listener": "^1.1.0",
-        "glob": "^7.1.3",
-        "json-ptr": "^1.3.1",
-        "json-schema-traverse": "^0.4.1",
-        "lodash": "^4.17.11",
-        "openapi3-ts": "^1.2.0",
-        "promise-breaker": "^5.0.0",
-        "pump": "^3.0.0",
-        "qs": "^6.6.0",
-        "raw-body": "^2.3.3",
-        "semver": "^7.0.0"
-      },
-      "dependencies": {
-        "ajv": {
-          "version": "6.12.6",
-          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-          "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-          "dev": true,
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "fast-json-stable-stringify": "^2.0.0",
-            "json-schema-traverse": "^0.4.1",
-            "uri-js": "^4.2.2"
-          }
-        },
-        "fast-deep-equal": {
-          "version": "3.1.3",
-          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-          "dev": true
-        },
-        "lru-cache": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-          "dev": true,
-          "requires": {
-            "yallist": "^4.0.0"
-          }
-        },
-        "qs": {
-          "version": "6.9.6",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz",
-          "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==",
-          "dev": true
-        },
-        "semver": {
-          "version": "7.3.4",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
-          "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        }
-      }
-    },
-    "exegesis-express": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/exegesis-express/-/exegesis-express-2.0.0.tgz",
-      "integrity": "sha512-NKvKBsBa2OvU+1BFpWbz3PzoRMhA9q7/wU2oMmQ9X8lPy/FRatADvhlkGO1zYOMgeo35k1ZLO9ZV0uIs9pPnXg==",
-      "dev": true,
-      "requires": {
-        "exegesis": "^2.0.0"
-      }
-    },
     "exit": {
       "version": "0.1.2",
       "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
       "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
       "dev": true
     },
-    "exit-code": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/exit-code/-/exit-code-1.0.2.tgz",
-      "integrity": "sha1-zhZYEcnxF69qX4gpQLlq5/muzDQ=",
-      "dev": true
-    },
-    "express": {
-      "version": "4.17.1",
-      "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
-      "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
-      "dev": true,
-      "requires": {
-        "accepts": "~1.3.7",
-        "array-flatten": "1.1.1",
-        "body-parser": "1.19.0",
-        "content-disposition": "0.5.3",
-        "content-type": "~1.0.4",
-        "cookie": "0.4.0",
-        "cookie-signature": "1.0.6",
-        "debug": "2.6.9",
-        "depd": "~1.1.2",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "etag": "~1.8.1",
-        "finalhandler": "~1.1.2",
-        "fresh": "0.5.2",
-        "merge-descriptors": "1.0.1",
-        "methods": "~1.1.2",
-        "on-finished": "~2.3.0",
-        "parseurl": "~1.3.3",
-        "path-to-regexp": "0.1.7",
-        "proxy-addr": "~2.0.5",
-        "qs": "6.7.0",
-        "range-parser": "~1.2.1",
-        "safe-buffer": "5.1.2",
-        "send": "0.17.1",
-        "serve-static": "1.14.1",
-        "setprototypeof": "1.1.1",
-        "statuses": "~1.5.0",
-        "type-is": "~1.6.18",
-        "utils-merge": "1.0.1",
-        "vary": "~1.1.2"
-      },
-      "dependencies": {
-        "array-flatten": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
-          "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
-          "dev": true
-        },
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-          "dev": true
-        },
-        "qs": {
-          "version": "6.7.0",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
-          "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
-          "dev": true
-        }
-      }
-    },
-    "ext": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz",
-      "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==",
-      "dev": true,
-      "requires": {
-        "type": "^2.0.0"
-      },
-      "dependencies": {
-        "type": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz",
-          "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==",
-          "dev": true
-        }
-      }
-    },
     "extend": {
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
@@ -7195,34 +5816,11 @@
       "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
       "dev": true
     },
-    "fast-safe-stringify": {
-      "version": "2.0.7",
-      "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
-      "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==",
-      "dev": true
-    },
     "fast-text-encoding": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz",
       "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig=="
     },
-    "fast-url-parser": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz",
-      "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=",
-      "dev": true,
-      "requires": {
-        "punycode": "^1.3.2"
-      },
-      "dependencies": {
-        "punycode": {
-          "version": "1.4.1",
-          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
-          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
-          "dev": true
-        }
-      }
-    },
     "fastparse": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz",
@@ -7247,27 +5845,6 @@
         "websocket-driver": ">=0.5.1"
       }
     },
-    "fecha": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz",
-      "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==",
-      "dev": true
-    },
-    "figures": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
-      "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
-      "dev": true,
-      "requires": {
-        "escape-string-regexp": "^1.0.5"
-      }
-    },
-    "filesize": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
-      "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==",
-      "dev": true
-    },
     "fill-range": {
       "version": "7.0.1",
       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -7341,465 +5918,12 @@
         "path-exists": "^4.0.0"
       }
     },
-    "firebase-tools": {
-      "version": "8.20.0",
-      "resolved": "https://registry.npmjs.org/firebase-tools/-/firebase-tools-8.20.0.tgz",
-      "integrity": "sha512-FovOHkPEvdT31EqxDzjJkaJIYLrc+0GZwQ3ixT1WI3yF3o4TG8MCVo+QidmcNqyX0XZnI3/5sF3dpxXQ/HzaVw==",
-      "dev": true,
-      "requires": {
-        "@google-cloud/pubsub": "^1.7.0",
-        "JSONStream": "^1.2.1",
-        "abort-controller": "^3.0.0",
-        "archiver": "^3.0.0",
-        "body-parser": "^1.19.0",
-        "chokidar": "^3.0.2",
-        "cjson": "^0.3.1",
-        "cli-color": "^1.2.0",
-        "cli-table": "^0.3.1",
-        "commander": "^4.0.1",
-        "configstore": "^5.0.1",
-        "cross-env": "^5.1.3",
-        "cross-spawn": "^7.0.1",
-        "csv-streamify": "^3.0.4",
-        "dotenv": "^6.1.0",
-        "exegesis-express": "^2.0.0",
-        "exit-code": "^1.0.2",
-        "express": "^4.16.4",
-        "filesize": "^3.1.3",
-        "fs-extra": "^0.23.1",
-        "glob": "^7.1.2",
-        "google-auth-library": "^5.5.0",
-        "google-gax": "~1.12.0",
-        "inquirer": "~6.3.1",
-        "js-yaml": "^3.13.1",
-        "jsonschema": "^1.0.2",
-        "jsonwebtoken": "^8.2.1",
-        "leven": "^3.1.0",
-        "lodash": "^4.17.19",
-        "marked": "^0.7.0",
-        "marked-terminal": "^3.3.0",
-        "minimatch": "^3.0.4",
-        "morgan": "^1.10.0",
-        "node-fetch": "^2.6.1",
-        "open": "^6.3.0",
-        "ora": "^3.4.0",
-        "plist": "^3.0.1",
-        "portfinder": "^1.0.23",
-        "progress": "^2.0.3",
-        "request": "^2.87.0",
-        "rimraf": "^3.0.0",
-        "semver": "^5.7.1",
-        "superstatic": "^7.1.0",
-        "tar": "^4.3.0",
-        "tcp-port-used": "^1.0.1",
-        "tmp": "0.0.33",
-        "triple-beam": "^1.3.0",
-        "tweetsodium": "0.0.5",
-        "universal-analytics": "^0.4.16",
-        "unzipper": "^0.10.10",
-        "update-notifier": "^4.1.0",
-        "uuid": "^3.0.0",
-        "winston": "^3.0.0",
-        "ws": "^7.2.3"
-      },
-      "dependencies": {
-        "agent-base": {
-          "version": "6.0.2",
-          "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
-          "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
-          "dev": true,
-          "requires": {
-            "debug": "4"
-          }
-        },
-        "ansi-regex": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-          "dev": true
-        },
-        "arrify": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
-          "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
-          "dev": true
-        },
-        "cli-cursor": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
-          "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
-          "dev": true,
-          "requires": {
-            "restore-cursor": "^2.0.0"
-          }
-        },
-        "commander": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
-          "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
-          "dev": true
-        },
-        "cross-spawn": {
-          "version": "7.0.3",
-          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
-          "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
-          "dev": true,
-          "requires": {
-            "path-key": "^3.1.0",
-            "shebang-command": "^2.0.0",
-            "which": "^2.0.1"
-          }
-        },
-        "fs-extra": {
-          "version": "0.23.1",
-          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.23.1.tgz",
-          "integrity": "sha1-ZhHbpq3yq43Jxp+rN83fiBgVfj0=",
-          "dev": true,
-          "requires": {
-            "graceful-fs": "^4.1.2",
-            "jsonfile": "^2.1.0",
-            "path-is-absolute": "^1.0.0",
-            "rimraf": "^2.2.8"
-          },
-          "dependencies": {
-            "rimraf": {
-              "version": "2.7.1",
-              "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-              "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-              "dev": true,
-              "requires": {
-                "glob": "^7.1.3"
-              }
-            }
-          }
-        },
-        "gaxios": {
-          "version": "2.3.4",
-          "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.3.4.tgz",
-          "integrity": "sha512-US8UMj8C5pRnao3Zykc4AAVr+cffoNKRTg9Rsf2GiuZCW69vgJj38VK2PzlPuQU73FZ/nTk9/Av6/JGcE1N9vA==",
-          "dev": true,
-          "requires": {
-            "abort-controller": "^3.0.0",
-            "extend": "^3.0.2",
-            "https-proxy-agent": "^5.0.0",
-            "is-stream": "^2.0.0",
-            "node-fetch": "^2.3.0"
-          }
-        },
-        "gcp-metadata": {
-          "version": "3.5.0",
-          "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-3.5.0.tgz",
-          "integrity": "sha512-ZQf+DLZ5aKcRpLzYUyBS3yo3N0JSa82lNDO8rj3nMSlovLcz2riKFBsYgDzeXcv75oo5eqB2lx+B14UvPoCRnA==",
-          "dev": true,
-          "requires": {
-            "gaxios": "^2.1.0",
-            "json-bigint": "^0.3.0"
-          }
-        },
-        "google-auth-library": {
-          "version": "5.10.1",
-          "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-5.10.1.tgz",
-          "integrity": "sha512-rOlaok5vlpV9rSiUu5EpR0vVpc+PhN62oF4RyX/6++DG1VsaulAFEMlDYBLjJDDPI6OcNOCGAKy9UVB/3NIDXg==",
-          "dev": true,
-          "requires": {
-            "arrify": "^2.0.0",
-            "base64-js": "^1.3.0",
-            "ecdsa-sig-formatter": "^1.0.11",
-            "fast-text-encoding": "^1.0.0",
-            "gaxios": "^2.1.0",
-            "gcp-metadata": "^3.4.0",
-            "gtoken": "^4.1.0",
-            "jws": "^4.0.0",
-            "lru-cache": "^5.0.0"
-          }
-        },
-        "google-p12-pem": {
-          "version": "2.0.4",
-          "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-2.0.4.tgz",
-          "integrity": "sha512-S4blHBQWZRnEW44OcR7TL9WR+QCqByRvhNDZ/uuQfpxywfupikf/miba8js1jZi6ZOGv5slgSuoshCWh6EMDzg==",
-          "dev": true,
-          "requires": {
-            "node-forge": "^0.9.0"
-          }
-        },
-        "gtoken": {
-          "version": "4.1.4",
-          "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-4.1.4.tgz",
-          "integrity": "sha512-VxirzD0SWoFUo5p8RDP8Jt2AGyOmyYcT/pOUgDKJCK+iSw0TMqwrVfY37RXTNmoKwrzmDHSk0GMT9FsgVmnVSA==",
-          "dev": true,
-          "requires": {
-            "gaxios": "^2.1.0",
-            "google-p12-pem": "^2.0.0",
-            "jws": "^4.0.0",
-            "mime": "^2.2.0"
-          }
-        },
-        "https-proxy-agent": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
-          "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
-          "dev": true,
-          "requires": {
-            "agent-base": "6",
-            "debug": "4"
-          }
-        },
-        "inquirer": {
-          "version": "6.3.1",
-          "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz",
-          "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==",
-          "dev": true,
-          "requires": {
-            "ansi-escapes": "^3.2.0",
-            "chalk": "^2.4.2",
-            "cli-cursor": "^2.1.0",
-            "cli-width": "^2.0.0",
-            "external-editor": "^3.0.3",
-            "figures": "^2.0.0",
-            "lodash": "^4.17.11",
-            "mute-stream": "0.0.7",
-            "run-async": "^2.2.0",
-            "rxjs": "^6.4.0",
-            "string-width": "^2.1.0",
-            "strip-ansi": "^5.1.0",
-            "through": "^2.3.6"
-          },
-          "dependencies": {
-            "rxjs": {
-              "version": "6.6.7",
-              "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
-              "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
-              "dev": true,
-              "requires": {
-                "tslib": "^1.9.0"
-              }
-            }
-          }
-        },
-        "is-stream": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
-          "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
-          "dev": true
-        },
-        "is-wsl": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
-          "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
-          "dev": true
-        },
-        "json-bigint": {
-          "version": "0.3.1",
-          "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-0.3.1.tgz",
-          "integrity": "sha512-DGWnSzmusIreWlEupsUelHrhwmPPE+FiQvg+drKfk2p+bdEYa5mp4PJ8JsCWqae0M2jQNb0HPvnwvf1qOTThzQ==",
-          "dev": true,
-          "requires": {
-            "bignumber.js": "^9.0.0"
-          }
-        },
-        "jsonfile": {
-          "version": "2.4.0",
-          "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
-          "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
-          "dev": true,
-          "requires": {
-            "graceful-fs": "^4.1.6"
-          }
-        },
-        "log-symbols": {
-          "version": "2.2.0",
-          "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
-          "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
-          "dev": true,
-          "requires": {
-            "chalk": "^2.0.1"
-          }
-        },
-        "mime": {
-          "version": "2.5.0",
-          "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz",
-          "integrity": "sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==",
-          "dev": true
-        },
-        "mimic-fn": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
-          "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
-          "dev": true
-        },
-        "node-forge": {
-          "version": "0.9.2",
-          "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.2.tgz",
-          "integrity": "sha512-naKSScof4Wn+aoHU6HBsifh92Zeicm1GDQKd1vp3Y/kOi8ub0DozCa9KpvYNCXslFHYRmLNiqRopGdTGwNLpNw==",
-          "dev": true
-        },
-        "onetime": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
-          "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
-          "dev": true,
-          "requires": {
-            "mimic-fn": "^1.0.0"
-          }
-        },
-        "open": {
-          "version": "6.4.0",
-          "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz",
-          "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==",
-          "dev": true,
-          "requires": {
-            "is-wsl": "^1.1.0"
-          }
-        },
-        "ora": {
-          "version": "3.4.0",
-          "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz",
-          "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==",
-          "dev": true,
-          "requires": {
-            "chalk": "^2.4.2",
-            "cli-cursor": "^2.1.0",
-            "cli-spinners": "^2.0.0",
-            "log-symbols": "^2.2.0",
-            "strip-ansi": "^5.2.0",
-            "wcwidth": "^1.0.1"
-          }
-        },
-        "path-key": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
-          "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
-          "dev": true
-        },
-        "restore-cursor": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
-          "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
-          "dev": true,
-          "requires": {
-            "onetime": "^2.0.0",
-            "signal-exit": "^3.0.2"
-          }
-        },
-        "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-          "dev": true
-        },
-        "shebang-command": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
-          "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
-          "dev": true,
-          "requires": {
-            "shebang-regex": "^3.0.0"
-          }
-        },
-        "shebang-regex": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
-          "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
-          "dev": true
-        },
-        "strip-ansi": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^4.1.0"
-          }
-        },
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-          "dev": true
-        },
-        "which": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
-          "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
-          "dev": true,
-          "requires": {
-            "isexe": "^2.0.0"
-          }
-        },
-        "ws": {
-          "version": "7.4.3",
-          "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.3.tgz",
-          "integrity": "sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA==",
-          "dev": true
-        }
-      }
-    },
-    "flat-arguments": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/flat-arguments/-/flat-arguments-1.0.2.tgz",
-      "integrity": "sha1-m6p4Ct8FAfKC1ybJxqA426ROp28=",
-      "dev": true,
-      "requires": {
-        "array-flatten": "^1.0.0",
-        "as-array": "^1.0.0",
-        "lodash.isarguments": "^3.0.0",
-        "lodash.isobject": "^3.0.0"
-      },
-      "dependencies": {
-        "array-flatten": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
-          "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
-          "dev": true
-        },
-        "as-array": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/as-array/-/as-array-1.0.0.tgz",
-          "integrity": "sha1-KKbu6qVynx9OyiBH316d4avaDtE=",
-          "dev": true,
-          "requires": {
-            "lodash.isarguments": "2.4.x",
-            "lodash.isobject": "^2.4.1",
-            "lodash.values": "^2.4.1"
-          },
-          "dependencies": {
-            "lodash.isarguments": {
-              "version": "2.4.1",
-              "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-2.4.1.tgz",
-              "integrity": "sha1-STGpwIJTrfCRrnyhkiWKlzh27Mo=",
-              "dev": true
-            },
-            "lodash.isobject": {
-              "version": "2.4.1",
-              "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz",
-              "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=",
-              "dev": true,
-              "requires": {
-                "lodash._objecttypes": "~2.4.1"
-              }
-            }
-          }
-        },
-        "lodash.isobject": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz",
-          "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=",
-          "dev": true
-        }
-      }
-    },
     "flatted": {
       "version": "3.2.6",
       "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz",
       "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==",
       "dev": true
     },
-    "fn.name": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
-      "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==",
-      "dev": true
-    },
     "follow-redirects": {
       "version": "1.15.1",
       "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz",
@@ -7823,12 +5947,6 @@
         "mime-types": "^2.1.12"
       }
     },
-    "forwarded": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
-      "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
-      "dev": true
-    },
     "fraction.js": {
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
@@ -7841,12 +5959,6 @@
       "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
       "dev": true
     },
-    "fs-constants": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
-      "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
-      "dev": true
-    },
     "fs-minipass": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
@@ -7870,85 +5982,21 @@
     "fsevents": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.1.tgz",
-      "integrity": "sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==",
-      "dev": true,
-      "optional": true
-    },
-    "fstream": {
-      "version": "1.0.12",
-      "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
-      "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.2",
-        "inherits": "~2.0.0",
-        "mkdirp": ">=0.5 0",
-        "rimraf": "2"
-      },
-      "dependencies": {
-        "rimraf": {
-          "version": "2.7.1",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-          "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-          "dev": true,
-          "requires": {
-            "glob": "^7.1.3"
-          }
-        }
-      }
-    },
-    "function-bind": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-      "dev": true
-    },
-    "fuzzy": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz",
-      "integrity": "sha1-THbsL/CsGjap3M+aAN+GIweNTtg=",
-      "dev": true
-    },
-    "gauge": {
-      "version": "2.7.4",
-      "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
-      "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "aproba": "^1.0.3",
-        "console-control-strings": "^1.0.0",
-        "has-unicode": "^2.0.0",
-        "object-assign": "^4.1.0",
-        "signal-exit": "^3.0.0",
-        "string-width": "^1.0.1",
-        "strip-ansi": "^3.0.1",
-        "wide-align": "^1.1.0"
-      },
-      "dependencies": {
-        "is-fullwidth-code-point": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
-          "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "number-is-nan": "^1.0.0"
-          }
-        },
-        "string-width": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "code-point-at": "^1.0.0",
-            "is-fullwidth-code-point": "^1.0.0",
-            "strip-ansi": "^3.0.0"
-          }
-        }
-      }
+      "integrity": "sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==",
+      "dev": true,
+      "optional": true
+    },
+    "function-bind": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+      "dev": true
+    },
+    "fuzzy": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz",
+      "integrity": "sha1-THbsL/CsGjap3M+aAN+GIweNTtg=",
+      "dev": true
     },
     "gensync": {
       "version": "1.0.0-beta.2",
@@ -7977,15 +6025,6 @@
       "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
       "dev": true
     },
-    "get-stream": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
-      "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
-      "dev": true,
-      "requires": {
-        "pump": "^3.0.0"
-      }
-    },
     "getpass": {
       "version": "0.1.7",
       "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
@@ -8029,46 +6068,12 @@
         }
       }
     },
-    "glob-slash": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/glob-slash/-/glob-slash-1.0.0.tgz",
-      "integrity": "sha1-/lLvpDMjP3Si/mTHq7m8hIICq5U=",
-      "dev": true
-    },
-    "glob-slasher": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/glob-slasher/-/glob-slasher-1.0.1.tgz",
-      "integrity": "sha1-dHoOW7IiZC7hDT4FRD4QlJPLD44=",
-      "dev": true,
-      "requires": {
-        "glob-slash": "^1.0.0",
-        "lodash.isobject": "^2.4.1",
-        "toxic": "^1.0.0"
-      }
-    },
     "glob-to-regexp": {
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
       "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
       "dev": true
     },
-    "global-dirs": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz",
-      "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==",
-      "dev": true,
-      "requires": {
-        "ini": "1.3.7"
-      },
-      "dependencies": {
-        "ini": {
-          "version": "1.3.7",
-          "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz",
-          "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==",
-          "dev": true
-        }
-      }
-    },
     "globals": {
       "version": "11.12.0",
       "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
@@ -8096,171 +6101,6 @@
         }
       }
     },
-    "google-gax": {
-      "version": "1.12.0",
-      "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-1.12.0.tgz",
-      "integrity": "sha512-BeeoxVO6y9K20gUsexUwptutd0PfrTItrA02JWwwstlBIOAcvgFp86MHWufQsnrkPVhxBjHXq65aIkSejtJjDg==",
-      "dev": true,
-      "requires": {
-        "@grpc/grpc-js": "^0.6.12",
-        "@grpc/proto-loader": "^0.5.1",
-        "@types/long": "^4.0.0",
-        "abort-controller": "^3.0.0",
-        "duplexify": "^3.6.0",
-        "google-auth-library": "^5.0.0",
-        "is-stream-ended": "^0.1.4",
-        "lodash.at": "^4.6.0",
-        "lodash.has": "^4.5.2",
-        "node-fetch": "^2.6.0",
-        "protobufjs": "^6.8.8",
-        "retry-request": "^4.0.0",
-        "semver": "^6.0.0",
-        "walkdir": "^0.4.0"
-      },
-      "dependencies": {
-        "@grpc/grpc-js": {
-          "version": "0.6.18",
-          "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-0.6.18.tgz",
-          "integrity": "sha512-uAzv/tM8qpbf1vpx1xPMfcUMzbfdqJtdCYAqY/LsLeQQlnTb4vApylojr+wlCyr7bZeg3AFfHvtihnNOQQt/nA==",
-          "dev": true,
-          "requires": {
-            "semver": "^6.2.0"
-          }
-        },
-        "agent-base": {
-          "version": "6.0.2",
-          "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
-          "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
-          "dev": true,
-          "requires": {
-            "debug": "4"
-          }
-        },
-        "arrify": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
-          "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
-          "dev": true
-        },
-        "gaxios": {
-          "version": "2.3.4",
-          "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.3.4.tgz",
-          "integrity": "sha512-US8UMj8C5pRnao3Zykc4AAVr+cffoNKRTg9Rsf2GiuZCW69vgJj38VK2PzlPuQU73FZ/nTk9/Av6/JGcE1N9vA==",
-          "dev": true,
-          "requires": {
-            "abort-controller": "^3.0.0",
-            "extend": "^3.0.2",
-            "https-proxy-agent": "^5.0.0",
-            "is-stream": "^2.0.0",
-            "node-fetch": "^2.3.0"
-          }
-        },
-        "gcp-metadata": {
-          "version": "3.5.0",
-          "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-3.5.0.tgz",
-          "integrity": "sha512-ZQf+DLZ5aKcRpLzYUyBS3yo3N0JSa82lNDO8rj3nMSlovLcz2riKFBsYgDzeXcv75oo5eqB2lx+B14UvPoCRnA==",
-          "dev": true,
-          "requires": {
-            "gaxios": "^2.1.0",
-            "json-bigint": "^0.3.0"
-          }
-        },
-        "google-auth-library": {
-          "version": "5.10.1",
-          "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-5.10.1.tgz",
-          "integrity": "sha512-rOlaok5vlpV9rSiUu5EpR0vVpc+PhN62oF4RyX/6++DG1VsaulAFEMlDYBLjJDDPI6OcNOCGAKy9UVB/3NIDXg==",
-          "dev": true,
-          "requires": {
-            "arrify": "^2.0.0",
-            "base64-js": "^1.3.0",
-            "ecdsa-sig-formatter": "^1.0.11",
-            "fast-text-encoding": "^1.0.0",
-            "gaxios": "^2.1.0",
-            "gcp-metadata": "^3.4.0",
-            "gtoken": "^4.1.0",
-            "jws": "^4.0.0",
-            "lru-cache": "^5.0.0"
-          }
-        },
-        "google-p12-pem": {
-          "version": "2.0.4",
-          "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-2.0.4.tgz",
-          "integrity": "sha512-S4blHBQWZRnEW44OcR7TL9WR+QCqByRvhNDZ/uuQfpxywfupikf/miba8js1jZi6ZOGv5slgSuoshCWh6EMDzg==",
-          "dev": true,
-          "requires": {
-            "node-forge": "^0.9.0"
-          }
-        },
-        "gtoken": {
-          "version": "4.1.4",
-          "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-4.1.4.tgz",
-          "integrity": "sha512-VxirzD0SWoFUo5p8RDP8Jt2AGyOmyYcT/pOUgDKJCK+iSw0TMqwrVfY37RXTNmoKwrzmDHSk0GMT9FsgVmnVSA==",
-          "dev": true,
-          "requires": {
-            "gaxios": "^2.1.0",
-            "google-p12-pem": "^2.0.0",
-            "jws": "^4.0.0",
-            "mime": "^2.2.0"
-          }
-        },
-        "https-proxy-agent": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
-          "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
-          "dev": true,
-          "requires": {
-            "agent-base": "6",
-            "debug": "4"
-          }
-        },
-        "is-stream": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
-          "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
-          "dev": true
-        },
-        "json-bigint": {
-          "version": "0.3.1",
-          "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-0.3.1.tgz",
-          "integrity": "sha512-DGWnSzmusIreWlEupsUelHrhwmPPE+FiQvg+drKfk2p+bdEYa5mp4PJ8JsCWqae0M2jQNb0HPvnwvf1qOTThzQ==",
-          "dev": true,
-          "requires": {
-            "bignumber.js": "^9.0.0"
-          }
-        },
-        "mime": {
-          "version": "2.5.0",
-          "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz",
-          "integrity": "sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==",
-          "dev": true
-        },
-        "node-forge": {
-          "version": "0.9.2",
-          "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.2.tgz",
-          "integrity": "sha512-naKSScof4Wn+aoHU6HBsifh92Zeicm1GDQKd1vp3Y/kOi8ub0DozCa9KpvYNCXslFHYRmLNiqRopGdTGwNLpNw==",
-          "dev": true
-        }
-      }
-    },
-    "got": {
-      "version": "9.6.0",
-      "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
-      "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
-      "dev": true,
-      "requires": {
-        "@sindresorhus/is": "^0.14.0",
-        "@szmarczak/http-timer": "^1.1.2",
-        "cacheable-request": "^6.0.0",
-        "decompress-response": "^3.3.0",
-        "duplexer3": "^0.1.4",
-        "get-stream": "^4.1.0",
-        "lowercase-keys": "^1.0.1",
-        "mimic-response": "^1.0.1",
-        "p-cancelable": "^1.0.0",
-        "to-readable-stream": "^1.0.0",
-        "url-parse-lax": "^3.0.0"
-      }
-    },
     "graceful-fs": {
       "version": "4.2.4",
       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
@@ -8353,12 +6193,6 @@
       "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
       "dev": true
     },
-    "has-yarn": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz",
-      "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==",
-      "dev": true
-    },
     "hdr-histogram-js": {
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz",
@@ -8376,12 +6210,6 @@
       "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==",
       "dev": true
     },
-    "home-dir": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/home-dir/-/home-dir-1.0.0.tgz",
-      "integrity": "sha1-KRfrRL3JByztqUJXlUOEfjAX/k4=",
-      "dev": true
-    },
     "hosted-git-info": {
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz",
@@ -8648,12 +6476,6 @@
         }
       }
     },
-    "import-lazy": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
-      "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
-      "dev": true
-    },
     "imurmurhash": {
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
@@ -8692,95 +6514,6 @@
       "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
       "dev": true
     },
-    "inquirer": {
-      "version": "6.5.2",
-      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
-      "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==",
-      "dev": true,
-      "requires": {
-        "ansi-escapes": "^3.2.0",
-        "chalk": "^2.4.2",
-        "cli-cursor": "^2.1.0",
-        "cli-width": "^2.0.0",
-        "external-editor": "^3.0.3",
-        "figures": "^2.0.0",
-        "lodash": "^4.17.12",
-        "mute-stream": "0.0.7",
-        "run-async": "^2.2.0",
-        "rxjs": "^6.4.0",
-        "string-width": "^2.1.0",
-        "strip-ansi": "^5.1.0",
-        "through": "^2.3.6"
-      },
-      "dependencies": {
-        "cli-cursor": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
-          "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
-          "dev": true,
-          "requires": {
-            "restore-cursor": "^2.0.0"
-          }
-        },
-        "mimic-fn": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
-          "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
-          "dev": true
-        },
-        "onetime": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
-          "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
-          "dev": true,
-          "requires": {
-            "mimic-fn": "^1.0.0"
-          }
-        },
-        "restore-cursor": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
-          "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
-          "dev": true,
-          "requires": {
-            "onetime": "^2.0.0",
-            "signal-exit": "^3.0.2"
-          }
-        },
-        "rxjs": {
-          "version": "6.6.7",
-          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
-          "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
-          "dev": true,
-          "requires": {
-            "tslib": "^1.9.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^4.1.0"
-          },
-          "dependencies": {
-            "ansi-regex": {
-              "version": "4.1.0",
-              "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-              "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-              "dev": true
-            }
-          }
-        },
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
-          "dev": true
-        }
-      }
-    },
     "inquirer-autocomplete-prompt": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-2.0.0.tgz",
@@ -8824,25 +6557,12 @@
         }
       }
     },
-    "install-artifact-from-github": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/install-artifact-from-github/-/install-artifact-from-github-1.2.0.tgz",
-      "integrity": "sha512-3OxCPcY55XlVM3kkfIpeCgmoSKnMsz2A3Dbhsq0RXpIknKQmrX1YiznCeW9cD2ItFmDxziA3w6Eg8d80AoL3oA==",
-      "dev": true,
-      "optional": true
-    },
     "ip": {
       "version": "1.1.8",
       "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
       "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==",
       "dev": true
     },
-    "ipaddr.js": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
-      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
-      "dev": true
-    },
     "is-arrayish": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
@@ -8858,15 +6578,6 @@
         "binary-extensions": "^2.0.0"
       }
     },
-    "is-ci": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
-      "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
-      "dev": true,
-      "requires": {
-        "ci-info": "^2.0.0"
-      }
-    },
     "is-core-module": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz",
@@ -8887,12 +6598,6 @@
       "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
       "dev": true
     },
-    "is-fullwidth-code-point": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-      "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-      "dev": true
-    },
     "is-glob": {
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
@@ -8902,24 +6607,6 @@
         "is-extglob": "^2.1.1"
       }
     },
-    "is-installed-globally": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz",
-      "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==",
-      "dev": true,
-      "requires": {
-        "global-dirs": "^2.0.1",
-        "is-path-inside": "^3.0.1"
-      },
-      "dependencies": {
-        "is-path-inside": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz",
-          "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==",
-          "dev": true
-        }
-      }
-    },
     "is-interactive": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
@@ -8932,24 +6619,12 @@
       "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==",
       "dev": true
     },
-    "is-npm": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz",
-      "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==",
-      "dev": true
-    },
     "is-number": {
       "version": "7.0.0",
       "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
       "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
       "dev": true
     },
-    "is-obj": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
-      "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
-      "dev": true
-    },
     "is-plain-obj": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
@@ -8965,24 +6640,12 @@
         "isobject": "^3.0.1"
       }
     },
-    "is-promise": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
-      "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==",
-      "dev": true
-    },
     "is-stream": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
       "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
       "dev": true
     },
-    "is-stream-ended": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz",
-      "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==",
-      "dev": true
-    },
     "is-typedarray": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
@@ -8995,12 +6658,6 @@
       "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
       "dev": true
     },
-    "is-url": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
-      "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==",
-      "dev": true
-    },
     "is-what": {
       "version": "3.14.1",
       "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz",
@@ -9015,31 +6672,6 @@
         "is-docker": "^2.0.0"
       }
     },
-    "is-yarn-global": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz",
-      "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==",
-      "dev": true
-    },
-    "is2": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.6.tgz",
-      "integrity": "sha512-+Z62OHOjA6k2sUDOKXoZI3EXv7Fb1K52jpTBLbkfx62bcUeSsrTBLhEquCRDKTx0XE5XbHcG/S2vrtE3lnEDsQ==",
-      "dev": true,
-      "requires": {
-        "deep-is": "^0.1.3",
-        "ip-regex": "^4.1.0",
-        "is-url": "^1.2.4"
-      },
-      "dependencies": {
-        "ip-regex": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz",
-          "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==",
-          "dev": true
-        }
-      }
-    },
     "isarray": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
@@ -9192,15 +6824,15 @@
       }
     },
     "jasmine-core": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.6.0.tgz",
-      "integrity": "sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw==",
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.2.0.tgz",
+      "integrity": "sha512-OcFpBrIhnbmb9wfI8cqPSJ50pv3Wg4/NSgoZIqHzIwO/2a9qivJWzv8hUvaREIMYYJBas6AvfXATFdVuzzCqVw==",
       "dev": true
     },
     "jasmine-spec-reporter": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-5.0.2.tgz",
-      "integrity": "sha512-6gP1LbVgJ+d7PKksQBc2H0oDGNRQI3gKUsWlswKaQ2fif9X5gzhQcgM5+kiJGCQVurOG09jqNhk7payggyp5+g==",
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-7.0.0.tgz",
+      "integrity": "sha512-OtC7JRasiTcjsaCBPtMO0Tl8glCejM4J4/dNuOJdA8lBjz4PmWjYQ6pzb0uzpBNAWJMDudYuj9OdXJWqM2QTJg==",
       "dev": true,
       "requires": {
         "colors": "1.4.0"
@@ -9240,23 +6872,6 @@
         }
       }
     },
-    "jju": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz",
-      "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=",
-      "dev": true
-    },
-    "join-path": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/join-path/-/join-path-1.1.1.tgz",
-      "integrity": "sha1-EFNaEm0ky9Zff/zfFe8uYxB2tQU=",
-      "dev": true,
-      "requires": {
-        "as-array": "^2.0.0",
-        "url-join": "0.0.1",
-        "valid-url": "^1"
-      }
-    },
     "js-tokens": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -9283,44 +6898,12 @@
       "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
       "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
     },
-    "json-buffer": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
-      "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
-      "dev": true
-    },
     "json-parse-even-better-errors": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
       "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
       "dev": true
     },
-    "json-parse-helpfulerror": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz",
-      "integrity": "sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w=",
-      "dev": true,
-      "requires": {
-        "jju": "^1.1.0"
-      }
-    },
-    "json-ptr": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/json-ptr/-/json-ptr-1.3.2.tgz",
-      "integrity": "sha512-tFH40YQ+lG7mgYYM1kGZOhQngO4SbOEHZJlA4W+NtetWZ20EUU3BPU+30uWRKumuAJoSo5eqrsXD2h72ioS8ew==",
-      "dev": true,
-      "requires": {
-        "tslib": "^2.0.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
-          "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==",
-          "dev": true
-        }
-      }
-    },
     "json-schema": {
       "version": "0.2.3",
       "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
@@ -9350,74 +6933,12 @@
       "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==",
       "dev": true
     },
-    "jsonfile": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
-      "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.6"
-      }
-    },
     "jsonparse": {
       "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
-      "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
-      "dev": true
-    },
-    "jsonschema": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.0.tgz",
-      "integrity": "sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw==",
+      "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
+      "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
       "dev": true
     },
-    "jsonwebtoken": {
-      "version": "8.5.1",
-      "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
-      "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
-      "dev": true,
-      "requires": {
-        "jws": "^3.2.2",
-        "lodash.includes": "^4.3.0",
-        "lodash.isboolean": "^3.0.3",
-        "lodash.isinteger": "^4.0.4",
-        "lodash.isnumber": "^3.0.3",
-        "lodash.isplainobject": "^4.0.6",
-        "lodash.isstring": "^4.0.1",
-        "lodash.once": "^4.0.0",
-        "ms": "^2.1.1",
-        "semver": "^5.6.0"
-      },
-      "dependencies": {
-        "jwa": {
-          "version": "1.4.1",
-          "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
-          "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
-          "dev": true,
-          "requires": {
-            "buffer-equal-constant-time": "1.0.1",
-            "ecdsa-sig-formatter": "1.0.11",
-            "safe-buffer": "^5.0.1"
-          }
-        },
-        "jws": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
-          "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
-          "dev": true,
-          "requires": {
-            "jwa": "^1.4.1",
-            "safe-buffer": "^5.0.1"
-          }
-        },
-        "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-          "dev": true
-        }
-      }
-    },
     "jsprim": {
       "version": "1.4.1",
       "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
@@ -9442,27 +6963,6 @@
         "setimmediate": "^1.0.5"
       }
     },
-    "jwa": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
-      "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
-      "dev": true,
-      "requires": {
-        "buffer-equal-constant-time": "1.0.1",
-        "ecdsa-sig-formatter": "1.0.11",
-        "safe-buffer": "^5.0.1"
-      }
-    },
-    "jws": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
-      "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
-      "dev": true,
-      "requires": {
-        "jwa": "^2.0.0",
-        "safe-buffer": "^5.0.1"
-      }
-    },
     "karma": {
       "version": "6.4.0",
       "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.0.tgz",
@@ -9670,9 +7170,9 @@
       }
     },
     "karma-chrome-launcher": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz",
-      "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==",
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz",
+      "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==",
       "dev": true,
       "requires": {
         "which": "^1.2.1"
@@ -9692,22 +7192,19 @@
       }
     },
     "karma-jasmine": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.2.tgz",
-      "integrity": "sha512-ggi84RMNQffSDmWSyyt4zxzh2CQGwsxvYYsprgyR1j8ikzIduEdOlcLvXjZGwXG/0j41KUXOWsUCBfbEHPWP9g==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz",
+      "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==",
       "dev": true,
       "requires": {
-        "jasmine-core": "^3.6.0"
-      },
-      "dependencies": {
-        "jasmine-core": {
-          "version": "3.99.1",
-          "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.99.1.tgz",
-          "integrity": "sha512-Hu1dmuoGcZ7AfyynN3LsfruwMbxMALMka+YtZeGoLuDEySVmVAPaonkNoBRIw/ectu8b9tVQCJNgp4a4knp+tg==",
-          "dev": true
-        }
+        "jasmine-core": "^4.1.0"
       }
     },
+    "karma-jasmine-html-reporter": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.0.0.tgz",
+      "integrity": "sha512-SB8HNNiazAHXM1vGEzf8/tSyEhkfxuDdhYdPBX2Mwgzt0OuF2gicApQ+uvXLID/gXyJQgvrM9+1/2SxZFUUDIA=="
+    },
     "karma-source-map-support": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz",
@@ -9717,15 +7214,6 @@
         "source-map-support": "^0.5.5"
       }
     },
-    "keyv": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
-      "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
-      "dev": true,
-      "requires": {
-        "json-buffer": "3.0.0"
-      }
-    },
     "kind-of": {
       "version": "6.0.3",
       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -9738,30 +7226,6 @@
       "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==",
       "dev": true
     },
-    "kuler": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz",
-      "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==",
-      "dev": true
-    },
-    "latest-version": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz",
-      "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==",
-      "dev": true,
-      "requires": {
-        "package-json": "^6.3.0"
-      }
-    },
-    "lazystream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
-      "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
-      "dev": true,
-      "requires": {
-        "readable-stream": "^2.0.5"
-      }
-    },
     "less": {
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/less/-/less-4.1.2.tgz",
@@ -9798,12 +7262,6 @@
         "klona": "^2.0.4"
       }
     },
-    "leven": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
-      "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
-      "dev": true
-    },
     "license-webpack-plugin": {
       "version": "4.0.2",
       "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz",
@@ -9828,12 +7286,6 @@
       "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
       "dev": true
     },
-    "listenercount": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz",
-      "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=",
-      "dev": true
-    },
     "loader-runner": {
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
@@ -9855,176 +7307,18 @@
         "p-locate": "^4.1.0"
       }
     },
-    "lodash": {
-      "version": "4.17.20",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
-      "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
-      "dev": true
-    },
-    "lodash._isnative": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/lodash._isnative/-/lodash._isnative-2.4.1.tgz",
-      "integrity": "sha1-PqZAS3hKe+g2x7V1gOHN95sUgyw=",
-      "dev": true
-    },
-    "lodash._objecttypes": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz",
-      "integrity": "sha1-fAt/admKH3ZSn4kLDNsbTf7BHBE=",
-      "dev": true
-    },
-    "lodash._shimkeys": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz",
-      "integrity": "sha1-bpzJZm/wgfC1psl4uD4kLmlJ0gM=",
-      "dev": true,
-      "requires": {
-        "lodash._objecttypes": "~2.4.1"
-      }
-    },
-    "lodash.at": {
-      "version": "4.6.0",
-      "resolved": "https://registry.npmjs.org/lodash.at/-/lodash.at-4.6.0.tgz",
-      "integrity": "sha1-k83OZk8KGZTqM9181A4jr9EbD/g=",
-      "dev": true
-    },
-    "lodash.camelcase": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
-      "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=",
-      "dev": true
-    },
     "lodash.debounce": {
       "version": "4.0.8",
       "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
       "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
       "dev": true
     },
-    "lodash.defaults": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
-      "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=",
-      "dev": true
-    },
-    "lodash.difference": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz",
-      "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=",
-      "dev": true
-    },
-    "lodash.flatten": {
-      "version": "4.4.0",
-      "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
-      "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
-      "dev": true
-    },
-    "lodash.has": {
-      "version": "4.5.2",
-      "resolved": "https://registry.npmjs.org/lodash.has/-/lodash.has-4.5.2.tgz",
-      "integrity": "sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI=",
-      "dev": true
-    },
-    "lodash.includes": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
-      "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=",
-      "dev": true
-    },
-    "lodash.isarguments": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
-      "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=",
-      "dev": true
-    },
-    "lodash.isboolean": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
-      "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=",
-      "dev": true
-    },
-    "lodash.isinteger": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
-      "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=",
-      "dev": true
-    },
-    "lodash.isnumber": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
-      "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=",
-      "dev": true
-    },
-    "lodash.isobject": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz",
-      "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=",
-      "dev": true,
-      "requires": {
-        "lodash._objecttypes": "~2.4.1"
-      }
-    },
-    "lodash.isplainobject": {
-      "version": "4.0.6",
-      "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
-      "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=",
-      "dev": true
-    },
-    "lodash.isstring": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
-      "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=",
-      "dev": true
-    },
-    "lodash.keys": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz",
-      "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=",
-      "dev": true,
-      "requires": {
-        "lodash._isnative": "~2.4.1",
-        "lodash._shimkeys": "~2.4.1",
-        "lodash.isobject": "~2.4.1"
-      }
-    },
-    "lodash.once": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
-      "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=",
-      "dev": true
-    },
-    "lodash.snakecase": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz",
-      "integrity": "sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40=",
-      "dev": true
-    },
     "lodash.sortby": {
       "version": "4.7.0",
       "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
       "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
       "dev": true
     },
-    "lodash.toarray": {
-      "version": "4.4.0",
-      "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
-      "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=",
-      "dev": true
-    },
-    "lodash.union": {
-      "version": "4.6.0",
-      "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
-      "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=",
-      "dev": true
-    },
-    "lodash.values": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-2.4.1.tgz",
-      "integrity": "sha1-q/UUQ2s8twUAFieXjLzzCxKA7qQ=",
-      "dev": true,
-      "requires": {
-        "lodash.keys": "~2.4.1"
-      }
-    },
     "log-symbols": {
       "version": "4.1.0",
       "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
@@ -10110,70 +7404,11 @@
         }
       }
     },
-    "logform": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/logform/-/logform-2.2.0.tgz",
-      "integrity": "sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==",
-      "dev": true,
-      "requires": {
-        "colors": "^1.2.1",
-        "fast-safe-stringify": "^2.0.4",
-        "fecha": "^4.2.0",
-        "ms": "^2.1.1",
-        "triple-beam": "^1.3.0"
-      },
-      "dependencies": {
-        "colors": {
-          "version": "1.4.0",
-          "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
-          "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
-          "dev": true
-        }
-      }
-    },
-    "long": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
-      "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==",
-      "dev": true
-    },
     "lottie-web": {
       "version": "5.9.6",
       "resolved": "https://registry.npmjs.org/lottie-web/-/lottie-web-5.9.6.tgz",
       "integrity": "sha512-JFs7KsHwflugH5qIXBpB4905yC1Sub2MZWtl/elvO/QC6qj1ApqbUZJyjzJseJUtVpgiDaXQLjBlIJGS7UUUXA=="
     },
-    "lowercase-keys": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
-      "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
-      "dev": true
-    },
-    "lru-cache": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
-      "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
-      "dev": true,
-      "requires": {
-        "yallist": "^3.0.2"
-      },
-      "dependencies": {
-        "yallist": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-          "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-          "dev": true
-        }
-      }
-    },
-    "lru-queue": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
-      "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=",
-      "dev": true,
-      "requires": {
-        "es5-ext": "~0.10.2"
-      }
-    },
     "magic-string": {
       "version": "0.26.1",
       "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz",
@@ -10370,26 +7605,6 @@
         }
       }
     },
-    "marked": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz",
-      "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==",
-      "dev": true
-    },
-    "marked-terminal": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-3.3.0.tgz",
-      "integrity": "sha512-+IUQJ5VlZoAFsM5MHNT7g3RHSkA3eETqhRCdXv4niUMAKHQ7lb1yvAcuGPmm4soxhmtX13u4Li6ZToXtvSEH+A==",
-      "dev": true,
-      "requires": {
-        "ansi-escapes": "^3.1.0",
-        "cardinal": "^2.1.1",
-        "chalk": "^2.4.1",
-        "cli-table": "^0.3.1",
-        "node-emoji": "^1.4.1",
-        "supports-hyperlinks": "^1.0.1"
-      }
-    },
     "media-typer": {
       "version": "0.3.0",
       "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@@ -10405,30 +7620,6 @@
         "fs-monkey": "^1.0.3"
       }
     },
-    "memoizee": {
-      "version": "0.4.15",
-      "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz",
-      "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==",
-      "dev": true,
-      "requires": {
-        "d": "^1.0.1",
-        "es5-ext": "^0.10.53",
-        "es6-weak-map": "^2.0.3",
-        "event-emitter": "^0.3.5",
-        "is-promise": "^2.2.2",
-        "lru-queue": "^0.1.0",
-        "next-tick": "^1.1.0",
-        "timers-ext": "^0.1.7"
-      },
-      "dependencies": {
-        "next-tick": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
-          "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
-          "dev": true
-        }
-      }
-    },
     "merge-descriptors": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
@@ -10498,12 +7689,6 @@
       "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
       "dev": true
     },
-    "mimic-response": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
-      "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
-      "dev": true
-    },
     "mini-css-extract-plugin": {
       "version": "2.6.0",
       "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz",
@@ -10627,85 +7812,22 @@
         "minipass": "^3.0.0"
       }
     },
-    "minipass-sized": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
-      "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==",
-      "dev": true,
-      "requires": {
-        "minipass": "^3.0.0"
-      }
-    },
-    "minizlib": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
-      "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
-      "dev": true,
-      "requires": {
-        "minipass": "^2.9.0"
-      },
-      "dependencies": {
-        "minipass": {
-          "version": "2.9.0",
-          "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
-          "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
-          "dev": true,
-          "requires": {
-            "safe-buffer": "^5.1.2",
-            "yallist": "^3.0.0"
-          }
-        },
-        "yallist": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-          "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-          "dev": true
-        }
-      }
-    },
-    "mkdirp": {
-      "version": "0.5.5",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-      "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
-      "dev": true,
-      "requires": {
-        "minimist": "^1.2.5"
-      }
-    },
-    "morgan": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
-      "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==",
-      "dev": true,
-      "requires": {
-        "basic-auth": "~2.0.1",
-        "debug": "2.6.9",
-        "depd": "~2.0.0",
-        "on-finished": "~2.3.0",
-        "on-headers": "~1.0.2"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "depd": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
-          "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
-          "dev": true
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-          "dev": true
-        }
+    "minipass-sized": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
+      "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==",
+      "dev": true,
+      "requires": {
+        "minipass": "^3.0.0"
+      }
+    },
+    "mkdirp": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+      "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+      "dev": true,
+      "requires": {
+        "minimist": "^1.2.5"
       }
     },
     "ms": {
@@ -10723,45 +7845,12 @@
         "thunky": "^1.0.2"
       }
     },
-    "mute-stream": {
-      "version": "0.0.7",
-      "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
-      "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
-      "dev": true
-    },
-    "nan": {
-      "version": "2.14.2",
-      "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz",
-      "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==",
-      "dev": true,
-      "optional": true
-    },
     "nanoid": {
       "version": "3.3.4",
       "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
       "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
       "dev": true
     },
-    "nash": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/nash/-/nash-3.0.0.tgz",
-      "integrity": "sha512-M5SahEycXUmko3zOvsBkF6p94CWLhnyy9hfpQ9Qzp+rQkQ8D1OaTlfTl1OBWktq9Fak3oDXKU+ev7tiMaMu+1w==",
-      "dev": true,
-      "requires": {
-        "async": "^1.3.0",
-        "flat-arguments": "^1.0.0",
-        "lodash": "^4.17.5",
-        "minimist": "^1.1.0"
-      },
-      "dependencies": {
-        "async": {
-          "version": "1.5.2",
-          "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
-          "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
-          "dev": true
-        }
-      }
-    },
     "needle": {
       "version": "2.9.1",
       "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz",
@@ -10798,11 +7887,13 @@
       "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
       "dev": true
     },
-    "next-tick": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
-      "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
-      "dev": true
+    "ng-apexcharts": {
+      "version": "1.7.1",
+      "resolved": "https://registry.npmjs.org/ng-apexcharts/-/ng-apexcharts-1.7.1.tgz",
+      "integrity": "sha512-GTRhF70G0leGVGjx4cbLKGusZxF7FogFgJ59q3Ntk0MIEvJqfpSYywmocselh3cGR0S/Zt/d7JEgt/f2HOzpTA==",
+      "requires": {
+        "tslib": "^2.0.0"
+      }
     },
     "ng-waveform": {
       "version": "0.2.1",
@@ -10820,43 +7911,20 @@
       }
     },
     "ng2-pdf-viewer": {
-      "version": "6.4.1",
-      "resolved": "https://registry.npmjs.org/ng2-pdf-viewer/-/ng2-pdf-viewer-6.4.1.tgz",
-      "integrity": "sha512-A8R9SGa2bu4n+mtagGX8DqBrVAbuROrEgcAOQwCdciYTLAq9EFGEB8TCQZpjvYVaFTNwjKWTMTjFQVEorjbLeQ==",
+      "version": "9.0.0",
+      "resolved": "https://registry.npmjs.org/ng2-pdf-viewer/-/ng2-pdf-viewer-9.0.0.tgz",
+      "integrity": "sha512-MaPCQJMeSRV7kzVTRskygdf1YrCCfmHqKPGrhQjdkBPj5HDFX02SOxVTlnJrl2KLO6nUyJ8xAdf4Pojf85gKaw==",
       "requires": {
-        "@types/pdfjs-dist": "~2.1.7",
-        "pdfjs-dist": "~2.5.207",
-        "tslib": "^1.10.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
-        }
+        "pdfjs-dist": "~2.13.216",
+        "tslib": "^2.3.1"
       }
     },
     "ngx-countdown": {
-      "version": "11.0.3",
-      "resolved": "https://registry.npmjs.org/ngx-countdown/-/ngx-countdown-11.0.3.tgz",
-      "integrity": "sha512-Porzyl9jo/lS0eg6dUS0UEloRyfk9naDeL2iSt/4Wwmogq+hlHXUDvVuLm/kO7haAGYOQPSsuAIoFB4m9fRMTg==",
-      "requires": {
-        "tslib": "^2.0.0"
-      }
-    },
-    "ngx-lottie": {
-      "version": "6.4.0",
-      "resolved": "https://registry.npmjs.org/ngx-lottie/-/ngx-lottie-6.4.0.tgz",
-      "integrity": "sha512-RuXljkSOpZyt/NLL2X89gNMIxvGrj/D1rRN4qrOrAZHdREeGAIapqvrldJpQDeiThkHeNfyWfmnDavhJfP/DHA==",
+      "version": "14.0.0",
+      "resolved": "https://registry.npmjs.org/ngx-countdown/-/ngx-countdown-14.0.0.tgz",
+      "integrity": "sha512-XZyRQM7lT174phm15WiqnenYShZ9+RkaSYNsFvM5GREPgAnWE9Yl7tjC6aH4tijdnYPsbAqSIyqhzg/TERiKjQ==",
       "requires": {
-        "tslib": "^2.0.0"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
-          "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
-        }
+        "tslib": "^2.3.0"
       }
     },
     "ngx-walkthrough": {
@@ -10885,12 +7953,6 @@
         "node-gyp-build": "^4.2.2"
       }
     },
-    "nice-try": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
-      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
-      "dev": true
-    },
     "node-addon-api": {
       "version": "3.2.1",
       "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
@@ -10898,122 +7960,6 @@
       "dev": true,
       "optional": true
     },
-    "node-emoji": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz",
-      "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==",
-      "dev": true,
-      "requires": {
-        "lodash.toarray": "^4.4.0"
-      }
-    },
-    "node-fetch": {
-      "version": "2.6.1",
-      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
-      "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
-      "dev": true
-    },
-    "node-gyp": {
-      "version": "7.1.2",
-      "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz",
-      "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "env-paths": "^2.2.0",
-        "glob": "^7.1.4",
-        "graceful-fs": "^4.2.3",
-        "nopt": "^5.0.0",
-        "npmlog": "^4.1.2",
-        "request": "^2.88.2",
-        "rimraf": "^3.0.2",
-        "semver": "^7.3.2",
-        "tar": "^6.0.2",
-        "which": "^2.0.2"
-      },
-      "dependencies": {
-        "chownr": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
-          "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
-          "dev": true,
-          "optional": true
-        },
-        "lru-cache": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "yallist": "^4.0.0"
-          }
-        },
-        "minizlib": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
-          "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "minipass": "^3.0.0",
-            "yallist": "^4.0.0"
-          }
-        },
-        "mkdirp": {
-          "version": "1.0.4",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
-          "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
-          "dev": true,
-          "optional": true
-        },
-        "rimraf": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "glob": "^7.1.3"
-          }
-        },
-        "semver": {
-          "version": "7.3.4",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
-          "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        },
-        "tar": {
-          "version": "6.1.0",
-          "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz",
-          "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "chownr": "^2.0.0",
-            "fs-minipass": "^2.0.0",
-            "minipass": "^3.0.0",
-            "minizlib": "^2.1.1",
-            "mkdirp": "^1.0.3",
-            "yallist": "^4.0.0"
-          }
-        },
-        "which": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
-          "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "isexe": "^2.0.0"
-          }
-        }
-      }
-    },
     "node-gyp-build": {
       "version": "4.5.0",
       "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz",
@@ -11526,19 +8472,6 @@
         }
       }
     },
-    "npmlog": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
-      "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "are-we-there-yet": "~1.1.2",
-        "console-control-strings": "~1.1.0",
-        "gauge": "~2.7.3",
-        "set-blocking": "~2.0.0"
-      }
-    },
     "nth-check": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
@@ -11548,13 +8481,6 @@
         "boolbase": "^1.0.0"
       }
     },
-    "number-is-nan": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
-      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
-      "dev": true,
-      "optional": true
-    },
     "oauth-sign": {
       "version": "0.9.0",
       "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
@@ -11620,15 +8546,6 @@
         "wrappy": "1"
       }
     },
-    "one-time": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz",
-      "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==",
-      "dev": true,
-      "requires": {
-        "fn.name": "1.x.x"
-      }
-    },
     "onetime": {
       "version": "5.1.2",
       "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
@@ -11648,12 +8565,6 @@
         "is-wsl": "^2.2.0"
       }
     },
-    "openapi3-ts": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/openapi3-ts/-/openapi3-ts-1.4.0.tgz",
-      "integrity": "sha512-8DmE2oKayvSkIR3XSZ4+pRliBsx19bSNeIzkTPswY8r4wvjX86bMxsORdqwAwMxE8PefOcSAT2auvi/0TZe9yA==",
-      "dev": true
-    },
     "ora": {
       "version": "5.4.1",
       "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
@@ -11743,12 +8654,6 @@
       "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
       "dev": true
     },
-    "p-cancelable": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
-      "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
-      "dev": true
-    },
     "p-limit": {
       "version": "2.3.0",
       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
@@ -11792,18 +8697,6 @@
       "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
       "dev": true
     },
-    "package-json": {
-      "version": "6.5.0",
-      "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz",
-      "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==",
-      "dev": true,
-      "requires": {
-        "got": "^9.6.0",
-        "registry-auth-token": "^4.0.0",
-        "registry-url": "^5.0.0",
-        "semver": "^6.2.0"
-      }
-    },
     "pacote": {
       "version": "13.3.0",
       "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.3.0.tgz",
@@ -11980,12 +8873,6 @@
       "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
       "dev": true
     },
-    "path-key": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
-      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
-      "dev": true
-    },
     "path-parse": {
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
@@ -12005,9 +8892,12 @@
       "dev": true
     },
     "pdfjs-dist": {
-      "version": "2.5.207",
-      "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.5.207.tgz",
-      "integrity": "sha512-xGDUhnCYPfHy+unMXCLCJtlpZaaZ17Ew3WIL0tnSgKFUZXHAPD49GO9xScyszSsQMoutNDgRb+rfBXIaX/lJbw=="
+      "version": "2.13.216",
+      "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.13.216.tgz",
+      "integrity": "sha512-qn/9a/3IHIKZarTK6ajeeFXBkG15Lg1Fx99PxU09PAU2i874X8mTcHJYyDJxu7WDfNhV6hM7bRQBZU384anoqQ==",
+      "requires": {
+        "web-streams-polyfill": "^3.2.0"
+      }
     },
     "performance-now": {
       "version": "2.1.0",
@@ -12068,47 +8958,6 @@
         "find-up": "^4.0.0"
       }
     },
-    "plist": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz",
-      "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==",
-      "dev": true,
-      "requires": {
-        "base64-js": "^1.2.3",
-        "xmlbuilder": "^9.0.7",
-        "xmldom": "0.1.x"
-      },
-      "dependencies": {
-        "xmlbuilder": {
-          "version": "9.0.7",
-          "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
-          "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
-          "dev": true
-        }
-      }
-    },
-    "portfinder": {
-      "version": "1.0.28",
-      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz",
-      "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==",
-      "dev": true,
-      "requires": {
-        "async": "^2.6.2",
-        "debug": "^3.1.1",
-        "mkdirp": "^0.5.5"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.2.7",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-          "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-          "dev": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        }
-      }
-    },
     "postcss": {
       "version": "8.4.13",
       "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.13.tgz",
@@ -12515,18 +9364,6 @@
       "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
       "dev": true
     },
-    "progress": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
-      "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
-      "dev": true
-    },
-    "promise-breaker": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/promise-breaker/-/promise-breaker-5.0.0.tgz",
-      "integrity": "sha512-mgsWQuG4kJ1dtO6e/QlNDLFtMkMzzecsC69aI5hlLEjGHFNpHrvGhFi4LiK5jg2SMQj74/diH+wZliL9LpGsyA==",
-      "dev": true
-    },
     "promise-inflight": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
@@ -12551,35 +9388,6 @@
         }
       }
     },
-    "protobufjs": {
-      "version": "6.10.2",
-      "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.10.2.tgz",
-      "integrity": "sha512-27yj+04uF6ya9l+qfpH187aqEzfCF4+Uit0I9ZBQVqK09hk/SQzKa2MUqUpXaVa7LOFRg1TSSr3lVxGOk6c0SQ==",
-      "dev": true,
-      "requires": {
-        "@protobufjs/aspromise": "^1.1.2",
-        "@protobufjs/base64": "^1.1.2",
-        "@protobufjs/codegen": "^2.0.4",
-        "@protobufjs/eventemitter": "^1.1.0",
-        "@protobufjs/fetch": "^1.1.0",
-        "@protobufjs/float": "^1.0.2",
-        "@protobufjs/inquire": "^1.1.0",
-        "@protobufjs/path": "^1.1.2",
-        "@protobufjs/pool": "^1.1.0",
-        "@protobufjs/utf8": "^1.1.0",
-        "@types/long": "^4.0.1",
-        "@types/node": "^13.7.0",
-        "long": "^4.0.0"
-      },
-      "dependencies": {
-        "@types/node": {
-          "version": "13.13.41",
-          "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.41.tgz",
-          "integrity": "sha512-qLT9IvHiXJfdrje9VmsLzun7cQ65obsBTmtU3EOnCSLFOoSHx1hpiRHoBnpdbyFqnzqdUUIv81JcEJQCB8un9g==",
-          "dev": true
-        }
-      }
-    },
     "protractor": {
       "version": "7.0.0",
       "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz",
@@ -12750,16 +9558,6 @@
         }
       }
     },
-    "proxy-addr": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
-      "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
-      "dev": true,
-      "requires": {
-        "forwarded": "~0.1.2",
-        "ipaddr.js": "1.9.1"
-      }
-    },
     "prr": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
@@ -12773,31 +9571,12 @@
       "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
       "dev": true
     },
-    "pump": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
-      "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
-      "dev": true,
-      "requires": {
-        "end-of-stream": "^1.1.0",
-        "once": "^1.3.1"
-      }
-    },
     "punycode": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
       "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
       "dev": true
     },
-    "pupa": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz",
-      "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==",
-      "dev": true,
-      "requires": {
-        "escape-goat": "^2.0.0"
-      }
-    },
     "qjobs": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz",
@@ -12851,30 +9630,6 @@
         }
       }
     },
-    "rc": {
-      "version": "1.2.8",
-      "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
-      "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
-      "dev": true,
-      "requires": {
-        "deep-extend": "^0.6.0",
-        "ini": "~1.3.0",
-        "minimist": "^1.2.0",
-        "strip-json-comments": "~2.0.1"
-      }
-    },
-    "re2": {
-      "version": "1.15.9",
-      "resolved": "https://registry.npmjs.org/re2/-/re2-1.15.9.tgz",
-      "integrity": "sha512-AXWEhpMTBdC+3oqbjdU07dk0pBCvxh5vbOMLERL6Y8FYBSGn4vXlLe8cYszn64Yy7H8keVMrgPzoSvOd4mePpg==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "install-artifact-from-github": "^1.2.0",
-        "nan": "^2.14.2",
-        "node-gyp": "^7.1.2"
-      }
-    },
     "read-cache": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
@@ -12976,15 +9731,6 @@
       "resolved": "https://registry.npmjs.org/recordrtc/-/recordrtc-5.6.2.tgz",
       "integrity": "sha512-1QNKKNtl7+KcwD1lyOgP3ZlbiJ1d0HtXnypUy7yq49xEERxk31PHvE9RCciDrulPCY7WJ+oz0R9hpNxgsIurGQ=="
     },
-    "redeyed": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz",
-      "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=",
-      "dev": true,
-      "requires": {
-        "esprima": "~4.0.0"
-      }
-    },
     "reflect-metadata": {
       "version": "0.1.13",
       "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
@@ -13041,24 +9787,6 @@
         "unicode-match-property-value-ecmascript": "^2.0.0"
       }
     },
-    "registry-auth-token": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz",
-      "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==",
-      "dev": true,
-      "requires": {
-        "rc": "^1.2.8"
-      }
-    },
-    "registry-url": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz",
-      "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==",
-      "dev": true,
-      "requires": {
-        "rc": "^1.2.8"
-      }
-    },
     "regjsgen": {
       "version": "0.6.0",
       "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz",
@@ -13181,15 +9909,6 @@
         }
       }
     },
-    "responselike": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
-      "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
-      "dev": true,
-      "requires": {
-        "lowercase-keys": "^1.0.0"
-      }
-    },
     "restore-cursor": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
@@ -13206,15 +9925,6 @@
       "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
       "dev": true
     },
-    "retry-request": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.1.3.tgz",
-      "integrity": "sha512-QnRZUpuPNgX0+D1xVxul6DbJ9slvo4Rm6iV/dn63e048MvGbUZiKySVt6Tenp04JqmchxjiLltGerOJys7kJYQ==",
-      "dev": true,
-      "requires": {
-        "debug": "^4.1.1"
-      }
-    },
     "reusify": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
@@ -13227,65 +9937,6 @@
       "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==",
       "dev": true
     },
-    "rimraf": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz",
-      "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==",
-      "dev": true,
-      "requires": {
-        "glob": "^7.1.3"
-      }
-    },
-    "router": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/router/-/router-1.3.5.tgz",
-      "integrity": "sha512-kozCJZUhuSJ5VcLhSb3F8fsmGXy+8HaDbKCAerR1G6tq3mnMZFMuSohbFvGv1c5oMFipijDjRZuuN/Sq5nMf3g==",
-      "dev": true,
-      "requires": {
-        "array-flatten": "3.0.0",
-        "debug": "2.6.9",
-        "methods": "~1.1.2",
-        "parseurl": "~1.3.3",
-        "path-to-regexp": "0.1.7",
-        "setprototypeof": "1.2.0",
-        "utils-merge": "1.0.1"
-      },
-      "dependencies": {
-        "array-flatten": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz",
-          "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==",
-          "dev": true
-        },
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-          "dev": true
-        },
-        "setprototypeof": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
-          "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
-          "dev": true
-        }
-      }
-    },
-    "rsvp": {
-      "version": "4.8.5",
-      "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
-      "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==",
-      "dev": true
-    },
     "run-async": {
       "version": "2.4.1",
       "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
@@ -13440,15 +10091,6 @@
       "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
       "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
     },
-    "semver-diff": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz",
-      "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==",
-      "dev": true,
-      "requires": {
-        "semver": "^6.3.0"
-      }
-    },
     "semver-dsl": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz",
@@ -13466,52 +10108,6 @@
         }
       }
     },
-    "send": {
-      "version": "0.17.1",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
-      "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
-      "dev": true,
-      "requires": {
-        "debug": "2.6.9",
-        "depd": "~1.1.2",
-        "destroy": "~1.0.4",
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "etag": "~1.8.1",
-        "fresh": "0.5.2",
-        "http-errors": "~1.7.2",
-        "mime": "1.6.0",
-        "ms": "2.1.1",
-        "on-finished": "~2.3.0",
-        "range-parser": "~1.2.1",
-        "statuses": "~1.5.0"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "dev": true,
-          "requires": {
-            "ms": "2.0.0"
-          },
-          "dependencies": {
-            "ms": {
-              "version": "2.0.0",
-              "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-              "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-              "dev": true
-            }
-          }
-        },
-        "ms": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
-          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
-          "dev": true
-        }
-      }
-    },
     "serialize-javascript": {
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
@@ -13577,18 +10173,6 @@
         }
       }
     },
-    "serve-static": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
-      "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
-      "dev": true,
-      "requires": {
-        "encodeurl": "~1.0.2",
-        "escape-html": "~1.0.3",
-        "parseurl": "~1.3.3",
-        "send": "0.17.1"
-      }
-    },
     "set-blocking": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
@@ -13616,21 +10200,6 @@
         "kind-of": "^6.0.2"
       }
     },
-    "shebang-command": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
-      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
-      "dev": true,
-      "requires": {
-        "shebang-regex": "^1.0.0"
-      }
-    },
-    "shebang-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
-      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
-      "dev": true
-    },
     "side-channel": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
@@ -13648,23 +10217,6 @@
       "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
       "dev": true
     },
-    "simple-swizzle": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
-      "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
-      "dev": true,
-      "requires": {
-        "is-arrayish": "^0.3.1"
-      },
-      "dependencies": {
-        "is-arrayish": {
-          "version": "0.3.2",
-          "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
-          "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
-          "dev": true
-        }
-      }
-    },
     "slash": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
@@ -13951,24 +10503,12 @@
         "minipass": "^3.1.1"
       }
     },
-    "stack-trace": {
-      "version": "0.0.10",
-      "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
-      "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
-      "dev": true
-    },
     "statuses": {
       "version": "1.5.0",
       "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
       "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
       "dev": true
     },
-    "stream-shift": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
-      "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
-      "dev": true
-    },
     "streamroller": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.1.tgz",
@@ -14018,42 +10558,6 @@
         }
       }
     },
-    "string-length": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz",
-      "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=",
-      "dev": true,
-      "requires": {
-        "strip-ansi": "^3.0.0"
-      }
-    },
-    "string-width": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-      "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
-      "dev": true,
-      "requires": {
-        "is-fullwidth-code-point": "^2.0.0",
-        "strip-ansi": "^4.0.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
-          "dev": true
-        },
-        "strip-ansi": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^3.0.0"
-          }
-        }
-      }
-    },
     "string_decoder": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -14078,12 +10582,6 @@
       "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
       "dev": true
     },
-    "strip-json-comments": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
-      "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
-      "dev": true
-    },
     "stylus": {
       "version": "0.57.0",
       "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.57.0.tgz",
@@ -14143,92 +10641,6 @@
         "normalize-path": "^3.0.0"
       }
     },
-    "superstatic": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/superstatic/-/superstatic-7.1.0.tgz",
-      "integrity": "sha512-yBU8iw07nM3Bu4jFc8lnKwLey0cj61OaGmFJZcYC2X+kEpXVmXzERJ3OTAHZAESe1OTeNIuWadt81U5IULGGAA==",
-      "dev": true,
-      "requires": {
-        "basic-auth-connect": "^1.0.0",
-        "chalk": "^1.1.3",
-        "compare-semver": "^1.0.0",
-        "compression": "^1.7.0",
-        "connect": "^3.6.2",
-        "destroy": "^1.0.4",
-        "fast-url-parser": "^1.1.3",
-        "fs-extra": "^8.1.0",
-        "glob-slasher": "^1.0.1",
-        "home-dir": "^1.0.0",
-        "is-url": "^1.2.2",
-        "join-path": "^1.1.1",
-        "lodash": "^4.17.19",
-        "mime-types": "^2.1.16",
-        "minimatch": "^3.0.4",
-        "morgan": "^1.8.2",
-        "nash": "^3.0.0",
-        "on-finished": "^2.2.0",
-        "on-headers": "^1.0.0",
-        "path-to-regexp": "^1.8.0",
-        "re2": "^1.15.8",
-        "router": "^1.3.1",
-        "rsvp": "^4.8.5",
-        "string-length": "^1.0.0",
-        "update-notifier": "^4.1.1"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "2.2.1",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
-          "dev": true
-        },
-        "chalk": {
-          "version": "1.1.3",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^2.2.1",
-            "escape-string-regexp": "^1.0.2",
-            "has-ansi": "^2.0.0",
-            "strip-ansi": "^3.0.0",
-            "supports-color": "^2.0.0"
-          }
-        },
-        "fs-extra": {
-          "version": "8.1.0",
-          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
-          "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
-          "dev": true,
-          "requires": {
-            "graceful-fs": "^4.2.0",
-            "jsonfile": "^4.0.0",
-            "universalify": "^0.1.0"
-          }
-        },
-        "isarray": {
-          "version": "0.0.1",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
-          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
-          "dev": true
-        },
-        "path-to-regexp": {
-          "version": "1.8.0",
-          "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
-          "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
-          "dev": true,
-          "requires": {
-            "isarray": "0.0.1"
-          }
-        },
-        "supports-color": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-          "dev": true
-        }
-      }
-    },
     "supports-color": {
       "version": "5.5.0",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -14237,24 +10649,6 @@
         "has-flag": "^3.0.0"
       }
     },
-    "supports-hyperlinks": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz",
-      "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==",
-      "dev": true,
-      "requires": {
-        "has-flag": "^2.0.0",
-        "supports-color": "^5.0.0"
-      },
-      "dependencies": {
-        "has-flag": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
-          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
-          "dev": true
-        }
-      }
-    },
     "supports-preserve-symlinks-flag": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
@@ -14312,118 +10706,34 @@
           "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz",
           "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==",
           "requires": {
-            "svg.js": "^2.2.5"
-          }
-        }
-      }
-    },
-    "svg.select.js": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz",
-      "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==",
-      "requires": {
-        "svg.js": "^2.6.5"
-      }
-    },
-    "sweetalert2": {
-      "version": "11.4.20",
-      "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.4.20.tgz",
-      "integrity": "sha512-3LiBFa5yRmTcqM0vGcFmo0EnhmaMSJfzhFpvZoXK6BOY94HIcIUbwhhW+NY5oXOpz5CT21qFAu0fKCUkOc/Pew=="
-    },
-    "symbol-observable": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz",
-      "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==",
-      "dev": true
-    },
-    "tapable": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
-      "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
-      "dev": true
-    },
-    "tar": {
-      "version": "4.4.13",
-      "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
-      "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
-      "dev": true,
-      "requires": {
-        "chownr": "^1.1.1",
-        "fs-minipass": "^1.2.5",
-        "minipass": "^2.8.6",
-        "minizlib": "^1.2.1",
-        "mkdirp": "^0.5.0",
-        "safe-buffer": "^5.1.2",
-        "yallist": "^3.0.3"
-      },
-      "dependencies": {
-        "fs-minipass": {
-          "version": "1.2.7",
-          "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
-          "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
-          "dev": true,
-          "requires": {
-            "minipass": "^2.6.0"
-          }
-        },
-        "minipass": {
-          "version": "2.9.0",
-          "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
-          "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
-          "dev": true,
-          "requires": {
-            "safe-buffer": "^5.1.2",
-            "yallist": "^3.0.0"
-          }
-        },
-        "yallist": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-          "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
-          "dev": true
-        }
-      }
-    },
-    "tar-stream": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
-      "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
-      "dev": true,
-      "requires": {
-        "bl": "^4.0.3",
-        "end-of-stream": "^1.4.1",
-        "fs-constants": "^1.0.0",
-        "inherits": "^2.0.3",
-        "readable-stream": "^3.1.1"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "3.6.0",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-          "dev": true,
-          "requires": {
-            "inherits": "^2.0.3",
-            "string_decoder": "^1.1.1",
-            "util-deprecate": "^1.0.1"
+            "svg.js": "^2.2.5"
           }
         }
       }
     },
-    "tcp-port-used": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.2.tgz",
-      "integrity": "sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==",
-      "dev": true,
+    "svg.select.js": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz",
+      "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==",
       "requires": {
-        "debug": "4.3.1",
-        "is2": "^2.0.6"
+        "svg.js": "^2.6.5"
       }
     },
-    "term-size": {
+    "sweetalert2": {
+      "version": "11.4.20",
+      "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.4.20.tgz",
+      "integrity": "sha512-3LiBFa5yRmTcqM0vGcFmo0EnhmaMSJfzhFpvZoXK6BOY94HIcIUbwhhW+NY5oXOpz5CT21qFAu0fKCUkOc/Pew=="
+    },
+    "symbol-observable": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz",
+      "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==",
+      "dev": true
+    },
+    "tapable": {
       "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz",
-      "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==",
+      "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+      "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
       "dev": true
     },
     "terser": {
@@ -14516,12 +10826,6 @@
         "minimatch": "^3.0.4"
       }
     },
-    "text-hex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
-      "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==",
-      "dev": true
-    },
     "text-table": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
@@ -14540,16 +10844,6 @@
       "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
       "dev": true
     },
-    "timers-ext": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
-      "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==",
-      "dev": true,
-      "requires": {
-        "es5-ext": "~0.10.46",
-        "next-tick": "1"
-      }
-    },
     "tmp": {
       "version": "0.0.33",
       "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
@@ -14564,12 +10858,6 @@
       "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
       "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
     },
-    "to-readable-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
-      "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
-      "dev": true
-    },
     "to-regex-range": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -14595,15 +10883,6 @@
         "punycode": "^2.1.1"
       }
     },
-    "toxic": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/toxic/-/toxic-1.0.1.tgz",
-      "integrity": "sha512-WI3rIGdcaKULYg7KVoB0zcjikqvcYYvcuT6D89bFPz2rVR0Rl0PK6x8/X62rtdLtBKIE985NzVf/auTtGegIIg==",
-      "dev": true,
-      "requires": {
-        "lodash": "^4.17.10"
-      }
-    },
     "tr46": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
@@ -14613,35 +10892,31 @@
         "punycode": "^2.1.0"
       }
     },
-    "traverse": {
-      "version": "0.3.9",
-      "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
-      "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=",
-      "dev": true
-    },
     "tree-kill": {
       "version": "1.2.2",
       "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
       "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
       "dev": true
     },
-    "triple-beam": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
-      "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==",
-      "dev": true
-    },
     "ts-node": {
-      "version": "8.3.0",
-      "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
-      "integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
+      "version": "10.8.2",
+      "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.8.2.tgz",
+      "integrity": "sha512-LYdGnoGddf1D6v8REPtIH+5iq/gTDuZqv2/UJUU7tKjuEU8xVZorBM+buCGNjj+pGEud+sOoM4CX3/YzINpENA==",
       "dev": true,
       "requires": {
+        "@cspotcode/source-map-support": "^0.8.0",
+        "@tsconfig/node10": "^1.0.7",
+        "@tsconfig/node12": "^1.0.7",
+        "@tsconfig/node14": "^1.0.0",
+        "@tsconfig/node16": "^1.0.2",
+        "acorn": "^8.4.1",
+        "acorn-walk": "^8.1.1",
         "arg": "^4.1.0",
+        "create-require": "^1.1.0",
         "diff": "^4.0.1",
         "make-error": "^1.1.1",
-        "source-map-support": "^0.5.6",
-        "yn": "^3.0.0"
+        "v8-compile-cache-lib": "^3.0.1",
+        "yn": "3.1.1"
       }
     },
     "tslib": {
@@ -14716,36 +10991,6 @@
       "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
       "dev": true
     },
-    "tweetsodium": {
-      "version": "0.0.5",
-      "resolved": "https://registry.npmjs.org/tweetsodium/-/tweetsodium-0.0.5.tgz",
-      "integrity": "sha512-T3aXZtx7KqQbutTtBfn+P5By3HdBuB1eCoGviIrRJV2sXeToxv2X2cv5RvYqgG26PSnN5m3fYixds22Gkfd11w==",
-      "dev": true,
-      "requires": {
-        "blakejs": "^1.1.0",
-        "tweetnacl": "^1.0.1"
-      },
-      "dependencies": {
-        "tweetnacl": {
-          "version": "1.0.3",
-          "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz",
-          "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==",
-          "dev": true
-        }
-      }
-    },
-    "type": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
-      "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
-      "dev": true
-    },
-    "type-fest": {
-      "version": "0.8.1",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
-      "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
-      "dev": true
-    },
     "type-is": {
       "version": "1.6.18",
       "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
@@ -14762,19 +11007,10 @@
       "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==",
       "dev": true
     },
-    "typedarray-to-buffer": {
-      "version": "3.1.5",
-      "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
-      "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
-      "dev": true,
-      "requires": {
-        "is-typedarray": "^1.0.0"
-      }
-    },
     "typescript": {
-      "version": "4.6.4",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz",
-      "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==",
+      "version": "4.7.4",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
+      "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
       "dev": true
     },
     "ua-parser-js": {
@@ -14834,64 +11070,12 @@
         "imurmurhash": "^0.1.4"
       }
     },
-    "unique-string": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
-      "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
-      "dev": true,
-      "requires": {
-        "crypto-random-string": "^2.0.0"
-      }
-    },
-    "universal-analytics": {
-      "version": "0.4.23",
-      "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.23.tgz",
-      "integrity": "sha512-lgMIH7XBI6OgYn1woDEmxhGdj8yDefMKg7GkWdeATAlQZFrMrNyxSkpDzY57iY0/6fdlzTbBV03OawvvzG+q7A==",
-      "dev": true,
-      "requires": {
-        "debug": "^4.1.1",
-        "request": "^2.88.2",
-        "uuid": "^3.0.0"
-      }
-    },
-    "universalify": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
-      "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
-      "dev": true
-    },
     "unpipe": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
       "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
       "dev": true
     },
-    "unzipper": {
-      "version": "0.10.11",
-      "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz",
-      "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==",
-      "dev": true,
-      "requires": {
-        "big-integer": "^1.6.17",
-        "binary": "~0.3.0",
-        "bluebird": "~3.4.1",
-        "buffer-indexof-polyfill": "~1.0.0",
-        "duplexer2": "~0.1.4",
-        "fstream": "^1.0.12",
-        "graceful-fs": "^4.2.2",
-        "listenercount": "~1.0.1",
-        "readable-stream": "~2.3.6",
-        "setimmediate": "~1.0.4"
-      },
-      "dependencies": {
-        "bluebird": {
-          "version": "3.4.7",
-          "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz",
-          "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=",
-          "dev": true
-        }
-      }
-    },
     "update-browserslist-db": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz",
@@ -14901,78 +11085,6 @@
         "picocolors": "^1.0.0"
       }
     },
-    "update-notifier": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz",
-      "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==",
-      "dev": true,
-      "requires": {
-        "boxen": "^4.2.0",
-        "chalk": "^3.0.0",
-        "configstore": "^5.0.1",
-        "has-yarn": "^2.1.0",
-        "import-lazy": "^2.1.0",
-        "is-ci": "^2.0.0",
-        "is-installed-globally": "^0.3.1",
-        "is-npm": "^4.0.0",
-        "is-yarn-global": "^0.3.0",
-        "latest-version": "^5.0.0",
-        "pupa": "^2.0.1",
-        "semver-diff": "^3.1.1",
-        "xdg-basedir": "^4.0.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "dev": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
-          "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-          "dev": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-          "dev": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-          "dev": true
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
     "uri-js": {
       "version": "4.4.1",
       "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -14982,29 +11094,6 @@
         "punycode": "^2.1.0"
       }
     },
-    "url-join": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz",
-      "integrity": "sha1-HbSK1CLTQCRpqH99l73r/k+x48g=",
-      "dev": true
-    },
-    "url-parse-lax": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
-      "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
-      "dev": true,
-      "requires": {
-        "prepend-http": "^2.0.0"
-      },
-      "dependencies": {
-        "prepend-http": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
-          "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
-          "dev": true
-        }
-      }
-    },
     "util-deprecate": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -15023,10 +11112,10 @@
       "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
       "dev": true
     },
-    "valid-url": {
-      "version": "1.0.9",
-      "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz",
-      "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=",
+    "v8-compile-cache-lib": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
+      "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
       "dev": true
     },
     "validate-npm-package-license": {
@@ -15071,12 +11160,6 @@
       "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==",
       "dev": true
     },
-    "walkdir": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.4.1.tgz",
-      "integrity": "sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ==",
-      "dev": true
-    },
     "watchpack": {
       "version": "2.4.0",
       "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
@@ -15110,6 +11193,11 @@
         "defaults": "^1.0.3"
       }
     },
+    "web-streams-polyfill": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz",
+      "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q=="
+    },
     "webdriver-js-extender": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz",
@@ -15741,117 +11829,12 @@
       "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
       "dev": true
     },
-    "wide-align": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
-      "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "string-width": "^1.0.2 || 2"
-      }
-    },
-    "widest-line": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
-      "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
-      "dev": true,
-      "requires": {
-        "string-width": "^4.0.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-          "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
-          "dev": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-          "dev": true
-        },
-        "string-width": {
-          "version": "4.2.0",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
-          "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^8.0.0",
-            "is-fullwidth-code-point": "^3.0.0",
-            "strip-ansi": "^6.0.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-          "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^5.0.0"
-          }
-        }
-      }
-    },
     "wildcard": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz",
       "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==",
       "dev": true
     },
-    "winston": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz",
-      "integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==",
-      "dev": true,
-      "requires": {
-        "@dabh/diagnostics": "^2.0.2",
-        "async": "^3.1.0",
-        "is-stream": "^2.0.0",
-        "logform": "^2.2.0",
-        "one-time": "^1.0.0",
-        "readable-stream": "^3.4.0",
-        "stack-trace": "0.0.x",
-        "triple-beam": "^1.3.0",
-        "winston-transport": "^4.4.0"
-      },
-      "dependencies": {
-        "async": {
-          "version": "3.2.0",
-          "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
-          "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==",
-          "dev": true
-        },
-        "is-stream": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
-          "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
-          "dev": true
-        },
-        "readable-stream": {
-          "version": "3.6.0",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-          "dev": true,
-          "requires": {
-            "inherits": "^2.0.3",
-            "string_decoder": "^1.1.1",
-            "util-deprecate": "^1.0.1"
-          }
-        }
-      }
-    },
-    "winston-transport": {
-      "version": "4.4.0",
-      "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz",
-      "integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==",
-      "dev": true,
-      "requires": {
-        "readable-stream": "^2.3.7",
-        "triple-beam": "^1.2.0"
-      }
-    },
     "wrap-ansi": {
       "version": "6.2.0",
       "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
@@ -15926,30 +11909,12 @@
       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
       "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
     },
-    "write-file-atomic": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
-      "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
-      "dev": true,
-      "requires": {
-        "imurmurhash": "^0.1.4",
-        "is-typedarray": "^1.0.0",
-        "signal-exit": "^3.0.2",
-        "typedarray-to-buffer": "^3.1.5"
-      }
-    },
     "ws": {
       "version": "8.8.0",
       "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz",
       "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==",
       "dev": true
     },
-    "xdg-basedir": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
-      "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
-      "dev": true
-    },
     "xml2js": {
       "version": "0.4.23",
       "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
@@ -15966,18 +11931,6 @@
       "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
       "dev": true
     },
-    "xmldom": {
-      "version": "0.1.31",
-      "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz",
-      "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==",
-      "dev": true
-    },
-    "xtend": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
-      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
-      "dev": true
-    },
     "y18n": {
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
@@ -16099,30 +12052,6 @@
       "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
       "dev": true
     },
-    "zip-stream": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz",
-      "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==",
-      "dev": true,
-      "requires": {
-        "archiver-utils": "^2.1.0",
-        "compress-commons": "^2.1.1",
-        "readable-stream": "^3.4.0"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "3.6.0",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-          "dev": true,
-          "requires": {
-            "inherits": "^2.0.3",
-            "string_decoder": "^1.1.1",
-            "util-deprecate": "^1.0.1"
-          }
-        }
-      }
-    },
     "zone.js": {
       "version": "0.11.6",
       "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.6.tgz",
diff --git a/package.json b/package.json
index c0ebf4c..52b2280 100644
--- a/package.json
+++ b/package.json
@@ -25,16 +25,17 @@
     "@angular/platform-browser-dynamic": "^14.0.5",
     "@angular/router": "^14.0.5",
     "@auth0/auth0-angular": "^1.10.0",
-    "angular-walkthrough": "^0.8.2",
+    "angular-walkthrough": "^0.9.8",
     "apexcharts": "^3.35.3",
     "bootstrap": "^5.1.3",
     "inquirer-autocomplete-prompt": "^2.0.0",
     "karma-jasmine-html-reporter": "^2.0.0",
     "lottie-web": "^5.9.6",
+    "ng-apexcharts": "^1.7.1",
     "ng-waveform": "^0.2.1",
-    "ng2-pdf-viewer": "^6.4.1",
-    "ngx-countdown": "^11.0.3",
-    "ngx-lottie": "^6.4.0",
+    "ng2-pdf-viewer": "^9.0.0",
+    "ngx-countdown": "^14.0.0",
+    "ngx-lottie": "^8.2.0",
     "ngx-walkthrough": "^0.3.2",
     "open": "^8.4.0",
     "recordrtc": "^5.6.2",
@@ -50,22 +51,20 @@
     "@angular/cli": "^14.0.5",
     "@angular/compiler-cli": "^14.0.5",
     "@angular/language-service": "^14.0.5",
-    "@types/jasmine": "~3.6.0",
+    "@types/jasmine": "^4.0.3",
     "@types/jasminewd2": "^2.0.10",
     "@types/node": "^18.0.3",
     "codelyzer": "^6.0.0",
-    "firebase-tools": "^8.0.0",
     "fuzzy": "^0.1.3",
-    "inquirer": "^6.2.2",
-    "jasmine-core": "~3.6.0",
-    "jasmine-spec-reporter": "~5.0.0",
+    "jasmine-core": "^4.2.0",
+    "jasmine-spec-reporter": "^7.0.0",
     "karma": "~6.4.0",
-    "karma-chrome-launcher": "~3.1.0",
+    "karma-chrome-launcher": "^3.1.1",
     "karma-coverage-istanbul-reporter": "~3.0.2",
-    "karma-jasmine": "~4.0.0",
+    "karma-jasmine": "^5.1.0",
     "protractor": "~7.0.0",
-    "ts-node": "~8.3.0",
+    "ts-node": "^10.8.2",
     "tslint": "~6.1.0",
-    "typescript": "~4.6.4"
+    "typescript": "^4.7.4"
   }
 }
diff --git a/src/app/components/unpacking-page/unpacking-page.component.html b/src/app/components/unpacking-page/unpacking-page.component.html
index 24716c5..68a1222 100644
--- a/src/app/components/unpacking-page/unpacking-page.component.html
+++ b/src/app/components/unpacking-page/unpacking-page.component.html
@@ -712,11 +712,6 @@
         </mat-tab>
         <mat-tab label="Seventh">
           <h2>Cultural Proficiency Continuum Q-Sort: Unpacking your Reactions</h2>
-          <!-- <p>Below are the results of the CPCQ forms filled by you. The numbers that you assigned to each vignette within each of the five categories to the right of the corresponding letter—A, B, C, D, E, F—in the spaces are provided below in
-                        the rating guide. Ideally, the final results in each row would read 1, 2, 3, 4, 5, 6, but because Cultural Proficiency is a fluid and dynamic phenomenon, these numbers may not align in numerical order. The final step in your analysis
-                        is to locate the culturally proficient interactions, which are 2 or more points higher or lower than the ideal number by each letter. For example, if a row reads 2, 1, 5, 4, 6, 3, then the numbers 5 and 3 are bold and clickable.
-                        Each number you bolded in each row represents an opportunity for inquiry and Dialogic for that particular culturally proficient behavior. Please click on the bolded numbers to unpack your views. Remember, this is not a judgment,
-                        but rather an opportunity for you to make inquiries and have a conversation about the sociocultural interactions that take place within majority-minority US Prek-12 schools. </p> -->
           <p>
             <span
               ><b>Directions: </b> Each bolded number represents an opportunity for you to unpack your reaction to the
@@ -870,44 +865,8 @@
                   </td>
                 </tr>
               </tbody>
-              <!-- <tbody *ngFor="let row of formValues; let i = index">
-                                <tr>
-                                    <td> {{row[0]}} </td>
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="boldList[i][0] >2 && finalList1[i][0] == 'True'" (click)="openDialog(i,0) "> {{row[1]}} </td>
-                                    <td style="font-weight: bold;" *ngIf="boldList[i][0] >2 && finalList1[i][0] == 'False'" (click)="openDialog(i,0) "> {{row[1]}} </td>
-                                    <td *ngIf="boldList[i][0] <=2"> {{row[1]}} </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="boldList[i][1] >3 && finalList1[i][1] == 'True'" (click)="openDialog(i,1) "> {{row[2]}} </td>
-                                    <td style="font-weight: bold;" *ngIf="boldList[i][1] >3 && finalList1[i][1] == 'False'" (click)="openDialog(i,1) "> {{row[2]}} </td>
-                                    <td *ngIf="boldList[i][1] <=3"> {{row[2]}} </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="(boldList[i][2] >4 || boldList[i][2] == 1) && finalList1[i][2] == 'True'" (click)="openDialog(i,2) "> {{row[3]}} </td>
-                                    <td style="font-weight: bold;" *ngIf="(boldList[i][2] >4 || boldList[i][2] == 1) && finalList1[i][2] == 'False'" (click)="openDialog(i,2) "> {{row[3]}} </td>
-                                    <td *ngIf="boldList[i][2] <=4 && boldList[i][2] != 1"> {{row[3]}} </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="(boldList[i][3] >5 || boldList[i][3] <4) && finalList1[i][3] == 'True'" (click)="openDialog(i,3) "> {{row[4]}} </td>
-                                    <td style="font-weight: bold;" *ngIf="(boldList[i][3] >5 || boldList[i][3] <4) && finalList1[i][3] == 'False'" (click)="openDialog(i,3) "> {{row[4]}} </td>
-                                    <td *ngIf="boldList[i][3] <=5 && boldList[i][3]>=4"> {{row[4]}} </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="boldList[i][4] <4 && finalList1[i][4] == 'True'" (click)="openDialog(i,4) "> {{row[5]}} </td>
-                                    <td style="font-weight: bold;" *ngIf="boldList[i][4] <4 && finalList1[i][4] == 'False'" (click)="openDialog(i,4) "> {{row[5]}} </td>
-                                    <td *ngIf="boldList[i][4]>=4"> {{row[5]}} </td>
-
-                                    <td style="font-weight: bold; background-color:#face70;" *ngIf="boldList[i][5] <5 && finalList1[i][5] == 'True'" (click)="openDialog(i,5) "> {{row[6]}} </td>
-                                    <td style="font-weight: bold;" *ngIf="boldList[i][5] <5 && finalList1[i][5] == 'False'" (click)="openDialog(i,5) "> {{row[6]}} </td>
-                                    <td *ngIf="boldList[i][5]>=5"> {{row[6]}} </td>
-                                </tr>
-                            </tbody> -->
             </table>
           </div>
-          <!-- <div style="text-align:center;">
-                        <button mat-raised-button color="primary" (click)="initiateRecording()" *ngIf="!recording"> Start Recording </button>
-                        <button mat-raised-button color="primary" (click)="stopRecording()" class="btn btn-danger" *ngIf="recording"> Stop Recording </button>
-                        <p></p>
-                        <audio controls="" *ngIf="url">
-                        <source [src]="sanitize(url)" type="audio/wav">
-                        </audio>
-                    </div> -->
         </mat-tab>
         <mat-tab>
           <h2>Cultural Proficiency Continuum Q-Sort: Additional Inquires and Reflections</h2>
@@ -1020,18 +979,6 @@
             </div>
           </div>
         </mat-tab>
-        <!-- <mat-tab label="Eight">
-                    <h2>Sample of Audio Answer</h2>
-                    <p>Please press the button below to start recording your answer.</p>
-                    <div style="text-align:center;margin-top: 200px;">
-                        <button mat-raised-button color="primary" (click)="initiateRecording()" *ngIf="!recording"> Start Recording </button>
-                        <button mat-raised-button color="primary" (click)="stopRecording()" class="btn btn-danger" *ngIf="recording"> Stop Recording </button>
-                        <p></p>
-                        <audio controls="" *ngIf="url">
-                        <source [src]="sanitize(url)" type="audio/wav">
-                        </audio>
-                    </div>
-                </mat-tab> -->
       </mat-tab-group>
     </mat-card-content>
 
diff --git a/src/app/components/unpacking-page/unpacking-page.component.ts b/src/app/components/unpacking-page/unpacking-page.component.ts
index d088be0..a5c16fd 100644
--- a/src/app/components/unpacking-page/unpacking-page.component.ts
+++ b/src/app/components/unpacking-page/unpacking-page.component.ts
@@ -72,8 +72,6 @@ export class UnpackingPageComponent implements OnInit, AfterViewInit {
 
   finalFeedbackForm: UntypedFormGroup;
 
-  //arrays of data getting from the backend
-
   attitude: any;
   empathy: any;
   policy: any;
diff --git a/src/index.html b/src/index.html
index 61b1e05..f2dce80 100644
--- a/src/index.html
+++ b/src/index.html
@@ -1,39 +1,29 @@
-<!doctype html>
+<!DOCTYPE html>
 <html lang="en">
-
-<head>
-    <meta charset="utf-8">
+  <head>
+    <meta charset="utf-8" />
     <title>CPCDP</title>
-    <base href="/">
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <link rel="icon" type="image/x-icon" href="favicon.ico">
-    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
-    <link rel="preconnect" href="https://fonts.gstatic.com">
-    <link href="https://fonts.googleapis.com/css2?family=Big+Shoulders+Display:wght@700&display=swap" rel="stylesheet">
-    <link rel="preconnect" href="https://fonts.gstatic.com">
-    <link href="https://fonts.googleapis.com/css2?family=Big+Shoulders+Display:wght@700&family=Lemonada:wght@300&family=Playfair+Display:wght@600&display=swap" rel="stylesheet">
-    <link rel="preconnect" href="https://fonts.gstatic.com">
-    <link rel="preconnect" href="https://fonts.gstatic.com">
-    <link href="https://fonts.googleapis.com/css2?family=Newsreader:wght@300;400;500&display=swap" rel="stylesheet">
-    <!-- Required meta tags -->
-    <!-- <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
-    <link href="https://fonts.googleapis.com/css?family=Roboto:300,400&display=swap" rel="stylesheet">
-
-    <link rel="stylesheet" href="fonts/icomoon/style.css">
-
-    <link rel="stylesheet" href="css/owl.carousel.min.css">
+    <base href="/" />
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
+    <link rel="icon" type="image/x-icon" href="favicon.ico" />
+    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" />
+    <link rel="preconnect" href="https://fonts.gstatic.com" />
+    <link
+      href="https://fonts.googleapis.com/css2?family=Big+Shoulders+Display:wght@700&display=swap"
+      rel="stylesheet"
+    />
+    <link rel="preconnect" href="https://fonts.gstatic.com" />
+    <link
+      href="https://fonts.googleapis.com/css2?family=Big+Shoulders+Display:wght@700&family=Lemonada:wght@300&family=Playfair+Display:wght@600&display=swap"
+      rel="stylesheet"
+    />
+    <link rel="preconnect" href="https://fonts.gstatic.com" />
+    <link rel="preconnect" href="https://fonts.gstatic.com" />
+    <link href="https://fonts.googleapis.com/css2?family=Newsreader:wght@300;400;500&display=swap" rel="stylesheet" />
+  </head>
 
-    <!-- Bootstrap CSS -->
-    <!-- <link rel="stylesheet" href="css/bootstrap.min.css"> -->
-
-    <!-- Style -->
-    <!-- <link rel="stylesheet" href="css/style.css">   -->
-</head>
-
-<body>
+  <body>
     <script src="https://unpkg.com/wavesurfer.js"></script>
     <app-root></app-root>
-</body>
-
-</html>
\ No newline at end of file
+  </body>
+</html>
-- 
GitLab


From cee17cd2346dcb93efd1d8c0d7bf54a1e81e3037 Mon Sep 17 00:00:00 2001
From: ramesh <rdramesh2009@gmail.com>
Date: Mon, 11 Jul 2022 18:15:06 -0400
Subject: [PATCH 23/23] guards implemented

---
 angular.json                                  | 20 +++-------
 src/app/app-routing.module.ts                 | 28 +++++++-------
 .../dashboard/dashboard.component.html        | 20 +++-------
 .../dashboard/dashboard.component.ts          |  1 -
 .../components/header/header.component.html   |  6 ++-
 src/app/components/header/header.component.ts |  1 +
 src/app/guards/landing-page.guard.ts          | 27 +++++++------
 src/app/guards/role.guard.ts                  | 38 +++++++++----------
 8 files changed, 64 insertions(+), 77 deletions(-)

diff --git a/angular.json b/angular.json
index e979da9..9b5cc71 100644
--- a/angular.json
+++ b/angular.json
@@ -19,17 +19,13 @@
             "polyfills": "src/polyfills.ts",
             "tsConfig": "tsconfig.app.json",
             "aot": true,
-            "assets": [
-              "src/favicon.ico",
-              "src/assets"
-            ],
+            "assets": ["src/favicon.ico", "src/assets"],
             "styles": [
               "src/styles.css",
+              "./node_modules/bootstrap/dist/css/bootstrap.min.css",
               "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css"
             ],
-            "scripts": [
-              "node_modules/apexcharts/dist/apexcharts.min.js"
-            ]
+            "scripts": ["node_modules/apexcharts/dist/apexcharts.min.js"]
           },
           "configurations": {
             "production": {
@@ -85,14 +81,8 @@
             "polyfills": "src/polyfills.ts",
             "tsConfig": "tsconfig.spec.json",
             "karmaConfig": "karma.conf.js",
-            "assets": [
-              "src/favicon.ico",
-              "src/assets"
-            ],
-            "styles": [
-              "src/styles.css",
-              "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css"
-            ],
+            "assets": ["src/favicon.ico", "src/assets"],
+            "styles": ["src/styles.css", "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css"],
             "scripts": []
           }
         },
diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index 4a90d5e..3e8b9a8 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -13,25 +13,27 @@ import { RegisterComponentComponent } from "./components/register-component/regi
 import { ResultDashboardComponent } from "./components/result-dashboard/result-dashboard.component";
 import { ScorePageComponent } from "./components/score-page/score-page.component";
 import { UnpackingPageComponent } from "./components/unpacking-page/unpacking-page.component";
+import { LandingPageGuard } from "./guards/landing-page.guard";
+import { RoleGuard } from "./guards/role.guard";
 
 const routes: Routes = [
-  { path: "", component: HomePageComponent },
-  { path: "preSurvey", component: PreSurveyComponent },
-  { path: "pcqform", component: CpcqFormComponent },
-  { path: "postSurvey", component: PostSurveyComponent },
-  { path: "dashboard", component: DashboardComponent },
-  { path: "result", component: ResultDashboardComponent },
+  { path: "", canActivate: [LandingPageGuard], component: HomePageComponent },
   { path: "about", component: AboutCompComponent },
-  { path: "register", component: RegisterComponentComponent },
-  { path: "score", component: ScorePageComponent },
-  { path: "graph", component: GraphPageComponent },
-  { path: "final", component: FinalDashboardComponent },
-  { path: "unpacking", component: UnpackingPageComponent },
-  { path: "finalFeedback", component: FinalFeedbackComponent },
+  { path: "preSurvey", canActivate: [RoleGuard], component: PreSurveyComponent },
+  { path: "pcqform", canActivate: [RoleGuard], component: CpcqFormComponent },
+  { path: "postSurvey", canActivate: [RoleGuard], component: PostSurveyComponent },
+  { path: "dashboard", canActivate: [RoleGuard], component: DashboardComponent },
+  { path: "result", canActivate: [RoleGuard], component: ResultDashboardComponent },
+  { path: "register", canActivate: [RoleGuard], component: RegisterComponentComponent },
+  { path: "score", canActivate: [RoleGuard], component: ScorePageComponent },
+  { path: "graph", canActivate: [RoleGuard], component: GraphPageComponent },
+  { path: "final", canActivate: [RoleGuard], component: FinalDashboardComponent },
+  { path: "unpacking", canActivate: [RoleGuard], component: UnpackingPageComponent },
+  { path: "finalFeedback", canActivate: [RoleGuard], component: FinalFeedbackComponent },
 ];
 
 @NgModule({
-  imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })],
+  imports: [RouterModule.forRoot(routes, { relativeLinkResolution: "legacy" })],
   exports: [RouterModule],
 })
 export class AppRoutingModule {}
diff --git a/src/app/components/dashboard/dashboard.component.html b/src/app/components/dashboard/dashboard.component.html
index 1cdb6e2..4501628 100644
--- a/src/app/components/dashboard/dashboard.component.html
+++ b/src/app/components/dashboard/dashboard.component.html
@@ -1,16 +1,14 @@
 <div class="home-wrap">
-  <!-- <div class="row col-lg-12"> -->
-  <!-- <div class="col-lg-6"> -->
-  <div class="col-lg-12" *ngIf="profile">
+  <div class="col-lg-12" *ngIf="currentUser">
     <div class="row col-lg-12">
       <div class="col-lg-6">
         <mat-card>
-          <img class="profileImg" src="../../assets/profile.jpg" />
+          <img class="profileImg" src="{{ currentUser?.picture }}" />
           <mat-card-content>
             <h2 style="width: 100%; text-align: center">PROFILE</h2>
-            <p>Name: John Doe</p>
-            <p style="margin-top: -10px">Email : john@gmail.com</p>
-            <p style="margin-top: -10px">Phone : (757)-339-1234</p>
+            <p>Name: {{ currentUser?.name }}</p>
+            <p style="margin-top: -10px">Email : {{ currentUser?.email }}</p>
+            <p *ngIf="currentUser?.phone" style="margin-top: -10px">Phone : {{ currentUser?.phone }}</p>
           </mat-card-content>
         </mat-card>
       </div>
@@ -50,7 +48,7 @@
     </div>
   </div>
 
-  <div class="row outer" *ngIf="!profile">
+  <div class="row outer" *ngIf="!currentUser">
     <div class="col-lg-5 profile">
       <mat-card>
         <div class="row col-lg-12">
@@ -72,9 +70,7 @@
             </div>
             <br />
             <p (click)="openDialog()" style="text-align: center; width: 100%">Choose Your Avatar</p>
-
             <br />
-            <!-- <img class="profileImg" src="../../assets/profile.jpg"> -->
           </div>
           <div class="col-lg-8">
             <mat-card-content>
@@ -153,7 +149,6 @@
       </mat-card>
     </div>
   </div>
-  <!-- </div> -->
 
   <div class="content">
     <mat-card>
@@ -170,7 +165,6 @@
           of the school during which you will observe a variety of culturally proficient interactions. While you are
           completing CPCQ, consider how you may react to these interactions during your tour.
         </p>
-        <!-- <p><span style="font-weight: bold;">Note:</span> Your data and responses are confidential and will not be used for research or published without your signed consent. Thank you for your engagement and participation.</p> -->
 
         <ng-lottie
           speed="0.1"
@@ -184,6 +178,4 @@
       </mat-card-actions>
     </mat-card>
   </div>
-
-  <!-- </div> -->
 </div>
diff --git a/src/app/components/dashboard/dashboard.component.ts b/src/app/components/dashboard/dashboard.component.ts
index cb6211f..ad05b6e 100644
--- a/src/app/components/dashboard/dashboard.component.ts
+++ b/src/app/components/dashboard/dashboard.component.ts
@@ -55,7 +55,6 @@ export class DashboardComponent implements OnInit {
   statusIcons = ["edit", "developer_board", "add_comment", "edit", "bar_chart", "chrome_reader_mode"];
   currentStatus = 0;
   selectedSatus = 0;
-  profile = false;
   avatarLink: string;
   profileDetails: any;
   userName: any;
diff --git a/src/app/components/header/header.component.html b/src/app/components/header/header.component.html
index 5fe9c21..2a7cf42 100644
--- a/src/app/components/header/header.component.html
+++ b/src/app/components/header/header.component.html
@@ -14,7 +14,8 @@
       </button>
     </mat-toolbar>
     <mat-nav-list>
-      <a routerLink="/" mat-list-item>HOME</a>
+      <a *ngIf="!currentUser" routerLink="/" mat-list-item>HOME</a>
+      <a *ngIf="currentUser" routerLink="/dashboard" mat-list-item>DASHBOARD</a>
       <a routerLink="/about" mat-list-item>ABOUT US</a>
       <a (click)="loginWithRedirect()" *ngIf="!currentUser" mat-list-item>LOGIN</a>
       <a (click)="logout()" *ngIf="currentUser" mat-list-item>LOGOUT</a>
@@ -48,7 +49,8 @@
         *ngIf="(!(isHandset | async) && !(isTablet | async)) || (isMedium | async)"
         style="margin-right: 10px; margin-left: auto"
       >
-        <a routerLink="/" id="home" (click)="activate('home')">HOME</a>
+        <a *ngIf="!currentUser" routerLink="/" id="home" (click)="activate('home')">HOME</a>
+        <a *ngIf="currentUser" routerLink="/dashboard" id="dashboard" (click)="activate('dashboard')">DASHBOARD</a>
         <a routerLink="/about" id="about" (click)="activate('about')">ABOUT US</a>
         <a (click)="loginWithRedirect()" id="login" *ngIf="!currentUser" (click)="activate('login')">LOGIN</a>
         <a (click)="logout()" id="logout" *ngIf="currentUser" (click)="activate('login')">LOGOUT</a>
diff --git a/src/app/components/header/header.component.ts b/src/app/components/header/header.component.ts
index d35acf4..7272b3e 100644
--- a/src/app/components/header/header.component.ts
+++ b/src/app/components/header/header.component.ts
@@ -61,6 +61,7 @@ export class HeaderComponent implements OnInit {
       return;
     }
     (<HTMLInputElement>document.getElementById("home")).style.backgroundColor = "none";
+    (<HTMLInputElement>document.getElementById("dashboard")).style.backgroundColor = "none";
     (<HTMLInputElement>document.getElementById("about")).style.backgroundColor = "none";
     (<HTMLInputElement>document.getElementById("login")).style.backgroundColor = "none";
     (<HTMLInputElement>document.getElementById("logout")).style.backgroundColor = "none";
diff --git a/src/app/guards/landing-page.guard.ts b/src/app/guards/landing-page.guard.ts
index 2f3bcd8..4fd48b7 100644
--- a/src/app/guards/landing-page.guard.ts
+++ b/src/app/guards/landing-page.guard.ts
@@ -1,24 +1,29 @@
 import { Injectable } from "@angular/core";
 import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from "@angular/router";
-import { UserService } from "src/app/core/services/api/user.service";
-import { AuthenticatedRoutes } from "../variables/route_path.variables";
+import { LoginService } from "../services/login.service";
 
 @Injectable({
   providedIn: "root",
 })
 export class LandingPageGuard implements CanActivate {
-  constructor(private userService: UserService, private _router: Router) {}
+  constructor(private loginService: LoginService, private _router: Router) {}
 
   canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
     return new Promise((resolve, reject) => {
-      const currentUserData = this.userService.userIsLoggedIn();
-      if (currentUserData) {
-        this._router.navigate([AuthenticatedRoutes.home]);
-        this.userService.setCurrentUserData(currentUserData);
-        return resolve(false);
-      } else {
-        return resolve(true);
-      }
+      this.loginService.getToken().subscribe({
+        next: (token) => {
+          if (token) {
+            resolve(false);
+            this._router.navigate(["dashboard"]);
+          } else {
+            resolve(true);
+          }
+        },
+        error: (error) => {
+          console.log(error);
+          resolve(true);
+        },
+      });
     });
   }
 }
diff --git a/src/app/guards/role.guard.ts b/src/app/guards/role.guard.ts
index e6de8be..6270c95 100644
--- a/src/app/guards/role.guard.ts
+++ b/src/app/guards/role.guard.ts
@@ -1,34 +1,30 @@
 import { Injectable } from "@angular/core";
 import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from "@angular/router";
-import { UserService } from "src/app/core/services/api/user.service";
-import { MapUserRole } from "src/app/types/user.type";
-import { AuthenticatedRoutes, NonAuthenticatedRoutes } from "../variables/route_path.variables";
+import { LoginService } from "../services/login.service";
 
 @Injectable({
   providedIn: "root",
 })
 export class RoleGuard implements CanActivate {
-  constructor(private userService: UserService, private _router: Router) {}
+  constructor(private loginService: LoginService, private _router: Router) {}
 
   canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
-    // TODO: for now we were storing currentUserData in local storage,
-    // but later call the data from the backend by storing token or similar
     return new Promise((resolve, reject) => {
-      const currentUserData = this.userService.userIsLoggedIn();
-      if (currentUserData) {
-        let roles = route.data.roles as Array<string>;
-        const currentUserRole = MapUserRole[currentUserData?.roleid!];
-        if (currentUserRole && roles.includes(currentUserRole)) {
-          this.userService.setCurrentUserData(currentUserData);
-          return resolve(true);
-        } else {
-          this._router.navigate([AuthenticatedRoutes.home]);
-          return resolve(false);
-        }
-      } else {
-        this.userService.logout();
-        this._router.navigate([NonAuthenticatedRoutes.landingPage]);
-      }
+      this.loginService.getToken().subscribe({
+        next: (token) => {
+          console.log(token);
+          // implement role check functionalities
+          if (token) {
+            resolve(true);
+          } else {
+            resolve(false);
+          }
+        },
+        error: (error) => {
+          console.log(error);
+          resolve(false);
+        },
+      });
     });
   }
 }
-- 
GitLab