1 2 3 4 5 6 7 8<!DOCTYPE html> 9<html lang="en"> 10<head> 11<title>PowershellAcademy</title> 12 13 14 <meta name="keywords" content=""/> 15 <meta name="description" content=""/> 16 <meta name="google-site-verification" content="" /> 17 18 <meta property="og:url" content="https://www.powershellacademy.com" /> 19 <meta property="og:type" content="website" /> 20 <meta property="og:title" content="PowershellAcademy" /> 21 <meta property="og:description" content="" /> 22 <meta property="og:image" content="https://www.powershellacademy.com/logo.png?v=13" /> 23 24 25 26 27 28 29 30
31<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"errorBeacon":"bam.nr-data.net","licenseKey":"NRJS-3c5e94b79297c3f66ad","agent":"","beacon":"bam.nr-data.net","applicationTime":669,"applicationID":"1108160141","transactionName":"Y1RVZkAHVhIHBUZfWVoeZEJAD1YGJQlcQkRbXVtXQEkYSSEjZh8=","queueTime":0}; 32(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]},distributed_tracing:{enabled:true}};(window.NREUM||(NREUM={})).loader_config={agentID:"1134555315",accountID:"3033394",trustKey:"3033394",xpid:"VwYEUlVaDBABVVFaBgcHV1AA",licenseKey:"NRJS-3c5e94b79297c3f66ad",applicationID:"1108160141",browserID:"1134555315"};;/*! For license information please see nr-loader-spa-1.323.0.min.js.LICENSE.txt */ 33(()=>{var e={8122(e,t,r){"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),s=0===Object.keys(r).length?e:r;for(let a in s)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):e[a]instanceof Map||e[a]instanceof Set||e[a]instanceof Date||e[a]instanceof RegExp?r[a]=e[a]:"object"==typeof e[a]&&null!==t[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){r[a]||(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555(e,t,r){"use strict";r.d(t,{f:()=>a});var n=r(384),i=r(8122);const s={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0};function a(e){try{return!!e.licenseKey&&!!e.errorBeacon&&!!e.applicationID}catch(e){return!1}}r.d(t,["D",0,e=>(0,i.a)(e,s)])},7699(e,t,r){"use strict";var n=r(860);const i={[n.K7.logging]:!0,[n.K7.genericEvents]:!0,[n.K7.jserrors]:!0,[n.K7.ajax]:!0};r.d(t,["It",0,1e6,"KC",0,i,"qh",0,"SESSION_ERROR"])},9324(e,t,r){"use strict";r.d(t,["A",0,"@newrelic/rrweb","x",0,"1.323.0"])},981(e,t,r){"use strict";r.d(t,["R",0,{AJAX:"AjaxRequest",PA:"PageAction",UA:"UserAction",BP:"BrowserPerformance",WS:"WebSocket",SPV:"SecurityPolicyViolation",JSE:"JavaScriptError",LOG:"Log",PVE:"PageView",PVT:"PageViewTiming",SR:"SessionReplay",ST:"SessionTrace",BI:"BrowserInteraction"}])},9752(e,t,r){"use strict";const n="newrelic-iframe-",i=n+"timing-update",s=n+"api",a=n+"api-response",o=n+"vitals-update",c=n+"ajax";r.d(t,["$8",0,o,"Gi",0,a,"KU",0,c,"Pl",0,n,"cS",0,s,"cr",0,i])},6154(e,t,r){"use strict";var n=r(1863);const i="undefined"!=typeof window&&!!window.document,s="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),o=Boolean("hidden"===a?.document?.visibilityState),c=""+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=d&&"undefined"==typeof SharedWorker,l=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),f=Date.now()-(0,n.t)();r.d(t,["OF",0,d,"RI",0,i,"WN",0,f,"bv",0,s,"gm",0,a,"lR",0,l,"m",0,c,"mw",0,o,"sb",0,u,"zk",0,()=>{const e=a?.performance?.getEntriesByType?.("navigation")?.[0];if(e&&e.responseStart>0&&e.responseStart<a.performance.now())return e}])},7295(e,t,r){"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>s});var n=[];function i(e){if(!e||s(e))return!1;if(0===n.length)return!0;if("*"===n[0].hostname)return!1;for(var t=0;t<n.length;t++){var r=n[t];if(r.hostname.test(e.hostname)&&r.pathname.test(e.pathname))return!1}return!0}function s(e){return void 0===e.hostname}function a(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;if("*"===r)return void(n=[{hostname:"*"}]);0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let s,a;i>0?(s=r.substring(0,i),a=r.substring(i)):(s=r,a="*");let[c]=s.split(":");n.push({hostname:o(c),pathname:o(a,!0)})}}function o(e,t=!1){const r=e.replace(/[.+?^${}()|[\]\\]/g,e=>"\\"+e).replace(/\*/g,".*?");return new RegExp((t?"^":"")+r+"$")}},3241(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(6154);function i(e={}){try{n.gm.dispatchEvent(new CustomEvent("newrelic",{detail:e}))}catch(e){}}},1687(e,t,r){"use strict";r.d(t,{Ak:()=>o,Ze:()=>d,x3:()=>c});var n=r(3241),i=r(3606),s=r(860),a=r(2646);function o(e,t){if(!e)return;const r={staged:!1,priority:s.P3[t]||0};
33e.runtime.drainRegistry.get(t)||e.runtime.drainRegistry.set(t,r)}function c(e,t){if(!e)return;const r=e.runtime.drainRegistry;r&&(r.get(t)&&r.delete(t),l(e,t,!1),r.size&&u(e))}function d(e,t="feature",r=!1){if(e){if(!e.runtime.drainRegistry.get(t)||r)return l(e,t);e.runtime.drainRegistry.get(t).staged=!0,u(e)}}function u(e){if(!e)return;const t=Array.from(e.runtime.drainRegistry);t.every(([e,t])=>t.staged)&&(t.sort((e,t)=>e[1].priority-t[1].priority),t.forEach(([t])=>{e.runtime.drainRegistry.delete(t),l(e,t)}))}function l(e,t,r=!0){if(!e)return;const s=e.ee,o=i.i.handlers;if(s&&!s.aborted&&s.backlog&&o){if((0,n.W)({type:"lifecycle",name:"drain",feature:t}),r){const e=s.backlog[t],r=o[t];if(r){for(let t=0;e&&t<e.length;++t)f(e[t],r);Object.entries(r).forEach(([e,t])=>{Object.values(t||{}).forEach(t=>{t[0]?.on&&t[0].context()instanceof a.y&&!t[0].listeners(e).includes(t[1])&&t[0].on(e,t[1])})})}}s.isolatedBacklog||delete o[t],s.backlog[t]=null,s.emit("drain-"+t,[])}}function f(e,t){var r=e[1];Object.values(t[r]||{}).forEach(t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],s=e[2];n.apply(i,s)}})}},7836(e,t,r){"use strict";var n=r(384),i=r(8990),s=r(2646),a=r(5607);const o="nr@context:".concat(a.W),c=function e(t,r){var n={},a={},u={},l=!1;try{l=16===r.length&&d.initializedAgents?.[r]?.runtime.isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,s){!1!==s&&(s=!0);if(c.aborted&&!i)return;t&&s&&t.emit(e,r,n);var o=h(n);g(e).forEach(e=>{e.apply(o,r)});var d=v()[a[e]];d&&d.push([f,e,r,o]);return o},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach(([e,n])=>{a[n]=t,t in r||(r[t]=[])})},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach(e=>{delete f.backlog[e]})},isBuffering:function(e){return!!v()[a[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function h(e){return e&&e instanceof s.y?e:e?(0,i.I)(e,o,()=>new s.y(o)):new s.y(o)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return u[t]=u[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=c),r.d(t,["P",0,o,"ee",0,c])},2646(e,t,r){"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908(e,t,r){"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,s){s?(s.buffer([e],i),s.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(9908);s.on=a;var i=s.handlers={};function s(e,t,r,s){a(s||n.d,i,e,t,r)}function a(e,t,r,i,s){s||(s="feature"),e||(e=n.d);var a=t[s]=t[s]||{};(a[r]=a[r]||[]).push([e,i])}},3878(e,t,r){"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function s(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>s,jT:()=>n,sp:()=>i})},5607(e,t,r){"use strict";const n=(0,r(9566).bz)();r.d(t,["W",0,n])},9566(e,t,r){"use strict";r.d(t,{LA:()=>a,ZF:()=>o,bz:()=>s,el:()=>c});var n=r(6154);function i(e,t){return e?15&e[t]:16*Math.random()|0}function s(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("").map(e=>"x"===e?i(t,r++).toString(16):"y"===e?(3&i()|8).toString(16):e).join("")}function a(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,s=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var o=0;o<e;o++)a.push(i(r,s++).toString(16));return a.join("")}function o(){return a(16)}function c(){return a(32)}},2614(e,t,r){"use strict";r.d(t,["BB",0,18e5,"Wt",0,"NRBA_SESSION::","g",0,{OFF:0,FULL:1,ERROR:2},"iL",0,{SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},"tS",0,{STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},"wk",0,144e5])},733(e,t,r){"use strict";function n(e,t){return function(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}("".concat(String(e),":").concat(String(t)))}r.d(t,{Y:()=>n})},1863(e,t,r){"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},9119(e,t,r){"use strict";r.d(t,{L:()=>s});var n=/([^?#]*)[^#]*(#[^?]*|$).*/,i=/([^?#]*)().*/;function s(e,t){return e?e.replace(t?n:i,"$1$2"):e}},7485(e,t,r){"use strict";r.d(t,{D:()=>i});var n=r(6154);function i(e){if(0===(e||"").indexOf("data:"))return{protocol:"data"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(":")),sameOrigin:t.protocol===n.gm?.location?.protocol&&t.host===n.gm?.location?.host};return r.port&&""!==r.port||("http:"===t.protocol&&(r.port="80"),"https:"===t.protocol&&(r.port="443")),r.pathname&&""!==r.pathname?r.pathname.startsWith("/")||(r.pathname="/".concat(r.pathname)):r.pathname="/",r}catch(e){return{}}}},7866(e,t,r){"use strict";r.d(t,["Nc",0,/^\s*at Function code \(Function code:\d+:\d+\)\s*/i,"cn",0,/^\s*(?:([^@]*)(?:\(.*?\))?@)?((?:file|http|https|chrome|safari-extension).*?):(\d+)(?::(\d+))?\s*$/i,"fL",0,/^\s*at .+ \(eval at \S+ \((?:(?:file|http|https):[^)]+)?\)(?:, [^:]*:\d+:\d+)?\)$/i,"h3",0,/function (.+?)\s*\(/,"hB",0,/^\s*at (?:((?:\[object object\])?(?:[^(]*\([^)]*\))*[^()]*(?: \[as \S+\])?) )?\(?((?:file|http|https|chrome-extension):.*?)?:(\d+)(?::(\d+))?\)?\s*$/i])},944(e,t,r){"use strict";r.d(t,{R:()=>i});var n=r(3241);function i(e,t){"function"==typeof console.debug&&(console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t),(0,n.W)({drained:null,type:"data",name:"warn",feature:"warn",data:{code:e,secondary:t}}))}},8990(e,t,r){"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389(e,t,r){"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout(()=>{i=clearTimeout(i)},t)),n||(clearTimeout(i),i=setTimeout(()=>{e.apply(this,r)},t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},1910(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(944);const i=new Map;function s(...e){return e.every(e=>{if(i.has(e))return i.get(e);const t="function"==typeof e?e.toString():"",r=t.includes("[native code]"),s=t.includes("nrWrapper");return r||s||(0,n.R)(64,e?.name||t),i.set(e,r),r})}},3304(e,t,r){"use strict";r.d(t,{A:()=>i});var n=r(7836);function i(e){try{return JSON.stringify(e,(()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}})())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},9232(e,t,r){"use strict";r.d(t,["f",0,{MFE:"MFE",BA:"BA"}])},7560(e,t,r){"use strict";r.d(t,{N:()=>a,j:()=>c});var n=r(9119),i=r(944);const s=(0,r(6389).J)(e=>(0,i.R)(80,e));function a(e){if(!Array.isArray(e?.assets)||!e.assets.length)return;
33const t=e.assets.map(o).filter(Boolean);return t.length?{assets:t,scripts:t.filter(e=>e.isScript)}:void 0}function o(e){if(!e||"object"!=typeof e)return;const{matcher:t,type:r}=e;let i="string"==typeof t&&t.endsWith(".js");return void 0!==r&&(!function(e){return"script"===e||"asset"===e}(r)?s(r):i=function(e){return"script"===e}(r)),a=t,"[object RegExp]"===Object.prototype.toString.call(a)?{pattern:t,test:e=>(t.lastIndex=0,t.test((0,n.L)(e))),isScript:i}:"string"==typeof t&&t.length>0?{pattern:t,test:e=>(0,n.L)(e).includes(t),isScript:i}:void s(t);var a}function c(e,t,{scriptsOnly:r=!1}={}){if(!e||!t)return!1;return(r?e.scripts:e.assets).some(e=>e.test(t))}},5718(e,t,r){"use strict";r.d(t,{xo:()=>T,AZ:()=>v,cI:()=>g,Qr:()=>A,QL:()=>y});var n=r(6154),i=r(1863),s=r(9119),a=r(7866);class o{dom=new c;performance=new c;constructor(e){this.url=e,this.claimedBy=new Set}get script(){const e=Math.max(this.dom.start,this.performance.end);return{start:e,end:Math.max(this.dom.end,this.performance.end,e)}}}class c{start=0;end=0;value=void 0}function d(e=()=>{},t){return{get:()=>void 0!==t?t:e(),set:e=>{t=e}}}let u;try{u=v(y())[0]}catch(e){u=v(e)[0]}const l=new Map;let f=[];const h=new WeakMap;function p(e){let t=h.get(e);return t||(t={weighedAssetUrls:new Set,recordManifestScriptWindow:(t,r)=>{t&&(e.scriptStart=e.scriptStart>0?Math.min(e.scriptStart,t):t),r&&(e.scriptEnd=e.scriptEnd>0?Math.max(e.scriptEnd,r):r)}},h.set(e,t)),t}function g(e){return l.get(e)}function m(e){const t=g(e);
33if(t)return t;const r=new o(e);if(l.set(e,r),l.size>1e3){const e=l.keys().next().value;l.delete(e)}return r}if(n.gm.MutationObserver&&n.gm.document){new MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{if("SCRIPT"===e.nodeName&&e.src){const t=m((0,s.L)(e.src));t.dom.start=(0,i.t)(),t.dom.value=e;const r=()=>{t.dom.end=(0,i.t)()};["load","error"].forEach(t=>e.addEventListener(t,r,{once:!0}))}})})}).observe(n.gm.document,{childList:!0,subtree:!0})}if(n.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{if((e=>"script"===e.initiatorType||["link","fetch"].includes(e.initiatorType)&&(0,s.L)(e.name).endsWith(".js"))(e)){const t=m((0,s.L)(e.name));t.performance.start=Math.floor(e.startTime),t.performance.end=Math.floor(e.responseEnd),t.performance.value=e}if(!f.length)return;const t=[];f.forEach(({test:r,addedAt:n},s)=>{(r(e)||(0,i.t)()-n>1e4)&&t.push(s)}),f=f.filter((e,r)=>!t.includes(r))})}).observe({type:"resource",buffered:!0})}function v(e){if(!e||"string"!=typeof e)return[];const t=new Set,r=e.split("\n");for(const e of r){const r=e.match(a.cn)||e.match(a.hB)||e.match(a.fL);if(r&&r[2])t.add((0,s.L)(r[2]));else{const r=e.match(/\(([^)]+\.js):\d+:\d+\)/)||e.match(/^\s+at\s+([^\s(]+\.js):\d+:\d+/);r&&r[1]&&t.add((0,s.L)(r[1]))}}return[...t]}function y(){let e;try{const t=Error.stackTraceLimit;Error.stackTraceLimit=50,e=(new Error).stack,Error.stackTraceLimit=t}catch(t){e=(new Error).stack}return e}function b(e,t){return(0,s.L)(e.name)===t}function E(e,t){e.fetchStart=Math.floor(t.startTime),e.fetchEnd=Math.floor(t.responseEnd),e.asset=t.name,e.type=t.initiatorType,w(e,t)}function w(e,t){const r=(0,s.L)(t.name),{weighedAssetUrls:n}=p(e);n.has(r)||(n.add(r),e.totalWeight=(e.totalWeight||0)+(t.transferSize||0),"blocking"===t.renderBlockingStatus?e.renderBlocking=!0:"non-blocking"===t.renderBlockingStatus&&!0!==e.renderBlocking&&(e.renderBlocking=!1))}function R(e,t,r,n,i){if(w(e,t),"scripts"!==i&&"all"!==i)return;if("all"===i||r.isScript){const r=Math.floor(t.startTime),n=Math.floor(t.responseEnd);e.fetchStart=e.fetchStart>0?Math.min(e.fetchStart,r):r,e.fetchEnd=e.fetchEnd>0?Math.max(e.fetchEnd,n):n}if(r.isScript){const r=g((0,s.L)(t.name));if(r){const t=()=>{const{start:t,end:n}=r.script;p(e).recordManifestScriptWindow(t,n)};t(),!r.dom.end&&r.dom.value&&["load","error"].forEach(e=>r.dom.value.addEventListener(e,t,{once:!0}))}n.resolved||(e.asset=t.name,e.type=t.initiatorType,n.resolved=!0)}}function T(e,t){const r=t?.manifest;if(!r||!r.assets.length)return;const s={resolved:!1},a=new Set(r.assets);(n.gm.performance?.getEntriesByType("resource")||[]).forEach(r=>{const n=[...a].find(e=>e.test(r.name));n&&(R(e,r,n,s,t.timingMethod),a.delete(n))}),a.size&&function(e,t,r,s){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:n=>{const i=[...t].find(e=>e.test(n.name));return i&&(R(e,n,i,r,s),t.delete(i)),0===t.size}})}(e,a,s,t.timingMethod)}function A(e){const t=e?.id,r={registeredAt:(0,i.t)(),reportedAt:void 0,fetchStart:0,fetchEnd:0,scriptStart:0,scriptEnd:0,asset:void 0,type:"unknown",totalWeight:0,renderBlocking:void 0},a=y();if(!a)return r;const o=n.gm.performance?.getEntriesByType("navigation")?.[0]?.name||"";try{const e=v(a),c=(e.length>1?e.filter(e=>u!==e):e)[0];if(!c)return r;if(o.includes(c))return r.asset=(0,s.L)(o),r.type="inline",r;r.correlation=g(c);const l=r.correlation?.performance.value||n.gm.performance?.getEntriesByType("resource")?.find(e=>b(e,c));if(l)E(r,l);else{(function(e){if(!e||!n.gm.document)return!1;try{const t=n.gm.document.querySelectorAll('link[rel="preload"][as="script"]');for(const r of t)if((0,s.L)(r.href)===e)return!0}catch(e){}return!1})(c)&&(r.asset=c,r.type="preload"),function(e,t){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:r=>!!b(r,t)&&(E(e,r),!0)})}(r,c)}const h=r.correlation,m=!!t&&!!h?.claimedBy.has(t);h&&t&&h.claimedBy.add(t);const y=()=>{const e=h?.script.start;if(!m||!e)return!1;return r.registeredAt-e>1e4};let w=0,R=0;p(r).recordManifestScriptWindow=(e,t)=>{e&&(w=w>0?Math.min(w,e):e),t&&(R=R>0?Math.max(R,t):t)},Object.defineProperty(r,"scriptStart",d(()=>{const e=y()?r.registeredAt:h?.script.start??r.fetchEnd;return w>0?Math.min(e,w):e})),Object.defineProperty(r,"scriptEnd",d(()=>{const e=y()?r.registeredAt:h?.script.end??r.registeredAt;return R>0?Math.max(e,R):e}))}catch(e){}return r}},5732(e,t,r){"use strict";r.d(t,{$5:()=>m,B5:()=>g,K6:()=>u,M$:()=>
33o,Ms:()=>d,NG:()=>c,Ux:()=>h,YA:()=>p,yx:()=>l});var n=r(5718),i=r(7560),s=r(9119),a=r(9232);function o(e){return e?.type===a.f.MFE}function c(e,t){if(!y(e,t))return;const r=t.runtime.registeredEntities;return r?.find(t=>t.metadata.target.iframeInterfaceId===e)}function d(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities;return r?.filter(t=>String(t.metadata.target.id)===String(e)).map(e=>e.metadata.target)||[]}function u(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=(0,s.L)(e),a=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!1}):!!t.metadata.timings?.asset&&(0,s.L)(t.metadata.timings.asset)===n});return f(a).map(e=>e.metadata.target)}function l(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!0}):!!t.metadata.timings?.asset?.endsWith(e)});return f(n).map(e=>e.metadata.target)}function f(e){if(!e?.length)return e||[];const t=new Map,r=[];for(const n of e){const e=n.metadata?.timings?.asset;if(!e){r.push(n);continue}const i="".concat(e,"::").concat(n.metadata?.target?.id),s=t.get(i);if(s){if(s.metadata.target?.blocked&&!n.metadata.target?.blocked){const e=r.indexOf(s);-1!==e&&(r[e]=n),t.set(i,n)}}else t.set(i,n),r.push(n)}return r}function h(e,t){return v(t)?o(e)?e.attributes:t.agentRef.runtime.v2Target.attributes:{}}function p(e,t){return g(e,t)?{"child.id":e.id,"child.type":e.type,...h(void 0,t)}:{}}function g(e,t){return o(e)&&!!v(t)&&t.agentRef.init.api.register.duplicate_data_to_container}function m(e){if(!e?.runtime)return[];if(!y(!0,e)||!e.runtime.registeredEntities?.length)return[e.runtime.v2Target];const t=[];try{var r=(0,n.AZ)((0,n.QL)());let i=r.length-1;for(;r[i];)t.push(...l(r[i--],e))}catch(e){}const i=function(e){const t=new Set,r=[];for(const n of e){const e=n?.instance;t.has(e)||(t.add(e),r.push(n))}return r}(t);return i.length||i.push(e.runtime.v2Target),i}function v(e){return 2===e?.harvestEndpointVersion}function y(e,t){return!!e&&!!t?.init.api.register.enabled}},5289(e,t,r){"use strict";r.d(t,{GG:()=>a,Qr:()=>c,sB:()=>o});var n=r(3878),i=r(6389);function s(){return"undefined"==typeof document||"complete"===document.readyState}function a(e,t){if(s())return e();const r=(0,i.J)(e),a=setInterval(()=>{s()&&(clearInterval(a),r())},500);(0,n.sp)("load",r,t)}function o(e){if(s())return e();(0,n.DD)("DOMContentLoaded",e)}function c(e){if(s())return e();(0,n.sp)("popstate",e)}},384(e,t,r){"use strict";r.d(t,{Zm:()=>c,bQ:()=>u,dV:()=>d,pV:()=>l});var n=r(6154),i=r(1863),s=r(944),a=r(1910);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function c(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function d(){let e=c();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate||n.gm.setInterval,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket},(0,a.i)(...Object.values(e.o))),e}function u(e,t){let r=c();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t,2===Object.keys(r.initializedAgents).length&&(0,s.R)(69)}function l(){return function(){let e=c();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=c();const t=e.init||{};e.init={...t}}(),d(),function(){let e=c();const t=e.loader_config||{};e.loader_config={...t}}(),c()}r.d(t,["NT",0,o])},2843(e,t,r){"use strict";r.d(t,{G:()=>s,u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)},r,i)}function s(e,t,r){(0,n.sp)("pagehide",e,t,r)}},8139(e,t,r){"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),s=r(8990),a=r(6154);const o={},c=a.gm.XMLHttpRequest,d="addEventListener",u="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e,t){var r=function(e){return(e||n.ee).get("events")}(e);if(o[r.debugId]++)return r;o[r.debugId]=1;var f=(0,i.YM)(r,!0,t);function p(e){f.inPlace(e,[d,u],"-",g)}function g(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,p),c&&h(c.prototype,p),h(a.gm,p)),r.on(d+"-start",function(e,t){var r=e[1];if(null!==r&&("function"==typeof r||"object"==typeof r)&&"newrelic"!==e[0]){var n=(0,s.I)(r,l,function(){var e={object:function(){if("function"!=typeof r.handleEvent)return;return r.handleEvent.apply(r,arguments)},function:r}[typeof r];return e?f(e,"fn-",null,e.name||"anonymous"):r});this.wrapped=e[1]=n}}),r.on(u+"-start",function(e){e[1]=this.wrapped||e[1]}),r}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,d);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434(e,t,r){"use strict";r.d(t,{YM:()=>d});var n=r(7836),i=r(5607),s=r(5732);const a="nr@original:".concat(i.W);var o=Object.prototype.hasOwnProperty,c=!1;function d(e,t,r){return e||(e=n.ee),i.inPlace=function(e,t,r,n,s,a){r||(r="");const o="-"===r.charAt(0);for(let c=0;c<t.length;c++){const d=t[c],u=e[d];l(u)||(e[d]=i(u,o?d+r:r,n,d,s,a))}},i.flag=a,i;function i(t,n,i,c,f,h){return l(t)?t:(n||(n=""),nrWrapper[a]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach(function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})}),t}catch(e){u([e],r)}for(var n in e)o.call(e,n)&&(t[n]=e[n])}
33(t,nrWrapper,e),nrWrapper);function nrWrapper(){var a,o,l,p;let g,m;try{o=this,a=[...arguments],m=h?(0,s.$5)(r):[r?.runtime?.v2Target],l="function"==typeof i?i(a,o):i||{}}catch(t){u([t,"",[a,o,c],l],e)}d(n+"start",[a,o,c,m],l,f);const v=performance.now();let y;try{return p=t.apply(o,a),y=performance.now(),p}catch(e){throw y=performance.now(),d(n+"err",[a,o,e,m],l,f),g=e,g}finally{const e=y-v,t={start:v,end:y,duration:e,isLongTask:e>=50,methodName:c,thrownError:g};t.isLongTask&&d("long-task",[t,o,m],l,f),d(n+"end",[a,o,p,m],l,f)}}}function d(r,n,i,s){if(!c||t){var a=c;c=!0;try{e.emit(r,n,i,t,s)}catch(t){u([t,r,n,i],e)}c=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function l(e){return!(e&&"function"==typeof e&&e.apply&&!e[a])}r.d(t,["Jt",0,a])},9300(e,t,r){"use strict";const n=r(860).K7.ajax;r.d(t,["TZ",0,n,"f5",0,"ajaxRequest.id","mo",0,{NONE:"none",FAILURES:"failures",ALL:"all"}])},3333(e,t,r){"use strict";var n=r(981);const i=r(860).K7.genericEvents,s=[n.R.PA,n.R.UA,n.R.BP];r.d(t,["$v",0,{RESOURCES:"experimental.resources",REGISTER:"register"},"TZ",0,i,"Zp",0,["auxclick","click","copy","keydown","paste","scrollend"],"kd",0,s,"qN",0,["focus","blur"]])},6774(e,t,r){"use strict";const n=r(860).K7.jserrors;r.d(t,["T",0,n])},993(e,t,r){"use strict";const n=r(860).K7.logging;r.d(t,["A$",0,{OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},"TZ",0,n,"p_",0,{ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"}])},3785(e,t,r){"use strict";r.d(t,{R:()=>c,b:()=>d});var n=r(9908),i=r(1863),s=r(860),a=r(3969),o=r(993);function c(e,t,r={},c=o.p_.INFO,d=!0,u,l=(0,i.t)()){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,s.K7.metrics,e),(0,n.p)("log",[l,t,r,c,d,u],void 0,s.K7.logging,e)}function d(e){return"string"==typeof e&&Object.values(o.p_).some(t=>t===e.toUpperCase().trim())}},3969(e,t,r){"use strict";const n=r(860).K7.metrics;r.d(t,["TZ",0,n,"XG",0,"storeEventMetrics","xV",0,"storeSupportabilityMetrics"])},6630(e,t,r){"use strict";const n=r(860).K7.pageViewEvent;r.d(t,["T",0,n])},782(e,t,r){"use strict";const n=r(860).K7.pageViewTiming;r.d(t,["T",0,n])},6344(e,t,r){"use strict";var n=r(2614);const i=r(860).K7.sessionReplay,s={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0}
33;r.d(t,["Qb",0,{API:"api",RESUME:"resume",SWITCH_TO_FULL:"switchToFull",INITIALIZE:"initialize",PRELOAD:"preload"},"TZ",0,i,"Vh",0,"errorDuringReplay","_s",0,{DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},"bc",0,{RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},"yP",0,s])},5270(e,t,r){"use strict";r.d(t,{Aw:()=>a,SR:()=>s,rF:()=>o});var n=r(384),i=r(7767);function s(e){return!!(0,n.dV)().o.MO&&(0,i.V)(e)&&!0===e?.session_trace.enabled}function a(e){return!0===e?.session_replay.preload&&s(e)}function o(e,t){try{if("string"==typeof t?.type&&"password"===t.type.toLowerCase())return"*".repeat(e?.length||0);if(void 0!==t?.dataset?.nrUnmask||t?.classList?.contains("nr-unmask"))return e}catch(e){}return"string"==typeof e?e.replace(/[\S]/g,"*"):"*".repeat(e?.length||0)}},3738(e,t,r){"use strict";const n=r(860).K7.sessionTrace,i="-start",s="-end",a="fn"+i,o="fn"+s;r.d(t,["He",0,"bstResource","Kp",0,s,"Lc",0,o,"Rz",0,"pushState","TZ",0,n,"bD",0,"resource","bc",0,{CROSS_TAB:{message:"Session Entity was set to OFF on another tab"},ENTITLEMENTS:{message:"Session Trace is not allowed and will not be started"},RESET:{message:"Session was reset"},SESSION_CHANGED:{message:"Session identifier changed unexpectedly"}},"d3",0,i,"uP",0,a])},3962(e,t,r){"use strict";const n=r(860).K7.softNav;r.d(t,["O2",0,{INITIAL_PAGE_LOAD:"",ROUTE_CHANGE:1,UNSPECIFIED:2},"OV",0,"popstate","Qu",0,{INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},"TZ",0,n,"ih",0,{IP:"in progress",PF:"pending finish",FIN:"finished",CAN:"cancelled"},"pP",0,"initialPageLoad","tC",0,["click","keydown","submit"]])},4234(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(1687);class i{constructor(e,t){this.agentRef=e,this.ee=e?.ee,this.featureName=t,this.blocked=!1}deregisterDrain(){(0,n.x3)(this.agentRef,this.featureName)}}},7767(e,t,r){"use strict";var n=r(6154);r.d(t,["V",0,e=>n.RI&&!0===e?.privacy.cookies_enabled])},8362(e,t,r){"use strict";r.d(t,{d:()=>s});var n=r(9566),i=r(1741);class s extends i.W{agentIdentifier=(0,n.LA)(16)}},1741(e,t,r){"use strict";r.d(t,{W:()=>s});var n=r(944),i=r(4261);class s{#e(e,...t){if(this[e]!==s.prototype[e])return this[e](...t);(0,n.R)(35,e)}addPageAction(e,t){return this.#e(i.hG,e,t)}register(e){return this.#e(i.eY,e)}recordCustomEvent(e,t){return this.#e(i.fF,e,t)}setPageViewName(e,t){return this.#e(i.Fw,e,t)}setCustomAttribute(e,t,r){return this.#e(i.cD,e,t,r)}noticeError(e,t){return this.#e(i.o5,e,t)}setUserId(e,t=!1){return this.#e(i.Dl,e,t)}setApplicationVersion(e){return this.#e(i.nb,e)}setErrorHandler(e){return this.#e(i.bt,e)}addRelease(e,t){return this.#e(i.k6,e,t)}log(e,t){return this.#e("log",e,t)}start(){return this.#e("start")}finished(e){return this.#e(i.BL,e)}recordReplay(){return this.#e(i.CH)}pauseReplay(){return this.#e(i.Tb)}addToTrace(e){return this.#e(i.U2,e)}setCurrentRouteName(e){return this.#e(i.PA,e)}interaction(e){return this.#e(i.dT,e)}wrapLogger(e,t,r){return this.#e(i.Wb,e,t,r)}measure(e,t){return this.#e(i.V1,e,t)}consent(e){return this.#e(i.Pv,e)}}},4261(e,t,r){"use strict";r.d(t,["BL",0,"finished","CH",0,"recordReplay","Dl",0,"setUserId","Fw",0,"setPageViewName","PA",0,"setCurrentRouteName","Pv",0,"consent","Tb",0,"pauseReplay","U2",0,"addToTrace","V1",0,"measure","Wb",0,"wrapLogger","bt",0,"setErrorHandler","cD",0,"setCustomAttribute","dT",0,"interaction","eY",0,"register","fF",0,"recordCustomEvent","hG",0,"addPageAction","hw",0,"api-ixn-","k6",0,"addRelease","nb",0,"setApplicationVersion","o5",0,"noticeError"])},1738(e,t,r){"use strict";r.d(t,{U:()=>l,Y:()=>u});var n=r(3241),i=r(9908),s=r(1863),a=r(944),o=r(3969),c=r(8362),d=r(860);function u(e,t,r,s){const u=s||r;!u||u[e]&&u[e]!==c.d.prototype[e]||(u[e]=function(){(0,i.p)(o.xV,["API/"+e+"/called"],void 0,d.K7.metrics,r.ee),(0,n.W)({drained:!!r.runtime?.activatedFeatures,type:"data",name:"api",feature:"api-"+e,data:{}});try{return t.apply(this,arguments)}catch(e){(0,a.R)(23,e)}})}function l(e,t,r,n,a){const o=e.info;null===r?delete o.jsAttributes[t]:o.jsAttributes[t]=r,(a||null===r)&&(0,i.p)("api-"+n,[(0,s.t)(),t,r],void 0,"session",e.ee)}},8374(e,t,r){r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860(e,t,r){"use strict";const n="events",i="jserrors",s="browser/blobs",a="browser/logs",o={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations"},c={[o.pageViewEvent]:1,[o.pageViewTiming]:2,[o.metrics]:3,[o.jserrors]:4,[o.softNav]:5,[o.ajax]:6,[o.sessionTrace]:7,[o.sessionReplay]:8,[o.logging]:9,[o.genericEvents]:10},d={[o.pageViewEvent]:"rum",[o.pageViewTiming]:n,[o.ajax]:n,[o.softNav]:n,[o.metrics]:i,[o.jserrors]:i,[o.sessionTrace]:s,[o.sessionReplay]:s,[o.logging]:a,[o.genericEvents]:"ins"};r.d(t,["$J",0,d,"K7",0,o,"P3",0,c,"XX",0,i,"Yy",0,a,"df",0,s,"hg",0,"connect"])}};const t={};function r(n){const i=t[n];if(void 0!==i)return i.exports;const s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.m=e,r.d=(e,t)=>{if(Array.isArray(t))for(var n=0;n<t.length;){var i=t[n++],s=t[n++];r.o(e,i)?0===s&&n++:0===s?Object.defineProperty(e,i,{enumerable:!0,value:t[n++]}):Object.defineProperty(e,i,{enumerable:!0,get:s})}else for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,n)=>(r.f[n](e,t),t),[])),r.u=e=>({212:"nr-spa-compressor",238:"nr-spa-iframe-message-handler",249:"nr-spa-recorder",478:"nr-spa"}[e]+"-1.323.0.min.js"),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{const e={},t="NRBA-1.323.0.PROD:";r.l=(n,i,s,a)=>
33{if(e[n])return void e[n].push(i);let o,c;if(void 0!==s){const e=document.getElementsByTagName("script");for(var d=0;d<e.length;d++){const r=e[d];if(r.getAttribute("src")==n||r.getAttribute("data-webpack")==t+s){o=r;break}}}if(!o){c=!0;var u={478:"sha512-ORjtmy+nQMgxbu0os8+oTRa5sPzbinyuWSvpZrrstVLIaHofRRlfODdH+oUmkIgeQpM+vPf3vG/4RzvCsFVh1A==",249:"sha512-o7+K6xC0z3TqynjVxpd+jgiSgqy8rrPeRcUSqt5J0Rqg5Su5CycLMYfpwiM3WBCHiNDrG5aZoXJQ6HRc335XYQ==",212:"sha512-kRvBt1IYQDBnClTEWNaE8sDFqbXXM3Vdyf972Uf4MFbJxl7u3KmdO+jdB1H4achPEoT9YtNXHswaESey6sCH0A==",238:"sha512-U5EGmyYbFVR2UMNAuZJ7fTgVVtPa5b8RPMySDwXo7z3frRdkUJ2x1VAQTLQCeBab8VlGVGRV8FiSHIn/pwN72A=="};o=document.createElement("script"),o.charset="utf-8",r.nc&&o.setAttribute("nonce",r.nc),o.setAttribute("data-webpack",t+s),o.src=n,0!==o.src.indexOf(window.location.origin+"/")&&(o.crossOrigin="anonymous"),u[a]&&(o.integrity=u[a])}e[n]=[i];const l=(t,r)=>{o.onerror=o.onload=null,clearTimeout(f);const i=e[n];if(delete e[n],o.parentNode?.removeChild(o),i?.forEach(e=>e(r)),t)return t(r)},f=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),c&&document.head.appendChild(o)}})(),r.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="https://js-agent.newrelic.com/",(()=>{const e={38:0,788:0};r.f.j=(t,n)=>{let i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)n.push(i[2]);else{const s=new Promise((r,n)=>i=e[t]=[r,n]);n.push(i[2]=s);const a=r.p+r.u(t),o=new Error,c=n=>{if(r.o(e,t)&&(i=e[t],0!==i&&(e[t]=void 0),i)){const e=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;o.message="Loading chunk "+t+" failed: ("+e+": "+r+")",o.name="ChunkLoadError",o.type=e,o.request=r,i[1](o)}};r.l(a,c,"chunk-"+t,t)}};const t=(t,n)=>{let[i,s,a]=n;var o,c,d=0;if(i.some(t=>0!==e[t])){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(a)a(r)}for(t&&t(n);d<i.length;d++)c=i[d],r.o(e,c)&&e[c]&&e[c][0](),e[c]=0},n=self["webpackChunk:NRBA-1.323.0.PROD"]=self["webpackChunk:NRBA-1.323.0.PROD"]||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),(()=>{"use strict";r(8374);var e=r(8362),t=r(860);const n=Object.values(t.K7);var i=r(384),s=r(1741);var a=r(2555),o=r(3333),c=r(9300);const d=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var u=r(2614),l=r(944),f=r(8122);const h="[data-nr-mask]",p=e=>(0,f.a)(e,(()=>{const e={feature_flags:[],experimental:{register:!1,resources:!1,iframe_bridge:!1,iframe_domains:[]},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0,capture_payloads:c.mo.NONE},api:{register:{get enabled(){return e.feature_flags.includes(o.$v.REGISTER)||e.experimental.register},set enabled(t){e.experimental.register=t},duplicate_data_to_container:!1,get allow_iframe_bridge(){return e.feature_flags.includes(o.$v.IFRAME_BRIDGE)||e.experimental.iframe_bridge},set allow_iframe_bridge(t){e.experimental.iframe_bridge=t},get iframe_domains(){return e.experimental.iframe_domains},set iframe_domains(t){Array.isArray(t)?e.experimental.iframe_domains=t:(0,l.R)(1,t)}}},browser_consent_mode:{enabled:!1},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1,capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(o.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:u.wk,inactiveMs:u.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inl
33ine_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){d(t)?e.mask_selector="".concat(t,",").concat(h):""===t||null===t?e.mask_selector=h:(0,l.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){d(t)?e.block_selector+=",".concat(t):""!==t&&(0,l.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,l.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]},web_sockets:{enabled:!1}}})());var g=r(6154),m=r(9324);let v=0;const y={buildEnv:"PROD",distMethod:"CDN",version:m.x,originTime:g.WN},b={consented:!1},E={activatedFeatures:void 0,appMetadata:{},configured:!1,get consented(){return this.session?.state?.consent||b.consented},set consented(e){b.consented=e},customTransaction:void 0,denyList:[],disabled:!1,drainRegistry:new Map,connector:void 0,harvester:void 0,v2Target:void 0,isolatedBacklog:!1,isRecording:!1,loaderType:void 0,maxBytes:3e4,obfuscator:void 0,onerror:void 0,ptid:void 0,releaseIds:{},session:void 0,timeKeeper:void 0,registeredEntities:[],jsAttributesMetadata:{bytes:0},get harvestCount(){return++v},listeningForIframeMessages:!1};var w=r(9232);var R=r(7836),T=r(3241);const A={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0};var S=r(9908),x=r(9752);function O(e,t={},n,o){let{init:c,info:d,loader_config:u,runtime:l={},exposed:h=!0}=t;if(!d){const e=(0,i.pV)();c=e.init,d=e.info,u=e.loader_config}var m;e.init=p(c||{}),e.loader_config=(m=u||{},(0,f.a)(m,A)),d.jsAttributes??={},g.bv&&(d.jsAttributes.isWorker=!0),e.info=(0,a.D)(d);const v=e.init;e.runtime??=(e=>{const t=(0,f.a)(e,E),r=Object.keys(y).reduce((e,t)=>(e[t]={value:y[t],writable:!1,configurable:!0,enumerable:!0},e),{});return Object.defineProperties(t,r)})(l),e.runtime.v2Target??={type:w.f.BA,instance:e.agentIdentifier,get id(){return e.runtime.appMetadata?.agents?.[0]?.entityGuid},get attributes(){return{"entity.guid":this.id,appId:e.info.applicationID}}},v.proxy.assets&&(e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e})(v.proxy.assets),e.runtime.configured||(Object.defineProperty(e,"beacons",{get:()=>[e.info.beacon,e.info.errorBeacon,e.init.proxy.assets,e.init.proxy.beacon].filter(Boolean)}),Object.defineProperty(e.runtime,"denyList",{get:()=>[...e.init.ajax.deny_list||[],...e.init.ajax.block_internal?e.beacons:[]]}),e.runtime.ptid=e.agentIdentifier,function(e){const t=(0,i.pV)();Object.getOwnPropertyNames(s.W.prototype).forEach(r=>{const n=s.W.prototype[r];if("function"!=typeof n||"constructor"===n)return;let i=t[r];e[r]&&!1!==e.exposed&&"micro-agent"!==e.runtime?.loaderType&&(t[r]=(...t)=>{const n=e[r](...t);return i?i(...t):n})})}(e),e.runtime.loaderType=n,e.ee=R.ee.get(e.agentIdentifier),e.exposed=h,(0,T.W)({drained:!!e.runtime.activatedFeatures,type:"lifecycle",name:"initialize",feature:void 0,data:e.config}),e.init.api.register.allow_iframe_bridge&&g.gm.addEventListener("message",t=>{"string"==typeof t.data?.type&&t.data.type.startsWith(x.Pl)&&(0,S.p)("iframe-message",[t],void 0,"IFRAME",e.ee)}),e.runtime.configured=!0)}var _=r(1863),k=r(4261),N=r(1738);var L=r(1687),M=r(4234),P=r(5289),I=r(5270),j=r(7767),C=r(6389),D=r(7699);const B=new WeakSet,H=new WeakMap;class W extends M.W{constructor(e,t){super(e,t),this.abortHandler=void 0,this.featAggregate=void 0,this.loadedSuccessfully=void 0,this.onAggregateImported=new Promise(e=>{this.loadedSuccessfully=e}),this.deferred=Promise.resolve(),!1===e.init[this.featureName].autoStart?this.deferred=new Promise((t,r)=>{this.ee.on("manual-start-all",(0,C.J)(()=>{(0,L.Ak)(e,this.featureName),t()}))}):(0,L.Ak)(e,t)}importAggregator(e,t,n={}){if(this.featAggregate)return;const i=async()=>{if(await this.deferred,this.#t(e),!(0,a.f)(e.info))return(0,l.R)(43),e.ee.abort(),void this.loadedSuccessfully(!1);try{await async function(e,t,n){if(H.has(e))return H.get(e);const i=(async()=>
33{if((0,j.V)(e.init))try{const{setupAgentSession:t}=await r.e(478).then(r.bind(r,8766));t(e)}catch(e){(0,l.R)(20,e),t.emit("internal-error",[e]),(0,S.p)(D.qh,[e],void 0,n,t)}if(e.init.api.register.allow_iframe_bridge)try{const{setupIframeMFEMessageListener:t}=await r.e(238).then(r.bind(r,6417));t(e)}catch(e){(0,l.R)(23,e)}const[{Connector:i},{Harvester:s}]=await Promise.all([r.e(478).then(r.bind(r,6589)),r.e(478).then(r.bind(r,5237))]);e.runtime.connector=new i(e),e.runtime.harvester=new s(e);const a=Object.values(e.features).filter(t=>e.runtime.drainRegistry.has(t.featureName));Promise.all(a.map(e=>e.onAggregateImported)).then(()=>e.runtime.harvester.startTimer())})();H.set(e,i),await i}(e,this.ee,this.featureName)}catch(e){return(0,l.R)(79,e),this.ee.abort(),void this.loadedSuccessfully(!1)}try{if(!this.#r(this.featureName,e.runtime.session,e.init))return this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName),void this.loadedSuccessfully(!1);const{Aggregate:r}=await t();this.featAggregate=new r(e,n),e.runtime.harvester.initializedAggregates.push(this.featAggregate),this.loadedSuccessfully(!0)}catch(e){(0,l.R)(34,e),this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName,!0),this.loadedSuccessfully(!1)}};g.RI?(0,P.GG)(()=>i(),!0):i()}#r(e,r,n){if(this.blocked)return!1;switch(e){case t.K7.sessionReplay:return(0,I.SR)(n)&&!!r;case t.K7.sessionTrace:return!!r;default:return!0}}#t(e){if(!B.has(e)&&(B.add(e),!(0,a.f)(e.info))){const t=(0,i.pV)();let r={...t.info?.jsAttributes};try{r={...r,...e.info?.jsAttributes}}catch(e){}O(e,{...t,info:{...t.info,jsAttributes:r},runtime:e.runtime},e.runtime.loaderType)}}}var U=r(6630);class K extends W{static featureName=U.T;constructor(e){var t;super(e,U.T),this.setupInspectionEvents(),t=e,(0,N.Y)(k.Fw,function(e,r){"string"==typeof e&&("/"!==e.charAt(0)&&(e="/"+e),t.runtime.customTransaction=(r||"http://custom.transaction")+e,(0,S.p)("api-"+k.Fw,[(0,_.t)()],void 0,void 0,t.ee))},t),this.importAggregator(e,()=>e.init.feature_flags.includes("rum_v2")?r.e(478).then(r.bind(r,908)):r.e(478).then(r.bind(r,7927)))}setupInspectionEvents(){const e=(e,t)=>{e&&(0,T.W)({timeStamp:e.timeStamp,loaded:"complete"===e.target.readyState,type:"window",name:t,data:e.target.location+""})};(0,P.sB)(t=>{e(t,"DOMContentLoaded")}),(0,P.GG)(t=>{e(t,"load")}),(0,P.Qr)(t=>{e(t,"navigate")}),this.ee.on(u.tS.UPDATE,(e,t)=>{(0,T.W)({type:"lifecycle",name:"session",data:t})})}}class F extends e.d{constructor(e){var t;(super(),g.gm)?(this.features={},(0,i.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(K),O(this,e,e.loaderType||"agent"),t=this,(0,N.Y)(k.cD,function(e,r,n=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof r)||null===r)return(0,N.U)(t,e,r,k.cD,n);(0,l.R)(40,typeof r)}else(0,l.R)(39,typeof e)},t),function(e){(0,N.Y)(k.Dl,function(t,r=!1){if("string"!=typeof t&&null!==t)return void(0,l.R)(41,typeof t);const n=e.info.jsAttributes["enduser.id"];r&&null!=n&&n!==t?(0,S.p)("api-setUserIdAndResetSession",[t],void 0,"session",e.ee):(0,N.U)(e,"enduser.id",t,k.Dl,!0)},e)}(this),function(e){(0,N.Y)(k.nb,function(t){if("string"==typeof t||null===t)return(0,N.U)(e,"application.version",t,k.nb,!1);(0,l.R)(42,typeof t)},e)}(this),function(e){(0,N.Y)("start",function(){e.ee.emit("manual-start-all")},e)}(this),function(e){(0,N.Y)(k.Pv,function(t=!0){if("boolean"==typeof t){if((0,S.p)("api-"+k.Pv,[t],void 0,"session",e.ee),e.runtime.consented=t,t){const t=e.features.page_view_event;t.onAggregateImported.then(e=>{const r=t.featAggregate;e&&!r.sentRum&&r.sendRum?.()})}}else(0,l.R)(65,typeof t)},e)}(this),this.run()):(0,l.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}get api(){return this}run(){try{const e=function(e){const t={};return n.forEach(r=>{t[r]=!!e[r]?.enabled}),t}(this.init),r=[...this.desiredFeatures],i=this.init.feature_flags.includes("rum_v2");r.sort((e,r)=>t.P3[e.featureName]-t.P3[r.featureName]),r.forEach(r=>{if(!e[r.featureName]&&(i||r.featureName!==t.K7.pageViewEvent))return;const n=function(e){switch(e){case t.K7.ajax:return[t.K7.jserrors];case t.K7.sessionTrace:return[t.K7.ajax,t.K7.pageViewEvent];case t.K7.sessionReplay:return[t.K7.sessionTrace];case t.K7.pageViewTiming:return[t.K7.pageViewEvent];default:return[]}}(r.featureName).filter(e=>!(e in this.features));n.length>0&&(0,l.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)})}catch(e){(0,l.R)(22,e);for(const e in this.features)this.features[e].abortHandler?.();const t=(0,i.Zm)();delete t.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return t.ee.get(this.agentIdentifier).abort(),!1}}}var V=r(2843),z=r(782);class G extends W{static featureName=z.T;constructor(e){super(e,z.T),g.RI&&((0,V.u)(()=>(0,S.p)("docHidden",[(0,_.t)()],void 0,z.T,this.ee),!0),(0,V.G)(()=>(0,S.p)("winPagehide",[(0,_.t)()],void 0,z.T,this.ee)),this.importAggregator(e,()=>r.e(478).then(r.bind(r,9917))))}}var q=r(3969);class Y extends W{static featureName=q.TZ;constructor(e){super(e,q.TZ),this.importAggregator(e,()=>r.e(478).then(r.bind(r,6555)))}}var Z=r(6774),J=r(3878),X=r(3304);class Q{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,X.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function ee(e){return ne(e)?e:new Q(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic,e?.cause)}function te(e){const t="Unhandled Promise Rejection: ";if(!e?.reason)return;if(ne(e.reason)){try{e.reason.message.startsWith(t)||(e.reason.message=t+e.reason.message)}catch(e){}return ee(e.reason)}const r=ee(e.reason);return(r.message||"").startsWith(t)||(r.message=t+r.message),r}function re(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new Q(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic,e.cause);return t.name=SyntaxError.name,t}return ne(e.error)?e.error:ee(e)}function ne(e){return e instanceof Error&&!!e.stack}function ie(e,r,n,i,s=(0,_.t)()){"string"==typeof e&&(e=new Error(e)),(0,S.p)("err",[e,s,!1,r,n.runtime.isRecording,void 0,i],void 0,t.K7.jserrors,n.ee),(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,n.ee)}var se=r(993),ae=r(3785);function oe(e,{customAttributes:t={},level:r=se.p_.INFO}={},n,i,s=(0,_.t)()){(0,ae.R)(n.ee,e,t,r,!1,i,s)}function ce(e,r,n,i,s=(0,_.t)()){(0,S.p)("api-"+k.hG,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}function de(e,r,n,i,s=(0,_.t)()){const{start:a,end:o,customAttributes:c}=r||{},d={customAttributes:c||{}};if("object"!=typeof d.customAttributes||"string"!=typeof e||0===e.length)return void(0,l.R)(57);const u=(e,t)=>
33null==e?t:"number"==typeof e?e:e instanceof PerformanceMark?e.startTime:Number.NaN;if(d.start=u(a,0),d.end=u(o,s),Number.isNaN(d.start)||Number.isNaN(d.end))(0,l.R)(57);else{if(d.duration=d.end-d.start,!(d.duration<0))return(0,S.p)("api-"+k.V1,[d,e,i],void 0,t.K7.genericEvents,n.ee),d;(0,l.R)(58)}}function ue(e,r={},n,i,s=(0,_.t)()){(0,S.p)("api-"+k.fF,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}var le=r(5718);const fe=(e,t)=>e?.nrMfeId===t.id&&(!e?.nrMfeObserved||e?.nrMfeObserved===t.instance),he=e=>{try{return g.gm.CSS.escape(e)}catch(t){return e}},pe=(e,t={})=>{const r=t.id,n=t.instance;if(!e||!r||!n)return!1;try{let r=1===e.nodeType?e:e.parentElement;for(;r?.tagName;){if(fe(r.dataset,t))return r.dataset.nrMfeObserved=n,!0;r=r.parentNode}}catch(e){}return!1},ge=(e,t)=>{const r=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]')),n=(Array.from(r)||[]).find(t=>fe(t.dataset,e));let i=!!n;i&&(n.dataset.nrMfeObserved??=e.instance);const s=new g.gm.MutationObserver(r=>{r.forEach(r=>{r.addedNodes.forEach(r=>{const n=1===r.nodeType?r:null;!i&&fe(n?.dataset,e)&&(s.disconnect(),s.observe(n,{childList:!0,subtree:!0}),i=!0,n.dataset.nrMfeObserved=e.instance),(e=>{try{return e?.textContent?.trim()||["img","video","canvas","svg"].includes(e?.nodeName?.toLowerCase())}catch(e){return!1}})(r)&&(i||pe(r,e))&&t(r,s)})})});return s.observe(n||g.gm.document,{childList:!0,subtree:!0}),s},me=(e,t,r)=>{try{const n=new g.gm.PerformanceObserver(e=>{e.getEntries().forEach(r)});return n.observe(t),e.push(n),n}catch(e){return null}};function ve(e,t){let r,n,i=!1;const s=e=>null==e?e:e-(t?.scriptStart||t?.registeredAt||0),a={fcp:{get value(){const e=s(r);return e>1e4?void 0:e},set value(e){i||(r=e)}},lcp:{get value(){if(void 0!==a.fcp.value)return s(n)},set value(e){i||(n=e)}},cls:{value:void 0},inp:{value:void 0},disconnect:()=>{}};if(!(e&&g.RI&&g.gm.MutationObserver&&g.gm.PerformanceObserver))return a;const o=[];setTimeout(()=>{r||a.disconnect()},1e4);const c=()=>{if(!i){if(null==r){const e=(0,_.t)();if(s(e)>1e4)return void a.disconnect();r=e}n??=(0,_.t)(),a.cls.value??=0}},d=ge(e,(e,t)=>{c(),t.disconnect()});o.push(d);let u=0,l=null;const f=new Set;try{l=new g.gm.ResizeObserver(e=>{i||e.forEach(e=>{try{const t=e.contentRect.width*e.contentRect.height;t>u&&(u=t,a.lcp.value=(0,_.t)()),l.unobserve(e.target)}catch(e){}})})}catch(e){}const h=ge(e,e=>{if(c(),l)try{const t=1===e.nodeType?e:e.parentElement;t&&!f.has(t)&&(f.add(t),"IMG"===t.tagName?t.complete?l.observe(t):t.addEventListener("load",()=>{l.observe(t)},{once:!0}):"VIDEO"===t.tagName?t.readyState>=2?l.observe(t):t.addEventListener("loadeddata",()=>{l.observe(t)},{once:!0}):l.observe(t))}catch(e){}});l&&o.push(l),o.push(h),me(o,{type:"layout-shift",buffered:!0},t=>{i||t.hadRecentInput||(t.sources||[]).some(r=>!!pe(r.node,e)&&(c(),a.cls.value+=t.value,!0))}),me(o,{type:"event",buffered:!0,durationThreshold:40},t=>{!i&&t.interactionId&&pe(t.target,e)&&(void 0===a.inp.value||t.duration>a.inp.value)&&(c(),a.inp.value=t.duration)});const p=["pointerdown","keydown"],m=()=>{p.forEach(e=>{g.gm.removeEventListener(e,v,{passive:!0})})};a.disconnect=()=>{i=!0,o.forEach(e=>{try{e?.disconnect()}catch(e){}}),m(),["visibilitychange","pagehide"].forEach(e=>{g.gm.removeEventListener(e,a.disconnect,{once:!0,passive:!0})})};const v=t=>{pe(t?.target,e)&&((()=>{try{h?.disconnect(),l?.disconnect()}catch(e){}})(),m())};p.forEach(e=>{g.gm.addEventListener(e,v,{passive:!0})}),["visibilitychange","pagehide"].forEach(e=>{g.gm.addEventListener(e,a.disconnect,{once:!0,passive:!0})});const y=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]'));return Array.from(y||[]).some(t=>fe(t.dataset,e))&&c(),a}var ye=r(9566),be=r(7560),Ee=r(9119);const we=["entry","scripts","all"],Re=["name","id","type"],Te=new Map([[ce,"addPageAction"],[oe,"log"],[de,"measure"],[ie,"noticeError"],[ue,"recordCustomEvent"]]),Ae={experimental:(0,C.J)(()=>(0,l.R)(54,"newrelic.register")),disabled:(0,C.J)(()=>(0,l.R)(55)),invalidTarget:(0,C.J)(e=>(0,l.R)(48,e)),deregistered:(0,C.J)(()=>(0,l.R)(68)),invalidTimingMethod:(0,C.J)(e=>(0,l.R)(80,e)),duplicateName:(0,C.J)(e=>(0,l.R)(81,e)),duplicateId:(0,C.J)(e=>(0,l.R)(82,e))};function Se(e){(0,N.Y)(k.eY,function(t){return xe(e,t)},e)}function xe(e,r){Ae.experimental(),r||={},r.instance=(0,ye.LA)(8),r.type=w.f.MFE,r.licenseKey||=e.info.licenseKey,r.blocked=!1,("object"!=typeof r.tags||null===r.tags||Array.isArray(r.tags))&&(r.tags={}),r.parent??={get id(){return e.runtime.appMetadata.agents?.[0].entityGuid},type:w.f.BA},r.manifest=(0,be.N)(r.manifest),void 0===r.timingMethod||we.includes(r.timingMethod)||(Ae.invali
33dTimingMethod(r.timingMethod),r.timingMethod=void 0);const n=(0,le.Qr)(r);r.manifest&&(0,le.xo)(n,r);const i=ve(r,n),s=(0,Ee.L)(""+location),a={};Object.prototype.hasOwnProperty.call(r,"attributes")||Object.defineProperty(r,"attributes",{get:()=>({...a,"source.id":r.id,"source.name":r.name,"source.type":r.type,"parent.type":r.parent?.type||w.f.BA,"parent.id":r.parent?.id})}),Object.entries(r.tags).forEach(([e,t])=>{Re.includes(e)||(a["source.".concat(e)]=t)});let o=()=>{};const c=e.runtime.registeredEntities,d=e=>{r.blocked=!0,o=e};function u(e){return"string"==typeof e&&!!e.trim()&&e.trim().length<501}e.init.api.register.enabled||d(Ae.disabled),u(r.id)&&u(r.name)||d(()=>Ae.invalidTarget(r)),c.forEach(e=>{try{const{name:t,id:n}=e.metadata.target;t===r.name&&n!==r.id&&Ae.duplicateName(r),n===r.id&&t!==r.name&&Ae.duplicateId(r)}catch(e){}});const f={addPageAction:(t,n={})=>m(ce,[t,{...a,...n},e],r),deregister:()=>{p(),d(Ae.deregistered)},log:(t,n={})=>m(oe,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),measure:(t,n={})=>m(de,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),noticeError:(t,n={})=>m(ie,[t,{...a,...n},e],r),recordCustomEvent:(t,n={})=>m(ue,[t,{...a,...n},e],r),setApplicationVersion:e=>g("application.version",e),setCustomAttribute:(e,t)=>g(e,t),setUserId:e=>g("enduser.id",e),metadata:{get customAttributes(){return a},target:r,timings:n,vitals:i,events:{latestTimestamp:void 0}}},h=()=>(r.blocked&&o(),r.blocked);function p(){if(n.reportedAt)return;n.reportedAt=(0,_.t)(),i.disconnect(),n.fcp=i.fcp,n.lcp=i.lcp,n.cls=i.cls,n.inp=i.inp;const e=n.fetchEnd-n.fetchStart,t=n.scriptEnd-n.scriptStart,r={assetUrl:n.asset,assetType:n.type,registerUrl:s,deregisterUrl:(0,Ee.L)(""+location),pageUrl:void 0,currentUrl:void 0,timeAlive:n.reportedAt-n.registeredAt,timeToBeRequested:n.fetchStart,timeToExecute:t,timeToFetch:e,timeToLoad:e+t,t
33imeToRegister:n.registeredAt,totalWeight:n.totalWeight,...void 0!==n.renderBlocking&&{renderBlocking:n.renderBlocking},...i.fcp.value>=0&&{"vitals.fcp.value":i.fcp.value},...i.lcp.value>=0&&{"vitals.lcp.value":i.lcp.value},...i.cls.value>=0&&{"vitals.cls.value":i.cls.value},...i.inp.value>=0&&{"vitals.inp.value":i.inp.value}};f.recordCustomEvent("MicroFrontEndTiming",r)}h()||(c.push(f),(0,V.G)(p));const g=(e,t)=>{h()||(a[e]=t)},m=(r,n,i)=>{if(h()&&r!==xe)return;const s=f.metadata.events.latestTimestamp??(0,_.t)();f.metadata.events.latestTimestamp=void 0;const a=Te.get(r)||"unknown";(0,S.p)(q.xV,["API/register/".concat(a,"/called")],void 0,t.K7.metrics,e.ee);try{return r(...n,i,s)}catch(e){(0,l.R)(50,e)}};return f}class Oe extends W{static featureName=Z.T;constructor(e){var t;super(e,Z.T),t=e,(0,N.Y)(k.o5,(e,r)=>ie(e,r,t),t),function(e){(0,N.Y)(k.bt,function(t){e.runtime.onerror=t},e)}(e),function(e){let t=0;(0,N.Y)(k.k6,function(e,r){++t>10||(this.runtime.releaseIds[e.slice(-200)]=(""+r).slice(-200))},e)}(e),Se(e);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",(t,r)=>{this.abortHandler&&(0,S.p)("ierr",[ee(t),(0,_.t)(),!0,{},e.runtime.isRecording,r],void 0,this.featureName,this.ee)}),g.gm.addEventListener("unhandledrejection",t=>{this.abortHandler&&(0,S.p)("err",[te(t),(0,_.t)(),!1,{unhandledPromiseRejection:1},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),g.gm.addEventListener("error",t=>{this.abortHandler&&(0,S.p)("err",[re(t),(0,_.t)(),!1,{},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e,()=>r.e(478).then(r.bind(r,9377)))}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var _e=r(8990);let ke=1;function Ne(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===g.gm?0:(0,_e.I)(e,"nr@id",function(){return ke++})}function Le(e){if("string"==typeof e)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,X.A)(e).length}catch(e){return}}}var Me=r(8139),Pe=r(3434),Ie=r(5732);const je={},Ce=["open","send","setRequestHeader"];function De(e,t){var r=e||R.ee;const n=function(e){return(e||R.ee).get("xhr")}(r);if(void 0===g.gm.XMLHttpRequest)return n;if(je[n.debugId]++)return n;je[n.debugId]=1,(0,Me.u)(r,t);var i=(0,Pe.YM)(n,void 0,t),s=g.gm.XMLHttpRequest,a=g.gm.MutationObserver,o=g.gm.Promise,c=g.gm.setInterval,d="readystatechange",u=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],f=[],h=g.gm.XMLHttpRequest=function(e){const r=new s(e),a=n.context(r);a.targets=(0,Ie.$5)(t);try{n.emit("new-xhr",[r],a),r.addEventListener(d,(o=a,function(){var e=this;e.readyState>3&&!o.resolved&&(o.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,u,"fn-",E)}),(0,J.jT)(!1))}catch(e){(0,l.R)(15,e);try{n.emit("internal-error",[e])}catch(e){}}var o;return r};function p(e,t){i.inPlace(t,["onreadystatechange"],"fn-",E)}if(function(e,t){for(var r in e)t[r]=e[r]}(s,h),h.prototype=s.prototype,i.inPlace(h.prototype,Ce,"-xhr-",E),n.on("send-xhr-start",function(e,t){p(e,t),function(e){f.push(e),a&&(m?m.then(b):c?c(b):(v=-v,y.data=v))}(t)}),n.on("open-xhr-start",p),a){var m=o&&o.resolve();if(!c&&!o){var v=1,y=document.createTextNode(v);new a(b).observe(y,{characterData:!0})}}else r.on("fn-end",function(e){e[0]&&e[0].type===d||b()});function b(){for(var e=0;e<f.length;e++)p(0,f[e]);f.length&&(f=[])}function E(e,t){return t}return n}var Be="fetch-",He=Be+"body-",We=["arrayBuffer","blob","json","text","formData"],Ue=g.gm.Request,Ke=g.gm.Response,Fe="prototype";const Ve={};function ze(e,t){const r=function(e){return(e||R.ee).get("fetch")}(e);if(!(Ue&&Ke&&g.gm.fetch))return r;if(Ve[r.debugId]++)return r;function n(e,n,i){var s=e[n];"function"==typeof s&&(e[n]=function(){var e=[...arguments];const n={},a=(0,Ie.$5)(t);var o;r.emit(i+"before-start",[e],n),n[R.P]&&n[R.P].dt&&(o=n[R.P].dt);var c=s.apply(this,e);return r.emit(i+"start",[e,o],c),c.then(function(e){return r.emit(i+"end",[null,e,a],c),e},function(e){throw r.emit(i+"end",[e,void 0,a],c),e})})}
33return Ve[r.debugId]=1,We.forEach(e=>{n(Ue[Fe],e,He),n(Ke[Fe],e,He)}),n(g.gm,"fetch",Be),r.on(Be+"end",function(e,n,i){var s=this;if(s.targets=i||[t.runtime.v2Target],n){var a=n.headers.get("content-length");null!==a&&(s.rxSize=a),r.emit(Be+"done",[null,n],s)}else r.emit(Be+"done",[e],s)}),r}var Ge=r(7485);class qe{constructor(e){this.agentRef=e}generateTracePayload(e){const t=this.agentRef.loader_config;if(!this.shouldGenerateTrace(e)||!t)return null;var r=(t.accountID||"").toString()||null,n=(t.agentID||"").toString()||null,i=(t.trustKey||"").toString()||null;if(!r||!n)return null;var s,a=(0,ye.ZF)(),o=(0,ye.el)(),c=Date.now();this.agentRef.runtime?.timeKeeper?.ready&&(s=Math.floor(this.agentRef.runtime.timeKeeper.correctAbsoluteTimestamp(c)));var d={spanId:a,traceId:o,timestamp:c,timestampCorrected:s};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(d.traceContextParentHeader=this.generateTraceContextParentHeader(a,o),d.traceContextStateHeader=this.generateTraceContextStateHeader(a,s??c,r,n,i)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(d.newrelicHeader=this.generateTraceHeader(a,o,s??c,r,n,i)),d}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,s){if(!("function"==typeof g.gm?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return s&&n!==s&&(a.d.tk=s),btoa((0,X.A)(a))}shouldGenerateTrace(e){return this.agentRef.init?.distributed_tracing?.enabled&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1;const r=this.agentRef.init?.distributed_tracing;if(e.sameOrigin)t=!0;else if(r?.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,Ge.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}excludeNewrelicHeader(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.cors_use_tracecontext_headers}}var Ye=r(7295);function Ze(e){return"string"==typeof e?e:e instanceof(0,i.dV)().o.REQ?e.url:g.gm?.URL&&e instanceof URL?e.href:void 0}function $e(e,t){var r=(0,Ge.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}var Je=["load","error","abort","timeout"],Xe=Je.length,Qe=(0,i.dV)().o.REQ,et=(0,i.dV)().o.XHR;const tt="X-NewRelic-App-Data",rt="internal-error";class nt extends W{static featureName=c.TZ;constructor(e){super(e,c.TZ),this.dt=new qe(e),this.handler=(e,t,r,n)=>(0,S.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};g.gm?.performance?.getEntriesByType("resource").forEach(r=>{if(r.initiatorType in e&&0!==r.responseStatus){const n={status:r.responseStatus},i={rxSize:r.transferSize,duration:Math.floor(r.duration),cbTime:0};$e(n,r.name),this.handler("xhr",[n,i,r.startTime,r.responseEnd,e[r.initiatorType]],void 0,t.K7.ajax)}})}catch(e){}ze(this.ee,e),De(this.ee,e),function(e,r,n,i){const s=[c.mo.ALL,c.mo.FAILURES].includes(e.init.ajax?.capture_payloads);function a(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=A,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},t.latestLongtaskEnd=0,e.addEventListener("load",function(r){O(t,e)},(0,J.jT)(!1)),g.lR||e.addEventListener("progress",function(e){t.lastSize=e.loaded},(0,J.jT)(!1))}function o(e){this.params={method:e[0]},$e(this,e[1]),this.metrics={}}function d(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var n=i.generateTracePayload(this.parsedOrigin);if(n){var s=!1;n.newrelicHeader&&(r.setRequestHeader("newrelic",n.newrelicHeader),s=!0),n.traceContextParentHeader&&(r.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&r.setRequestHeader("tracestate",n.traceContextStateHeader),s=!0),s&&(this.dt=n)}}function u(e,t){s&&e.length>=2&&(this.requestHeaders??={},this.requestHeaders[e[0].toLowerCase()]=e[1])}function l(e,t){var n=this.metrics,i=e[0],s=this;if(n&&i){var a=Le(i);a&&(n.txSize=a)}this.startTime=(0,_.t)(),this.requestBody=i,this.listener=function(e){try{"abort"!==e.type||s.loadCaptureCalled||(s.params.aborted=!0),("load"
33!==e.type||s.called===s.totalCbs&&(s.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof s.end)&&s.end(t)}catch(e){try{r.emit(rt,[e])}catch(e){}}};for(var o=0;o<Xe;o++)t.addEventListener(Je[o],this.listener,(0,J.jT)(!1))}function f(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof r.onload||"function"!=typeof this.end||this.end(r)}function h(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function p(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function m(){this.endTime=(0,_.t)()}function v(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-added",[e[1],e[2]],t)}function y(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-removed",[e[1],e[2]],t)}function b(e,t,r){t instanceof et&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,_.t)()))}function E(e,t){this.xhrCbStart&&r.emit("xhr-cb-time",[(0,_.t)()-this.xhrCbStart,this.onload,t],t)}function w(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&g.RI&&(t=""+g.gm.location.href):e[0]&&e[0].url?t=e[0].url:g.gm?.URL&&e[0]&&e[0]instanceof URL?t=e[0].href:"function"==typeof e[0].toString&&(t=e[0].toString()),"string"==typeof t&&0!==t.length){t&&(this.parsedOrigin=(0,Ge.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var n=i.generateTracePayload(this.parsedOrigin);if(n&&(n.newrelicHeader||n.traceContextParentHeader))if(e[0]&&e[0].headers)o(e[0].headers,n)&&(this.dt=n);else{var s={};for(var a in r)s[a]=r[a];s.headers=new Headers(r.headers||{}),o(s.headers,n)&&(this.dt=n),e.length>1?e[1]=s:e.push(s)}}function o(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function R(e,t){this.params={},this.metrics={},this.startTime=(0,_.t)(),this.dt=t;let[r,n={}]=e;$e(this,Ze(r));const i=(""+(r&&r instanceof Qe&&r.method||n.method||"GET")).toUpperCase();this.params.method=i,this.txSize=Le(n.body||r?.body)||0;try{var a=n.headers||r?.headers;if(s&&a)if(this.requestHeaders??={},a instanceof Headers)a.forEach(function(e,t){this.requestHeaders[t.toLowerCase()]=e}.bind(this));else if("object"==typeof a)for(var o in a)this.requestHeaders[o.toLowerCase()]=a[o]}catch(e){}this.requestBody=n.body||r?.body}function T(e,t){if(this.endTime=(0,_.t)(),this.params||(this.params={}),(0,Ye.iW)(this.params))return;this.params.status=t?t.status:0;const n=()=>{const e=+this.rxSize,t=null==this.rxSize||isNaN(e)?void 0:e,r={txSize:this.txSize,rxSize:t,duration:this.endTime-this.startTime},n=[this.params,r,this.startTime,this.endTime,"fetch"];this.targets.forEach(e=>x(n,this,e))};t&&s?t.clone().text().then(e=>{this.responseBody=e,this.rxSize&&"0"!==this.rxSize&&0!==this.rxSize||void 0===e||0===this.params.status||(this.rxSize=Le(e)),t?.headers&&(this.responseHeaders={},t.headers.forEach(function(e,t){this.responseHeaders[t.toLowerCase()]=e}.bind(this)))}).catch(e=>{r.emit(rt,[e])}).finally(()=>{n()}):n()}function A(e){const t=this.params,n=this.metrics;if(this.ended)return;this.ended=!0;for(let t=0;t<Xe;t++)e.removeEventListener(Je[t],this.listener,!1);if(t.aborted)return;if((0,Ye.iW)(t))return;if(n.duration=this.endTime-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status&&(t.status=0):O(this,e),n.cbTime=this.cbTime,s){try{this.responseBody=e.responseText}catch(t){this.responseBody=e.response}if((!n.rxSize||0===n.rxSize)&&void 0!==this.responseBody&&0!==t.status){const e=Le(this.responseBody);void 0!==e&&(n.rxSize=e)}try{this.responseHeaders=function(e){const t={};return e?(e.split("\r\n").forEach(function(e){const r=e.indexOf(": ");if(r>0){const n=e.substring(0,r),i=e.substring(r+2);t[n.toLowerCase()]=i}}),t):t}(e.getAllResponseHeaders())}catch(e){r.emit(rt,[e])}}const i=[t,n,this.startTime,this.endTime,"xhr"];this.targets.forEach(e=>x(i,this,e))}function x(e,r,i){n("xhr",[...e,i],r,t.K7.ajax)}function O(e,n){e.params.status=n.status;var i=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?Le(e.response):"text"===r||""===r||void 0===r?Le(e.responseText):void 0}(n,e.lastSize);if(void 0!==i&&0!==n.status&&(e.metrics.rxSize=i),e.sameOrigin&&n.getAllResponseHeaders().indexOf(tt)>=0){var s=n.getResponseHeader(tt);s&&((0,S.p)("sm",["Ajax/CrossApplicationTracing/Header/Seen"],void 0,t.K7.metrics,r),e.params.cat=s.split(", ").pop())}e.loadCaptureCalled=!0}r.on("new-xhr",a),r.on("open-xhr-start",o),r.on("open-xhr-end",d),r.on("send-xhr-start",l),r.on("setRequestHeader-xhr-start",u),r.on("xhr-cb-time",f),r.on("xhr-load-added",h),r.on("xhr-load-removed",p),r.on("xhr-resolved",m),r.on("addEventListener-end",v),r.on("removeEventListener-end",y),r.on("fn-end",E),r.on("fetch-before-start",w),r.on("fetch-start",R),r.on("fn-start",b),r.on("fetch-done",T)}(e,this.ee,this.handler,this.dt),this.importAggregator(e,()=>r.e(478).then(r.bind(r,3845)))}}const it={},st=["pushState","replaceState"];function at(e,t){const r=function(e){return(e||R.ee).get("history")}(e);return!g.RI||it[r.debugId]++||(it[r.debugId]=1,(0,Pe.YM)(r,void 0,t).inPlace(window.history,st,"-")),r}var ot=r(3738);function ct(e){(0,N.Y)(k.BL,function(r=Date.now()){const n=r-g.WN;n<0&&(0,l.R)(62,r),(0,S.p)(q.XG,[k.BL,{time:n}],void 0,t.K7.metrics,e.ee),e.addToTrace({name:k.BL,start:r,origin:"nr"}),(0,S.p)("api-"+k.hG,[n,k.BL],void 0,t.K7.genericEvents,e.ee)},e)}const{He:dt,bD:ut,d3:lt,Kp:ft,TZ:ht,Lc:pt,uP:gt,Rz:mt}=ot;class vt extends W{static featureName=ht;constructor(e){var n;super(e,ht),n=e,(0,N.Y)(k.U2,function(e){if(!(e&&"object"==typeof e&&e.name&&e.start))return;const r={n:e.name,s:e.start-g.WN,e:(e.end||e.start)-g.WN,o:e.origin||"",t:"api"};r.s<0||r.e<0||r.e<r.s?(0,l.R)(61,{start:r.s,end:r.e}):(0,S.p)("bstApi",[r],void 0,t.K7.sessionTrace,n.ee)},n),ct(e);
33if(!(0,j.V)(e.init))return void this.deregisterDrain();const i=this.ee;let s;at(i,e),this.eventsEE=(0,Me.u)(i,e),this.eventsEE.on(gt,function(e,t){this.bstStart=(0,_.t)()}),this.eventsEE.on(pt,function(e,r){(0,S.p)("bst",[e[0],r,this.bstStart,(0,_.t)()],void 0,t.K7.sessionTrace,i)}),i.on(mt+lt,function(e){this.time=(0,_.t)(),this.startPath=location.pathname+location.hash}),i.on(mt+ft,function(e){(0,S.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,t.K7.sessionTrace,i)});try{s=new PerformanceObserver(e=>{const r=e.getEntries();(0,S.p)(dt,[r],void 0,t.K7.sessionTrace,i)}),s.observe({type:ut,buffered:!0})}catch(e){}this.importAggregator(e,()=>r.e(478).then(r.bind(r,6974)),{resourceObserver:s})}}var yt=r(733),bt=r(6344);class Et extends W{static featureName=bt.TZ;#i;recorder;constructor(e){var n;let i;super(e,bt.TZ),n=e,(0,N.Y)(k.CH,function(){(0,S.p)(k.CH,[],void 0,t.K7.sessionReplay,n.ee)},n),function(e){(0,N.Y)(k.Tb,function(){(0,S.p)(k.Tb,[],void 0,t.K7.sessionReplay,e.ee)},e)}(e);const s="".concat(u.Wt).concat((0,yt.Y)(e.info.licenseKey,e.info.applicationID));try{i=JSON.parse(localStorage.getItem(s))}catch(e){}(0,I.SR)(e.init)&&this.ee.on(k.CH,()=>this.#s()),this.#a(i)&&this.importRecorder().then(e=>{e.startRecording(bt.Qb.PRELOAD,i?.sessionReplayMode)}),this.abortHandler=this.#n,this.importAggregator(this.agentRef,()=>r.e(478).then(r.bind(r,6167)),this),this.ee.on("err",e=>{this.blocked||this.agentRef.runtime.isRecording&&(this.errorNoticed=!0,(0,S.p)(bt.Vh,[e],void 0,this.featureName,this.ee))})}#a(e){return e&&(e.sessionReplayMode===u.g.FULL||e.sessionReplayMode===u.g.ERROR)||(0,I.Aw)(this.agentRef.init)}importRecorder(){return this.recorder?Promise.resolve(this.recorder):(this.#i??=Promise.all([r.e(478),r.e(249)]).then(r.bind(r,4866)).then(({Recorder:e})=>(this.recorder=new e(this),this.recorder)).catch(e=>{throw this.ee.emit("internal-error",[e]),this.blocked=!0,e}),this.#i)}#s(){this.blocked||(this.featAggregate?this.featAggregate.mode!==u.g.FULL&&this.featAggregate.initializeRecording(u.g.FULL,!0,bt.Qb.API):this.importRecorder().then(()=>{this.recorder.startRecording(bt.Qb.API,u.g.FULL)}))}#n(){this.recorder?.stopRecording()}}var wt=r(3962);class Rt extends W{static featureName=wt.TZ;constructor(e){if(super(e,wt.TZ),function(e){const r=e.ee.get("tracer");function n(){}(0,N.Y)(k.dT,function(e){return(new n).get("object"==typeof e?e:{})},e);const i=n.prototype={createTracer:function(n,i){var s={},a=this,o="function"==typeof i;return(0,S.p)(q.xV,["API/createTracer/called"],void 0,t.K7.metrics,e.ee),function(){if(r.emit((o?"":"no-")+"fn-start",[(0,_.t)(),a,o],s),o)try{return i.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw r.emit("fn-err",[arguments,this,t],s),t}finally{r.emit("fn-end",[(0,_.t)()],s)}}}};["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach(r=>{N.Y.apply(this,[r,function(){return(0,S.p)(k.hw+r,[performance.now(),...arguments],this,t.K7.softNav,e.ee),this},e,i])}),(0,N.Y)(k.PA,function(){(0,S.p)(k.hw+"routeName",[performance.now(),...arguments],void 0,t.K7.softNav,e.ee)},e)}(e),!g.RI||!(0,i.dV)().o.MO)return;const n=at(this.ee,e);try{this.removeOnAbort=new AbortController}catch(e){}wt.tC.forEach(e=>{(0,J.sp)(e,e=>{c(e)},!0,this.removeOnAbort?.signal)}
33);const s=()=>(0,S.p)("newURL",[(0,_.t)(),""+window.location],void 0,this.featureName,this.ee);n.on("pushState-end",s),n.on("replaceState-end",s),(0,J.sp)(wt.OV,e=>{c(e),(0,S.p)("newURL",[e.timeStamp,""+window.location],void 0,this.featureName,this.ee)},!0,this.removeOnAbort?.signal);let a=!1;const o=new((0,i.dV)().o.MO)((e,t)=>{a||(a=!0,requestAnimationFrame(()=>{(0,S.p)("newDom",[(0,_.t)()],void 0,this.featureName,this.ee),a=!1}))}),c=(0,C.s)(e=>{"loading"!==document.readyState&&((0,S.p)("newUIEvent",[e],void 0,this.featureName,this.ee),o.observe(document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0}))},100,{leading:!0});this.abortHandler=function(){this.removeOnAbort?.abort(),o.disconnect(),this.abortHandler=void 0},this.importAggregator(e,()=>r.e(478).then(r.bind(r,4393)),{domObserver:o})}}var Tt=r(981);const At={},St=new Set;function xt(e){return"string"==typeof e?{type:"string",size:(new TextEncoder).encode(e).length}:e instanceof ArrayBuffer?{type:"ArrayBuffer",size:e.byteLength}:e instanceof Blob?{type:"Blob",size:e.size}:e instanceof DataView?{type:"DataView",size:e.byteLength}:ArrayBuffer.isView(e)?{type:"TypedArray",size:e.byteLength}:{type:"unknown",size:0}}class Ot{constructor(e,t){this.timestamp=(0,_.t)(),this.currentUrl=(0,Ee.L)(window.location.href),this.socketId=(0,ye.LA)(8),this.requestedUrl=(0,Ee.L)(e),this.requestedProtocols=Array.isArray(t)?t.join(","):t||"",this.openedAt=void 0,this.protocol=void 0,this.extensions=void 0,this.binaryType=void 0,this.messageOrigin=void 0,this.messageCount=0,this.messageBytes=0,this.messageBytesMin=0,this.messageBytesMax=0,this.messageTypes=void 0,this.sendCount=0,this.sendBytes=0,this.sendBytesMin=0,this.sendBytesMax=0,this.sendTypes=void 0,this.closedAt=void 0,this.closeCode=void 0,this.closeReason="unknown",this.closeWasClean=void 0,this.connectedDuration=0,this.hasErrors=void 0}}class _t extends W{static featureName=o.TZ;constructor(e){super(e,o.TZ);const n=e.init.feature_flags.includes("websockets")||e.init.web_sockets?.enabled,s=!e.init.feature_flags.includes("no_spv"),a=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.performance.resources.enabled,e.init.user_actions.enabled,n,s];var c;let d;if(c=e,(0,N.Y)(k.hG,(e,t)=>ce(e,t,c),c),function(e){(0,N.Y)(k.fF,(t,r)=>ue(t,r,e),e)}(e),ct(e),Se(e),function(e){(0,N.Y)(k.V1,(t,r)=>de(t,r,e),e)}(e),this.removeOnAbort=new AbortController,this.abortHandler=()=>{this.removeOnAbort.abort(),this.abortHandler=void 0},n){const u=function(e,t){if(!(0,i.dV)().o.WS)return e;const r=e.get("websockets");if(At[r.debugId]++)return r;At[r.debugId]=1,(0,V.G)(()=>{const e=(0,_.t)();St.forEach(t=>{t.nrData.closedAt=e,t.nrData.closeCode=1001,t.nrData.closeReason="Page navigating away",t.nrData.closeWasClean=!1,t.nrData.openedAt&&(t.nrData.connectedDuration=e-t.nrData.openedAt),r.emit("ws",[t.nrData,t.targets],t)})});
33class n extends WebSocket{static name=Tt.R.WS;static toString(){return"function WebSocket() { [native code] }"}toString(){return"[object WebSocket]"}get[Symbol.toStringTag](){return n.name}#o(e){(e.__newrelic??={}).socketId=this.nrData.socketId,this.nrData.hasErrors??=!0}constructor(...e){super(...e),this.nrData=new Ot(e[0],e[1]),this.targets=(0,Ie.$5)(t),this.addEventListener("open",()=>{this.nrData.openedAt=(0,_.t)(),["protocol","extensions","binaryType"].forEach(e=>{this.nrData[e]=this[e]}),St.add(this)}),this.addEventListener("message",e=>{const{type:t,size:r}=xt(e.data);this.nrData.messageOrigin??=(0,Ee.L)(e.origin),this.nrData.messageCount++,this.nrData.messageBytes+=r,this.nrData.messageBytesMin=Math.min(this.nrData.messageBytesMin||1/0,r),this.nrData.messageBytesMax=Math.max(this.nrData.messageBytesMax,r),(this.nrData.messageTypes??"").includes(t)||(this.nrData.messageTypes=this.nrData.messageTypes?"".concat(this.nrData.messageTypes,",").concat(t):t)}),this.addEventListener("close",e=>{this.nrData.closedAt=(0,_.t)(),this.nrData.closeCode=e.code,e.reason&&(this.nrData.closeReason=e.reason),this.nrData.closeWasClean=e.wasClean,this.nrData.connectedDuration=this.nrData.closedAt-this.nrData.openedAt,St.delete(this),r.emit("ws",[this.nrData,this.targets],this)})}addEventListener(e,t,...r){const n=this,i="function"==typeof t?function(...e){try{return t.apply(this,e)}catch(e){throw n.#o(e),e}}:t?.handleEvent?{handleEvent:function(...e){try{return t.handleEvent.apply(t,e)}catch(e){throw n.#o(e),e}}}:t;return super.addEventListener(e,i,...r)}send(e){if(this.readyState===WebSocket.OPEN){const{type:t,size:r}=xt(e);this.nrData.sendCount++,this.nrData.sendBytes+=r,this.nrData.sendBytesMin=Math.min(this.nrData.sendBytesMin||1/0,r),this.nrData.sendBytesMax=Math.max(this.nrData.sendBytesMax,r),(this.nrData.sendTypes??"").includes(t)||(this.nrData.sendTypes=this.nrData.sendTypes?"".concat(this.nrData.sendTypes,",").concat(t):t)}try{return super.send(e)}catch(e){throw this.#o(e),e}}close(...e){try{super.close(...e)}catch(e){throw this.#o(e),e}}}return g.gm.WebSocket=n,r}(this.ee,e);u.on("ws",(e,t)=>{(0,S.p)("ws-complete",[e,t],void 0,this.featureName,this.ee)})}if(s){if("function"==typeof g.gm.ReportingObserver){const l=new g.gm.ReportingObserver(e=>{e.forEach(e=>{(0,S.p)("spv",[kt(e),(0,_.t)()],void 0,t.K7.genericEvents,this.ee)}),l.disconnect()},{types:["csp-violation"],buffered:!0});l.observe()}g.gm.addEventListener("securitypolicyviolation",e=>{(0,S.p)("spv",[kt(e),e.timeStamp],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal))}if(g.RI){if(ze(this.ee,e),De(this.ee,e),d=at(this.ee,e),e.init.user_actions.enabled){function f(t){const r=(0,Ge.D)(t);return e.beacons.includes(r.hostname+":"+r.port)}function h(){d.emit("navChange")}o.Zp.forEach(e=>(0,J.sp)(e,e=>(0,S.p)("ua",[e],void 0,this.featureName,this.ee),!0)),o.qN.forEac
33h(e=>{const t=(0,C.s)(e=>{(0,S.p)("ua",[e],void 0,this.featureName,this.ee)},500,{leading:!0});(0,J.sp)(e,t)}),g.gm.addEventListener("error",()=>{(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal)),this.ee.on("open-xhr-start",(e,r)=>{f(e[1])||r.addEventListener("readystatechange",()=>{2===r.readyState&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(void 0,this.removeOnAbort.signal))}),this.ee.on("fetch-start",e=>{e.length>=1&&!f(Ze(e[0]))&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)}),d.on("pushState-end",h),d.on("replaceState-end",h),window.addEventListener("hashchange",h,(0,J.jT)(!0,this.removeOnAbort.signal)),window.addEventListener("popstate",h,(0,J.jT)(!0,this.removeOnAbort.signal))}if(e.init.performance.resources.enabled&&g.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{(0,S.p)("browserPerformance.resource",[e],void 0,this.featureName,this.ee)})}).observe({type:"resource",buffered:!0})}}a.some(e=>e)?this.importAggregator(e,()=>r.e(478).then(r.bind(r,8019))):this.deregisterDrain()}}function kt(e){const t=e.body??e;return{blockedUrl:t.blockedURL??e.blockedURI,documentUrl:t.documentURL??e.documentURI,effectiveDirective:t.effectiveDirective,originalPolicy:t.originalPolicy,sourceFile:t.sourceFile,statusCode:t.statusCode,lineNumber:t.lineNumber,columnNumber:t.columnNumber,disposition:"reporting"===t.disposition?"report":t.disposition,sample:t.sample,referrer:t.referrer}}var Nt=r(2646);const Lt=new Map;function Mt(e,t,r,n,i=!0,s){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const a=function(e){return(e||R.ee).get("logger")}(e),o=(0,Pe.YM)(a,void 0,s),c=new Nt.y(R.P);c.level=n.level,c.customAttributes=n.customAttributes,c.autoCaptured=i;const d=t[r]?.[Pe.Jt]||t[r];return Lt.set(d,c),o.inPlace(t,[r],"wrap-logger-",()=>Lt.get(d),void 0,!0),a}var Pt=r(1910);class It extends W{static featureName=se.TZ;constructor(e){var t;super(e,se.TZ),t=e,(0,N.Y)("log",(e,r)=>oe(e,r,t),t),function(e){(0,N.Y)(k.Wb,(t,r,{customAttributes:n={},level:i=se.p_.INFO}={})=>{Mt(e.ee,t,r,{customAttributes:n,level:i},!1,e)},e)}(e),Se(e);const n=this.ee;["log","error","warn","info","debug","trace"].forEach(t=>{(0,Pt.i)(g.gm.console[t]),Mt(n,g.gm.console,t,{level:"log"===t?"info":t},void 0,e)}),this.ee.on("wrap-logger-end",function([t],r,i,s=[e.runtime.v2Target]){const{level:a,customAttributes:o,autoCaptured:c}=this;s.forEach(e=>{(0,ae.R)(n,t,o,a,c,e)})}),this.importAggregator(e,()=>r.e(478).then(r.bind(r,5288)))}}new F({features:[nt,K,G,vt,Et,Y,Oe,_t,It,Rt],loaderType:"spa"})})()})();</script>
33<link href="https://d502jbuhuh9wk.cloudfront.net/resources/pagebuilder2/box/box.css" rel="stylesheet" type="text/css" /> 34 <link href="https://d502jbuhuh9wk.cloudfront.net/resources/pagebuilder2/assets/minimalist-blocks/content.css" rel="stylesheet" type="text/css" /> 35 <link href="https://d502jbuhuh9wk.cloudfront.net/resources/pagebuilder2/assets/scripts/animate/animate.css" rel="stylesheet" type="text/css" /> 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 94 95 96 97 98 99 100 101 102 103 104 105 106 <meta name="google" content="notranslate"> 107 108 109 <link rel="canonical" href="https://www.powershellacademy.com/" /> 110 111 112 113<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> 114<link rel="icon" href="/favicon.ico" type="image/x-icon"> 115 116 117 118 119 120 121 122 123 124
124<script>var orgCountry = "IN";</script>
124 125 126 127 128 129<link id="theme" href="https://d502jbuhuh9wk.cloudfront.net/resources/themes/default/spectre.min.css" rel="stylesheet"> 130 131<link rel="preconnect" href="https://fonts.googleapis.com"> 132<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 133 134<link rel="preload" href="https://fonts.googleapis.com/icon?family=Material+Icons|Material+Icons+Outlined" as="style" onload="this.onload=null;this.rel='stylesheet'"> 135<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons|Material+Icons+Outlined" ></noscript> 136 137<link rel="preload" href="https://d502jbuhuh9wk.cloudfront.net/resources/css/intlTelInput.css?v=1" as="style" onload="this.onload=null;this.rel='stylesheet'"> 138<noscript><link rel="stylesheet" href="https://d502jbuhuh9wk.cloudfront.net/resources/css/intlTelInput.css?v=1" ></noscript> 139 140<link rel="preload" href="https://d502jbuhuh9wk.cloudfront.net/fontawesome/css/all.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> 141<noscript><link rel="stylesheet" href="https://d502jbuhuh9wk.cloudfront.net/fontawesome/css/all.min.css" ></noscript> 142 143<link id="theme-exp" href="https://d502jbuhuh9wk.cloudfront.net/resources/themes/default/spectre-exp.min.css" rel="stylesheet"> 144 145 146 147 148 <link href="https://d502jbuhuh9wk.cloudfront.net/staticfiles/resources/stylesheets/sstyles_0f8f8346b730ed7f9d44d25335e652c6.css" rel="stylesheet"> 149 <link rel="stylesheet" href="https://d502jbuhuh9wk.cloudfront.net/staticfiles/resources/stylesheets/sstore_052a28d8fc16dab749345a09dfcd63bf.css"/> 150 151 <link rel="stylesheet" href="https://d502jbuhuh9wk.cloudfront.net/resources/stylesheets/gtheme2.css?v=7"/> 152 153 <style type="text/css"> 154 #loginLoader{ 155 position: absolute; 156 left: 0; 157 right: 0; 158 margin-left: auto; 159 margin-right: auto; 160 width: 100px; 161 top: 50%; 162 } 163 .customSocialBtn { 164 display: flex; 165 white-space: nowrap; 166 justify-content: center; 167 align-items: center; 168 padding: 11px 67px; 169 position: static; 170 left: 0px; 171 top: 40px; 172 cursor: pointer; 173 margin: auto; 174 border: none; 175 gap: 10px; 176 /*width: 364px; 177 height: 48px; 178 background: #000000; */ 179 /*For New Button Remove Bellow Codes and Uncomment upper Code */ 180 background: white; 181 border-radius: 4px; 182 box-shadow: 0 2px 4px 0 rgb(0 0 0 / 25%); 183 width: 245px; 184 height: 40px; 185 } 186 187 .customSocialBtn img.icon { 188 height: 20px; 189 width: 20px; 190 } 191 .customSocialBtn span.buttonText { 192 font-style: normal; 193 font-weight: 900; 194 font-size: 16px; 195 line-height: 120%; 196 opacity: 0.9; 197 font-family: 'Roboto', sans-serif; 198 /* color: #F7F7F7; */ 199 /*For New Button Remove Bellow Codes and Uncomment upper Code */ 200 color: #808080; 201 } 202 </style> 203 204 205 206 207 208 <style type="text/css"> 209 210 </style> 211 212 213 214 215 216 <style type="text/css"> 217 footer a, footer+div a { 218 color: var(--footerTextColor) !important; 219 } 220 footer .socialIcons {text-align: right;} 221 @media (max-width: 600px) { 222 footer .linksCont a { display: block !important; } 223 footer .socialIcons {text-align: center;margin-top: 20px;} 224 } 225 </style> 226 227 228 229 230 231 232 233<style type="text/css"> 234 :root { 235 --themeColor: #5755d9; 236 --themeBGColor: #fff; 237 --headerHeight: 70px; 238 --headerTextColor: #f9f9fb; 239 --headerBGColor: #050810; 240 241 } 242 243 244</style> 245 246<style type="text/css"> 247 footer, .gc-footer, [class*="footer"], [data-section="footer"] { 248 position: fixed !important; 249 bottom: 0 !important; 250 left: 0 !important; 251 width: 100% !important; 252 z-index: -1 !important; 253} 254 255 256 257</style> 258 259 260 261
262<script type="text/javascript"> 263 window.onload = function(event) { 264 document.querySelectorAll('header .avatar img').forEach(function(img){ 265 if(img.naturalWidth == 0) { 266 img.style.display='none'; 267 } 268 }) 269 }; 270 var RESCDN = "https://d502jbuhuh9wk.cloudfront.net"; 271 272 function showCourseDefaultCover(img, cid) { 273 var rndm = ((parseInt(cid.replace(/[a-z]/g, '')) % 10) % 6) + 1; 274 rndm = isNaN(rndm) ? 1 : rndm; 275 if(img === null) { 276 return RESCDN + "/resources/images/cc"+rndm+".jpg"; 277 } 278 279 img.src = RESCDN + "/resources/images/cc"+rndm+".jpg"; 280 } 281</script>
281 282 283 284 285 286 287 288 289 290 291 292 293
294<script type="text/javascript">var learnerConsentMsg = `We've updated our <a href='/termsofuse' target='_blank' style='text-decoration:underline'>terms and conditions</a> and <a href='/privacy-policy' target='_blank' style='text-decoration:underline'>privacy policy</a>.<br>By proceeding, you agree to our new terms.`;</script>
294 295
296<script type="text/javascript">var creatorConsentMsg = `We've updated our <a href='https://graphy.com/legal/terms' target='_blank' style='text-decoration:underline'>terms and conditions</a> and <a href='https://graphy.com/legal/privacy' target='_blank' style='text-decoration:underline'>privacy policy</a>.<br>By proceeding, you agree to our new terms.`;</script>
296 297
298<script type="text/javascript">var cookieMsg = `We use cookies to personalise your experience and to analyse our website traffic. By continuing to use our website, you consent to our cookies.`;</script>
298 299 300 301 302 303
303<script>var orgTermsOfUseVersion = parseInt("1");</script>
303 304 305 306
307<script type="text/template" id="consentPromptTemplate"> 308<div class="spectre"> 309 <div class="modal active" id="consentPrompt"> 310 <a href="javascript:void(0);" class="modal-overlay" aria-label="Close"></a> 311 <div class="modal-container" style="max-width:325px"> 312 <div class="modal-header" style="padding:0.8rem 0.8rem 0px 0.8rem;"> 313 <div class="modal-title h5 text-center">Updated Terms</div> 314 </div> 315 <div class="modal-body"> 316 317 <form id="consentForm" style="text-align:center; font-size:13px"> 318 <div class="content"></div><br> 319 <div class="text-center"> 320 <button id="consentBtn" type="button" class="btn close btn-primary">I Agree</button> 321 </div> 322 </form> 323 324 </div> 325 </div> 326</div> 327</script>
327 328 329
330<script> 331 var hideCookiePopup = false; 332 var cookieConsentEnabled = false; 333 if(!cookieConsentEnabled){ 334 hideCookiePopup = true; 335 } 336 var SPORG = {subscriptionPlan: "launch", checkout_version: "1", customer_type: "r"}; 337</script>
vendor: 1 bytes, line 337
337
338<script type="text/template" id="cookiePopupTemplate"> 339<div class="spectre" style="position: fixed; bottom: 0; width: 100%; opacity:1; z-index: 9999;"> 340 <div class="modal-container p-0" id="cookiePopup"> 341 <form id="cookiePopupForm"> 342 <div class="columns" style="align-items: center;"> 343 <div class="column col-sm-12 content text-center"></div> 344 <div class="column col-sm-12 text-center"> 345 <a href="/privacy-policy" class="btn" target="_blank" id="viewPrivacyPolicyBtn" style="margin-right:15px;">View privacy policy</a> 346 <button id="acceptCookiesBtn" type="button" class="btn close btn-primary">Accept cookies</button> 347 </div> 348 </div> 349 </form> 350 </div> 351</div> 352</script>
352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385<!-- Google Tag Manager -->
386<script>
vendor: 327 bytes, lines 386-390
386(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 387new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 388j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 389'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 390})(window,document,'script','dataLayer','
390GTM-KW7N9P2
vendor: 4 bytes, line 390
390');
391</script>
391 392<!-- End Google Tag Manager --> 393 394
394<script defer type="text/javascript" src="https://api.pirsch.io/pirsch-extended.js" 395 id="pirschextendedjs" 396 data-code="vui12Oz1rnXSwibpt5okwkq4k2jSfoby"></script>
396 397 398 399 400 401 402 403 404 405</head> 406 407<body class=""> 408 409 410 411 412 413 414 415 416 417<div class="header spectre " 418 style="background-color: #050810;"> 419 420 <header class="navbar container" style="min-height: 70px;"> 421 422 <div id="navbar-section-btn"> 423 424 <a href="javascript:void(0);" amplitude-event="navbar_link_tapped_user_landing_page" amplitude-payload='{"custom_domain": "www.powershellacademy.com","button":"cart"}' class="nav-link badge cartBtn mr-2" data-badge="0"><i class="material-icons">shopping_cart</i></a> 425 426 <a class="btn btn-link btn-action ml-2" id="header-collapse-btn" href="javascript:void(0);"> 427 <i class="icon-menu material-icons">menu</i> 428 </a> 429 </div> 430 <section class="navbar-section" style="min-height: 70px;"> 431 <a href="/" amplitude-event="navbar_link_tapped_user_landing_page" amplitude-payload='{"custom_domain": "www.powershellacademy.com","button":"profile_logo"}'><img alt="logo" onerror="this.src='https://d502jbuhuh9wk.cloudfront.net/resources/images/yourlogohere.jpg'" src='https://d502jbuhuh9wk.cloudfront.net/logos/625ab6700cf2a918a3b11b6b.png?v=13'/></a> 432 </section> 433 434 <section class="navbar-section hide-md"> 435 <form class="input-group p-0 relative" action="/s/store/courses" method="GET" style="width:100%;background:transparent"> 436 <div class="input-group" style="width: 100%;"> 437 <input type="text" name="query" value="" class="form-input input-lg searchTxtBox" placeholder="Search"> 438 <button type="submit" class="btn btn-link"><i class="fa-regular fa-magnifying-glass"></i></button> 439 </div> 440 </form> 441 </section> 442 443 <section class="navbar-section menu-links"> 444 445 446 447 448 449 <a class="nav-link" href="https://home.powershellacademy.com/videos.html" data-id="wcil54596" target='_blank'>Free Videos</a> 450 451 <a class="nav-link" href="https://home.powershellacademy.com/store" data-id="lx51z05yq" target='_blank'>Courses</a> 452 453 454 455 456 <a href="/sessions#nav_bar" class="nav-link" amplitude-event="livesessions_tapped" amplitude-payload='{"source":"nav_bar"}' href="javascript:void(0);">Webinars</a> 457 458 459 460 461 462 463 464 465 466 <a href="javascript:void(0);" class="nav-link badge cartBtn hide-md" data-badge="0"><i class="fa-regular fa-cart-shopping"></i></a> 467 468 469 <a href="javascript:void(0);" class="btn btn-primary loginBtn">Login</a> 470 471 472 </section> 473 </header> 474 475 476 <form class="show-md container" action="/s/store/courses" method="GET" style="background:transparent;"> 477 <div class="input-group relative" style="width: 100%;"> 478 <input type="text" name="query" value="" class="form-input input-lg searchTxtBox" placeholder="Search"> 479 <button type="submit" class="btn btn-link"><i class="fa-regular fa-magnifying-glass"></i></button> 480 </div> 481 </form> 482 483</div> 484 485 486 487 488 489 490 491 492
493<script>const customDomain = "www.powershellacademy.com";</script>
493 494 495 496 497
498<script> 499var disabledLocleVar='Disabled'; 500var enabledLocaleVar='Enabled'; 501var smsLocaleVar='SMS'; 502var webpushLocaleVar='Web Push'; 503var mobilepushLocaleVar='Mobile Push'; 504var invoicenumberLocaleVar='Invoice Number'; 505var productLocaleVar='Product'; 506var dateLocaleVar='Date'; 507var amountLocaleVar='Amount'; 508var detailsLocaleVar='Details'; 509var subscriptionPlanLocaleVar='Subscription Plan'; 510var addonsLocaleVar='Add Ons'; 511var showLocalVar='Show'; 512var hideLocaleVar='Hide'; 513</script>
513 514<div class="spectre"> 515 516 517 518 519 520 521 522
522<script> 523 var isPopupLogin = true; 524 var login = ''; 525 var message = ''; 526 function closeLoginPopup() { 527 $("#loginFormHtml").removeClass("active"); 528 $("body").removeClass("overflowYDisable"); 529 } 530 </script>
530 531 532 533 534 535 536 537 <div class="modal" id="loginFormHtml"> 538 <iframe id="microfe-popup-login" src="/t/public/login" loading="lazy" 539 style="width: calc(100% + 10px); height: 100vh; border: none;" 540 onload="$(this).parent().removeClass('loading');"></iframe> 541 </div> 542 543 544 545 546 547 <div class="modal" id="cartHtml"> 548 <a href="javascript:void(0);" class="modal-overlay close" 549 aria-label="Close"></a> 550 <div class="modal-container" style="max-width: 800px;"> 551 <div class="modal-header"> 552 <a href="javascript:void(0);" 553 class="close btn btn-clear float-right" aria-label="Close"></a> 554 <div class="modal-title h5"> 555 <i class="fa-regular fa-shopping-cart"></i> 556 Cart 557 (<span class="cartCount">0</span> 558 Items 559 ) 560 </div> 561 </div> 562 <div class="modal-body" style="max-height: 70vh;"> 563 <div class="content"> 564 565 <div class="text-center msg loading"></div> 566 <div class="text-center msg noItems" style="display: none;"> 567 There are no items in your cart<br/> 568 <a class="btn btn-primary" href="/s/store" 569 style="margin: 20px auto;"> 570 Add More 571 </a> 572 </div> 573 <div class="items msg" style="display: none;"> 574 <div class="m-0 cartDiv"> 575 <table class="table cartTable"> 576 <thead> 577 <tr> 578 <th colspan="2">Item Details</th> 579 <th class="text-right">Price</th> 580 <th style="width: 50px;"></th> 581 </tr> 582 </thead> 583 <tbody></tbody> 584 </table> 585 </div> 586 <div class="suggestCart mt-2 bg-gray p-2" style="display: none;"> 587 <h6>You may also be interested in</h6> 588 <div class="columns loading" id="cartRelatedCont"></div> 589 </div> 590 </div> 591 </div> 592 </div> 593 <div class="modal-footer"> 594 <div class="msg items clearfix"> 595 596 597 598 <div class="float-left text-gray"> 599 Note: Promo Codes can be applied after checkout 600 </div> 601 602 603 604 <div class="float-right"> 605 Total Amount 606 <span class="text-primary curr">$<span 607 class="totalAmount">0</span></span> 608 </div> 609 </div> 610 <div class="msg items clearfix mt-2"> 611 <a class="btn float-left" href="/s/store" amplitude-event="add_more_course_checkout"> 612 Add More 613 </a> 614 615 616 617 618 619 620 621 <a class="btn btn-primary float-right" href="/s/checkout" amplitude-event="checkout_tapped_course_checkout" amplitude-payload='{"currency": "USD" }'>Checkout</a> 622 </div> 623 </div> 624 </div> 625 </div> 626 <div class="modal" id="newCheckoutHtml" style="padding: 0; z-index: 10000;"> 627 <div id="newCheckoutLoader" class="loading loading-lg" style="position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);width: 100%;height: 100%;background-color: rgba(0, 0, 0, 0.5); z-index: 1000;display:none;"></div> 628 <!-- <a href="javascript:void(0);" class="modal-overlay close" 629 aria-label="Close"></a> 630 <div class="modal-container" style=""> --> 631 632 633 <iframe onload="hideCheckoutLoader()" id="newCheckoutIframe" sandbox="allow-top-navigation allow-modals allow-popups allow-presentation allow-orientation-lock allow-pointer-lock allow-popups-to-escape-sandbox allow-top-navigation-by-user-activation allow-scripts allow-same-origin allow-forms" style = "width: calc(100% + 10px); height: 100%; border: none;" src=""></iframe> 634 635 <!-- </div> --> 636 </div> 637</div> 638
639<script type="text/template" id="cartItemTemplate"> 640 <tr data-id="<@- item.id @>" data-type="<@- item.type @>" data-title="<@- item.title @>" data-price="<@- item.price @>" data-coursecategory="<@- item.courseCategory @>"> 641 <@ var itemType = item.type; @> 642 <td style="width:150px;"> 643 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item.id +"/"+ item.id +"_scaled_cover.jpg?v=" + coverVersion; if(isNaN(coverVersion)) { curl = showCourseDefaultCover(null, item.id) } @> 644 <img alt="<@- item.title @> cover" style="width:100%;max-height:100px;" class="img-fit-contain lazy" onerror="showCourseDefaultCover(this, '<@- item.id @>')" 645 data-src='<@- curl @>' /> 646 </td> 647 <td class="itemTitle"><@- item.title @><@ if(item.description !== undefined) { @><div class='text-gray variantDescription'><@ print(item.description) @></div><@ } @></td> 648 <td class="text-right curr"><@ if(item.priceWithoutTax !== undefined && '' != '') { @><@ print(getDisplayAmount(item.priceWithoutTax)) @><br><small><@ print(getDisplayAmount(item.price)) @> incl. <@- item.gstRate @>% </small><@ } else { @><@ print(getDisplayAmount(item.price)) @> <@ if(item.gstRate > 0 && '' != '') { print("<br><small>incl. " +item.gstRate+"% </small>") } @><@ } @> 649 <@ if(item.pgChargesLearnerPercent !==undefined && getDisplayAmount(item.pgChargesLearnerPercent).includes('â¹')) {@> <br><small>Internet handling fees: <@print(getDisplayAmount(item.pgChargesLearnerPercent/100*item.price))@></small> <@} @> 650 </td> 651 <td>
651<button class="btn btn-sm btn-error btn-action circle removeItemBtn" data-url="/s/cart/remove/<@- item.id @>"><i class="material-icons">clear</i></button></td> 652 </tr> 653 </script>
vendor: 1 bytes, line 653
653
654<script type="text/template" id="cartcoursecard-template"> 655 <div class="column col-2 col-md-4 scourse <@- item['spayee:resource']['spayee:courseType'] @>" title="<@- item["spayee:resource"]["spayee:title"] @>"> 656 <a class="card" title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>"> 657 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item["spayee:resource"]["spayee:coverVersion"]; if(isNaN(item["spayee:resource"]["spayee:coverVersion"])) { curl = showCourseDefaultCover(null, item._id) } @> 658 <img style="width: 100%;" alt="<@- item['spayee:resource']['spayee:title'] @> cover" class="lazy" data-src="<@- curl @>" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 659 <div class="card-footer" style="padding: 0.2rem;"><span class="ctitle text-ellipsis d-block" style="color:#2f4f4f;font-size:small;"><@- item["spayee:resource"]["spayee:title"] @></span></div> 660 </a> 661 </div> 662 </script>
vendor: 1 bytes, line 662
662
663<script type="text/template" id="coursecard-template"> 664 <div class="column scourse <@- item['spayee:resource']['spayee:courseType'] @> hidePackageRibbon<@- item['spayee:resource']['spayee:hidePackageRibbon'] @>"> 665 666 667 668 669 <a class="card courseDiscId" style="height:100%" title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" data-id="<@- item._id@>" data-dcid="<@-item._id@>"> 670 671 672 <div class="card-image relative <@ print(item["spayee:resource"]["spayee:availableForMembership"] ? 'includedInMembership' : '') @>"> 673 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id + "/" + item._id +"_scaled_cover.jpg?v=" + item["spayee:resource"]["spayee:coverVersion"]; if(isNaN(item["spayee:resource"]["spayee:coverVersion"])) { curl = showCourseDefaultCover(null, item._id); } @> 674 <div class="blurbg lazy" data-bg="<@- curl @>"></div> 675 <img alt="<@- item['spayee:resource']['spayee:title'] @> cover" class="lazy" data-src="<@- curl @>" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 676 </div> 677 <div class="card-body text-ellipsis"> 678 <span class="ctitle" style="color:#2f4f4f;text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;"><@- item["spayee:resource"]["spayee:title"] @></span><br> 679 680 <@ if(item.rating !== undefined) { @> 681 <span class="text-gray ratingIcons icon-text"> 682 <@ for(var i=1;i<6;i++) { @> 683 <@ if(item.rating.avgRating >= i) { @><i class="material-icons text-primary">star</i><@ }else if(item.rating.avgRating > i-1 && item.rating.avgRating < i) { @><i class="material-icons text-primary">star_half</i><@ }else { @> 684 <i class="material-icons">star_border</i> 685 <@ } } @></span><small class="d-inline-block pl-1 text-dark"><@ print(formatRating(item['rating']['avgRating'])) @> (<@- item['rating']['total'] @> ratings)</small> 686 <@ }else { @> <span class="text-gray ratingIcons icon-text"> </span> <@ } @> 687 <br> 688 <span class="text-gray"> 689 <@ if(item['spayee:resource']['spayee:courseType'] === 'package') { @> 690 <@ print(item["courses-count"]!==undefined?item["courses-count"]:"0") @> Courses 691 <@ }else { @> 692 <@ print(item["spayee:resource"]["spayee:publisher"]!==undefined?htmlEntities(item["spayee:resource"]["spayee:publisher"]):" ") @> 693 <@ } @> 694 </span> 695 </div> 696 <div class="card-footer"> 697 <@ print(getCourseDisplayPrice('$', '', item, '0.0', '', true)) @> 698 <span class="text-gray" style="font-size:small"> 699 <@ if(item['spayee:resource']['spayee:instalmentPlanId']!=null && item['spayee:resource']['spayee:instalmentPlanId'] !== "") { @> 700 <@ print(getCourseInstalmentDisplayPrice('', item))@> 701 <@ }else { @> 702 <@ " " @> 703 <@ } @> 704 </span> 705 </div> 706 <div style="padding: 0 0.8rem 0.8rem 0.8rem;"> 707 <span class="text-gray" style="font-size:small"> 708 <@ if(getMultiplePlanLabel('', item)>1) {@> 709 <i class="material-icons text-primary" style="font-size:small">discount</i> 710 <@ print(' Flexible pricing plans') } @> 711 </span> 712 </div> 713 </a> 714 </div> 715 </script>
715 716
717<script type="text/template" id="blogcard-template"> 718 <div class="column col-3 col-md-6 col-sm-6 col-xs-12 scourse" style="margin-bottom: 20px;"> 719 <a class="card" title="<@- item['spayee:resource']['spayee:title'] @>" href="/blog/<@- item['spayee:resource']['spayee:url'] @>"> 720 <div class="card-image relative"> 721 <@ if(item['spayee:resource']['spayee:cover'] !== undefined && item['spayee:resource']['spayee:cover']) { @> 722 <div class="blurbg lazy" data-bg="https://d502jbuhuh9wk.cloudfront.net/articles/<@- item._id @>/cover.jpg<@ print(item["spayee:resource"]["spayee:coverVersion"] !== undefined?"?v="+item["spayee:resource"]["spayee:coverVersion"]:"") @>"></div> 723 <img alt="<@- item['spayee:resource']['spayee:title'] @> cover" class="img-responsive centered relative lazy" style="max-height: 100%;" data-src="https://d502jbuhuh9wk.cloudfront.net/articles/<@- item._id @>/cover.jpg?v=<@- item['spayee:resource']['spayee:coverVersion'] @>" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 724 <@ }else { @> 725 <div class="blurbg lazy" data-bg="https://d502jbuhuh9wk.cloudfront.net/resources/images/defaultCourseCover.png"></div> 726 <img alt="<@- item['spayee:resource']['spayee:title'] @> cover" class="img-responsive centered relative lazy" style="max-height: 100%;" data-src='https://d502jbuhuh9wk.cloudfront.net/resources/images/defaultCourseCover.png'> 727 <@ } @> 728 </div> 729 <div class="card-body text-ellipsis"><span style="color:#2f4f4f;"><@- item["spayee:resource"]["spayee:title"] @></span></div> 730 <div class="card-footer" style="padding: 0.4rem;"> 731 <span class="text-gray float-left text-ellipsis" style="max-width: calc(100% - 110px);"><@ print(item["spayee:resource"]["spayee:author"]!==undefined?htmlEntities(item["spayee:resource"]["spayee:author"]):"") @></span> 732 <@ var pdate = item.createdDate.$date; if(item['spayee:resource']['spayee:publishDate'] !== undefined && item['spayee:resource']['spayee:publishDate'] !== '') { pdate = item['spayee:resource']['spayee:publishDate']; } @> 733 <time class="float-right text-warning"><@ print(formatDate(new Date(pdate))) @></time> 734 </div> 735 </a> 736 </div> 737 </script>
737 738 739
739<script type="text/javascript"> 740 var uuid = function (a) { 741 // https://github.com/amplitude/Amplitude-Javascript/blob/master/src/uuid.js 742 return a // if the placeholder was passed, return 743 ? // a random number from 0 to 15 744 ( 745 a ^ // unless b is 8, 746 ((Math.random() * // in which case 747 16) >> // a random number from 748 (a / 4)) 749 ) // 8 to 11 750 .toString(16) // in hexadecimal 751 : // or otherwise a concatenated string: 752 ( 753 [1e7] + // 10000000 + 754 -1e3 + // -1000 + 755 -4e3 + // -4000 + 756 -8e3 + // -80000000 + 757 -1e11 758 ) // -100000000000, 759 .replace( 760 // replacing 761 /[018]/g, // zeroes, ones, and eights with 762 uuid, // random hex digits 763 ); 764 }; 765 766 (function(e,t){var n=e.amplitude||{_q:[],_iq:{}};var r=t.createElement("script") 767 ;r.type="text/javascript" 768 ;r.integrity="sha384-tzcaaCH5+KXD4sGaDozev6oElQhsVfbJvdi3//c2YvbY02LrNlbpGdt3Wq4rWonS" 769 ;r.crossOrigin="anonymous";r.async=true 770 ;r.src="https://cdn.amplitude.com/libs/amplitude-8.5.0-min.gz.js" 771 ;r.onload=function(){if(!e.amplitude.runQueuedFunctions){ 772 console.log("[Amplitude] Error: could not load SDK")}} 773 ;var i=t.getElementsByTagName("script")[0];i.parentNode.insertBefore(r,i) 774 ;function s(e,t){e.prototype[t]=function(){ 775 this._q.push([t].concat(Array.prototype.slice.call(arguments,0)));return this}} 776 var o=function(){this._q=[];return this} 777 ;var a=["add","append","clearAll","prepend","set","setOnce","unset","preInsert","postInsert","remove"] 778 ;for(var c=0;c<a.length;c++){s(o,a[c])}n.Identify=o;var u=function(){this._q=[] 779 ;return this} 780 ;var l=["setProductId","setQuantity","setPrice","setRevenueType","setEventProperties"] 781 ;for(var p=0;p<l.length;p++){s(u,l[p])}n.Revenue=u 782 ;var d=["init","logEvent","logRevenue","setUserId","setUserProperties","setOptOut","setVersionName","setDomain","setDeviceId","enableTracking","setGlobalUserProperties","identify","clearUserProperties","setGroup","logRevenueV2","regenerateDeviceId","groupIdentify","onInit","logEventWithTimestamp","logEventWithGroups","setSessionId","resetSessionId"] 783 ;function v(e){function t(t){e[t]=function(){ 784 e._q.push([t].concat(Array.prototype.slice.call(arguments,0)))}} 785 for(var n=0;n<d.length;n++){t(d[n])}}v(n);n.getInstance=function(e){ 786 e=(!e||e.length===0?"$default_instance":e).toLowerCase() 787 ;if(!Object.prototype.hasOwnProperty.call(n._iq,e)){n._iq[e]={_q:[]};v(n._iq[e]) 788 }return n._iq[e]};e.amplitude=n})(window,document); 789 790 amplitude.getInstance().init('e56929a4c3888c23e97a7e70e34ccf6c'); 791 amplitude.getInstance().setUserId(null); 792 //amplitude.getInstance().regenerateDeviceId(); 793 794 var userProperties = { 795 custom_domain: "www.powershellacademy.com", 796 org_id: "625ab6700cf2a918a3b11b6b", 797 default_google_login_enabled: '' == 'true', 798 personalized_google_login_enabled: '' != '' && '' == 'false' ? true : false, 799 facebook_login_enabled: '' == 'true' ? true : false 800 }; 801 amplitude.getInstance().setUserProperties(userProperties); 802 803/* var deviceId = uuid(); 804 amplitude.getInstance().setDeviceId(deviceId); 805 sessionStorage.setItem('amplitudeDeviceId', deviceId); */ 806 </script>
806 807 808
808<script type="text/javascript"> 809 window.signupParams = {source: "store", platform: "web", sourceId: null}; 810 var showGraphyFomoFlag = ''; 811 812 showGraphyFomoFlag = '625ab6700cf2a918a3b11b6b'; 813 814 </script>
814 815 816
816<script type="text/javascript"> 817 function hideCheckoutLoader() { 818 if(typeof window.hideLoader =="function") { 819 window.hideLoader(); 820 } 821 } 822 var checkoutRedirectGuestUsers = 'signup'; 823 </script>
823 824 825 826 827 828 829
830<script type="text/template" id="spcoursecard-2-template"> 831 <div class="column third"> 832 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 833 <a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="text-decoration: none;"> 834 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 835 <img class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 836 <h4 class="size-21 text-ellipsis" style="text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;"><@- item['spayee:resource']['spayee:title'] @></h4> 837 <p class="size-16"><@ if(item.rating !== undefined) { @> 838 <span class="text-gray ratingIcons icon-text"> 839 <@ for(var i=1;i<6;i++) { @> 840 <@ if(item.rating.avgRating >= i) { @><i class="material-icons text-primary">star</i><@ }else if(item.rating.avgRating > i-1 && item.rating.avgRating < i) { @><i class="material-icons text-primary">star_half</i><@ }else { @> 841 <i class="material-icons">star_border</i> 842 <@ } } @></span><span><@ print(formatRating(item['rating']['avgRating'])) @> (<@- item['rating']['total'] @> ratings)</span> 843 <@ }else { @> <span class="text-gray ratingIcons icon-text"> </span> <@ } @></p> 844 <p class="size-16 text-ellipsis"><@ if(item['spayee:resource']['spayee:courseType'] === 'package') { @><@ print(item["courses-count"]!==undefined?item["courses-count"]:"0") @> Courses<@ }else { @> 845 <@ print(item["spayee:resource"]["spayee:publisher"]!==undefined?item["spayee:resource"]["spayee:publisher"]:" ") @><@ } @></p> 846 847 <p class="size-18"><span style="color: rgb(21, 101, 192);"><@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', true)) @></span><br></p> 848 <div style="margin:1em 0"></div> 849 </a> 850 </div> 851 </script>
vendor: 1 bytes, line 851
851
852<script type="text/template" id="spcoursecard-1-template"> 853 <div class="column third"> 854 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 855 <a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="text-decoration: none;"> 856 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 857 <img class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 858 <h4 class="size-21 text-ellipsis" style="text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;"><@- item['spayee:resource']['spayee:title'] @></h4> 859 <div class="size-16 text-ellipsis" style="max-height: 3rem;"><@ print(item['spayee:resource']['spayee:shortDescription']!==undefined?item['spayee:resource']['spayee:shortDescription']:"") @></div> 860 861 <p class="size-18"><span style="color: rgb(21, 101, 192);"><@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', true)) @></span><br></p> 862 <div style="margin:1em 0"></div> 863 </a> 864 </div> 865 </script>
vendor: 1 bytes, line 865
865
866<script type="text/template" id="spcoursecard-3-template"> 867 <div class="column third"> 868 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 869 <a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="text-decoration: none;"> 870 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 871 <img class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 872 <h4 class="size-21 text-ellipsis" style="text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;"><@- item['spayee:resource']['spayee:title'] @></h4> 873 <div class="size-16 text-ellipsis" style="max-height: 3rem;"><@ print(item['spayee:resource']['spayee:shortDescription']!==undefined?item['spayee:resource']['spayee:shortDescription']:"") @></div> 874 <p class="size-16 text-ellipsis"><@ if(item['spayee:resource']['spayee:courseType'] === 'package') { @><@ print(item["courses-count"]!==undefined?item["courses-count"]:"0") @> Courses<@ }else { @> 875 <@ print(item["spayee:resource"]["spayee:publisher"]!==undefined?item["spayee:resource"]["spayee:publisher"]:" ") @><@ } @></p> 876 <p class="size-18"><span style="color: rgb(21, 101, 192);"><@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', true)) @></span><br></p> 877 <div style="margin:1em 0"></div> 878 </a> 879 </div> 880 </script>
880 881
882<script type="text/template" id="spcoursecard-4-template"> 883 <div class="column third text-center" style="padding-left: 1rem; padding-right: 1rem; margin-bottom: 0px;"> 884 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 885 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 886 <a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="text-decoration: none;"> 887 <img class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 888 </a> 889 <h3 class="size-18 text-center" style="text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;"><b class="text-primary"><@- item['spayee:resource']['spayee:title'] @></b></h3> 890 <div class="discription"><@ print(item['spayee:resource']['spayee:shortDescription']!==undefined?item['spayee:resource']['spayee:shortDescription']:"") @></div> 891 <p class="size-18 price text-primary"><@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', true)) @></p> 892 <a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" class="buy-btn btn btn-primary" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}'>Buy now<br></a> 893 </div> 894 </script>
894
895<script type="text/template" id="spcoursecard-5-template"> 896 <div class="column third" style="padding-left: 1rem; padding-right: 1rem; margin-bottom: 0px;"> 897 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 898 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 899 <a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="text-decoration: none;"> 900 <img class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 901 </a> 902 <h3 class="sub-heading"><b class="size-18 text-primary"><@- item['spayee:resource']['spayee:title'] @></b></h4> 903 <p class="size-16 description text-primary"> <@ if(item['spayee:resource']['spayee:courseType'] === 'package') { @><@ print(item["courses-count"]!==undefined?item["courses-count"]:"0") @> Courses<@ }else { @> 904 Instructor : <@ print(item["spayee:resource"]["spayee:publisher"]!==undefined?item["spayee:resource"]["spayee:publisher"]:" ") @><@ } @></p> 905 <@if(item.rating){@> 906 <p class="size-16 description text-primary">Rating: 907 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 908 <@if(item.rating){@> 909 <@if(item.rating.avgRating){@> 910 <@ if(item.rating.avgRating >= ratingsSize) {@> 911 <i class="icon ion-android-star text-primary"></i> 912 <@ } else if(item.rating.avgRating > ratingsSize-1 && item.rating.avgRating < ratingsSize) { @> 913 <i class="icon ion-android-star-half text-primary"></i> 914 <@ } @> 915 <@}@> 916 <@}@> 917 <@}@> 918 </p> 919 <@}@> 920 921 <p class="size-18 price text-primary">Price : <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', true)) @></p> 922 <a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" class="buy-btn btn btn-primary" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}'>Buy now</a> 923 </div> 924 </script>
924 925
926<script type="text/template" id="spcoursecard-6-template"> 927 <div class="column third"> 928 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 929 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 930 931 932 933 <@ if (item['spayee:resource']['spayee:availableForMarket']==="true" ) { @> 934 <a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="text-decoration: none;"> 935 <@ } else { @> 936 <a title="<@- item['spayee:resource']['spayee:title'] @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="text-decoration: none;"> 937 <@ } @> 938 939 940 <img class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')" style="border-radius: 20px; margin-bottom: 0px; width: 100%; height: 190px;object-fit:cover;"> 941 </a> 942 <div style="font-weight: 800; line-height: 1.1; text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;" class="text-ellipsis"><@- item['spayee:resource']['spayee:title'] @></div> 943 <p class="size-16 description text-primary"><@ if(item['spayee:resource']['spayee:courseType'] === 'package') { @> Courses<@ } @></p> 944 <p class="size-18 price text-primary"><@ if (item['spayee:resource']['spayee:availableForMarket']==="true" ) @> <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @></p> 945 <@ if (item.isMembershipPage != undefined && !item.isMembershipPage) { @> 946 947 948 949 <a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" class="buy-btn btn btn-primary" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="border: none;padding: 16px 61px; font-size: 16px; letter-spacing: 0.08px; line-height: 16px; font-weight: 600; text-decoration: none; display: block; text-align: center;"> 950 Buy now 951 </a> 952 953 954 <@ } @> 955 </div> 956 </script>
956 957 958
959<script type="text/template" id="spcoursecard-7-template"> 960 <div class="column third course-mob-block"> 961 <div class="inner-course-block"> 962 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 963 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 964 <a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="text-decoration: none;"> 965 <img class="lazy" data-style="width: 100%; height: auto;" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')" > 966 </a> 967 <div class="course-price-block"> 968 <p class="text-ellipsis" title="<@- item['spayee:resource']['spayee:title'] @>" style="font-size: 18px; font-weight: 700; line-height: 1.3rem; width: 100%; margin-top: 0px; margin-bottom: 0px; min-height: 47px; text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;"> 969 <@- item['spayee:resource']['spayee:title'] @> 970 </p> 971 <p class="text-primary" style="word-break: break-all; font-size: 14px; font-weight: 500; line-height: 1.5; margin-top: 16px; margin-bottom: 0px;"> 972 <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @> 973 </p> 974 </div> 975 <a title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" class="buy-btn btn btn-primary" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="display: inline-block; text-decoration: none; transition: all 0.16s ease 0s; border: none; cursor: pointer; border-radius: 4px; padding: 13px 28px; line-height: 1.5; font-weight: 600; font-size: 14px; letter-spacing: 0.15px; margin-top: 28px;"> 976 Enroll now 977 </a> 978 </div> 979 </div> 980</script>
980 981
982<script type="text/template" id="spcoursecard-8-template"> 983 <div class="row clearfix" style="margin-bottom: 24px; margin-top: 14px;"> 984 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 985 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 986 <div class="column third center" style="padding-left: 0px; padding-right: 0px;"> 987 <img 988 class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')" 989 style="margin-top: 0px; margin-bottom: 0px;" 990 /> 991 </div> 992 <div class="column two-third course-block-mob" style="display: flex; flex-direction: column; justify-content: center;"> 993 <div class="course-price-block"> 994 <h3 style="color: rgb(255, 255, 255); font-size: 18px; font-weight: 700; line-height: 1.1; margin-bottom: 0px; margin-top: 0px; text-wrap: balance;overflow: hidden;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;"> 995 <@- item['spayee:resource']['spayee:title'] @> 996 </h3> 997 <div class="sortDescription8"> 998 <@ print(item['spayee:resource']['spayee:shortDescription']!==undefined?item['spayee:resource']['spayee:shortDescription']:"") @> 999 </div> 1000 </div> 1001 1002 <a class="buy-btn btn btn-primary" title="<@- item['spayee:resource']['spayee:title'] @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" style="width: fit-content; text-align: left; display: inline-block; text-decoration: none; transition: all 0.16s ease 0s; cursor: pointer; background-color: rgb(231, 215, 73); color: rgb(0, 0, 0);border-radius: 0px;padding: 16px 48px;line-height: 16px;font-weight: 700;font-size: 16px;letter-spacing: 0.08px;border-image: initial;"> 1003 Enroll for <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @> 1004 </a> 1005 </div> 1006 </div> 1007 </script>
1007 1008 1009 1010 <!-- vegas TEMPLATE 9 NEW--> 1011
1011<script type="text/template" id="spcoursecard-9-template" > 1012 <div class="column third text-center course-card-fixed-height" style="padding-left: 1rem; padding-right: 1rem; margin-bottom: 2rem; text-align:left;"> 1013 <div style="border:1px solid #D7D7D7; border-radius:24px; padding-bottom: 20px; height: 100%; display: flex; flex-direction: column;"> 1014 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 1015 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 1016 1017 <a style="color:black; text-align:left;" title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}'> 1018 <img style="height:200px; width:100%; object-fit:fill; margin:0px 0px; border-top-left-radius:24px; border-top-right-radius:24px;" class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 1019 </a> 1020 1021 <div style="padding:10px 20px; flex-grow: 1; display: flex; flex-direction: column;" class="course-card-content"> 1022 <h3 1023 class="size-18 text-left" 1024 title="<@- item['spayee:resource']['spayee:title'] @>" 1025 style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%; display: block; margin-bottom: 12px; color: black;" 1026 > 1027 <b style="color:black;"><@- item['spayee:resource']['spayee:title'] @></b> 1028 </h3> 1029 1030 <div 1031 class="size-16 text-ellipsis course-card-text" 1032 title="<@= (item['spayee:resource']['spayee:shortDescription'] || ' ').replace(/<[^>]*>/g, '') @>" 1033 style="max-height: 3rem; min-height: 3rem; margin-bottom: 12px; overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1;" 1034 > 1035 <@= (item['spayee:resource']['spayee:shortDescription'] || '').replace(/<[^>]*>/g, '') @> 1036 </div> 1037 </div> 1038 1039 <div style="margin-top: auto; margin-left:10px;"> 1040 <a style="background-color:#FB5607 !important; border:0px !important; border-radius:62px !important; padding:10px 16px !important; width: fit-content; display: inline-block; text-decoration: none; color: white; padding: 12px 24px; font-weight: 600 !important; font-size: 16px;letter-spacing:0px; !important" 1041 class="buy-btn btn btn-primary" 1042 title="<@- item['spayee:resource']['spayee:title'] @>" 1043 amplitude-event="buy_now_tapped_course_checkout" 1044 amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' 1045 href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>"> 1046 Enroll for <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @> 1047 </a> 1048 </div> 1049 </div> 1050 </div> 1051 </div> 1052</script>
1052 1053 1054 <!--Blaze Course nEW tEMPLATE 10--> 1055
1055<script type="text/template" id="spcoursecard-10-template"> 1056 <div class="column third text-center course-card-fixed-height" style="padding-left: 1rem; padding-right: 1rem; margin-bottom: 10px;margin-top:10px; text-align:left;"> 1057 <div style="height: 100%; display: flex; flex-direction: column;"> 1058 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 1059 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 1060 1061 <a style="color:black; text-align:left;" title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' style="text-decoration: none; color:black; font-size:24px;"> 1062 <img style="height:320px; object-fit:cover; margin:0px 0px;" class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 1063 </a> 1064 1065 <div style=" flex-grow: 1; display: flex; flex-direction: column;" class="course-card-content"> 1066 <h3 1067 class="size-18 text-left" 1068 style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%; display: block; margin-bottom: 12px; color: white;" 1069 > 1070 <b title="<@= item['spayee:resource']['spayee:title'] @>" style="color:white;"> 1071 <@- item['spayee:resource']['spayee:title'] @> 1072 </b> 1073 </h3> 1074 1075 <div title="<@= (item['spayee:resource']['spayee:shortDescription'] || ' ').replace(/<[^>]*>/g, '') @>" class="size-16 text-ellipsis course-card-text" style="max-height: 3rem; min-height: 3rem; margin-bottom: 12px; overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1;color:white;"> 1076 <@= (item['spayee:resource']['spayee:shortDescription'] || '').replace(/<[^>]*>/g, '') @> 1077 </div> 1078 1079 <div style="margin-top: auto;"> 1080 <a style="width:100% !important;font-weight:600 !important; letter-spacing:0px; color:black !important; background-color:#D8FD46 !important; border:0px !important; border-radius:0px !important; padding:20px 36px !important; width: fit-content; display: inline-block; text-decoration: none; transition: all 0.16s ease 0s; cursor: pointer; padding: 16px 28px; line-height: 16px; font-weight: 700; font-size: 16px; letter-spacing: 0px; border-image: initial;" 1081 class="buy-btn btn btn-primary" 1082 title="<@- item['spayee:resource']['spayee:title'] @>" 1083 amplitude-event="buy_now_tapped_course_checkout" 1084 amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' 1085 href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>"> 1086 Enroll for <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @> 1087 </a> 1088 1089 </div> 1090 </div> 1091 </div> 1092 </div> 1093 </script>
1093 1094 1095 <!--Olive Course 11--> 1096
1096<script type="text/template" id="spcoursecard-11-template" > 1097 <@ 1098 // Calculate colors based on index 1099 var colorIndex = (typeof window.courseCardColorIndex === 'undefined') ? 0 : window.courseCardColorIndex; 1100 var colors = [ 1101 { bg: '#FFA46B', btnBg: '#361500' }, // Orange card â Dark brown button 1102 { bg: '#87A1F6', btnBg: '#001A71' }, // Blue card â Dark blue button 1103 { bg: '#B073DC', btnBg: '#34005A' } // Purple card â Dark brown button (default) 1104 ]; 1105 var currentColor = colors[colorIndex % 3]; 1106 window.courseCardColorIndex = colorIndex + 1; 1107 @> 1108 1109 <div class="column third text-center course-card course-card-fixed-height" style="padding: 0 15px; margin-bottom: 30px;"> 1110 <div class="course-card-wrapper" style="background-color: <@- currentColor.bg @>; height: 100%; border-radius: 32px; overflow: hidden;"> 1111 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; 1112 if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 1113 1114 <a class="course-image-link" style="display: block; padding: 16px;padding-bottom:0px" title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>"> 1115 <img style="height:320px; width:100%; object-fit:cover; border-radius: 32px;" class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 1116 </a> 1117 1118 <div style="padding: 20px;" class="course-card-content"> 1119 <h3 style="font-size:24px; text-transform:uppercase; color: black; margin: 0 0 15px 0; text-align: left;white-space:nowrap; overflow: hidden; text-overflow: ellipsis;width: 100%;display:block;"> 1120 <b title="<@= item['spayee:resource']['spayee:title'] @>"><@- item['spayee:resource']['spayee:title'] @></b> 1121 </h3> 1122 <div title="<@= (item['spayee:resource']['spayee:shortDescription'] || ' ').replace(/<[^>]*>/g, '') @>" class="size-16 text-ellipsis course-card-text" style="max-height: 3rem; min-height: 3rem; color:black; margin-bottom: 12px;text-align: left;"> 1123 <@ print(item['spayee:resource']['spayee:shortDescription']!==undefined?item['spayee:resource']['spayee:shortDescription']:" ") @> 1124 </div> 1125 <a class="enroll-button" 1126 style="display: block; 1127 background-color: <@- currentColor.btnBg @>; 1128 color: white !important; 1129 padding: 12px; 1130 text-align: center; 1131 font-weight: 600; 1132 text-decoration: none; 1133 border-radius: 32px;" 1134 href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>"> 1135 Enroll for <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @> 1136 </a> 1137 </div> 1138 </div> 1139 </div> 1140 1141 </script>
1141 1142 1143 1144 <!-- Nebula Course 12--> 1145
1145<script type="text/template" id="spcoursecard-12-template" > 1146 <div class="column third text-center course-card-fixed-height" style="padding-left: 1rem; padding-right: 1rem; margin-bottom: 2rem; text-align:left;"> 1147 <div style="border:0px; border-radius:16px; padding-bottom: 20px; height: 100%; display: flex; flex-direction: column;"> 1148 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 1149 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 1150 1151 <a style="color:black; text-align:left;" title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}'> 1152 <img style="height:240px; width:100%; object-fit:fill; margin:0px 0px; border-radius:16px; " class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 1153 </a> 1154 1155 <div style="padding:10px 0px; flex-grow: 1; display: flex; flex-direction: column;" class="course-card-content"> 1156 <h3 1157 class="size-18 text-left" 1158 title="<@- item['spayee:resource']['spayee:title'] @>" 1159 style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%; display: block; margin-bottom: 12px; color: black;" 1160 > 1161 <b style="color:black;"><@- item['spayee:resource']['spayee:title'] @></b> 1162 </h3> 1163 1164 <div 1165 class="size-16 text-ellipsis course-card-text" 1166 title="<@= (item['spayee:resource']['spayee:shortDescription'] || ' ').replace(/<[^>]*>/g, '') @>" 1167 style="max-height: 3rem; min-height: 3rem; margin-bottom: 12px; overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1;" 1168 > 1169 <@= (item['spayee:resource']['spayee:shortDescription'] || '').replace(/<[^>]*>/g, '') @> 1170 </div> 1171 </div> 1172 1173 <div style="margin-top: auto; margin-left:0px;"> 1174 <a style="background-color:#6715FF !important; border-radius:12px !important; padding:10px 16px !important; width: fit-content; display: inline-block; text-decoration: none; color: white; padding: 12px 24px; font-weight: 600 !important; font-size: 16px;letter-spacing:0px; !important" 1175 class="buy-btn btn btn-primary" 1176 title="<@- item['spayee:resource']['spayee:title'] @>" 1177 amplitude-event="buy_now_tapped_course_checkout" 1178 amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' 1179 href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>"> 1180 Enroll for <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @> 1181 </a> 1182 </div> 1183 </div> 1184 </div> 1185 </div> 1186 </script>
1186 1187 1188 1189 1190 <!--Dusk Course-13--> 1191
1191<script type="text/template" id="spcoursecard-13-template" > 1192 <div class="column third text-center course-card-fixed-height" style="padding-left: 1rem; padding-right: 1rem; margin-bottom: 2rem; text-align:left;"> 1193 <div style="border:0px; border-radius:16px; padding-bottom: 20px; height: 100%; display: flex; flex-direction: column;"> 1194 <@ var curl = "https://d502jbuhuh9wk.cloudfront.net/courses/"+ item._id +"/"+ item._id +"_scaled_cover.jpg?v=" + item['spayee:resource']['spayee:coverVersion']; if(isNaN(item['spayee:resource']['spayee:coverVersion'])) { curl = showCourseDefaultCover(null, item._id); } @> 1195 <@ var planName = getCoursePlanName(sessionCountry, item), price = getCoursePrice(sessionCountry, item, '0.0', ''), isPackage = item['spayee:resource']['spayee.courseType'] == 'package', courseId = isPackage ? '' : item._id, packageId = isPackage ? item._id : ''; @> 1196 1197 <a style="color:black; text-align:left;" title="<@- item['spayee:resource']['spayee:title'] @>" href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>" amplitude-event="buy_now_tapped_course_checkout" amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}'> 1198 <img style="height:240px; width:100%; object-fit:fill; margin:0px 0px; border-radius:16px; " class="lazy" data-src="<@- curl @>" alt="<@- item['spayee:resource']['spayee:title'] @> cover" onerror="showCourseDefaultCover(this, '<@- item._id @>')"> 1199 </a> 1200 1201 <div style="padding:10px 0px; flex-grow: 1; display: flex; flex-direction: column;" class="course-card-content"> 1202 <h3 1203 class="size-18 text-left" 1204 title="<@- item['spayee:resource']['spayee:title'] @>" 1205 style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%; display: block; margin-bottom: 12px; color: black;" 1206 > 1207 <b style="color:black;"><@- item['spayee:resource']['spayee:title'] @></b> 1208 </h3> 1209 1210 <div 1211 class="size-16 text-ellipsis course-card-text" 1212 title="<@= (item['spayee:resource']['spayee:shortDescription'] || ' ').replace(/<[^>]*>/g, '') @>" 1213 style="max-height: 3rem; min-height: 3rem; margin-bottom: 12px; overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1;" 1214 > 1215 <@= (item['spayee:resource']['spayee:shortDescription'] || '').replace(/<[^>]*>/g, '') @> 1216 </div> 1217 </div> 1218 1219 1220 1221 <div style="margin-top: auto; margin-left:0px;"> 1222 <a style="background-color:#282400 !important;border:0px ; border-radius:41px !important; padding:10px 24px !important; width: fit-content; display: inline-block; text-decoration: none; color: white; padding: 12px 24px; font-weight: 600 !important; font-size: 16px;letter-spacing:0px; !important" 1223 class="buy-btn btn btn-primary" 1224 title="<@- item['spayee:resource']['spayee:title'] @>" 1225 amplitude-event="buy_now_tapped_course_checkout" 1226 amplitude-payload='{"plan_name": "<@- planName @>", "price": <@- price @>, "currency": "USD", "course_id": "<@- courseId @>", "is_package": <@- isPackage @>, "package_id": "<@- packageId @>"}' 1227 href="<@ print(getCourseLandingPageUrl(item._id, item['spayee:resource']['spayee:courseUrl'])) @>"> 1228 Enroll for <@ print(getCourseDisplayPrice('$', sessionCountry, item, '0.0', '', false)) @> 1229 </a> 1230 </div> 1231 </div> 1232 </div> 1233 </div> 1234 </script>
1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244<!-- Curriculum 1st Template -->
1245<script type="text/template" id="coursecurr-1-template"> 1246 <table class="table courseContents"> 1247 <thead> 1248 <tr> 1249 <td style="width: 50px;"></td> 1250 <td style="width: 50px;"></td> 1251 <td></td> 1252 </tr> 1253 </thead> 1254 <tbody> 1255 <@ $.each(item, function(index, value) { @> 1256 <tr> 1257 <td><i class="material-icons courseItemIcon" data-type="<@- value.type @>"></i></td> 1258 <td colspan="2"> 1259 <@- value.title @> 1260 <@ if(value.type == 'aiheading') { @> 1261 <small>(coming soon)</small><@ } @> 1262 <@ if(assetInfo && value.type == 'video' && value.duration !== undefined && value.duration > 0) { @> 1263 <small>(<@ print(Math.floor(value.duration)) @>:00)</small><@ } @> 1264 <@ if(assetInfo && value.type == 'pdf' && value.pages !== undefined && value.pages > 0) { @> 1265 <small>(<@- value.pages @> pages)</small> 1266 <@ } @> 1267 </td> 1268 </tr> 1269 <@ if(value.items != undefined) { @> <@ $.each(value['items'], function(index1, value1) { @> 1270 <tr> 1271 <td></td> 1272 <td><i class="material-icons courseItemIcon" data-type="<@- value1.type @>"></i></td> 1273 <td> 1274 <@- value1.title @> 1275 <@ if(assetInfo && value.type == 'video' && value1.duration !== undefined && value1.duration > 0) { @><small>(<@ print(Math.floor(value1.duration)) @>:00)</small><@ } @> 1276 <@ if(assetInfo && value1.type =='pdf' && value1.pages !== undefined && value1.pages > 0) { @><small>(<@- value1.pages @> pages)</small><@ } @> 1277 <@ if(value1.type =='aiheading') { @><small>(coming soon)</small><@ } @> 1278 </td> 1279 </tr> 1280 <@ }); @> <@ } @> <@ }); @> 1281 </tbody> 1282 </table> 1283</script>
1283 1284 1285 1286<!-- Curriculum 2nd Template -->
1287<script type="text/template" id="coursecurr-2-template"> 1288 <div class="column full curriculum2" spellcheck="false"> 1289 <div class="course-content1" > 1290 <p style="font-size: 15px; font-weight: 400; margin-top: 0px;"> 1291 <@if(summary.modules && summary.modules>0){@> 1292 <@print(summary.modules)@> Modules <i class="icon ion-android-folder-open"></i> <@if(summary.sessions && summary.sessions>0 && curriculumAssetInfo){@>|<@}@> 1293 <@}@> 1294 <@if(summary.sessions && summary.sessions>0 && curriculumAssetInfo){@> 1295 <@print(summary.sessions)@> Sessions <i class="icon ion-android-laptop"></i> <@if(summary.durations && summary.durations>0 && curriculumAssetInfo){@>|<@}@> 1296 <@}@> 1297 <@if(summary.durations && summary.durations>0 && curriculumAssetInfo){@> 1298 <@print(millisecondsToHHMMSSStr(summary.durations))@> Total Time <i class="icon ion-ios-clock-outline"></i> 1299 <@}@> 1300 </p> 1301 </div> 1302 1303 1304 <@ $.each(item, function(index, value) { @> 1305 <div class="course-course-content-box" > 1306 <div class="course-content-blue-title <@if(value && value.contents){@> bg-primary <@}else if($('#'+id).closest('div.is-section').hasClass("is-bg-grey")){@>bg-white<@}else{@>is-bg-grey<@}@>" > 1307 <span class="title-icon"> 1308 <span class="material-icons <@if(value && !value.contents){@> text-primary <@}@>"><@ print(getCourseAssetIcon(value.type))@></span> 1309 </span> 1310 <div class="titl5b" > 1311 <h3 class="<@if(value && !value.contents){@> text-primary <@}@>"> 1312 <@print(value.title)@> <@ if(curriculumAssetInfo && value.type == 'pdf' && value.pages !== undefined && value.pages > 0) { @><small>(<@- value.pages @> pages)</small><@ } @> 1313 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value.id)){@> 1314 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,"-"))@>-<@- courseId @>#<@print(value.id)@>" class="previewBtn"><span class="<@if(value && !value.contents){@> text-primary <@}@>">Preview</span></a> 1315 <@}@> 1316 </h3> 1317 <p class="<@if(value && !value.contents){@> text-primary <@}@>"><@if(value && value.contents && curriculumAssetInfo){@> 1318 Sessions: <@print(value.contents)@> 1319 <@}@> 1320 <@if(value.moduleDurations && curriculumAssetInfo){@><@if(value && value.contents){@>|<@}@> 1321 Time: <@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 1322 <@}@> 1323 <@if(value && value.contents>0){@><span class="material-icons">expand_more</span><@}@> </p> 1324 </div> 1325 </div> 1326 <@if(value && value.items){@> 1327 <@ $.each(value['items'], function(index1, value1) { @> 1328 <div class="course-content-body <@if(index==0){@>showing<@ }@>" > 1329 <div class="desc1 " > 1330 <div class="is-box-9" > 1331 <div class="boxa1" > 1332 <span class="material-icons text-primary"><@ print(getCourseAssetIcon(value1.type))@></span> 1333 <p> <@print(value1.title)@> <@ if(curriculumAssetInfo && value1.type == 'pdf' && value1.pages !== undefined && value1.pages > 0) { @><small>(<@- value1.pages @> pages)</small><@ } @> 1334 <@ if(value1.type == 'aiheading') { @><small>(coming soon)</small><@ } @> 1335 </p> 1336 1337 </div> 1338 </div> 1339 <div class="is-box-1" > 1340 <div class="boxa2" > 1341 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@> 1342 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,"-"))@>#<@print(value1.id)@>"> 1343 <@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> 1344 </a> 1345 <@}@> 1346 </div> 1347 </div> 1348 <div class="is-box-2" > 1349 <div class="boxa2" > 1350 <p class="duration"><@if(value1.duration && curriculumAssetInfo){@><@print(millisecondsToHHMMSSStr(value1.duration))@><@}@></p> 1351 </div> 1352 </div> 1353 </div> 1354 </div> 1355 <@ }); @> 1356 <@}@> 1357 </div> 1358 <@ }); @> 1359 1360 </div> 1361</script>
1361 1362 1363 1364 1365 1366 1367<!-- Curriculum 3rd Template -->
1368<script type="text/template" id="coursecurr-3-template"> 1369 <div class="column full" spellcheck="false" data-gramm="false"> 1370 <div class="accordion-syllabus" > 1371 <@ $.each(item, function(index, value) { @> 1372 <div class="accordion-syllabus-item"> 1373 <header class="accordion-syllabus-header"> 1374 <h4 class="accordion-syllabus-header__title"> 1375 <span class="text-primary"> 1376 <@if(index<9){@> 1377 0<@print(index+1)@> 1378 <@ } else {@> 1379 <@print(index+1)@> 1380 <@ } @> 1381 </span> 1382 <p><@print(value.title)@> <span class="text-primary show-sm" style="font-size: 14px;"> 1383 <@if(value && value.items){@> 1384 <@ print(value.items.length) @> attachment(s) 1385 <@}@> 1386 <@if(value.moduleDurations && curriculumAssetInfo){@> 1387 <@if(value && value.contents){@> ⢠<@}@> 1388 <@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 1389 <@}@> 1390 </span></p> 1391 1392 </h4> 1393 <div class="accordion-syllabus-header__info"> 1394 <p class="text-primary hide-sm"> 1395 <@if(value && value.items){@> 1396 <@ print(value.items.length) @> attachment(s) 1397 <@}@> 1398 <@if(value.moduleDurations && curriculumAssetInfo){@> 1399 <@if(value && value.contents){@> ⢠<@}@> 1400 <@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 1401 <@}@> 1402 </p> 1403 <@if(value && value.items){@> 1404 <div class="accordion-syllabus-header__icon text-primary"> 1405 <i class="fa fa-angle-left" aria-hidden="true"></i> 1406 </div> 1407 <@}@> 1408 </div> 1409 </header> 1410 <@if(value && value.items){@> 1411 <div class="accordion-content" style=""> 1412 <div class="accordian-content-block"> 1413 <ul class="accordian-list"> 1414 <@ $.each(value['items'], function(index1, value1) { @> 1415 <li class="accordian-list__item"> 1416 <div class="accordian-content-card"> 1417 <div class="accordian-content-card__info"> 1418 <div class="accordian-content-card__ico"> 1419 <@ if(value1.type == 'code'){ @> 1420 <img src="/resources/images/CodeIcon.svg"> 1421 <@ } else { @> 1422 <span class="material-icons text-primary"> 1423 <@ print(getCourseAssetIcon(value1.type))@> 1424 </span> 1425 <@ } @> 1426 </div> 1427 <div class="accordian-content-card__title"> 1428 <@print(value1.title)@> <@ if(curriculumAssetInfo && value1.type == 'pdf' && value1.pages !== undefined && value1.pages > 0) { @><small>(<@- value1.pages @> pages)</small><@ } @> 1429 <@ if(value1.type == 'aiheading') { @><small>(coming soon)</small><@ } @> 1430 </div> 1431 </div> 1432 <div class="accordian-content-card__link"> 1433 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@> 1434 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,"-"))@>-<@- courseId @>#<@print(value1.id)@>" class="previewBtn"> 1435 <span class="text-primary"> 1436 <@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @><span style="color:#000"><i class="fa fa-solid fa-arrow-up-right"></i></span> 1437 </span> 1438 </a> 1439 <@}@> 1440 </div> 1441 </div> 1442 </li> 1443 <@ }); @> 1444 </ul> 1445 </div> 1446 </div> 1447 <@ } @> 1448 </div> 1449 <@ }); @> 1450 </div> 1451 </div> 1452</script>
1452 1453 1454 1455 1456<!-- Curriculum 4th Template -->
1457<script type="text/template" id="coursecurr-4-template"> 1458 <div class="column full coursecurr4"> 1459 <@ $.each(item, function(index, value) { @> 1460 <div class="accordion-syllabus-item"> 1461 <header class="accordion-syllabus-header" > 1462 <h4 class="accordion-syllabus-header__title"> 1463 <span> 1464 <@if(index<9){@>0<@print(index+1)@><@ } else {@> <@print(index+1)@> <@ } @> 1465 </span> 1466 <div class="accordion-syllabus-header__title-block" > 1467 <p style="font-size: 20px; font-weight: 700;"> 1468 <@print(value.title)@> 1469 </p> 1470 <p class="text-primary" style="font-weight: 500; font-size: 14px; line-height: 150%; margin-top: 10px; "> 1471 <@if(value && value.type == 'aiheading'){@> 1472 (coming soon) 1473 <@}@> 1474 <@if(value && value.items){@> 1475 <@ print(value.items.length) @> attachment(s) 1476 <@}@> 1477 <@if(value.moduleDurations && curriculumAssetInfo){@><@if(value && value.contents){@> ⢠<@}@> 1478 <@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 1479 <@}@> 1480 </p> 1481 </div> 1482 </h4> 1483 <@if(value && value.items){@> 1484 <div class="accordion-syllabus-header__info" > 1485 <div class="accordion-syllabus-header__icon" > 1486 <i class="fa fa-angle-left" aria-hidden="true"></i> 1487 </div> 1488 </div> 1489 <@ } @> 1490 </header> 1491 <@if(value && value.items){@> 1492 <div class="accordion-content" style=""> 1493 <div class="accordian-content-block" > 1494 <ul class="accordian-list"> 1495 <@ $.each(value['items'], function(index1, value1) { @> 1496 <li class="accordian-list__item"> 1497 <div class="accordian-content-card" > 1498 <div class="accordian-content-card__info" > 1499 <div class="accordian-content-card__ico" > 1500 <@ if(value1.type == 'code'){ @> 1501 <img src="/resources/images/CodeIcon.svg"> 1502 <@ } else { @> 1503 <span class="material-icons text-primary"> 1504 <@ print(getCourseAssetIcon(value1.type))@>262 1505 </span> 1506 <@ } @> 1507 </div> 1508 <div class="accordian-content-card__title" > 1509 <@print(value1.title)@> <@ if(curriculumAssetInfo && value1.type == 'pdf' && value1.pages !== undefined && value1.pages > 0) { @><small>(<@- value1.pages @> pages)</small><@ } @> 1510 <@ if(value1.type == 'aiheading') { @><small>(coming soon)</small><@ } @> 1511 </div> 1512 </div> 1513 <div class="accordian-content-card__link" > 1514 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@> 1515 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,"-"))@>-<@- courseId @>#<@print(value1.id)@>" class="previewBtn"> 1516 <span class="text-primary"> 1517 <@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right"></i></span> 1518 </span> 1519 </a> 1520 <@ } @> 1521 </div> 1522 </div> 1523 </li> 1524 <@ }); @> 1525 </ul> 1526 </div> 1527 </div> 1528 <@ } @> 1529 </div> 1530 <@ }); @> 1531 </div> 1532 </script>
1532 1533 1534 <!-- vegas curriculum-5--> 1535
1535<script> 1536 // Simple responsive positioning 1537 function updatePosition() { 1538 const element = document.getElementById('totalTimeElement'); 1539 if(element){ 1540 if (window.innerWidth > 768) { 1541 element.style.position = 'absolute'; 1542 element.style.top = "5px"; 1543 element.style.right = '122px'; 1544 } else { 1545 element.style.position = 'static'; 1546 element.style.margin = '0 0'; 1547 } 1548 } 1549 } 1550 1551 // Run on load and resize 1552 window.addEventListener('load', updatePosition); 1553 window.addEventListener('resize', updatePosition); 1554 </script>
1554 1555
1555<script type="text/template" id="coursecurr-5-template"> 1556 <div class="total-time" id="totalTimeElement" style=" 1557 font-size: 18px; 1558 font-weight: 600; 1559 color: #FB5607; 1560 padding: 8px 12px; 1561 border-radius: 4px; 1562 white-space: nowrap;"> 1563 <@if(summary.durations && summary.durations>0 && curriculumAssetInfo){@> 1564 <@print(millisecondsToHHMMSSStr(summary.durations))@> 1565 <@}@> 1566</div> 1567 1568<div class="accordion-syllabus" style="max-width:1000px !important"> 1569 <@ $.each(item, function(index, value) { @> 1570 <div class="accordion-syllabus-item" style="<@ if(index >= 5) { @> display: none; <@ } @>"> 1571 <header class="accordion-syllabus-header" style="background:#F5F5F5 !important; border-radius:0px;box-shadow:none;padding:0.5rem !important"> 1572 <h4 class="accordion-syllabus-header__title"> 1573 <span class="text-primary" style="font-size:18px ; font-weight:600; color:black;"> 1574 <@if(index < 9) {@> 1575 Week <@print(index + 1)@>: 1576 <@ } else {@> 1577 Week <@print(index + 1)@>: 1578 <@ } @> 1579 </span> 1580 <p style="font-size:18px ; font-weight:600;"><@print(value.title)@> <span class="text-primary show-sm" style="font-size: 14px;"> 1581 <@if(value && value.items){@> 1582 <@ print(value.items.length) @> attachment(s) 1583 <@} else {@> 1584 1 attachment(s) 1585 <@}@> 1586 <@if(value.moduleDurations && curriculumAssetInfo){@> 1587 ⢠<@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 1588 <@}@> 1589 </span></p> 1590 </h4> 1591 1592 <div class="accordion-syllabus-header__info"> 1593 <p class="text-primary hide-sm" style="color:#FB5607 !important;"> 1594 <@if(value && value.items){@> 1595 <@ print(value.items.length) @> attachment(s) 1596 <@} else {@> 1597 1 attachment(s) 1598 <@}@> 1599 <@if(value.moduleDurations && curriculumAssetInfo){@> 1600 ⢠<@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 1601 <@}@> 1602 </p> 1603 <div class="accordion-syllabus-header__icon text-primary"> 1604 <i class="fa fa-angle-left" aria-hidden="true" style="color:#FB5607;"></i> 1605 </div> 1606 </div> 1607 </header> 1608 <div class="accordion-content" style="filter:none;"> 1609 <div class="accordian-content-block" style="background:#F5F5F5 !important;box-shadow:none;padding:16px 66px 3px 69px !important;"> 1610 <ul class="accordian-list"> 1611 <@ var itemsCount = value['items'] ? value['items'].length : 0; @> 1612 <@ if(value['items'] && value['items'].length > 0) { @> 1613 <@ $.each(value['items'], function(index1, value1) { @> 1614 <li class="accordian-list__item" style="padding:0px 0px !important;<@ if(index1 >= 5) { @> display: none; <@ } @>"> 1615 <style> 1616 @media (max-width: 768px) { 1617 .accordian-content-card { 1618 flex-direction: column !important; 1619 align-items: stretch !important; 1620 } 1621 1622 .accordian-content-card__top { 1623 flex-direction: row !important; 1624 justify-content: space-between !important; 1625 align-items: center !important; 1626 width: 100% !important; 1627 } 1628 1629 .accordian-content-card__title { 1630 flex: 1 !important; 1631 margin: 0 10px !important; 1632 white-space: nowrap; 1633 overflow: hidden; 1634 text-overflow: ellipsis; 1635 } 1636 1637 .accordian-content-card__bottom { 1638 flex-direction: row !important; 1639 justify-content: space-between !important; 1640 align-items: center !important; 1641 width: 100% !important; 1642 margin-top: 6px !important; 1643 } 1644 1645 .accordian-content-card__link { 1646 flex: 1 !important; 1647 min-width: 0 !important; 1648 text-align: left !important; 1649 } 1650 1651 .accordian-content-card__time { 1652 flex-shrink: 0 !important; 1653 text-align: right !important; 1654 } 1655 } 1656 </style> 1657 1658 <div class="accordian-content-card" 1659 style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;"> 1660 1661 1662 <!-- Row 1: Icon + Title + Collapse Icon --> 1663 <div class="accordian-content-card__top" 1664 style="display: flex; align-items: center; justify-content: space-between; width: 100%;"> 1665 1666 <!-- Icon --> 1667 <div class="accordian-content-card__ico" style="flex-shrink: 0;"> 1668 <@ if(value1.type == 'code'){ @> 1669 <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;"> 1670 <@ } else { @>
1671 <span class="material-icons text-primary" style="color:#FB5607; font-size: 24px;"> 1672 <@ print(getCourseAssetIcon(value1.type))@> 1673 </span> 1674 <@ } @> 1675 </div> 1676 1677 <!-- Title --> 1678 <div class="accordian-content-card__title" 1679 style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"> 1680 <@print(value1.title)@> 1681 </div> 1682 1683 <!-- Collapse Icon (optional) --> 1684 <div class="accordian-content-card__collapse" style="flex-shrink: 0;"> 1685 <!-- Example placeholder, add real icon if needed --> 1686 <!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> --> 1687 </div> 1688 </div> 1689 1690 <!-- Row 2: Preview Button and Time --> 1691 <div class="accordian-content-card__bottom" 1692 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;"> 1693 1694 <!-- Preview Button --> 1695 <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;"> 1696 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@> 1697 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value1.id)@>" 1698 class="previewBtn" 1699 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #FB5607; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;"> 1700 <span class="text-primary" style="color:#FB5607;"> 1701 <@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> 1702 <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#FB5607;"></i></span> 1703 </span> 1704 </a> 1705 <@}@> 1706 </div> 1707 1708 <!-- Time --> 1709 <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;"> 1710 <p class="text-primary course-asset-time" 1711 style="font-size: 14px; font-weight: 500; color:#FB5607 !important; margin: 0;"> 1712 <@ if(value1.duration && value1.duration > 0) { @> 1713 <@ print(millisecondsToHHMMSSStr(value1.duration)) @> 1714 <@ } else { @> 1715 -- 1716 <@ } @> 1717 </p> 1718 </div> 1719 1720 </div> 1721 </div> 1722 1723 1724 </li> 1725 <@ }); @> 1726 <@ } else { @> 1727 <li class="accordian-list__item" style="padding:0px 0px !important;"> 1728 <div class="accordian-content-card" 1729 style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;"> 1730 1731 <!-- Row 1: Icon + Title + Collapse Icon --> 1732 <div class="accordian-content-card__top" 1733 style="display: flex; align-items: center; justify-content: space-between; width: 100%;"> 1734 1735 <!-- Icon --> 1736 <div class="accordian-content-card__ico" style="flex-shrink: 0;"> 1737 <@ if(value.type == 'code'){ @> 1738 <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;"> 1739 <@ } else { @> 1740 <span class="material-icons text-primary" style="color:#FB5607; font-size: 24px;"> 1741 <@ print(getCourseAssetIcon(value.type))@> 1742 </span> 1743 <@ } @> 1744 </div> 1745 1746 <!-- Title --> 1747 <div class="accordian-content-card__title" 1748 style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"> 1749 <@print(value.title)@> 1750 </div> 1751 1752 <!-- Collapse Icon (optional) --> 1753 <div class="accordian-content-card__collapse" style="flex-shrink: 0;"> 1754 <!-- Example placeholder, add real icon if needed --> 1755 <!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> --> 1756 </div> 1757 </div> 1758 1759 <!-- Row 2: Preview Button and Time --> 1760 <div class="accordian-content-card__bottom" 1761 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;"> 1762 1763 <!-- Preview Button --> 1764 <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;"> 1765 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value.id)){@> 1766 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value.id)@>" 1767 class="previewBtn" 1768 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #FB5607; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;">
1769 <span class="text-primary" style="color:#FB5607;"> 1770 <@ if(value.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> 1771 <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#FB5607;"></i></span> 1772 </span> 1773 </a> 1774 <@}@> 1775 </div> 1776 1777 <!-- Time --> 1778 <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;"> 1779 <p class="text-primary course-asset-time" 1780 style="font-size: 14px; font-weight: 500; color:#FB5607 !important; margin: 0;"> 1781 <@ if(value.duration && value.duration > 0) { @> 1782 <@ print(millisecondsToHHMMSSStr(value.duration)) @> 1783 <@ } else { @> 1784 -- 1785 <@ } @> 1786 </p> 1787 </div> 1788 </div> 1789 </div> 1790 </li> 1791 <@ } @> 1792 </ul> 1793 1794 <@ if(itemsCount > 5) { @> 1795 <div style="text-align: center; margin-top: 10px;"> 1796 <button style="background-color: #FB5607; color: white; padding: 4px 28px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 1797 onclick=" 1798 var parentAccordion = this.closest('.accordion-content'); 1799 parentAccordion.style.maxHeight = 'none'; 1800 this.closest('.accordian-content-block').querySelectorAll('.accordian-list__item').forEach(el => el.style.display = 'block'); 1801 this.style.display = 'none'; 1802 "> 1803 View All 1804 </button> 1805 </div> 1806 <@ } @> 1807 </div> 1808 </div> 1809 </div> 1810 <@ }); @> 1811 <@ if(item.length > 5) { @> 1812 <div style="text-align: center; margin-top: 10px;margin-bottom: 20px;"> 1813 <button style="background-color: #FB5607; color: white; padding: 8px 32px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 1814 onclick="document.querySelectorAll('.accordion-syllabus-item').forEach(el => el.style.display = 'block'); this.style.display = 'none';"> 1815 View All Sessions 1816 </button> 1817 </div> 1818 <@ } @> 1819</div> 1820 </div> 1821</script>
1821 1822 1823 1824<!--Blaze-Curriculum-6-->
1825<script type="text/template" id="coursecurr-6-template"> 1826 <div class="column full" spellcheck="false" data-gramm="false"> 1827 <div class="total-time" id="totalTimeElement" style=" 1828 font-size: 18px; 1829 font-weight: 600; 1830 color: #D8FD46; 1831 padding: 8px 12px; 1832 border-radius: 4px; 1833 white-space: nowrap; 1834 background: #232323; 1835 margin-bottom: 20px;"> 1836 <@if(summary.durations && summary.durations>0 && curriculumAssetInfo){@> 1837 <@print(millisecondsToHHMMSSStr(summary.durations))@> 1838 <@}@> 1839 </div> 1840 1841 <div class="accordion-syllabus"> 1842 <@ $.each(item, function(index, value) { @> 1843 <div class="accordion-syllabus-item" style="<@ if(index >= 5) { @> display: none; <@ } @>"> 1844 <header class="accordion-syllabus-header" style="background:#232323 !important; border-radius:0px;box-shadow:none;padding:20px 20px !important"> 1845 <h4 class="accordion-syllabus-header__title"> 1846 <span class="text-primary" style="font-size:18px ; font-weight:600; color:white;"> 1847 <@if(index < 9) {@> 1848 Week <@print(index + 1)@>: 1849 <@ } else {@> 1850 Week <@print(index + 1)@>: 1851 <@ } @> 1852 </span> 1853 <p style="font-size:18px ; font-weight:600;color:white;"><@print(value.title)@> <span class="text-primary show-sm" style="font-size: 14px;color:#D8FD46 !important;"> 1854 <@if(value && value.items){@> 1855 <@ print(value.items.length) @> attachment(s) 1856 <@} else {@> 1857 1 attachment(s) 1858 <@}@> 1859 <@if(value.moduleDurations && curriculumAssetInfo){@> 1860 ⢠<@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 1861 <@}@> 1862 </span></p> 1863 </h4> 1864 <div class="accordion-syllabus-header__info"> 1865 <p class="text-primary hide-sm" style="color:#D8FD46 !important;"> 1866 <@if(value && value.items){@> 1867 <@ print(value.items.length) @> attachment(s) 1868 <@} else {@> 1869 1 attachment(s) 1870 <@}@> 1871 <@if(value.moduleDurations && curriculumAssetInfo){@> 1872 ⢠<@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 1873 <@}@> 1874 </p> 1875 <div class="accordion-syllabus-header__icon text-primary"> 1876 <i class="fa fa-angle-left" aria-hidden="true" style="color:#D8FD46;"></i> 1877 </div> 1878 </div> 1879 </header> 1880 <div class="accordion-content" style="filter:none;background:#181818;"> 1881 <div class="accordian-content-block" style="box-shadow:none;padding:16px 20px !important;background:transparent !important;"> 1882 <ul class="accordian-list"> 1883 <@ var itemsCount = value['items'] ? value['items'].length : 0; @> 1884 <@ if(value['items'] && value['items'].length > 0) { @> 1885 <@ $.each(value['items'], function(index1, value1) { @> 1886 <li class="accordian-list__item" style="padding:0px 0px !important;<@ if(index1 >= 5) { @> display: none; <@ } @>"> 1887 <style> 1888 @media (max-width: 768px) { 1889 .accordian-content-card { 1890 flex-direction: column !important; 1891 align-items: stretch !important; 1892 } 1893 1894 .accordian-content-card__top { 1895 flex-direction: row !important; 1896 justify-content: space-between !important; 1897 align-items: center !important; 1898 width: 100% !important; 1899 } 1900 1901 .accordian-content-card__title { 1902 flex: 1 !important; 1903 margin: 0 10px !important; 1904 white-space: nowrap; 1905 overflow: hidden; 1906 text-overflow: ellipsis; 1907 } 1908 1909 .accordian-content-card__bottom { 1910 flex-direction: row !important; 1911 justify-content: space-between !important; 1912 align-items: center !important; 1913 width: 100% !important; 1914 margin-top: 6px !important; 1915 } 1916 1917 .accordian-content-card__link { 1918 flex: 1 !important; 1919 min-width: 0 !important; 1920 text-align: left !important; 1921 } 1922 1923 .accordian-content-card__time { 1924 flex-shrink: 0 !important; 1925 text-align: right !important; 1926 } 1927 } 1928 </style> 1929 1930 <div class="accordian-content-card" 1931 style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; "> 1932 1933 <!-- Row 1: Icon + Title + Collapse Icon --> 1934 <div class="accordian-content-card__top" 1935 style="display: flex; align-items: center; justify-content: space-between; width: 100%;"> 1936 1937 <!-- Icon --> 1938 <div class="accordian-content-card__ico" style="flex-shrink: 0;"> 1939 <@ if(value1.type == 'code'){ @> 1940 <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px; filter: invert(1);"> 1941 <@ } else { @>
1942 <span class="material-icons text-primary" style="color:#D8FD46; font-size: 24px;"> 1943 <@ print(getCourseAssetIcon(value1.type))@> 1944 </span> 1945 <@ } @> 1946 </div> 1947 1948 <!-- Title --> 1949 <div class="accordian-content-card__title" 1950 style="font-weight: 400; font-size: 14px; color: white; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"> 1951 <@print(value1.title)@> 1952 <!-- <@ if(curriculumAssetInfo && value1.type == 'pdf' && value1.pages !== undefined && value1.pages > 0) { @> 1953 <small style="color: #999;">(<@- value1.pages @> pages)</small> 1954 <@ } @> 1955 <@ if(value1.type == 'aiheading') { @> 1956 <small style="color: #999;">(coming soon)</small> 1957 <@ } @> --> 1958 </div> 1959 1960 <!-- Collapse Icon --> 1961 <div class="accordian-content-card__collapse" style="flex-shrink: 0;"> 1962 </div> 1963 </div> 1964 1965 <!-- Row 2: Preview Button and Time --> 1966 <div class="accordian-content-card__bottom" 1967 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;"> 1968 1969 <!-- Preview Button --> 1970 <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;"> 1971 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@> 1972 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value1.id)@>" 1973 class="previewBtn" 1974 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #D8FD46 !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;"> 1975 <span class="text-primary" style="color:#D8FD46;"> 1976 <@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> 1977 <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#D8FD46;"></i></span> 1978 </span> 1979 </a> 1980 <@}@> 1981 </div> 1982 1983 <!-- Time --> 1984 <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;"> 1985 <p class="text-primary course-asset-time" 1986 style="font-size: 14px; font-weight: 500; color:#D8FD46 !important; margin: 0;"> 1987 <@ if(value1.duration && value1.duration > 0) { @> 1988 <@ print(millisecondsToHHMMSSStr(value1.duration)) @> 1989 <@ } else { @> 1990 -- 1991 <@ } @> 1992 </p> 1993 </div> 1994 </div> 1995 </div> 1996 </li> 1997 <@ }); @> 1998 <@ } else { @> 1999 <li class="accordian-list__item" style="padding:0px 0px !important;"> 2000 <div class="accordian-content-card" 2001 style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; "> 2002 2003 <!-- Row 1: Icon + Title + Collapse Icon --> 2004 <div class="accordian-content-card__top" 2005 style="display: flex; align-items: center; justify-content: space-between; width: 100%;"> 2006 2007 <!-- Icon --> 2008 <div class="accordian-content-card__ico" style="flex-shrink: 0;"> 2009 <@ if(value.type == 'code'){ @> 2010 <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px; filter: invert(1);"> 2011 <@ } else { @> 2012 <span class="material-icons text-primary" style="color:#D8FD46; font-size: 24px;"> 2013 <@ print(getCourseAssetIcon(value.type))@> 2014 </span> 2015 <@ } @> 2016 </div> 2017 2018 <!-- Title --> 2019 <div class="accordian-content-card__title" 2020 style="font-weight: 400; font-size: 14px; color: white; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"> 2021 <@print(value.title)@> 2022 </div> 2023 2024 <!-- Collapse Icon (optional) --> 2025 <div class="accordian-content-card__collapse" style="flex-shrink: 0;"> 2026 <!-- Example placeholder, add real icon if needed --> 2027 <!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> --> 2028 </div> 2029 </div> 2030 2031 <!-- Row 2: Preview Button and Time --> 2032 <div class="accordian-content-card__bottom" 2033 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;"> 2034 2035 <!-- Preview Button --> 2036 <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;"> 2037 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value.id)){@> 2038 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value.id)@>" 2039 class="previewBtn" 2040 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #D8FD46 !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;"> 2041 <span class="text-primary" style="color:#D8FD46;"> 2042 <@ if(value.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> 2043 <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#D8FD46;"></i></span> 2044 </span> 2045 </a> 2046 <@}@> 2047 </div> 2048 2049 <!-- Time --> 2050 <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;"> 2051 <p class="text-primary course-asset-time" 2052 style="font-size: 14px; font-weight: 500; color:#D8FD46 !important; margin: 0;"> 2053 <@ if(value.duration && value.duration > 0) { @> 2054 <@ print(millisecondsToHHMMSSStr(value.duration)) @> 2055 <@ } else { @> 2056 -- 2057 <@ } @> 2058 </p> 2059 </div> 2060 </div> 2061 </div> 2062 </li> 2063 <@ } @> 2064 </ul> 2065 2066 <@ if(itemsCount > 5) { @> 2067 <div style="text-align: center; margin-top: 10px;"> 2068 <button style="background-color: #D8FD46; color: black; padding: 4px 28px; border: none; cursor: pointer; font-size: 16px; border-radius: 0px;" 2069 onclick=" 2070 var parentAccordion = this.closest('.accordion-content'); 2071 parentAccordion.style.maxHeight = 'none'; 2072 this.closest('.accordian-content-block').querySelectorAll('.accordian-list__item').forEach(el => el.style.display = 'block'); 2073 this.style.display = 'none'; 2074 "> 2075 View All 2076 </button> 2077 </div> 2078 <@ } @> 2079 </div> 2080 </div> 2081 </div> 2082 <@ }); @> 2083 <@ if(item.length > 5) { @> 2084 <div style="text-align: center; margin-top: 10px;margin-bottom: 20px;"> 2085 <button style="background-color: #D8FD46; color: black; padding: 8px 32px; border: none; cursor: pointer; font-size: 16px; border-radius: 0px;" 2086 onclick="document.querySelectorAll('.accordion-syllabus-item').forEach(el => el.style.display = 'block'); this.style.display = 'none';"> 2087 View All Sessions 2088 </button> 2089 </div> 2090 <@ } @> 2091 </div> 2092 </div> 2093</script>
2093 2094
2095<script> 2096 // Simple responsive positioning (same as Vegas) 2097 function updatePosition() { 2098 const element = document.getElementById('totalTimeElement'); 2099 if(element){ 2100 if (window.innerWidth > 768) { 2101 element.style.position = 'absolute'; 2102 element.style.top = "5px"; 2103 element.style.right = '122px'; 2104 } else { 2105 element.style.position = 'static'; 2106 element.style.margin = '0 0'; 2107 } 2108 } 2109 } 2110 2111 // Run on load and resize 2112 window.addEventListener('load', updatePosition); 2113 window.addEventListener('resize', updatePosition); 2114</script>
2114 2115 2116 2117 2118 2119<!--Nebula Curriculum 7--> 2120 2121
2122<script> 2123 // Simple responsive positioning 2124 function updatePosition() { 2125 const element = document.getElementById('totalTimeElement'); 2126 if(element){ 2127 if (window.innerWidth > 768) { 2128 element.style.position = 'absolute'; 2129 element.style.top = "5px"; 2130 element.style.right = '122px'; 2131 } else { 2132 element.style.position = 'static'; 2133 element.style.margin = '0 0'; 2134 } 2135 } 2136 } 2137 2138 // Run on load and resize 2139 window.addEventListener('load', updatePosition); 2140 window.addEventListener('resize', updatePosition); 2141 </script>
2141 2142
2142<script type="text/template" id="coursecurr-7-template"> 2143 <div class="total-time" id="totalTimeElement" style=" 2144 font-size: 18px; 2145 font-weight: 600; 2146 color: #6715FF; 2147 padding: 8px 12px; 2148 border-radius: 4px; 2149 white-space: nowrap;"> 2150 <@if(summary.durations && summary.durations>0 && curriculumAssetInfo){@> 2151 <@print(millisecondsToHHMMSSStr(summary.durations))@> 2152 <@}@> 2153</div> 2154 2155<div class="accordion-syllabus" style="max-width:1000px !important"> 2156 <@ $.each(item, function(index, value) { @> 2157 <div class="accordion-syllabus-item" style="<@ if(index >= 5) { @> display: none; <@ } @>"> 2158 <header class="accordion-syllabus-header" style="background:#F1ECFB !important; border-radius16px;box-shadow:none;padding:20px !important"> 2159 <h4 class="accordion-syllabus-header__title"> 2160 <span class="text-primary" style="font-size:18px ; font-weight:600; color:black;"> 2161 <@if(index < 9) {@> 2162 Week <@print(index + 1)@>: 2163 <@ } else {@> 2164 Week <@print(index + 1)@>: 2165 <@ } @> 2166 </span> 2167 <p style="font-size:18px ; font-weight:600;"><@print(value.title)@> <span class="text-primary show-sm" style="font-size: 14px;"> 2168 <@if(value && value.items){@> 2169 <@ print(value.items.length) @> attachment(s) 2170 <@} else {@> 2171 1 attachment(s) 2172 <@}@> 2173 <@if(value.moduleDurations && curriculumAssetInfo){@> 2174 ⢠<@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 2175 <@}@> 2176 </span></p> 2177 </h4> 2178 2179 <div class="accordion-syllabus-header__info"> 2180 <p class="text-primary hide-sm" style="color:#6715FF !important;"> 2181 <@if(value && value.items){@> 2182 <@ print(value.items.length) @> attachment(s) 2183 <@} else {@> 2184 1 attachment(s) 2185 <@}@> 2186 <@if(value.moduleDurations && curriculumAssetInfo){@> 2187 ⢠<@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 2188 <@}@> 2189 </p> 2190 <div class="accordion-syllabus-header__icon text-primary"> 2191 <i class="fa fa-angle-left" aria-hidden="true" style="color:#6715FF;"></i> 2192 </div> 2193 </div> 2194 </header> 2195 <div class="accordion-content" style="filter:none;background:transparent !important;"> 2196 <div class="accordian-content-block" style="background:transparent !important;box-shadow:none;padding:16px 66px 3px 69px !important;"> 2197 <ul class="accordian-list"> 2198 <@ var itemsCount = value['items'] ? value['items'].length : 0; @> 2199 <@ if(value['items'] && value['items'].length > 0) { @> 2200 <@ $.each(value['items'], function(index1, value1) { @> 2201 <li class="accordian-list__item" style="padding:0px 0px !important;<@ if(index1 >= 5) { @> display: none; <@ } @>"> 2202 <style> 2203 @media (max-width: 768px) { 2204 .accordian-content-card { 2205 flex-direction: column !important; 2206 align-items: stretch !important; 2207 } 2208 2209 .accordian-content-card__top { 2210 flex-direction: row !important; 2211 justify-content: space-between !important; 2212 align-items: center !important; 2213 width: 100% !important; 2214 } 2215 2216 .accordian-content-card__title { 2217 flex: 1 !important; 2218 margin: 0 10px !important; 2219 white-space: nowrap; 2220 overflow: hidden; 2221 text-overflow: ellipsis; 2222 } 2223 2224 .accordian-content-card__bottom { 2225 flex-direction: row !important; 2226 justify-content: space-between !important; 2227 align-items: center !important; 2228 width: 100% !important; 2229 margin-top: 6px !important; 2230 } 2231 2232 .accordian-content-card__link { 2233 flex: 1 !important; 2234 min-width: 0 !important; 2235 text-align: left !important; 2236 } 2237 2238 .accordian-content-card__time { 2239 flex-shrink: 0 !important; 2240 text-align: right !important; 2241 } 2242 } 2243 </style> 2244 2245 <div class="accordian-content-card" 2246 style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;"> 2247 2248 2249 <!-- Row 1: Icon + Title + Collapse Icon --> 2250 <div class="accordian-content-card__top" 2251 style="display: flex; align-items: center; justify-content: space-between; width: 100%;"> 2252 2253 <!-- Icon --> 2254 <div class="accordian-content-card__ico" style="flex-shrink: 0;"> 2255 <@ if(value1.type == 'code'){ @> 2256 <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;"> 2257 <@ } else { @>
2258 <span class="material-icons text-primary" style="color:#6715FF; font-size: 24px;"> 2259 <@ print(getCourseAssetIcon(value1.type))@> 2260 </span> 2261 <@ } @> 2262 </div> 2263 2264 <!-- Title --> 2265 <div class="accordian-content-card__title" 2266 style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"> 2267 <@print(value1.title)@> 2268 </div> 2269 2270 <!-- Collapse Icon (optional) --> 2271 <div class="accordian-content-card__collapse" style="flex-shrink: 0;"> 2272 <!-- Example placeholder, add real icon if needed --> 2273 <!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> --> 2274 </div> 2275 </div> 2276 2277 <!-- Row 2: Preview Button and Time --> 2278 <div class="accordian-content-card__bottom" 2279 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;"> 2280 2281 <!-- Preview Button --> 2282 <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;"> 2283 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@> 2284 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value1.id)@>" 2285 class="previewBtn" 2286 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #6715FF; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;"> 2287 <span class="text-primary" style="color:#6715FF;"> 2288 <@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> 2289 <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#6715FF;"></i></span> 2290 </span> 2291 </a> 2292 <@}@> 2293 </div> 2294 2295 <!-- Time --> 2296 <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;"> 2297 <p class="text-primary course-asset-time" 2298 style="font-size: 14px; font-weight: 500; color:#6715FF !important; margin: 0;"> 2299 <@ if(value1.duration && value1.duration > 0) { @> 2300 <@ print(millisecondsToHHMMSSStr(value1.duration)) @> 2301 <@ } else { @> 2302 -- 2303 <@ } @> 2304 </p> 2305 </div> 2306 2307 </div> 2308 </div> 2309 2310 2311 </li> 2312 <@ }); @> 2313 <@ } else { @> 2314 <li class="accordian-list__item" style="padding:0px 0px !important;"> 2315 <div class="accordian-content-card" 2316 style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;"> 2317 2318 <!-- Row 1: Icon + Title + Collapse Icon --> 2319 <div class="accordian-content-card__top" 2320 style="display: flex; align-items: center; justify-content: space-between; width: 100%;"> 2321 2322 <!-- Icon --> 2323 <div class="accordian-content-card__ico" style="flex-shrink: 0;"> 2324 <@ if(value.type == 'code'){ @> 2325 <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;"> 2326 <@ } else { @> 2327 <span class="material-icons text-primary" style="color:#6715FF; font-size: 24px;"> 2328 <@ print(getCourseAssetIcon(value.type))@> 2329 </span> 2330 <@ } @> 2331 </div> 2332 2333 <!-- Title --> 2334 <div class="accordian-content-card__title" 2335 style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"> 2336 <@print(value.title)@> 2337 </div> 2338 2339 <!-- Collapse Icon (optional) --> 2340 <div class="accordian-content-card__collapse" style="flex-shrink: 0;"> 2341 <!-- Example placeholder, add real icon if needed --> 2342 <!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> --> 2343 </div> 2344 </div> 2345 2346 <!-- Row 2: Preview Button and Time --> 2347 <div class="accordian-content-card__bottom" 2348 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;"> 2349 2350 <!-- Preview Button --> 2351 <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;"> 2352 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value.id)){@> 2353 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value.id)@>" 2354 class="previewBtn" 2355 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #6715FF; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;">
2356 <span class="text-primary" style="color:#6715FF;"> 2357 <@ if(value.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> 2358 <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#6715FF;"></i></span> 2359 </span> 2360 </a> 2361 <@}@> 2362 </div> 2363 2364 <!-- Time --> 2365 <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;"> 2366 <p class="text-primary course-asset-time" 2367 style="font-size: 14px; font-weight: 500; color:#6715FF !important; margin: 0;"> 2368 <@ if(value.duration && value.duration > 0) { @> 2369 <@ print(millisecondsToHHMMSSStr(value.duration)) @> 2370 <@ } else { @> 2371 -- 2372 <@ } @> 2373 </p> 2374 </div> 2375 </div> 2376 </div> 2377 </li> 2378 <@ } @> 2379 </ul> 2380 2381 <@ if(itemsCount > 5) { @> 2382 <div style="text-align: center; margin-top: 10px;"> 2383 <button style="background-color: #6715FF; color: white; padding: 4px 28px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 2384 onclick=" 2385 var parentAccordion = this.closest('.accordion-content'); 2386 parentAccordion.style.maxHeight = 'none'; 2387 this.closest('.accordian-content-block').querySelectorAll('.accordian-list__item').forEach(el => el.style.display = 'block'); 2388 this.style.display = 'none'; 2389 "> 2390 View All 2391 </button> 2392 </div> 2393 <@ } @> 2394 </div> 2395 </div> 2396 </div> 2397 <@ }); @> 2398 <@ if(item.length > 5) { @> 2399 <div style="text-align: center; margin-top: 10px;margin-bottom: 20px;"> 2400 <button style="background-color: #6715FF; color: white; padding: 8px 32px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 2401 onclick="document.querySelectorAll('.accordion-syllabus-item').forEach(el => el.style.display = 'block'); this.style.display = 'none';"> 2402 View All Sessions 2403 </button> 2404 </div> 2405 <@ } @> 2406</div> 2407 </div> 2408</script>
2408 2409 2410 2411 2412<!--Olive Curriculum 8-->
2413<script> 2414 // Simple responsive positioning 2415 function updatePosition() { 2416 const element = document.getElementById('totalTimeElement'); 2417 if(element){ 2418 if (window.innerWidth > 768) { 2419 element.style.position = 'absolute'; 2420 element.style.top = "5px"; 2421 element.style.right = '122px'; 2422 } else { 2423 element.style.position = 'static'; 2424 element.style.margin = '0 0'; 2425 } 2426 } 2427 } 2428 2429 // Run on load and resize 2430 window.addEventListener('load', updatePosition); 2431 window.addEventListener('resize', updatePosition); 2432 </script>
2432 2433
2433<script type="text/template" id="coursecurr-8-template"> 2434 <div class="total-time" id="totalTimeElement" style=" 2435 font-size: 18px; 2436 font-weight: 600; 2437 color: #064400; 2438 padding: 8px 12px; 2439 border-radius: 4px; 2440 white-space: nowrap;"> 2441 <@if(summary.durations && summary.durations>0 && curriculumAssetInfo){@> 2442 <@print(millisecondsToHHMMSSStr(summary.durations))@> 2443 <@}@> 2444</div> 2445 2446<div class="accordion-syllabus" style="max-width:1000px !important"> 2447 <@ $.each(item, function(index, value) { @> 2448 <div class="accordion-syllabus-item" style="<@ if(index >= 5) { @> display: none; <@ } @>"> 2449 <header class="accordion-syllabus-header" style="background:#E5E5E5 !important; border-radius16px;box-shadow:none;padding:20px !important"> 2450 <h4 class="accordion-syllabus-header__title"> 2451 <span class="text-primary" style="font-size:18px ; font-weight:600; color:black;"> 2452 <@if(index < 9) {@> 2453 Week <@print(index + 1)@>: 2454 <@ } else {@> 2455 Week <@print(index + 1)@>: 2456 <@ } @> 2457 </span> 2458 <p style="font-size:18px ; font-weight:600;"><@print(value.title)@> <span class="text-primary show-sm" style="font-size: 14px;"> 2459 <@if(value && value.items){@> 2460 <@ print(value.items.length) @> attachment(s) 2461 <@} else {@> 2462 1 attachment(s) 2463 <@}@> 2464 <@if(value.moduleDurations && curriculumAssetInfo){@> 2465 ⢠<@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 2466 <@}@> 2467 </span></p> 2468 </h4> 2469 2470 <div class="accordion-syllabus-header__info"> 2471 <p class="text-primary hide-sm" style="color:#064400 !important;"> 2472 <@if(value && value.items){@> 2473 <@ print(value.items.length) @> attachment(s) 2474 <@} else {@> 2475 1 attachment(s) 2476 <@}@> 2477 <@if(value.moduleDurations && curriculumAssetInfo){@> 2478 ⢠<@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 2479 <@}@> 2480 </p> 2481 <div class="accordion-syllabus-header__icon text-primary"> 2482 <i class="fa fa-angle-left" aria-hidden="true" style="color:#064400;"></i> 2483 </div> 2484 </div> 2485 </header> 2486 <div class="accordion-content" style="filter:none;background:transparent !important;"> 2487 <div class="accordian-content-block" style="background:transparent !important;box-shadow:none;padding:16px 66px 3px 69px !important;"> 2488 <ul class="accordian-list"> 2489 <@ var itemsCount = value['items'] ? value['items'].length : 0; @> 2490 <@ if(value['items'] && value['items'].length > 0) { @> 2491 <@ $.each(value['items'], function(index1, value1) { @> 2492 <li class="accordian-list__item" style="padding:0px 0px !important;<@ if(index1 >= 5) { @> display: none; <@ } @>"> 2493 <style> 2494 @media (max-width: 768px) { 2495 .accordian-content-card { 2496 flex-direction: column !important; 2497 align-items: stretch !important; 2498 } 2499 2500 .accordian-content-card__top { 2501 flex-direction: row !important; 2502 justify-content: space-between !important; 2503 align-items: center !important; 2504 width: 100% !important; 2505 } 2506 2507 .accordian-content-card__title { 2508 flex: 1 !important; 2509 margin: 0 10px !important; 2510 white-space: nowrap; 2511 overflow: hidden; 2512 text-overflow: ellipsis; 2513 } 2514 2515 .accordian-content-card__bottom { 2516 flex-direction: row !important; 2517 justify-content: space-between !important; 2518 align-items: center !important; 2519 width: 100% !important; 2520 margin-top: 6px !important; 2521 } 2522 2523 .accordian-content-card__link { 2524 flex: 1 !important; 2525 min-width: 0 !important; 2526 text-align: left !important; 2527 } 2528 2529 .accordian-content-card__time { 2530 flex-shrink: 0 !important; 2531 text-align: right !important; 2532 } 2533 } 2534 </style> 2535 2536 <div class="accordian-content-card" 2537 style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;"> 2538 2539 2540 <!-- Row 1: Icon + Title + Collapse Icon --> 2541 <div class="accordian-content-card__top" 2542 style="display: flex; align-items: center; justify-content: space-between; width: 100%;"> 2543 2544 <!-- Icon --> 2545 <div class="accordian-content-card__ico" style="flex-shrink: 0;"> 2546 <@ if(value1.type == 'code'){ @> 2547 <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;"> 2548 <@ } else { @>
2549 <span class="material-icons text-primary" style="color:#064400; font-size: 24px;"> 2550 <@ print(getCourseAssetIcon(value1.type))@> 2551 </span> 2552 <@ } @> 2553 </div> 2554 2555 <!-- Title --> 2556 <div class="accordian-content-card__title" 2557 style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"> 2558 <@print(value1.title)@> 2559 </div> 2560 2561 <!-- Collapse Icon (optional) --> 2562 <div class="accordian-content-card__collapse" style="flex-shrink: 0;"> 2563 <!-- Example placeholder, add real icon if needed --> 2564 <!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> --> 2565 </div> 2566 </div> 2567 2568 <!-- Row 2: Preview Button and Time --> 2569 <div class="accordian-content-card__bottom" 2570 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;"> 2571 2572 <!-- Preview Button --> 2573 <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;"> 2574 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@> 2575 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value1.id)@>" 2576 class="previewBtn" 2577 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #064400; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;"> 2578 <span class="text-primary" style="color:#064400;"> 2579 <@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> 2580 <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#064400;"></i></span> 2581 </span> 2582 </a> 2583 <@}@> 2584 </div> 2585 2586 <!-- Time --> 2587 <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;"> 2588 <p class="text-primary course-asset-time" 2589 style="font-size: 14px; font-weight: 500; color:#064400 !important; margin: 0;"> 2590 <@ if(value1.duration && value1.duration > 0) { @> 2591 <@ print(millisecondsToHHMMSSStr(value1.duration)) @> 2592 <@ } else { @> 2593 -- 2594 <@ } @> 2595 </p> 2596 </div> 2597 2598 </div> 2599 </div> 2600 2601 2602 </li> 2603 <@ }); @> 2604 <@ } else { @> 2605 <li class="accordian-list__item" style="padding:0px 0px !important;"> 2606 <div class="accordian-content-card" 2607 style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;"> 2608 2609 <!-- Row 1: Icon + Title + Collapse Icon --> 2610 <div class="accordian-content-card__top" 2611 style="display: flex; align-items: center; justify-content: space-between; width: 100%;"> 2612 2613 <!-- Icon --> 2614 <div class="accordian-content-card__ico" style="flex-shrink: 0;"> 2615 <@ if(value.type == 'code'){ @> 2616 <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;"> 2617 <@ } else { @> 2618 <span class="material-icons text-primary" style="color:#064400; font-size: 24px;"> 2619 <@ print(getCourseAssetIcon(value.type))@> 2620 </span> 2621 <@ } @> 2622 </div> 2623 2624 <!-- Title --> 2625 <div class="accordian-content-card__title" 2626 style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"> 2627 <@print(value.title)@> 2628 </div> 2629 2630 <!-- Collapse Icon (optional) --> 2631 <div class="accordian-content-card__collapse" style="flex-shrink: 0;"> 2632 <!-- Example placeholder, add real icon if needed --> 2633 <!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> --> 2634 </div> 2635 </div> 2636 2637 <!-- Row 2: Preview Button and Time --> 2638 <div class="accordian-content-card__bottom" 2639 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;"> 2640 2641 <!-- Preview Button --> 2642 <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;"> 2643 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value.id)){@> 2644 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value.id)@>" 2645 class="previewBtn" 2646 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #064400; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;">
2647 <span class="text-primary" style="color:#064400;"> 2648 <@ if(value.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> 2649 <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#064400;"></i></span> 2650 </span> 2651 </a> 2652 <@}@> 2653 </div> 2654 2655 <!-- Time --> 2656 <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;"> 2657 <p class="text-primary course-asset-time" 2658 style="font-size: 14px; font-weight: 500; color:#064400 !important; margin: 0;"> 2659 <@ if(value.duration && value.duration > 0) { @> 2660 <@ print(millisecondsToHHMMSSStr(value.duration)) @> 2661 <@ } else { @> 2662 -- 2663 <@ } @> 2664 </p> 2665 </div> 2666 </div> 2667 </div> 2668 </li> 2669 <@ } @> 2670 </ul> 2671 2672 <@ if(itemsCount > 5) { @> 2673 <div style="text-align: center; margin-top: 10px;"> 2674 <button style="background-color: #064400; color: white; padding: 4px 28px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 2675 onclick=" 2676 var parentAccordion = this.closest('.accordion-content'); 2677 parentAccordion.style.maxHeight = 'none'; 2678 this.closest('.accordian-content-block').querySelectorAll('.accordian-list__item').forEach(el => el.style.display = 'block'); 2679 this.style.display = 'none'; 2680 "> 2681 View All 2682 </button> 2683 </div> 2684 <@ } @> 2685 </div> 2686 </div> 2687 </div> 2688 <@ }); @> 2689 <@ if(item.length > 5) { @> 2690 <div style="text-align: center; margin-top: 10px;margin-bottom: 20px;"> 2691 <button style="background-color: #064400; color: white; padding: 8px 32px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 2692 onclick="document.querySelectorAll('.accordion-syllabus-item').forEach(el => el.style.display = 'block'); this.style.display = 'none';"> 2693 View All Sessions 2694 </button> 2695 </div> 2696 <@ } @> 2697</div> 2698 </div> 2699</script>
2699 2700 2701 2702 2703<!--Dusk Curriculum 9-->
2704<script> 2705 // Simple responsive positioning 2706 function updatePosition() { 2707 const element = document.getElementById('totalTimeElement'); 2708 if(element){ 2709 if (window.innerWidth > 768) { 2710 element.style.position = 'absolute'; 2711 element.style.top = "5px"; 2712 element.style.right = '122px'; 2713 } else { 2714 element.style.position = 'static'; 2715 element.style.margin = '0 0'; 2716 } 2717 } 2718 } 2719 2720 // Run on load and resize 2721 window.addEventListener('load', updatePosition); 2722 window.addEventListener('resize', updatePosition); 2723 </script>
2723 2724
2724<script> 2725 // Simple responsive positioning 2726 function updatePosition() { 2727 const element = document.getElementById('totalTimeElement'); 2728 if(element){ 2729 if (window.innerWidth > 768) { 2730 element.style.position = 'absolute'; 2731 element.style.top = "5px"; 2732 element.style.right = '122px'; 2733 } else { 2734 element.style.position = 'static'; 2735 element.style.margin = '0 0'; 2736 } 2737 } 2738 } 2739 2740 // Run on load and resize 2741 window.addEventListener('load', updatePosition); 2742 window.addEventListener('resize', updatePosition); 2743 </script>
2743 2744
2744<script type="text/template" id="coursecurr-9-template"> 2745 <div class="total-time" id="totalTimeElement" style=" 2746 font-size: 18px; 2747 font-weight: 600; 2748 color: #282400; 2749 padding: 8px 12px; 2750 border-radius: 4px; 2751 white-space: nowrap;"> 2752 <@if(summary.durations && summary.durations>0 && curriculumAssetInfo){@> 2753 <@print(millisecondsToHHMMSSStr(summary.durations))@> 2754 <@}@> 2755</div> 2756 2757<div class="accordion-syllabus" style="max-width:1000px !important"> 2758 <@ $.each(item, function(index, value) { @> 2759 <div class="accordion-syllabus-item" style="<@ if(index >= 5) { @> display: none; <@ } @>"> 2760 <header class="accordion-syllabus-header" style="background:#F5F5F5 !important; border-radius:8px;box-shadow:none;padding:20px !important"> 2761 <h4 class="accordion-syllabus-header__title"> 2762 <span class="text-primary" style="font-size:18px ; font-weight:600; color:black;"> 2763 <@if(index < 9) {@> 2764 Week <@print(index + 1)@>: 2765 <@ } else {@> 2766 Week <@print(index + 1)@>: 2767 <@ } @> 2768 </span> 2769 <p style="font-size:18px ; font-weight:600;"><@print(value.title)@> <span class="text-primary show-sm" style="font-size: 14px;"> 2770 <@if(value && value.items){@> 2771 <@ print(value.items.length) @> attachment(s) 2772 <@} else {@> 2773 1 attachment(s) 2774 <@}@> 2775 <@if(value.moduleDurations && curriculumAssetInfo){@> 2776 ⢠<@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 2777 <@}@> 2778 </span></p> 2779 </h4> 2780 2781 <div class="accordion-syllabus-header__info"> 2782 <p class="text-primary hide-sm" style="color:#282400 !important;"> 2783 <@if(value && value.items){@> 2784 <@ print(value.items.length) @> attachment(s) 2785 <@} else {@> 2786 1 attachment(s) 2787 <@}@> 2788 <@if(value.moduleDurations && curriculumAssetInfo){@> 2789 ⢠<@print(millisecondsToHHMMSSStr(value.moduleDurations))@> 2790 <@}@> 2791 </p> 2792 <div class="accordion-syllabus-header__icon text-primary"> 2793 <i class="fa fa-angle-left" aria-hidden="true" style="color:#282400;"></i> 2794 </div> 2795 </div> 2796 </header> 2797 <div class="accordion-content" style="filter:none;background:transparent !important;"> 2798 <div class="accordian-content-block" style="background:transparent !important;box-shadow:none;padding:16px 66px 3px 69px !important;"> 2799 <ul class="accordian-list"> 2800 <@ var itemsCount = value['items'] ? value['items'].length : 0; @> 2801 <@ if(value['items'] && value['items'].length > 0) { @> 2802 <@ $.each(value['items'], function(index1, value1) { @> 2803 <li class="accordian-list__item" style="padding:0px 0px !important;<@ if(index1 >= 5) { @> display: none; <@ } @>"> 2804 <style> 2805 @media (max-width: 768px) { 2806 .accordian-content-card { 2807 flex-direction: column !important; 2808 align-items: stretch !important; 2809 } 2810 2811 .accordian-content-card__top { 2812 flex-direction: row !important; 2813 justify-content: space-between !important; 2814 align-items: center !important; 2815 width: 100% !important; 2816 } 2817 2818 .accordian-content-card__title { 2819 flex: 1 !important; 2820 margin: 0 10px !important; 2821 white-space: nowrap; 2822 overflow: hidden; 2823 text-overflow: ellipsis; 2824 } 2825 2826 .accordian-content-card__bottom { 2827 flex-direction: row !important; 2828 justify-content: space-between !important; 2829 align-items: center !important; 2830 width: 100% !important; 2831 margin-top: 6px !important; 2832 } 2833 2834 .accordian-content-card__link { 2835 flex: 1 !important; 2836 min-width: 0 !important; 2837 text-align: left !important; 2838 } 2839 2840 .accordian-content-card__time { 2841 flex-shrink: 0 !important; 2842 text-align: right !important; 2843 } 2844 } 2845 </style> 2846 2847 <div class="accordian-content-card" 2848 style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;"> 2849 2850 2851 <!-- Row 1: Icon + Title + Collapse Icon --> 2852 <div class="accordian-content-card__top" 2853 style="display: flex; align-items: center; justify-content: space-between; width: 100%;"> 2854 2855 <!-- Icon --> 2856 <div class="accordian-content-card__ico" style="flex-shrink: 0;"> 2857 <@ if(value1.type == 'code'){ @> 2858 <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;"> 2859 <@ } else { @>
2860 <span class="material-icons text-primary" style="color:#282400; font-size: 24px;"> 2861 <@ print(getCourseAssetIcon(value1.type))@> 2862 </span> 2863 <@ } @> 2864 </div> 2865 2866 <!-- Title --> 2867 <div class="accordian-content-card__title" 2868 style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"> 2869 <@print(value1.title)@> 2870 </div> 2871 2872 <!-- Collapse Icon (optional) --> 2873 <div class="accordian-content-card__collapse" style="flex-shrink: 0;"> 2874 <!-- Example placeholder, add real icon if needed --> 2875 <!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> --> 2876 </div> 2877 </div> 2878 2879 <!-- Row 2: Preview Button and Time --> 2880 <div class="accordian-content-card__bottom" 2881 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;"> 2882 2883 <!-- Preview Button --> 2884 <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;"> 2885 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value1.id)){@> 2886 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value1.id)@>" 2887 class="previewBtn" 2888 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #282400; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;"> 2889 <span class="text-primary" style="color:#282400;"> 2890 <@ if(value1.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> 2891 <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#282400;"></i></span> 2892 </span> 2893 </a> 2894 <@}@> 2895 </div> 2896 2897 <!-- Time --> 2898 <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;"> 2899 <p class="text-primary course-asset-time" 2900 style="font-size: 14px; font-weight: 500; color:#282400 !important; margin: 0;"> 2901 <@ if(value1.duration && value1.duration > 0) { @> 2902 <@ print(millisecondsToHHMMSSStr(value1.duration)) @> 2903 <@ } else { @> 2904 -- 2905 <@ } @> 2906 </p> 2907 </div> 2908 2909 </div> 2910 </div> 2911 2912 2913 </li> 2914 <@ }); @> 2915 <@ } else { @> 2916 <li class="accordian-list__item" style="padding:0px 0px !important;"> 2917 <div class="accordian-content-card" 2918 style="display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 10px 0; width: 100%; box-sizing: border-box; border-bottom: 1px solid #eee;"> 2919 2920 <!-- Row 1: Icon + Title + Collapse Icon --> 2921 <div class="accordian-content-card__top" 2922 style="display: flex; align-items: center; justify-content: space-between; width: 100%;"> 2923 2924 <!-- Icon --> 2925 <div class="accordian-content-card__ico" style="flex-shrink: 0;"> 2926 <@ if(value.type == 'code'){ @> 2927 <img src="/resources/images/CodeIcon.svg" style="width: 24px; height: 24px;"> 2928 <@ } else { @> 2929 <span class="material-icons text-primary" style="color:#282400; font-size: 24px;"> 2930 <@ print(getCourseAssetIcon(value.type))@> 2931 </span> 2932 <@ } @> 2933 </div> 2934 2935 <!-- Title --> 2936 <div class="accordian-content-card__title" 2937 style="font-weight: 400; font-size: 14px; color: #333; margin: 0 10px; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"> 2938 <@print(value.title)@> 2939 </div> 2940 2941 <!-- Collapse Icon (optional) --> 2942 <div class="accordian-content-card__collapse" style="flex-shrink: 0;"> 2943 <!-- Example placeholder, add real icon if needed --> 2944 <!-- <i class="fa fa-chevron-down" style="font-size: 16px;"></i> --> 2945 </div> 2946 </div> 2947 2948 <!-- Row 2: Preview Button and Time --> 2949 <div class="accordian-content-card__bottom" 2950 style="display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 6px; flex-wrap: nowrap;"> 2951 2952 <!-- Preview Button --> 2953 <div class="accordian-content-card__link" style="flex: 1; min-width: 0; text-align: left;"> 2954 <@if(summary.sampleAvailable && summary.sampleSectionIds.includes(value.id)){@> 2955 <a href="/s/preview/courses/<@print(decodeURIComponent(summary.courseUrl).replace(/ /g,'-'))@>-<@- courseId @>#<@print(value.id)@>" 2956 class="previewBtn" 2957 style="font-size: 14px; font-weight: 500; text-decoration: none; color: #282400; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block;">
2958 <span class="text-primary" style="color:#282400;"> 2959 <@ if(value.type == 'video') { @> Watch <@ } else {@> Preview <@ } @> 2960 <span style="color:#000"><i class="fa fa-solid fa-arrow-up-right" style="color:#282400;"></i></span> 2961 </span> 2962 </a> 2963 <@}@> 2964 </div> 2965 2966 <!-- Time --> 2967 <div class="accordian-content-card__time" style="flex-shrink: 0; text-align: right;"> 2968 <p class="text-primary course-asset-time" 2969 style="font-size: 14px; font-weight: 500; color:#282400 !important; margin: 0;"> 2970 <@ if(value.duration && value.duration > 0) { @> 2971 <@ print(millisecondsToHHMMSSStr(value.duration)) @> 2972 <@ } else { @> 2973 -- 2974 <@ } @> 2975 </p> 2976 </div> 2977 </div> 2978 </div> 2979 </li> 2980 <@ } @> 2981 </ul> 2982 2983 <@ if(itemsCount > 5) { @> 2984 <div style="text-align: center; margin-top: 10px;"> 2985 <button style="background-color: #282400; color: white; padding: 4px 28px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 2986 onclick=" 2987 var parentAccordion = this.closest('.accordion-content'); 2988 parentAccordion.style.maxHeight = 'none'; 2989 this.closest('.accordian-content-block').querySelectorAll('.accordian-list__item').forEach(el => el.style.display = 'block'); 2990 this.style.display = 'none'; 2991 "> 2992 View All 2993 </button> 2994 </div> 2995 <@ } @> 2996 </div> 2997 </div> 2998 </div> 2999 <@ }); @> 3000 <@ if(item.length > 5) { @> 3001 <div style="text-align: center; margin-top: 10px;margin-bottom: 20px;"> 3002 <button style="background-color: #282400; color: white; padding: 8px 32px; border: none; cursor: pointer; font-size: 16px; border-radius: 24px;" 3003 onclick="document.querySelectorAll('.accordion-syllabus-item').forEach(el => el.style.display = 'block'); this.style.display = 'none';"> 3004 View All Sessions 3005 </button> 3006 </div> 3007 <@ } @> 3008</div> 3009 </div> 3010</script>
3010 3011 3012 3013 3014 3015 3016 3017<!-- Feedback Template First -->
3018<script type="text/template" id="widget-1-template"> 3019<div class="column full feedbackContainer feedback1 spectre"> 3020<@if(msg){@> 3021 <h4 style="letter-spacing: 2px; text-align: center;"><@print(msg)@></h4> 3022<@}else{@> 3023<div class="avgratingbox"> 3024 <div class="flex-row" > 3025 <div class="is-box-2" > 3026 <p style="color: rgb(247, 247, 247); font-weight: 700!important; font-size: 40px!important; text-align: center; letter-spacing: 3px; padding-bottom: 0px; margin-bottom: 0px; line-height: 1; margin-top: 0px;"> 3027 <@ if(ratings && ratings.avgRating) {@> 3028 <@ print(parseFloat(ratings.avgRating.toFixed(1))) @> 3029 <@}else{@> 3030 0 3031 <@}@> 3032 </p> 3033 <h5 class="ratings1" style="text-align: center; margin-bottom: 0px; margin-top: 0px; line-height: 1;"> 3034 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 3035 <@if(ratings){@> 3036 <@ if(ratings.avgRating >= ratingsSize) {@> 3037 <i class="icon ion-android-star"></i> 3038 <@ } else if(ratings.avgRating > ratingsSize-1 && ratings.avgRating < ratingsSize) { @> 3039 <i class="icon ion-android-star-half"></i> 3040 <@ } else { @> 3041 <i class="icon ion-android-star-outline"></i> 3042 <@ } @> 3043 <@} else {@> 3044 <i class="icon ion-android-star-outline"></i> 3045 <@}@> 3046 <@}@> 3047 </h5> 3048 <p style="margin: 10px 0 0 !important;text-align: center;line-height: 1;font-size: 30px!important;"><i class="fa-light fa-users t-white"></i> </p> 3049 <p style="margin-bottom: 10px; margin-top: 0px; font-size: 12px!important; letter-spacing: 1px; font-weight: 500!important; color: rgb(247, 247, 247); text-align: center;"> 3050 Total <@ if(ratings){print(ratings.total) }else{0}@> Reviews 3051 </p> 3052 </div> 3053 <div class="is-box-9"> 3054 <@ for (i = 0; i < 5; i++) {@> 3055 <div class="box7878"> 3056 <div style="flex:1;"> 3057 <div class="meter <@print(ratingsPer[(parseInt(i)+1)+'-star'].cls)@> nostripes"> 3058 <span style="width: <@print(ratingsPer[(parseInt(i)+1)+'-star'].rates)@>%"></span> 3059 </div> 3060 </div> 3061 <div id="ratingbox"> 3062 <p class="ratings2" style=" line-height: 1;"> 3063 <@ for (ratingsSize = 5; ratingsSize >=1; ratingsSize--) {@> 3064 <@if(ratingsSize>i){@> 3065 <i class="fa fa-solid fa-star-sharp text-primary"></i> 3066 <@} else {@> 3067 <i class="fa fa-solid fa-star-sharp"></i> 3068 <@}@> 3069 <@}@> 3070 <span class="t-white"> 3071 <@ if(ratings && ratings.ratingsCount){print(ratings.ratingsCount[(parseInt(5)-i)+'-stars'])}else{0} @> 3072 </span> 3073 </p> 3074 3075 </div> 3076 </div> 3077 <@}@> 3078 </div> 3079 </div> 3080</div> 3081 <div class="bg-secondary" style="padding:15px 15px;border-radius:10px;border-top-right-radius: 0;border-top-left-radius: 0;" > 3082 <p 3083 style="font-size: 16px!important; font-weight: 500!important; letter-spacing: 1px;" class="text-primary"> 3084 Reviews 3085 </p> 3086 3087<div class="review-box" id="createCustomReview" style="display:none"> 3088<div class="flex-row"> 3089 <div class="is-box-2 centerbox"> 3090 <div class="spectre"> 3091 <figure data-initial="<@if(typeof SPUSER !== 'undefined'){print(SPUSER.email.substring(0, 1))}else{@>Me<@}@>" class="uppercase avatar avatar-lg figsize" > 3092 <img src="/s/profile/thumb" alt="" class="review-pic" onerror="profileImageError(this)" data-mhash="<@ if(typeof SPUSER !== 'undefined'){print(SPUSER.mhash)} @>"> 3093 </figure> 3094 <@if(typeof SPUSER !== 'undefined'){ @><p class="review-name"><@ print(SPUSER.name) @> </p><@ } @> 3095 </div> 3096 </div> 3097 <div class="is-box-10"> 3098 <textarea rows="3" class="form-input" 3099 placeholder="Add your review here"></textarea> 3100 <div class="rating3"> 3101 <p id="rating-stars"> 3102 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> <i 3103 class="fa fa-solid fa-star-sharp text-primary rating-star" data-value='<@- ratingsSize @>'></i> <@}@> 3104 </p> 3105 3106 <button class="btn btn-primary <@ if(typeof SPUSER !== 'undefined'){ print('createCustomReviewBtn') }else { print('loginBtn') } @>" 3107 data-reviewData="reviewlist" 3108 style="padding: 2px 28px; text-transform: uppercase; border-radius: 40px;">Post</button> 3109 </div> 3110 </div> 3111</div> 3112</div> 3113 3114 <div id="reviewlist"> 3115 <@ $.each(items, function(index, item) { @> 3116 <div class="review-box reviewcontainer <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @>selfreview<@ } @>"> 3117 <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @> 3118 <a class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>"><i class="material-icons">delete</i></a> 3119 <@ } @> 3120 <div class="flex-row"> 3121 <div class="is-box-2 centerbox"> 3122 <div class="spectre"> 3123 <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @> 3124 <figure data-initial="<@if(typeof SPUSER !== 'undefined'){print(SPUSER.email.substring(0, 1))}else{@>Me<@}@>" class="uppercase avatar avatar-lg figsize" > 3125 <img src="/s/profile/thumb" alt="" class="review-pic" onerror="profileImageError(this)" data-mhash="<@ if(typeof SPUSER !== 'undefined'){print(SPUSER.mhash)} @>"> 3126 <@ } else {@> 3127 <figure data-initial="<@ print(getUserInitial(null, item.userName)) @>" class="uppercase avatar avatar-lg figsize" > 3128 <img src="/s/profile/<@- item.userId @>/thumb" alt="" class="review-pic" onerror="profileImageError(this)" data-mhash="<@ item.mhash @>"> 3129 <@ } @> 3130 </figure> 3131 <p class="review-name"><@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @><@ print(SPUSER.name) @><@ } else {@> <@ print(item.userName) @><@ } @> </p> 3132 </div> 3133 </div> 3134 <div class="is-box-10"> 3135 <div class="rating4"> 3136 <p> 3137 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> <@ 3138 if(item.rating >= ratingsSize) {@> 3139 <i class="fa fa-solid fa-star-sharp text-primary"></i> 3140 <@ } else if(item.rating > ratingsSize-1 && item.rating < ratingsSize) { @> 3141 <i class="fa fa-solid fa-star-sharp-half text-primary"></i> 3142 <@ } else { @> 3143 <i class="fa fa-solid fa-star-sharp"></i> 3144 <@}@> 3145 <@ }@> 3146 </p> 3147 <p 3148 style="font-size: 13px!important; color: rgb(174, 170, 170); font-weight: 600!important; margin-top: 4px;"> 3149 <time class="timestamp"
3150 datetime="<@ print((new Date(item.createdDate.$date)).toISOString()) @>"><@ 3151 print(parseDate(item.createdDate.$date)) @></time> 3152 </p> 3153 </div> 3154 <p class="reviewTxt" 3155 style="color: rgb(102, 102, 102); font-weight: 500!important; font-size: 13px!important; margin-bottom: 10px;"><@ 3156 print(item.reviewtext.replace(/</g,'<').replace(/>/g,'>')) @></p> 3157 <div class="comment-tag"> 3158 <@ if(item.isFeatured) {@><span>Featured Review </span><@ } @><@ if(item.isVerifiedPurchase) {@> <span>Verified Purchase </span><@ } @> 3159 </div> 3160 </div> 3161 </div> 3162 </div> 3163 <@ }); @> 3164 </div> 3165 <button class="bg-primary loadMoreReviewsBtn reviewLMbtn" data-itemTemplate="feedback-1-item-template" data-reviewData="reviewlist" >Load More Reviews</button> 3166</div> 3167<@}@> 3168</script>
3168 3169 3170
3171<script type="text/template" id="feedback-1-item-template"> 3172<div class="review-box reviewcontainer <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @>selfreview<@ } @>""> 3173<@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @> 3174 <a class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>"><i class="material-icons">delete</i></a> 3175<@ } @> 3176<div class="flex-row"> 3177 <div class="is-box-2 centerbox"> 3178 <div class="spectre"> 3179 <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @> 3180 <figure data-initial="<@if(typeof SPUSER !== 'undefined'){print(SPUSER.email.substring(0, 1))}else{@>Me<@}@>" class="avatar avatar-lg figsize" > 3181 <img src="/s/profile/thumb" alt="" class="review-pic" onerror="profileImageError(this)" data-mhash="<@ if(typeof SPUSER !== 'undefined'){print(SPUSER.mhash)} @>"> 3182 <@ } else {@> 3183 <figure data-initial="<@ print(getUserInitial(null, item.userName)) @>" class="avatar avatar-lg figsize" > 3184 <img src="/s/profile/<@- item.userId @>/thumb" alt="" class="review-pic" onerror="profileImageError(this)" data-mhash="<@ item.mhash @>"> 3185 <@ } @> 3186 </figure> 3187 <p class="review-name"><@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @><@ print(SPUSER.name) @><@ } else {@> <@ print(item.userName) @><@ } @> </p> 3188 </div> 3189 </div> 3190 <div class="is-box-10"> 3191 <div class="rating4"> 3192 <p> 3193 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> <@ 3194 if(item.rating >= ratingsSize) {@> 3195 <i class="fa fa-solid fa-star-sharp text-primary"></i> 3196 <@ } else if(item.rating > ratingsSize-1 && item.rating < ratingsSize) { @> 3197 <i class="fa fa-solid fa-star-sharp-half text-primary"></i> 3198 <@ } else { @> 3199 <i class="fa fa-solid fa-star-sharp-outline"></i> 3200 <@}@> 3201 <@ } @> 3202 </p> 3203 <p 3204 style="font-size: 13px!important; color: rgb(174, 170, 170); font-weight: 600!important; margin-top: 4px;"> 3205 <time class="timestamp" 3206 datetime="<@ print((new Date(item.createdDate.$date)).toISOString()) @>"><@ 3207 print(parseDate(item.createdDate.$date)) @></time> 3208 </p> 3209 </div> 3210 <p class="reviewTxt" 3211 style="color: rgb(102, 102, 102); font-weight: 500!important; font-size: 13px!important; margin-bottom: 10px;"><@ 3212 print(item.reviewtext.replace(/</g,'<').replace(/>/g,'>')) @></p> 3213 <div class="comment-tag"> 3214 <@ if(item.isFeatured) {@><span>Featured Review </span><@ } @><@ if(item.isVerifiedPurchase) {@> <span>Verified Purchase </span><@ } @> 3215 </div> 3216 </div> 3217</div> 3218</div> 3219</script>
3219 3220 3221 3222<!-- Feedback Template Second -->
3223<script type="text/template" id="feedback-2-template"> 3224<div class="column full feedbackContainer feedback2 spectre <@- total @>" style="padding: 0;"> 3225<@if(msg){@> 3226 <h4 style="letter-spacing: 2px; text-align: center;"><@print(msg)@></h4> 3227<@}else{@> 3228<@ if(total > 0 && ratings && ratings.avgRating) {@> 3229<div class="avgratingbox"> 3230<div class="column third"> 3231 <div class="is-card avgRatingContainer" > 3232 <div class="avgRatingInnerContainer"> 3233 <h3 style="font-weight: 800; font-size: 12px; line-height: 1.3; margin-bottom: 0px;">Customer ratings</h3> 3234 <div style="display: flex; flex-direction: row; align-items: center; justify-content: center;"> 3235 <i class="icon ion-android-star text-primary" style="font-size: 80px;"></i> 3236 <div style="margin-left: 25px;"> 3237 <span style="display: flex; justify-content: flex-start; align-items: baseline;"> 3238 <h3 style="margin-top: 0px; margin-bottom: 0px; font-size: 32px; font-weight: 800; color: var(--themeColor); line-height: 1.3;"> 3239 <@ if(ratings && ratings.avgRating) {@> 3240 <@ print(parseFloat(ratings.avgRating.toFixed(1))) @> 3241 <@}else{@> 3242 0 3243 <@}@> 3244 </h3> 3245 <p class="avgRatingReviews">/5</p> 3246 </span> 3247 <p class="avgRatingReviews"> 3248 <@ if(ratings){print(ratings.total) }else{0}@> reviews 3249 </p> 3250 </div> 3251 </div> 3252 </div> 3253 </div> 3254</div> 3255</div> 3256<@ } @> 3257<div id="feedback2Reviewlist" class="reviewslist"> 3258 <@ $.each(items, function(index, item) { @> 3259 <@ var template = _.template($("#feedback-2-item-template").html()); print(template({item: item})) @> 3260 <@ }); @> 3261 <@}@> 3262</div> 3263<div class="row clearfix"> 3264 <div class="column full"> 3265 <p class="loadMoreReviewsBtn reviewLMbtn text-primary" data-itemTemplate="feedback-2-item-template" data-reviewData="feedback2Reviewlist" style="text-align: right; font-size: 14px; font-weight: 500;cursor: pointer;line-height: 1.5;display: none;"> 3266 View more 3267 </p> 3268 </div> 3269</div> 3270</script>
3270 3271
3272<script type="text/template" id="feedback-2-item-template"> 3273 <div class="column third reviewcontainer <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @>selfreview<@ } @>"> 3274 <div class="is-card avgRatingContainer"> 3275 <div style="text-align: center; display: flex; flex-direction: column; align-items: flex-start;" > 3276 <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @> 3277 <a class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>"><i class="material-icons">delete</i></a> 3278 <@ } @> 3279 <p class="reviewTxt" style="font-size: 14px; font-weight: 400; line-height: 1.5; margin-bottom: 25px; margin-top: 0px; min-height: 80px; max-height: 80px; overflow: hidden;"> 3280 <@ print(item.reviewtext.replace(/</g,'<').replace(/>/g,'>')) @> 3281 </p> 3282 <div class="reviewerName"> 3283 <p style="font-size: 12px; font-weight: 500; line-height: 1.3; text-align: left; padding-top: 0px; margin:0px;"> 3284 <@ print(item.userName) @> 3285 </p></div> 3286 3287 <p style="margin: 0px;"> 3288 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 3289 <@ if(item.rating >= ratingsSize) {@> 3290 <i class="fa fa-solid fa-star-sharp text-primary"></i> 3291 <@ } else if(item.rating > ratingsSize-1 && item.rating < ratingsSize) { @> 3292 <i class="fa fa-solid fa-star-sharp-half text-primary"></i> 3293 <@ } @> 3294 <@ }@> 3295 </p> 3296 3297 </div> 3298 </div> 3299 </div> 3300</script>
vendor: 1 bytes, line 3300
3300
3301<script type="text/template" id="feedback-2-createTemplate"> 3302 <div data-cat="1" class="is-section is-box is-section-20" id="createCustomReview" style="display: none;" data-id="<@- parentId @>"> 3303 <div class="is-boxes"> 3304 <div class="is-box-centered"> 3305 <div class="is-container container" style="max-width: 940px;"> 3306 3307 <div class="review-box review-add-box"> 3308 <div class="is-container container is-content-800" > 3309 <div class="row clearfix" > 3310 <div class="column full" > 3311 <h1 style="text-align: center; font-size: 28px; line-height: 1.1; font-weight: 700; letter-spacing: 0px; color: var(--themeColor); margin-bottom: 44px;">Add a review</h1> 3312 </div> 3313 </div> 3314 <div class="textarea-cont"> 3315 <div class="review-star text-primary" style="display: flex; flex-direction: row; align-items: center; padding-top: 0px; margin-top: 0px;"> 3316 <span id="rating-stars"> 3317 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> <i 3318 class="fa fa-solid fa-star-sharp rating-star" data-value='<@- ratingsSize @>'></i> <@}@> 3319 </span> 3320 </div> 3321 <textarea class="add-review-textarea" id="reviewText" style="background: transparent;width: 100%; border-width: 0px; padding-right: 28px; padding-bottom: 28px; min-height: 150px; font-size: 14px; font-weight: 500; line-height: 1.5; padding-top: 10px;" placeholder="Add your review here"></textarea> 3322 <@ if(typeof SPUSER !== 'undefined' && SPUSER.name.length > 0) { @> 3323 <p style="font-weight: 400; font-size: 10px; line-height: 1.3; color: rgba(255, 255, 255, 0.5); margin-top: 0px;"><@ print(SPUSER.name) @></p> 3324 <@ } @> 3325 </div> 3326 <div style="margin-top: 20px; display: flex; justify-content: flex-end;"> 3327 <button id="reviewSubmitBtn" class="btn btn-primary <@ if(typeof SPUSER !== 'undefined'){ print('createCustomReviewBtn') }else { print('loginBtn') } @>" 3328 data-reviewData="feedback2Reviewlist" disabled >Submit</button> 3329 </div> 3330 </div> 3331 </div> 3332 </div> 3333 </div> 3334 </div> 3335</div> 3336</script>
3336 3337 3338<!-- Vegas 4th feedback Template--> 3339 3340
3341<script type="text/template" id="feedback-4-template"> 3342 <div class="column full feedbackContainer feedback2 spectre <@- total @>" style="padding: 0;"> 3343 <@if(msg){@> 3344 <h4 style="letter-spacing: 2px; text-align: center;"><@print(msg)@></h4> 3345 <@}else{@> 3346 <@ if(total > 0 && ratings && ratings.avgRating) {@> 3347 <div class="avgratingbox"> 3348 <div class="column third"> 3349 <div class="is-card avgRatingContainer" style="border-radius:16px !important ; padding:20px ;border:1px solid #E5E5E5 !important;" > 3350 <div class="avgRatingInnerContainer"> 3351 <h3 style="font-weight: 800; font-size: 12px; line-height: 1.3; margin-bottom: 0px;">Customer ratings</h3> 3352 <div style="display: flex; flex-direction: row; align-items: center; justify-content: center;"> 3353 <i class="icon ion-android-star text-primary" style="font-size: 80px;"></i> 3354 <div style="margin-left: 25px;"> 3355 <span style="display: flex; justify-content: flex-start; align-items: baseline;"> 3356 <h3 style="margin-top: 0px; margin-bottom: 0px; font-size: 32px; font-weight: 800; color: var(--themeColor); line-height: 1.3;"> 3357 <@ if(ratings && ratings.avgRating) {@> 3358 <@ print(parseFloat(ratings.avgRating.toFixed(1))) @> 3359 <@}else{@> 3360 0 3361 <@}@> 3362 </h3> 3363 <p class="avgRatingReviews">/5</p> 3364 </span> 3365 <p class="avgRatingReviews"> 3366 <@ if(ratings){print(ratings.total) }else{0}@> reviews 3367 </p> 3368 </div> 3369 </div> 3370 </div> 3371 </div> 3372 </div> 3373 </div> 3374 <@ } @> 3375 <div id="feedback4Reviewlist" class="reviewslist"> 3376 <@ $.each(items, function(index, item) { @> 3377 <@ var template = _.template($("#feedback-4-item-template").html()); print(template({item: item})) @> 3378 <@ }); @> 3379 <@}@> 3380 </div> 3381 <div class="row clearfix"> 3382 <div class="column full" style="text-align: center;"> 3383 <a class="loadMoreReviewsBtn reviewLMbtn text-primary" data-itemTemplate="feedback-4-item-template" data-reviewData="feedback4Reviewlist" style="text-align: center; font-size: 16px; font-weight: 500;cursor: pointer;line-height: 1.5;display: none; background:#FB5607; color:white; padding:12px 28px; border-radius:24px;text-decoration:none;"> 3384 View All Reviews 3385 </a> 3386 </div> 3387 </div> 3388 </script>
3388 3389 3390
3390<script type="text/template" id="feedback-4-item-template"> 3391 <div class="column third reviewcontainer <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @>selfreview<@ } @>"> 3392 <div class="is-card avgRatingContainer" style="border:1px solid #E5E5E5 !important; border-radius:16px !important;background:white; padding:20px; "> 3393 <div style="text-align: center; display: flex; flex-direction: column; align-items: flex-start;" > 3394 <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @> 3395 <a style="color:#FB5607 !important;" class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>"><i class="material-icons">delete</i></a> 3396 <@ } @> 3397 <p class="reviewTxt" style="font-size: 14px; font-weight: 400; line-height: 1.5; margin-bottom: 25px; margin-top: 0px; min-height: 82px; max-height: 80px; overflow: hidden;"> 3398 <@ print(item.reviewtext.replace(/</g,'<').replace(/>/g,'>')) @> 3399 </p> 3400 <div class="reviewerName"> 3401 <p style="font-size: 12px; font-weight: 500; line-height: 1.3; text-align: left; padding-top: 0px; margin:0px; opacity:0.5;"> 3402 <@ print(item.userName) @> 3403 </p></div> 3404 3405 <p style="margin: 0px;"> 3406 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 3407 <@ if(item.rating >= ratingsSize) {@> 3408 <i class="fa fa-solid fa-star-sharp text-primary" style="color:#FB5607 !important;"></i> 3409 <@ } else if(item.rating > ratingsSize-1 && item.rating < ratingsSize) { @> 3410 <i class="fa fa-solid fa-star-sharp-half text-primary" style="color:#FB5607 !important;"></i> 3411 <@ } @> 3412 <@ }@> 3413 </p> 3414 3415 </div> 3416 </div> 3417 </div> 3418 </script>
3418 3419
3419<script type="text/template" id="feedback-4-createTemplate"> 3420 <div data-cat="1" class="is-section is-box is-section-20" id="createCustomReview" style="display: none;" data-id="<@- parentId @>"> 3421 <div class="is-boxes"> 3422 <div class="is-box-centered"> 3423 <div class="is-container container" style="max-width: 1200px;"> 3424 3425 <div class="review-box review-add-box"> 3426 <div class="is-container container is-content-1200" > 3427 <div class="row clearfix" > 3428 <div class="column full" > 3429 <h1 style="text-align: left; font-size: 32px; line-height: 1.1; font-weight: 600; letter-spacing: 0px; color: black; ">Add a review</h1> 3430 </div> 3431 </div> 3432 <div class="textarea-cont"> 3433 <div style="display:flex; gap:30px;"> 3434 <div><h3 style="font-size:18px;font-weight:600;">Overall Rating</h3></div> 3435 <div class="review-star1 text-primary" 3436 style="display: flex; flex-direction: row; align-items: center; padding-top: 0px; margin-top: 0px;margin-left:0px !important;margin:0px !important"> 3437 <span id="rating-stars" > 3438 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 3439 <i class="fa fa-solid fa-star-sharp rating-star" 3440 data-value='<@- ratingsSize @>' 3441 style="width: 20px; height: 20px; text-align: center; flex-shrink: 0; margin: 0; padding: 0;"></i> 3442 <@}@> 3443 </span> 3444 </div> 3445 <style></style> 3446 3447 3448 </div> 3449 <textarea class="add-review-textarea" id="reviewText" style="background:#E5E5E5;width: 100%; border: 1px solid #E5E5E5; padding-right: 28px; padding-bottom: 28px; min-height: 180px; font-size: 14px; font-weight: 500; line-height: 1.5; padding-top: 10px;border-radius:16px !important" placeholder="Add your review here"></textarea> 3450 <@ if(typeof SPUSER !== 'undefined' && SPUSER.name.length > 0) { @> 3451 <p style="font-weight: 400; font-size: 10px; line-height: 1.3; color: rgba(255, 255, 255, 0.5); margin-top: 0px;"><@ print(SPUSER.name) @></p> 3452 <@ } @> 3453 </div> 3454 <div style=" display: flex; justify-content: center;"> 3455 <button style="letter-spacing:0px !important ; background-color:#FB5607;padding:12px 28px !important;" id="reviewSubmitBtn" class="btn btn-primary <@ if(typeof SPUSER !== 'undefined'){ print('createCustomReviewBtn') }else { print('loginBtn') } @>" 3456 data-reviewData="feedback4Reviewlist" disabled >Submit</button> 3457 </div> 3458 </div> 3459 </div> 3460 </div> 3461 </div> 3462 </div> 3463 </div> 3464 </script>
3464 3465 3466 3467 3468 3469<!-- Blaze 5th feedback Template-->
3470<script type="text/template" id="feedback-5-template"> 3471 <div class="column full feedbackContainer feedback2 spectre <@- total @>" style="padding: 0;"> 3472 <@if(msg){@> 3473 <h4 style="letter-spacing: 2px; text-align: center;"><@print(msg)@></h4> 3474 <@}else{@> 3475 <@ if(total > 0 && ratings && ratings.avgRating) {@> 3476 <div class="avgratingbox"> 3477 <div class="column third"> 3478 <div class="is-card avgRatingContainer" style="background:#232323; border-radius:0px;padding:21px;" > 3479 <div class="avgRatingInnerContainer"> 3480 <h3 style="font-weight: 800; font-size: 12px; line-height: 1.3; margin-bottom: 0px;color:white;">Customer ratings</h3> 3481 <div style="display: flex; flex-direction: row; align-items: center; justify-content: center;"> 3482 <i class="icon ion-android-star text-primary" style="font-size: 80px;color:rgb(216, 253, 70);"></i> 3483 <div style="margin-left: 25px;"> 3484 <span style="display: flex; justify-content: flex-start; align-items: baseline;"> 3485 <h3 style="margin-top: 0px; margin-bottom: 0px; font-size: 32px; font-weight: 800; color: rgb(216, 253, 70); line-height: 1.3;"> 3486 <@ if(ratings && ratings.avgRating) {@> 3487 <@ print(parseFloat(ratings.avgRating.toFixed(1))) @> 3488 <@}else{@> 3489 0 3490 <@}@> 3491 </h3> 3492 <p class="avgRatingReviews" style="color:white;">/5</p> 3493 </span> 3494 <p class="avgRatingReviews" style="color:white;"> 3495 <@ if(ratings){print(ratings.total) }else{0}@> reviews 3496 </p> 3497 </div> 3498 </div> 3499 </div> 3500 </div> 3501 </div> 3502 </div> 3503 <@ } @> 3504 <div id="feedback5Reviewlist" class="reviewslist"> 3505 <@ $.each(items, function(index, item) { @> 3506 <@ var template = _.template($("#feedback-5-item-template").html()); print(template({item: item})) @> 3507 <@ }); @> 3508 <@}@> 3509 </div> 3510 <div class="row clearfix"> 3511 <div class="column full" style="text-align: center;"> 3512 <a class="loadMoreReviewsBtn reviewLMbtn text-primary" data-itemTemplate="feedback-5-item-template" data-reviewData="feedback5Reviewlist" style="text-align: center; font-size: 16px; font-weight: 500;cursor: pointer;line-height: 1.5;display: none; background:#D8FD46; color:black; padding:12px 28px; border-radius:0px;text-decoration:none;"> 3513 View All Reviews 3514 </a> 3515 </div> 3516 </div> 3517 </script>
3517 3518 3519 3520
3520<script type="text/template" id="feedback-5-item-template"> 3521 <style> 3522 .template5-review .reviewTxt{ 3523 color:white !important; 3524 } 3525 .template5-review .reviewerName p{ 3526 color:white !important; 3527 } 3528 </style> 3529 <div class="column third reviewcontainer template5-review <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @> selfreview <@ } @>"> 3530 <div class="is-card avgRatingContainer" style="border:1px solid #232323;padding:20px;"> 3531 <div style="text-align: center; display: flex; flex-direction: column; align-items: flex-start;"> 3532 <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @> 3533 <a style="color:#D8FD46 !important;" class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>"> 3534 <i class="material-icons">delete</i> 3535 </a> 3536 <@ } @> 3537 <p class="reviewTxt" style="font-size: 14px; font-weight: 400; line-height: 1.5; margin-bottom: 25px; margin-top: 0px; min-height: 82px; max-height: 80px; overflow: hidden;"> 3538 <@ print(item.reviewtext.replace(/</g,'<').replace(/>/g,'>')) @> 3539 </p> 3540 <div class="reviewerName"> 3541 <p style="font-size: 12px; font-weight: 500; line-height: 1.3; text-align: left; padding-top: 0px; margin:0px; opacity:0.5; "> 3542 <@ print(item.userName) @> 3543 </p> 3544 </div> 3545 3546 <p style="margin: 0px;"> 3547 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) { @> 3548 <@ if(item.rating >= ratingsSize) { @> 3549 <i class="fa fa-solid fa-star-sharp text-primary" style="color:#D8FD46 !important;"></i> 3550 <@ } else if(item.rating > ratingsSize - 1 && item.rating < ratingsSize) { @> 3551 <i class="fa fa-solid fa-star-sharp-half text-primary" style="color:#D8FD46 !important;"></i> 3552 <@ } @> 3553 <@ } @> 3554 </p> 3555 </div> 3556 </div> 3557 </div> 3558 </script>
3558 3559 3560
3560<script type="text/template" id="feedback-5-createTemplate"> 3561 <div data-cat="1" class="is-section is-box is-section-20" id="createCustomReview" style="display: none;" data-id="<@- parentId @>"> 3562 <div class="is-boxes"> 3563 <div class="is-box-centered" style="background:#181818;"> 3564 <div class="is-container container" style="max-width: 1200px;"> 3565 3566 <div class="review-box review-add-box"> 3567 <div class="is-container container is-content-1200" > 3568 <div class="row clearfix" > 3569 <div class="column full" > 3570 <h1 style="text-align: left; font-size: 32px; line-height: 1.1; font-weight: 600; letter-spacing: 0px; color: white; ">Add a review</h1> 3571 </div> 3572 </div> 3573 <div class="textarea-cont" style="background:transparent"> 3574 <div style="display:flex; gap:30px;"> 3575 <div><h3 style="font-size:18px;font-weight:600; color:white;">Overall Rating</h3></div> 3576 <div class="review-star text-primary" 3577 style="display: flex; flex-direction: row; align-items: center; padding-top: 0px; margin-top: 0px;margin-left:0px !important;margin:0px !important"> 3578 <span id="rating-stars" > 3579 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 3580 <i class="fa fa-solid fa-star-sharp rating-star" 3581 data-value='<@- ratingsSize @>' 3582 style="width: 20px; height: 20px; text-align: center; flex-shrink: 0; margin: 0; padding: 0;"></i> 3583 <@}@> 3584 </span> 3585 </div> 3586 3587 3588 </div> 3589 <textarea class="add-review-textarea" id="reviewText" style="color:white;background:#232323;width: 100%; border: 1px solid #636363; padding: 28px; min-height: 180px; font-size: 14px; font-weight: 500; line-height: 1.5; padding-top: 10px;border-radius:0px !important" placeholder="Add your review here"></textarea> 3590 <@ if(typeof SPUSER !== 'undefined' && SPUSER.name.length > 0) { @> 3591 <p style="font-weight: 400; font-size: 10px; line-height: 1.3; color: rgba(255, 255, 255, 0.5); margin-top: 0px;"><@ print(SPUSER.name) @></p> 3592 <@ } @> 3593 </div> 3594 <div style=" display: flex; justify-content: center;margin-top:20px;"> 3595 <button style="letter-spacing:0px !important ; background-color:#D8FD46;padding:12px 28px !important; border-radius:0px !important; color:black;" id="reviewSubmitBtn" class="btn btn-primary <@ if(typeof SPUSER !== 'undefined'){ print('createCustomReviewBtn') }else { print('loginBtn') } @>" 3596 data-reviewData="feedback5Reviewlist" disabled >Submit</button> 3597 </div> 3598 </div> 3599 </div> 3600 </div> 3601 </div> 3602 </div> 3603 </div> 3604 </script>
3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620<!-- Nebula Feedback 6--> 3621
3622<script type="text/template" id="feedback-6-template"> 3623 <div class="column full feedbackContainer feedback2 spectre <@- total @>" style="padding: 0;"> 3624 <@if(msg){@> 3625 <h4 style="letter-spacing: 2px; text-align: center;"><@print(msg)@></h4> 3626 <@}else{@> 3627 <@ if(total > 0 && ratings && ratings.avgRating) {@> 3628 <div class="avgratingbox"> 3629 <div class="column third"> 3630 <div class="is-card avgRatingContainer" style="border-radius:16px !important ; padding:20px ;border:1px solid #E5E5E5 !important;" > 3631 <div class="avgRatingInnerContainer"> 3632 <h3 style="font-weight: 800; font-size: 12px; line-height: 1.3; margin-bottom: 0px;">Customer ratings</h3> 3633 <div style="display: flex; flex-direction: row; align-items: center; justify-content: center;"> 3634 <i class="icon ion-android-star text-primary" style="font-size: 80px; color: #6715FF !important;"></i> 3635 <div style="margin-left: 25px;"> 3636 <span style="display: flex; justify-content: flex-start; align-items: baseline;"> 3637 <h3 style="margin-top: 0px; margin-bottom: 0px; font-size: 32px; font-weight: 800; color: #6715FF !important; line-height: 1.3;"> 3638 <@ if(ratings && ratings.avgRating) {@> 3639 <@ print(parseFloat(ratings.avgRating.toFixed(1))) @> 3640 <@}else{@> 3641 0 3642 <@}@> 3643 </h3> 3644 <p class="avgRatingReviews">/5</p> 3645 </span> 3646 <p class="avgRatingReviews"> 3647 <@ if(ratings){print(ratings.total) }else{0}@> reviews 3648 </p> 3649 </div> 3650 </div> 3651 </div> 3652 </div> 3653 </div> 3654 </div> 3655 <@ } @> 3656 <div id="feedback6Reviewlist" class="reviewslist"> 3657 <@ $.each(items, function(index, item) { @> 3658 <@ var template = _.template($("#feedback-6-item-template").html()); print(template({item: item})) @> 3659 <@ }); @> 3660 <@}@> 3661 </div> 3662 <div class="row clearfix"> 3663 <div class="column full" style="text-align: center;"> 3664 <a class="loadMoreReviewsBtn reviewLMbtn text-primary" data-itemTemplate="feedback-6-item-template" data-reviewData="feedback6Reviewlist" style="text-align: center; font-size: 16px; font-weight: 500;cursor: pointer;line-height: 1.5;display: none; background:#6715FF; color:white; padding:12px 28px; border-radius:24px;text-decoration:none;"> 3665 View All Reviews 3666 </a> 3667 </div> 3668 </div> 3669 </script>
3669 3670 3671
3671<script type="text/template" id="feedback-6-item-template"> 3672 <div class="column third reviewcontainer <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @>selfreview<@ } @>"> 3673 <div class="is-card avgRatingContainer" style="border:1px solid #E5E5E5 !important; border-radius:16px !important;background:white; padding:20px; "> 3674 <div style="text-align: center; display: flex; flex-direction: column; align-items: flex-start;" > 3675 <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @> 3676 <a style="color:#6715FF !important;" class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>"><i class="material-icons">delete</i></a> 3677 <@ } @> 3678 <p class="reviewTxt" style="font-size: 14px; font-weight: 400; line-height: 1.5; margin-bottom: 25px; margin-top: 0px; min-height: 82px; max-height: 80px; overflow: hidden;"> 3679 <@ print(item.reviewtext.replace(/</g,'<').replace(/>/g,'>')) @> 3680 </p> 3681 <div class="reviewerName"> 3682 <p style="font-size: 12px; font-weight: 500; line-height: 1.3; text-align: left; padding-top: 0px; margin:0px; opacity:0.5;"> 3683 <@ print(item.userName) @> 3684 </p></div> 3685 3686 <p style="margin: 0px;"> 3687 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 3688 <@ if(item.rating >= ratingsSize) {@> 3689 <i class="fa fa-solid fa-star-sharp text-primary" style="color:#6715FF !important;"></i> 3690 <@ } else if(item.rating > ratingsSize-1 && item.rating < ratingsSize) { @> 3691 <i class="fa fa-solid fa-star-sharp-half text-primary" style="color:#6715FF !important;"></i> 3692 <@ } @> 3693 <@ }@> 3694 </p> 3695 3696 </div> 3697 </div> 3698 </div> 3699 </script>
3699 3700
3700<script type="text/template" id="feedback-6-createTemplate"> 3701 <div data-cat="1" class="is-section is-box is-section-20" id="createCustomReview" style="display: none;" data-id="<@- parentId @>"> 3702 <div class="is-boxes"> 3703 <div class="is-box-centered"> 3704 <div class="is-container container" style="max-width: 1200px;"> 3705 3706 <div class="review-box review-add-box"> 3707 <div class="is-container container is-content-1200" > 3708 <div class="row clearfix" > 3709 <div class="column full" > 3710 <h1 style="text-align: left; font-size: 32px; line-height: 1.1; font-weight: 600; letter-spacing: 0px; color: black; ">Add a review</h1> 3711 </div> 3712 </div> 3713 <div class="textarea-cont" style="background:transparent"> 3714 <div style="display:flex; gap:30px;"> 3715 <div><h3 style="font-size:18px;font-weight:600;">Overall Rating</h3></div> 3716 <div class="review-star1 text-primary" 3717 style="display: flex; flex-direction: row; align-items: center; padding-top: 0px; margin-top: 0px;margin-left:0px !important;margin:0px !important"> 3718 <span id="rating-stars" > 3719 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 3720 <i class="fa fa-solid fa-star-sharp rating-star" 3721 data-value='<@- ratingsSize @>' 3722 style="width: 20px; height: 20px; text-align: center; flex-shrink: 0; margin: 0; padding: 0;"></i> 3723 <@}@> 3724 </span> 3725 </div> 3726 <style></style> 3727 3728 3729 </div> 3730 <textarea class="add-review-textarea" id="reviewText" style="background:white;width: 100%; border: 1px solid #c3c0c0; padding-right: 28px; padding-bottom: 28px;padding-left:20px; min-height: 180px; font-size: 14px; font-weight: 500; line-height: 1.5; padding-top: 10px;border-radius:16px !important" placeholder="Add your review here"></textarea> 3731 <@ if(typeof SPUSER !== 'undefined' && SPUSER.name.length > 0) { @> 3732 <p style="font-weight: 400; font-size: 10px; line-height: 1.3; color: grey; margin-top: 0px;"><@ print(SPUSER.name) @></p> 3733 <@ } @> 3734 </div> 3735 <div style=" display: flex; justify-content: center;"> 3736 <button style="letter-spacing:0px !important ; background-color:#6715FF;padding:12px 28px !important;margin-top:30px;" id="reviewSubmitBtn" class="btn btn-primary <@ if(typeof SPUSER !== 'undefined'){ print('createCustomReviewBtn') }else { print('loginBtn') } @>" 3737 data-reviewData="feedback6Reviewlist" disabled >Submit</button> 3738 </div> 3739 </div> 3740 </div> 3741 </div> 3742 </div> 3743 </div> 3744 </div> 3745 </script>
3745 3746 3747 3748 3749 3750 3751<!-- Olive Feedback 7-->
3752<script type="text/template" id="feedback-7-template"> 3753 <div class="column full feedbackContainer feedback2 spectre <@- total @>" style="padding: 0;"> 3754 <@if(msg){@> 3755 <h4 style="letter-spacing: 2px; text-align: center;"><@print(msg)@></h4> 3756 <@}else{@> 3757 <@ if(total > 0 && ratings && ratings.avgRating) {@> 3758 <div class="avgratingbox"> 3759 <div class="column third"> 3760 <div class="is-card avgRatingContainer" style="border-radius:16px !important ; padding:20px ;border:1px solid #E5E5E5 !important;" > 3761 <div class="avgRatingInnerContainer"> 3762 <h3 style="font-weight: 800; font-size: 12px; line-height: 1.3; margin-bottom: 0px;">Customer ratings</h3> 3763 <div style="display: flex; flex-direction: row; align-items: center; justify-content: center;"> 3764 <i class="icon ion-android-star text-primary" style="font-size: 80px; color: #064400 !important;"></i> 3765 <div style="margin-left: 25px;"> 3766 <span style="display: flex; justify-content: flex-start; align-items: baseline;"> 3767 <h3 style="margin-top: 0px; margin-bottom: 0px; font-size: 32px; font-weight: 800; color: #064400 !important; line-height: 1.3;"> 3768 <@ if(ratings && ratings.avgRating) {@> 3769 <@ print(parseFloat(ratings.avgRating.toFixed(1))) @> 3770 <@}else{@> 3771 0 3772 <@}@> 3773 </h3> 3774 <p class="avgRatingReviews">/5</p> 3775 </span> 3776 <p class="avgRatingReviews"> 3777 <@ if(ratings){print(ratings.total) }else{0}@> reviews 3778 </p> 3779 </div> 3780 </div> 3781 </div> 3782 </div> 3783 </div> 3784 </div> 3785 <@ } @> 3786 <div id="feedback7Reviewlist" class="reviewslist"> 3787 <@ $.each(items, function(index, item) { @> 3788 <@ var template = _.template($("#feedback-7-item-template").html()); print(template({item: item})) @> 3789 <@ }); @> 3790 <@}@> 3791 </div> 3792 <div class="row clearfix"> 3793 <div class="column full" style="text-align: center;"> 3794 <a class="loadMoreReviewsBtn reviewLMbtn text-primary" data-itemTemplate="feedback-7-item-template" data-reviewData="feedback7Reviewlist" style="text-align: center; font-size: 16px; font-weight: 500;cursor: pointer;line-height: 1.5;display: none; background:#064400; color:white; padding:12px 28px; border-radius:24px;text-decoration:none;"> 3795 View All Reviews 3796 </a> 3797 </div> 3798 </div> 3799 </script>
3799 3800 3801
3801<script type="text/template" id="feedback-7-item-template"> 3802 <div class="column third reviewcontainer <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @>selfreview<@ } @>"> 3803 <div class="is-card avgRatingContainer" style="border:1px solid #E5E5E5 !important; border-radius:16px !important;background:white; padding:20px; "> 3804 <div style="text-align: center; display: flex; flex-direction: column; align-items: flex-start;" > 3805 <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @> 3806 <a style="color:#064400 !important;" class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>"><i class="material-icons">delete</i></a> 3807 <@ } @> 3808 <p class="reviewTxt" style="font-size: 14px; font-weight: 400; line-height: 1.5; margin-bottom: 25px; margin-top: 0px; min-height: 82px; max-height: 80px; overflow: hidden;"> 3809 <@ print(item.reviewtext.replace(/</g,'<').replace(/>/g,'>')) @> 3810 </p> 3811 <div class="reviewerName"> 3812 <p style="font-size: 12px; font-weight: 500; line-height: 1.3; text-align: left; padding-top: 0px; margin:0px; opacity:0.5;"> 3813 <@ print(item.userName) @> 3814 </p></div> 3815 3816 <p style="margin: 0px;"> 3817 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 3818 <@ if(item.rating >= ratingsSize) {@> 3819 <i class="fa fa-solid fa-star-sharp text-primary" style="color:#064400 !important;"></i> 3820 <@ } else if(item.rating > ratingsSize-1 && item.rating < ratingsSize) { @> 3821 <i class="fa fa-solid fa-star-sharp-half text-primary" style="color:#064400 !important;"></i> 3822 <@ } @> 3823 <@ }@> 3824 </p> 3825 3826 </div> 3827 </div> 3828 </div> 3829 </script>
3829 3830
3830<script type="text/template" id="feedback-7-createTemplate"> 3831 <div data-cat="1" class="is-section is-box is-section-20" id="createCustomReview" style="display: none;" data-id="<@- parentId @>"> 3832 <div class="is-boxes"> 3833 <div class="is-box-centered"> 3834 <div class="is-container container" style="max-width: 1200px;"> 3835 3836 <div class="review-box review-add-box"> 3837 <div class="is-container container is-content-1200" > 3838 <div class="row clearfix" > 3839 <div class="column full" > 3840 <h1 style="text-align: left; font-size: 32px; line-height: 1.1; font-weight: 600; letter-spacing: 0px; color: black; ">Add a review</h1> 3841 </div> 3842 </div> 3843 <div class="textarea-cont"> 3844 <div style="display:flex; gap:30px;"> 3845 <div><h3 style="font-size:18px;font-weight:600;">Overall Rating</h3></div> 3846 <div class="review-star1 text-primary" 3847 style="display: flex; flex-direction: row; align-items: center; padding-top: 0px; margin-top: 0px;margin-left:0px !important;margin:0px !important"> 3848 <span id="rating-stars" > 3849 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 3850 <i class="fa fa-solid fa-star-sharp rating-star" 3851 data-value='<@- ratingsSize @>' 3852 style="width: 20px; height: 20px; text-align: center; flex-shrink: 0; margin: 0; padding: 0;"></i> 3853 <@}@> 3854 </span> 3855 </div> 3856 <style></style> 3857 3858 3859 </div> 3860 <textarea class="add-review-textarea" id="reviewText" style="background:#E5E5E5;width: 100%; border: 1px solid #E5E5E5; padding-right: 28px; padding-bottom: 28px;padding-left:20px; min-height: 180px; font-size: 14px; font-weight: 500; line-height: 1.5; padding-top: 10px;border-radius:16px !important" placeholder="Add your review here"></textarea> 3861 <@ if(typeof SPUSER !== 'undefined' && SPUSER.name.length > 0) { @> 3862 <p style="font-weight: 400; font-size: 10px; line-height: 1.3; color: rgba(255, 255, 255, 0.5); margin-top: 0px;"><@ print(SPUSER.name) @></p> 3863 <@ } @> 3864 </div> 3865 <div style=" display: flex; justify-content: center;"> 3866 <button style="letter-spacing:0px !important ; background-color:#064400;padding:12px 28px !important;" id="reviewSubmitBtn" class="btn btn-primary <@ if(typeof SPUSER !== 'undefined'){ print('createCustomReviewBtn') }else { print('loginBtn') } @>" 3867 data-reviewData="feedback7Reviewlist" disabled >Submit</button> 3868 </div> 3869 </div> 3870 </div> 3871 </div> 3872 </div> 3873 </div> 3874 </div> 3875 </script>
3875 3876 3877 3878 3879 3880 <!--Dusk Feedback-8--> 3881
3881<script type="text/template" id="feedback-8-template"> 3882 <div class="column full feedbackContainer feedback2 spectre <@- total @>" style="padding: 0;"> 3883 <@if(msg){@> 3884 <h4 style="letter-spacing: 2px; text-align: center;"><@print(msg)@></h4> 3885 <@}else{@> 3886 <@ if(total > 0 && ratings && ratings.avgRating) {@> 3887 <div class="avgratingbox"> 3888 <div class="column third"> 3889 <div class="is-card avgRatingContainer" style="border-radius:16px !important ; padding:20px ;border:1px solid #E5E5E5 !important;background:#F5F5F5;" > 3890 <div class="avgRatingInnerContainer"> 3891 <h3 style="font-weight: 800; font-size: 12px; line-height: 1.3; margin-bottom: 0px;">Customer ratings</h3> 3892 <div style="display: flex; flex-direction: row; align-items: center; justify-content: center;"> 3893 <i class="icon ion-android-star text-primary" style="font-size: 80px; color: #282400 !important;"></i> 3894 <div style="margin-left: 25px;"> 3895 <span style="display: flex; justify-content: flex-start; align-items: baseline;"> 3896 <h3 style="margin-top: 0px; margin-bottom: 0px; font-size: 32px; font-weight: 800; color: #282400 !important; line-height: 1.3;"> 3897 <@ if(ratings && ratings.avgRating) {@> 3898 <@ print(parseFloat(ratings.avgRating.toFixed(1))) @> 3899 <@}else{@> 3900 0 3901 <@}@> 3902 </h3> 3903 <p class="avgRatingReviews">/5</p> 3904 </span> 3905 <p class="avgRatingReviews"> 3906 <@ if(ratings){print(ratings.total) }else{0}@> reviews 3907 </p> 3908 </div> 3909 </div> 3910 </div> 3911 </div> 3912 </div> 3913 </div> 3914 <@ } @> 3915 <div id="feedback8Reviewlist" class="reviewslist"> 3916 <@ $.each(items, function(index, item) { @> 3917 <@ var template = _.template($("#feedback-8-item-template").html()); print(template({item: item})) @> 3918 <@ }); @> 3919 <@}@> 3920 </div> 3921 <div class="row clearfix"> 3922 <div class="column full" style="text-align: center;"> 3923 <a class="loadMoreReviewsBtn reviewLMbtn text-primary" data-itemTemplate="feedback-8-item-template" data-reviewData="feedback8Reviewlist" style="text-align: center; font-size: 16px; font-weight: 500;cursor: pointer;line-height: 1.5;display: none; background:#282400; color:white; padding:12px 28px; border-radius:24px;text-decoration:none;"> 3924 View All Reviews 3925 </a> 3926 </div> 3927 </div> 3928 </script>
3928 3929 3930
3930<script type="text/template" id="feedback-8-item-template"> 3931 <div class="column third reviewcontainer <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @>selfreview<@ } @>"> 3932 <div class="is-card avgRatingContainer" style="border:1px solid #E5E5E5 !important; border-radius:16px !important;background:#F5F5F5; padding:20px; "> 3933 <div style="text-align: center; display: flex; flex-direction: column; align-items: flex-start;" > 3934 <@ if(typeof SPUSER !== 'undefined' && item["userId"] === SPUSER.id) { @> 3935 <a style="color:#282400 !important;" class="btn btn-link float-right deleteCurrentReviewBtn" data-id="<@ print(item['_id']) @>"><i class="material-icons">delete</i></a> 3936 <@ } @> 3937 <p class="reviewTxt" style="font-size: 14px; font-weight: 400; line-height: 1.5; margin-bottom: 25px; margin-top: 0px; min-height: 82px; max-height: 80px; overflow: hidden;"> 3938 <@ print(item.reviewtext.replace(/</g,'<').replace(/>/g,'>')) @> 3939 </p> 3940 <div class="reviewerName"> 3941 <p style="font-size: 12px; font-weight: 500; line-height: 1.3; text-align: left; padding-top: 0px; margin:0px; opacity:0.5;"> 3942 <@ print(item.userName) @> 3943 </p></div> 3944 3945 <p style="margin: 0px;"> 3946 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 3947 <@ if(item.rating >= ratingsSize) {@> 3948 <i class="fa fa-solid fa-star-sharp text-primary" style="color:#282400 !important;"></i> 3949 <@ } else if(item.rating > ratingsSize-1 && item.rating < ratingsSize) { @> 3950 <i class="fa fa-solid fa-star-sharp-half text-primary" style="color:#282400 !important;"></i> 3951 <@ } @> 3952 <@ }@> 3953 </p> 3954 3955 </div> 3956 </div> 3957 </div> 3958 </script>
3958 3959
3959<script type="text/template" id="feedback-8-createTemplate"> 3960 <div data-cat="1" class="is-section is-box is-section-20" id="createCustomReview" style="display: none;" data-id="<@- parentId @>"> 3961 <div class="is-boxes"> 3962 <div class="is-box-centered"> 3963 <div class="is-container container" style="max-width: 1200px;"> 3964 3965 <div class="review-box review-add-box"> 3966 <div class="is-container container is-content-1200" > 3967 <div class="row clearfix" > 3968 <div class="column full" > 3969 <h1 style="text-align: left; font-size: 32px; line-height: 1.1; font-weight: 600; letter-spacing: 0px; color: black; ">Add a review</h1> 3970 </div> 3971 </div> 3972 <div class="textarea-cont"> 3973 <div style="display:flex; gap:30px;"> 3974 <div><h3 style="font-size:18px;font-weight:600;">Overall rating</h3></div> 3975 <div class="review-star1 text-primary" 3976 style="display: flex; flex-direction: row; align-items: center; padding-top: 0px; margin-top: 0px;margin-left:0px !important;margin:0px !important"> 3977 <span id="rating-stars" > 3978 <@ for (ratingsSize = 1; ratingsSize <= 5; ratingsSize++) {@> 3979 <i class="fa fa-solid fa-star-sharp rating-star" 3980 data-value='<@- ratingsSize @>' 3981 style="width: 20px; height: 20px; text-align: center; flex-shrink: 0; margin: 0; padding: 0;"></i> 3982 <@}@> 3983 </span> 3984 </div> 3985 <style></style> 3986 3987 3988 </div> 3989 <textarea class="add-review-textarea" id="reviewText" style="background:#E5E5E5;width: 100%; border: 1px solid #E5E5E5; padding-right: 28px; padding-bottom: 28px;padding-left:20px; min-height: 180px; font-size: 14px; font-weight: 500; line-height: 1.5; padding-top: 10px;border-radius:16px !important" placeholder="Add your review here"></textarea> 3990 <@ if(typeof SPUSER !== 'undefined' && SPUSER.name.length > 0) { @> 3991 <p style="font-weight: 400; font-size: 10px; line-height: 1.3; color: rgba(255, 255, 255, 0.5); margin-top: 0px;"><@ print(SPUSER.name) @></p> 3992 <@ } @> 3993 </div> 3994 <div style=" display: flex; justify-content: center;"> 3995 <button style="letter-spacing:0px !important ; background-color:#282400;padding:12px 28px !important;" id="reviewSubmitBtn" class="btn btn-primary <@ if(typeof SPUSER !== 'undefined'){ print('createCustomReviewBtn') }else { print('loginBtn') } @>" 3996 data-reviewData="feedback8Reviewlist" disabled >Submit</button> 3997 </div> 3998 </div> 3999 </div> 4000 </div> 4001 </div> 4002 </div> 4003 </div> 4004 </script>
4004 4005 4006 4007 4008<div class="spectre"> 4009<div class="modal" id="reviewModal"> 4010 <a href="javascript:void(0);" class="modal-overlay close" 4011 aria-label="Close"></a> 4012 <div class="modal-container"> 4013 <div class="modal-header"> 4014 <a href="javascript:void(0);" 4015 class="close btn btn-clear float-right" aria-label="Close"></a> 4016 <div class="modal-title h5">Review</div> 4017 </div> 4018 <div class="modal-body" style="max-height: 90vh;padding-top: 0;"> 4019 </div> 4020 </div> 4021 4022 4023 4024</div> 4025 4026 4027</div> 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042
4043<script> 4044 var created_date = `Created Date`; 4045 var uname_msg = `Name`; 4046 var email_msg = `Email`; 4047 var has_web_token = `Has Web Token`; 4048 var has_mobile_token = `Has Mobile Token`; 4049 var actions_msg = `Actions`; 4050 var delete_user = `Delete User`; 4051 var create_target_audience = `Create Target Audience`; 4052 var msg_now = `NOW`; 4053 var msg_now_2 = `Now`; 4054 var msg_scheduled = `SCHEDULED`; 4055 var msg_recurring = `RECURRING`; 4056 var msg_weeks = `weeks`; 4057 var msg_months = `month(s)`; 4058 var msg_days = `days`; 4059 var notification_screen = `Notification Screen`; 4060 var coursepackagelandingpage = `Course/Package landing page`; 4061 var search_course_name = `Search by course/package name`; 4062 var webinar_landing_page = `Webinar landing page`; 4063 var search_by_webinar_name = `Search by webinar name`; 4064 var categorypage = `Category Page`; 4065 var custompage = `Custom Page`; 4066 var blogpage = `Blog Page`; 4067 var customlink = `Custom Link`; 4068 var homepage_msg = `Homepage`; 4069 var search_category = `Search category`; 4070 var search_page_title = `Search by Page title`; 4071 var search_blog_title = `Search by Blog title`; 4072 var enter_the_link = `Enter the link`; 4073 var membership_page = `Membership page`; 4074 var pick_a_date = `Pick a date`; 4075 var pick_first_push_date = `Pick a first push date`; 4076 var every_msg = `Every`; 4077 var starting_msg = `Starting`; 4078 var msg_published = `Published`; 4079 var msg_unpublished = `Unpublished`; 4080 var msg_customize = `Customize`; 4081 var msg_edit = `Edit`; 4082 var msg_featured_image = `Featured Image`; 4083 var msg_preview = `Preview`; 4084 var msg_delete = `Delete`; 4085 var msg_unpublish = `Unpublish`; 4086 var msg_publish = `Publish `; 4087 var msg_question= `questions`; 4088 var try_new_coding_assignment= `Try new coding assignment`; 4089 var change_enrollment_date = `Change Enrollment Date`; 4090 var change_expiry = `Change Expiry`; 4091 var change_remanining_time = `Change Remaining Time`; 4092 var remove_from_course = `Remove From Course`; 4093 var reset_course_progress = `Reset Course Progress`; 4094 var complete_report = `Complete Report`; 4095 var msg_progress = `Progress`; 4096 var timetaken = `Time Taken`; 4097 var msg_user_details = `User Details`; 4098 var graphy_platform_fees_note = `Amount after deducting Graphy platform fees. This does not include your payment gateway charges.`; 4099 var final_price_note = `Final payable price by learners`; 4100 var save_alert_message = `Save progress before moving forward.`; 4101 var no_chapter_alert_message = `Please add at least one chapter in the course.`; 4102 var download_msg = `Download`; 4103 var revoke_msg = `Revoke`; 4104 var yes_msg = `Yes`; 4105 var no_msg = `No`; 4106 var details_hover = `Details`; 4107 var hide_notification = `Hide Notification`; 4108 var notify_learners_hover = `Notify Learners`; 4109 var search_course_package = `Search Courses to add in this package.`; 4110 var bulk_delete = `Bulk Delete`; 4111 var scheduled_msg = `Scheduled`; 4112 var inprogress_msg = `In Progress`; 4113 var completed_msg = `Completed`; 4114 var yes_all_caps = `YES`; 4115 var no_all_caps = `NO`; 4116 var discount_msg = `Discount`; 4117 var max_discount = `Max Discount`; 4118 var min_cart = `Min Cart`; 4119 var delete_bookmark = `Delete Bookmark`; 4120 var view_question = `View question`; 4121 var msg_free = `Free`; 4122 var membership_expiration_note = `Membership will be canceled on next billing date.`; 4123 var msg_active = `Active`; 4124 var msg_inactive = `Inactive`; 4125 var delete_hover = `Delete`; 4126 var view_hover = `View`; 4127 var coursewise = `Course Wise`; 4128 var learner_wise = `Learner wise`; 4129 var segment_wise = `Segment wise`; 4130 var unregistered_msg = `Unregistered`; 4131 var target_audience_deleted = `Target Audience Deleted`; 4132 var courses_msg = `course(s)`; 4133 var learners_msg = `learner(s)`; 4134 var unregistered_learners = `Unregistered Learner`; 4135 var all_learners = `All Learners`; 4136 var course_wise_learners = `Course wise Learners`; 4137 var segment_wise_learners = `Segment wise Learners`; 4138 var with_token = `with token`; 4139 var segments_msg = `segments`; 4140 var add_users_msg = `Add Users`; 4141 var approx_msg = `Approx`; 4142 var revoke_cancellation_request = `Revoke Cancellation request.`; 4143 var remove_scheduled_membership_cancellation = `Remove Scheduled Membership Cancellation`; 4144 var schedule_to_stop_subscription = `Schedule to stop Subscription`; 4145 var stop_subscription = `Stop subscription`; 4146 var available_for_review_all_caps = `AVAILABLE FOR REVIEW`; 4147 var reviewed_all_caps = `REVIEWED`; 4148 var rejected_all_caps = `REJECTED`; 4149 var preview_code = `Preview Code`; 4150 var approve_msg = `Approve`; 4151 var reject_msg = `Reject`; 4152 var history_msg = `History`; 4153 var message_hover= `Message`; 4154 var remove_msg= `Remove`; 4155 var enroll_msg= `Enroll`; 4156 var change_validity= `Change Validity`; 4157 var learners_selected= `learner(s) selected`; 4158 var select_all_msg= `Select all`; 4159 var do_you_want_to_delete_course= `Do you really want to delete this course?`; 4160 var do_you_want_to_revoke_this_certificate= `Do you really want to revoke this certificate?`; 4161 var do_you_want_to_revoke_entry= `Do you really want to revoke this entry?`; 4162 var do_you_want_to_edit_enrollment_date= `Do you really want to edit enrollment date of all learners?`; 4163 var do_you_want_to_edit_enrollment_date_for_selected= `Do you really want to edit enrollment date of selected learners?`; 4164 var do_you_want_to_edit_course_validity= `Do you really want to edit course validity of all learners?`; 4165 var do_you_want_to_edit_course_validity_for_selected= `Do you really want to edit course validity of selected learners?`; 4166 var do_you_want_to_remove_selected= `Do you really want to remove selected learners?`; 4167 var do_you_want_to_remove_all= `Do you really want to remove all learners?`; 4168 var do_you_want_to_create_zip= `Do you really want to create zip for this course?`; 4169 var do_you_want_to_deactivate= `Do you really want to deactivate?`; 4170 var successfully_done_alert= `Successfully Done.`; 4171 var please_select_atleast_1_learner= `Please select atleast 1 learner !`; 4172 var on_msg= `On`; 4173 var single_correct_option = `Single Correct Option`; 4174 var multiple_correct_options = `Multiple Correct Options`; 4175 var numerical_Fill_in_the_Blank = `Numerical/Fill in the Blank`; 4176 var match_the_Column = `Match the Column`; 4177 var subjective = `Subjective`; 4178 var your_target_audience_appear= `Your target audience user(s) will appear here`; 4179 var your_upcoming_campaign= `Your upcoming campaign will appear here`; 4180 var status_msg= `Status`; 4181 var stop_campaign= `Stop Campaign`; 4182 var copy_campaign= `Copy Campaign`; 4183 var platform_fee_tax = `platform fees including taxes`; 4184 var pg_fees_taxes = `payment gateway fees including taxes`; 4185 var msg_quiz = `Quiz`; 4186 var msg_livetest = `Live test`; 4187 var msg_heading = `Heading`; 4188 var msg_text = `Text`; 4189 var msg_form = `Form`; 4190 var msg_live_class = `Live class`; 4191 var msg_live_class_rec = `live class recording`; 4192 var msg_code = `Code`; 4193 var msg_assignment = `Assignment`; 4194 var msg_added = `added`; 4195 var msg_about = `About`; 4196 var msg_year = `year`;
4197 var msg_month = `Month`; 4198 var msg_day = `day`; 4199 //var msg_hour = `hh`; 4200 //var msg_minute = `mm`; 4201 //var msg_seconds = `seconds`; 4202 var msg_month_l = `month`; 4203 var msg_day_l = `day`; 4204 var msg_hour_l = `hour`; 4205 var msg_minute_l = `minute`; 4206 var msg_second_l = `second`; 4207 var mobile_number=`Mobile Number`; 4208 var status_android =`Status (ANDROID)`; 4209 var status_ios =`Status (IOS)`; 4210 var delivery_time=`Delivery Time`; 4211 var sure_unhide=`Are you sure you want to unhide this course ?`; 4212 var become_a_partner=`Become a Partner`; 4213 var failed_msg=`Failed`; 4214 var sent_msg=`Sent`; 4215 var pending_msg=`Pending`; 4216 var running_msg=`Running`; 4217 var add_pricing_plan = `Add pricing plan`; 4218 var msg_add = `Add`; 4219 var of_msg = `of`; 4220 var items_msg = `items` 4221 var ago_msg = `ago` 4222 var items_msg = `items`; 4223 4224 var january_msg = `January`; 4225 var february_msg = `February`; 4226 var march_msg = `March`; 4227 var april_msg = `April`; 4228 var may_msg = `May`; 4229 var june_msg = `June`; 4230 var july_msg = `July`; 4231 var august_msg = `August`; 4232 var september_msg = `September`; 4233 var october_msg = `October`; 4234 var november_msg = `November`; 4235 var december_msg = `December`; 4236 var sunday_msg = `Sunday`; 4237 var monday_msg = `Monday`; 4238 var tuesday_msg = `Tuesday`; 4239 var wednesday_msg = `Wednesday`; 4240 var thursday_msg = `Thursday`; 4241 var friday_msg = `Friday`; 4242 var saturday_msg = `Saturday`; 4243 var at_msg = `at`; 4244 var generate_outline = `Generate outline using AI`; 4245 var it_take_min = `It may take a min.`; 4246 var msg_ok = `OK`; 4247 var edit_pricing_plan = `Edit pricing plan`; 4248 4249</script>
4249 4250 4251 4252 4253 4254 4255 4256
4257<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/jquery-2.0.3.min.js"></script>
4257 4258
4259<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/underscore-min.js?v=1.9.1"></script>
4259 4260
4261<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/jquery.form.js"></script>
vendor: 1 bytes, line 4261
4261
4262<script async src="https://d502jbuhuh9wk.cloudfront.net/resources/js/jquery.noty.packaged.min.js"></script>
vendor: 1 bytes, line 4262
4262
4263<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/jquery-ui.min.js"></script>
vendor: 1 bytes, line 4263
4263
4264<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/jquery.timeago.js"></script>
vendor: 1 bytes, line 4264
4264
4265<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/js-webshim/minified/extras/modernizr-custom.js"></script>
vendor: 1 bytes, line 4265
4265
4266<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/jquery.datetimepicker.js"></script>
4266 4267 4268 4269 4270 4271 4272 4273 4274
4275<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/aes.js"></script>
vendor: 1 bytes, line 4275
4275
4276<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/mode-ecb-min.js"></script>
vendor: 1 bytes, line 4276
4276
4277<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/pad-nopadding-min.js"></script>
4277 4278 4279<!--
4279<script src="https://unpkg.com/@popperjs/core@2"></script>
vendor: 1 bytes, line 4279
4279
4280<script src="https://unpkg.com/tippy.js@6"></script>
4280 -->
4281<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/2.3.3/umd/popper.js" integrity="sha512-jSMYzs1Iebw2Uew+Y9karoqkqTDEzbqkdttIkHJKh3auQ6aGV7p8b7A3Yo9k/LsMvUFqWt5AV66hfo1OwH4Jjg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
vendor: 1 bytes, line 4281
4281
4282<script src="https://cdnjs.cloudflare.com/ajax/libs/tippy.js/6.0.0/tippy-bundle.umd.js"></script>
4282 4283
4284<script type="text/javascript"> 4285 var passwordPolicyRequired = true; 4286 var checkoutV2 = false; 4287 var primaryFieldPhoneEnabled = false; 4288 var orgLanguageCode = ""; 4289 var SPEERESCDN = "https://d502jbuhuh9wk.cloudfront.net"; 4290</script>
4290 4291
4292<script src="https://d502jbuhuh9wk.cloudfront.net/staticfiles/resources/scripts/sutils_919c30bb7230024efec7b939763642a2.js"></script>
vendor: 1 bytes, line 4292
4292
4293<script src="https://d502jbuhuh9wk.cloudfront.net/staticfiles/resources/scripts/utils/dateUtils_f53456b03f1287667a7b24fb63b367ce.js"></script>
vendor: 1 bytes, line 4293
4293
4294<script type="text/javascript"> 4295 // Make org object globally available for dateUtils 4296 window.org = window.org || {}; 4297 window.org.currencyCode = "false"=='true'?'USD':'INR'; 4298 var websiteV3Org = false; 4299 var orgCreatedDate = {"$date":"2022-04-16T12:28:32.308Z"}; 4300</script>
4300 4301 4302
4302<script src="https://d502jbuhuh9wk.cloudfront.net/staticfiles/resources/scripts/talk_b564486691065235006e186474078666.js"></script>
4302 4303 4304 4305 4306 4307
4308<script type="text/javascript"> 4309 var trialExpired = "false"; 4310 var planCancelled = "false"; 4311 var isFreePlan = false; 4312 4313</script>
vendor: 1 bytes, line 4313
4313
4314<script type="text/javascript" id="dsf239df"> 4315 var ctx = "/s", 4316 isFirstLogin = "", cjs = CryptoJS; 4317 4318 var defaultCoreColor = "#5755d9", theme1CoreColor = "#572b7a", theme2CoreColor = "#3f51b5", theme3CoreColor = "#009051", 4319 theme4CoreColor = "#596439", theme5CoreColor = "#F0591D", theme6CoreColor = "#28a745", theme7CoreColor = "#1bbc9b", 4320 theme8CoreColor = "#f38f20", apkId = "6231373436231373432363038663465653864613523630386634656538646135", theme9CoreColor = "#c0af01", theme10CoreColor = "#e8d3a4", 4321 webColor = defaultCoreColor, 4322 CFCDN = "https://d502jbuhuh9wk.cloudfront.net", mobileNotification = true, webNotification = true, 4323 iosPlayVideo = false, 4324 chromeDrmPlayback = false, 4325 gaType = ""; 4326 4327 4328 4329 $("#dsf239df").remove(); 4330</script>
4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 <input type="hidden" id="orgCurrencyCode" value="USD" /> 4340 4341 4342 4343 4344 4345
4345<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/detect-private-browsing.js"></script>
4345 4346
4346<script type="text/javascript"> 4347 detectPrivateMode( 4348 function(is_private) { 4349 if(typeof is_private !== 'undefined' && is_private) { 4350 $("input[name=privateMode]").val("private"); 4351 } 4352 } 4353 ); 4354 </script>
4354 4355 4356 4357 4358 4359 4360
4360<script type="text/javascript" 4361 src="https://d502jbuhuh9wk.cloudfront.net/resources/js/intlTelInput.min.js"></script>
4361 4362
4362<script type="text/javascript"> 4363 4364 var ipInfo = localStorage.getItem('ipInfo'); 4365 if(!ipInfo) { 4366 $.get("https://ipinfo.io", function() {}, "jsonp").always(function(resp) { 4367 if(resp) { 4368 var ipInfoStr = JSON.stringify(resp); 4369 var ipInfoField = document.getElementById("ipInfo"); 4370 var countryCode = (resp.country) ? resp.country : "in"; 4371 sessionStorage.setItem('countryCode', countryCode); 4372 if('statusText' in resp) { 4373 if((resp['statusText'] !== 'error') && ('ip' in resp)) { 4374 localStorage.setItem('ipInfo', ipInfoStr); 4375 if(ipInfoField) { 4376 ipInfoField.value = ipInfoStr; 4377 } 4378 } 4379 } 4380 else if('ip' in resp) { 4381 localStorage.setItem('ipInfo', ipInfoStr); 4382 if(ipInfoField) { 4383 ipInfoField.value = ipInfoStr; 4384 } 4385 } 4386 } 4387 }) 4388 } 4389 4390 $("#sphone").intlTelInput({ 4391 initialCountry: "auto", 4392 geoIpLookup: function(callback) { 4393 var scountryCode = sessionStorage.getItem('countryCode'); 4394 4395 if(scountryCode !== null) { 4396 callback(scountryCode); 4397 }else { 4398 $.get("https://ipinfo.io", function() {}, "jsonp").always(function(resp) { 4399 var countryCode = (resp && resp.country) ? resp.country : "in"; 4400 callback(countryCode); 4401 sessionStorage.setItem('countryCode', countryCode); 4402 }); 4403 } 4404 }, 4405 preferredCountries: ["in", "us"], 4406 separateDialCode: true, 4407 utilsScript: "/resources/js/intlUtils.js" 4408 }); 4409 4410 </script>
4410 4411 4412 4413 4414 4415<div class="spectre"> 4416 4417 4418 4419 4420 4421
4421<script type="text/javascript"> 4422 if(top != self) { 4423 //iframe 4424 $(".toast").remove(); 4425 } 4426 </script>
4426 4427 4428 4429</div> 4430 4431 4432 4433<input type="hidden" id="orgCreditAlias" 4434 value="Powershellacademy Coins" /> 4435 4436 <input type="hidden" id="ssoLoginUrl" 4437 value="https://graphy-enrollment-webhook.powershell4u.workers.dev/sso/login" /> 4438 <input type="hidden" id="ssoSignupUrl" 4439 value="https://graphy-enrollment-webhook.powershell4u.workers.dev/sso/signup" /> 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458
4459<script> 4460 4461 4462 4463 4464 var orgTaxLabel = ""; 4465 4466 4467 4468 var sessionCountry = ""; 4469 4470 $(document).ready(function() { 4471 $("input[name='userMobileVerify']").change(function(data){ 4472 var uniqueMobileSwitch = $('#uniqueMobileId'); 4473 if(data.target.value==='true'){ 4474 $('input[name=uniqueMobile]').prop('checked', true) 4475 $('#uniqueMobileLabelId').show(); 4476 }else{ 4477 $('input[name=uniqueMobile]').prop('checked', false) 4478 $('#uniqueMobileLabelId').hide(); 4479 } 4480 }); 4481 }); 4482 4483 4484 4485 4486 localStorage.removeItem('microserviceAuthToken'); 4487 4488 4489 4490 4491 4492 4493 localStorage.removeItem('communityToken'); 4494 4495 4496 4497 4498 4499 4500 localStorage.removeItem('chatRefreshToken'); 4501 4502 4503 4504 4505 4506 4507 localStorage.removeItem('refreshToken'); 4508 4509 4510 4511</script>
4511 4512 4513 4514<!-- amplitude script start --> 4515 4516 4517 4518
4518<script type="text/javascript"> 4519 window.localStorage.removeItem('loginAmplitudeEventSent'); 4520 </script>
4520 4521 4522 4523<!-- amplitude script end --> 4524 4525 4526 4527 <div id="template-container"></div> 4528
4529<script src="https://d502jbuhuh9wk.cloudfront.net/staticfiles/resources/scripts/sstore_5ffb558e86d7b5ef265e05fb0bfbef79.js"></script>
vendor: 1 bytes, line 4529
4529
4530<script type="text/javascript">store.bindEvents();</script>
vendor: 1 bytes, line 4530
4530
4531<script type="text/javascript"> 4532 window.signupParams = {source: "landing_page", platform: "web", sourceId: null}; 4533</script>
4533 4534<div class="containerBody is-wrapper clearfix" style=""><!--OTHERS---> 4535<html> 4536 <head> 4537 <meta charset="UTF-8"> 4538 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 4539 <title>PowerShell Academy â AI-Powered Learning for DBAs & Engineers</title> 4540 <meta name="description" content="Master PowerShell, Python, SQL Server, and AI with hands-on courses featuring an AI mentor in every lab. Built for DBAs and automation engineers."> 4541 <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap" rel="stylesheet"> 4542 <style> 4543* { box-sizing: border-box; margin: 0; padding: 0; } 4544body { font-family: 'Inter', system-ui, sans-serif; background: #050810; color: #f1f5f9 !important; } 4545h1, h2, h3, h4, p, span, a, div, li, ol, ul, strong, em { color: inherit; } 4546a { text-decoration: none; } 4547img { max-width: 100%; } 4548section { color: #f1f5f9 !important; } 4549section h1, section h2, section h3 { color: #f1f5f9 !important; } 4550section[data-theme="light"] { color: #0f172a !important; } 4551section[data-theme="light"] h2, section[data-theme="light"] h3 { color: #0f172a !important; } 4552section[data-theme="light"] p { color: #475569 !important; } 4553 4554/* Icon styles for technology logos */ 4555.tech-icon { width: 52px; height: 52px; display: flex; align-items: center; justify-content: center; } 4556.tech-icon svg { width: 48px; height: 48px; } 4557 4558/* Floating Action Buttons */ 4559.whatsapp-float { 4560 position: fixed; 4561 bottom: 24px; 4562 right: 24px; 4563 width: 60px; 4564 height: 60px; 4565 background: #25D366; 4566 border-radius: 50%; 4567 display: flex; 4568 align-items: center; 4569 justify-content: center; 4570 box-shadow: 0 4px 12px rgba(37, 211, 102, 0.4); 4571 z-index: 9998; 4572 transition: transform 0.3s, box-shadow 0.3s; 4573 text-decoration: none; 4574} 4575.whatsapp-float:hover { 4576 transform: scale(1.1); 4577 box-shadow: 0 6px 20px rgba(37, 211, 102, 0.6); 4578} 4579.whatsapp-float svg { 4580 display: block; 4581} 4582 4583.feedback-float { 4584 position: fixed; 4585 bottom: 96px; 4586 right: 24px; 4587 width: 60px; 4588 height: 60px; 4589 background: linear-gradient(135deg, #6366f1, #00d4aa); 4590 border-radius: 50%; 4591 display: flex; 4592 align-items: center; 4593 justify-content: center; 4594 box-shadow: 0 4px 12px rgba(99, 102, 241, 0.4); 4595 z-index: 9998; 4596 transition: transform 0.3s, box-shadow 0.3s; 4597 text-decoration: none; 4598} 4599.feedback-float:hover { 4600 transform: scale(1.1); 4601 box-shadow: 0 6px 20px rgba(99, 102, 241, 0.6); 4602} 4603.feedback-float svg { 4604 display: block; 4605} 4606</style> 4607 </head> 4608 <body> 4609 <section style="background:#050810 !important;padding:20px 16px 48px;"> 4610 <div style="max-width:1100px;margin:0 auto;"> 4611 <!-- Nav pills --> 4612 <div style="display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:24px;padding-bottom:12px;border-bottom:1px solid rgba(148,163,184,0.1);"> 4613 <a href="https://pylabs.powershellacademy.com" target="_blank" style="padding:5px 8px;background:rgba(0,212,170,0.1);border:1px solid rgba(0,212,170,0.25);border-radius:6px;color:#6ee7d3;font-size:10px;font-weight:600;">ð Python</a> 4614 <a href="https://ai.powershellacademy.com" target="_blank" style="padding:5px 8px;background:rgba(99,102,241,0.1);border:1px solid rgba(99,102,241,0.25);border-radius:6px;color:#a5b4fc;font-size:10px;font-weight:600;">ð¤ AI DBA</a> 4615 <a href="https://labs.powershellacademy.com" target="_blank" style="padding:5px 8px;background:rgba(245,158,11,0.1);border:1px solid rgba(245,158,11,0.25);border-radius:6px;color:#fcd34d;font-size:10px;font-weight:600;">â¡ PS DBA</a> 4616 <a href="https://jiralabs.powershellacademy.com" target="_blank" style="padding:5px 8px;background:rgba(0,180,216,0.1);border:1px solid rgba(0,180,216,0.25);border-radius:6px;color:#67e8f9;font-size:10px;font-weight:600;">ð Jira</a> 4617 <span style="flex:1;min-width:4px;"></span> 4618 <a href="https://home.powershellacademy.com/server-tool.html" target="_blank" style="padding:5px 8px;background:rgba(52,211,153,0.12);border:1px solid rgba(52,211,153,0.3);border-radius:6px;color:#6ee7d3;font-size:10px;font-weight:700;">ð¥ Free: Server Remote Checker</a> 4619 <a href="https://home.powershellacademy.com/store" style="padding:5px 8px;color:#94a3b8;font-size:10px;font-weight:500;">ð Courses</a> 4620 <a href="https://chat.whatsapp.com/EotpYGKYlZKDSKJWO6vCu8" target="_blank" style="padding:5px 8px;color:#94a3b8;font-size:10px;font-weight:500;">ð¬ Community</a> 4621 </div> 4622 <!-- Hero content - AI Predominant --> 4623 <div style="text-align:center;margin-bottom:32px;"> 4624 <div style="margin-bottom:18px;">
4625 <span style="display:inline-block;background:rgba(99,102,241,0.15);color:#c7d2fe;border:1px solid rgba(99,102,241,0.35);padding:6px 14px;border-radius:14px;font-size:11px;font-weight:600;">ð¤ AI mentor built into every course</span> 4626 </div> 4627 <!-- Animated AI visual --> 4628 <div style="margin:0 auto 24px;max-width:120px;height:120px;background:radial-gradient(circle,rgba(99,102,241,0.3) 0%,rgba(0,212,170,0.15) 50%,transparent 70%);border-radius:50%;display:flex;align-items:center;justify-content:center;position:relative;"> 4629 <div style="width:80px;height:80px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#00d4aa);display:flex;align-items:center;justify-content:center;box-shadow:0 0 60px rgba(99,102,241,0.4),0 0 120px rgba(0,212,170,0.2);"> 4630 <svg width="40" height="40" viewbox="0 0 24 24" fill="none" stroke="#fff" stroke-width="1.5"> 4631 <path d="M12 2a4 4 0 0 1 4 4v1a4 4 0 0 1-8 0V6a4 4 0 0 1 4-4z"></path> 4632 <path d="M8 14s-4 1-4 4v2h16v-2c0-3-4-4-4-4"></path> 4633 <circle cx="9" cy="6" r="0.5" fill="#fff"></circle> 4634 <circle cx="15" cy="6" r="0.5" fill="#fff"></circle> 4635 <path d="M5 3L2 6M19 3l3 3M12 20v2"></path> 4636 </svg> 4637 </div> 4638 </div> 4639 <h1 style="font-size:clamp(28px,6.5vw,56px);line-height:1.08;font-weight:900;letter-spacing:-0.02em;margin:0 0 16px;color:#f1f5f9 !important;">Learn with an <span style="color:#00d4aa !important;text-shadow:0 0 40px rgba(0,212,170,0.3);">AI mentor</span><br>that sees your code.</h1> 4640 <p style="color:#cbd5e1;font-size:clamp(14px,3vw,17px);line-height:1.65;margin:0 auto 24px;max-width:580px;">Hands-on video courses plus interactive AI labs for <strong style="color:#fff;">SQL Server DBAs</strong> & automation engineers. <strong style="color:#fff;">PowerShell</strong>, <strong style="color:#fff;">Python</strong>, <strong style="color:#fff;">AI</strong> â learn at your pace with an AI mentor that understands every lesson.</p> 4641 <div style="display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-bottom:20px;"> 4642 <a href="https://home.powershellacademy.com/store" style="padding:13px 24px;border-radius:10px;font-weight:700;font-size:14px;background:linear-gradient(135deg,#6366f1,#00d4aa);color:#fff;box-shadow:0 6px 20px rgba(99,102,241,0.3);">ð Explore Courses</a> 4643 <a href="https://ai.powershellacademy.com" target="_blank" style="padding:13px 24px;border-radius:10px;font-weight:600;font-size:14px;color:#f1f5f9;border:1px solid rgba(255,255,255,0.2);">ð¤ Try AI Mentor Free</a> 4644 <a href="https://home.powershellacademy.com/server-tool.html" target="_blank" style="padding:13px 24px;border-radius:10px;font-weight:600;font-size:14px;color:#6ee7d3;border:1px solid rgba(52,211,153,0.3);">ð¥ Free Server Tool</a> 4645 </div> 4646 <div style="display:flex;gap:20px;justify-content:center;flex-wrap:wrap;padding-top:18px;border-top:1px solid rgba(148,163,184,0.1);"> 4647 <div style="text-align:center;"> 4648 <strong style="color:#6366f1;font-size:20px;">AI</strong> 4649 <br> 4650 <span style="font-size:10px;color:#94a3b8;">Mentor in every lab</span> 4651 </div> 4652 <div style="text-align:center;"> 4653 <strong style="color:#00d4aa;font-size:20px;">4</strong> 4654 <br> 4655 <span style="font-size:10px;color:#94a3b8;">Interactive Labs</span> 4656 </div> 4657 <div style="text-align:center;"> 4658 <strong style="color:#00d4aa;font-size:20px;">100+</strong> 4659 <br> 4660 <span style="font-size:10px;color:#94a3b8;">Exercises</span> 4661 </div> 4662 <div style="text-align:center;"> 4663 <strong style="color:#00d4aa;font-size:20px;">Video</strong> 4664 <br> 4665 <span style="font-size:10px;color:#94a3b8;">+ Live Labs</span> 4666 </div> 4667 </div> 4668 </div> 4669 </div> 4670 </section> 4671 <section style="background:#0a0f1a !important;padding:56px 16px;color:#f1f5f9 !important;"> 4672 <div style="max-width:1100px;margin:0 auto;"> 4673 <div style="text-align:center;margin-bottom:36px;"> 4674 <span style="display:inline-block;background:rgba(0,212,170,0.12);color:#6ee7d3;border:1px solid rgba(0,212,170,0.3);padding:5px 12px;border-radius:14px;font-size:11px;font-weight:600;letter-spacing:1.2px;">ð OUR COURSES</span> 4675 <h2 style="font-size:clamp(22px,5vw,36px);margin:14px 0 8px;font-weight:800;color:#f1f5f9 !important;">Video courses + AI labs. Learn by doing.</h2> 4676 </div> 4677 <style> 4678.psa-carousel-wrap { position:relative; padding:0 40px; } 4679.psa-courses { display:flex; gap:20px; padding:20px 4px; overflow-x:auto; scroll-behavior:smooth; scrollbar-width:none; -ms-overflow-style:none; } 4680.psa-courses::-webkit-scrollbar { display:none; } 4681.psa-card { min-width:280px; max-width:300px; flex-shrink:0; background:#111827; border:1px solid rgba(148,163,184,0.12); border-radius:14px; overflow:hidden; transition:transform 0.2s,box-shadow 0.2s; } 4682.psa-card:hover { transform:translateY(-4px); box-shadow:0 12px 40px rgba(0,0,0,0.4); } 4683.psa-arrow { position:absolute; top:50%; transform:translateY(-50%); width:36px; height:36px; border-radius:50%; background:rgba(99,102,241,0.9); border:none;
4683 color:#fff; font-size:18px; cursor:pointer; display:flex; align-items:center; justify-content:center; z-index:5; transition:background 0.2s; box-shadow:0 4px 12px rgba(0,0,0,0.4); } 4684.psa-arrow:hover { background:rgba(0,212,170,0.9); } 4685.psa-arrow-left { left:0; } 4686.psa-arrow-right { right:0; } 4687.psa-cover { height:140px; display:flex; align-items:center; justify-content:center; position:relative; } 4688.psa-badge { position:absolute; top:10px; right:10px; font-size:9px; font-weight:700; padding:4px 9px; border-radius:4px; letter-spacing:0.5px; } 4689.psa-body { padding:16px; } 4690.psa-body h3 { font-size:15px; font-weight:700; color:#f1f5f9; margin:0 0 6px; line-height:1.3; } 4691.psa-body p { font-size:11px; color:#64748b; margin:0 0 12px; } 4692.psa-tags { display:flex; gap:5px; flex-wrap:wrap; margin-bottom:14px; } 4693.psa-tag { font-size:9px; font-weight:600; padding:3px 8px; border-radius:4px; background:rgba(0,212,170,0.1); color:#6ee7d3; } 4694.psa-actions { display:flex; gap:8px; } 4695.psa-actions a { flex:1; text-align:center; padding:10px; border-radius:8px; font-size:12px; font-weight:700; text-decoration:none; transition:opacity 0.2s; } 4696.psa-actions a:hover { opacity:0.85; } 4697.psa-enrol { background:linear-gradient(135deg,#6366f1,#00d4aa); color:#fff !important; } 4698.psa-lab { background:rgba(0,212,170,0.08); border:1px solid rgba(0,212,170,0.25); color:#6ee7d3 !important; } 4699.psa-free { background:#6366f1; color:#fff; } 4700.psa-coming { background:#f59e0b; color:#0a0f1a; } 4701@media(max-width:640px) { .psa-courses { flex-direction:column; align-items:center; } .psa-card { width:100%; max-width:360px; } } 4702</style> 4703 <div class="psa-carousel-wrap"> 4704 <button class="psa-arrow psa-arrow-left" onclick="document.getElementById('psaScroll').scrollBy({left:-320,behavior:'smooth'})">â¹</button> 4705 <div class="psa-courses" id="psaScroll"> 4706 <!-- Income Generation (FREE bait) --> 4707 <div class="psa-card" style="border-color:rgba(0,212,170,0.2);"> 4708 <div class="psa-cover" style="background:linear-gradient(135deg,#1a2e1a,#0a1929);"> 4709 <svg width="44" height="44" viewbox="0 0 32 32" fill="none"> 4710 <circle cx="16" cy="16" r="11" stroke="#22c55e" stroke-width="1.5"></circle> 4711 <text x="16" y="21" text-anchor="middle" font-size="14" font-weight="bold" fill="#22c55e"> 4712 $ 4713 </text> 4714 <path d="M10 6l2-2M22 6l-2-2M6 16H4M28 16h-2" stroke="#22c55e" stroke-width="1.2" stroke-linecap="round"></path> 4715 </svg> 4716 <span class="psa-badge" style="background:#f59e0b;color:#0a0f1a;">COMING SOON</span> 4717 </div> 4718 <div class="psa-body"> 4719 <h3>Income Generation Ideas for DBAs</h3> 4720 <p>Interactive Lab â Career Growth</p> 4721 <div class="psa-tags"> 4722 <span class="psa-tag">6 modules</span> 4723 <span class="psa-tag">Career Growth</span> 4724 </div> 4725 <div class="psa-actions"> 4726 <a href="#" class="psa-enrol" style="opacity:0.6;cursor:not-allowed;pointer-events:none;">ð Coming Soon</a> 4727 </div> 4728 </div> 4729 </div> 4730 <!-- AI for SQL DBA --> 4731 <div class="psa-card" style="border-color:rgba(99,102,241,0.2);"> 4732 <div class="psa-cover" style="background:linear-gradient(135deg,#1a1033,#0f0a2a);"> 4733 <svg width="48" height="48" viewbox="0 0 32 32" fill="none"> 4734 <rect x="6" y="4" width="20" height="24" rx="2" stroke="#818cf8" stroke-width="1.5"></rect> 4735 <ellipse cx="16" cy="12" rx="6" ry="3" stroke="#818cf8" stroke-width="1.3"></ellipse> 4736 <path d="M10 12v4c0 1.7 2.7 3 6 3s6-1.3 6-3v-4" stroke="#818cf8" stroke-width="1.3"></path> 4737 <path d="M10 16v4c0 1.7 2.7 3 6 3s6-1.3 6-3v-4" stroke="#818cf8" stroke-width="1.3"></path> 4738 <circle cx="23" cy="22" r="5" fill="#0f0a2a" stroke="#a78bfa" stroke-width="1.3"></circle> 4739 <path d="M21.5 22l1 1 2.5-2.5" stroke="#a78bfa" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"></path> 4740 </svg> 4741 <span class="psa-badge" style="background:#f59e0b;color:#0a0f1a;">COMING SOON</span> 4742 </div> 4743 <div class="psa-body"> 4744 <h3>AI for SQL Server DBAs</h3> 4745 <p>Interactive Lab â Python + AI</p> 4746 <div class="psa-tags">
4747 <span class="psa-tag">Hands-on</span> 4748 <span class="psa-tag" style="background:rgba(99,102,241,0.12);color:#a5b4fc;">Python + AI</span> 4749 </div> 4750 <div class="psa-actions"> 4751 <a href="#" class="psa-enrol" style="opacity:0.6;cursor:not-allowed;pointer-events:none;">ð Coming Soon</a> 4752 </div> 4753 </div> 4754 </div> 4755 <!-- Jira Automation --> 4756 <div class="psa-card" style="border-color:rgba(0,180,216,0.2);"> 4757 <div class="psa-cover" style="background:linear-gradient(135deg,#0a1929,#0d2137);"> 4758 <svg width="44" height="44" viewbox="0 0 32 32" fill="none"> 4759 <path d="M27.1 15.3L16.7 4.9 16 4.2 4.2 16l7.3 7.3L16 27.8l7.3-7.3 3.8-3.8zM16 19.3L12.7 16 16 12.7 19.3 16 16 19.3z" fill="#2684ff"></path> 4760 </svg> 4761 <svg width="28" height="28" viewbox="0 0 32 32" fill="none" style="margin-left:6px;"> 4762 <rect width="32" height="32" rx="4" fill="#012456"></rect> 4763 <path d="M7 22l8-6-8-6" stroke="#fff" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"></path> 4764 <path d="M16 22h9" stroke="#fff" stroke-width="2.2" stroke-linecap="round"></path> 4765 </svg> 4766 <span class="psa-badge" style="background:#f59e0b;color:#0a0f1a;">COMING SOON</span> 4767 </div> 4768 <div class="psa-body"> 4769 <h3>Jira Automation with PowerShell</h3> 4770 <p>Interactive Lab â REST API</p> 4771 <div class="psa-tags"> 4772 <span class="psa-tag">Hands-on</span> 4773 <span class="psa-tag" style="background:rgba(0,180,216,0.12);color:#67e8f9;">PowerShell + REST</span> 4774 </div> 4775 <div class="psa-actions"> 4776 <a href="#" class="psa-enrol" style="opacity:0.6;cursor:not-allowed;pointer-events:none;">ð Coming Soon</a> 4777 </div> 4778 </div> 4779 </div> 4780 <!-- Python for AI --> 4781 <div class="psa-card" style="border-color:rgba(0,212,170,0.2);"> 4782 <div class="psa-cover" style="background:linear-gradient(135deg,#0d2818,#1a3a2a);"> 4783 <svg width="44" height="44" viewbox="0 0 32 32" fill="none"> 4784 <path d="M15.9 3C9.8 3 10.4 5.7 10.4 5.7v2.8h5.7v.8H8.4S5 9 5 15.5 8 21.5 8 21.5h1.7v-3s-.1-3.1 3-3.1h5.2s2.9 0 2.9-2.8V7.1S21.2 3 15.9 3zm-3 2.3a.9.9 0 1 1 0 1.8.9.9 0 0 1 0-1.8z" fill="#3776ab"></path> 4785 <path d="M16.1 29c6.1 0 5.5-2.7 5.5-2.7v-2.8h-5.7v-.8h7.7s3.4.3 3.4-6.2-3-6-3-6h-1.7v3s.1 3.1-3 3.1h-5.2s-2.9 0-2.9 2.8v5.5S10.8 29 16.1 29zm3-2.3a.9.9 0 1 1 0-1.8.9.9 0 0 1 0 1.8z" fill="#ffcb3d"></path> 4786 </svg> 4787 <span class="psa-badge" style="background:#f59e0b;color:#0a0f1a;">COMING SOON</span> 4788 </div> 4789 <div class="psa-body"> 4790 <h3>Python for AI</h3> 4791 <p>Interactive Lab â 15 modules</p> 4792 <div class="psa-tags"> 4793 <span class="psa-tag">Hands-on</span> 4794 <span class="psa-tag" style="background:rgba(0,212,170,0.12);color:#6ee7d3;">15 modules</span> 4795 </div> 4796 <div class="psa-actions"> 4797 <a href="#" class="psa-enrol" style="opacity:0.6;cursor:not-allowed;pointer-events:none;">ð Coming Soon</a> 4798 </div> 4799 </div> 4800 </div> 4801 <!-- PowerShell for SQL DBAs --> 4802 <div class="psa-card" style="border-color:rgba(245,158,11,0.2);"> 4803 <div class="psa-cover" style="background:linear-gradient(135deg,#1a1a2e,#0f1a2e);"> 4804 <svg width="40" height="40" viewbox="0 0 32 32" fill="none"> 4805 <rect width="32" height="32" rx="4" fill="#012456"></rect> 4806 <path d="M7 22l8-6-8-6" stroke="#fff" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"></path> 4807 <path d="M16 22h9" stroke="#fff" stroke-width="2.2" stroke-linecap="round"></path> 4808 </svg> 4809 <svg width="32" height="32" viewbox="0 0 32 32" fill="none" style="margin-left:8px;"> 4810 <ellipse cx="16" cy="10" rx="10" ry="4" fill="none" stroke="#f59e0b" stroke-width="1.5"></ellipse> 4811 <path d="M6 10v12c0 2.2 4.5 4 10 4s10-1.8 10-4V10" stroke="#f59e0b" stroke-width="1.5"></path> 4812 <ellipse cx="16" cy="16" rx="10" ry="4" fill="none" stroke="#f59e0b" stroke-width="1" opacity="0.5"></ellipse> 4813 <ellipse cx="16" cy="22" rx="10" ry="4" fill="none" stroke="#f59e0b" stroke-width="1" opacity="0.3"></ellipse> 4814 </svg>
4815 <span class="psa-badge" style="background:#00d4aa;color:#0a0f1a;">SELF-PACED</span> 4816 </div> 4817 <div class="psa-body"> 4818 <h3>PowerShell for SQL Server DBAs</h3> 4819 <p>Powershellacademy â 13 modules</p> 4820 <div class="psa-tags"> 4821 <span class="psa-tag" style="background:rgba(245,158,11,0.12);color:#fcd34d;">13 modules</span> 4822 <span class="psa-tag">AI Mentor</span> 4823 </div> 4824 <div class="psa-actions"> 4825 <a href="https://www.powershellacademy.com/courses/Powershell-for-SQL-Server-DBAs-1688871978752-64aa242ae4b04cc8360b40a2" class="psa-enrol">Enrol Now</a> 4826 <a href="https://labs.powershellacademy.com" target="_blank" class="psa-lab">𧪠Lab</a> 4827 </div> 4828 </div> 4829 </div> 4830 <!-- PowerShell Essential Training --> 4831 <div class="psa-card" style="border-color:rgba(99,102,241,0.2);"> 4832 <div class="psa-cover" style="background:linear-gradient(135deg,#1a1033,#0f0a2a);"> 4833 <svg width="48" height="48" viewbox="0 0 32 32" fill="none"> 4834 <rect width="32" height="32" rx="4" fill="#012456"></rect> 4835 <path d="M7 22l8-6-8-6" stroke="#fff" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"></path> 4836 <path d="M16 22h9" stroke="#fff" stroke-width="2.2" stroke-linecap="round"></path> 4837 </svg> 4838 <svg width="22" height="22" viewbox="0 0 24 24" fill="none" style="margin-left:6px;"> 4839 <path d="M12 3L2 9l10 6 10-6-10-6zM2 17l10 6 10-6M2 13l10 6 10-6" stroke="#a78bfa" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path> 4840 </svg> 4841 <span class="psa-badge" style="background:#6366f1;color:#fff;">BEGINNER</span> 4842 </div> 4843 <div class="psa-body"> 4844 <h3>PowerShell Essential Training</h3> 4845 <p>Powershell Academy â Beginner friendly</p> 4846 <div class="psa-tags"> 4847 <span class="psa-tag" style="background:rgba(99,102,241,0.12);color:#a5b4fc;">Beginner</span> 4848 <span class="psa-tag">AI Mentor</span> 4849 </div> 4850 <div class="psa-actions"> 4851 <a href="https://www.powershellacademy.com/courses/Powershell-Essential-Training-by-PowershelAcademy-6309cb95e4b0ba8915b6f507" class="psa-enrol">Enrol Now</a> 4852 </div> 4853 </div> 4854 </div> 4855 <!-- Easy Tool Making --> 4856 <div class="psa-card" style="border-color:rgba(148,163,184,0.15);"> 4857 <div class="psa-cover" style="background:linear-gradient(135deg,#0f1a14,#0a1929);"> 4858 <svg width="36" height="36" viewbox="0 0 32 32" fill="none"> 4859 <rect width="32" height="32" rx="4" fill="#012456"></rect> 4860 <path d="M7 22l8-6-8-6" stroke="#fff" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"></path> 4861 <path d="M16 22h9" stroke="#fff" stroke-width="2.2" stroke-linecap="round"></path> 4862 </svg> 4863 <svg width="32" height="32" viewbox="0 0 32 32" fill="none" style="margin-left:6px;"> 4864 <path d="M20 6a6 6 0 0 0-5.3 8.8L7 22.5a2 2 0 1 0 2.8 2.8l7.7-7.7A6 6 0 1 0 20 6z" stroke="#94a3b8" stroke-width="1.8" stroke-linecap="round"></path> 4865 <circle cx="20" cy="12" r="2" fill="#94a3b8" opacity="0.5"></circle> 4866 </svg> 4867 <span class="psa-badge" style="background:#00d4aa;color:#0a0f1a;">QUICK</span> 4868 </div> 4869 <div class="psa-body"> 4870 <h3>Easy Tool Making with PowerShell</h3> 4871 <p>Vishnu Gupthan â 45 minutes</p> 4872 <div class="psa-tags"> 4873 <span class="psa-tag" style="background:rgba(148,163,184,0.12);color:#94a3b8;">45 min</span> 4874 <span class="psa-tag">AI Mentor</span> 4875 </div> 4876 <div class="psa-actions"> 4877 <a href="https://www.powershellacademy.com/courses/Fancy-Tool-Making-using-Powershell-62c9851a0cf2792b9ef04838" class="psa-enrol">Enrol Now</a> 4878 </div> 4879 </div> 4880 </div> 4881 </div> 4882 <button class="psa-arrow psa-arrow-right" onclick="document.getElementById('psaScroll').scrollBy({left:320,behavior:'smooth'})">âº</button> 4883 </div> 4884 <div style="text-align:center;margin-top:28px;"> 4885 <a href="https://home.powershellacademy.com/store" style="display:inline-block;padding:12px 28px;background:linear-gradient(135deg,#6366f1,#00d4aa);color:#fff;border-radius:10px;font-weight:700;font-size:14px;text-decoration:none;box-shadow:0 4px 16px rgba(0,212,170,0.25);">ð Explore All Courses</a> 4886 </div> 4887 </div> 4888 </section> 4889 <section style="background:#050810 !important;padding:56px 16px;color:#f1f5f9 !important;"> 4890 <div style="max-width:800px;margin:0 auto;text-align:center;"> 4891 <span style="display:inline-block;background:rgba(99,102,241,0.15);color:#c7d2fe;border:1px solid rgba(99,102,241,0.35);padding:5px 12px;border-radius:14px;font-size:11px;font-weight:700;letter-spacing:1.2px;margin-bottom:16px;">ð¤ INSIDE EVERY LAB</span> 4892 <h2 style="font-size:clamp(22px,5vw,38px);font-weight:800;line-height:1.15;margin:0 0 14px;color:#f1f5f9 !important;">An AI mentor that <span style="color:#00d4aa !important;">
4892sees your code.</span></h2> 4893 <p style="color:#cbd5e1;font-size:14px;line-height:1.7;margin:0 auto 20px;max-width:560px;">Every lab includes an AI mentor that reads your code, understands the lesson context, and gives real answers in seconds. No more being stuck alone.</p> 4894 <div style="display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-bottom:24px;"> 4895 <span style="background:rgba(0,212,170,0.08);border:1px solid rgba(0,212,170,0.2);padding:6px 12px;border-radius:8px;font-size:11px;color:#6ee7d3;">ð§ Context-aware</span> 4896 <span style="background:rgba(99,102,241,0.08);border:1px solid rgba(99,102,241,0.2);padding:6px 12px;border-radius:8px;font-size:11px;color:#a5b4fc;">ð¬ Conversational</span> 4897 <span style="background:rgba(245,158,11,0.08);border:1px solid rgba(245,158,11,0.2);padding:6px 12px;border-radius:8px;font-size:11px;color:#fcd34d;">𧪠Auto-grades</span> 4898 <span style="background:rgba(0,180,216,0.08);border:1px solid rgba(0,180,216,0.2);padding:6px 12px;border-radius:8px;font-size:11px;color:#67e8f9;">â¡ Suggested prompts</span> 4899 </div> 4900 <a href="https://ai.powershellacademy.com" target="_blank" style="display:inline-block;padding:13px 24px;background:linear-gradient(135deg,#6366f1,#00d4aa);color:#fff;border-radius:10px;font-weight:700;font-size:14px;box-shadow:0 4px 16px rgba(99,102,241,0.25);">ð¤ Try the AI Mentor Free</a> 4901 </div> 4902 </section> 4903 <section style="background:#fff;padding:56px 16px;color:#0f172a !important;" data-theme="light"> 4904 <div style="max-width:900px;margin:0 auto;"> 4905 <div style="text-align:center;margin-bottom:36px;"> 4906 <span style="display:inline-block;background:#ecfeff;color:#0e7490;border:1px solid #a5f3fc;padding:5px 12px;border-radius:14px;font-size:11px;font-weight:600;letter-spacing:1.2px;">WHY POWERSHELL ACADEMY</span> 4907 <h2 style="font-size:clamp(22px,5vw,34px);font-weight:800;margin:14px 0 0;color:#0f172a !important;">Built for engineers who learn by doing.</h2> 4908 </div> 4909 <div style="display:flex;flex-wrap:wrap;gap:16px;justify-content:center;"> 4910 <div style="background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:20px;width:260px;"> 4911 <div style="font-size:24px;margin-bottom:8px;"> 4912 ð¬ 4913 </div> 4914 <h3 style="font-size:14px;font-weight:700;margin:0 0 6px;color:#0f172a !important;">Video + AI Labs</h3> 4915 <p style="color:#475569;font-size:12px;line-height:1.5;margin:0;">Watch structured video lessons, then practice in live AI-powered labs.</p> 4916 </div> 4917 <div style="background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:20px;width:260px;"> 4918 <div style="font-size:24px;margin-bottom:8px;"> 4919 ð¤ 4920 </div> 4921 <h3 style="font-size:14px;font-weight:700;margin:0 0 6px;color:#0f172a !important;">AI mentor in every lab</h3> 4922 <p style="color:#475569;font-size:12px;line-height:1.5;margin:0;">Stuck? Ask the mentor. It sees your code and gives context-aware help.</p> 4923 </div> 4924 <div style="background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:20px;width:260px;"> 4925 <div style="font-size:24px;margin-bottom:8px;"> 4926 ð¯ 4927 </div> 4928 <h3 style="font-size:14px;font-weight:700;margin:0 0 6px;color:#0f172a !important;">Built for novices</h3> 4929 <p style="color:#475569;font-size:12px;line-height:1.5;margin:0;">Every module starts at zero. No assumptions about prior knowledge.</p> 4930 </div> 4931 <div style="background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:20px;width:260px;"> 4932 <div style="font-size:24px;margin-bottom:8px;"> 4933 ð 4934 </div> 4935 <h3 style="font-size:14px;font-weight:700;margin:0 0 6px;color:#0f172a !important;">Auto-graded challenges</h3> 4936 <p style="color:#475569;font-size:12px;line-height:1.5;margin:0;">Earn XP. AI evaluates every submission instantly.</p> 4937 </div> 4938 <div style="background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:20px;width:260px;"> 4939 <div style="font-size:24px;margin-bottom:8px;"> 4940 ð¬ 4941 </div> 4942 <h3 style="font-size:14px;font-weight:700;margin:0 0 6px;color:#0f172a !important;">Monthly live Q&A</h3> 4943 <p style="color:#475569;font-size:12px;line-height:1.5;margin:0;">Doubt-clarification sessions every month with the instructor.</p> 4944 </div> 4945 <div style="background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:20px;width:260px;"> 4946 <div style="font-size:24px;margin-bottom:8px;"> 4947 ð 4948 </div> 4949 <h3 style="font-size:14px;font-weight:700;margin:0 0 6px;color:#0f172a !important;">Certification</h3> 4950 <p style="color:#475569;font-size:12px;line-height:1.5;margin:0;">Verifiable certificate on completion of each course.</p> 4951 </div> 4952 </div> 4953 </div> 4954 </section> 4955 <section style="background:#050810 !important;padding:56px 16px;color:#f1f5f9 !important;"> 4956 <div style="max-width:800px;margin:0 auto;text-align:center;"> 4957 <h2 style="font-size:24px;font-weight:800;margin:0 0 24px;color:#f1f5f9 !important;">What students say</h2> 4958 <div style="display:flex;flex-wrap:wrap;gap:16px;justify-content:center;"> 4959 <div style="background:#111827;border:1px solid rgba(148,163,184,0.15);border-radius:12px;padding:20px;width:240px;text-align:left;"> 4960 <div style="color:#f59e0b;font-size:14px;margin-bottom:8px;"> 4961 âââââ 4962 </div> 4963 <p style="color:#cbd5e1;font-size:12px;line-height:1.5;margin:0 0 10px;font-style:italic;">"Best training for someone with zero PowerShell knowledge."</p> 4964 <strong style="color:#f1f5f9;font-size:11px;">â Karthik BV</strong> 4965 </div> 4966 <div style="background:#111827;border:1px solid rgba(148,163,184,0.15);border-radius:12px;padding:20px;width:240px;text-align:left;"> 4967 <div style="color:#f59e0b;font-size:14px;margin-bottom:8px;"> 4968 âââââ 4969 </div> 4970 <p style="color:#cbd5e1;font-size:12px;line-height:1.5;margin:0 0 10px;font-style:italic;">"Love the course, can't wait to make my own GUI from PowerShell."</p> 4971 <strong style="color:#f1f5f9;font-size:11px;">â Jason Mitchell Cole</strong> 4972 </div> 4973 <div style="background:#111827;border:1px solid rgba(148,163,184,0.15);border-radius:12px;padding:20px;width:240px;text-align:left;"> 4974 <div style="color:#f59e0b;font-size:14px;margin-bottom:8px;"> 4975 âââââ 4976 </div> 4977 <p style="color:#cbd5e1;font-size:12px;line-height:1.5;margin:0 0 10px;font-style:italic;">"Great course. Good starting point for automation."</p> 4978 <strong style="color:#f1f5f9;font-size:11px;">â Allan Laird</strong> 4979 </div> 4980 </div> 4981 </div> 4982 </section> 4983 <section style="background:#0a0f1a !important;padding:56px 16px;color:#f1f5f9 !important;"> 4984 <div style="max-width:800px;margin:0 auto;text-align:center;"> 4985 <span style="display:inline-block;background:rgba(239,68,68,0.12);color:#fca5a5;border:1px solid rgba(239,68,68,0.3);padding:5px 12px;border-radius:14px;font-size:11px;font-weight:600;letter-spacing:1.2px;margin-bottom:16px;">â¶ FREE CONTENT</span> 4986 <h2 style="font-size:clamp(20px,4vw,30px);font-weight:800;margin:0 0 10px;color:#f1f5f9 !important;">Free Videos on YouTube</h2> 4987 <p style="color:#cbd5e1;font-size:14px;line-height:1.7;margin:0 auto 20px;max-width:500px;">Watch free PowerShell tutorials and tips on our YouTube channel. Get a taste before enrolling.</p> 4988 <a href="https://home.powershellacademy.com/videos.html" target="_blank" style="display:inline-block;padding:13px 24px;background:rgba(239,68,68,0.12);border:1px solid rgba(239,68,68,0.3);color:#fca5a5;border-radius:10px;font-weight:700;font-size:14px;">â¶ Watch Free Videos</a> 4989 </div> 4990 </section> 4991 <footer style="background:#050810 !important;padding:32px 16px;border-top:1px solid rgba(148,163,184,0.1);text-align:center;"> 4992 <div style="display:flex;gap:16px;justify-content:center;flex-wrap:wrap;margin-bottom:16px;"> 4993 <a href="https://www.facebook.com/powershellacademy" target="_blank" style="color:#94a3b8;font-size:12px;">Facebook</a> 4994 <a href="https://www.linkedin.com/in/vishnu-gupthan-nair-09a12b31/" target="_blank" style="color:#94a3b8;font-size:12px;">LinkedIn</a> 4995 <a href="https://www.youtube.com/c/GraphyUniversity" target="_blank" style="color:#94a3b8;font-size:12px;">YouTube</a> 4996 <a href="https://play.google.com/store/apps/details?id=com.powershellacademy.learners" target="_blank" style="color:#94a3b8;font-size:12px;">Android App</a> 4997 </div> 4998 <div style="display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-bottom:12px;"> 4999 <a href="https://www.powershellacademy.com/privacypolicy" style="color:#64748b;font-size:11px;">Privacy</a> 5000 <a href="https://www.powershellacademy.com/termsofuse" style="color:#64748b;font-size:11px;">Terms</a> 5001 <a href="https://www.powershellacademy.com/contactus" style="color:#64748b;font-size:11px;">Contact</a> 5002 <a href="https://www.powershellacademy.com/refundpolicy" style="color:#64748b;font-size:11px;">Refund</a> 5003 </div> 5004 <p style="color:#475569;font-size:10px;">PowerShell Academy © 2026</p> 5005 </footer> 5006 <a href="https://www.powershellacademy.com/contactus" target="_blank" class="feedback-float" title="Feedback & Contact Us"> 5007 <svg viewbox="0 0 24 24" width="28" height="28" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> 5008 <path d="M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z"></path> 5009 </svg> </a> 5010 <a href="https://chat.whatsapp.com/EotpYGKYlZKDSKJWO6vCu8" target="_blank" class="whatsapp-float" title="Join our WhatsApp community"> 5011 <svg viewbox="0 0 32 32" width="32" height="32" fill="white"> 5012 <path d="M16 0C7.164 0 0 7.163 0 16c0 2.826.737 5.625 2.14 8.118L.294 30.828a.998.998 0 0 0 1.265 1.265l6.71-1.846A15.93 15.93 0 0 0 16 32c8.837 0 16-7.163 16-16S24.837 0 16 0zm0 29.333c-2.582 0-5.11-.75-7.285-2.159a1 1 0 0 0-.835-.124l-4.71 1.296 1.296-4.71a1 1 0 0 0-.124-.835A13.264 13.264 0 0 1 2.667 16C2.667 8.636 8.637 2.667 16 2.667S29.333 8.636 29.333 16 23.364 29.333 16 29.333z"></path> 5013 <path d="M23.543 19.466c-.312-.156-1.846-.91-2.132-1.013-.286-.104-.494-.156-.703.156s-.806.912-1.013 1.117c-.182.182-.39.208-.702.052-.52-.26-1.508-.556-2.873-1.773-1.06-.949-1.779-2.12-1.987-2.432-.208-.312-.026-.481.136-.636.14-.14.312-.364.468-.546.156-.182.208-.312.312-.52.104-.208.052-.39-.026-.546-.078-.156-.703-1.696-.963-2.32-.26-.624-.52-.52-.703-.52h-.598c-.208 0-.546.078-.832.39s-1.092 1.066-1.092 2.606c0 1.54 1.118 3.029 1.274 3.237.156.208 2.197 3.354 5.322 4.699.744.322 1.326.513 1.779.657.748.238 1.43.204 1.967.124.6-.09 1.846-.755 2.106-1.482.26-.728.26-1.352.182-1.482-.078-.13-.286-.208-.598-.364z"></path> 5014 </svg> </a> 5015 <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900" rel="stylesheet"> 5016 <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900" rel="stylesheet"> 5017 <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900" rel="stylesheet"> 5018 <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900" rel="stylesheet"> 5019 </body> 5020</html></div> 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037<div class="yogya-footer" style="display: flex !important;align-items:center;justify-content:center;clear:both;width: 100%;flex-direction: column; row-gap:30px; background: #F7F7F7; color: #232228; padding: 80px 10px;"> 5038 5039 5040 5041 5042 5043 5044 <a style="display: flex !important;align-items:center;justify-content:center;text-decoration: none !important;background: #000 !important;color: #fff !important;padding: 12px 20px !important;border-radius: 4px !important;font-size: 14px !important;font-weight: 600 !important;line-height: 20px !important;" rel="nofollow" href="https://graphy.com/products/create-and-sell-course-online?utm_campaign=p
5044owershellacademy0959&utm_source=gc&utm_device=website&gref=powershellacademy0959" target="_blank"><img alt="Launch your Graphy" style="height: 20px; width: 11px; margin-right: 12px;" src="/resources/images/grvector.svg">Launch your Graphy</a> 5045 <div class="text-center" style="font-size: 12px;font-weight: 400;line-height: 20px;letter-spacing: 0.015em;">100K+ creators trust <a href="https://graphy.com/products/create-and-sell-course-online?utm_campaign=powershellacademy0959&utm_source=gc&utm_device=website&gref=powershellacademy0959" target="_blank" rel="nofollow" style="color: #000 !important;text-decoration: underline !important;padding: 0 !important;font-size: inherit !important;">Graphy</a> to teach online</div> 5046 5047 5048 5049 5050 <div style="display: flex !important;align-items:center;justify-content:center;column-gap: 12px;"> 5051 <a href="https://www.facebook.com/powershellacademy" class="fbPage" target="_blank" style="text-decoration: none !important;color:#000 !important;font-size: inherit !important;height:24px;width:24px;border: 1px solid #E5E5E5;display: flex;align-items:center;justify-content:center;"><i class="fa-brands fa-facebook-f" style="font-size: 11px"></i></a> 5052 5053 5054 <a href="https://www.linkedin.com/in/vishnu-gupthan-nair-09a12b31/" class="linkedinPage" target="_blank" style="text-decoration: none !important;color:#000 !important;font-size: inherit !important;height:24px;width:24px;border: 1px solid #E5E5E5;display: flex;align-items:center;justify-content:center;" ><i class="fa-brands fa-linkedin-in" style="font-size: 11px"></i></a> 5055 5056 5057 </div> 5058 <div style="display: flex !important;align-items:center;justify-content:center;font-size: 14px;font-weight: 500;line-height: 20px;letter-spacing: 0.015em;column-gap: 12px;flex-wrap: wrap;"> 5059 <span>PowershellAcademy <i class="fa-regular fa-copyright"></i> 2026</span> <i class="fa-solid fa-circle" style="font-size: 4px;"></i> 5060 <a href="/privacypolicy" style="color: #232228 !important; padding: 0 !important;font-size: inherit !important;text-decoration: underline !important">Privacy policy</a> <i class="fa-solid fa-circle" style="font-size: 4px;"></i> 5061 <a href="/termsofuse" style="color: #232228 !important;padding: 0 !important;font-size: inherit !important;text-decoration: underline !important">Terms of use</a> <i class="fa-solid fa-circle" style="font-size: 4px;"></i> 5062 <a href="/contactus" style="color: #232228 !important;padding: 0 !important;font-size: inherit !important;text-decoration: underline !important">Contact us</a> <i class="fa-solid fa-circle" style="font-size: 4px;"></i> 5063 <a href="/refundpolicy" style="color: #232228 !important;padding: 0 !important;font-size: inherit !important;text-decoration: underline !important">Refund policy</a> 5064 </div> 5065</div> 5066 5067 5068 5069 5070 5071 5072 5073 5074 5075
5075<script type="text/javascript"> 5076 var coursesList = $("#courseslist, .itemsContainer"), blogsList = $("#blogslist"); 5077 if(coursesList.length > 0 && coursesList.html().replace(/[\s]/g, '') === "") { 5078 coursesList.addClass("columns").html("<div class='loading loading-lg centered'></div>"); 5079 store.allCourses.init(false, (coursesList.data("limit")===undefined?4:coursesList.data("limit"))); 5080 } 5081 if(blogsList.length > 0 && blogsList.html().replace(/[\s]/g, '') === "") { 5082 blogsList.addClass("columns").html("<div class='loading loading-lg centered'></div>"); 5083 var limit = (blogsList.data("limit")===undefined?4:blogsList.data("limit")), packet = { 5084 url: "/blog/json/get", 5085 data: {skip: 0, limit: limit}, 5086 success: function(data, params) { 5087 var template = _.template($("#blogcard-template").html()), html = "", blogs = data.data.blogs.data; 5088 5089 for(var i=0;i < blogs.length;i++) { 5090 html = html + template({item: blogs[i]}); 5091 } 5092 5093 blogsList.html(html);//.find("time.timeago").timeago(); 5094 } 5095 }; 5096 5097 getData(packet, {}); 5098 } 5099 </script>
5099 5100
5101<script src="https://d502jbuhuh9wk.cloudfront.net/resources/pagebuilder2/box/box.js" type="text/javascript"></script>
5101 5102 5103 5104 5105 5106 5107 5108 <div id="ui-notification-container" class="spectre"></div> 5109
5109<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/jquery-easing.js"></script>
5109 5110
5110<script src="https://d502jbuhuh9wk.cloudfront.net/resources/js/jquery-notification.js"></script>
5110 5111 5112 <!-- Import and configure the Firebase SDK --> 5113 <!-- These scripts are made available when the app is served or deployed on Firebase Hosting --> 5114 <!-- If you do not serve/host your project using Firebase Hosting see https://firebase.google.com/docs/web/setup --> 5115
5115<script src="https://www.gstatic.com/firebasejs/8.10.0/firebase-app.js"></script>
5115 5116
5116<script src="https://www.gstatic.com/firebasejs/8.10.0/firebase-messaging.js"></script>
5116 5117 5118
5118<script> 5119 // Retrieve Firebase Messaging object. 5120 var firebaseConfig = {"apiKey":"AIzaSyCQ2wNyeXrIzifB0IKKVCalHXrDk7pg32w","authDomain":"live-stream-chat-efac5.firebaseapp.com","databaseURL":"https://live-stream-chat-efac5.firebaseio.com","projectId":"live-stream-chat-efac5","storageBucket":"live-stream-chat-efac5.appspot.com","messagingSenderId":"158909475587","appId":"1:158909475587:web:93ede0a9feef2b3f"}; 5121 // Initialize Firebase 5122 firebase.initializeApp(firebaseConfig); 5123 const messaging = firebase.messaging(); 5124 // Add the public key generated from the console here. 5125 messaging.usePublicVapidKey("BN3BYOmWjo3NAW7if4jCE5cG-yIOXAvmoKB9k53ZssAfgb7Z6ZZ-oAQWFK7j6EqHIG3f-G9QAVKLOIK7Vw3X0_k"); 5126 5127 // Callback fired if Instance ID token is updated. 5128 messaging.onTokenRefresh(function(){ 5129 messaging.getToken().then(function(refreshedToken){ 5130 // Indicate that the new Instance ID token has not yet been sent to the 5131 // app server. 5132 setTokenSentToServer(false); 5133 // Send Instance ID token to app server. 5134 sendTokenToServer(refreshedToken); 5135 // Display new Instance ID token and clear UI of all previous messages. 5136 resetUI(); 5137 // [END_EXCLUDE] 5138 })["catch"](function(err){ 5139 console.log('Unable to retrieve refreshed token ', err); 5140 showToken('Unable to retrieve refreshed token ', err); 5141 requestPermission(); 5142 }); 5143 }); 5144 5145 // Handle incoming messages. Called when: 5146 // - a message is received while the app has focus 5147 // - the user clicks on an app notification created by a service worker 5148 // `messaging.setBackgroundMessageHandler` handler. 5149 messaging.onMessage(function(payload){ 5150 console.log('Message received. ', payload); 5151 appendMessage(payload); 5152 }); 5153 5154 function resetUI() { 5155 clearMessages(); 5156 $(function(){ 5157 $("#ui-notification-container").notification(); 5158 }); 5159 // Get Instance ID token. Initially this makes a network call, once retrieved 5160 // subsequent calls to getToken will return from cache. 5161 messaging.getToken().then(function(currentToken) { 5162 if (currentToken) { 5163 sendTokenToServer(currentToken); 5164 updateUIForPushEnabled(currentToken); 5165 } else { 5166 // Show permission request. 5167 console.log('No Instance ID token available. Request permission to generate one.'); 5168 // Show permission UI. 5169 updateUIForPushPermissionRequired(); 5170 setTokenSentToServer(false); 5171 } 5172 })["catch"](function(err) { 5173 console.log('An error occurred while retrieving token. ', err); 5174 showToken('Error retrieving Instance ID token. ', err); 5175 setTokenSentToServer(false); 5176 }); 5177 // [END get_token] 5178 } 5179 5180 function showToken(currentToken) { 5181 // Show token in console and UI. 5182 console.log(currentToken); 5183 } 5184 5185 // Send the Instance ID token your application server, so that it can: 5186 // - send messages back to this app 5187 // - subscribe/unsubscribe the token from topics 5188 function sendTokenToServer(currentToken) { 5189 if (!isTokenSentToServer()) { 5190 console.log('Sending token to server...'); 5191 var packet = { 5192 url : "/public/v1/fcm/token", 5193 data: {token: currentToken}, 5194 success: function(data, params) { 5195 console.log("Token successfully sent") 5196 setTokenSentToServer(true); 5197 setTokenSentToServerUserId(window.userId); 5198 } 5199 }; 5200 postData(packet, {}); 5201 } else { 5202 console.log('Token already sent to server so won\'t send it again ' + 5203 'unless it changes'); 5204 } 5205 5206 } 5207 5208 function isTokenSentToServer() { 5209 return window.localStorage.getItem('sentToServer') === '1' && isTokenSentToServerWithUser(window.userId); 5210 } 5211 5212 function isTokenSentToServerWithUser(userId) { 5213 return window.localStorage.getItem('sentToServer-user') === userId; 5214 } 5215 5216 function setTokenSentToServer(sent) { 5217 window.localStorage.setItem('sentToServer', sent ? '1' : '0'); 5218 } 5219 5220 function setTokenSentToServerUserId(userId) { 5221 window.localStorage.setItem('sentToServer-user', userId); 5222 } 5223 5224 function requestPermission() { 5225 console.log('Requesting permission...'); 5226 // [START request_permission] 5227 Notification.requestPermission().then(function(permission) { 5228 if (permission === 'granted') { 5229 console.log('Notification permission granted.'); 5230 resetUI(); 5231 } else { 5232 console.log('Unable to get permission to notify.'); 5233 } 5234 }); 5235 // [END request_permission] 5236 } 5237 5238 function deleteToken() { 5239 // Delete Instance ID token. 5240 // [START delete_token] 5241 messaging.getToken().then(function(currentToken){ 5242 messaging.deleteToken(currentToken).then(function(){ 5243 console.log('Token deleted.'); 5244 setTokenSentToServer(false); 5245 // Once token is deleted update UI. 5246 resetUI(); 5247 })["catch"](function(err) { 5248 console.log('Unable to delete token. ', err); 5249 }); 5250 })["catch"](function(err) { 5251 console.log('Error retrieving Instance ID token. ', err); 5252 showToken('Error retrieving Instance ID token. ', err); 5253 }); 5254 5255 } 5256 5257 // Add a message to the messages element. 5258 function appendMessage(payload) { 5259 $("#ui-notification-container").notification("create", { 5260 title: payload.data.title, 5261 content: payload.data.message, 5262 customIcon: payload.data.customIcon, 5263 customImage: payload.data.customImage, 5264 link: payload.data.link 5265 }, 5266 { 5267 sticky: true 5268 }); 5269 } 5270 5271 // Clear the messages element of all children. 5272 function clearMessages() { 5273 const messagesElement = document.querySelector('#ui-notification-container'); 5274 while (messagesElement.hasChildNodes()) { 5275 messagesElement.removeChild(messagesElement.lastChild); 5276 } 5277 } 5278 5279 function updateUIForPushEnabled(currentToken) { 5280 showToken("Token update ui: " + currentToken); 5281 } 5282 5283 function updateUIForPushPermissionRequired() { 5284 console.warg("Push notification permission is requred") 5285 } 5286 5287 window.userId = ""; 5288 resetUI(); 5289 5290 5291 </script>
5291 5292 5293
5294<script src="https://d502jbuhuh9wk.cloudfront.net/static/files/lazyload.min.js"></script>
vendor: 1 bytes, line 5294
5294
5295<script type="text/javascript"> 5296 var lazyLoadInstance = new LazyLoad({ 5297 unobserve_entered: true, 5298 callback_enter: function(element) { 5299 resizeCdnImage(element); 5300 } 5301 }); 5302</script>
5302 5303</body> 5304</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.