CINXE.COM

REVIEWS.io

<!DOCTYPE html> <html lang="en"> <head> <script> // Check lang on home page and redirect to German homepage if((window.location.pathname == '/' || window.location.pathname == '') && window.location.hostname.indexOf('ai.reviews.')==-1) { var language = window.navigator.userLanguage || window.navigator.language; if(language.includes('de')) { window.location.href = '/de'; } } </script> <title>REVIEWS.io</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"><script type="text/javascript">(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:"601506419",accountID:"4660531",trustKey:"4660531",xpid:"UAABUVNQCRAFUVFXBAABXlc=",licenseKey:"NRJS-a34ab2cc067f356d5ca",applicationID:"550531683"};;/*! For license information please see nr-loader-spa-1.274.0.min.js.LICENSE.txt */ (()=>{var e,t,r={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)),o=0===Object.keys(r).length?e:r;for(let a in o)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]])):"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555:(e,t,r)=>{"use strict";r.d(t,{Vp:()=>c,fn:()=>s,x1:()=>u});var n=r(384),i=r(8122);const o={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},a={};function s(e){try{const t=c(e);return!!t.licenseKey&&!!t.errorBeacon&&!!t.applicationID}catch(e){return!1}}function c(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function u(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.info=a[e])}},9417:(e,t,r)=>{"use strict";r.d(t,{D0:()=>h,gD:()=>g,xN:()=>p});var n=r(993);const i=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var o=r(2614),a=r(944),s=r(384),c=r(8122);const u="[data-nr-mask]",d=()=>{const e={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,harvestTimeSeconds:10,autoStart:!0},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},feature_flags:[],generic_events:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},harvest:{tooManyRequestsDelay:60},jserrors:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},logging:{enabled:!0,harvestTimeSeconds:10,autoStart:!0,level:n.p_.INFO},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:o.wk,inactiveMs:o.BB},session_replay:{autoStart:!0,enabled:!1,harvestTimeSeconds:60,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){i(t)?e.mask_selector="".concat(t,",").concat(u):""===t||null===t?e.mask_selector=u:(0,a.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){i(t)?e.block_selector+=",".concat(t):""!==t&&(0,a.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,a.R)(7,t)}},session_trace:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},soft_navigations:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},spa:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},ssl:void 0,user_actions:{enabled:!0}}},l={},f="All configuration objects require an agent identifier!";function h(e){if(!e)throw new Error(f);if(!l[e])throw new Error("Configuration for ".concat(e," was never set"));return l[e]}function p(e,t){if(!e)throw new Error(f);l[e]=(0,c.a)(t,d());const r=(0,s.nY)(e);r&&(r.init=l[e])}function g(e,t){if(!e)throw new Error(f);var r=h(e);if(r){for(var n=t.split("."),i=0;i<n.length-1;i++)if("object"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}},5603:(e,t,r)=>{"use strict";r.d(t,{a:()=>c,o:()=>s});var n=r(384),i=r(8122);const o={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},a={};function s(e){if(!e)throw new Error("All loader-config objects require an agent identifier!");if(!a[e])throw new Error("LoaderConfig for ".concat(e," was never set"));return a[e]}function c(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.loader_config=a[e])}},3371:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,f:()=>l});var n=r(8122),i=r(384),o=r(6154),a=r(9324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},u={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0},d={};function l(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!d[e])throw new Error("Runtime for ".concat(e," was never set"));return d[e]}function f(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");d[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(d[e],"harvestCount")||Object.defineProperty(d[e],"harvestCount",{get:()=>++s});const r=(0,i.nY)(e);r&&(r.runtime=d[e])}},9324:(e,t,r)=>{"use strict";r.d(t,{F3:()=>i,Xs:()=>o,Yq:()=>a,xv:()=>n});const n="1.274.0",i="PROD",o="CDN",a="^2.0.0-alpha.17"},6154:(e,t,r)=>{"use strict";r.d(t,{A4:()=>s,OF:()=>d,RI:()=>i,WN:()=>h,bv:()=>o,gm:()=>a,lR:()=>f,m:()=>u,mw:()=>c,sb:()=>l});var n=r(1863);const i="undefined"!=typeof window&&!!window.document,o="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),s="complete"===a?.document?.readyState,c=Boolean("hidden"===a?.document?.visibilityState),u=""+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),l=d&&"undefined"==typeof SharedWorker,f=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),h=Date.now()-(0,n.t)()},7295:(e,t,r)=>{"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>o});var n=[];function i(e){if(!e||o(e))return!1;if(0===n.length)return!0;for(var t=0;t<n.length;t++){var r=n[t];if("*"===r.hostname)return!1;if(s(r.hostname,e.hostname)&&c(r.pathname,e.pathname))return!1}return!0}function o(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;0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let o,a;i>0?(o=r.substring(0,i),a=r.substring(i)):(o=r,a="");let[s]=o.split(":");n.push({hostname:s,pathname:a})}}function s(e,t){return!(e.length>t.length)&&t.indexOf(e)===t.length-e.length}function c(e,t){return 0===e.indexOf("/")&&(e=e.substring(1)),0===t.indexOf("/")&&(t=t.substring(1)),""===e||e===t}},1687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>c,Ze:()=>l,x3:()=>u});var n=r(7836),i=r(3606),o=r(860),a=r(2646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};d(e),s[e].get(t)||s[e].set(t,r)}function u(e,t){e&&s[e]&&(s[e].get(t)&&s[e].delete(t),h(e,t,!1),s[e].size&&f(e))}function d(e){if(!e)throw new Error("agentIdentifier required");s[e]||(s[e]=new Map)}function l(e="",t="feature",r=!1){if(d(e),!e||!s[e].get(t)||r)return h(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=>t.staged))&&(t.sort(((e,t)=>e[1].priority-t[1].priority)),t.forEach((([t])=>{s[e].delete(t),h(e,t)})))}function h(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted&&o.backlog&&s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e&&t<e.length;++t)p(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].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit("drain-"+t,[])}}function p(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],o=e[2];n.apply(i,o)}}))}},7836:(e,t,r)=>{"use strict";r.d(t,{P:()=>c,ee:()=>u});var n=r(384),i=r(8990),o=r(3371),a=r(2646),s=r(5607);const c="nr@context:".concat(s.W),u=function e(t,r){var n={},s={},d={},l=!1;try{l=16===r.length&&(0,o.f)(r).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,o){!1!==o&&(o=!0);if(u.aborted&&!i)return;t&&o&&t.emit(e,r,n);for(var a=h(n),c=g(e),d=c.length,l=0;l<d;l++)c[l].apply(a,r);var p=v()[s[e]];p&&p.push([f,e,r,a]);return a},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])=>{s[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()[s[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 a.y?e:e?(0,i.I)(e,c,(()=>new a.y(c))):new a.y(c)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return d[t]=d[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=u)},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,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var n=r(9908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.d);var a=t[o]=t[o]||{};(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 o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>o,jT:()=>n,sp:()=>i})},5607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(9566).bz)()},9566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>s,ZF:()=>c,bz:()=>a,el:()=>u});var n=r(6154);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),i.split("").map((e=>"x"===e?o(t,r++).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var s=0;s<e;s++)a.push(o(r,i++).toString(16));return a.join("")}function c(){return s(16)}function u(){return s(32)}},2614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>a,H3:()=>n,g:()=>u,iL:()=>c,tS:()=>s,uh:()=>i,wk:()=>o});const n="NRBA",i="SESSION",o=144e5,a=18e5,s={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},c={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},u={OFF:0,FULL:1,ERROR:2}},1863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},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{}}}},944:(e,t,r)=>{"use strict";function n(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)}r.d(t,{R:()=>n})},5284:(e,t,r)=>{"use strict";r.d(t,{t:()=>c,B:()=>s});var n=r(7836),i=r(6154);const o="newrelic";const a=new Set,s={};function c(e,t){const r=n.ee.get(t);s[t]??={},e&&"object"==typeof e&&(a.has(t)||(r.emit("rumresp",[e]),s[t]=e,a.add(t),function(e={}){try{i.gm.dispatchEvent(new CustomEvent(o,{detail:e}))}catch(e){}}({loaded:!0})))}},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})},3304:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(7836);const i=()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}};function o(e){try{return JSON.stringify(e,i())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},5289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,sB:()=>a});var n=r(3878);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)("load",e,t)}function a(e){if(i())return e();(0,n.DD)("DOMContentLoaded",e)}},384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>o,US:()=>d,Zm:()=>a,bQ:()=>c,dV:()=>s,nY:()=>u,pV:()=>l});var n=r(6154),i=r(1863);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,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}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function u(e){let t=a();return t.initializedAgents?.[e]}function d(e,t){a()[e]=t}function l(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},2843:(e,t,r)=>{"use strict";r.d(t,{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)}},8139:(e,t,r)=>{"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),o=r(8990),a=r(6154);const s={},c=a.gm.XMLHttpRequest,u="addEventListener",d="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e){var t=function(e){return(e||n.ee).get("events")}(e);if(s[t.debugId]++)return t;s[t.debugId]=1;var r=(0,i.YM)(t,!0);function f(e){r.inPlace(e,[u,d],"-",p)}function p(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,f),h(a.gm,f),h(c.prototype,f)),t.on(u+"-start",(function(e,t){var n=e[1];if(null!==n&&("function"==typeof n||"object"==typeof n)){var i=(0,o.I)(n,l,(function(){var e={object:function(){if("function"!=typeof n.handleEvent)return;return n.handleEvent.apply(n,arguments)},function:n}[typeof n];return e?r(e,"fn-",null,e.name||"anonymous"):n}));this.wrapped=e[1]=i}})),t.on(d+"-start",(function(e){e[1]=this.wrapped||e[1]})),t}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,u);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434:(e,t,r)=>{"use strict";r.d(t,{Jt:()=>o,YM:()=>c});var n=r(7836),i=r(5607);const o="nr@original:".concat(i.W);var a=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");const a="-"===n.charAt(0);for(let s=0;s<t.length;s++){const c=t[s],u=e[c];d(u)||(e[c]=r(u,a?c+n:n,i,c,o))}},r.flag=o,r;function r(t,r,n,s,c){return d(t)?t:(r||(r=""),nrWrapper[o]=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)a.call(e,n)&&(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,a,d,l;try{a=this,o=[...arguments],d="function"==typeof n?n(o,a):n||{}}catch(t){u([t,"",[o,a,s],d],e)}i(r+"start",[o,a,s],d,c);try{return l=t.apply(a,o)}catch(e){throw i(r+"err",[o,a,e],d,c),e}finally{i(r+"end",[o,a,l],d,c)}}}function i(r,n,i,o){if(!s||t){var a=s;s=!0;try{e.emit(r,n,i,t,o)}catch(t){u([t,r,n,i],e)}s=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function d(e){return!(e&&"function"==typeof e&&e.apply&&!e[o])}},9300:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.ajax},3333:(e,t,r)=>{"use strict";r.d(t,{TZ:()=>n,Zp:()=>i,mq:()=>s,nf:()=>a,qN:()=>o});const n=r(860).K7.genericEvents,i=["auxclick","click","copy","keydown","paste","scrollend"],o=["focus","blur"],a=4,s=1e3},6774:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.jserrors},993:(e,t,r)=>{"use strict";r.d(t,{ET:()=>o,TZ:()=>a,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o="log",a=n.K7.logging},3785:(e,t,r)=>{"use strict";r.d(t,{R:()=>c,b:()=>u});var n=r(9908),i=r(1863),o=r(860),a=r(3969),s=r(993);function c(e,t,r={},c=s.p_.INFO){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,o.K7.metrics,e),(0,n.p)(s.ET,[(0,i.t)(),t,r,c],void 0,o.K7.logging,e)}function u(e){return"string"==typeof e&&Object.values(s.p_).some((t=>t===e.toUpperCase().trim()))}},3969:(e,t,r)=>{"use strict";r.d(t,{TZ:()=>n,XG:()=>s,rs:()=>i,xV:()=>a,z_:()=>o});const n=r(860).K7.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},6630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},6344:(e,t,r)=>{"use strict";r.d(t,{BB:()=>d,G4:()=>o,Qb:()=>l,TZ:()=>i,Ug:()=>a,_s:()=>s,bc:()=>u,yP:()=>c});var n=r(2614);const i=r(860).K7.sessionReplay,o={RECORD:"recordReplay",PAUSE:"pauseReplay",REPLAY_RUNNING:"replayRunning",ERROR_DURING_REPLAY:"errorDuringReplay"},a=.12,s={DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},c={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0},u={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"}},d=5e3,l={API:"api"}},5270:(e,t,r)=>{"use strict";r.d(t,{Aw:()=>c,CT:()=>u,SR:()=>s});var n=r(384),i=r(9417),o=r(7767),a=r(6154);function s(e){return!!(0,n.dV)().o.MO&&(0,o.V)(e)&&!0===(0,i.gD)(e,"session_trace.enabled")}function c(e){return!0===(0,i.gD)(e,"session_replay.preload")&&s(e)}function u(e,t){const r=t.correctAbsoluteTimestamp(e);return{originalTimestamp:e,correctedTimestamp:r,timestampDiff:e-r,originTime:a.WN,correctedOriginTime:t.correctedOriginTime,originTimeDiff:Math.floor(a.WN-t.correctedOriginTime)}}},3738:(e,t,r)=>{"use strict";r.d(t,{He:()=>i,Kp:()=>s,Lc:()=>u,Rz:()=>d,TZ:()=>n,bD:()=>o,d3:()=>a,jx:()=>l,uP:()=>c});const n=r(860).K7.sessionTrace,i="bstResource",o="resource",a="-start",s="-end",c="fn"+a,u="fn"+s,d="pushState",l=1e3},3962:(e,t,r)=>{"use strict";r.d(t,{AM:()=>o,O2:()=>s,Qu:()=>c,TZ:()=>a,ih:()=>u,tC:()=>i});var n=r(860);const i=["click","keydown","submit"],o="api",a=n.K7.softNav,s={INITIAL_PAGE_LOAD:"",ROUTE_CHANGE:1,UNSPECIFIED:2},c={INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},u={IP:"in progress",FIN:"finished",CAN:"cancelled"}},7378:(e,t,r)=>{"use strict";r.d(t,{$p:()=>x,BR:()=>b,Kp:()=>R,L3:()=>y,Lc:()=>c,NC:()=>o,SG:()=>d,TZ:()=>i,U6:()=>p,UT:()=>m,d3:()=>w,dT:()=>f,e5:()=>A,gx:()=>v,l9:()=>l,oW:()=>h,op:()=>g,rw:()=>u,tH:()=>E,uP:()=>s,wW:()=>T,xq:()=>a});var n=r(384);const i=r(860).K7.spa,o=["click","submit","keypress","keydown","keyup","change"],a=999,s="fn-start",c="fn-end",u="cb-start",d="api-ixn-",l="remaining",f="interaction",h="spaNode",p="jsonpNode",g="fetch-start",m="fetch-done",v="fetch-body-",b="jsonp-end",y=(0,n.dV)().o.ST,w="-start",R="-end",x="-body",T="cb"+R,A="jsTime",E="fetch"},4234:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(7836),i=r(1687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},7767:(e,t,r)=>{"use strict";r.d(t,{V:()=>o});var n=r(9417),i=r(6154);const o=e=>i.RI&&!0===(0,n.gD)(e,"privacy.cookies_enabled")},425:(e,t,r)=>{"use strict";r.d(t,{j:()=>j});var n=r(860),i=r(2555),o=r(3371),a=r(9908),s=r(7836),c=r(1687),u=r(5289),d=r(6154),l=r(944),f=r(3969),h=r(384),p=r(6344);const g=["setErrorHandler","finished","addToTrace","addRelease","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId","setApplicationVersion","start",p.G4.RECORD,p.G4.PAUSE,"log","wrapLogger"],m=["setErrorHandler","finished","addToTrace","addRelease"];var v=r(1863),b=r(2614),y=r(993),w=r(3785),R=r(2646),x=r(3434);function T(e,t,r,n){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const i=function(e){return(e||s.ee).get("logger")}(e),o=(0,x.YM)(i),a=new R.y(s.P);return a.level=n.level,a.customAttributes=n.customAttributes,o.inPlace(t,[r],"wrap-logger-",a),i}function A(){const e=(0,h.pV)();g.forEach((t=>{e[t]=(...r)=>function(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=>{e&&e.api?e.exposed&&e.api[t]&&n.push(e.api[t](...r)):(0,l.R)(38,t)})),n.length>1?n:n[0]}(t,...r)}))}const E={};var S=r(9417),N=r(5603),O=r(5284);const _=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let I=!1;function j(e,t={},g,R){let{init:x,info:j,loader_config:P,runtime:C={},exposed:k=!0}=t;C.loaderType=g;const L=(0,h.pV)();j||(x=L.init,j=L.info,P=L.loader_config),(0,S.xN)(e.agentIdentifier,x||{}),(0,N.a)(e.agentIdentifier,P||{}),j.jsAttributes??={},d.bv&&(j.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,j);const H=(0,S.D0)(e.agentIdentifier),D=[j.beacon,j.errorBeacon];I||(H.proxy.assets&&(_(H.proxy.assets),D.push(H.proxy.assets)),H.proxy.beacon&&D.push(H.proxy.beacon),A(),(0,h.US)("activatedFeatures",O.B),e.runSoftNavOverSpa&&=!0===H.soft_navigations.enabled&&H.feature_flags.includes("soft_nav")),C.denyList=[...H.ajax.deny_list||[],...H.ajax.block_internal?D:[]],C.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,C),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api&&(e.api=function(e,t,h=!1){t||(0,c.Ak)(e,"api");const g={};var R=s.ee.get(e),x=R.get("tracer");E[e]=b.g.OFF,R.on(p.G4.REPLAY_RUNNING,(t=>{E[e]=t}));var A="api-",S=A+"ixn-";function N(t,r,n,o){const a=(0,i.Vp)(e);return null===r?delete a.jsAttributes[t]:(0,i.x1)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),I(A,n,!0,o||null===r?"session":void 0)(t,r)}function O(){}g.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,["API/log/called"],void 0,n.K7.metrics,R),(0,w.R)(R,e,t,r)},g.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=>{(0,a.p)(f.xV,["API/wrapLogger/called"],void 0,n.K7.metrics,R),T(R,e,t,{customAttributes:r,level:i})},m.forEach((e=>{g[e]=I(A,e,!0,"api")})),g.addPageAction=I(A,"addPageAction",!0,n.K7.genericEvents),g.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,o.f)(e).customTransaction=(r||"http://custom.transaction")+t,I(A,"setPageViewName",!0)()},g.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return N(e,t,"setCustomAttribute",r);(0,l.R)(40,typeof t)}else(0,l.R)(39,typeof e)},g.setUserId=function(e){if("string"==typeof e||null===e)return N("enduser.id",e,"setUserId",!0);(0,l.R)(41,typeof e)},g.setApplicationVersion=function(e){if("string"==typeof e||null===e)return N("application.version",e,"setApplicationVersion",!1);(0,l.R)(42,typeof e)},g.start=()=>{try{(0,a.p)(f.xV,["API/start/called"],void 0,n.K7.metrics,R),R.emit("manual-start-all")}catch(e){(0,l.R)(23,e)}},g[p.G4.RECORD]=function(){(0,a.p)(f.xV,["API/recordReplay/called"],void 0,n.K7.metrics,R),(0,a.p)(p.G4.RECORD,[],void 0,n.K7.sessionReplay,R)},g[p.G4.PAUSE]=function(){(0,a.p)(f.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,R),(0,a.p)(p.G4.PAUSE,[],void 0,n.K7.sessionReplay,R)},g.interaction=function(e){return(new O).get("object"==typeof e?e:{})};const _=O.prototype={createTracer:function(e,t){var r={},i=this,o="function"==typeof t;return(0,a.p)(f.xV,["API/createTracer/called"],void 0,n.K7.metrics,R),h||(0,a.p)(S+"tracer",[(0,v.t)(),e,r],i,n.K7.spa,R),function(){if(x.emit((o?"":"no-")+"fn-start",[(0,v.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw x.emit("fn-err",[arguments,this,t],r),t}finally{x.emit("fn-end",[(0,v.t)()],r)}}}};function I(e,t,r,i){return function(){return(0,a.p)(f.xV,["API/"+t+"/called"],void 0,n.K7.metrics,R),i&&(0,a.p)(e+t,[(0,v.t)(),...arguments],r?null:this,i,R),r?void 0:this}}function j(){r.e(478).then(r.bind(r,8778)).then((({setAPI:t})=>{t(e),(0,c.Ze)(e,"api")})).catch((e=>{(0,l.R)(27,e),R.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{_[e]=I(S,e,void 0,h?n.K7.softNav:n.K7.spa)})),g.setCurrentRouteName=h?I(S,"routeName",void 0,n.K7.softNav):I(A,"routeName",!0,n.K7.spa),g.noticeError=function(t,r){"string"==typeof t&&(t=new Error(t)),(0,a.p)(f.xV,["API/noticeError/called"],void 0,n.K7.metrics,R),(0,a.p)("err",[t,(0,v.t)(),!1,r,!!E[e]],void 0,n.K7.jserrors,R)},d.RI?(0,u.GG)((()=>j()),!0):j(),g}(e.agentIdentifier,R,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=k),I=!0}},8374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>o,K7:()=>n,P3:()=>i});const n={ajax:"ajax",genericEvents:"generic_events",jserrors:"jserrors",logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations",spa:"spa"},i={[n.pageViewEvent]:1,[n.pageViewTiming]:2,[n.metrics]:3,[n.jserrors]:4,[n.spa]:5,[n.ajax]:6,[n.sessionTrace]:7,[n.softNav]:8,[n.sessionReplay]:9,[n.logging]:10,[n.genericEvents]:11},o={[n.pageViewTiming]:"events",[n.ajax]:"events",[n.spa]:"events",[n.softNav]:"events",[n.metrics]:"jserrors",[n.jserrors]:"jserrors",[n.sessionTrace]:"browser/blobs",[n.sessionReplay]:"browser/blobs",[n.logging]:"browser/logs",[n.genericEvents]:"ins"}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>({212:"nr-spa-compressor",249:"nr-spa-recorder",478:"nr-spa"}[e]+"-1.274.0.min.js"),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.274.0.PROD:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d<u.length;d++){var l=u[d];if(l.getAttribute("src")==r||l.getAttribute("data-webpack")==t+o){s=l;break}}if(!s){c=!0;var f={478:"sha512-1vUqEfJPB8Pihje9mv5CfYgkitO1FWcS+UQb84DbXqP8oYctRv4/lzl/MzNLPlRhcY1WVDBGL20I8vm6s2VV7g==",249:"sha512-Y/BeZAh6VSTmUtUNmS5XdyKxL92s30Fyyj8xVW76HSPxcKItL4+x2+kGMZc8pMJnUpZDz1L4eftZQAJh3D8NnA==",212:"sha512-Gn2tQ3qog5Yhrx/gRutkSTYPp+7nkKFt4/mIXg99LxcNpMDAYJZDBYmAACdoHNM86+iq1F3cBcQotFNzjIX8bw=="};(s=document.createElement("script")).charset="utf-8",s.timeout=120,i.nc&&s.setAttribute("nonce",i.nc),s.setAttribute("data-webpack",t+o),s.src=r,0!==s.src.indexOf(window.location.origin+"/")&&(s.crossOrigin="anonymous"),f[a]&&(s.integrity=f[a])}e[r]=[n];var h=(t,n)=>{s.onerror=s.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},p=setTimeout(h.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=h.bind(null,s.onerror),s.onload=h.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="https://js-agent.newrelic.com/",(()=>{var e={38:0,788:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u<a.length;u++)o=a[u],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self["webpackChunk:NRBA-1.274.0.PROD"]=self["webpackChunk:NRBA-1.274.0.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(8374);var e=i(944),t=i(6344),r=i(9566);class n{agentIdentifier;constructor(e=(0,r.LA)(16)){this.agentIdentifier=e}#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e("addPageAction",e,t)}setPageViewName(e,t){return this.#e("setPageViewName",e,t)}setCustomAttribute(e,t,r){return this.#e("setCustomAttribute",e,t,r)}noticeError(e,t){return this.#e("noticeError",e,t)}setUserId(e){return this.#e("setUserId",e)}setApplicationVersion(e){return this.#e("setApplicationVersion",e)}setErrorHandler(e){return this.#e("setErrorHandler",e)}addRelease(e,t){return this.#e("addRelease",e,t)}log(e,t){return this.#e("log",e,t)}}class o extends n{#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}start(){return this.#e("start")}finished(e){return this.#e("finished",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e("addToTrace",e)}setCurrentRouteName(e){return this.#e("setCurrentRouteName",e)}interaction(){return this.#e("interaction")}wrapLogger(e,t,r){return this.#e("wrapLogger",e,t,r)}}var a=i(860),s=i(9417);const c=Object.values(a.K7);function u(e){const t={};return c.forEach((r=>{t[r]=function(e,t){return!0===(0,s.gD)(t,"".concat(e,".enabled"))}(r,e)})),t}var d=i(425);var l=i(1687),f=i(4234),h=i(5289),p=i(6154),g=i(5270),m=i(7767),v=i(6389);class b extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart&&(this.auto=!1),this.auto?(0,l.Ak)(e.agentIdentifier,t):this.ee.on("manual-start-all",(0,v.J)((()=>{(0,l.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let o;try{if((0,m.V)(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(478).then(i.bind(i,6526));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit("internal-error",[t]),this.featureName===a.K7.sessionReplay&&this.abortHandler?.()}try{if(t.sharedAggregator)await t.sharedAggregator;else{t.sharedAggregator=i.e(478).then(i.bind(i,9337));const{EventAggregator:e}=await t.sharedAggregator;t.sharedAggregator=new e}if(!this.#t(this.featureName,o))return(0,l.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(478).then(i.bind(i,6103)),{Aggregate:a}=await e(this.featureName,"aggregate");this.featAggregate=new a(t,r),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,l.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee&&this.ee.abort()}};p.RI?(0,h.GG)((()=>o()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return(0,g.SR)(this.agentIdentifier)&&!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var y=i(6630);class w extends b{static featureName=y.T;constructor(e,t=!0){super(e,y.T,t),this.importAggregator(e)}}var R=i(384);var x=i(9908),T=i(2843),A=i(3878),E=i(782),S=i(1863);class N extends b{static featureName=E.T;constructor(e,t=!0){super(e,E.T,t),p.RI&&((0,T.u)((()=>(0,x.p)("docHidden",[(0,S.t)()],void 0,E.T,this.ee)),!0),(0,A.sp)("pagehide",(()=>(0,x.p)("winPagehide",[(0,S.t)()],void 0,E.T,this.ee))),this.importAggregator(e))}}var O=i(3969);class _ extends b{static featureName=O.TZ;constructor(e,t=!0){super(e,O.TZ,t),this.importAggregator(e)}}var I=i(6774),j=i(3304);class P{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,j.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function C(e){return H(e)?e:new P(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic)}function k(e){const t="Unhandled Promise Rejection";if(!e?.reason)return;if(H(e.reason))try{return e.reason.message=t+": "+e.reason.message,C(e.reason)}catch(t){return C(e.reason)}const r=C(e.reason);return r.message=t+": "+r?.message,r}function L(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new P(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic);return t.name=SyntaxError.name,t}return H(e.error)?e.error:C(e)}function H(e){return e instanceof Error&&!!e.stack}class D extends b{static featureName=I.T;#r=!1;constructor(e,r=!0){super(e,I.T,r);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",(e=>{this.abortHandler&&(0,x.p)("ierr",[C(e),(0,S.t)(),!0,{},this.#r],void 0,this.featureName,this.ee)})),this.ee.on(t.G4.REPLAY_RUNNING,(e=>{this.#r=e})),p.gm.addEventListener("unhandledrejection",(e=>{this.abortHandler&&(0,x.p)("err",[k(e),(0,S.t)(),!1,{unhandledPromiseRejection:1},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),p.gm.addEventListener("error",(e=>{this.abortHandler&&(0,x.p)("err",[L(e),(0,S.t)(),!1,{},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e)}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var M=i(8990);let K=1;const U="nr@id";function V(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===p.gm?0:(0,M.I)(e,U,(function(){return K++}))}function G(e){if("string"==typeof e&&e.length)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,j.A)(e).length}catch(e){return}}}var F=i(8139),B=i(7836),W=i(3434);const z={},q=["open","send"];function Z(t){var r=t||B.ee;const n=function(e){return(e||B.ee).get("xhr")}(r);if(z[n.debugId]++)return n;z[n.debugId]=1,(0,F.u)(r);var i=(0,W.YM)(n),o=p.gm.XMLHttpRequest,a=p.gm.MutationObserver,s=p.gm.Promise,c=p.gm.setInterval,u="readystatechange",d=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],l=[],f=p.gm.XMLHttpRequest=function(t){const r=new o(t),a=n.context(r);try{n.emit("new-xhr",[r],a),r.addEventListener(u,(s=a,function(){var e=this;e.readyState>3&&!s.resolved&&(s.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,d,"fn-",y)}),(0,A.jT)(!1))}catch(t){(0,e.R)(15,t);try{n.emit("internal-error",[t])}catch(e){}}var s;return r};function h(e,t){i.inPlace(t,["onreadystatechange"],"fn-",y)}if(function(e,t){for(var r in e)t[r]=e[r]}(o,f),f.prototype=o.prototype,i.inPlace(f.prototype,q,"-xhr-",y),n.on("send-xhr-start",(function(e,t){h(e,t),function(e){l.push(e),a&&(g?g.then(b):c?c(b):(m=-m,v.data=m))}(t)})),n.on("open-xhr-start",h),a){var g=s&&s.resolve();if(!c&&!s){var m=1,v=document.createTextNode(m);new a(b).observe(v,{characterData:!0})}}else r.on("fn-end",(function(e){e[0]&&e[0].type===u||b()}));function b(){for(var e=0;e<l.length;e++)h(0,l[e]);l.length&&(l=[])}function y(e,t){return t}return n}var Y="fetch-",X=Y+"body-",J=["arrayBuffer","blob","json","text","formData"],Q=p.gm.Request,ee=p.gm.Response,te="prototype";const re={};function ne(e){const t=function(e){return(e||B.ee).get("fetch")}(e);if(!(Q&&ee&&p.gm.fetch))return t;if(re[t.debugId]++)return t;function r(e,r,n){var i=e[r];"function"==typeof i&&(e[r]=function(){var e,r=[...arguments],o={};t.emit(n+"before-start",[r],o),o[B.P]&&o[B.P].dt&&(e=o[B.P].dt);var a=i.apply(this,r);return t.emit(n+"start",[r,e],a),a.then((function(e){return t.emit(n+"end",[null,e],a),e}),(function(e){throw t.emit(n+"end",[e],a),e}))})}return re[t.debugId]=1,J.forEach((e=>{r(Q[te],e,X),r(ee[te],e,X)})),r(p.gm,"fetch",Y),t.on(Y+"end",(function(e,r){var n=this;if(r){var i=r.headers.get("content-length");null!==i&&(n.rxSize=i),t.emit(Y+"done",[null,r],n)}else t.emit(Y+"done",[e],n)})),t}var ie=i(7485),oe=i(5603);class ae{constructor(e){this.agentIdentifier=e}generateTracePayload(e){if(!this.shouldGenerateTrace(e))return null;var t=(0,oe.o)(this.agentIdentifier);if(!t)return null;var n=(t.accountID||"").toString()||null,i=(t.agentID||"").toString()||null,o=(t.trustKey||"").toString()||null;if(!n||!i)return null;var a=(0,r.ZF)(),s=(0,r.el)(),c=Date.now(),u={spanId:a,traceId:s,timestamp:c};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(u.traceContextParentHeader=this.generateTraceContextParentHeader(a,s),u.traceContextStateHeader=this.generateTraceContextStateHeader(a,c,n,i,o)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(u.newrelicHeader=this.generateTraceHeader(a,s,c,n,i,o)),u}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,o){if(!("function"==typeof p.gm?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return o&&n!==o&&(a.d.tk=o),btoa((0,j.A)(a))}shouldGenerateTrace(e){return this.isDtEnabled()&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1,r={};if((0,s.gD)(this.agentIdentifier,"distributed_tracing")&&(r=(0,s.D0)(this.agentIdentifier).distributed_tracing),e.sameOrigin)t=!0;else if(r.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,ie.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}isDtEnabled(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.enabled}excludeNewrelicHeader(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.cors_use_tracecontext_headers}}var se=i(9300),ce=i(7295),ue=["load","error","abort","timeout"],de=ue.length,le=(0,R.dV)().o.REQ,fe=(0,R.dV)().o.XHR;class he extends b{static featureName=se.T;constructor(e,t=!0){super(e,se.T,t),this.dt=new ae(e.agentIdentifier),this.handler=(e,t,r,n)=>(0,x.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};p.gm?.performance?.getEntriesByType("resource").forEach((t=>{if(t.initiatorType in e&&0!==t.responseStatus){const r={status:t.responseStatus},n={rxSize:t.transferSize,duration:Math.floor(t.duration),cbTime:0};pe(r,t.name),this.handler("xhr",[r,n,t.startTime,t.responseEnd,e[t.initiatorType]],void 0,a.K7.ajax)}}))}catch(e){}ne(this.ee),Z(this.ee),function(e,t,r,n){function i(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=R,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},e.addEventListener("load",(function(r){T(t,e)}),(0,A.jT)(!1)),p.lR||e.addEventListener("progress",(function(e){t.lastSize=e.loaded}),(0,A.jT)(!1))}function o(e){this.params={method:e[0]},pe(this,e[1]),this.metrics={}}function s(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var i=n.generateTracePayload(this.parsedOrigin);if(i){var o=!1;i.newrelicHeader&&(r.setRequestHeader("newrelic",i.newrelicHeader),o=!0),i.traceContextParentHeader&&(r.setRequestHeader("traceparent",i.traceContextParentHeader),i.traceContextStateHeader&&r.setRequestHeader("tracestate",i.traceContextStateHeader),o=!0),o&&(this.dt=i)}}function c(e,r){var n=this.metrics,i=e[0],o=this;if(n&&i){var a=G(i);a&&(n.txSize=a)}this.startTime=(0,S.t)(),this.body=i,this.listener=function(e){try{"abort"!==e.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==e.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof r.onload)&&"function"==typeof o.end)&&o.end(r)}catch(e){try{t.emit("internal-error",[e])}catch(e){}}};for(var s=0;s<de;s++)r.addEventListener(ue[s],this.listener,(0,A.jT)(!1))}function u(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 d(e,t){var r=""+V(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function l(e,t){var r=""+V(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function f(){this.endTime=(0,S.t)()}function h(e,r){r instanceof fe&&"load"===e[0]&&t.emit("xhr-load-added",[e[1],e[2]],r)}function g(e,r){r instanceof fe&&"load"===e[0]&&t.emit("xhr-load-removed",[e[1],e[2]],r)}function m(e,t,r){t instanceof fe&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,S.t)()))}function v(e,r){this.xhrCbStart&&t.emit("xhr-cb-time",[(0,S.t)()-this.xhrCbStart,this.onload,r],r)}function b(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&p.RI&&(t=""+p.gm.location.href):e[0]&&e[0].url?t=e[0].url:p.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,ie.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var i=n.generateTracePayload(this.parsedOrigin);if(i&&(i.newrelicHeader||i.traceContextParentHeader))if(e[0]&&e[0].headers)s(e[0].headers,i)&&(this.dt=i);else{var o={};for(var a in r)o[a]=r[a];o.headers=new Headers(r.headers||{}),s(o.headers,i)&&(this.dt=i),e.length>1?e[1]=o:e.push(o)}}function s(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 y(e,t){this.params={},this.metrics={},this.startTime=(0,S.t)(),this.dt=t,e.length>=1&&(this.target=e[0]),e.length>=2&&(this.opts=e[1]);var r,n=this.opts||{},i=this.target;"string"==typeof i?r=i:"object"==typeof i&&i instanceof le?r=i.url:p.gm?.URL&&"object"==typeof i&&i instanceof URL&&(r=i.href),pe(this,r);var o=(""+(i&&i instanceof le&&i.method||n.method||"GET")).toUpperCase();this.params.method=o,this.body=n.body,this.txSize=G(n.body)||0}function w(e,t){if(this.endTime=(0,S.t)(),this.params||(this.params={}),(0,ce.iW)(this.params))return;let n;this.params.status=t?t.status:0,"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);const i={txSize:this.txSize,rxSize:n,duration:(0,S.t)()-this.startTime};r("xhr",[this.params,i,this.startTime,this.endTime,"fetch"],this,a.K7.ajax)}function R(e){const t=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(let t=0;t<de;t++)e.removeEventListener(ue[t],this.listener,!1);t.aborted||(0,ce.iW)(t)||(n.duration=(0,S.t)()-this.startTime,this.loadCazptureCalled||4!==e.readyState?null==t.status&&(t.status=0):T(this,e),n.cbTime=this.cbTime,r("xhr",[t,n,this.startTime,this.endTime,"xhr"],this,a.K7.ajax))}}function T(e,r){e.params.status=r.status;var n=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?G(e.response):"text"===r||""===r||void 0===r?G(e.responseText):void 0}(r,e.lastSize);if(n&&(e.metrics.rxSize=n),e.sameOrigin){var i=r.getResponseHeader("X-NewRelic-App-Data");i&&((0,x.p)(O.rs,["Ajax/CrossApplicationTracing/Header/Seen"],void 0,a.K7.metrics,t),e.params.cat=i.split(", ").pop())}e.loadCaptureCalled=!0}t.on("new-xhr",i),t.on("open-xhr-start",o),t.on("open-xhr-end",s),t.on("send-xhr-start",c),t.on("xhr-cb-time",u),t.on("xhr-load-added",d),t.on("xhr-load-removed",l),t.on("xhr-resolved",f),t.on("addEventListener-end",h),t.on("removeEventListener-end",g),t.on("fn-end",v),t.on("fetch-before-start",b),t.on("fetch-start",y),t.on("fn-start",m),t.on("fetch-done",w)}(e,this.ee,this.handler,this.dt),this.importAggregator(e)}}function pe(e,t){var r=(0,ie.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}const ge={},me=["pushState","replaceState"];function ve(e){const t=function(e){return(e||B.ee).get("history")}(e);return!p.RI||ge[t.debugId]++||(ge[t.debugId]=1,(0,W.YM)(t).inPlace(window.history,me,"-")),t}var be=i(3738);const{He:ye,bD:we,d3:Re,Kp:xe,TZ:Te,Lc:Ae,uP:Ee,Rz:Se}=be;class Ne extends b{static featureName=Te;constructor(e,t=!0){super(e,Te,t);if(!(0,m.V)(this.agentIdentifier))return void this.deregisterDrain();const r=this.ee;let n;ve(r),this.eventsEE=(0,F.u)(r),this.eventsEE.on(Ee,(function(e,t){this.bstStart=(0,S.t)()})),this.eventsEE.on(Ae,(function(e,t){(0,x.p)("bst",[e[0],t,this.bstStart,(0,S.t)()],void 0,a.K7.sessionTrace,r)})),r.on(Se+Re,(function(e){this.time=(0,S.t)(),this.startPath=location.pathname+location.hash})),r.on(Se+xe,(function(e){(0,x.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,a.K7.sessionTrace,r)}));try{n=new PerformanceObserver((e=>{const t=e.getEntries();(0,x.p)(ye,[t],void 0,a.K7.sessionTrace,r)})),n.observe({type:we,buffered:!0})}catch(e){}this.importAggregator(e,{resourceObserver:n})}}var Oe=i(2614);class _e extends b{static featureName=t.TZ;#i;#o;constructor(e,r=!0){let n;super(e,t.TZ,r),this.replayRunning=!1,this.#o=e;try{n=JSON.parse(localStorage.getItem("".concat(Oe.H3,"_").concat(Oe.uh)))}catch(e){}(0,g.SR)(e.agentIdentifier)&&this.ee.on(t.G4.RECORD,(()=>this.#a())),this.#s(n)?(this.#i=n?.sessionReplayMode,this.#c()):this.importAggregator(e),this.ee.on("err",(e=>{this.replayRunning&&(this.errorNoticed=!0,(0,x.p)(t.G4.ERROR_DURING_REPLAY,[e],void 0,this.featureName,this.ee))})),this.ee.on(t.G4.REPLAY_RUNNING,(e=>{this.replayRunning=e}))}#s(e){return e&&(e.sessionReplayMode===Oe.g.FULL||e.sessionReplayMode===Oe.g.ERROR)||(0,g.Aw)(this.agentIdentifier)}#u=!1;async#c(e){if(!this.#u){this.#u=!0;try{const{Recorder:t}=await Promise.all([i.e(478),i.e(249)]).then(i.bind(i,8589));this.recorder??=new t({mode:this.#i,agentIdentifier:this.agentIdentifier,trigger:e,ee:this.ee}),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording}catch(e){}this.importAggregator(this.#o,{recorder:this.recorder,errorNoticed:this.errorNoticed})}}#a(){this.featAggregate?this.featAggregate.mode!==Oe.g.FULL&&this.featAggregate.initializeRecording(Oe.g.FULL,!0):(this.#i=Oe.g.FULL,this.#c(t.Qb.API),this.recorder&&this.recorder.parent.mode!==Oe.g.FULL&&(this.recorder.parent.mode=Oe.g.FULL,this.recorder.stopRecording(),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording))}}var Ie=i(3962);class je extends b{static featureName=Ie.TZ;constructor(e,t=!0){if(super(e,Ie.TZ,t),!p.RI||!(0,R.dV)().o.MO)return;const r=ve(this.ee);Ie.tC.forEach((e=>{(0,A.sp)(e,(e=>{a(e)}),!0)}));const n=()=>(0,x.p)("newURL",[(0,S.t)(),""+window.location],void 0,this.featureName,this.ee);r.on("pushState-end",n),r.on("replaceState-end",n);try{this.removeOnAbort=new AbortController}catch(e){}(0,A.sp)("popstate",(e=>(0,x.p)("newURL",[e.timeStamp,""+window.location],void 0,this.featureName,this.ee)),!0,this.removeOnAbort?.signal);let i=!1;const o=new((0,R.dV)().o.MO)(((e,t)=>{i||(i=!0,requestAnimationFrame((()=>{(0,x.p)("newDom",[(0,S.t)()],void 0,this.featureName,this.ee),i=!1})))})),a=(0,v.s)((e=>{(0,x.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,{domObserver:o})}}var Pe=i(7378);const Ce={},ke=["appendChild","insertBefore","replaceChild"];function Le(e){const t=function(e){return(e||B.ee).get("jsonp")}(e);if(!p.RI||Ce[t.debugId])return t;Ce[t.debugId]=!0;var r=(0,W.YM)(t),n=/[?&](?:callback|cb)=([^&#]+)/,i=/(.*)\.([^.]+)/,o=/^(\w+)(\.|$)(.*)$/;function a(e,t){if(!e)return t;const r=e.match(o),n=r[1];return a(r[3],t[n])}return r.inPlace(Node.prototype,ke,"dom-"),t.on("dom-start",(function(e){!function(e){if(!e||"string"!=typeof e.nodeName||"script"!==e.nodeName.toLowerCase())return;if("function"!=typeof e.addEventListener)return;var o=(s=e.src,c=s.match(n),c?c[1]:null);var s,c;if(!o)return;var u=function(e){var t=e.match(i);if(t&&t.length>=3)return{key:t[2],parent:a(t[1],window)};return{key:e,parent:window}}(o);if("function"!=typeof u.parent[u.key])return;var d={};function l(){t.emit("jsonp-end",[],d),e.removeEventListener("load",l,(0,A.jT)(!1)),e.removeEventListener("error",f,(0,A.jT)(!1))}function f(){t.emit("jsonp-error",[],d),t.emit("jsonp-end",[],d),e.removeEventListener("load",l,(0,A.jT)(!1)),e.removeEventListener("error",f,(0,A.jT)(!1))}r.inPlace(u.parent,[u.key],"cb-",d),e.addEventListener("load",l,(0,A.jT)(!1)),e.addEventListener("error",f,(0,A.jT)(!1)),t.emit("new-jsonp",[e.src],d)}(e[0])})),t}const He={};function De(e){const t=function(e){return(e||B.ee).get("promise")}(e);if(He[t.debugId])return t;He[t.debugId]=!0;var r=t.context,n=(0,W.YM)(t),i=p.gm.Promise;return i&&function(){function e(r){var o=t.context(),a=n(r,"executor-",o,null,!1);const s=Reflect.construct(i,[a],e);return t.context(s).getCtx=function(){return o},s}p.gm.Promise=e,Object.defineProperty(e,"name",{value:"Promise"}),e.toString=function(){return i.toString()},Object.setPrototypeOf(e,i),["all","race"].forEach((function(r){const n=i[r];e[r]=function(e){let i=!1;[...e||[]].forEach((e=>{this.resolve(e).then(a("all"===r),a(!1))}));const o=n.apply(this,arguments);return o;function a(e){return function(){t.emit("propagate",[null,!i],o,!1,!1),i=i||!e}}}})),["resolve","reject"].forEach((function(r){const n=i[r];e[r]=function(e){const r=n.apply(this,arguments);return e!==r&&t.emit("propagate",[e,!0],r,!1,!1),r}})),e.prototype=i.prototype;const o=i.prototype.then;i.prototype.then=function(...e){var i=this,a=r(i);a.promise=i,e[0]=n(e[0],"cb-",a,null,!1),e[1]=n(e[1],"cb-",a,null,!1);const s=o.apply(this,e);return a.nextPromise=s,t.emit("propagate",[i,!0],s,!1,!1),s},i.prototype.then[W.Jt]=o,t.on("executor-start",(function(e){e[0]=n(e[0],"resolve-",this,null,!1),e[1]=n(e[1],"resolve-",this,null,!1)})),t.on("executor-err",(function(e,t,r){e[1](r)})),t.on("cb-end",(function(e,r,n){t.emit("propagate",[n,!0],this.nextPromise,!1,!1)})),t.on("propagate",(function(e,r,n){this.getCtx&&!r||(this.getCtx=function(){if(e instanceof Promise)var r=t.context(e);return r&&r.getCtx?r.getCtx():this})}))}(),t}const Me={},Ke="setTimeout",Ue="setInterval",Ve="clearTimeout",Ge="-start",Fe=[Ke,"setImmediate",Ue,Ve,"clearImmediate"];function Be(e){const t=function(e){return(e||B.ee).get("timer")}(e);if(Me[t.debugId]++)return t;Me[t.debugId]=1;var r=(0,W.YM)(t);return r.inPlace(p.gm,Fe.slice(0,2),Ke+"-"),r.inPlace(p.gm,Fe.slice(2,3),Ue+"-"),r.inPlace(p.gm,Fe.slice(3),Ve+"-"),t.on(Ue+Ge,(function(e,t,n){e[0]=r(e[0],"fn-",null,n)})),t.on(Ke+Ge,(function(e,t,n){this.method=n,this.timerDuration=isNaN(e[1])?0:+e[1],e[0]=r(e[0],"fn-",this,n)})),t}const We={};function ze(e){const t=function(e){return(e||B.ee).get("mutation")}(e);if(!p.RI||We[t.debugId])return t;We[t.debugId]=!0;var r=(0,W.YM)(t),n=p.gm.MutationObserver;return n&&(window.MutationObserver=function(e){return this instanceof n?new n(r(e,"fn-")):n.apply(this,arguments)},MutationObserver.prototype=n.prototype),t}const{TZ:qe,d3:Ze,Kp:Ye,$p:Xe,wW:Je,e5:Qe,tH:$e,uP:et,rw:tt,Lc:rt}=Pe;class nt extends b{static featureName=qe;constructor(e,t=!0){if(super(e,qe,t),!p.RI)return;try{this.removeOnAbort=new AbortController}catch(e){}let r,n=0;const i=this.ee.get("tracer"),o=Le(this.ee),a=De(this.ee),s=Be(this.ee),c=Z(this.ee),u=this.ee.get("events"),d=ne(this.ee),l=ve(this.ee),f=ze(this.ee);function h(e,t){l.emit("newURL",[""+window.location,t])}function g(){n++,r=window.location.hash,this[et]=(0,S.t)()}function m(){n--,window.location.hash!==r&&h(0,!0);var e=(0,S.t)();this[Qe]=~~this[Qe]+e-this[et],this[rt]=e}function v(e,t){e.on(t,(function(){this[t]=(0,S.t)()}))}this.ee.on(et,g),a.on(tt,g),o.on(tt,g),this.ee.on(rt,m),a.on(Je,m),o.on(Je,m),this.ee.on("fn-err",((...t)=>{t[2]?.__newrelic?.[e.agentIdentifier]||(0,x.p)("function-err",[...t],void 0,this.featureName,this.ee)})),this.ee.buffer([et,rt,"xhr-resolved"],this.featureName),u.buffer([et],this.featureName),s.buffer(["setTimeout"+Ye,"clearTimeout"+Ze,et],this.featureName),c.buffer([et,"new-xhr","send-xhr"+Ze],this.featureName),d.buffer([$e+Ze,$e+"-done",$e+Xe+Ze,$e+Xe+Ye],this.featureName),l.buffer(["newURL"],this.featureName),f.buffer([et],this.featureName),a.buffer(["propagate",tt,Je,"executor-err","resolve"+Ze],this.featureName),i.buffer([et,"no-"+et],this.featureName),o.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"],this.featureName),v(d,$e+Ze),v(d,$e+"-done"),v(o,"new-jsonp"),v(o,"jsonp-end"),v(o,"cb-start"),l.on("pushState-end",h),l.on("replaceState-end",h),window.addEventListener("hashchange",h,(0,A.jT)(!0,this.removeOnAbort?.signal)),window.addEventListener("load",h,(0,A.jT)(!0,this.removeOnAbort?.signal)),window.addEventListener("popstate",(function(){h(0,n>1)}),(0,A.jT)(!0,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e)}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var it=i(3333);class ot extends b{static featureName=it.TZ;constructor(e,t=!0){super(e,it.TZ,t);const r=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.user_actions.enabled];p.RI&&e.init.user_actions.enabled&&(it.Zp.forEach((e=>(0,A.sp)(e,(e=>(0,x.p)("ua",[e],void 0,this.featureName,this.ee)),!0))),it.qN.forEach((e=>(0,A.sp)(e,(e=>(0,x.p)("ua",[e],void 0,this.featureName,this.ee)))))),r.some((e=>e))?this.importAggregator(e):this.deregisterDrain()}}var at=i(993),st=i(3785);class ct extends b{static featureName=at.TZ;constructor(e,t=!0){super(e,at.TZ,t);const r=this.ee;this.ee.on("wrap-logger-end",(function([e]){const{level:t,customAttributes:n}=this;(0,st.R)(r,e,n,t)})),this.importAggregator(e)}}new class extends o{constructor(t,r){super(r),p.gm?(this.features={},(0,R.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(w),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=>e.featureName===a.K7.softNav)),(0,d.j)(this,t,t.loaderType||"agent"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}run(){try{const t=u(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=>a.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=>{if(!t[r.featureName]&&r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa&&r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa&&r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=>!(e in this.features)));n.length>0&&(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,R.Zm)();delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[he,w,N,Ne,_e,_,D,ot,ct,je,nt],loaderType:"spa"})})()})();</script> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="REVIEWS.io is the world&#039;s leading platform for genuine user reviews of businesses and websites."/> <meta name="twitter:description" content="REVIEWS.io is the world&#039;s leading platform for genuine user reviews of businesses and websites."> <meta property="og:description" content="REVIEWS.io is the world&#039;s leading platform for genuine user reviews of businesses and websites."/> <meta name="title" content="REVIEWS.io"/> <meta property="og:title" content="REVIEWS.io"/> <meta property="og:url" content="https://www.reviews.io/product-reviews/store/ello/Ello-Monthly-Subscription"/> <meta property="og:image" content="https://assets.reviews.io/img/all-global-assets/og-images/og-review-global.jpg"/> <meta property="og:image:secure_url" content="https://assets.reviews.io/img/all-global-assets/og-images/og-review-global.jpg"/> <meta property="og:image:width" content="1200"/> <meta property="og:image:height" content="630"/> <meta property="og:site_name" content="reviews.io"/> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:site" content="@reviews_experts"> <meta name="twitter:title" content="REVIEWS.io"> <meta name="twitter:image" content="https://assets.reviews.io/img/all-global-assets/og-images/og-review-global.jpg"/> <meta name="google-site-verification" content="zV8bPWm8iJEpBm73y4LNsrm84ZfEAatpSQi1q5Sxjaw"/> <meta name="google-site-verification" content="mqVu3CqBYjmRBBai5t9EHCAg-TNSpx5rz7lXZNnMAwA" /> <meta name="google-site-verification" content="oRUq8wvh9Ji-p5NMtZUEciUcKzhpKiEeuNK1JB9cqto" /> <meta name="google-site-verification" content="7MURZ3nyE_SgN-A3nTF793Ik-824lZ-xOIxFLAR1q1A" /> <meta name="facebook-domain-verification" content="4b1gn0ntbac9zz012iigjk9er8j7up" /> <meta name="robots" content="noindex"> <script src="https://widget.reviews.co.uk/instagram-photo-profile/dist.js?v=profile_page&x=5" type="text/javascript"></script> <link rel="next" href="https://www.reviews.io/product-reviews/store/ello/Ello-Monthly-Subscription?page=2"/> <meta name="robots" content="noindex, nofollow"> <!-- Favicons --> <link rel="apple-touch-icon" sizes="180x180" href="https://assets.reviews.io/favicon/apple-touch-icon.png"> <link rel="icon" type="image/png" sizes="32x32" href="https://assets.reviews.io/favicon/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="16x16" href="https://assets.reviews.io/favicon/favicon-16x16.png"> <link rel="manifest" href="https://assets.reviews.io/favicon/site.webmanifest"> <link rel="mask-icon" href="https://assets.reviews.io/favicon/safari-pinned-tab.svg" color="#5bbad5"> <link rel="shortcut icon" href="https://assets.reviews.io/favicon/favicon.ico"> <meta name="msapplication-TileColor" content="#ffffff"> <meta name="msapplication-config" content="https://assets.reviews.io/favicon/browserconfig.xml"> <meta name="theme-color" content="#ffffff"> <link rel="stylesheet" type="text/css" media="screen" href="https://assets.reviews.io/iconfont/reviewsio-icons/style.css?v=2020-09-24"> <link href="https://assets.reviews.io/css/store-page.css?795cbccaae289c32946ec53d86c86ca86138ea96" rel="stylesheet" media="screen"> <link href="https://assets.reviews.io/fonts/gwebfonts/inter/inter.css" rel="stylesheet" media="print" onload="this.media='all'"> <style> .pagination { margin: 40px 0px 40px 0px; } .pagination > li > a { text-decoration: none; background-color: #fff; color: #777; min-width: 40px; } .pagination>li>a:focus { background-color: #f0f0f0 !important; } .pagination > li > a:hover, .pagination>.active>a, .pagination>.active>a:focus, .pagination>.active>a:hover, .pagination>.active>span, .pagination>.active>span:focus, .pagination>.active>span:hover { background-color: #12cf6c !important; color: white; border: 1px solid #ddd; min-width: 40px; } .pagination>.disabled>a, .pagination>.disabled>a:focus, .pagination>.disabled>a:hover, .pagination>.disabled>span, .pagination>.disabled>span:focus, .pagination>.disabled>span:hover { color: #777; cursor: not-allowed; background-color: #f0f0f0; border: 1px solid #ddd; min-width: 40px; } </style> <style> .grecaptcha-badge { visibility: hidden; } </style> <script src='https://www.google.com/recaptcha/api.js?render=6LfXZCkaAAAAAA6P92lEjjUSaoqB_tFkjJB_8G1A'></script> <script> document.addEventListener('DOMContentLoaded', function () { grecaptcha.ready(function() { grecaptcha.execute('6LfXZCkaAAAAAA6P92lEjjUSaoqB_tFkjJB_8G1A', { action: 'company_page_load' }).then(token => { const response = document.getElementById('g-recaptcha-response-100000'); if (response) { response.setAttribute('aria-hidden', 'true'); } }); }); }); window.IGLOO = window.IGLOO || { "bbout_element_id" : "iovation_blackbox", "enable_rip" : true, "enable_flash" : false, "install_flash" : false, "loader" : { "version" : "general5", "fp_static" : false, }, }; </script> <script async src="https://www.reviews.io/js/iovation/loader.js"></script> <script async src="//cdn.jsdelivr.net/npm/@fingerprintjs/fingerprintjs@3/dist/fp.min.js"></script> <script src="/cw-assets/js/store-page.js?id=9ab7b29c30e623df035b" ></script> <script type="application/ld+json"> { "@context" : "http://schema.org", "@type" : "LocalBusiness", "@id" : "https://www.reviews.io/company-reviews/store/ello", "name" : "Ello", "url" : "http://www.helloello.com", "image": { "@type": "ImageObject", "url": "https://www.reviews.io/logo-image/ello", "width": 515, "height": 515 }, "aggregateRating" : { "@type" : "aggregateRating", "bestRating" : "5", "ratingValue" : "4.88", "worstRating" : "1", "reviewCount" : "614" } , "address": { "@type":"PostalAddress", "streetAddress":"2447 Mission St.,\nSan Francisco", "addressLocality":"California", "postalcode":"94110" }, "review": [ { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Ello", "image":"https://www.reviews.io/logo-image/ello" }, "author": { "@type":"Person", "name":"Trisha Parker " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2024-01-17 17:10:24", "reviewBody":"", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"5" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Ello", "image":"https://www.reviews.io/logo-image/ello" }, "author": { "@type":"Person", "name":"Micaela Gonzalez " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2024-01-11 23:01:41", "reviewBody":"", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"4" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Ello", "image":"https://www.reviews.io/logo-image/ello" }, "author": { "@type":"Person", "name":"Vanesa Correa " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2024-01-10 20:49:16", "reviewBody":"", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"5" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Ello", "image":"https://www.reviews.io/logo-image/ello" }, "author": { "@type":"Person", "name":"Tabitha Wilson " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2023-12-25 05:10:55", "reviewBody":"", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"5" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Ello", "image":"https://www.reviews.io/logo-image/ello" }, "author": { "@type":"Person", "name":"Heba ibeidallah " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2023-12-25 04:22:48", "reviewBody":"", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"5" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Ello", "image":"https://www.reviews.io/logo-image/ello" }, "author": { "@type":"Person", "name":"Kathryn LaVoie " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2023-12-11 17:16:29", "reviewBody":"", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"5" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Ello", "image":"https://www.reviews.io/logo-image/ello" }, "author": { "@type":"Person", "name":"Mikki Gonzales " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2023-12-11 15:44:22", "reviewBody":"", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"5" } } , { "@type":"Review", "itemReviewed": { "@type":"Organization", "name":"Ello", "image":"https://www.reviews.io/logo-image/ello" }, "author": { "@type":"Person", "name":"Brittney Hunt " }, "publisher": { "@type":"Organization", "name":"", "sameAs":"" }, "datePublished":"2023-12-05 18:54:45", "reviewBody":"", "reviewRating": { "@type":"Rating", "bestRating":"5", "worstRating":"1", "ratingValue":"5" } } ] } </script> <script> var store_id = 547731; var store_url_key = 'ello'; var __debug = 0; var api = 'https://api.reviews.io'; </script> <script type="text/javascript" src="/cw-assets/js/stores/components/review.js?id=4c47e4af3307a45eef83"></script> <script> window.intercomSettings = { app_id: "honm34jo" }; </script> <script>(function(){var w=window;var ic=w.Intercom;if(typeof ic==="function"){ic('reattach_activator');ic('update',w.intercomSettings);}else{var d=document;var i=function(){i.c(arguments);};i.q=[];i.c=function(args){i.q.push(args);};w.Intercom=i;var l=function(){var s=d.createElement('script');s.type='text/javascript';s.async=true;s.src='https://widget.intercom.io/widget/k7jz2ky4';var x=d.getElementsByTagName('script')[0];x.parentNode.insertBefore(s,x);};if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}}})();</script> <link rel="manifest" href="/manifest.json" /> <script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async=""></script> <script> var OneSignal = window.OneSignal || []; OneSignal.push(function() { OneSignal.init({ appId: "1bbae90d-9d58-421d-8326-eaa6ea667fe4", autoRegister: false, notifyButton: { enable: false, }, displayPredicate: function() { return false; } }); }); </script> <!-- START GOOGLE TAG MANAGER --> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-MT52C3C');</script> <!-- End Google Tag Manager --> </head> <body > <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MT52C3C" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <div class="TopHeader TopHeader--b2c "> <div class="TopHeader__inner"> <div class="TopHeader__logo"> <a href="https://www.reviews.io" class='logo__link' > <img src="https://assets.reviews.io/img/all-global-assets/logo/reviewsio-logo.svg" alt="REVIEWS.io logo" class='logo__img logo__img--desktop'/> <img src="https://assets.reviews.io/img/all-global-assets/logo/reviewsio-logo--minimised.svg" alt="REVIEWS.io logo" class='logo__img logo__img--mobile'/> </a> </div> <div class="TopHeader__search TopHeader__search--minimisable TopHeader__search--largeVersion js-search-inputfield"> <div class="TopHeader__search__inner Search"> <form method="get" action="https://www.reviews.io/search/"> <label for="searchInput" aria-label="Search for companies"></label> <input id="searchInput" type="search" name="search" class="search__field" role="searchbox" autocomplete="off" aria-hidden="true" tabindex="-1" placeholder="Search for Companies"> </form> <div class="SearchResults"> </div> <div class="searchField__icon searchField__icon--search"> <i class="ricon-magnifying-glass" role="search" ></i> </div> <div class="searchField__icon searchField__icon--close js-hide-search-inputfield"> <i class="ricon-thin-close"></i> </div> </div> </div> <div class="TopHeader__right"> <div class="TopHeader__buttons"> <style> a.TopHeader__buttons__btn.TopHeader__buttons__btn--getstartedBtn.TopHeader__buttons__btn--getstartedBtn--b2c:focus { padding: 10px; } .ricon-magnifying-glass:focus { border: 2px solid black; outline: none; } </style> <a href="https://dash.reviews.io/login" class="TopHeader__buttons__btn TopHeader__buttons__btn--loginBtn"> Login </a> <div class="TopHeader__buttons__btn TopHeader__buttons__btn--searchTrigger js-show-search-inputfield"> <div class="TopHeader__search-trigger"> <i class="ricon-magnifying-glass trigger__icon" role="button" aria-label="Search" tabindex="0"></i> </div> </div> <a class="TopHeader__buttons__btn TopHeader__buttons__btn--getstartedBtn TopHeader__buttons__btn--getstartedBtn--b2b js-open-signuppopup-free"> Start Free Trial </a> <a href="https://www.reviews.io/business-solutions" class="TopHeader__buttons__btn TopHeader__buttons__btn--getstartedBtn TopHeader__buttons__btn--getstartedBtn--b2c"> Are you a business?? <span class="hiddenLaptop">Click Here</span> </a> </div> </div> </div> </div> <iframe src='//collector.reviews.io/ello/track?u=%2Fproduct-reviews%2Fstore%2Fello%2FEllo-Monthly-Subscription' height=0 width=0 style='border:0px;width:0px;height:0px;opacity:0'></iframe> <img src='/reporting/on-business/547731.gif' style="position:absolute; visibility:hidden" alt=''/> <!-- <div class="FormModal FormModal--fullscreen FormModal--coloured" id='rmarket_popup'> </div> --> <div class='StorePage ' > <div class="StorePage__header "> <div class="header__inner"> <div class="header__row"> <div class="header__left"> <div class="header__ratingText"> <h1 class="TextHeading TextHeading--md"> Read with Ello Reviews </h1> <div class="header__statistics"> <span class="statistics__starRating"> <div class="Rating Rating--xxlg "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--75"></i> </div> </div> </span> <span class="statistics__totalReviews"> <span class="TextBody TextBody--sm TextBody--inline"> <strong> 4.7 </strong> Rating </span> <span class="TextBody TextBody--sm TextBody--inline"> <strong> 614 </strong> Reviews </span> </span> </div> </div> </div> <div class="header__right"> </div> </div> <div class="header__row header__row--tabs"> <div class='header__tabs'> <a class='header__tab js-tab-company ' href="https://www.reviews.io/company-reviews/store/ello"> <img src="https://assets.reviews.io/img/all-global-assets/icons/icon-company-reviews--sm--colour.svg " alt="" class="tab__icon"/> <span class="TextBody TextBody--sm"> <span class="mobileBlock"> Company </span> <span class="hideOnMobile"> Reviews </span> </span> </a> <a class='header__tab js-tab-product ' href="https://www.reviews.io/product-reviews/store/ello"> <img src="https://assets.reviews.io/img/all-global-assets/icons/icon-product-reviews--sm--colour.svg " alt="" class="tab__icon"/> <span class="TextBody TextBody--sm"> <span class="mobileBlock"> Product </span> <span class="hideOnMobile"> Reviews </span> <div class="LabelTag LabelTag--sm LabelTag--round u-marginBottom--none LabelTag--filled-neutral u-marginLeft--xs u-marginRight--none"> <div class="LabelTag__text">614</div> </div> </span> </a> <a class='header__tab js-tab-metrics header__tab--onlyMobile' href="https://www.reviews.io/company-reviews/store/ello#metrics"> <img src="https://assets.reviews.io/img/all-global-assets/icons/icon-reporting--sm--colour.svg " alt="" class="tab__icon"/> <span class="TextBody TextBody--sm"> <span class="mobileBlock"> Metrics </span> </span> </a> <a class='header__tab js-tab-info header__tab--onlyMobile' href="https://www.reviews.io/company-reviews/store/ello#info"> <img src="https://assets.reviews.io/img/all-global-assets/icons/icon-information--sm--colour.svg " alt="" class="tab__icon"/> <span class="TextBody TextBody--sm"> <span class="mobileBlock"> Info </span> </span> </a> </div> </div> <script> var _curUrl = location.toString().replace(location.search, ""); if (_curUrl.indexOf('/product-reviews/')!=-1) { _curUrl = 'https://www.reviews.io/product-reviews/store/ello'; } function showActiveJSView(view) { $('.js-mobileView').addClass('isHidden'); if (view != "metrics") { $('.js-metricsView').removeClass('isActive'); $('.js-metricsView').addClass('isHidden'); } if (view != "info") { $('.js-infoView').removeClass('isActive'); $('.js-infoView').addClass('isHidden'); } $('.js-' + view + 'View').removeClass('isHidden'); $('.js-' + view + 'View').addClass('isActive'); } </script> </div> </div> <div class="StorePage__content"> <div class="content__inner"> <div class="content__left"> <div class="MobileView js-mobileView js-infoView"> <div class="PanelCard"> <div class="LogoComponent"> <div class="LogoComponent__inner"> <img loading="lazy" class="LogoComponent__image " src='https://media.reviews.co.uk/product/547731/Ello-Monthly-Subscription' alt="Read Ello Reviews" onerror="$(this).hide();" /> </div> </div> <a class="Button Button--md Button--primary Button--fullwidth" rel="nofollow" href="https://www.helloello.com/lps/reading-confidence" target="_blank"> <span class="Button__text"> Visit Product Page </span> </a> <p class="TextHeading TextHeading--xxxs u-marginBottom--none"> Email: </p> <p class="TextBody TextBody--xxs"> support@helloello.com </p> <p class="TextHeading TextHeading--xxxs u-marginBottom--none"> Location: </p> <p class="TextBody TextBody--xxs"> 2447 Mission St.,<br />San Francisco <br /> California <br /> 94110 </p> <div class="MapPreview"> <iframe style="border:0;width:100%" src="https://www.google.com/maps/embed/v1/place?key=AIzaSyAhqTpH_emIUh33S3w1YYjl1yoXcq-7lwc&q=94110" allowfullscreen > </iframe> </div> </div> </div> <div class="js-storepage-side-content-end" style="height:1px;"></div> <script> var div_top = $('.js-storepage-side-content-end').offset().top; $(window).resize(function() { div_top = $('.js-storepage-side-content-end').offset().top; }); function makePanelSticky() { var window_top = $(window).scrollTop(); var buff = -20; if (!$('.js-metricsView').hasClass('isSticky') && (window_top + buff >= div_top)) { $('.js-metricsView').addClass('isSticky'); } if ($('.js-metricsView').hasClass('isSticky') && (window_top + buff < div_top)) { $('.js-metricsView').removeClass('isSticky'); } } $(window).scroll(makePanelSticky); </script> </div> <div class='content__right'> <div class="Stores__product--MobileView"> <div class="WriteReviewStars"> <div class="WRS__inner"> <div class="WRS__buttons"> <div class="Stores__product-link-Container"> <div class="Stores__product-link--img"> <div class="LogoComponent"> <div class="LogoComponent__inner"> <img loading="lazy" class="LogoComponent__image " src='https://media.reviews.co.uk/product/547731/Ello-Monthly-Subscription' alt="Read Ello Reviews" onerror="$(this).hide();" /> </div> </div> </div> <div class="Stores__product-link--btn"> <a class="Button Button--sm Button--outline Button--fullwidth u-marginBottom--none" rel="nofollow" href="https://www.helloello.com/lps/reading-confidence" target="_blank"> <span class="Button__text"> Visit Product Page <!-- company-profile.Visit_product --> </span> </a> </div> </div> </div> <div class="WRS__shapes"> <picture> <source type="image/webp" srcset="https://assets.reviews.io/img/all-global-assets/pages/business-solutions/shape__bottomlhs-corner--dots.webp 1x, https://assets.reviews.io/img/all-global-assets/pages/business-solutions/shape__bottomlhs-corner--dots@2x.webp 2x"> <source type="image/png" srcset="https://assets.reviews.io/img/all-global-assets/pages/business-solutions/shape__bottomlhs-corner--dots.png 1x, https://assets.reviews.io/img/all-global-assets/pages/business-solutions/shape__bottomlhs-corner--dots@2x.png 2x"> <img class="shapes__image shapes__image--left" src="https://assets.reviews.io/img/all-global-assets/pages/business-solutions/shape__bottomlhs-corner--dots.png"> </picture> <picture> <source type="image/webp" srcset="https://assets.reviews.io/img/all-global-assets/pages/business-solutions/shape__bottomlhs-corner--dots.webp 1x, https://assets.reviews.io/img/all-global-assets/pages/business-solutions/shape__bottomlhs-corner--dots@2x.webp 2x"> <source type="image/png" srcset="https://assets.reviews.io/img/all-global-assets/pages/business-solutions/shape__bottomlhs-corner--dots.png 1x, https://assets.reviews.io/img/all-global-assets/pages/business-solutions/shape__bottomlhs-corner--dots@2x.png 2x"> <img class="shapes__image shapes__image--right" src="https://assets.reviews.io/img/all-global-assets/pages/business-solutions/shape__bottomlhs-corner--dots.png"> </picture> </div> </div> </div> </div> <div class="Review Review--nonverifiable" data-review-id="25782289"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <span class="Review__author"> Trisha P </span> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--lg "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> </div> </div> </div> </div> <a href="/profile-modal/verified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--buyer"> <div class="BadgeElement"> <div class="BadgeElement__icon ricon-badge--checkmark"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Verified Reviewer </div> </div> </div> </a> </div> <div class="Review__content"> <div class="Review__container"> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">&ldquo;</span>My 7 year old was struggling and did not like to read at all. Since we started Ello we have found a routine. Now she loves getting her box to see what stories we get. I defiantly recommend to anyone that needs a boost reading.<span class="Review__quotationMark Review__quotationMark--right">&rdquo;</span></span> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" onclick="flagProductReviewAsHelpful(25782289)" title="Was this review helpful?"> <i class="ricon-thumbsup"></i> <small class="counter"> 2 </small> <span class="textContainer">Helpful</span> </a> <span class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button"> <i class="ricon-share"></i> <span class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 25782289)"> <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 25782289)"> <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function share(type, review_id) { var url = 'http://media.reviews.co.uk/product-snippet/' + review_id; var shareLink = ''; switch (type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink, 'targetWindow', 'toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" href='/profile-modal/report-product-review?id=25782289' title="Report this review" data-toggle='ajaxmodal'> <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 10 months ago </div> </div> </div> </div> </div> <div class="Review Review--nonverifiable" data-review-id="25598293"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <span class="Review__author"> Micaela G </span> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--lg "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--0"></i> </div> </div> </div> </div> <a href="/profile-modal/verified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--buyer"> <div class="BadgeElement"> <div class="BadgeElement__icon ricon-badge--checkmark"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Verified Reviewer </div> </div> </div> </a> </div> <div class="Review__content"> <div class="Review__container"> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">&ldquo;</span>So far, we鈥檝e seen some improvement since using the app and our child has enjoyed using it. The voice detection software has room for improvement. Sometimes it will not accurately detect words and the reader can move ahead without reading the sentences. Overall it is pretty good and helpful.<span class="Review__quotationMark Review__quotationMark--right">&rdquo;</span></span> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" onclick="flagProductReviewAsHelpful(25598293)" title="Was this review helpful?"> <i class="ricon-thumbsup"></i> <small class="counter"> 1 </small> <span class="textContainer">Helpful</span> </a> <span class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button"> <i class="ricon-share"></i> <span class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 25598293)"> <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 25598293)"> <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function share(type, review_id) { var url = 'http://media.reviews.co.uk/product-snippet/' + review_id; var shareLink = ''; switch (type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink, 'targetWindow', 'toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" href='/profile-modal/report-product-review?id=25598293' title="Report this review" data-toggle='ajaxmodal'> <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 10 months ago </div> </div> </div> </div> </div> <div class="Review Review--nonverifiable" data-review-id="25584191"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <span class="Review__author"> Vanesa C </span> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--lg "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> </div> </div> </div> </div> <a href="/profile-modal/verified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--buyer"> <div class="BadgeElement"> <div class="BadgeElement__icon ricon-badge--checkmark"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Verified Reviewer </div> </div> </div> </a> </div> <div class="Review__content"> <div class="Review__container"> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">&ldquo;</span>My kid has always struggled with speech and struggled even more when I would help and ello makes him want to read book after book!<span class="Review__quotationMark Review__quotationMark--right">&rdquo;</span></span> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" onclick="flagProductReviewAsHelpful(25584191)" title="Was this review helpful?"> <i class="ricon-thumbsup"></i> <small class="counter"> 2 </small> <span class="textContainer">Helpful</span> </a> <span class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button"> <i class="ricon-share"></i> <span class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 25584191)"> <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 25584191)"> <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function share(type, review_id) { var url = 'http://media.reviews.co.uk/product-snippet/' + review_id; var shareLink = ''; switch (type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink, 'targetWindow', 'toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" href='/profile-modal/report-product-review?id=25584191' title="Report this review" data-toggle='ajaxmodal'> <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 10 months ago </div> </div> </div> </div> </div> <div class="Review Review--nonverifiable" data-review-id="25364287"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <span class="Review__author"> Tabitha W </span> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--lg "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> </div> </div> </div> </div> <a href="/profile-modal/verified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--buyer"> <div class="BadgeElement"> <div class="BadgeElement__icon ricon-badge--checkmark"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Verified Reviewer </div> </div> </div> </a> </div> <div class="Review__content"> <div class="Review__container"> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">&ldquo;</span>This app has helped my little become a stronger reader, she absolutely loves the help she gets when struggling on a word, and has successfully made it though all 5 books we have received! We cannot wait for our next month!<span class="Review__quotationMark Review__quotationMark--right">&rdquo;</span></span> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" onclick="flagProductReviewAsHelpful(25364287)" title="Was this review helpful?"> <i class="ricon-thumbsup"></i> <span class="textContainer">Helpful</span> </a> <span class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button"> <i class="ricon-share"></i> <span class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 25364287)"> <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 25364287)"> <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function share(type, review_id) { var url = 'http://media.reviews.co.uk/product-snippet/' + review_id; var shareLink = ''; switch (type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink, 'targetWindow', 'toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" href='/profile-modal/report-product-review?id=25364287' title="Report this review" data-toggle='ajaxmodal'> <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 11 months ago </div> </div> </div> </div> </div> <div class="Review Review--nonverifiable" data-review-id="25364209"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <span class="Review__author"> Heba I </span> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--lg "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> </div> </div> </div> </div> <a href="/profile-modal/verified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--buyer"> <div class="BadgeElement"> <div class="BadgeElement__icon ricon-badge--checkmark"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Verified Reviewer </div> </div> </div> </a> </div> <div class="Review__content"> <div class="Review__container"> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">&ldquo;</span>So my kid had one box and already he start read more and improved his spelling and reading, so i do recommend and i also get a box for my other kid who is 4 years<span class="Review__quotationMark Review__quotationMark--right">&rdquo;</span></span> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" onclick="flagProductReviewAsHelpful(25364209)" title="Was this review helpful?"> <i class="ricon-thumbsup"></i> <span class="textContainer">Helpful</span> </a> <span class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button"> <i class="ricon-share"></i> <span class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 25364209)"> <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 25364209)"> <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function share(type, review_id) { var url = 'http://media.reviews.co.uk/product-snippet/' + review_id; var shareLink = ''; switch (type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink, 'targetWindow', 'toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" href='/profile-modal/report-product-review?id=25364209' title="Report this review" data-toggle='ajaxmodal'> <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 11 months ago </div> </div> </div> </div> </div> <div class="Review Review--nonverifiable" data-review-id="25001009"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <span class="Review__author"> Kathryn L </span> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--lg "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> </div> </div> </div> </div> <a href="/profile-modal/verified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--buyer"> <div class="BadgeElement"> <div class="BadgeElement__icon ricon-badge--checkmark"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Verified Reviewer </div> </div> </div> </a> </div> <div class="Review__content"> <div class="Review__container"> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">&ldquo;</span>My 1st grader is so excited to read his books to Ello. I really like the hard copy of the book in conjunction with the app. The app has been user-friendly and easy to use for both me and my little guy. I have noted some difficulties with the voice recognition but, nothing that completely derails reading and using the app.<span class="Review__quotationMark Review__quotationMark--right">&rdquo;</span></span> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" onclick="flagProductReviewAsHelpful(25001009)" title="Was this review helpful?"> <i class="ricon-thumbsup"></i> <small class="counter"> 1 </small> <span class="textContainer">Helpful</span> </a> <span class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button"> <i class="ricon-share"></i> <span class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 25001009)"> <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 25001009)"> <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function share(type, review_id) { var url = 'http://media.reviews.co.uk/product-snippet/' + review_id; var shareLink = ''; switch (type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink, 'targetWindow', 'toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" href='/profile-modal/report-product-review?id=25001009' title="Report this review" data-toggle='ajaxmodal'> <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 11 months ago </div> </div> </div> </div> </div> <div class="Review Review--nonverifiable" data-review-id="24993079"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <span class="Review__author"> Mikki G </span> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--lg "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> </div> </div> </div> </div> <a href="/profile-modal/verified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--buyer"> <div class="BadgeElement"> <div class="BadgeElement__icon ricon-badge--checkmark"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Verified Reviewer </div> </div> </div> </a> </div> <div class="Review__content"> <div class="Review__container"> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">&ldquo;</span>We received our first box last week &amp; my daughter has already read all 5 books. She was beyond thrilled with Ello &amp; enjoyed coming home to read a new book, we&#039;ve been struggling since beginning of school but the app is so engaging &amp; interactive &amp; has helped her gain the confidence she needed to become a good reader. I highly recommend!<span class="Review__quotationMark Review__quotationMark--right">&rdquo;</span></span> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" onclick="flagProductReviewAsHelpful(24993079)" title="Was this review helpful?"> <i class="ricon-thumbsup"></i> <small class="counter"> 1 </small> <span class="textContainer">Helpful</span> </a> <span class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button"> <i class="ricon-share"></i> <span class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 24993079)"> <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 24993079)"> <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function share(type, review_id) { var url = 'http://media.reviews.co.uk/product-snippet/' + review_id; var shareLink = ''; switch (type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink, 'targetWindow', 'toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" href='/profile-modal/report-product-review?id=24993079' title="Report this review" data-toggle='ajaxmodal'> <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 11 months ago </div> </div> </div> </div> </div> <div class="Review Review--nonverifiable" data-review-id="24682793"> <div class="review-alert" style="display:none"> <div class="controlbtnFeedback"></div> </div> <div class="Review__header"> <span class="Review__author"> Brittney H </span> <div class="Review__overallStars"> <div class="Review__overallStars__stars"> <div class="Rating Rating--lg "> <div class="Rating__stars u-marginBottom--none"> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> <i class="stars__icon ricon-percentage-star--100 stars__icon--100"></i> </div> </div> </div> </div> <a href="/profile-modal/verified-reviews" data-toggle="ajaxmodal" class="Review__badge Review__badge--buyer"> <div class="BadgeElement"> <div class="BadgeElement__icon ricon-badge--checkmark"></div> <div class="BadgeElement__text"> <div class="TextBody TextBody--xxxs TextBody--inline u-textLeft--all u-marginBottom--none"> Verified Reviewer </div> </div> </div> </a> </div> <div class="Review__content"> <div class="Review__container"> <span class="Review__body u-wordBreak--wordBreak"><span class="Review__quotationMark Review__quotationMark--left">&ldquo;</span>I am so happy for Ello. I am so happy that they send emails to check on us to see how my son is doing. They sent tips on how it works and how to get started.<span class="Review__quotationMark Review__quotationMark--right">&rdquo;</span></span> <div class="Review__controlButtons"> <div class="controlButtons__inner"> <a class="controlButtons__btn controlButtons__btn--helpful" rel="nofollow" role="button" onclick="flagProductReviewAsHelpful(24682793)" title="Was this review helpful?"> <i class="ricon-thumbsup"></i> <small class="counter"> 1 </small> <span class="textContainer">Helpful</span> </a> <span class="controlButtons__btn controlButtons__btn--share" rel="nofollow" role="button"> <i class="ricon-share"></i> <span class="textContainer"> <span class="shareIcon shareIcon--fb" onclick="share('fb', 24682793)"> <i class="ricon-facebook-favicon"></i> </span> <span class="shareIcon shareIcon--tw" onclick="share('tw', 24682793)"> <i class="ricon-twitter-favicon"></i> </span> </span> </span> <script> function share(type, review_id) { var url = 'http://media.reviews.co.uk/product-snippet/' + review_id; var shareLink = ''; switch (type) { case 'fb': shareLink = 'http://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(url); break; case 'tw': shareLink = 'http://twitter.com/intent/tweet?hashtags=REVIEWSio&text=' + encodeURIComponent(url); break; } // Open url in new window window.open(shareLink, 'targetWindow', 'toolbar=no,location=0,status=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); }; </script> <a class="controlButtons__btn controlButtons__btn--report" rel="nofollow" href='/profile-modal/report-product-review?id=24682793' title="Report this review" data-toggle='ajaxmodal'> <i class="ricon-flag"></i> <span class="textContainer">Report</span> </a> </div> <div class="Review__dateSource"> Posted 11 months ago </div> </div> </div> </div> </div> <div class="u-textCenter"> <ul class="pagination"> <li class="disabled"><span>&laquo;</span></li> <li class="active" tabindex="0"><span>1</span></li> <li><a href="https://www.reviews.io/product-reviews/store/ello/Ello-Monthly-Subscription?page=2" tabindex="0">2</a></li> <li><a href="https://www.reviews.io/product-reviews/store/ello/Ello-Monthly-Subscription?page=3" tabindex="0">3</a></li> <li><a href="https://www.reviews.io/product-reviews/store/ello/Ello-Monthly-Subscription?page=4" tabindex="0">4</a></li> <li><a href="https://www.reviews.io/product-reviews/store/ello/Ello-Monthly-Subscription?page=5" tabindex="0">5</a></li> <li><a href="https://www.reviews.io/product-reviews/store/ello/Ello-Monthly-Subscription?page=6" tabindex="0">6</a></li> <li class="disabled"><span>...</span></li> <li><a href="https://www.reviews.io/product-reviews/store/ello/Ello-Monthly-Subscription?page=76" tabindex="0">76</a></li> <li><a href="https://www.reviews.io/product-reviews/store/ello/Ello-Monthly-Subscription?page=77" tabindex="0">77</a></li> <li><a href="https://www.reviews.io/product-reviews/store/ello/Ello-Monthly-Subscription?page=2" rel="next">&raquo;</a></li> </ul> </div> <script> $(function () { setAjaxModals(); }); </script> </div> </div> </div> </div> <div class='clearfix'></div> <div class="GlobalModal modal" id='modalPreview' tabindex="-1" role="dialog"> <link rel="stylesheet" href="https://assets.reviews.io/iconfont/legacy/revsglobal-pr-mod/style.css?_t=20240411"> <div class="GlobalModal__backdrop"></div> <div class="GlobalModal__dialog GlobalModal__dialog--width960" role="document"> <div class="flex-row u-flexAlignItems--stretch"> <div class="flex-col-xxs-12 flex-col-sm-6 u-displayFlex u-justifyContent--center u-flexAlignItems--center"> <div class='ImageContainer'> <img id="modalImgPreview" src="" alt=""> </div> </div> <div class="flex-col-xxs-12 flex-col-sm-6"> <div class="dialog__inner dialog__inner--spaceBetween"> <div> <div class="flex-row u-marginTop--md u-marginBottom--md"> <div class="flex-col-xxs-6 u-textLeft--all u-paddingLeft--none"> <a class="controls__button controls__button--scrollLeft" onClick="prevImage()"> <i class="ruk-icon-line-arrow--left button__icon"></i> </a> <a class="controls__button controls__button--scrollRight" onClick="nextImage()"> <i class="ruk-icon-line-arrow--right button__icon"></i> </a> </div> <div class="flex-col-xxs-6 u-textRight--all u-paddingRight--none"> <a class="controls__button" data-dismiss="modal" aria-hidden="true"> <i class="ruk-icon-line-cross button__icon"></i> </a> </div> </div> <div class="u-textLeft--all u-marginBottom--sm"> <style> #reviewPreview .Review{ margin-bottom:40px; margin-left:0!important; margin-right:0!important; padding-left:0!important; padding-right:0!important; } #reviewPreview .Review__photos { display:none; } </style> <div id="reviewPreview"> </div> </div> <div class="u-textCenter--all"> <a href="https://www.reviews.io/exit/547731" rel="nofollow" class='Button Button-md Button--outline ' target="_blank"> Visit Ello </a> </div> </div> </div> </div> </div> </div> </div> <div id='ajaxModal' class="modal fade"></div> <style> *:focus-visible { padding: 3px; border: 2px solid black; } </style> <div class="Footer"> <div class="Container Container--width1140"> <div class="flex-row"> <div class="flex-col-md-2 flex-col-sm-4 flex-col-xs-6 flex-col-xxs-12 "> <div class="Footer__list Footer__list--company"> <div class="Footer__list__item Footer__list__item--heading "> Our Company </div> <a class="Footer__list__item " href="https://www.reviews.io/business-solutions"> <span> Business Solutions </span> </a> <a class="Footer__list__item js-impressum-link" href="https://www.reviews.io/front/impressum"> <span> Impressum </span> </a> <a class="Footer__list__item " href="https://www.reviews.io/front/termsconditions"> <span> Terms &amp; Conditions </span> </a> <a class="Footer__list__item " href="https://www.reviews.io/front/user-privacy-policy"> <span> User Privacy Policy </span> </a> <a class="Footer__list__item " href="https://www.reviews.io/front/business-user-privacy-policy"> <span style="max-width: 160px;"> Business User Privacy Policy </span> </a> <a class="Footer__list__item " href="https://www.reviews.io/front/data-protection"> <span> Data Protection </span> </a> <a class="Footer__list__item " href="https://www.reviews.io/front/data-request"> <span> Data Request </span> </a> </div> </div> <div class="flex-col-md-2 flex-col-sm-4 flex-col-xs-6 flex-col-xxs-12 flex-col-md-offset-8 flex-col-sm-offset-4 flex-col-xxs-offset-0"> <div class="Footer__list"> <div class='Footer__flags clearfix'> <div class='flag-wrapper'> <a href='https://www.reviews.co.uk'><div id="gb" title="gb" class="img-thumbnail flag flag-icon flag-icon-background flag-icon-gb"></div></a> </div> <div class='flag-wrapper'> <a href='https://www.reviews.io'><div id="us" title="us" class="img-thumbnail flag flag-icon flag-icon-background flag-icon-us"></div></a> </div> <div class='flag-wrapper'> <a href='https://www.reviews.io'><div id="ca" title="ca" class="img-thumbnail flag flag-icon flag-icon-background flag-icon-ca"></div></a> </div> <div class='flag-wrapper'> <a href='https://www.reviews.io'><div id="au" title="au" class="img-thumbnail flag flag-icon flag-icon-background flag-icon-au"></div></a> </div> <div class='flag-wrapper'> <a href='https://www.reviews.io'><div id="nz" title="nz" class="img-thumbnail flag flag-icon flag-icon-background flag-icon-nz"></div></a> </div> </div> <a class="u-displayBlock u-width--100 u-textRight--all" href='/business-solutions'> <img loading="lazy" class="Footer__logo" src="https://assets.reviews.io/img/all-global-assets/logo/reviewsio-logo.svg" alt='REVIEWS.io'> </a> </div> </div> </div> </div> </div> <script> $("body").click(function() { $("#search #searchResults").fadeOut("fast"); }); $(function () { $("[data-toggle='tooltip']").tooltip(); }); </script> <script> var _curUrl = location.toString().replace(location.search, ""); if (_curUrl.indexOf('/product-reviews/')!=-1) { _curUrl = 'https://www.reviews.io/product-reviews/store/ello'; } $('.js-showDetails').on('click', function () { if (this.classList.contains('collapsed')) { this.innerHTML = "Hide Details <i class='icon-arrow-up-thin-1-01'></i>"; } else { this.innerHTML = "Show Details <i class='icon-arrow-down-thin-1-01'></i>"; } }); //Tabs actions: $('a.header__tab').click(function(){ $('.header__tab').removeClass('isSelected'); $(this).addClass('isSelected'); }); $('.header__tab').each(function(t){ if (_curUrl.indexOf('insights')!=-1 && $(this).attr('href').indexOf('insights')!=-1) { re = new RegExp( $(this).attr('href') + '/[a-z]+', 'i'); } if (_curUrl.indexOf('questions-and')!=-1 && $(this).attr('href').indexOf('questions-and')!=-1) { re = new RegExp( $(this).attr('href') + '/[a-z]+', 'i'); } else { re = new RegExp( $(this).attr('href') + '/[0-9]+', 'i'); } if (_curUrl == $(this).attr('href') || re.test(_curUrl)) { $(this).addClass('isSelected'); } }); function setActiveJSView() { var hash = location.hash; if (hash) { hash = hash.replace('#', '').toLowerCase().trim(); showActiveJSView(hash); } else { showActiveJSView('js-reviewslist'); } } function subscribePushNotifications() { OneSignal.push(function() { OneSignal.registerForPushNotifications().then(function(){ }); OneSignal.sendTag('ello', '1').then(function(){ }); }); return false; } function unsubscribePushNotifications() { OneSignal.push(function() { OneSignal.deleteTag('ello'); }); } function setSubscriptionStatus() { OneSignal.push(function() { var isPushSupported = OneSignal.isPushNotificationsSupported(); OneSignal.getTags().then(function(tags) { if (tags && tags.hasOwnProperty('ello') && tags['ello']) { $('#reviewNotifications').prop('checked', true); } else { $('#reviewNotifications').prop('checked', false); } if (isPushSupported && window.safari === undefined) { $('#pushNotificationContainer').show(); } else { return; } }); }); } function focusTrapDropDown($dropdown) { // Find all focusable elements within the dropdown var $focusableElements = $dropdown.find('button, a, input:not([type="hidden"]), select, textarea, [tabindex]:not([tabindex="-1"])'); var $firstFocusableElement = $focusableElements.first(); var $lastFocusableElement = $focusableElements.last(); // Set focus to the first focusable element if ($firstFocusableElement.length > 0) { $firstFocusableElement.focus(); } $dropdown.on('keydown', function(e) { var isTabPressed = (e.key === 'Tab' || e.keyCode === 9); if (!isTabPressed) { if (e.key === 'Escape') { $dropdown.removeClass('open'); return; } return; } if (e.shiftKey) { // Shift + Tab if ($(document.activeElement).is($firstFocusableElement)) { e.preventDefault(); $lastFocusableElement.focus(); } } else { // Tab if ($(document.activeElement).is($lastFocusableElement)) { e.preventDefault(); $firstFocusableElement.focus(); } } }); $dropdown.find('a').on('click keydown', function(e) { if (e.type === 'keydown') { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); window.location.href = $(this).attr('href'); } else { return; } } if (e.type === 'click') { window.location.href = $(this).attr('href'); } $dropdown.removeClass('open'); }); } $(document).ready(function(){ setActiveJSView(); window.onhashchange = setActiveJSView; $('.ReviewFilters__filter').on('click keydown', function (e) { if (e.type === 'keydown' && (e.key !== 'Enter' && e.key !== ' ')) { return; } e.stopPropagation(); e.preventDefault(); // Toggle the current dropdown var $currentFilter = $(this); var $currentDropDown = $currentFilter.find('.ReviewFilters__dd'); // Close all dropdowns except the current one $('.ReviewFilters__dd').not($currentDropDown).removeClass('open'); $currentDropDown.addClass('open'); if ($currentDropDown.hasClass('open')) { focusTrapDropDown($currentDropDown); } }); // Listen for clicks that are not on a filter button and close any open filter dropdowns. $(document).on('click', function (event) { if (!event.target.classList.contains('ReviewFilters__filter') && !event.target.parentElement.classList.contains('ReviewFilters__filter')) { $(document).find('.ReviewFilters__dd.open').removeClass('open'); } }); setSubscriptionStatus(); }); </script> <script defer src="/cw-assets/js/stores/components/review.js?id=4c47e4af3307a45eef83"></script> <script> $('[data-js-target]').hover(function(){ showJSFeature($(this)); }); function showJSFeature(source) { var parent = source.closest('.FeatureSlider'); $('.isOpen', parent).removeClass('isOpen'); source.addClass('isOpen'); $('img.FeatureSlider__image.isVisible', parent).removeClass('isVisible'); $('img.FeatureSlider__image.js-' + source.data('js-target'), parent).addClass('isVisible'); } function showSearchInputField() { $(".js-search-inputfield").addClass("isActive"); let searchField = $('.search__field'); searchField.focus(); searchField.attr("aria-hidden", false); searchField.attr("tabindex", "0"); } $(".js-show-search-inputfield").click(showSearchInputField); // Keydown event handler for keyboard accessibility $(".js-show-search-inputfield").keydown(function(event) { if (event.key === "Enter" || event.key === " ") { event.preventDefault(); showSearchInputField(); } }); function hideSearchInputField() { $(".js-search-inputfield").removeClass("isActive"); let searchField = $('.search__field'); searchField.blur(); searchField.attr("aria-hidden", true); searchField.attr("tabindex", "-1"); } $(".js-hide-search-inputfield").click(hideSearchInputField); $(".search__field").keydown(function(event) { if (event.key === "Escape") { hideSearchInputField(); } }); $('#pushNotificationContainer').on('click keydown', function(e) { if (e.type === 'keydown' && (e.key !== 'Enter' && e.key !== ' ')) { return; } e.preventDefault(); let toggleInput = $(this).children('#reviewNotifications'); let isChecked = toggleInput.prop('checked'); toggleInput.prop('checked', !isChecked).trigger('change'); let pressedState = toggleInput.prop('checked'); $(this).attr('aria-pressed', pressedState); if ($(toggleInput).is(':checked')) { subscribePushNotifications(); } else { unsubscribePushNotifications(); } }); !function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware"];analytics.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);analytics.push(t);return analytics}};for(var e=0;e<analytics.methods.length;e++){var key=analytics.methods[e];analytics[key]=analytics.factory(key)}analytics.load=function(key,e){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.src="https://cdn.segment.com/analytics.js/v1/" + key + "/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n);analytics._loadOptions=e};analytics._writeKey="zmSV3fPd1UeOky2smEXPhenyRwufNEI7";;analytics.SNIPPET_VERSION="4.15.3"; analytics.load("zmSV3fPd1UeOky2smEXPhenyRwufNEI7"); analytics.page(); }}(); </script> <link href="https://cdn.icomoon.io/40686/revsuk-global/style-cf.css?ukjukw" rel="stylesheet" media="screen"> <link href="https://assets.reviews.io/iconfont/legacy/revsglobal-pr-mod/style.css?_t=20240411" rel="stylesheet" media="screen"> <script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"NRJS-a34ab2cc067f356d5ca","applicationID":"550531683","transactionName":"MlIBN0tZXRBSAUxdCQsYIgBNUVwNHBFMWxQARE0TS1dXFlAWSxoVDVgU","queueTime":0,"applicationTime":701,"atts":"HhUCQQNDTh4=","errorBeacon":"bam.nr-data.net","agent":""}</script></body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10