PageSourceSearch

https://vidyantu.in/

html vidyantu.in collected 2026-09-24 14:22:36 UTC 88,526 bytes, 1,486 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en-US" prefix="og: http://ogp.me/ns#">
3    <head>
4        <base href="/">
5        <meta charset="utf-8">
6        <meta name="viewport" content="width=device-width, initial-scale=1">
7        <link rel="icon" href="/static/media/wl_client_images/89329c89e5c74be588f06e7369191f09.png" />
8        
9        <meta name="google-signin-client_id" content="980830753745-fs6iurtqnfcvjk9fsasnto63ol268bnu.apps.googleusercontent.com">
10        
11        <meta name="author" content="Vidyantu"/>
12        <meta name="language" content="English"/>
13        <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'">
14        <!-- facebook meta start -->
15        
15<script src="https://accounts.google.com/gsi/client" async defer></script>
15
16        
17        
18        <meta property="fb:app_id" content="1487792121625210" />
19        
20        <!-- facebook meta end -->
21        <!-- twitter meta start -->
22        
23        <link rel="manifest" href="/whitelabel-manifest.json">
24        
25        
26        <!-- twitter meta end -->
27        <link defer rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto|Roboto Slab|PT+Sans|Montserrat" media="print" onload="this.media='all'" crossorigin="anonymous">
28        <link defer rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" crossorigin="anonymous">
29        <link defer rel="stylesheet" href="https://use.fontawesome.com/releases/v5.12.1/css/all.css" crossorigin="anonymous">
30        <link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet" crossorigin="anonymous">
31        
31<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
31
32        
32<script src="/static/node_modules/jquery-cookie/jquery-cookie.min.js?v=23d834419c7ccced820e192be7081228"></script>
32
33        
33<script defer src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
33
34        
34<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js" defer></script>
34
35        
35<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular-animate.min.js" defer></script>
35
36        
36<script defer type="text/javascript" src="/static/node_modules/lozad/lozad.min.js?v=dc99de0e57cfb5b77a5fea9bf7c8adaa"></script>
36
37        
37<script type="text/javascript"></script>
37
38        <link rel="stylesheet" href="/static/css/base.css?v=e1fff949c7f169adc391a1ffd1beedcf">
39        <!-- Mo Engage Start -->
40        
40<script>
41            (function(i,s,o,g,r,a,m,n){i.moengage_object=r;t={};q=function(f){return function(){(i.moengage_q=i.moengage_q||[]).push({f:f,a:arguments})}};f=['track_event','add_user_attribute','add_first_name','add_last_name','add_email','add_mobile','add_user_name','add_gender','add_birthday','destroy_session','add_unique_user_id','moe_events','call_web_push','track','location_type_attribute'],h={onsite:["getData","registerCallback"]};for(k in f){t[f[k]]=q(f[k])}for(k in h)for(l in h[k]){null==t[k]&&(t[k]={}),t[k][h[k][l]]=q(k+"."+h[k][l])}a=s.createElement(o);m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m);i.moe=i.moe||function(){n=arguments[0];return t};a.onload=function(){if(n){i[r]=moe(n)}}})(window,document,'script','https://cdn.moengage.com/webpush/moe_webSdk.min.latest.js','Moengage')
42
43            
44            Moengage = moe({
45                app_id:"",
46                debug_logs: 0
47            });
48            
49            window.addEventListener("MOE_LIFECYCLE",function(e){
50                if (e.detail.name === "SDK_INITIALIZED") {
51                    // Due to some reason "Moengage.track_event" is not working properly and all the functionalities are getting broken which rely on its "Promise" to get resolved.
52                    // Therefore we are over-writing the functionality of "Moengage.track_event" as a temporary hacky solution while investigation is being done.
53                    Moengage.track_event = (event_name, attributes_ds) => {
54                        return new Promise(function(resolve, reject) {
55                            resolve();
56                        });
57                    };
58                }
59            });
60        </script>
60
61        <!-- Mo Engage End -->
62        
62<script src="/static/js/menu_desktop.js?v=25546c08b23205ecd61024f03b95caef" defer></script>
62
63        
64        
65
66
67<title>Vidyantu</title>
68<meta property="og:title" content="Vidyantu"/>
69<meta property="og:image:alt" content="Vidyantu"/>
70<meta name="twitter:title" content="Vidyantu"/>
71
72
73<meta name="description" content="Vidyantu - the top choice for preparation for K1 to K12, CBSE, ICSE, JEE, NEET, UPSC, GPSC, IBPS, CSIR-NET, UGC-NET and all types of government and competitive exams."/>
74
75<meta name="author" content="Vidyantu"/>
76<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
77<meta name="language" content="English, Hindi"/>
78<meta name="classification" content=" Vidyantu’s Test Series have a great number of tests for you to attempt and polish your preparation. Prepare for your exams with us."/>
79<meta property="og:locale" content="en_US" />
80<meta property="og:type" content="image"/>
81<meta property="og:url" content="https://vidyantu.in"/>
82<meta property="og:image" content=""/>
83
84<meta name="og:description" content="Vidyantu - the top choice for preparation for K1 to K12, CBSE, ICSE, JEE, NEET, UPSC, GPSC, IBPS, CSIR-NET, UGC-NET and all types of government and competitive exams."/>
85
86<meta property="og:site_name" content=""/>
87<meta name="twitter:card" content="summary"/>
88<meta name="twitter:site" content=""/>
89
90<meta name="twitter:description" content="Vidyantu - the top choice for preparation for K1 to K12, CBSE, ICSE, JEE, NEET, UPSC, GPSC, IBPS, CSIR-NET, UGC-NET and all types of government and competitive exams."/>
91
92<meta name="twitter:image:src" content=""/>
93
94
95<style>
96#iframe_template2_preview {
97border: unset;
98margin: 0;
99padding: 0;
100}
101footer {
102margin-top: -5px;
103}
104</style>
105
106        
107        
107<script>
108            
vendor: 163 bytes, lines 108-111
108window.dataLayer = window.dataLayer || [];
109            function gtag(){dataLayer.push(arguments);}
110            gtag('js', new Date());
111            gtag('config', '
111UA-77283231-6
vendor: 12 bytes, lines 111-112
111');
112        
112</script>
112
113        
114        
115        
116        <!-- Global site tag (gtag.js) - Google Analytics (whitelabel) -->
vendor: 72 bytes, lines 116-117
116
117        <script async src="https://www.googletagmanager.com/gtag/js?id=
117G-RKSQ2SW649
vendor: 20 bytes, lines 117-118
117"></script>
118        
118<script>
119            
vendor: 163 bytes, lines 119-122
119window.dataLayer = window.dataLayer || [];
120            function gtag(){dataLayer.push(arguments);}
121            gtag('js', new Date());
122            gtag('config', '
122G-RKSQ2SW649
vendor: 12 bytes, lines 122-123
122');
123        
123</script>
123
124        
125        
126        
127    </head>
128<body ng-app="TestSeries">
129    
130    <header>
131        
132        <div ng-controller="MenuCtrl" ng-init="header_init()">
133            
134            <div class="google-one-tap-signin-highlights">
135                <div class="gotsh-text">
136                    <div class="head"><span class="lang" key="signin">Sign in</span></div>
137                    <div class="subhead">Create your free account to access free Mocktests, Quizzes, Current Affairs & Daily News.</div>
138                </div>
139                <div class="gotsh-arrow-container">
140                    <img class="desktop" src="/static/images/gotsh-highlight.svg?v=aa7270d9b7b45edfd0fcce9c5e5cf3c6" alt="Highlight">
141                </div>
142            </div> 
143
144            
145            <div class="menu_overlay_coupon" id="promo_code_back" ng-show="rmodel" ng-click="close_rmodel_sub()"></div>
146            <div class="Ts_headerFull_W" id="desktop_navbar_height">
147                <nav class="navbar navbar-default TsH_Navigation" id="Tst_Fixed_navbar">
148                    <div class="TsH_toolbar">
149                        <div class="TsH_logo_image">
150                            <a target="_self" href="/" id="eg_header_logo_redirect_url">
151                                <img src=/static/media/wl_client_images/0d81846c89664d96be76b8ce19841676.png alt="Vidyantu" class="lg_logPopup_Logo" id="header_logo_img" style="display: block;height: 50px;background-size: contain;background-position: center;">
152                            </a>
153                        </div>
154                        <div class="TsH_searchBar">
155                            <div class="TsH_searchList">
156                                <div class="input-group TsH_searchView">
157                                    
158                                        <input type="text" ng-model="examSearchTextHead" ng-keyup="examAjaxSearchHead(examSearchTextHead, $event)" class="form-control TsH_examCourseBox search_box" placeholder="Search Exams" ng-value="currentSearchTitle" />
159                                    
160                                    <div class="input-group-btn">
161                                        <button class="btn btn-default" type="button" ng-click="examAjaxSearchHead(examSearchTextHead, $event)">
162                                            <i class="glyphicon glyphicon-search"></i>
163                                        </button>
164                                    </div>
165                                </div>
166
167                                <div class="TsH_examSearch_list" ng-show="examSearchStatusHead">
168                                    <ul class="TsH_Exam_nameList" ng-if="searchExamResultHead.length == 0">
169                                        <li class="TsH_Exam_name_li"><a class="lang" key="nrfound">No Result Found</a></li>
170                                    </ul>
171                                    <ul class="TsH_Exam_nameList list_full" ng-if="searchExamResultHead.length > 0">
172                                        <li ng-repeat="x in searchExamResultHead" title="{{x.name}}" class="TsH_Exam_name_li" data-value="{{x.name}}"><a target="_self" ng-href="{{x.url}}" ng-bind="x.name"></a></li>
173                                    </ul>
174                                </div>
175                            </div>
176                        </div>
177                        <div class="TsH_rightMenu_nav">
178                            <ul class="nav navbar-nav navbar-right TsH_rgtMenu_link">
179                                
180                                    <li><a ng-click="open_redeem_promo()"><span class="lang header_text" key="activation">Activation Key</span></a></li>
181                                
182                                <li class=" TsH_text_seprator " ng-show="!isLoggedIn()"><a target="_self" ng-href="{{ createLogin() }}"><span class="TsH_login header_text"><span class="lang" key="login">Login</span></span></a>
183                                    <a id="signup_button" target="_self" ng-href="{{ createSignup() }}" onclick="sendGoogleAnalyticsEvent();"> <span class="TsH_signUp"><span class="lang" key="signup"></span></span></a>
184                                    
185                                        <div id="g_id_onload"
186                                            data-client_id="980830753745-fs6iurtqnfcvjk9fsasnto63ol268bnu.apps.googleusercontent.com"
187                                            data-skip_prompt_cookie="eg_user"
188                                            data-moment_callback="continueWithNextStep"
189                                            data-callback="handleCredentialResponse">
190                                        </div>
191                                    
192                                </li>
193                                <li class=" TsH_text_seprator  TsH_prof" ng-show="isLoggedIn()"><a><img data-src="/static/images/user_profile.png?v=9f51801bc14935ca1592910132e11888" class="img-responsive lozad"><span ng-bind="root_user_data.name" id="user_name_header" class="header_text"></span> <i class="fa fa-angle-down header_text"></i> </a>
194                                    <ul class="TsH_prof_Mmenu">
195                                        <li id="erp_li" ng-if="root_user_data && root_user_data.level == 9" style="display: none;"><a target="_self" href="/institute"><i class="fa fa-graduation-cap"></i><span style="margin-left:10px;">
195Institute</span></a></li>
196                                        <li><a target="_self" href="/my_profile"><i class="fa fa-clone" aria-hidden="true"></i><span class="lang" key="myprofile"style="margin-left:10px;">My Profile</span></a> </li>
197                                        <li id="admin_li" ng-show="root_user_data && root_user_data.level != 9"><a target="_self" href="/wl_admin?action=initial_call"><i class="fa fa-user-secret" aria-hidden="true"></i><span class="lang" key="admin" style="margin-left:10px;">Admin Panel</span></a> </li>
198                                        <li onclick="delete_cookie('vle_buy_package')"><a target="_self" href="/logout" onclick="Moengage.destroy_session();"><i class="fas fa-sign-out-alt" aria-hidden="true"></i><span class="lang" key="logout" style="margin-left:10px;">Logout</span></a></li>
199                                    </ul>
200                                </li>
201                                
202                                
203                                <li class="tS_Phone_modal">
204                                    <a id="phoneMenu" style="display: flex;align-items: center;" href="tel:9870038100">
205                                        <img src="/static/images/Social_media_icons/phone_call_icon.png?v=5638e9a9bcf5f28ac3ddcfc022b50fe7" width="30" height="30" loading="lazy" alt="phone-call-icon">
206                                        <div style="margin-left: 10px;">
207                                            <p style="margin-bottom: 0;" class="contact_no header_text"> 9870038100 </p>
208                                            <p style="margin-bottom: 0;" class="lang header_text" id="support_time" style="display:none;"></p> 
209                                        </div>
210                                    </a>
211                                </li>
212                                
213                                
214                            </ul>
215                        </div>
216                    </div>
217                </nav>
218            </div>
219            
220            <!-- Activation Key Modal Start -->
221            <div id="TS_coupon_modal" class="TS_PromoMmodal" ng-show="rmodel" ng-click="checkCouponClick($event)">
222                <div class="TS_PromoMmodal_content">
223                    <div class="TS_PromoMmodal_header">
224                        <span class="coupon_close" ng-click="close_rmodel_sub()">&times;</span>
225                    </div>
226                    <div class="TS_PromoMmodal_body">
227                        <div class="TS_promoCode_part_1" ng-show="rmodel_sub==1">
228                            <b class="TS_promo_heading"><span  class="lang" key="diglogboxdata">Please enter your 10 digit Activation Key below</span></b>
229                            <form class="TS_code_enter_form">
230                                <div class="form-group">
231                                    <input type="text" class="form-control" placeholder="e.g. a65hw6eg43" ng-model="headerCouponCode">
232                                </div>
233                                    <button ng-disabled="!headerCouponCode" class="btn btn-primary center-block Ts_code_submit" ng-click="fetchRedeemPacks()"><span  class="lang" key="submit">Apply</span></button>
234                            </form>
235                            <h4 ng-if="errorMsg" class="text-danger" ng-bind="errorMsg"></h4>
236                        </div>
237                        <div class="TS_promoCode_part_2" ng-show="rmodel_sub==2">
238                            <b class="TS_promo_heading unlock_text_heading">Select your test package and unlock it</b>
239                            <ul class="ts_unlock_test_list style_scroll">
240                                <li class="ts_unlock_test_open" ng-repeat="x in couponResponse">
241                                    <input type='radio' ng-value='x[1]' name='coupon_radio_' id="{{'radio'+x[1]}}" ng-model="coupon_radio" ng-change="getPackCid(coupon_radio)"/>
242                                    <label for="{{'radio'+x[1]}}" ng-click="getPackCid(coupon_radio)">
243                                        <h4 class="test_openExam_name" title="{{x[0]}}" ng-bind="x[0]" id="{{'radioH'+x[1]}}"></h4>
244                                    </label>
245                                </li>
246                            </ul>
247                            <div class="ts_unlock_subtest style_scroll" ng-hide="btnStatus">
248                                <div class="unlock_subtestName" ng-repeat="y in showCouponData">
249                                    <h4 class="test_openExam_name" title="{{y[0]}}" ng-bind="y[0]"></h4>
250                                    <p class="test_openExam_catg" title="{{sanL2(y[1])}}" ng-bind="sanL2(y[1])"></p>
251                                </div>
252                            </div>
253                            <button ng-hide="btnStatus" ng-disabled="btnStatus" class="btn btn-primary center-block Ts_code_submit Ts_code_unlock_btn" type="button" ng-click="unlockCouponCode()">Unlock now</button>
254                        </div>
255
256                        <div class="TS_promoCode_part_3" ng-show="rmodel_sub==3">
257                            <p class="attentionText">You will not be able to change the package after this!</p>
258                            <p class="attentionText">Are you sure you want to unlock <span ng-bind="selectedPack[0]"></span></p>
259                            <form ng-if="!isLoggedIn()" method="GET" action="/payment">
260                                <input type="hidden" ng-model="afterCouponCode" name="coupon_code" ng-value="successCoupon">
261                                <input type="hidden" ng-model="afterPackId" name="pack_id" ng-value="packageId">
262                                <div class="Ts_warningBtn">
263                                    <div class="Ts_warningBtn_left">
264                                        <button class="btn btn-primary Ts_code_submit" type="submit">Yes! I am sure.</button>
265                                    </div>
266                                    <div class="Ts_warningBtn_right">
267                                        <button class="btn btn-primary Ts_code_submit Ts_Btn_think" type="button" ng-click="rmodel_sub=2">Think again!</button>
268                                    </div>
269                                </div>
270                            </form>
271                            <form ng-if="isLoggedIn()" ng-submit="sendCouponConf()">
272                                <input type="hidden" id="coupon_code_header" ng-value="successCoupon">
273                                <input type="hidden" id="pack_id_header" ng-value="packageId">
274                                <div class="Ts_warningBtn">
275                                    <div class="Ts_warningBtn_left">
276                                        <button class="btn btn-primary Ts_code_submit" type="submit">Yes! I am sure.</button>
277                                    </div>
278                                    <div class="Ts_warningBtn_right">
279                                        <button class="btn btn-primary Ts_code_submit Ts_Btn_think" type="button" ng-click="rmodel_sub=2">Think again!</button>
280                                    </div>
281                                </div>
282                            </form>
283                            <div id="activation_code_form_div"></div>
284                        </div>
285                    </div>
286                </div>
287            </div>
288            <!-- Activation Key Modal End -->
289
290            <!-- Package Expired Start -->
291            <div class="alert_container" ng-show="boughtPackageExpired">
292                <div class="alert_cell">
293                    <div class="alert_ alert_red alert_add-margin">
294                        <div class="alert_content">
295                            <p class="alert_type" ng-bind="errorTitle"></p>
296                            <p class="alert_message" ng-bind="errorIMsg"></p>
297                        </div>
298                        <div class="alert_close" ng-click="setAlertBo
298xTimeoutClose()">
299                            <svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15.642 15.642" xmlns:xlink="http://www.w3.org/1999/xlink" enable-background="new 0 0 15.642 15.642">
300                                <path fill-rule="evenodd" d="M8.882,7.821l6.541-6.541c0.293-0.293,0.293-0.768,0-1.061  c-0.293-0.293-0.768-0.293-1.061,0L7.821,6.76L1.28,0.22c-0.293-0.293-0.768-0.293-1.061,0c-0.293,0.293-0.293,0.768,0,1.061  l6.541,6.541L0.22,14.362c-0.293,0.293-0.293,0.768,0,1.061c0.147,0.146,0.338,0.22,0.53,0.22s0.384-0.073,0.53-0.22l6.541-6.541  l6.541,6.541c0.147,0.146,0.338,0.22,0.53,0.22c0.192,0,0.384-0.073,0.53-0.22c0.293-0.293,0.293-0.768,0-1.061L8.882,7.821z"></path>
301                            </svg>
302                        </div>
303                    </div>
304                </div>
305            </div>
306            <!-- Package Expired End -->
307            
308
309            <!-- Google OneTap Login Start -->
310            
311            <div id="fb_go_signup_base" class="test_series_modal">
312                <div class="test_series_modal-content">
313                    <div class="test_series_modal-header">
314                    </div>
315                    <div class="test_series_modal-body">
316                        <p ng-show="go_fb_login==1">Enter Your Phone No to verify Yourself</p>
317                        <form ng-submit="verify_go_fb_phone(fb_go_phone_no)" ng-show="go_fb_login==1">
318                            <div class="form-group">
319                                <input type="hidden" id="temp" ng-model="token">
320                                <input type="text" pattern="[0-9]{10}" class="form-control" ng-model="fb_go_phone_no" placeholder="Enter your phone no Please">
321                            </div>
322                            <button ng-disabled="!fb_go_phone_no || phoneVerifyProgress" type="submit" class="btn btn-default">Submit
323                                <span class="ro" ng-show="phoneVerifyProgress">
324                                    <span class="rotate_icon" style="margin-top:-2px;">
325                                        <i class="fa fa-spinner" aria-hidden="true"></i>
326                                    </span>
327                                </span>
328                            </button>
329                            <p class="text-danger" ng-if="go_fb_login_error" ng-bind="go_fb_login_error"></p>
330                        </form>
331                        <p ng-show="go_fb_login==2">We've sent you a message on your phone, please enter the OTP to verify yourself.</p></p>
332                        <form ng-submit="otp_verify_fb_go_user(fb_go_otp, fb_go_phone_no_re, token_re)" ng-show="go_fb_login==2">
333                            <div class="form-group">
334                                <input type="hidden" ng-model="token_re">
335                                <input type="hidden" ng-model="fb_go_phone_no_re">	
336                                <input type="text" pattern="[0-9]{6}" class="form-control" ng-model="fb_go_otp" placeholder="Enter the OTP Please">
337                            </div>
338                            <button ng-disabled="!fb_go_otp || fb_go_otp_verified" type="submit" class="btn btn-default">Submit
339                                <span class="ro" ng-show="fb_go_otp_verified" style="margin-top:-2px;">
340                                    <span class="rotate_icon">
341                                        <i class="fa fa-spinner" aria-hidden="true"></i>
342                                    </span>
343                                </span>
344                            </button>
345                            <button ng-disabled="resent_fb_go" type="button" ng-click="resend_otp_go_fb(fb_go_phone_no_re, token_re)" class="btn btn-default">Resend OTP
346                                <span class="ro" ng-show="resent_fb_go">
347                                    <span class="rotate_icon" style="margin-top:-2px;">
348                                        <i class="fa fa-spinner" aria-hidden="true"></i>
349                                    </span>
350                                </span>
351                            </button>
352                            <p ng-bind="go_fb_login_error_otp"></p>
353                            <p ng-bind="resend_fb_go_msg"></p>
354                        </form>
355                        <p class="text-success" ng-if="go_fb_login==3">Success!! You will be redirected in a moment.</p>
356                    </div>
357                </div>
358            </div>
359            
360            <!-- Google OneTap Login End -->
361        </div>
362    
363    </header>
364    <content>
365        <div id="ajax_loading_base">
366            <img src="/static/images/gif/loading.gif?v=aa73183f96aa5e6acf1ed11f76680221" alt="loader_img" />
367        </div>
368        <div id="ajaxLoadingSignUpBase" class="update_loading">
369            <img src="/static/images/gif/loading.gif?v=aa73183f96aa5e6acf1ed11f76680221" alt="loader_img" />
370        </div>
371        
372<div class="justify-content-center" id="template_2_non_customizable_iframe2" ng-controller="SingleCtrl" ng-init="load()">
373<iframe id="iframe_template2_preview" width="100%"></iframe>
374
375</div>
376<script src="/static/js/homepage_template_2_iframe.js?v=70239c99b82475f83522d47bf83eb763" defer></script>
vendor: 1 bytes, line 376
376
377<script>
378let textDirectionCSS = ['15'].includes(getLanguageCode()) ? 'rtl' : 'ltr';
379let promise1 = getJsonData().then(function (_) { return _; });
380let promise2 = loadTemplate2Preview().then(function (_) { return _; });
381Promise.all([promise1, promise2]).then(function (result) {
382let iframe = document.getElementById('iframe_template2_preview');
383iframe.contentWindow.postMessage({ type: 'response_message', api_response: result[0] }, '/');
384let event_method = window.addEventListener ? "addEventListener" : "attachEvent";
385let eventer = window[event_method];
386let message_event = event_method == "attachEvent" ? "onmessage" : "message";
387eventer(message_event, function (e) {
388if (e.data.if_action == 'scroll_top') {
389document.documentElement.style.scrollBehavior = 'smooth';
390document.body.scrollTop = e.data.scroll_position;
391document.documentElement.scrollTop = e.data.scroll_position;
392adjustIframeHeight();
393}
394if (e.data.if_action == 'redirect_url') {
395window.location.href = e.data.redirect_url;
396}
397if (e.data.if_action == 'set_iframe_height') {
398adjustIframeHeight();
399}
400}, false);
401});
402let is_iframe_height_adjusted = false;
403function adjustIframeHeight() {
404let iframe = document.getElementById('iframe_template2_preview');
405iframe.style.height = iframe.contentWindow.document.body.scrollHeight + "px";
406iframe.style.minHeight = 60 + "vh";
407is_iframe_height_adjusted = true;
408}
409function getJsonData() {
410return new Promise(function (resolve, reject) {
411let page_address = window.location.href;
412let customize_page_url = page_address.split(`${window.location.host}`)[1];
413if (window.location.pathname !== "/") {
414let url = `${$('#client_media_location').text()}/${customize_page_url}.json`;
415$.get(url, function(resp) {
416resolve(resp)
417}).fail(function() {
418let url = `${$('#client_media_location').text()}/${customize_page_url}.html`;
419$.get(url, function(resp) {
420let iframe = document.getElementById('iframe_template2_preview');
421// Here we are adding this extra div because loader is get removed on the presence of this div.
422iframe.srcdoc = resp + `<div id="iframe_data_loaded"></div>`;
423resolve(1);
424}).fail(function() {
425reject(0)
426console.log("Something went wrong");
427});
428reject(0)
429console.log("Something went wrong");
430});
431} else {
432let url = '/api/v1/generic_handler?action=get_v2_homepage_customized_json';
433$.get(url, function(resp) {
434if (resp.status) {
435const json_parse_data = JSON.parse(resp.result.data);
436resolve(json_parse_data)
437const interval = setInterval(() => {
438if (is_iframe_height_adjusted) {
439// Hide the global loader when the height is adjusted.
440document.getElementById("ajax_loading_base").style.display = "none";
441clearInterval(interval);
442}
443}, 100);
444} else {
445reject(0)
446}
447}).fail(function() {
448reject(0)
449console.log("Something went wrong");
450});
451}
452});
453}
454function loadTemplate2Preview() {
455return new Promise(function (resolve, reject) {
456function previewTemplate2Html() {
457let iframe = document.getElementById('iframe_template2_preview');
458$('#template_2_non_customizable_iframe').css('display', window.innerWidth < 992 ? 'none' : '')
459// template2 html
460let html_preview_template2_preview_string = `<!DOCTYPE html>
461<html lang="en">
462<head>
463<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
464<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'" crossorigin="anonymous">
465<sc`+`ript src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></s`+`cript>
466<sc`+`ript src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></s`+`cript>
467<sc`+`ript src="/static/node_modules/grapejs/grapejs.js"></s`+`cript>
468<sc`+`ript src="/static/eg_dynamics_page/js/eg_template2_helper.js"></s`+`cript>
469<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" crossorigin="anonymous">
470<!-- intl-tel-input CSS -->
471<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.18/css/intlTelInput.css" />
472<link rel="stylesheet" href="/static/eg_dynamics_page/css/eg_template2.css">
473<s`+`cript>
474// Load vernacular (localized language) text content instantly.
475EG_GR_HELPER.getVernacularTextContent();
476</s`+`cript>
477<!-- intl-tel-input JS -->
478<sc`+`ript src="https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.18/js/intlTelInput.min.js"></sc`+`ript>
479<sc`+`ript src="https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.18/js/utils.min.js"></sc`+`ript>
480</head>
481<body style="overflow: hidden;">
482<div id="ajax_loading_base">
483<img src="/static/images/gif/loading.gif" alt="loader_img" />
484</div>
485<div id="main" dir="${textDirectionCSS}"></div>
486<sc`+`ript src="/static/js/wl_admin/customize_website/homepage_template_2_helper.js" defer></s`+`cript>
487<s`+`cript>
488const checkContentInterval = setInterval(() => {
489let loader = document.getElementById("ajax_loading_base");
490let loader_style = window.getComputedStyle(loader);
491let display_value = loader_style.getPropertyValue("display");
492if (display_value === 'none') {
493let new_div = document.createElement("div");
494new_div.id = "iframe_data_loaded";
495document.body.appendChild(new_div);
496clearInterval(checkContentInterval);
497}
498}, 100);
499// Load and update all relevant short codes when the DOM content is fully loaded.
500document.addEventListener('DOMContentLoaded', () => {
501EG_GR_HELPER.updateAllRelevantShortCodes();
502EG_GR_HELPER.giveStyleToElement()
503// Create a MutationObserver to monitor changes in the DOM
504const target_node = document.body;
505const observer = new MutationObserver(() => {
506const carousels = document.querySelectorAll('.carousel');
507carousels.forEach(carousel => {
508// Reinitialize the Bootstrap carousel after updating the content
509const instance = bootstrap.Carousel.getInstance(carousel);
510if (!instance) {
511new bootstrap.Carousel(carousel).cycle();
512}
513});
514// Disconnect the observer
515observer.disconnect();
516});
517// Configure the observer to watch for child list changes or subtree changes
518observer.observe(target_node, {
519childList: true,
520subtree: true,
521});
522});
523</s`+`cript>
524</body>
525</html>`;
526// Set the srcdoc attribute of the iframe with the HTML content
527iframe.srcdoc = html_preview_template2_preview_string;
528}
529let loader = document.getElementById("ajax_loading_base");
530loader.style.display = 'block';
531previewTemplate2Html();
532let iframe = document.getElementById('iframe_template2_preview');
533iframe.addEventListener('load', () => {
534let checkContentInterval = setInterval(() => {
535let iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
536let targetElement = iframeDoc.getElementById('iframe_data_loaded');
537if (targetElement) {
538adjustIframeHeight();
539if(loader.style.display === 'none') {
540clearInterval(checkContentInterval);
541}
542}
543}, 10);
544resolve(1)
545});
546})
547}
548window.addEventListener('resize', function() {
549adjustIframeHeight();
550});
551window.addEventListener('scroll', function() {
552adjustIframeHeight();
553});
554// initialize language code
555function getLanguageCode() {
556let language_code = $.cookie("lang");
557if (!language_code) {
558language_code = "1"
559}
560return language_code
561}
562</script>
562
563
564    </content>
565    
565<script src="/static/js/multislider.js?v=4ae0bbca19886e8c435b66b4b915df2b"></script>
565
566    
566<script>
567        // This constant variable is used to check that current client is priviledged client or not.
568        const WHITELABEL_PRIVILEDGE_CLIENT = false;
569    </script>
569
570    
571    <footer>
572        <div style="position: relative; min-height: 300px;">
573            <!-- We initailly hide the footer to optimzied the page performance, after window load, load the footer -->
574            <div id="school_footer_id" style="display: none;">
575                
576                <div class="school_footer" style="font-family: 'Poppins';">
577                    <div id="footer_div" style="background-color: #111111;">
578                        <div class="container">
579                            <div class="row menu_row">
580                                <div class="col-xs-12 col-sm-12 col-md-3">
581                                    <div class="addrss">
582                                        <p class="eg_footer_logo" style="display: flex;">
583                                            <a target="_self" itemprop="url" href="/" rel="home">
584                                                <img src="" alt="Vidyantu" id="eg_footer_logo_img" class="logo1 lozad" >
585                                            </a>
586                                            
587                                        </p>
588                                        
589                                        <p class="info"><b class="lang" key="mail" style="margin-right: 5px;">Mail</b>
590                                            
591                                            <a class="footer_email" target="_self" href="mailto:[email protected]">[email protected]</a>
592                                            
593                                        </p>
594                                        
595                                        <div class="app_container col-xs-12 col-sm-2 col-md-2">
596                                            <div class="mr-1" style="margin-right: 10px;">
597                                                <ul class="sub_menu" id="android_app_download" style="display:none;">
598                                                    <li>
599                                                        <a target="_blank" itemprop="url" href="#">
600                                                            <img data-src="/static/images/google_play.png?v=89d70ac74ced418207a75cf493cf0b3e" width="120" height="36" loading="lazy" alt="Vidyantu" class="GoogleApp_link lozad" data-was-processed="true" />
601                                                        </a>
602                                                    </li>
603                                                </ul>
604                                            </div>
605                                            <div class="ml-1" style="margin-right: 10px;">
606                                                <ul class="sub_menu" id="ios_app_download" style="display:none;">
607                                                    <li>
608                                                        <a target="_blank" itemprop="url" href="#">
609                                                            <img data-src="/static/images/ios_icon_image.png?v=a88ade5d815de5e964fc328c57444979" loading="lazy" style="width: 120px;" class="lozad" alt="App Store" data-was-processed="true">
610                                                        </a>
611                                                    </li>
612                                                </ul>
613                                            </div>
614                                        </div>
615                                        
616                                        <div id="google_translate_element"></div>      
617                                    </div>                
618                                </div> 
619                                
620                                <div class="col-xs-12 col-sm-3 col-md-2 lang_dynamic_css" style="display: none;" id="eg_about_us">
621                                    <p class="footer_heading lang" id="footer_article_heading_about" key="about">ABOUT</p>
622                                    <ul class="sub_menu">
623                                        <li><a target="_blank" id="footer_item_about_us" itemprop="url" href="" class="lang" key="aboutus">About Us</a></li>
624                                    </ul> 
625                                </div>
626                                <div class="col-xs-12 col-sm-3 col-md-2 lang_dynamic_css" id="help_section_footer">
627                                    <p class="footer_heading lang" id="footer_article_heading_help" key="help">HELP</p>
628                                    <ul class="sub_menu">
629                                        <li><a target="_blank" itemprop="url" href="" style="display: none;" id="eg_contact_us_url" class="lang" key="contact">Contact Us</a></li>
630                                        <li id="exam_calendar_footer_link"><a target="_blank" itemprop="url" href="/exam_calendar" class="lang" key="examCalendar">Exam Calendar</a></li>
631                                    </ul> 
632                                </div>
633                                <div class="col-xs-12 col-sm-3 col-md-2 lang_dynamic_css" style="display: none;" id="eg_url_blog">          
634                                    <p class="footer_heading lang" id="footer_article_heading_student" key="student">STUDENT</p>
635                                    <ul class="sub_menu">
636                                        <li><a target="_blank" itemprop="url" href="" id="footer_article_heading_blog" class="lang" key="blog">Blog</a></li>
637                                    </ul> 
638                                </div>
639                            
640                                <div class="col-xs-12 col-sm-3 col-md-2 lang_dynamic_css" id="footer_business_container" style="display:none;">          
641                                    <p class="footer_heading lang" id="footer_article_heading_business" style="display:none;" key="business">BUSINESS</p>
642                                    <ul class="sub_menu" id="advertise" style="display:none;">
643                                        <li><a target="_blank" itemprop="url" href="#" id="footer_article_heading_advertise" class="lang" key="advertise">Advertise with us</a></li>
644                                    </ul>
645                                </div>
646                                
647                            </div>
648                            <div class="row text-white">
649                                <div class="col-md-9">
650                                    <div class="eg-footer-social" id="footer_follow_us_section" style="margin-bottom: 17px;">
651                                        <b class="footer_heading lang" id="footer_follow_us_tag" key="follow">Follow Us On</b><br> 
652                                        <ul class="social_link" style="display: flex;">
653                                            <li id="eg_url_facebook" style="display: none;"><a itemprop="sameAs" href="" target="_blank"><img class="social_img" src="/static/images/Social_media_icons/FB.png?v=55f55c9b66f0829c58b9e595aea29c57" loading="lazy" alt="facebook"></a></li>
654                                            <li id="eg_url_twitter" style="display: none;"><a itemprop="sameAs" href="" target="_blank"><img class="social_img" src="/static/images/Social_media_icons/twitter.png?v=6f8edf5355eca3d1bda2bfd104bd3a07" loading="lazy"  alt="twitter"></a></li>
655                                            <li id="eg_url_youtube" style="display: none;"><a itemprop="sameAs" href="" target="_blank"><img class="social_img" src="/static/images/Social_media_icons/youtube.png?v=8be677c03bad76d338be6f25d2c3d017" loading="lazy"  alt="youtube"></a></li>
656                                            <li id="eg_url_linkedin" style="display: none;"><a itemprop="sameAs" href="" target="_blank"><img class="social_img" src="/static/images/Social_media_icons/linkdin.png?v=c4c746f2095571a49ba8a3e87f3901b7" loading="lazy"  alt="linkdin"></a></li>
657                                            <li id="eg_url_instagram" style="display: none;"><a itemprop="sameAs" href="" target="_blank"><img class="social_img" src="/static/images/Social_media_icons/instagram.png?v=a33a6bb825de67658a1d452c98212ddc" loading="lazy"  alt="instagram"></a></li>
658                                            <li id="url_telegram" style="display:none;"><a itemprop="sameAs" href="#" target="_blank"><img src="/static/images/Social_media_icons/telegram.png?v=47c600316c42ac230b358cda327f93e9" loading="lazy"  alt="telegram"></a></li>
659                                        </ul>
660                                    </div>
661                                </div>
662                                <div class="col-md-3 text-right">
663                                    <div id="lang_container" style="display:inline-block; margin-bottom: 17px;"> 
664                                        <select name="langSwitcher" id="langSwitcher" onchange="changeLang()">
665                                            <option value="1" selected>&nbsp; &nbsp; &nbsp;English</option> 
666                                            <option value="2">&nbsp; &nbsp; &nbsp;हिंदी</option>
667                                            <option value="14">&nbsp; &nbsp; &nbsp;
667Español</option>
668                                            <option value="15">&nbsp; &nbsp; &nbsp;عربي</option>
669                                        </select>
670                                    </div>
671                                </div>
672                            </div>
673                        </div>
674                    </div>
675                    <div class="container">
676                        <div class="row copyright_row">
677                            <div class="col-xs-12 col-sm-6 col-md-4 col-lg-4 eg_copyright_text" style="margin-top:25px;">
678                                
679                                <p style="color:#ffff;font-size: 1rem;"><span class="lang" key="copyright">Copyright</span> © <span class="p_year"></span> Dipen Shah Educational Solutions</p>
680                                
681                            </div>
682                            <div class="col-xs-12 col-sm-6 col-md-8 col-lg-8 eg_copyright_link" style="margin-top:25px;">
683                                <ul class="copyright_menu">
684                                    
685                                    <li id="eg_url_disclaimer" style="display: none;"><a class="lang" key="disclaimer" id="footer_link_disclaimer" target="_blank" itemprop="url" href="">Disclaimer</a></li>
686                                    <li id="eg_url_terms_and_conditions" style="display: none;"><a class="lang" key="TndC" target="_blank" itemprop="url" href="">Terms and Conditions</a></li>
687                                    <li id="eg_url_privacy_policy" style="display: none;"><a class="lang" key="privacypolicy" target="_blank" itemprop="url" href="">Privacy Policy</a></li>
688                                    <li id="eg_url_refund_policy" style="display: none;"><a class="lang" key="refundpolicy" target="_blank" itemprop="url" href="">Refund Policy</a></li>
689                                    <li id="eg_url_sitemap" style="display: none;"><a class="lang" key="sitemap" target="_blank" itemprop="url" href="">Sitemap</a></li>
690                                    
691                                </ul>
692                            </div>
693                            
694                        </div>
695                    </div>
696                </div>
697                
698            </div>
699            <!-- Displaying an internal loader for the footer. This appears after the window load event to handle cases where the footer takes time to load, especially on slower networks. -->
700            <div id="footer_internal_loader" style="position: absolute; left: 50%; top: 50%; z-index: 200; background: #4a4e50ea; backdrop-filter: blur(80px); width: 100%; height: 100%; transform: translate(-50%, -50%); display: flex; justify-content: center; align-items: center;">
701                <img src="/static/images/gif/loading.gif" width="45" height="45" alt="loader_img" />
702            </div>
703        </div>
704    </footer>
705    
706    
707    <!-- Load Facebook SDK for JavaScript -->
708    <div id="fb-root"></div>
709    
709<script>
710        window.fbAsyncInit = function() {
711            FB.init({
712                appId            : "1487792121625210",
713                autoLogAppEvents : true,
714                xfbml            : true,
715                version          : "v16.0"
716            });
717        };
718        
719        (function(d, s, id){
720            var js, fjs = d.getElementsByTagName(s)[0];
721            if (d.getElementById(id)) {return;}
722            js = d.createElement(s); js.id = id;
723            js.src = "https://connect.facebook.net/en_US/sdk.js";
724            fjs.parentNode.insertBefore(js, fjs);
725        }(document, 'script', 'facebook-jssdk'));
726    </script>
726
727    
728    
728<script>
729        window.addEventListener('load', () => {
730            const showFooter = () => {
731                const footer = document.getElementById('school_footer_id');
732                if (footer) {
733                    footer.style.display = 'block';
734                    // Hide footer loader
735                    document.getElementById('footer_internal_loader').style.display = 'none';
736                }
737            };
738            // Use requestIdleCallback to wait until the browser is idle, so that this doesn't interfere with critical rendering performance
739            if ('requestIdleCallback' in window) {
740                requestIdleCallback(showFooter);
741            } else {
742                // Fallback for iOS and older browsers
743                showFooter();
744            }
745        });
746    </script>
746
747    
747<script>
748        jQuery(document).ready(function($) {
749            const observer = lozad();
750            observer.observe();
751            $("head").append(`<link rel="canonical" href="${location.origin+location.pathname}">`);
752            $(".TS_Search_Modal_head").show();
753            $(".testS_examSearch_list").show();
754            $("#admin_li").css('display', 'block');
755            $(".TsH_examSearch_list").show();
756            document.addEventListener('mousedown', (e) => {
757                if (document.querySelector('.TsH_searchBar').contains(e.target)) {
758                    $('.TsH_examSearch_list').show();
759                    if ($('.TsH_searchView input').val().length) {
760                        $('.TsH_searchView').addClass('searchViewFocus');
761                    }
762                } else {
763                    $('.TsH_examSearch_list').hide();
764                    $('.TsH_searchView').removeClass('searchViewFocus');
765                }
766            });
767            $(".TsH_text_seprator").show();
768            $(window).bind('scroll', function(e) {
769                var navHeight = $( window ).height() - 70;
770                if ($(window).scrollTop() > $('#Tst_Fixed_navbar').height()) {
771                    $('#Tst_Fixed_navbar').addClass('fixed-header');
772                }
773                else {
774                    $('#Tst_Fixed_navbar').removeClass('fixed-header');
775                }
776            });
777
778            $('#phoneMenu').tooltip(); // Initializing tooltip for Mail
779        });
780
781        function removeBaseLoader() {
782            $("#ajax_loading_base").fadeOut(function() {
783                $('body').css('overflow-y', 'auto');
784            });
785        }
786
787        function get_cookie(name){
788            return document.cookie.split(';').some(c => {
789                return c.trim().startsWith(name + '=');
790            });
791        }
792        function delete_cookie( name) {
793            if( get_cookie( name ) ) {
794                document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:01 GMT";
795            }
796        }
797    </script>
797
798    
798<script>
799        function changeLang(){
800            $('#langSwitcher option:selected').text(`🌐 ${$('#langSwitcher option:selected').text().trim()}`);
801            $.cookie("lang",$("#langSwitcher").val(),{path:"/"});
802            location.reload(true);
803            CUSTOM_MOENGAGE_NAMESPACE.moengageLocaleLanguage(error_msg=null); //Trigger when user change the UI Language
804        }
805        jQuery(document).ready(function($) {
806            $("#langSwitcherHeading").show();
807            $("#langSwitcher").show();
808        });
809        function getDefaultLang() {
810            return $("#langSwitcher option:first").val();
811        }
812    </script>
812
813    
813<script>
814        getClientFeatureDataForLocalStorage();
815        getClientMetaCookie();
816        let url_all_params = new URLSearchParams(window.location.search);
817
818        function parseJwt (token) {
819            let base64Url = token.split('.')[1];
820            let base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
821            let jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {
822                return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
823            }).join(''));
824
825            return JSON.parse(jsonPayload);
826        }
827
828        function handleCredentialResponse(response) {
829            let one_tap_return_data = parseJwt(response.credential);
830            // Request Start
831            let google_user_id = one_tap_return_data.sub,
832                google_name = encodeURIComponent(one_tap_return_data.name),
833                google_image_url = one_tap_return_data.picture,
834                google_email = one_tap_return_data.email,
835                google_id_token = response.credential;
836            var data = `from=google&id=${google_user_id}&name=${google_name}&imgURL=${google_image_url}&email=${google_email}&idToken=${google_id_token}`;
837            var url = "/api/v2/auth/loginsignup/fb/go/st1";
838
839            let ctrl_element;
840            let vernacularStaticTextContentData;
841
842            if ($('[ng-controller="loginCtrl"]').length > 0) {
843                ctrl_element = $('form[name="sign_in_user"] h4')
844                vernacularStaticTextContentData = $('[ng-controller="loginCtrl"]').scope().vernacularStaticTextContent;
845            } else if ($('[ng-controller="signupCtrl"]').length > 0) {
846                ctrl_element = $('form[name="sign_up_user1"] h4')
847                vernacularStaticTextContentData = $('[ng-controller="signupCtrl"]').scope().vernacularStaticTextContent;
848            }
849            var xhttp = new XMLHttpRequest();
850            xhttp.onreadystatechange = function() {
851                if (this.readyState == 4) {
852                    let auth_type = 'signup';
853                    if (this.status == 200) {
854                        var data = JSON.parse(xhttp.responseText);
855                        google.accounts.id.disableAutoSelect();
856                        let google_mo_event_name = "google_onetap";
857                        if(data.status) {
858                            if (data.result.data === 2) {
859                                if (ctrl_element) {
860                                    let scope = angular.element(ctrl_element).scope();
861                                    scope.$apply(function() {
862                                        scope.logedin = 2;
863                                        scope.error_msg = vernacularStaticTextContentData['already_logged_in'];
864                                    });
865                                } else {
866                                    alert("You can't login since live class is being hosted from this account!")
867                                }
868                            } else {
869                                auth_type = data.result.data.type;
870                            }
871                            notify_mo_engage_user_login_signup(auth_type, google_mo_event_name, true);
872                        }
873                        else {
874                            notify_mo_engage_user_login_signup(auth_type, google_mo_event_name, false, data.msg);
875                        }
876                    }
877                    else {
878                        let error_msg = `Error HTTP Status: ${this.status}`;
879                        notify_mo_engage_user_login_signup(auth_type, google_mo_event_name, false, error_msg);
880                    }
881                    $("ajaxLoadingSignUp").css('display', 'none');
882                }
883            };
884            xhttp.open("POST", url, true);
885            xhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
886            xhttp.send(data);
887            // // Request End
888        }
889
890        function continueWithNextStep(notification) {
891            if (notification.isDisplayed()) {
892                $('.google-one-tap-signin-highlights').addClass('active');
893            }
894            else if (notification.isNotDisplayed() || notification.isSkippedMoment()) {
895                $('.google-one-tap-signin-highlights').removeClass('active');
896            }
897        }
898
899        function sendGoogleAnalyticsEvent() {
900            if (WHITELABEL_PRIVILEDGE_CLIENT) {
901                ga.getAll()[0].send('event', 'Hyperlink - Signup', 'Click', 'Not a Lead');
902            }
903        }
904    
905        // Get cookie
906        function getCookieValueByName(cookie_name) {
907            // Split cookie string and get all individual name=value pairs in an array
908            let cookie_arr = document.cookie.split(";");
909            // Loop through the array elements
910            for(let i = 0; i < cookie_arr.length; i++) {
911                let cookie_pair = cookie_arr[i].split("=");
912                // Removing whitespace at the beginning of the cookie name and compare it with the given string
913                if(cookie_name == cookie_pair[0].trim()) {
914                    // Decode the cookie value and return
915                    return decodeURIComponent(cookie_pair[1]);
916                }
917            }
918            // Return null if not found
919            return null;
920        }
921
922        // Get Local Storage
923        function getLocalStorageByName(session_name) {
924            local_storage_data = localStorage.getItem(session_name);
925            if (local_storage_data) {
926                return local_storage_data
927            }
928            return null;
929        }
930
931        // Check creater mode status
932        function checkCreatorModeStatus() {
933            let client_features_value = getLocalStorageByName('client_features_status');
934            if (client_features_value) {
935                client_features_value = JSON.parse(client_features_value);
936                if (client_features_value['ft_active_creator_mode']) {
937                    return true;
938                }
939            }
940            return false;
941        }
942
943        // Convert text content Exam to Course
944        function updateContentExamToCourse(text, language_code) {
945            let result_string = text;
946            language_code = parseInt(language_code)         // Used to convert into number on case of string
947            switch (language_code) {
948                case 1: // English
949                    result_string = text.replaceAll("Exam", "Course").replaceAll("exam", "course");
950                    break;
951                case 2: // Hindi
952                    result_string = text.replaceAll("परीक्षाओं", "पाठ्यक्रम").replaceAll("परीक्षा", "पाठ्यक्रम");
953                    break;
954                case 14: // Spanish
955                    result_string = text.replaceAll("Ex\u00e1menes", "Cursos")
956                                        .replaceAll("ex\u00e1menes", "cursos")
957                                        .replaceAll("examen", "curso")
958                                        .replaceAll("Examen", "Curso");
959                    break;
960                case 15: // Arabic
961                    result_string = text.replaceAll("امتحان", "دورة").replaceAll("الامتحانات", "الدورات");
962            }
963            return result_string;
964        }
965
966
967        function setCookie(cookie_name, cookie_data, validity_seconds) {
968            let date = new Date();
969            date.setTime(date.getTime()+(validity_seconds*1000));
970            // A cookie value cannot contain semicolons, commas, or spaces. For this reason, we are using "encodeURIComponent" before saving.
971            document.cookie = `${cookie_name}=${encodeURIComponent(cookie_data)}; expires=${date.toGMTString()}; path=/; domain=${window.location.hostname}; secure`;
972        }
973
974        function getClientFeatureDataForLocalStorage() {
975            let meta_cookie_value = getCookieValueByName('client_meta');
976            if(meta_cookie_value != null) {
977                let client_features_value = getLocalStorageByName('client_features_status');
978                let api_response_data = JSON.parse(client_features_value);
979                updateFeatureVisibilility(api_response_data);
980            } else {
981                let url = "/api/v1/generic_handler?action=get_website_features_status";
982                $.get(url, function(resp) {
983                    if(resp.status) {
984                        let api_response_data = resp.result.data;
985                        localStorage.setItem('client_features_status', JSON.stringify(api_response_data));
986                        updateFeatureVisibilility(api_response_data);
987                    } else {
988                        console.log(resp.msg);
989                    }
990                }).fail(function() {
991                    console.log("Server side error");
992                });
993            }
994        }
995
996        function updateDynamicCssOnlanguageChange() {
997            let langCode = $("#langSwitcher").val();
998            if (langCode == 15) {
999                $('.school_footer, #desktop_navbar_height').attr("dir", "rtl");
1000                $('.lang_dynamic_css .sub_menu').css("padding-right", "0");
1001                $('.TsH_rightMenu_nav').attr("style", "float: left !important;");
1002                $('.TsH_rightMenu_nav .TsH_rgtMenu_link, #footer_div .menu_row').css({"display": "flex"});
1003                $('.tS_Phone_modal').css({"margin-left": 0, "padding-right": 0});
1004                $('.TsH_text_seprator').removeClass("TsH_text_seprator");
1005                $('.TsH_searchView .form-control').css({"border-top-right-radius": "50px", "border-bottom-right-radius": "50px", "border-top-left-radius": "0", "border-bottom-left-radius": "0"});
1006                $('.TsH_searchView .input-group-btn > .btn').css({"border-top-left-radius": "50px", "border-bottom-left-radius": "50px", "border-top-right-radius": "0", "border-bottom-right-radius": "0", "margin-left": "0"});
1007                $('#lang_container').parent().parent().css("display", "flex");
1008                $('#lang_container').parent().css("text-align", "left");
1009                $('.tst_powered').parent('a').css("float", "left");
1010                $('.copyright_menu').css("float", "left");
1011                $('.eg_copyright_text p').css("float", "right");
1012                $('.app_container').css({"display": "flex","justify-content":"end","padding-right":"0px"});
1013                $('#footer_div .addrss .info b').css({"margin-left": "5px", "margin-right": 0});
1014                $('img[alt="phone-call-icon"]').css({'transform':'scaleX(-1)'});
1015                $('#phoneMenu div').css({'margin-left':'0','margin-right':'10px'});
1016                $('a[href="/my_profile"] span').css({'margin-left':'0','margin-right':'10px'});
1017                $('#admin_li span').css({'margin-left':'0','margin-right':'10px'} );
1018                $('a[href="/logout"] span').css({'margin-left':'0','margin-right':'10px'});
1019                $('img[alt="esc_member_seal"]').css({'padding-right':'9px','border-right':'2px solid grey','padding-left':'0px','border-left':'0px solid grey'});
1020            } else {
1021                $('.app_container').css({"display": "flex","justify-content":"start","padding-left":"0px"});
1022            }
1023        }
1024
1025        function updateFeatureVisibilility(api_response_data) {
1026            if (api_response_data != null) {
1027                $(document).ready(function () {
1028                    $('body').trigger('client_features_status_created');
1029                });
1030                if (api_response_data['ft_disable_signup']) {
1031                    $("#signup_button").remove();
1032                    $("#login_page_signup_button").remove();
1033                }
1034                if (!api_response_data['ft_exam_calendar']) {
1035                    $("#exam_calendar_footer_link").remove();
1036                }
1037                if (api_response_data["show_whatsapp_contact"]) {
1038                    $("#phoneMenu img").replaceWith(`<img src="/static/images/Social_media_icons/whatsapp-icon.png?v=abe2731a68cc3efabc1c908899f2064c" alt="whatsapp-icon">`);
1039                    let contact_no = $("#phoneMenu").prop("href").split(':')[1].replaceAll('-', '');
1040                    $("#phoneMenu").prop("href", `https://wa.me/${contact_no}`).prop("target", "_blank");
1041                }
1042                if (api_response_data["ft_allow_erp"]) {
1043                    $('body').trigger('erp_base_url_loaded', [api_response_data['ft_allow_erp']]);
1044                    if (api_response_data['client_type'] === '2') {
1045                        $('#erp_li a span').html("School");
1046                    }
1047                    $('#erp_li').show();
1048                }
1049                if ('ft_ios_app_created' in api_response_data && api_response_data["ft_ios_app_created"]) {
1050                        $('#ios_app_download a').attr('href', api_response_data["ft_ios_app_created"]);
1051                        $('#footer_business_container, #app_header, #ios_app_download').show();
1052                }
1053                if ('url_telegram' in api_response_data && api_response_data["url_telegram"]) {
1054                    $('#url_telegram a').attr({'href': api_response_data["url_telegram"]});
1055                    $('#url_telegram').show();
1056                }
1057                if ('hide_search_bar' in api_response_data) {
1058                    $('.TsH_searchList').remove();
1059                }
1060                removeEmptyFooterSection();
1061            }
1062        }
1063
1064        function updateLanguageOption (api_response_data) {
1065            let vernacular_languages = [1, 2, 14, 15];
1065              // We are showing only vernacular languages here.
1066            let html = '';
1067            let languages = JSON.parse(api_response_data['allowed_languages']);
1068            $.each(languages, function (idx, value) {
1069                value = JSON.parse(value);
1070                if (vernacular_languages.includes(value[0])){
1071                    html += `<option value="${value[0]}">&nbsp; &nbsp; &nbsp;${value[1]}</option>`;
1072                }
1073            });
1074            $('#langSwitcher').html(html);
1075            $("#langSwitcher").val($.cookie("lang") || $('#langSwitcher option:first').val());
1076            $('#langSwitcher option:selected').text(`🌐 ${$('#langSwitcher option:selected').text().trim()}`);
1077            $('body').trigger('language_set');
1078            // Update css according to the language change
1079            updateDynamicCssOnlanguageChange();
1080        }
1081
1082        function getClientMetaCookie() {
1083            let client_meta_cookie_value = getCookieValueByName('client_meta');
1084            let client_meta_local_value = getLocalStorageByName('client_meta_data');
1085            if(client_meta_cookie_value != null) {
1086                let client_meta_data = JSON.parse(client_meta_cookie_value);
1087                let client_local_data = JSON.parse(client_meta_local_value);
1088                updateClientMetaVisibilility(client_meta_data);
1089                updateClientExtraMetaData(client_local_data);
1090            } else {
1091                let url = "/api/v1/generic_handler?action=get_client_meta";
1092                $.get(url, function(resp) {
1093                    if(resp.status) {
1094                        let api_response_data = resp.result.data;
1095                        setCookie('client_meta', JSON.stringify(api_response_data.cookies_data), 600);
1096                        localStorage.setItem('client_meta_data', JSON.stringify(api_response_data.local_storage_data));
1097                        updateClientMetaVisibilility(api_response_data.cookies_data);
1098                        updateClientExtraMetaData(api_response_data.local_storage_data);
1099                    } else {
1100                        console.log(resp.msg);
1101                    }
1102                }).fail(function() {
1103                    console.log("Server side error");
1104                });
1105            }
1106        }
1107
1108        function updateClientMetaVisibilility(api_response_data) {
1109            if (api_response_data != null) {
1110                $(document).ready(function () {
1111                    $('body').trigger('client_meta_created');
1112                });
1113                if (api_response_data['android_main_app_url'] || api_response_data['url_advertise_with_us']) {
1114                    $('#footer_business_container').show();
1115                    if (api_response_data['android_main_app_url']) {
1116                        if (!api_response_data['android_main_app_url'].includes('play.google.com')) { // For dropbox link we need to change the image source of the icon.
1117                            $('#android_app_download img').attr('data-src', '/static/images/download_apk.png');
1118                            $('#android_app_download a').removeAttr('target');
1119                        }
1120                        $('#android_app_download a').attr('href', api_response_data['android_main_app_url']);
1121                        $('#android_app_download, #app_header').show();
1122                    }
1123                    if (api_response_data['url_advertise_with_us']) {
1124                        $('#advertise a').attr('href', api_response_data['url_advertise_with_us']);
1125                        $('#advertise, #footer_article_heading_business').show();
1126                        $('.footer_heading_language').css({"margin-bottom": "17px", "font-weight": "500"});
1127                    }
1128                }
1129                if (window.location.host === 'testseries.javatpoint.com') {
1130                    $("#masthead_background_color").css('background',`url('/static/images/javaTpoint_mobile.jpg') center center / 100% 100%`);
1131                } else if (api_response_data['homepage_masthead'] != null) {
1132                    homepage_masthead_color = JSON.parse(api_response_data['homepage_masthead']);
1133                    $("#masthead_background_color").css('background',`linear-gradient(#${homepage_masthead_color.background[0]},#${homepage_masthead_color.background[1]})`);
1134                }
1135            }
1136        }
1137
1138        function updateClientExtraMetaData(local_storage_data){
1139            if (local_storage_data != null) {
1140                if (local_storage_data['logo_footer']) {
1141                    $('#eg_footer_logo_img').attr('src', local_storage_data['logo_footer']);
1142                }
1143                if (local_storage_data['url_about_us']) {
1144                    $('#footer_item_about_us').attr('href', local_storage_data['url_about_us']);
1145                    $('#eg_about_us').show();
1146                }
1147                if (local_storage_data['url_contact_us'] && local_storage_data['url_contact_us'] !== '') {
1148                    $('#eg_contact_us_url').attr('href', local_storage_data['url_contact_us']);
1149                    $('#eg_contact_us_url').show();
1150                } else {
1151                    $('#eg_contact_us_url').closest('li').remove();
1152                }
1153                if (local_storage_data['url_blog']) {
1154                    $('#footer_article_heading_blog').attr('href', local_storage_data['url_blog']);
1155                    $('#eg_url_blog').show();
1156                }
1157                const social_media_url_key = ['url_facebook', 'url_twitter', 'url_youtube', 'url_linkedin', 'url_instagram'];
1158                let any_social_media_url_key_exists = false;
1159                social_media_url_key.forEach(url_key => {
1160                    if (local_storage_data[url_key]) {
1161                        $(`#eg_${url_key} a`).attr('href', local_storage_data[url_key]);
1162                        $(`#eg_${url_key}`).show();
1163                        any_social_media_url_key_exists = true;
1164                    }
1165                });
1166
1167                if (!any_social_media_url_key_exists) {
1168                    $('#footer_follow_us_section').remove();
1169                } else {
1170                    $('#lang_container').parent().css('padding-top', '80px');
1171                }
1172                if (local_storage_data['header_footer_color_data']) {
1173                    let header_footer_color_data = JSON.parse(local_storage_data['header_footer_color_data']);
1174                    if (!WHITELABEL_PRIVILEDGE_CLIENT) {
1175                        $(".school_footer, #footer_div").css('background-color', `${header_footer_color_data[1]}`);
1176                        let color_style = {};
1177                        if (header_footer_color_data[3]) {
1178                            color_style = {"color": `${header_footer_color_data[3]}`}
1179                        } else {
1180                            if (header_footer_color_data[1] !== '' && header_footer_color_data[1] !== null) {
1181                                color_style = {
1182                                    "color": `${header_footer_color_data[1]}`,
1183                                    "filter": "invert(1)"
1184                                }
1185                            }
1186                        }
1187                        $(".info b, .footer_heading, #footer_follow_us_tag, .footer_heading_language, .sub_menu:not(#android_app_download, #ios_app_download) li a, .copyright_row div a, .eg_copyright_text p, .copyright_menu li a, .footer_email").css(color_style);
1188                    }
1189                    $("#Tst_Fixed_navbar").css({
1190                        'background-color': header_footer_color_data[0],
1191                        'border-radius': '0px'
1192                    });
1193                    if (header_footer_color_data[2]) {
1194                        $('.header_text').css('color', `${header_footer_color_data[2]}`);
1195                    } else {
1196                        if (header_footer_color_data[0] !== null && header_footer_color_data[0] !== '') {
1197                            $('.header_text').css({'color': `${header_footer_color_data[0]}`, 'filter': 'invert(1)'});
1198                        }
1199                    }
1200                }
1201                if (local_storage_data['url_refund_policy']) {
1202                    $('#eg_url_refund_policy a').attr('href', local_storage_data['url_refund_policy']);
1203                    $('#eg_url_refund_policy').show();
1204                }
1205                if (local_storage_data['url_sitemap']) {
1206                    $('#eg_url_sitemap a').attr('href', local_storage_data['url_sitemap']);
1207                    $('#eg_url_sitemap').show();
1208                }
1209                if (local_storage_data['url_privacy_policy']) {
1210                    $('#eg_url_privacy_policy a').attr('href', local_storage_data['url_privacy_policy']);
1211                    $('#eg_url_privacy_policy').show();
1212                }
1213                if (local_storage_data['url_terms_and_conditions']) {
1214                    $('#eg_url_terms_and_conditions a').attr('href', local_storage_data['url_terms_and_conditions']);
1215                    $('#eg_url_terms_and_conditions').show();
1216                }
1217                if (local_storage_data['url_disclaimer']) {
1218                    $('#eg_url_disclaimer a').attr('href', local_storage_data['url_disclaimer']);
1219                    $('#eg_url_disclaimer').show();
1220                }
1221                if (local_storage_data['header_logo_redirect_url']) {
1222                    $('#eg_header_logo_redirect_url').attr('href', local_storage_data['header_logo_redirect_url']);
1223                }
1224                if (local_storage_data['support_time']) {
1225                     function convertInCurrentTimezone(open_time, close_time) {
1226                        const start_time = new Date(), end_time = new Date();
1227                        const [start_hours, start_minutes] = open_time.split(':').map(Number);
1228                        const [end_hours, end_minutes] = close_time.split(':').map(Number);
1229                        start_time.setUTCHours(start_hours, start_minutes, 0, 0);
1230                        end_time.setUTCHours(end_hours, end_minutes, 0, 0);
1231
1232                        // Convert UTC time to local time zone.
1233                        let support_start_time = start_time.toLocaleTimeString('en-US', { hour12: true, hour: 'numeric', minute: 'numeric'});
1234                        let support_end_time = end_time.toLocaleTimeString('en-US', { hour12: true, hour: 'numeric', minute: 'numeric'});
1235                        return `${support_start_time} - ${support_end_time}`;
1236                    }
1237                    $('#support_time').text(`(${convertInCurrentTimezone(local_storage_data['support_time'].split(' - ')[0], local_storage_data['support_time'].split(' - ')[1])})`)
1238                }
1239                removeEmptyFooterSection();
1240                updateLanguageOption(local_storage_data);
1241            }
1242        }
1243
1244        function removeEmptyFooterSection() {
1245            // Removing the HELP Section if any list item is not available.
1246            if (!$('#help_section_footer ul li').length) {
1247                $('#help_section_footer').remove();
1248            }
1249            // Removing Follow us text if any list item is not available.
1250            if (!$('#footer_follow_us_section ul li').length) {
1251                $('#footer_follow_us_tag').remove();
1252                $('#footer_follow_us_section').remove();
1253            }
1254        }
1255
1256        function deleteCookie(name) {
1257            if (getCookieValueByName(name)) {
1258                document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:01 GMT";
1259            }
1260        }
1261
1262        function getUserProfileData() {
1263            return $.get("/api/v2/mytests/profilecard");
1264        }
1265        
1266        function showErrorMessage(message) {
1267            if (typeof angular !== 'undefined') {
1268                let ctrl_element;
1269                let vernacularStaticTextContentData;
1270
1271                if (angular.element('[ng-controller="loginCtrl"]').length > 0) {
1272                    ctrl_element = angular.element('form[name="sign_in_user"] h4');
1273                    vernacularStaticTextContentData = angular.element('[ng-controller="loginCtrl"]').scope().vernacularStaticTextContent;
1274                } else if (angular.element('[ng-controller="signupCtrl"]').length > 0) {
1275                    ctrl_element = angular.element('form[name="sign_up_user1"] h4');
1276                    vernacularStaticTextContentData = angular.element('[ng-controller="signupCtrl"]').scope().vernacularStaticTextContent;
1277                }
1278
1279                if (ctrl_element && ctrl_element.length > 0) {
1280                    let scope = ctrl_element.scope();
1281                    const applyFn = function () {
1282                        scope.logedin = 2;
1283                        if (message === 'email not found') {
1284                            scope.error_msg = vernacularStaticTextContentData['email_not_found'];
1285                        }
1286                    };
1287                    if (!scope.$$phase) {
1288                        scope.$apply(applyFn);
1289                    } else {
1290                        applyFn();
1291                    }
1292                }
1293            }
1294        }
1295
1296        function notify_mo_engage_user_login_signup(auth_type, source, event_success, error_msg='') {
1297            // NOTE : This function is also used in response of google and facebook login so on removing this function keep in mind to remove from there as well.
1298            let next_link = getUrlArgument("next");
1299            if (event_success) {
1300                getUserProfileData().done(function(response) {
1301                    if (response.status) {
1302                        try {
1303                            Moengage.add_user_name(response.result.data.name);
1304                            Moengage.add_email(response.result.data.email);
1305                            Moengage.add_mobile(response.result.data.phone_no);
1306                            Moengage.add_user_attribute("address", response.result.data.address);
1307                            Moengage.add_unique_user_id(response.result.data.user_id
1307);
1308                            Moengage.track_event(auth_type, {
1309                                'type': "success",
1310                                'custom_platform': isMobile() ? "mweb" : "web",
1311                                'utm_source': url_all_params.get('utm_source'),
1312                                'selected_language': $("#langSwitcher option:selected").text(),
1313                                'campaign_name': url_all_params.get('campaign_name'),
1314                                'login_source': source
1315                            }).then(function() {
1316                                if (next_link) {
1317                                    window.location.href = next_link;           
1318                                }
1319                                else {
1320                                    window.location.reload();
1321                                }
1322                            });
1323                        } catch(err) {
1324                            console.log("Moengage Error : " + err);
1325                            if (next_link) {
1326                                window.location.href = next_link;           
1327                            }
1328                            else {
1329                                window.location.reload();
1330                            }
1331                        }
1332                    }
1333                }).fail(function(error) {
1334                    Moengage.track_event(auth_type, {
1335                        'type': "failed",
1336                        'custom_platform': isMobile() ? "mweb" : "web",
1337                        'utm_source': url_all_params.get('utm_source'),
1338                        'error_msg': `Error HTTP Status: ${error.status}`,
1339                        'selected_language': $("#langSwitcher option:selected").text(),
1340                        'campaign_name': url_all_params.get('campaign_name'),
1341                        'login_source': source
1342                    });
1343                    console.log("Something went wrong! Please try again later!");
1344                });
1345            }
1346            else {
1347                Moengage.track_event(auth_type, {
1348                    'type': "failed",
1349                    'custom_platform': isMobile() ? "mweb" : "web",
1350                    'utm_source': url_all_params.get('utm_source'),
1351                    'error_msg': error_msg,
1352                    'selected_language': $("#langSwitcher option:selected").text(),
1353                    'campaign_name': url_all_params.get('campaign_name'),
1354                    'login_source': source
1355                });
1356            }
1357        }
1358
1359        // Set user profile picture
1360        if (getCookieValueByName('eg_user')) {
1361            $('.TsH_rightMenu_nav .TsH_prof img').removeAttr("data-src");
1362            if (getCookieValueByName('profile_img_url')) {
1363                $('.TsH_rightMenu_nav .TsH_prof img').attr("src", getCookieValueByName('profile_img_url'));
1364            }
1365            else {
1366                getUserProfileData().done(function(response) {
1367                    let profile_img_url = response.result.data.profile_image;
1368                    $('.TsH_rightMenu_nav .TsH_prof img').attr("src", profile_img_url);
1369                    $.cookie("profile_img_url",profile_img_url,{path:"/", secure:true});
1370                });
1371            }
1372        } else {
1373            deleteCookie('profile_img_url');
1374        }
1375
1376        function isMobile() {
1377            let check = false;
1378            // For more info go ref: https://stackoverflow.com/questions/11381673/detecting-a-mobile-browser
1379            (function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|
1379sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera);
1380            return check;
1381        }
1382
1383        // function to decode and get query argument in url based on key, if present
1384        function getUrlArgument(arg) {
1385            var vars = {};
1386            var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
1387                vars[key] = value;
1388            });
1389            if (arg in vars) {
1390                return decodeURIComponent(vars[arg]);
1391            }
1392            return "";
1393        }
1394
1395        Moengage.add_user_attribute("last_viewed_url", window.location.href)
1396        Moengage.add_user_attribute("dashboard", window.location.href);
1397
1398        function getCurrencySymbol() {
1399            let client_features_value = localStorage.getItem('client_features_status');
1400            if (client_features_value !== null) {
1401                let features_value_data = JSON.parse(client_features_value);
1402                return 'currency_symbol' in features_value_data ? features_value_data['currency_symbol'] : '₹';
1403            }
1404            return '₹';
1405        }
1406	</script>
1406
1407    
1407<script>
1408    // This is done to add separator between footer items like Disclaimer, Terms & Conditions, etc
1409    $.each($(".eg_copyright_link li").not(":last"), function(index, elem) {
1410        let html = '';
1411        let client_meta_data = JSON.parse(getLocalStorageByName('client_meta_data'));
1412        let lang_code = $("#langSwitcher").val();
1413        if ('header_footer_color_data' in client_meta_data && client_meta_data.header_footer_color_data !== null) {
1414            let header_footer_color = JSON.parse(client_meta_data.header_footer_color_data);
1415            if (header_footer_color[3]) {
1416                html = `<span class="dividers" style="color: ${header_footer_color[3]};${lang_code == 15 ? 'float: right;' : ''}">|</span>`;
1417            } else {
1418                html = `<span class="dividers" style="${lang_code == 15 ? 'float: right;' : ''}${header_footer_color[1] ? `color: ${header_footer_color[1]} !important; filter: invert(1);` : ''}">|</span>`;
1419            }
1420        } else {
1421            html = `<span class="dividers" ${lang_code == 15 ? 'style="float: right;"' : ''}>|</span>`;
1422        }
1423        $(elem).append(html);
1424    });
1425    if(window.location.host === 'app.onlinepcmb.com') {
1426        // This is a very dirty solution to meet the requirements of the client that was procured without Tech team approval. Not at all proud of this solution and needs to be fixed later.
1427        $('#footer_article_heading_student, #footer_article_heading_blog').html("Blogs");
1428        $('#footer_article_heading_business, #footer_article_heading_advertise').html("Achievers");
1429    } else if(window.location.host === 'lore-light.com') {
1430        $('#footer_article_heading_blog').html("Auro Scholarship");
1431    } else if(window.location.host === 'edujoball.co.in') {
1432        $('#footer_article_heading_student').html("Exam Notification");
1433        $('#footer_article_heading_help').html("Job Notification");
1434    } else if(window.location.host === 'testseries.gurbiz.com') {
1435        $('#phoneMenu').html(($('#phoneMenu').html()).replace('+91-',''));
1436        $('#phoneMenu').attr('href',($('#phoneMenu').attr('href')).replace('+91-', ''));
1437    } else if(window.location.host === 'testseries.multitutor.in') {
1438        $('.TsH_signUp').attr("style", "background: #456dff; border: 1px solid #456dff; ");
1439        $(".TsH_signUp").mouseover(function() {
1440            $(this).attr("style", "color: #456dff !important; background: transparent; border: 1px solid #456dff;");
1441        }).mouseout(function() {
1442            $(this).attr("style", "background: #456dff; color: #ffff; border: 1px solid #456dff;");
1443        });
1444        $('.TsH_login').attr("style", "background: #2e384d; border: 1px solid #2e384d; color: #ffff");
1445        $(".TsH_login").mouseover(function() {
1446            $(this).attr("style", "color: #2e384d; background: transparent;");
1447        }).mouseout(function() {
1448            $(this).attr("style", "background: #2e384d; color: #ffff;");
1449        });
1450        $("#footer_article_heading_about").html("GET TO KNOW US");
1451        $("#footer_item_about_us").html("Services");
1452        $("#footer_article_heading_student").html("SCHOLARSHIP");
1453        $("#footer_article_heading_business").html("PARTNER WITH US");
1454    } else if(["mocktests.thecatalystz.com", "testprep.ilrnu.com"].includes(window.location.host)) {
1455        $(".school_footer, #footer_div").css('background-color', '#000000');
1456        $(".info b, .footer_heading").css({
1457            "color": "#dddddd",
1458            "font-weight": "600"
1459        });
1460        $(".school_footer a").css("color", "#a1a7ad");
1461        $(".school_footer, .eg_footer_logo, .eg-footer-social, .download_app").css('filter', 'invert(1)');
1462        $(".school_footer a, sub_menu li").hover(function(){
1463            $(this).css("color", "#b4231e");
1464        }, function(){
1465            $(this).css("color", "#a1a7ad");
1466        });
1467        if(window.location.host === 'testprep.ilrnu.com') {
1468            // This is a very dirty solution to meet the requirements of the client that was procured without Tech team approval. Not at all proud of this solution and needs to be fixed later.
1469            $('#footer_article_heading_advertise').html("Become A Business Partner");
1470            $('#footer_link_disclaimer').html("Refer And Earn");
1471            $("#footer_item_about_us").html("FAQs");
1472        }
1473    } else if(window.location.host === 'sharpglobalschool.in') {
1474        $('#footer_article_heading_blog').html("CBSE Disclosure");
1475    } else if(window.location.host === 'testportal.geoias.com') {
1476        $('.TsH_signUp').attr("style", "background: #00AFEF; border: 1px solid #00AFEF !important;");
1477        $(".TsH_signUp").mouseover(function() {
1478            $(this).attr("style", "color: #00AFEF !important; background: transparent; border: 1px solid #00AFEF !important;");
1479        }).mouseout(function() {
1480            $(this).attr("style", "background: #00AFEF; color: #ffff; border: 1px solid #00AFEF !important;");
1481        });
1482    }
1483    </script>
1483
1484</body>
1485
1486</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.