CINXE.COM
JSON Injection
<!doctype html> <html lang="en-US"> <head> <meta charset="utf-8"> <meta http-equiv="x-ua-compatible" content="ie=edge"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="zd-site-verification" content="zbchuxl9kjemdkdydvjh49" /> <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> <title>JSON Injection</title> <meta name="description" content="Discover what to know about JSON injection, including what it is, how it relates to application security, and answers to common questions. Learn more here." /> <link rel="canonical" href="https://www.invicti.com/learn/json-injection/" /> <meta property="og:locale" content="en_US" /> <meta property="og:type" content="article" /> <meta property="og:title" content="JSON Injection" /> <meta property="og:description" content="Discover what to know about JSON injection, including what it is, how it relates to application security, and answers to common questions. Learn more here." /> <meta property="og:url" content="https://www.invicti.com/learn/json-injection/" /> <meta property="og:site_name" content="Invicti" /> <meta property="article:published_time" content="2022-11-25T14:03:26+00:00" /> <meta property="article:modified_time" content="2024-05-17T08:35:08+00:00" /> <meta property="og:image" content="https://cdn.invicti.com/app/uploads/2022/03/16084137/Learn_02_featured.png" /> <meta property="og:image:width" content="600" /> <meta property="og:image:height" content="315" /> <meta property="og:image:type" content="image/png" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:label1" content="Est. reading time" /> <meta name="twitter:data1" content="7 minutes" /> <script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://www.invicti.com/learn/json-injection/","url":"https://www.invicti.com/learn/json-injection/","name":"JSON Injection","isPartOf":{"@id":"https://www.invicti.com/#website"},"primaryImageOfPage":{"@id":"https://www.invicti.com/learn/json-injection/#primaryimage"},"image":{"@id":"https://www.invicti.com/learn/json-injection/#primaryimage"},"thumbnailUrl":"https://cdn.invicti.com/app/uploads/2022/03/16084137/Learn_02_featured.png","datePublished":"2022-11-25T14:03:26+00:00","dateModified":"2024-05-17T08:35:08+00:00","description":"Discover what to know about JSON injection, including what it is, how it relates to application security, and answers to common questions. Learn more here.","breadcrumb":{"@id":"https://www.invicti.com/learn/json-injection/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https://www.invicti.com/learn/json-injection/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https://www.invicti.com/learn/json-injection/#primaryimage","url":"https://cdn.invicti.com/app/uploads/2022/03/16084137/Learn_02_featured.png","contentUrl":"https://cdn.invicti.com/app/uploads/2022/03/16084137/Learn_02_featured.png","width":600,"height":315},{"@type":"BreadcrumbList","@id":"https://www.invicti.com/learn/json-injection/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.invicti.com/"},{"@type":"ListItem","position":2,"name":"JSON Injection"}]},{"@type":"WebSite","@id":"https://www.invicti.com/#website","url":"https://www.invicti.com/","name":"Invicti","description":"Web Application and API Security For Enterprise","publisher":{"@id":"https://www.invicti.com/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.invicti.com/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@context":"http://schema.org","@type":"Organization","name":"Invicti","logo":"https://cdn.invicti.com/branding/invicti-logo-black.svg","image":"https://cdn.invicti.com/branding/invicti-logo-black.svg","telephone":["+1 737-263-3333"],"email":"contact@invicti.com","url":"https://www.invicti.com","sameAs":["https://facebook.com/Invicti-Security-100090617259790/","https://twitter.com/InvictiSecurity","https://www.linkedin.com/company/invicti-security"],"address":{"@type":"PostalAddress","streetAddress":"1000 N Lamar Blvd Suite 300","addressLocality":"Austin","addressRegion":"Texas","addressCountry":"United States","postalCode":"78703"}}]}</script> <link rel='dns-prefetch' href='//www.googletagmanager.com' /> <style id='classic-theme-styles-inline-css' type='text/css'> /*! This file is auto-generated */ .wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} </style> <style id='global-styles-inline-css' type='text/css'> :root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} :where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;} :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} :root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;} .ccfg-unique-6c81af-b7 table,.ccfg-unique-6c81af-b7 tr,.ccfg-unique-6c81af-b7 td,.ccfg-unique-6c81af-b7 th{border:none;text-align:left} </style> <meta name="generator" content="Site Kit by Google 1.136.0" /><meta name="google-site-verification" content="ceMUxhM6CVvCVJcqefKlgIRfKWEkgktxWLDpqhgSIkM"> <!-- Google Tag Manager snippet added by Site Kit --> <script type="text/javascript"> /* <![CDATA[ */ ( 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-M7R7MXJ' ); /* ]]> */ </script> <!-- End Google Tag Manager snippet added by Site Kit --> <link rel="icon" href="https://cdn.invicti.com/app/uploads/2022/03/08125959/cropped-favicon-32x32.png" sizes="32x32" /> <link rel="icon" href="https://cdn.invicti.com/app/uploads/2022/03/08125959/cropped-favicon-192x192.png" sizes="192x192" /> <link rel="apple-touch-icon" href="https://cdn.invicti.com/app/uploads/2022/03/08125959/cropped-favicon-180x180.png" /> <meta name="msapplication-TileImage" content="https://cdn.invicti.com/app/uploads/2022/03/08125959/cropped-favicon-270x270.png" /> <style id="theme-css-assets">/*! tailwindcss v3.0.18 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e5e5;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-size:100%;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#a3a3a3;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}.container-small{margin-left:auto;margin-right:auto}@media (min-width:1200px){.container-small{margin-top:6.25rem;padding-left:375px;padding-right:375px;width:100%}@media (min-width:992px){.container-small{margin-top:0;padding-left:5rem;padding-right:5rem}}.container-small{max-width:1100px!important}}*,:after,:before{--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{margin-left:auto;margin-right:auto;padding-left:25px;padding-right:25px;width:100%}@media (min-width:100%){.container{max-width:100%;padding-left:25px;padding-right:25px}}@media (min-width:1380px){.container{max-width:1380px;padding-left:30px;padding-right:30px}}@media (min-width:1460px){.container{max-width:1460px;padding-left:30px;padding-right:30px}}@media (min-width:1560px){.container{max-width:1560px;padding-left:30px;padding-right:30px}}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.top-10{top:.625rem}.left-10{left:.625rem}.isolate{isolation:isolate}.z-\[99\]{z-index:99}.order-2{order:2}.col-span-9{grid-column:span 9/span 9}.mb-10{margin-bottom:.625rem}.mb-60{margin-bottom:3.75rem}.mt-50{margin-top:3.125rem}.mt-6{margin-top:.375rem}.mt-32{margin-top:2rem}.mb-32{margin-bottom:2rem}.mt-20{margin-top:1.25rem}.mt-15{margin-top:.9375rem}.mb-34{margin-bottom:2.125rem}.mt-10{margin-top:.625rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-\[36px\]{height:36px}.h-48{height:3rem}.min-h-screen{min-height:100vh}.w-1\/5{width:20%}.w-1\/4{width:25%}.w-1\/3{width:33.333333%}.w-2\/5{width:40%}.w-2\/4{width:50%}.w-3\/5{width:60%}.w-2\/3{width:66.666667%}.w-3\/4{width:75%}.w-4\/5{width:80%}.w-10\/12{width:83.333333%}.w-11\/12{width:91.666667%}.w-full{width:100%}.w-48{width:3rem}.w-1\/2{width:50%}.grow{flex-grow:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-4{gap:.25rem}.gap-20{gap:1.25rem}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.3125rem*var(--tw-space-y-reverse));margin-top:calc(.3125rem*(1 - var(--tw-space-y-reverse)))}.self-center{align-self:center}.overflow-hidden{overflow:hidden}.rounded-sm{border-radius:.125rem}.rounded{border-radius:.25rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.border{border-width:1px}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-primary-invictipurple{--tw-bg-opacity:1;background-color:rgb(89 23 105/var(--tw-bg-opacity))}.bg-secondary-darkpurple{--tw-bg-opacity:1;background-color:rgb(60 16 83/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 229 229/var(--tw-bg-opacity))}.bg-neutral-bone,.bg-sky{--tw-bg-opacity:1;background-color:rgb(250 249 247/var(--tw-bg-opacity))}.bg-dark{--tw-bg-opacity:1;background-color:rgb(16 24 32/var(--tw-bg-opacity))}.bg-nsgray{--tw-bg-opacity:1;background-color:rgb(99 101 105/var(--tw-bg-opacity))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.fill-dark{fill:#101820}.p-10{padding:.625rem}.px-16{padding-left:1rem;padding-right:1rem}.px-0{padding-left:0;padding-right:0}.px-15{padding-left:.9375rem;padding-right:.9375rem}.py-18{padding-bottom:1.125rem;padding-top:1.125rem}.pt-20{padding-top:1.25rem}.pb-10{padding-bottom:.625rem}.pt-40{padding-top:2.5rem}.text-center{text-align:center}.font-circular{font-family:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif}.text-\[13px\]{font-size:13px}.text-h-xs{font-size:2rem}.text-h-sm{font-size:2.125rem}.text-h-md{font-size:2.25rem}.text-h-lg{font-size:2.375rem}.text-h-xl{font-size:2.5rem}.text-h-2xl{font-size:2.625rem}.text-h-3xl{font-size:2.75rem}.text-h-4xl{font-size:2.875rem}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.375rem}.text-3xl{font-size:1.5rem}.text-4xl{font-size:1.625rem}.text-5xl{font-size:1.75rem}.text-6xl{font-size:1.875rem}.font-medium{font-weight:500}.font-bold{font-weight:700}.italic{font-style:italic}.text-gray-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity))}.text-red-900{--tw-text-opacity:1;color:rgb(136 19 55/var(--tw-text-opacity))}.text-primary-invictipurple{--tw-text-opacity:1;color:rgb(89 23 105/var(--tw-text-opacity))}.text-dark{--tw-text-opacity:1;color:rgb(16 24 32/var(--tw-text-opacity))}.text-nsgray{--tw-text-opacity:1;color:rgb(99 101 105/var(--tw-text-opacity))}.text-customcolors-32{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}.opacity-80{opacity:.8}.shadow-sm{--tw-shadow:0 0.0625rem 0.125rem 0 rgba(0,0,0,0.05);--tw-shadow-colored:0 0.0625rem 0.125rem 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.blur{--tw-blur:blur(8px)}.blur,.grayscale{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale:grayscale(100%)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-500{transition-duration:.5s}.hover\:border-secondary-darkpurple:hover{--tw-border-opacity:1;border-color:rgb(60 16 83/var(--tw-border-opacity))}.hover\:text-secondary-darkpurple:hover{--tw-text-opacity:1;color:rgb(60 16 83/var(--tw-text-opacity))}.hover\:text-dark:hover{--tw-text-opacity:1;color:rgb(16 24 32/var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.hover\:opacity-80:hover{opacity:.8}.hover\:transition-opacity:hover{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}@media (min-width:576px){.sm\:block{display:block}.sm\:hidden{display:none}.sm\:w-full{width:100%}}@media (min-width:767px){.md\:ml-15{margin-left:.9375rem}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:w-1\/5{width:20%}.md\:w-1\/4{width:25%}.md\:w-1\/3{width:33.333333%}.md\:w-2\/5{width:40%}.md\:w-2\/4{width:50%}.md\:w-3\/5{width:60%}.md\:w-2\/3{width:66.666667%}.md\:w-3\/4{width:75%}.md\:w-4\/5{width:80%}.md\:w-10\/12{width:83.333333%}.md\:w-11\/12{width:91.666667%}.md\:w-full{width:100%}.md\:w-6\/12{width:50%}.md\:flex-row{flex-direction:row}.md\:px-25{padding-left:1.5625rem;padding-right:1.5625rem}.md\:pr-15{padding-right:.9375rem}.md\:pl-15{padding-left:.9375rem}.md\:text-sm{font-size:.875rem}}@media (min-width:769px){.md2\:block{display:block}.md2\:hidden{display:none}}@media (min-width:992px){.lg\:order-2{order:2}.lg\:mt-60{margin-top:3.75rem}.lg\:mb-60{margin-bottom:3.75rem}.lg\:block{display:block}.lg\:hidden{display:none}.lg\:w-1\/5{width:20%}.lg\:w-1\/4{width:25%}.lg\:w-1\/3{width:33.333333%}.lg\:w-2\/5{width:40%}.lg\:w-2\/4{width:50%}.lg\:w-3\/5{width:60%}.lg\:w-2\/3{width:66.666667%}.lg\:w-3\/4{width:75%}.lg\:w-4\/5{width:80%}.lg\:w-10\/12{width:83.333333%}.lg\:w-11\/12{width:91.666667%}.lg\:w-full{width:100%}.lg\:w-7\/12{width:58.333333%}.lg\:w-5\/12{width:41.666667%}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:gap-10{gap:.625rem}.lg\:px-0{padding-left:0;padding-right:0}}@media (min-width:1200px){.xl\:block{display:block}.xl\:hidden{display:none}.xl\:pt-60{padding-top:3.75rem}}@media (min-width:1400px){.\32xl\:block{display:block}.\32xl\:hidden{display:none}}@media (min-width:1620px){.\33xl\:block{display:block}.\33xl\:hidden{display:none}} :root{--color-nsblue-default:#591769;--color-nsblue-dark:#3c1053;--color-nsblue-lightest:#faf9f7;--color-sky-default:#faf9f7;--color-sky-light:#faf9f7;--color-sky-lightest:#faf9f7;--color-nsgray-default:#636569;--color-nsgray-lightest:#faf9f7;--color-nsdark:#101820;--color-acunetix:#fa4216;--color-blue:#591769;--color-dark-blue:#3c1053;--color-dark:#101820;--body-font:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif;--heading-font:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif;--box-shadow-1:0 3px 15px 0 rgb(0 0 0/10%);--box-shadow-2:0 5px 50px -1px rgb(0 0 0/5%);--color-entrycontent-default:#636569;--color-entrycontent-heading:#101820;--color-entrycontent-light:#636569;--color-sky-more:#cc8bdb;--color-nsblue-medium:#7a2582;--color-customcolors-1:#d9d8d6;--color-customcolors-2:#fff;--color-customcolors-3:#3c1053;--color-customcolors-4:#636569;--color-customcolors-5:#3c1053;--color-customcolors-6:#faf9f7;--color-customcolors-7:#636569;--color-customcolors-8:#b1b1b2;--color-customcolors-9:#636569;--color-customcolors-10:#b1b1b2;--color-customcolors-11:#b1b1b2;--color-customcolors-12:#faf9f7;--color-customcolors-13:#d73829;--color-customcolors-14:#faf9f7;--color-customcolors-15:#b1b1b2;--color-customcolors-16:#f15d2a;--color-customcolors-17:#636569;--color-customcolors-18:#f15d2a;--color-customcolors-19:#faf9f7;--color-customcolors-20:#cc8bdb;--color-customcolors-21:#ff8001;--color-customcolors-22:#cc8bdb;--color-customcolors-23:#f15d2a;--color-customcolors-24:#636569;--color-customcolors-25:#d9d8d6;--color-customcolors-26:#b1b1b2;--color-customcolors-27:#636569;--color-customcolors-28:#d9d8d6;--color-customcolors-29:#b1b1b2;--color-customcolors-30:rgba(8,49,126,0);--color-customcolors-31:#fff;--color-customcolors-32:#fff;--color-customcolors-33:#cc8bdb;--color-customcolors-34:#636569;--color-customcolors-35:#b1b1b2;--color-customcolors-36:#faf9f7;--color-customcolors-37:invert(43%) sepia(32%) saturate(1361%) hue-rotate(245deg) brightness(91%) contrast(67%);--color-customcolors-38:#faf9f7;--color-customcolors-39:#faf9f7;--color-customcolors-40:#faf9f7;--color-customcolors-41:#faf9f7;--color-customcolors-42:#3c1053;--color-customcolors-43:#2c51bd;--color-customcolors-44:#636569;--color-customcolors-45:#101820;--color-customcolors-46:rgba(204,139,219,0.05);--color-primary-invictipurple:#591769;--color-secondary-darkpurple:#3c1053;--color-secondary-mediumpurple:#7a2582;--color-secondary-mauve:#a35eb4;--color-secondary-lightmauve:#cc8bdb;--color-secondary-magenta:#c554d0;--color-secondary-grape:#422991;--color-secondary-softpurple:#fdfafe;--color-secondary-periwinkle:#5d40bd;--color-neutral-invictiblack:#101820;--color-neutral-darkgray:#636569;--color-neutral-mediumgray:#b1b1b2;--color-neutral-lightgray:#d9d8d6;--color-neutral-bone:#faf9f7;--color-accent-darkred:#910710;--color-accent-darkorange:#d73829;--color-accent-brightorange:#f15d2a;--color-accent-lightorange:#ff8001;--color-accent-darkblue:#202b7b;--color-accent-mediumblue:#2c51bd;--color-accent-brightblue:#06aeef;--color-accent-lightblue:#05d5ff;--color-gradient-purple:linear-gradient(90deg,#3c1053,#7a2582);--color-gradient-purple-reverse:linear-gradient(90deg,#7a2582,#3c1053);--color-gradient-purple-radial:radial-gradient(circle,#3c1053 0%,#7a2582 100%);--color-gradient-purple-radial-reverse:radial-gradient(circle,#7a2582 0%,#3c1053 100%);--color-gradient-darksteel:linear-gradient(90deg,#101820,#636569);--color-gradient-darksteel-reverse:linear-gradient(90deg,#636569,#101820);--color-gradient-darksteel-radial:radial-gradient(circle,#101820 0%,#636569 100%);--color-gradient-darksteel-radial-reverse:radial-gradient(circle,#636569 0%,#101820 100%);--font-weight-thin:100;--font-weight-extralight:200;--font-weight-light:300;--font-weight-regular:400;--font-weight-book:450;--font-weight-medium:500;--font-weight-semibold:500;--font-weight-bold:700;--font-weight-extrabold:900;--font-weight-black:900;--font-weight-extrablack:950}@font-face{font-display:swap;font-family:Circular XX;font-stretch:100%;font-style:normal;font-weight:950;src:url(/app/themes/netsparker/public/fonts/circular/CircularXXWeb-ExtraBlack.woff2) format("woff2")}@font-face{font-display:swap;font-family:Circular XX;font-stretch:100%;font-style:italic;font-weight:950;src:url(/app/themes/netsparker/public/fonts/circular/CircularXXWeb-ExtraBlackItalic.woff2) format("woff2")}@font-face{font-display:swap;font-family:Circular XX;font-stretch:100%;font-style:normal;font-weight:900;src:url(/app/themes/netsparker/public/fonts/circular/CircularXXWeb-Black.woff2) format("woff2")}@font-face{font-display:swap;font-family:Circular XX;font-stretch:100%;font-style:italic;font-weight:900;src:url(/app/themes/netsparker/public/fonts/circular/CircularXXWeb-BlackItalic.woff2) format("woff2")}@font-face{font-display:swap;font-family:Circular XX;font-stretch:100%;font-style:normal;font-weight:700;src:url(/app/themes/netsparker/public/fonts/circular/CircularXXWeb-Bold.woff2) format("woff2")}@font-face{font-display:swap;font-family:Circular XX;font-stretch:100%;font-style:italic;font-weight:700;src:url(/app/themes/netsparker/public/fonts/circular/CircularXXWeb-BoldItalic.woff2) format("woff2")}@font-face{font-display:swap;font-family:Circular XX;font-stretch:100%;font-style:normal;font-weight:500;src:url(/app/themes/netsparker/public/fonts/circular/CircularXXWeb-Medium.woff2) format("woff2")}@font-face{font-display:swap;font-family:Circular XX;font-stretch:100%;font-style:italic;font-weight:500;src:url(/app/themes/netsparker/public/fonts/circular/CircularXXWeb-MediumItalic.woff2) format("woff2")}@font-face{font-display:swap;font-family:Circular XX;font-stretch:100%;font-style:normal;font-weight:450;src:url(/app/themes/netsparker/public/fonts/circular/CircularXXWeb-Book.woff2) format("woff2")}@font-face{font-display:swap;font-family:Circular XX;font-stretch:100%;font-style:italic;font-weight:450;src:url(/app/themes/netsparker/public/fonts/circular/CircularXXWeb-BookItalic.woff2) format("woff2")}@font-face{font-display:swap;font-family:Circular XX;font-stretch:100%;font-style:normal;font-weight:400;src:url(/app/themes/netsparker/public/fonts/circular/CircularXXWeb-Regular.woff2) format("woff2")}@font-face{font-display:swap;font-family:Circular XX;font-stretch:100%;font-style:italic;font-weight:400;src:url(/app/themes/netsparker/public/fonts/circular/CircularXXWeb-Italic.woff2) format("woff2")}@font-face{font-display:swap;font-family:Circular XX;font-stretch:100%;font-style:normal;font-weight:300;src:url(/app/themes/netsparker/public/fonts/circular/CircularXXWeb-Light.woff2) format("woff2")}@font-face{font-display:swap;font-family:Circular XX;font-stretch:100%;font-style:italic;font-weight:300;src:url(/app/themes/netsparker/public/fonts/circular/CircularXXWeb-LightItalic.woff2) format("woff2")}@font-face{font-display:swap;font-family:Circular XX;font-stretch:100%;font-style:normal;font-weight:100;src:url(/app/themes/netsparker/public/fonts/circular/CircularXXWeb-Thin.woff2) format("woff2")}@font-face{font-display:swap;font-family:Circular XX;font-stretch:100%;font-style:italic;font-weight:100;src:url(/app/themes/netsparker/public/fonts/circular/CircularXXWeb-ThinItalic.woff2) format("woff2")}*,:after,:before{word-wrap:break-word;box-sizing:border-box;overflow-wrap:break-word}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif;scroll-behavior:smooth}body{--tw-text-opacity:1;color:rgb(16 24 32/var(--tw-text-opacity));font-weight:400;min-height:100vh}@media (min-width:576px){body{font-size:1rem}}@media (min-width:769px){body{font-size:1.25rem}}pre{overflow:auto}img,video{min-width:1px}.block-editor-writing-flow{font-size:1rem;line-height:1.5}.site-main{margin-bottom:3rem;margin-top:3rem}.content{min-height:calc(100vh - var(--add-height, 50vh));overflow-x:clip}.content .wp-block-quote.is-style-default{--tw-border-opacity:1;border-color:rgb(204 139 219/var(--tw-border-opacity))}address,blockquote,dl,iframe,ol,pre,table,ul{margin-bottom:1rem}a{--tw-text-opacity:1;color:rgb(122 37 130/var(--tw-text-opacity));font-family:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif}a.sm{font-size:.75rem}a.md{font-size:16px}a.xl{font-size:1.25rem;font-weight:700}@media (min-width:767px){a.xl{font-size:1.5rem}}a svg{display:inline-block}a:hover{--tw-text-opacity:1;color:rgb(60 16 83/var(--tw-text-opacity))}.block-padding-large{padding-bottom:3.125rem;padding-top:3.125rem}@media (min-width:769px){.block-padding-large{padding-bottom:6.25rem;padding-top:6.25rem}}.block-bg-light-gary,.block-bg-sk{--tw-bg-opacity:1;background-color:rgb(250 249 247/var(--tw-bg-opacity))}.block-bg-nsblue,.block-bg-primary-invictipurple{--tw-bg-opacity:1;background-color:rgb(89 23 105/var(--tw-bg-opacity))}.block-bg-secondary-darkpurple{--tw-bg-opacity:1;background-color:rgb(60 16 83/var(--tw-bg-opacity))}.block-bg-secondary-mediumpurple{--tw-bg-opacity:1;background-color:rgb(122 37 130/var(--tw-bg-opacity))}.block-bg-secondary-mauve{--tw-bg-opacity:1;background-color:rgb(163 94 180/var(--tw-bg-opacity))}.block-bg-secondary-lightmauve{--tw-bg-opacity:1;background-color:rgb(204 139 219/var(--tw-bg-opacity))}.block-bg-secondary-magenta{--tw-bg-opacity:1;background-color:rgb(197 84 208/var(--tw-bg-opacity))}.block-bg-secondary-grape{--tw-bg-opacity:1;background-color:rgb(66 41 145/var(--tw-bg-opacity))}.block-bg-secondary-periwinkle{--tw-bg-opacity:1;background-color:rgb(93 64 189/var(--tw-bg-opacity))}.block-bg-secondary-softpurple{--tw-bg-opacity:1;background-color:rgb(253 250 254/var(--tw-bg-opacity))}.block-bg-neutral-invictiblack{--tw-bg-opacity:1;background-color:rgb(16 24 32/var(--tw-bg-opacity))}.block-bg-neutral-darkgray{--tw-bg-opacity:1;background-color:rgb(99 101 105/var(--tw-bg-opacity))}.block-bg-neutral-mediumgray{--tw-bg-opacity:1;background-color:rgb(177 177 178/var(--tw-bg-opacity))}.block-bg-neutral-lightgray{--tw-bg-opacity:1;background-color:rgb(217 216 214/var(--tw-bg-opacity))}.block-bg-neutral-bone{--tw-bg-opacity:1;background-color:rgb(250 249 247/var(--tw-bg-opacity))}.block-bg-accent-darkred{--tw-bg-opacity:1;background-color:rgb(145 7 16/var(--tw-bg-opacity))}.block-bg-accent-darkorange{--tw-bg-opacity:1;background-color:rgb(215 56 41/var(--tw-bg-opacity))}.block-bg-accent-brightorange{--tw-bg-opacity:1;background-color:rgb(241 93 42/var(--tw-bg-opacity))}.block-bg-accent-lightorange{--tw-bg-opacity:1;background-color:rgb(255 128 1/var(--tw-bg-opacity))}.block-bg-accent-darkblue{--tw-bg-opacity:1;background-color:rgb(32 43 123/var(--tw-bg-opacity))}.block-bg-accent-mediumblue{--tw-bg-opacity:1;background-color:rgb(44 81 189/var(--tw-bg-opacity))}.block-bg-accent-brightblue{--tw-bg-opacity:1;background-color:rgb(6 174 239/var(--tw-bg-opacity))}.block-bg-accent-lightblue{--tw-bg-opacity:1;background-color:rgb(5 213 255/var(--tw-bg-opacity))}.screen-reader-text{clip:rect(1px,1px,1px,1px);word-wrap:normal!important;border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.smaller-container{max-width:1024px}.small-container{max-width:1280px}.full-container{max-width:100%}.stretch-wrapper{left:50%;margin-left:-50vw;position:relative;width:100vw}.normal-vspace{padding-bottom:37px;padding-top:37px}@media (min-width:992px){.normal-vspace{padding-bottom:75px;padding-top:75px}}.small-vspace{padding-bottom:25px;padding-top:25px}@media (min-width:992px){.small-vspace{padding-bottom:50px;padding-top:50px}}.large-vspace{padding-bottom:50px;padding-top:50px}@media (min-width:992px){.large-vspace{padding-bottom:150px;padding-top:150px}}.lg-hidden{display:none}@media (min-width:992px){.lg-hidden{display:block}}.md-hidden{display:none}@media (min-width:767px){.md-hidden{display:block}}.sm-hidden{display:none}@media (min-width:576px){.sm-hidden{display:block}}.lg-break-hidden br{display:none}@media (min-width:992px){.lg-break-hidden br{display:block}}.md-break-hidden br{display:none}@media (min-width:767px){.md-break-hidden br{display:block}}.sm-break-hidden br{display:none}@media (min-width:576px){.sm-break-hidden br{display:block}}.lg-visible{display:block}@media (min-width:992px){.lg-visible{display:none}}.md-visible{display:block}@media (min-width:767px){.md-visible{display:none}}.sm-visible{display:block}@media (min-width:576px){.sm-visible{display:none}}.wp-block-image.is-style-rounded img{border-radius:50%}.alignleft{float:left;margin-bottom:1rem;margin-right:1rem}.alignright{float:right;margin-bottom:1rem;margin-left:1rem}.aligncenter{margin:1rem auto}.alignnone{margin-bottom:1rem}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:1.16}.h1,h1{font-size:1.75rem;font-weight:700;margin-bottom:2rem}@media (min-width:767px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:1.75rem;font-weight:700;margin-bottom:1.5rem}@media (min-width:769px){.h2,h2{font-size:2.25rem}}.h3,h3{font-size:1.375rem;margin-bottom:1rem}@media (min-width:767px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:1.375rem;margin-bottom:.75rem}.h5,h5{font-size:.875rem}.svg-sprite-wrapper{display:none}.btn{border-radius:.25rem;font-family:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:1.125rem;font-weight:500;line-height:1.5rem;padding:.625rem 1.75rem;text-align:center}.btn--primary{background-color:rgb(122 37 130/var(--tw-bg-opacity));border-color:rgb(122 37 130/var(--tw-border-opacity));border-width:2px}.btn--primary,.btn--primary:hover{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn--primary:hover{background-color:rgb(89 23 105/var(--tw-bg-opacity));border-color:rgb(89 23 105/var(--tw-border-opacity))}.btn--primary-light{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(255 255 255/var(--tw-border-opacity));border-width:2px;color:rgb(16 24 32/var(--tw-text-opacity))}.btn--primary-light:hover{--tw-text-opacity:1;color:rgb(122 37 130/var(--tw-text-opacity))}.btn--secondary{background-color:rgb(255 255 255/var(--tw-bg-opacity));border-width:2px;color:rgb(89 23 105/var(--tw-text-opacity));display:inline-block}.btn--secondary,.btn--secondary:hover{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;border-color:rgb(122 37 130/var(--tw-border-opacity))}.btn--secondary:hover{background-color:rgb(122 37 130/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.btn--border{--tw-border-opacity:1;--tw-text-opacity:1;border-color:rgb(122 37 130/var(--tw-border-opacity));border-width:2px;color:rgb(122 37 130/var(--tw-text-opacity))}.btn--border:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(122 37 130/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.btn--border-light{--tw-border-opacity:1;--tw-text-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity));border-width:2px;color:rgb(255 255 255/var(--tw-text-opacity))}.btn--border-light:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));color:rgb(122 37 130/var(--tw-text-opacity))}.btn--full{display:block;width:100%}.btn--hero{display:inline-block;margin-top:1.875rem}.button{padding:1rem}input:not(.button),textarea{padding:.5rem .75rem}@media (min-width:767px){input:not(.button),textarea{padding-bottom:.625rem;padding-top:.625rem}}label{display:block;font-weight:500;margin-bottom:1rem}.search-form{position:relative;width:100%}.search-form .search-field{--tw-text-opacity:1;background-color:transparent;border-radius:.5rem;border-width:1px;color:rgb(0 0 0/var(--tw-text-opacity));padding:.75rem;width:100%}.search-form button{height:100%;padding-left:1rem;padding-right:1rem;position:absolute;right:0;text-align:center;top:0}.search-form button svg{font-size:1rem;height:1rem}.content-form{--tw-bg-opacity:1;--tw-shadow:rgb(0 0 0/15%) 0 7px 29px 0;--tw-shadow-colored:0 7px 29px 0 var(--tw-shadow-color);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.25rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);margin-left:auto;margin-right:auto;padding:1.75rem}@media (min-width:767px){.content-form{padding-bottom:2.875rem;padding-left:38px;padding-right:38px;padding-top:2.875rem}}@media (min-width:992px){.content-form{margin-left:0;margin-right:0;max-width:500px}}.content-form__heading{font-family:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:1.25rem;font-weight:300;margin-bottom:1.875rem;text-align:center}@media (min-width:767px){.content-form__heading{font-size:2.25rem}}.ns-form>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.25rem*var(--tw-space-y-reverse));margin-top:calc(1.25rem*(1 - var(--tw-space-y-reverse)))}.ns-form{text-align:center}.form-group .iti{font-size:1rem;width:100%}@media (max-width:500px){.form-group .iti .iti__country-list{min-width:80vw}}.form-group .iti__flag-container:focus{--tw-border-opacity:1;border-color:rgb(16 24 32/var(--tw-border-opacity));outline:2px solid transparent;outline-offset:2px}.form-group.optin{align-items:flex-start;display:flex;gap:.5rem;justify-content:center;margin-top:1.25rem}@media (min-width:767px){.form-group.optin{align-items:center}}.form-group.optin input{-webkit-appearance:none;appearance:none;background-color:rgb(255 255 255/var(--tw-bg-opacity));background-position:50%;background-repeat:no-repeat;background-size:contain;border-color:rgb(212 212 212/var(--tw-border-opacity));border-radius:.125rem;border-width:1px;cursor:pointer;flex:none;height:12px;margin-right:.125rem;margin-top:.1875rem;padding:0;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);vertical-align:top;width:12px}.form-group.optin input,.form-group.optin input:checked{--tw-border-opacity:1;--tw-bg-opacity:1}.form-group.optin input:checked{background-color:rgb(89 23 105/var(--tw-bg-opacity));border-color:rgb(89 23 105/var(--tw-border-opacity))}.form-group.optin input:focus{outline:2px solid transparent;outline-offset:2px}@media (min-width:767px){.form-group.optin input{margin-top:.25rem}}.form-group.optin input:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3E%3C/svg%3E")}.form-group.optin label{font-size:13px!important;margin-bottom:0!important;text-align:center!important}input[type=email],input[type=number],input[type=tel],input[type=text],select,textarea{--tw-border-opacity:1;border:1px solid rgb(212 212 212/var(--tw-border-opacity));border-radius:.25rem;font-size:.875rem;font-weight:400;height:3.125rem;outline:2px solid transparent;outline-offset:2px;width:100%}input[type=email]:focus,input[type=number]:focus,input[type=tel]:focus,input[type=text]:focus,select:focus,textarea:focus{--tw-border-opacity:1;border-color:rgb(16 24 32/var(--tw-border-opacity))}input[type=email]:focus::placeholder,input[type=number]:focus::placeholder,input[type=tel]:focus::placeholder,input[type=text]:focus::placeholder,select:focus::placeholder,textarea:focus::placeholder{--tw-placeholder-opacity:1;color:rgb(163 163 163/var(--tw-placeholder-opacity))}@media (min-width:767px){input[type=email],input[type=number],input[type=tel],input[type=text],select,textarea{font-size:1rem}}textarea{height:auto}select{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));background-image:none;cursor:default;display:block;font-size:1rem;line-height:48px;margin:0;padding:0 .75rem;text-transform:none;white-space:pre;width:100%}select:focus{outline:2px solid transparent;outline-offset:2px}form .btn{padding-bottom:13px;padding-top:13px}form label.error{--tw-text-opacity:1;color:rgb(244 63 94/var(--tw-text-opacity));font-size:13.6px;font-weight:500;margin-top:.3125rem;text-align:left}form .error:not(label){--tw-border-opacity:1;--tw-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #1665fb;--tw-shadow-colored:inset 0 1px 1px var(--tw-shadow-color),0 0 6px var(--tw-shadow-color);border-color:rgb(89 23 105/var(--tw-border-opacity));box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.page-pricing-data .content-form .btn{margin-left:auto;margin-right:auto;margin-top:3rem;width:auto}#pardot-err{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity));border-radius:.125rem;color:rgb(255 255 255/var(--tw-text-opacity));padding:1.25rem;text-align:left}#pardot-err h5{display:flex;font-size:.875rem;font-weight:500;gap:.3125rem;margin-bottom:.4375rem}#pardot-err p{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));font-size:.875rem;margin-bottom:.125rem}.modal{bottom:0;display:none;left:0;overflow:hidden;position:fixed;right:0;top:0;z-index:1050}.modal.modal-open{display:block;overflow-x:hidden;overflow-y:auto}.modal .modal-dialog{--tw-translate-x:-50%;--tw-translate-y:-50%;left:50%;position:absolute;top:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));width:auto}.modal .modal-content{--tw-bg-opacity:1;background-clip:padding-box;background-color:rgb(255 255 255/var(--tw-bg-opacity));outline:2px solid transparent;outline-offset:2px;padding:1.5rem;position:relative}.modal .modal-content .modal-header{text-align:center}.modal .modal-content .modal-body,.modal .modal-content .modal-footer{position:relative}.modal .fluid-embed embed,.modal .fluid-embed iframe,.modal .fluid-embed object{border-style:none}.close{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity));cursor:pointer;display:block;margin-top:.5rem;outline:2px solid transparent;outline-offset:2px;padding:.5rem}.site-header{--tw-bg-opacity:1;align-items:center;background-color:rgb(255 255 255/var(--tw-bg-opacity));display:flex;font-size:1.125rem;left:0;padding-bottom:.9375rem;padding-top:.9375rem;position:sticky;right:0;top:0;transition-duration:.2s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);width:100%;z-index:50}@media (min-width:767px){.site-header{padding-bottom:1.375rem;padding-top:1.375rem}}@media (min-width:992px){.site-header{font-size:1rem;padding-bottom:1.125rem;padding-top:1.125rem}}@media (min-width:1400px){.site-header{font-size:1.125rem}}@media (min-width:992px){.site-header{height:100px}.site-header>.container{align-items:center;display:flex;justify-content:space-between}}.site-header .btn-get-demo{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(122 37 130/var(--tw-bg-opacity));border-radius:.25rem;color:rgb(255 255 255/var(--tw-text-opacity));display:none;float:right;font-family:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:1rem;font-weight:700;margin-left:.9375rem;padding:.375rem 1.125rem}.site-header .btn-get-demo:hover{--tw-bg-opacity:1;background-color:rgb(89 23 105/var(--tw-bg-opacity))}@media (min-width:767px){.site-header .btn-get-demo{display:block}}.site-header .btn-get-demo{letter-spacing:.3px}@media (min-width:992px){.site-header .btn-get-demo{height:max-content;order:3}}.site-header .mobile-logo,.site-header .sticky-logo{display:none}.site-header.no-sticky,.site-header.no-sticky .top-slogan{position:relative}.site-header.centered-logo .navigation-header{align-items:center;display:flex;flex-direction:column;justify-content:center;width:100%}.site-header.centered-logo .navigation-header .logo{height:auto;margin-left:auto;margin-right:auto;width:6.25rem}@media (min-width:767px){.site-header.centered-logo .navigation-header .logo{width:120px}}@media (min-width:992px){.site-header.centered-logo .navigation-header .logo{width:150px}}.site-header.centered-logo .navigation-header .top-slogan{--tw-text-opacity:1;color:rgb(16 24 32/var(--tw-text-opacity));font-family:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:9px;font-weight:300;text-align:center}@media (min-width:767px){.site-header.centered-logo .navigation-header .top-slogan{font-size:11px}}@media (min-width:992px){.site-header.centered-logo .navigation-header .top-slogan{font-size:14px}}.site-header.centered-logo .top-slogan{display:block}.site-header.purple-header .navigation-header .navbar-toggle-open path[fill],.site-header.transparent-header .navigation-header .navbar-toggle-open path[fill]{fill:#faf9f7}.site-header.purple-header .navigation-header .top-slogan,.site-header.purple-header .primary-menu-wrapper .primary-menu>li>a,.site-header.transparent-header .navigation-header .top-slogan,.site-header.transparent-header .primary-menu-wrapper .primary-menu>li>a{--tw-text-opacity:1;color:rgb(250 249 247/var(--tw-text-opacity))}.site-header.purple-header .primary-menu-wrapper .primary-menu>li>a:after,.site-header.transparent-header .primary-menu-wrapper .primary-menu>li>a:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='7' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m10.72 1.637-4.53 4.53s-.008.007-.008.015a.978.978 0 0 1-.682.278.978.978 0 0 1-.682-.278s-.007-.008-.007-.015L.28 1.637A.96.96 0 0 1 .957 0c.255 0 .499.1.679.28L5.5 4.144 9.363.28A.96.96 0 0 1 11 .958a.96.96 0 0 1-.28.679Z' fill='%23FAF9F7'/%3E%3C/svg%3E")}.site-header.purple-header .primary-menu-wrapper .primary-menu>li:hover>a,.site-header.transparent-header .primary-menu-wrapper .primary-menu>li:hover>a{--tw-text-opacity:1;color:rgb(204 139 219/var(--tw-text-opacity))}.site-header.purple-header .primary-menu-wrapper .primary-menu>li:hover>a:after,.site-header.transparent-header .primary-menu-wrapper .primary-menu>li:hover>a:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='7' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m10.72 1.637-4.53 4.53s-.008.007-.008.015a.978.978 0 0 1-.682.278.978.978 0 0 1-.682-.278s-.007-.008-.007-.015L.28 1.637A.96.96 0 0 1 .957 0c.255 0 .499.1.679.28L5.5 4.144 9.363.28A.96.96 0 0 1 11 .958a.96.96 0 0 1-.28.679Z' fill='%23CC8BDB'/%3E%3C/svg%3E")}.site-header.purple-header .btn-get-demo,.site-header.transparent-header .btn-get-demo{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(250 249 247/var(--tw-bg-opacity));color:rgb(16 24 32/var(--tw-text-opacity));transition-duration:.2s}.site-header.purple-header .btn-get-demo:hover,.site-header.transparent-header .btn-get-demo:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(122 37 130/var(--tw-bg-opacity));color:rgb(250 249 247/var(--tw-text-opacity))}.site-header.transparent-header{background-color:transparent;position:absolute}.site-header.purple-header{--tw-bg-opacity:1;background-color:rgb(89 23 105/var(--tw-bg-opacity))}.site-header.white-header .navbar-toggle-open path[fill]{fill:#101820}body.sticky-header:not(.mobile-menu-active) .site-header .top-logo{display:none}@media (min-width:767px){body.sticky-header:not(.mobile-menu-active) .site-header .sticky-logo{display:block}}body.sticky-header:not(.mobile-menu-active) .site-header.white-sticky-header{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}body.sticky-header:not(.mobile-menu-active) .site-header.white-sticky-header .navigation-header .navbar-toggle-open path[fill]{fill:#101820}body.sticky-header:not(.mobile-menu-active) .site-header.white-sticky-header .primary-menu-wrapper .primary-menu>li>a{--tw-text-opacity:1;color:rgb(16 24 32/var(--tw-text-opacity))}body.sticky-header:not(.mobile-menu-active) .site-header.white-sticky-header .primary-menu-wrapper .primary-menu>li>a:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='7' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m10.72 1.637-4.53 4.53s-.008.007-.008.015a.978.978 0 0 1-.682.278.978.978 0 0 1-.682-.278s-.007-.008-.007-.015L.28 1.637A.96.96 0 0 1 .957 0c.255 0 .499.1.679.28L5.5 4.144 9.363.28A.96.96 0 0 1 11 .958a.96.96 0 0 1-.28.679Z' fill='%23101820'/%3E%3C/svg%3E")}body.sticky-header:not(.mobile-menu-active) .site-header.white-sticky-header .primary-menu-wrapper .primary-menu>li:hover>a{--tw-text-opacity:1;color:rgb(89 23 105/var(--tw-text-opacity))}body.sticky-header:not(.mobile-menu-active) .site-header.white-sticky-header .primary-menu-wrapper .primary-menu>li:hover>a:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='7' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m10.72 1.637-4.53 4.53s-.008.007-.008.015a.978.978 0 0 1-.682.278.978.978 0 0 1-.682-.278s-.007-.008-.007-.015L.28 1.637A.96.96 0 0 1 .957 0c.255 0 .499.1.679.28L5.5 4.144 9.363.28A.96.96 0 0 1 11 .958a.96.96 0 0 1-.28.679Z' fill='%23591769'/%3E%3C/svg%3E")}body.sticky-header:not(.mobile-menu-active) .site-header.white-sticky-header .btn-get-demo{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(122 37 130/var(--tw-bg-opacity));color:rgb(250 249 247/var(--tw-text-opacity));transition-duration:.2s}body.sticky-header:not(.mobile-menu-active) .site-header.purple-sticky-header,body.sticky-header:not(.mobile-menu-active) .site-header.white-sticky-header .btn-get-demo:hover{--tw-bg-opacity:1;background-color:rgb(89 23 105/var(--tw-bg-opacity))}body.sticky-header:not(.mobile-menu-active) .site-header.purple-sticky-header .navigation-header .sticky-header-btn{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(250 249 247/var(--tw-bg-opacity));color:rgb(89 23 105/var(--tw-text-opacity))}body.sticky-header:not(.mobile-menu-active) .site-header.purple-sticky-header .navigation-header .navbar-toggle-open path[fill]{fill:#faf9f7}body.sticky-header:not(.mobile-menu-active) .site-header.purple-sticky-header .primary-menu-wrapper .primary-menu>li>a{--tw-text-opacity:1;color:rgb(250 249 247/var(--tw-text-opacity))}body.sticky-header:not(.mobile-menu-active) .site-header.purple-sticky-header .primary-menu-wrapper .primary-menu>li>a:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='7' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m10.72 1.637-4.53 4.53s-.008.007-.008.015a.978.978 0 0 1-.682.278.978.978 0 0 1-.682-.278s-.007-.008-.007-.015L.28 1.637A.96.96 0 0 1 .957 0c.255 0 .499.1.679.28L5.5 4.144 9.363.28A.96.96 0 0 1 11 .958a.96.96 0 0 1-.28.679Z' fill='%23FAF9F7'/%3E%3C/svg%3E")}body.sticky-header:not(.mobile-menu-active) .site-header.purple-sticky-header .primary-menu-wrapper .primary-menu>li:hover>a{--tw-text-opacity:1;color:rgb(163 94 180/var(--tw-text-opacity))}body.sticky-header:not(.mobile-menu-active) .site-header.purple-sticky-header .primary-menu-wrapper .primary-menu>li:hover>a:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='7' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m10.72 1.637-4.53 4.53s-.008.007-.008.015a.978.978 0 0 1-.682.278.978.978 0 0 1-.682-.278s-.007-.008-.007-.015L.28 1.637A.96.96 0 0 1 .957 0c.255 0 .499.1.679.28L5.5 4.144 9.363.28A.96.96 0 0 1 11 .958a.96.96 0 0 1-.28.679Z' fill='%23A35EB4'/%3E%3C/svg%3E")}body.sticky-header:not(.mobile-menu-active) .site-header.purple-sticky-header .btn-get-demo{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(250 249 247/var(--tw-bg-opacity));color:rgb(16 24 32/var(--tw-text-opacity));transition-duration:.2s}body.sticky-header:not(.mobile-menu-active) .site-header.purple-sticky-header .btn-get-demo:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(122 37 130/var(--tw-bg-opacity));color:rgb(250 249 247/var(--tw-text-opacity))}body:not(.sticky-header) .site-header:not(.centered-logo) .logo{margin-top:-.4375rem}body:not(.sticky-header) .site-header.transparent-header+.content>main>:first-child{padding-top:71px}@media (min-width:767px){body:not(.sticky-header) .site-header.transparent-header+.content>main>:first-child{padding-top:5rem}}@media (min-width:992px){body:not(.sticky-header) .site-header.transparent-header+.content>main>:first-child{padding-top:6.25rem}}.sticky-header-enabled .site-header{padding-bottom:1.25rem}@media (min-width:767px){.sticky-header-enabled .site-header{padding-bottom:1.875rem}}.sticky-header-enabled.sticky-header .site-header{--tw-shadow:0 1px 6px rgb(0 0 0/15%);--tw-shadow-colored:0 1px 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);padding-bottom:.625rem;padding-top:.625rem;transition-duration:.2s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}@media (min-width:767px){.sticky-header-enabled.sticky-header .site-header{padding-bottom:.9375rem;padding-top:.9375rem}}@media (min-width:992px){.sticky-header-enabled.sticky-header .site-header{height:63px}}.sticky-header-enabled.sticky-header .site-header.transparent-header{position:fixed}.sticky-header-enabled.sticky-header .site-header .navigation-header,.sticky-header-enabled.sticky-header .site-header .primary-menu-wrapper .primary-menu li a{transition-duration:.2s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}body.pricing .site-header{border-bottom:1px solid #e8e8e9}.invicti-bar{display:none;position:relative;z-index:1}.invicti-bar .bar-close{--tw-text-opacity:1;align-items:center;color:rgb(255 255 255/var(--tw-text-opacity));cursor:pointer;display:flex;height:1.25rem;justify-content:center;position:absolute;right:1.5rem;width:1.25rem}.invicti-bar .bar-close:hover{opacity:.5}.invicti-bar .bar-close svg{height:1.125rem;width:1.125rem}.invicti-bar .transition-message{--tw-bg-opacity:1;align-items:center;background-color:rgb(122 37 130/var(--tw-bg-opacity));display:flex;flex-wrap:wrap;font-family:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:1rem;font-weight:500;gap:.125rem;height:45px;justify-content:center;padding-left:1.25rem;padding-right:1.25rem}.invicti-bar .transition-message,.invicti-bar a{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));width:100%}.invicti-bar a{text-align:center}.invicti-bar a:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));-webkit-text-decoration-line:underline;text-decoration-line:underline}body.invicti-bar-active .invicti-bar{display:block}.transparent-header-active:not(.mobile-menu-active){margin-top:2.8125rem}.transparent-header-active:not(.mobile-menu-active) .invicti-bar{margin-top:-2.8125rem}.transparent-header-active:not(.mobile-menu-active) .transparent-header{top:2.8125rem}.transparent-header-active:not(.mobile-menu-active).sticky-header,.transparent-header-active:not(.mobile-menu-active).sticky-header .invicti-bar{margin-top:0}.transparent-header-active:not(.mobile-menu-active).sticky-header .transparent-header{top:0}.site-footer{--tw-bg-opacity:1;background-color:rgb(250 249 247/var(--tw-bg-opacity));font-family:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:.9375rem;padding-bottom:1.25rem;padding-top:1.25rem}.site-footer .copyright-mobile{margin-bottom:.625rem}@media (min-width:767px){.site-footer .copyright-mobile{display:none;margin-left:.9375rem;margin-right:.9375rem}}.site-footer .company-info-wrapper .footerlogo{margin-bottom:.9375rem}@media (min-width:992px){.site-footer .company-info-wrapper .company-info{line-height:21.4286px}}.site-footer .company-info-wrapper .copyright{display:none}@media (min-width:767px){.site-footer .company-info-wrapper .copyright{display:block;margin-top:1.25rem}}@media (min-width:992px){.site-footer .company-info-wrapper .copyright{display:none}}@media (min-width:1200px){.site-footer .company-info-wrapper .copyright{display:block}}.site-footer .company-info-wrapper br{display:none}@media (min-width:767px){.site-footer .company-info-wrapper br{display:block}}.site-footer .company-info-wrapper .social-icons{margin-bottom:1.375rem}.site-footer .company-info-wrapper .social-icons>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1.25rem*var(--tw-space-x-reverse))}.site-footer .company-info-wrapper .social-icons{zoom:.9}.site-footer .company-info-wrapper .social-icons a{transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.site-footer .company-info-wrapper .social-icons a:hover{--tw-text-opacity:1;color:rgb(16 24 32/var(--tw-text-opacity))}.site-footer .primary-footer{display:grid;gap:1.875rem;justify-content:space-between;padding-bottom:1.5625rem;padding-top:1.5625rem}@media (min-width:767px){.site-footer .primary-footer{gap:3.75rem;grid-template-columns:max-content minmax(min-content,540px)}}@media (min-width:992px){.site-footer .primary-footer{grid-template-columns:max-content minmax(min-content,1140px)}}.site-footer .footer-primary-menu{display:grid;gap:1.875rem;grid-template-columns:repeat(1,minmax(0,1fr));grid-template-columns:repeat(1,1fr);grid-template-rows:auto;justify-content:space-between;margin:0;padding:0}@media (min-width:610px){.site-footer .footer-primary-menu{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,auto)}}@media (min-width:992px){.site-footer .footer-primary-menu{grid-template-columns:repeat(5,auto);grid-template-rows:auto}}.site-footer .footer-primary-menu>li>a{--tw-text-opacity:1;color:rgb(16 24 32/var(--tw-text-opacity));display:block;font-size:.75rem;font-weight:700;margin-bottom:.625rem}.site-footer .footer-primary-menu .sub-menu{font-size:14px;margin:0}@media (min-width:992px){.site-footer .footer-primary-menu .sub-menu{margin-top:.375rem}}.site-footer .footer-primary-menu .sub-menu li{line-height:1.25rem;margin-bottom:.4375rem}@media (min-width:992px){.site-footer .footer-primary-menu .sub-menu li{margin-bottom:.3125rem}}.site-footer .footer-primary-menu .sub-menu li:last-child{margin-bottom:0}.site-footer .footer-primary-menu .sub-menu li a{--tw-text-opacity:1;color:rgb(16 24 32/var(--tw-text-opacity));font-weight:400;letter-spacing:.5px}.site-footer .footer-primary-menu .sub-menu li a:hover{--tw-border-opacity:1;border-bottom-width:1px;border-color:rgb(16 24 32/var(--tw-border-opacity))}.site-footer .footer-bottom-menu{display:flex;flex-wrap:wrap;margin-bottom:0;padding:0}@media (min-width:767px){.site-footer .footer-bottom-menu{display:inline-flex;line-height:1rem}}.site-footer .footer-bottom-menu li{width:100%}@media (min-width:767px){.site-footer .footer-bottom-menu li{margin-right:.625rem;width:auto}}@media (min-width:992px){.site-footer .footer-bottom-menu li{margin-right:1.75rem}}.site-footer .footer-bottom-menu li a{--tw-text-opacity:1;color:rgb(16 24 32/var(--tw-text-opacity));font-size:.75rem;font-weight:700;letter-spacing:.5px}.site-footer .footer-bottom-menu li a:hover{--tw-border-opacity:1;border-bottom-width:1px;border-color:rgb(16 24 32/var(--tw-border-opacity))}.landing-page .site-footer{padding-bottom:0;padding-top:0}.gallery-caption figcaption,.wp-caption-text{font-size:.875rem}ul.checkmark-bullets{list-style:none!important;padding-left:2.5rem}ul.checkmark-bullets li{position:relative}ul.checkmark-bullets li:not(:last-child){margin-bottom:.3125rem}ul.checkmark-bullets li:before{background-repeat:no-repeat;background-size:contain;content:"";display:block;float:left;height:14px;left:-38px;position:absolute;top:8px;width:19px}ul.checkmark-bullets--blue li:before{background-image:url(https://cdn.invicti.com/app/uploads/2024/01/29150338/checkmark-blue.svg)}ul.general-list>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.9375rem*var(--tw-space-y-reverse));margin-top:calc(.9375rem*(1 - var(--tw-space-y-reverse)))}ul.general-list{padding-left:31px}ul.general-list li{position:relative}.fas-li{--tw-bg-opacity:1;background-color:rgb(89 23 105/var(--tw-bg-opacity));border-radius:9999px;height:.5rem;left:-1.5em;position:absolute;text-align:center;top:9px;width:.5rem}.main ul{list-style-position:outside;list-style-type:disc;overflow-wrap:break-word;padding-left:2.5rem}.main ul ul{list-style-type:circle}.main ul ul ul{list-style-type:square}.main ol{list-style-position:outside;list-style-type:decimal;overflow-wrap:break-word;padding-left:2.5rem}.main ol ol{list-style:lower-alpha}.main ol ol ol{list-style-type:lower-roman}.main ol,.main ul{overflow-wrap:break-word}.main ol ol,.main ol ul,.main ul ol,.main ul ul{margin-top:1rem}.main ol li,.main ul li{margin-bottom:.5rem}.cookie-notice{--tw-border-opacity:1;--tw-bg-opacity:1;align-items:center;background-color:rgb(251 251 251/var(--tw-bg-opacity));border-color:rgb(235 235 235/var(--tw-border-opacity));border-top-width:1px;bottom:0;display:none;font-size:.75rem;justify-content:center;padding:.9375rem;position:fixed;width:100%;z-index:999}@media (min-width:767px){.cookie-notice{font-size:.875rem}}.cookie-notice.active{display:flex}.cookie-notice p a{--tw-text-opacity:1;color:rgb(44 81 189/var(--tw-text-opacity));font-family:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:500}.cookie-notice p a:hover{--tw-text-opacity:1;color:rgb(60 16 83/var(--tw-text-opacity))}.cookie-notice .cookie-notice-button{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(122 37 130/var(--tw-bg-opacity));border-radius:.25rem;color:rgb(255 255 255/var(--tw-text-opacity));cursor:pointer;font-weight:700;margin-bottom:-.625rem;margin-left:.625rem;margin-top:-.625rem;padding:.4375rem 1.5625rem}.cookie-notice .cookie-notice-button:hover{--tw-bg-opacity:1;background-color:rgb(89 23 105/var(--tw-bg-opacity))}.entry-content>*{font-size:1.125rem}.entry-content>h1,.entry-content>h2,.entry-content>h3,.entry-content>h4,.entry-content>h5,.entry-content>h6{font-family:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:500}.entry-content>h1:first-child,.entry-content>h2:first-child,.entry-content>h3:first-child,.entry-content>h4:first-child,.entry-content>h5:first-child,.entry-content>h6:first-child{margin-top:0}.entry-content>h1,.entry-content>h2{font-weight:700;margin-bottom:1.875rem;margin-top:3.125rem}.entry-content>h3,.entry-content>h4,.entry-content>h5,.entry-content>h6{margin-bottom:1.125rem;margin-top:2rem}.entry-content>h1{font-size:1.75rem}@media (min-width:767px){.entry-content>h1{font-size:2.25rem}}.entry-content>h2{font-size:1.625rem}@media (min-width:767px){.entry-content>h2{font-size:2rem}}.entry-content>h3{font-size:1.5rem}@media (min-width:767px){.entry-content>h3{font-size:1.75rem}}.entry-content>h4{font-size:1.375rem}.entry-content>h5{font-size:1.25rem}.entry-content>h6{font-size:1.125rem}.entry-content>address,.entry-content>dl,.entry-content>figure,.entry-content>iframe,.entry-content>img,.entry-content>p,.entry-content>pre,.entry-content>table{margin-bottom:1.5625rem}.entry-content>figure,.entry-content>iframe,.entry-content>img{margin-bottom:3rem;margin-top:3rem}.entry-content>blockquote.wp-block-quote{margin-bottom:3.125rem;margin-top:3.125rem}.entry-content>.wp-block-quote.is-style-default{--tw-border-opacity:1;border-color:rgb(204 139 219/var(--tw-border-opacity))}.entry-content>.wp-block-table{margin-top:2rem}.entry-content a{font-family:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:500}.entry-content code{--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(215 56 41/var(--tw-text-opacity));font-size:90%;padding:.125rem .25rem;white-space:pre-wrap}.entry-content code,.entry-content pre{background-color:rgb(250 249 247/var(--tw-bg-opacity));border-radius:.25rem}.entry-content pre{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;border-color:rgb(177 177 178/var(--tw-border-opacity));border-width:1px;color:rgb(16 24 32/var(--tw-text-opacity));font-size:13px;line-height:1.42857143;padding:.625rem}.entry-content pre>code{--tw-text-opacity:1;background-color:transparent;border-style:none;color:rgb(16 24 32/var(--tw-text-opacity));font-size:14px;margin:0;padding:0;white-space:pre-wrap}.entry-content>p a{font-family:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:500}.entry-content .wp-block-table thead{border-style:none}.entry-content .wp-block-table thead th{border-bottom-width:2px}.entry-content .wp-block-table tbody td,.entry-content .wp-block-table thead th{--tw-border-opacity:1;border-color:rgb(99 101 105/var(--tw-border-opacity))}.entry-content .image-block,.entry-content .wp-block-image{margin-bottom:3rem;margin-top:3rem}.entry-content .image-block img,.entry-content .wp-block-image img{margin-bottom:0;margin-top:0}.archive-description{margin-bottom:1.5rem}.page-template-template-sidebar-right .site-main{display:grid;gap:5rem;grid-template-columns:repeat(1,minmax(0,1fr))}@media (min-width:992px){.page-template-template-sidebar-right .site-main{grid-template-columns:repeat(3,minmax(0,1fr))}.page-template-template-sidebar-right .content-container{grid-column:span 2/span 2}} </style><script type='application/ld+json'>{"@context":"https:\/\/schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"What are JSON injection attacks?","acceptedAnswer":{"@type":"Answer","text":"<p>JSON injection attacks happen when unsanitized JSON data containing a malicious payload is accepted and parsed by a web application or browser. Server-side JSON injection attacks are possible if input data is not sanitized by the server and is written directly to a JSON stream. Client-side JSON injection attacks are possible if incoming JSON data is not sanitized and is parsed directly using the JavaScript eval function.<\/p>\n<p> <\/p>\n<p><a href=\"https:\/\/www.invicti.com\/blog\/web-security\/input-validation-errors-root-of-all-evil\/\">Learn more about the dangers of missing input validation and sanitization.<\/a><\/p>\n"}},{"@type":"Question","name":"What is JSON hijacking?","acceptedAnswer":{"@type":"Answer","text":"<p>JSON hijacking happens when a malicious web page causes the victim\u2019s web browser to retrieve JSON data from a targeted web application. The web browser then passes the JSON data to a web server controlled by the attacker.<\/p>\n<p> <\/p>\n<p><a href=\"https:\/\/www.invicti.com\/learn\/cross-site-request-forgery-csrf\/\">Read about cross-site request forgery (CSRF) attacks.<\/a><\/p>\n"}},{"@type":"Question","name":"How dangerous are JSON injections?","acceptedAnswer":{"@type":"Answer","text":"<p>JSON injections are not very common and not as dangerous as SQL injection or other severe vulnerabilities, but they can still be used in attack chains that lead to other, more dangerous attacks, such as cross-site scripting (XSS).<\/p>\n<p> <\/p>\n<p><a href=\"https:\/\/www.invicti.com\/learn\/cross-site-scripting-xss\/\">Read more about cross-site scripting (XSS).<\/a><\/p>\n"}}]}</script> <!-- Start Mutiny Code --> <script type="text/javascript" nonce="wo123jejr234982dfn"> (function(){var a=window.mutiny=window.mutiny||{}; if(!window.mutiny.client){a.client={_queue:{}}; var b=["identify","trackConversion"]; var c=[].concat(b,["defaultOptOut","optOut","optIn"]); var d=function factory(c){return function(){for(var d=arguments.length,e=new Array(d),f=0; f<d;f++){e[f]=arguments[f]}a.client._queue[c]=a.client._queue[c]||[]; if(b.includes(c)){return new Promise(function(b,d){a.client._queue[c].push({args:e,resolve:b,reject:d}); setTimeout(d,500)})}else{a.client._queue[c].push({args:e})}}};c.forEach(function(b){a.client[b]=d(b)})}})(); </script> <script data-cfasync="false" src="https://client-registry.mutinycdn.com/personalize/client/55f18a1f30252c8e.js"></script> <!-- End Mutiny Code --> <!-- TrenDemon Code --> <script type="text/javascript" id="trd-flame-load"> TRD_ACC_ID = 2632; (function (w, d) { function go() { var trdti = setInterval(function () { if (document.readyState === "complete") { var bi = document.createElement("script"); bi.type = "text/javascript"; bi.async = true; bi.src = "https://assets.trendemon.com/tag/trends.min.js"; bi.id = "trdflame"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bi, s); clearInterval(trdti); } }, 500); }; go(); }(window, document)); </script> <!-- End of TrenDemon Code --> <style id="page-dynamic-css">.splide__container{box-sizing:border-box;position:relative}.splide__list{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:-ms-flexbox;display:flex;height:100%;margin:0!important;padding:0!important;transform-style:preserve-3d}.splide.is-initialized:not(.is-active) .splide__list{display:block}.splide__pagination{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;justify-content:center;margin:0;pointer-events:none}.splide__pagination li{display:inline-block;line-height:1;list-style-type:none;margin:0;pointer-events:auto}.splide__progress__bar{width:0}.splide{outline:0;position:relative;visibility:hidden}.splide.is-initialized,.splide.is-rendered{visibility:visible}.splide__slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0;list-style-type:none!important;margin:0;outline:0;position:relative}.splide__slide img{vertical-align:bottom}.splide__slider{position:relative}.splide__spinner{animation:splide-loading 1s linear infinite;border:2px solid #999;border-left-color:transparent;border-radius:50%;bottom:0;contain:strict;display:inline-block;height:20px;left:0;margin:auto;position:absolute;right:0;top:0;width:20px}.splide__track{overflow:hidden;position:relative;z-index:0}@keyframes splide-loading{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.splide--draggable>.splide__slider>.splide__track,.splide--draggable>.splide__track{-webkit-user-select:none;-ms-user-select:none;user-select:none}.splide--fade>.splide__slider>.splide__track>.splide__list,.splide--fade>.splide__track>.splide__list{display:block}.splide--fade>.splide__slider>.splide__track>.splide__list>.splide__slide,.splide--fade>.splide__track>.splide__list>.splide__slide{left:0;opacity:0;position:absolute;top:0;z-index:0}.splide--fade>.splide__slider>.splide__track>.splide__list>.splide__slide.is-active,.splide--fade>.splide__track>.splide__list>.splide__slide.is-active{opacity:1;position:relative;z-index:1}.splide--rtl{direction:rtl}.splide--ttb.is-active>.splide__slider>.splide__track>.splide__list,.splide--ttb.is-active>.splide__track>.splide__list{display:block}.splide__arrow{-ms-flex-align:center;align-items:center;background:#ccc;border:0;border-radius:50%;cursor:pointer;display:-ms-flexbox;display:flex;height:2em;-ms-flex-pack:center;justify-content:center;opacity:.7;padding:0;position:absolute;top:50%;transform:translateY(-50%);width:2em;z-index:1}.splide__arrow svg{fill:#000;height:1.2em;width:1.2em}.splide__arrow:hover{opacity:.9}.splide__arrow:focus{outline:0}.splide__arrow--prev{left:1em}.splide__arrow--prev svg{transform:scaleX(-1)}.splide__arrow--next{right:1em}.splide__pagination{bottom:.5em;left:0;padding:0 1em;position:absolute;right:0;z-index:1}.splide__pagination__page{background:#ccc;border:0;border-radius:50%;display:inline-block;height:8px;margin:3px;opacity:.7;padding:0;transition:transform .2s linear;width:8px}.splide__pagination__page.is-active{background:#fff;transform:scale(1.4)}.splide__pagination__page:hover{cursor:pointer;opacity:.9}.splide__pagination__page:focus{outline:0}.splide__progress__bar{background:#ccc;height:3px}.splide--nav>.splide__slider>.splide__track>.splide__list>.splide__slide,.splide--nav>.splide__track>.splide__list>.splide__slide{border:3px solid transparent;cursor:pointer}.splide--nav>.splide__slider>.splide__track>.splide__list>.splide__slide.is-active,.splide--nav>.splide__track>.splide__list>.splide__slide.is-active{border:3px solid #000}.splide--nav>.splide__slider>.splide__track>.splide__list>.splide__slide:focus,.splide--nav>.splide__track>.splide__list>.splide__slide:focus{outline:0}.splide--rtl>.splide__arrows .splide__arrow--prev,.splide--rtl>.splide__slider>.splide__track>.splide__arrows .splide__arrow--prev,.splide--rtl>.splide__track>.splide__arrows .splide__arrow--prev{left:auto;right:1em}.splide--rtl>.splide__arrows .splide__arrow--prev svg,.splide--rtl>.splide__slider>.splide__track>.splide__arrows .splide__arrow--prev svg,.splide--rtl>.splide__track>.splide__arrows .splide__arrow--prev svg{transform:scaleX(1)}.splide--rtl>.splide__arrows .splide__arrow--next,.splide--rtl>.splide__slider>.splide__track>.splide__arrows .splide__arrow--next,.splide--rtl>.splide__track>.splide__arrows .splide__arrow--next{left:1em;right:auto}.splide--rtl>.splide__arrows .splide__arrow--next svg,.splide--rtl>.splide__slider>.splide__track>.splide__arrows .splide__arrow--next svg,.splide--rtl>.splide__track>.splide__arrows .splide__arrow--next svg{transform:scaleX(-1)}.splide--ttb>.splide__arrows .splide__arrow,.splide--ttb>.splide__slider>.splide__track>.splide__arrows .splide__arrow,.splide--ttb>.splide__track>.splide__arrows .splide__arrow{left:50%;transform:translate(-50%)}.splide--ttb>.splide__arrows .splide__arrow--prev,.splide--ttb>.splide__slider>.splide__track>.splide__arrows .splide__arrow--prev,.splide--ttb>.splide__track>.splide__arrows .splide__arrow--prev{top:1em}.splide--ttb>.splide__arrows .splide__arrow--prev svg,.splide--ttb>.splide__slider>.splide__track>.splide__arrows .splide__arrow--prev svg,.splide--ttb>.splide__track>.splide__arrows .splide__arrow--prev svg{transform:rotate(-90deg)}.splide--ttb>.splide__arrows .splide__arrow--next,.splide--ttb>.splide__slider>.splide__track>.splide__arrows .splide__arrow--next,.splide--ttb>.splide__track>.splide__arrows .splide__arrow--next{bottom:1em;top:auto}.splide--ttb>.splide__arrows .splide__arrow--next svg,.splide--ttb>.splide__slider>.splide__track>.splide__arrows .splide__arrow--next svg,.splide--ttb>.splide__track>.splide__arrows .splide__arrow--next svg{transform:rotate(90deg)}.splide--ttb>.splide__pagination,.splide--ttb>.splide__slider>.splide__pagination{bottom:0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;left:auto;padding:1em 0;right:.5em;top:0}.invicti-block.accordion{align-items:center;display:flex;flex-direction:column}.invicti-block.accordion .accordion-section{width:100%}.invicti-block.accordion.style-one .accordion-heading{align-items:baseline;cursor:pointer;display:flex;justify-content:space-between;margin:0;padding-bottom:1.25rem;padding-top:1.25rem}.invicti-block.accordion.style-one .accordion-heading:hover{--tw-text-opacity:1;color:rgb(89 23 105/var(--tw-text-opacity))}.invicti-block.accordion.style-one .accordion-heading{font-family:revert;font-size:revert;font-weight:revert;line-height:revert}.invicti-block.accordion.style-one .accordion-heading:after{background-image:url(/app/themes/netsparker/public/images/icons/purple-plus.svg);background-position:50%;background-repeat:no-repeat;background-size:contain;content:"";display:block;height:1em;margin-left:1.25rem;min-width:1em;position:relative;top:.1875em;width:1em}.invicti-block.accordion.style-one .accordion-text-holder{height:0;overflow:hidden;transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.invicti-block.accordion.style-one .accordion-text{--tw-border-opacity:1;border-bottom-width:1px;border-color:rgb(99 101 105/var(--tw-border-opacity));margin-bottom:1.25rem;padding:.3125rem 0 2.5rem}@media (min-width:767px){.invicti-block.accordion.style-one .accordion-text{padding-left:2.5rem;padding-right:2.5rem}}.invicti-block.accordion.style-one .accordion-text a{--tw-text-opacity:1;color:rgb(44 81 189/var(--tw-text-opacity))}.invicti-block.accordion.style-one .accordion-text a:hover{--tw-text-opacity:1;color:rgb(60 16 83/var(--tw-text-opacity))}.invicti-block.accordion.style-one .active.accordion-section .accordion-heading{--tw-text-opacity:1;color:rgb(89 23 105/var(--tw-text-opacity))}.invicti-block.accordion.style-one .active.accordion-section .accordion-heading:after{background-image:url(/app/themes/netsparker/public/images/icons/purple-minus.svg)}.invicti-block.accordion.style-one .active.accordion-section .accordion-text-holder{height:var(--accordion-height)}#accordion_6746bd6ebd338{font-family:var(--body-font);}.navigation-header{align-items:center;display:flex;justify-content:space-between;min-height:36px}.navigation-header .logo{transition-duration:.2s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);width:79px}@media (min-width:1200px){.navigation-header .logo{width:6.25rem}}.navigation-header .mobile-logo-icon{display:none;height:2rem;margin-left:auto;margin-right:auto}.navigation-header .top-slogan{--tw-text-opacity:1;color:rgb(16 24 32/var(--tw-text-opacity));display:block;font-family:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:7.5px;font-weight:300;position:absolute;transition-delay:.2s;transition-duration:.2s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:linear}@media (min-width:1200px){.navigation-header .top-slogan{font-size:9.4px}}.navigation-header .sticky-header-btn{--tw-translate-x:-50%;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(89 23 105/var(--tw-bg-opacity));border-radius:.25rem;color:rgb(250 249 247/var(--tw-text-opacity));display:none;font-family:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:1rem;font-weight:700;left:50%;line-height:1.25rem;padding:.375rem 1.125rem;position:absolute;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media (min-width:767px){.navigation-header .sticky-header-btn{padding-left:2.5rem;padding-right:2.5rem}}.navigation-header .navbar-toggle{cursor:pointer;margin-bottom:0;outline:2px solid transparent;outline-offset:2px;padding:0}@media (min-width:767px){.navigation-header .navbar-toggle{margin-right:.625rem}}@media (min-width:992px){.navigation-header .navbar-toggle{display:none}}.navigation-header .navbar-toggle-close{display:none}.primary-menu-wrapper{height:0;overflow-y:auto;transition-duration:.2s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}@media (min-width:992px){.primary-menu-wrapper{display:inline-block;height:auto;margin-left:auto;margin-right:0}}.primary-menu-wrapper .btn{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.25rem;color:rgb(16 24 32/var(--tw-text-opacity));display:none;font-size:1rem;font-weight:700;line-height:1.25rem;padding-bottom:.9375rem;padding-top:.9375rem;position:relative;width:100%;z-index:1}.primary-menu-wrapper .primary-menu{display:flex;flex-direction:column;margin-bottom:0;margin-top:1.25rem;width:100%}.primary-menu-wrapper .primary-menu>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-color:rgb(255 255 255/.2);border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}@media (min-width:992px){.primary-menu-wrapper .primary-menu{display:inline-flex;flex-direction:row;margin-top:0}.primary-menu-wrapper .primary-menu>:not([hidden])~:not([hidden]){border-style:none}@media (min-width:992px){.primary-menu-wrapper .primary-menu{padding-left:0;padding-right:0}}}.primary-menu-wrapper .primary-menu li a{--tw-text-opacity:1;align-items:center;color:rgb(250 249 247/var(--tw-text-opacity));display:flex;font-size:42px;font-weight:300;justify-content:space-between;padding:1.25rem 0;transition-duration:.2s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}@media (min-width:992px){.primary-menu-wrapper .primary-menu li a{--tw-text-opacity:1;color:rgb(16 24 32/var(--tw-text-opacity));font-size:.9375rem;font-weight:500;line-height:1.25rem;padding-bottom:1.25rem;padding-left:14px;padding-right:14px;padding-top:1.25rem}}@media (min-width:1200px){.primary-menu-wrapper .primary-menu li a{font-size:1.125rem;padding-left:1.125rem;padding-right:1.125rem}}.primary-menu-wrapper .primary-menu li.partners-custom{position:relative}.primary-menu-wrapper .primary-menu li.partners-custom .sub-menu.level--2{right:100%;top:-.4375rem}.primary-menu-wrapper .primary-menu .menu-item-has-children{backface-visibility:hidden;-webkit-backface-visibility:hidden}.primary-menu-wrapper .primary-menu .menu-item-has-children>a:after{background-size:cover;display:block;height:9px;position:relative;transform-origin:center;transition-duration:.1s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);width:16px}@media (min-width:992px){.primary-menu-wrapper .primary-menu .menu-item-has-children>a:after{background-size:contain;height:.75rem;width:.75rem}}.primary-menu-wrapper .primary-menu .menu-item-has-children>a:after{backface-visibility:hidden;-webkit-backface-visibility:hidden;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='7' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m10.72 1.637-4.53 4.53s-.008.007-.008.015a.978.978 0 0 1-.682.278.978.978 0 0 1-.682-.278s-.007-.008-.007-.015L.28 1.637A.96.96 0 0 1 .957 0c.255 0 .499.1.679.28L5.5 4.144 9.363.28A.96.96 0 0 1 11 .958a.96.96 0 0 1-.28.679Z' fill='%23FAF9F7'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;content:"";-webkit-transform-style:preserve-3d}@media (min-width:992px){.primary-menu-wrapper .primary-menu .menu-item-has-children>a:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='7' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m10.72 1.637-4.53 4.53s-.008.007-.008.015a.978.978 0 0 1-.682.278.978.978 0 0 1-.682-.278s-.007-.008-.007-.015L.28 1.637A.96.96 0 0 1 .957 0c.255 0 .499.1.679.28L5.5 4.144 9.363.28A.96.96 0 0 1 11 .958a.96.96 0 0 1-.28.679Z' fill='%23101820'/%3E%3C/svg%3E");margin-left:.375rem;margin-right:0;top:.0625rem}}.primary-menu-wrapper .primary-menu .menu-item-has-children .active-sub-menu>a:after{--tw-rotate:180deg;position:relative;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}@media (min-width:992px){@media (min-width:992px){.primary-menu-wrapper .primary-menu .menu-item-has-children:hover>a{--tw-text-opacity:1;color:rgb(122 37 130/var(--tw-text-opacity))}}.primary-menu-wrapper .primary-menu .menu-item-has-children:hover>a:after{--tw-rotate:180deg;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='11' height='7' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m10.72 1.637-4.53 4.53s-.008.007-.008.015a.978.978 0 0 1-.682.278.978.978 0 0 1-.682-.278s-.007-.008-.007-.015L.28 1.637A.96.96 0 0 1 .957 0c.255 0 .499.1.679.28L5.5 4.144 9.363.28A.96.96 0 0 1 11 .958a.96.96 0 0 1-.28.679Z' fill='%237A2582'/%3E%3C/svg%3E");transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.primary-menu-wrapper .primary-menu .menu-item-has-children:hover>.sub-menu{display:block}@media (min-width:992px){.primary-menu-wrapper .primary-menu .menu-item-has-children:hover.has-3rd-level>.sub-menu{display:flex;left:100%;padding-bottom:5px;top:0}.primary-menu-wrapper .primary-menu .menu-item-has-children:hover.has-3rd-level>.sub-menu li a{padding-bottom:.125rem;padding-top:.125rem}}.primary-menu-wrapper .primary-menu .menu-item-has-children:hover.has-3rd-level:hover>a:after{--tw-rotate:-90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.primary-menu-wrapper .primary-menu .menu-item-has-children:hover.has-3rd-level .sub-menu>li>a:after{display:none}}.primary-menu-wrapper .primary-menu .menu-item-has-children.has-3rd-level .sub-menu>li>a:after{display:none}.primary-menu-wrapper .primary-menu .menu-item-has-children.has-3rd-level>.sub-menu .sub-menu{display:block;opacity:.8}@media (min-width:992px){.primary-menu-wrapper .primary-menu .menu-item-has-children.has-3rd-level>.sub-menu .sub-menu{opacity:1}}.primary-menu-wrapper .primary-menu .menu-item-has-children.has-3rd-level>.sub-menu li.menu-item-has-children{padding-left:2.5rem}@media (min-width:992px){.primary-menu-wrapper .primary-menu .menu-item-has-children.has-3rd-level>.sub-menu li.menu-item-has-children{padding-left:0}.primary-menu-wrapper .primary-menu li.menu-item-18>.sub-menu{width:200px}.primary-menu-wrapper .primary-menu li.menu-item-14>.sub-menu{width:260px}}.primary-menu-wrapper .primary-menu .sub-menu{display:none}@media (min-width:992px){.primary-menu-wrapper .primary-menu .sub-menu{--tw-bg-opacity:1;--tw-shadow:0 0.25rem 0.375rem -0.0625rem rgba(0,0,0,0.1),0 0.125rem 0.25rem -0.0625rem rgba(0,0,0,0.06);--tw-shadow-colored:0 0.25rem 0.375rem -0.0625rem var(--tw-shadow-color),0 0.125rem 0.25rem -0.0625rem var(--tw-shadow-color);background-color:rgb(250 249 247/var(--tw-bg-opacity));border-radius:.25rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);padding-bottom:.5rem;padding-top:.5rem;position:absolute;width:auto;z-index:50}.primary-menu-wrapper .primary-menu .sub-menu li.menu-col{width:max-content}}.primary-menu-wrapper .primary-menu .sub-menu li.menu-col>a{--tw-text-opacity:1;color:rgb(122 37 130/var(--tw-text-opacity));font-family:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:.75rem;font-weight:700;margin-bottom:-.9375rem;margin-left:-.9375rem;margin-right:-.9375rem;text-transform:uppercase}@media (min-width:992px){.primary-menu-wrapper .primary-menu .sub-menu li.menu-col>a{font-weight:700;margin-left:0}}.primary-menu-wrapper .primary-menu .sub-menu li.menu-col .sub-menu{margin-left:-.9375rem;margin-right:-.9375rem}@media (min-width:992px){.primary-menu-wrapper .primary-menu .sub-menu li.menu-col .sub-menu{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);display:block;margin-bottom:0;margin-left:0;margin-right:0;padding-left:0;padding-right:0;position:static}}.primary-menu-wrapper .primary-menu .sub-menu li a{font-weight:500;line-height:1.75rem;padding-bottom:.4375rem;padding-top:.4375rem}@media (min-width:992px){.primary-menu-wrapper .primary-menu .sub-menu li a{padding-bottom:.3125rem;padding-top:.3125rem}.primary-menu-wrapper .primary-menu .sub-menu li a:hover{--tw-text-opacity:1;color:rgb(122 37 130/var(--tw-text-opacity))}}.primary-menu-wrapper .primary-menu .sub-menu li.new-promotion a:after{background:#05d5ff;border-radius:2px;color:#101820;content:"NEW";font-size:12px;font-weight:700;line-height:1;margin-left:5px;padding:2px 3px}@media (max-width:991px){.primary-menu-wrapper .primary-menu .sub-menu li.new-promotion a{display:inline-block}}.mobile-menu-active{overflow:hidden}.mobile-menu-active .site-header{background:radial-gradient(81.5% 67% at 39% 50%,#431658 0,#3f1353 25%,#180427 100%)}.mobile-menu-active .site-header .btn-get-demo{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(250 249 247/var(--tw-bg-opacity));color:rgb(16 24 32/var(--tw-text-opacity));transition-duration:.2s}.mobile-menu-active .site-header .btn-get-demo:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(122 37 130/var(--tw-bg-opacity));color:rgb(250 249 247/var(--tw-text-opacity))}.mobile-menu-active .site-header .navigation-header{min-height:50px}.mobile-menu-active .site-header .navigation-header .logo.mobile-logo{display:block}.mobile-menu-active .site-header .navigation-header .logo.sticky-logo,.mobile-menu-active .site-header .navigation-header .logo.top-logo,.mobile-menu-active .site-header .navigation-header .mobile-logo-icon{display:none}.mobile-menu-active .site-header .navigation-header .navbar-toggle-close path[fill],.mobile-menu-active .site-header .navigation-header .navbar-toggle-open path[fill]{fill:#faf9f7}.mobile-menu-active .site-header .navigation-header .top-slogan{--tw-text-opacity:1;color:rgb(250 249 247/var(--tw-text-opacity))}.mobile-menu-active .site-header .navigation-header .navbar-toggle-open,.mobile-menu-active .site-header .navigation-header .sticky-header-btn{display:none}.mobile-menu-active .site-header .navigation-header .navbar-toggle-close{display:block}.mobile-menu-active .site-header .primary-menu-wrapper{height:100vh;padding-top:3.125rem;position:relative}@media (min-width:992px){.mobile-menu-active .site-header .primary-menu-wrapper{height:auto}}.mobile-menu-active .site-header .primary-menu-wrapper:after{height:150px;left:0;opacity:.2;position:absolute;top:0;width:100%}@media (min-width:767px){.mobile-menu-active .site-header .primary-menu-wrapper:after{display:none}}.mobile-menu-active .site-header .primary-menu-wrapper:after{background:radial-gradient(50% 50% at 50% 50%,#c554d0 0,rgba(63,20,83,0) 100%);content:""}.mobile-menu-active .site-header .primary-menu-wrapper .btn{display:block}@media (min-width:767px){.mobile-menu-active .site-header .primary-menu-wrapper .btn{display:none}}.mobile-menu-active .site-header .primary-menu-wrapper .primary-menu li.menu-item-has-children.active-sub-menu>a{--tw-text-opacity:1;color:rgb(250 249 247/var(--tw-text-opacity))}.mobile-menu-active .site-header .primary-menu-wrapper .primary-menu li.menu-item-has-children.active-sub-menu>a:after{--tw-rotate:180deg;position:relative;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.mobile-menu-active .site-header .primary-menu-wrapper .primary-menu li.menu-item-has-children.active-sub-menu>.sub-menu{display:block;padding-left:.9375rem}.mobile-menu-active .site-header .primary-menu-wrapper .primary-menu li.menu-item-has-children.active-sub-menu>.sub-menu a{font-size:1.125rem;font-weight:700}.mobile-menu-active .site-header .primary-menu-wrapper .primary-menu li.menu-item-has-children.active-sub-menu>.sub-menu .sub-menu{padding-left:.9375rem}.mobile-menu-active .site-header .primary-menu-wrapper .primary-menu li.menu-item-has-children.active-sub-menu>.sub-menu .sub-menu li{padding-left:0}.mobile-menu-active .site-header .primary-menu-wrapper .primary-menu li.menu-item-has-children.active-sub-menu>.sub-menu .sub-menu li>a{padding-left:.9375rem}.mobile-menu-active .site-header .primary-menu-wrapper .primary-menu li.menu-item-has-children.active-sub-menu>.sub-menu .sub-menu li.menu-col>a{--tw-text-opacity:1;color:rgb(204 139 219/var(--tw-text-opacity))}.mobile-menu-active .site-header .primary-menu-wrapper .primary-menu li.menu-item-has-children.active-sub-menu>.sub-menu .sub-menu li>.sub-menu{padding-left:0;padding-top:.9375rem}.sticky-header .site-header .logo{display:none}@media (min-width:767px){.sticky-header .site-header .logo{display:block}.sticky-header .site-header .logo.mobile-logo{display:none}}.sticky-header .site-header .top-slogan{opacity:0;transition-delay:0ms;transition-duration:75ms;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.sticky-header .site-header .mobile-logo-icon{display:block}@media (min-width:767px){.sticky-header .site-header .mobile-logo-icon{display:none}}.sticky-header .site-header .sticky-header-btn{display:block;text-align:center}@media (min-width:767px){.sticky-header .site-header .sticky-header-btn{display:none}}.single-hub .site-header{--tw-border-opacity:1;border-bottom-width:1px;border-color:rgb(250 249 247/var(--tw-border-opacity))}.single-hub .content{overflow:hidden;padding-bottom:5rem;padding-top:5rem}@media (min-width:767px){.single-hub .content{padding-bottom:3.125rem;padding-top:2.125rem}}.single-hub .content aside{--tw-bg-opacity:1;background-color:rgb(248 248 248/var(--tw-bg-opacity));left:0;position:absolute;right:0;top:3.5rem;z-index:20}@media (min-width:767px){.single-hub .content aside{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));min-width:220px;padding-left:0;padding-right:0;position:relative;top:0}}@media (min-width:992px){.single-hub .content aside{min-width:250px}}@media (min-width:1200px){.single-hub .content aside{min-width:337px}}.single-hub .content aside.active{--tw-shadow:0px 4px 10px rgba(0,0,0,0.1);--tw-shadow-colored:0px 4px 10px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}@media (min-width:767px){.single-hub .content aside.active{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}}.single-hub .content aside .sidebar-contents{--tw-border-opacity:1;--tw-bg-opacity:1;align-items:center;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-bottom-width:1px;border-color:rgb(250 249 247/var(--tw-border-opacity));display:flex;font-family:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:1rem;font-weight:700;height:55px;padding-left:1.5625rem;padding-right:1.5625rem;position:relative}@media (min-width:767px){.single-hub .content aside .sidebar-contents{display:none}}.single-hub .content aside .sidebar-contents:before{--tw-translate-y:-50%;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1.175.912 5 4.73 8.825.912 10 2.087l-5 5-5-5L1.175.912Z' fill='%23C2C9D1'/%3E%3Cpath d='M1.175.912 5 4.73 8.825.912 10 2.087l-5 5-5-5L1.175.912Z' fill='%23000' fill-opacity='.25'/%3E%3C/svg%3E");content:"";height:.4375rem;position:absolute;right:1.5625rem;top:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));width:.625rem}.single-hub .content aside .sidebar-menu{display:none}@media (min-width:767px){.single-hub .content aside .sidebar-menu{display:block}}.single-hub .content aside .sidebar-menu.active{display:block}.single-hub .content aside .sidebar-button{display:none}@media (min-width:767px){.single-hub .content aside .sidebar-button{display:block}}.single-hub .content aside .menu{list-style-type:none;margin:0}.single-hub .content aside .menu>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;--tw-divide-opacity:1;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-color:rgb(250 249 247/var(--tw-divide-opacity));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.single-hub .content aside .menu{border-bottom-width:0;padding-left:1.5625rem;padding-right:1.5625rem}@media (min-width:767px){.single-hub .content aside .menu{--tw-border-opacity:1;border-bottom-width:1px;border-color:rgb(250 249 247/var(--tw-border-opacity));padding-left:0;padding-right:0}}.single-hub .content aside .menu a[href="#"]{cursor:default}.single-hub .content aside .menu .menu-item-block{align-items:stretch;display:flex;justify-content:space-between}.single-hub .content aside .menu .menu-item-block>a{--tw-text-opacity:1;align-items:center;color:rgb(0 0 0/var(--tw-text-opacity));display:flex;flex-grow:1;font-size:16px;font-weight:500;padding-bottom:.5rem;padding-top:.5rem;position:relative;-webkit-text-decoration-line:none;text-decoration-line:none}.single-hub .content aside .menu .menu-item-block span.menu-expander{--tw-text-opacity:0.25;align-items:center;color:rgb(0 0 0/var(--tw-text-opacity));cursor:pointer;display:flex}.single-hub .content aside .menu .menu-item-block span.menu-expander:hover{--tw-text-opacity:0.6}.single-hub .content aside .menu>.menu-item{padding-bottom:.625rem;padding-top:.625rem}.single-hub .content aside .menu>.menu-item>a{--tw-text-opacity:1;align-items:center;color:rgb(0 0 0/var(--tw-text-opacity));display:flex;font-size:16px;font-weight:500;padding-bottom:.5rem;padding-top:.5rem;position:relative;-webkit-text-decoration-line:none;text-decoration-line:none}.single-hub .content aside .menu>.menu-item>.menu-item-block span.menu-expander{display:none}.single-hub .content aside .menu .menu-item.menu-item-has-children.active>.menu-item-block span.menu-expander{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.single-hub .content aside .menu .menu-item.menu-item-has-children.active>.sub-menu{display:block;list-style-type:none;padding-bottom:10px;padding-left:0}.single-hub .content aside .menu .menu-item.menu-item-has-children.active>.sub-menu.level--2{padding-bottom:0}.single-hub .content aside .menu .menu-item .sub-menu{display:none;list-style-type:none;margin-bottom:0}.single-hub .content aside .menu .menu-item .sub-menu>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.625rem*var(--tw-space-y-reverse));margin-top:calc(.625rem*(1 - var(--tw-space-y-reverse)))}.single-hub .content aside .menu .menu-item .sub-menu{padding-bottom:1.25rem}.single-hub .content aside .menu .menu-item .sub-menu.level--1{display:block}.single-hub .content aside .menu .menu-item .sub-menu.level--2{margin-left:1.25rem;margin-top:.3125rem;padding-bottom:0}.single-hub .content aside .menu .menu-item .sub-menu li{border-style:none;line-height:1}.single-hub .content aside .menu .menu-item .sub-menu li.menu-item-has-children .menu-item-block>a{padding-bottom:.1875rem;padding-top:.1875rem}.single-hub .content aside .menu .menu-item .sub-menu li.current-menu-item>.menu-item-block a,.single-hub .content aside .menu .menu-item .sub-menu li.current-menu-item>.menu-item-block span.menu-expander,.single-hub .content aside .menu .menu-item .sub-menu li.current-menu-item>a{--tw-text-opacity:1;color:rgb(44 81 189/var(--tw-text-opacity))}.single-hub .content aside .menu .menu-item .sub-menu li.current-menu-item>.menu-item-block span.menu-expander{--tw-rotate:90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.single-hub .content aside .menu .menu-item .sub-menu li.current-menu-item>.sub-menu.level--2{display:block}.single-hub .content aside .menu .menu-item .sub-menu li a{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity));font-family:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.single-hub .content aside .menu .menu-item .sub-menu li a:hover{--tw-text-opacity:1;color:rgb(89 23 105/var(--tw-text-opacity))}.single-hub .content aside .menu .menu-item .sub-menu li.current-menu-item,.single-hub .content aside .menu .menu-item .sub-menu li.menu-item-has-children{padding-bottom:0;padding-top:0}.single-hub .content aside .menu .menu-item .sub-menu li ul{padding-bottom:0}.single-hub .content .entry-content a{--tw-text-opacity:1;color:rgb(44 81 189/var(--tw-text-opacity));font-family:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:500}.single-hub .content .entry-content a:hover{--tw-text-opacity:1;color:rgb(60 16 83/var(--tw-text-opacity))}.single-hub .content main{max-width:100%;padding-left:0;padding-top:16px}@media (min-width:767px){.single-hub .content main{padding-left:50px}}@media (min-width:992px){.single-hub .content main{padding-left:90px}}@media (min-width:1200px){.single-hub .content main{padding-left:110px}}.single-hub .content main{word-break:break-word}@media (min-width:767px){.single-hub .content main{max-width:calc(100% - 220px)}}@media (min-width:992px){.single-hub .content main{max-width:calc(100% - 250px)}}@media (min-width:1200px){.single-hub .content main{max-width:calc(100% - 340px)}}@media (max-width:766px){.single-hub.invicti-bar-active .content aside{top:calc(3.5rem + 45px)}}</style></head> <body class="hub-template-default single single-hub postid-31846 single-format-standard json-injection sticky-header-enabled app-data index-data singular-data single-data single-hub-data single-hub-json-injection-data"> <!-- Google Tag Manager (noscript) snippet added by Site Kit --> <noscript> <iframe src="https://www.googletagmanager.com/ns.html?id=GTM-M7R7MXJ" height="0" width="0" style="display:none;visibility:hidden"></iframe> </noscript> <!-- End Google Tag Manager (noscript) snippet added by Site Kit --> <div class="sticky-header-observer"></div> <div class="invicti-bar" hidden> <div class="transition-message"> <a href="https://www.invicti.com/blog/news/netsparker-is-now-invicti-signaling-a-new-era-for-modern-appsec/" title="Netsparker is now Invicti">Netsparker is now Invicti</a> <button class="bar-close" title="Hello bar close button"> <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M15 13.5858L1.41422 0L0 1.41422L13.5858 15L0.150757 28.435L1.56497 29.8492L15 16.4142L28.2843 29.6985L29.6985 28.2843L16.4142 15L29.8492 1.56497L28.435 0.150757L15 13.5858Z" fill="currentColor"></path> </svg> </button> </div> </div> <header class="site-header"> <div class="container"> <a href="https://www.invicti.com/get-demo/" class="btn-get-demo">Get a demo</a> <div class="navigation-header"> <a href="https://www.invicti.com/" rel="noreferrer"> <img class="logo-icon logo top-logo" src="https://cdn.invicti.com/branding/invicti-logo-black.svg" alt="Invicti Logo - The Largest Dynamic Application Security Solutions Provider In The World" width="100" height="28" /> <img class="logo-icon logo sticky-logo" src="https://cdn.invicti.com/branding/invicti-logo-black.svg" alt="Invicti Logo - The Largest Dynamic Application Security Solutions Provider In The World" width="100" height="28" /> <img class="logo-icon logo mobile-logo" src="https://cdn.invicti.com/branding/invicti-logo-bone.svg" alt="Invicti Logo - The Largest Dynamic Application Security Solutions Provider In The World" width="100" height="28" /> <span class="top-slogan">AppSec with Zero Noise</span> <img class="logo-icon mobile-logo-icon" src="https://cdn.invicti.com/branding/invicti-logo-icon.svg" alt="Invicti Logo - The Largest Dynamic Application Security Solutions Provider In The World" width="32" height="32" /> </a> <a href="https://www.invicti.com/get-demo/" class="sticky-header-btn">Get a demo</a> <svg class="navbar-toggle navbar-toggle-open" xmlns="http://www.w3.org/2000/svg" width="22" height="13" fill="none"><path fill="black" fill-rule="evenodd" d="M22 0H0v3h22V0Zm0 10H0v3h22v-3Z" clip-rule="evenodd"/></svg> <svg class="navbar-toggle navbar-toggle-close" xmlns="http://www.w3.org/2000/svg" width="17" height="17" fill="none"><path fill="black" fill-rule="evenodd" d="M9 6.718 2.282 0 .162 2.121 6.878 8.84.16 15.556l2.121 2.122L9 10.96l6.717 6.718 2.122-2.122L11.12 8.84 17.84 2.12 15.718 0 9 6.718Z" clip-rule="evenodd"/></svg> </div> <nav id="site-navigation" class="primary-menu-wrapper navigation-menu" aria-label="Main Navigation"> <a href="https://www.invicti.com/get-demo/" class="btn">Get a demo</a> <ul id="primary-menu" class="primary-menu"><li id="menu-item-14" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-14"><a href="#">Product</a> <ul class="sub-menu level--1"> <li id="menu-item-55161" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-55161"><a href="https://www.invicti.com/product/">Web Application Security</a></li> <li id="menu-item-15" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-15"><a href="https://www.invicti.com/product/api-security/">API Security</a></li> <li id="menu-item-16" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-16"><a href="https://www.invicti.com/features/">Features</a></li> <li id="menu-item-55889" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-55889"><a href="https://www.invicti.com/product/dast/">DAST</a></li> <li id="menu-item-55937" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-55937"><a href="https://www.invicti.com/product/sast/">SAST</a></li> </ul> </li> <li id="menu-item-18" class="solution menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-18"><a href="#">Why Us?</a> <ul class="sub-menu level--1"> <li id="menu-item-394" class="has-3rd-level menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-394"><a href="#">Solutions</a> <ul class="sub-menu level--2"> <li id="menu-item-48" class="menu-col menu-col1 menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-48"><a href="#">Industries</a> <ul class="sub-menu level--3"> <li id="menu-item-19" class="industries menu-item menu-item-type-custom menu-item-object-custom menu-item-19"><a href="https://www.invicti.com/solutions/it-and-telecom/">IT & Telecom</a></li> <li id="menu-item-20" class="industries menu-item menu-item-type-custom menu-item-object-custom menu-item-20"><a href="https://www.invicti.com/solutions/government/">Government</a></li> <li id="menu-item-21" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-21"><a href="https://www.invicti.com/solutions/financial-services/">Financial Services</a></li> <li id="menu-item-22" class="industries menu-item menu-item-type-custom menu-item-object-custom menu-item-22"><a href="https://www.invicti.com/solutions/higher-education/">Education</a></li> <li id="menu-item-23" class="industries menu-item menu-item-type-custom menu-item-object-custom menu-item-23"><a href="https://www.invicti.com/solutions/healthcare/">Healthcare</a></li> </ul> </li> <li id="menu-item-49" class="menu-col menu-col1 menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-49"><a href="#">Roles</a> <ul class="sub-menu level--3"> <li id="menu-item-24" class="roles menu-item menu-item-type-custom menu-item-object-custom menu-item-24"><a href="https://www.invicti.com/solutions/cto-ciso/">CTO & CISO</a></li> <li id="menu-item-25" class="roles menu-item menu-item-type-custom menu-item-object-custom menu-item-25"><a href="https://www.invicti.com/solutions/engineering-manager/">Engineering Manager</a></li> <li id="menu-item-26" class="roles menu-item menu-item-type-custom menu-item-object-custom menu-item-26"><a href="https://www.invicti.com/solutions/security-engineer/">Security Engineer</a></li> <li id="menu-item-27" class="roles menu-item menu-item-type-custom menu-item-object-custom menu-item-27"><a href="https://www.invicti.com/solutions/devsecops/">DevSecOps</a></li> </ul> </li> </ul> </li> <li id="menu-item-402" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-402"><a href="https://www.invicti.com/vulnerability-scanner-comparison/">Comparison</a></li> <li id="menu-item-401" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-401"><a href="https://www.invicti.com/case-studies/">Case studies</a></li> <li id="menu-item-400" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-400"><a href="https://www.invicti.com/customers/">Customers</a></li> <li id="menu-item-399" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-399"><a href="https://www.invicti.com/testimonials/">Testimonials</a></li> </ul> </li> <li id="menu-item-28" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-28"><a href="https://www.invicti.com/pricing/">Pricing</a></li> <li id="menu-item-29" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-29"><a href="#">About Us</a> <ul class="sub-menu level--1"> <li id="menu-item-395" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-395"><a href="https://www.invicti.com/about/">Our Story</a></li> <li id="menu-item-398" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-398"><a href="https://www.invicti.com/blog/news/">In the news</a></li> <li id="menu-item-397" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-397"><a href="https://www.invicti.com/careers/">Careers</a></li> <li id="menu-item-396" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-396"><a href="https://www.invicti.com/contact/">Contact us</a></li> </ul> </li> <li id="menu-item-30" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-30"><a href="#">Resources</a> <ul class="sub-menu level--1"> <li id="menu-item-31" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-31"><a href="https://www.invicti.com/blog/">Blog</a></li> <li id="menu-item-33" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-33"><a href="https://www.invicti.com/white-papers/">White Papers</a></li> <li id="menu-item-10430" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10430"><a href="https://www.invicti.com/webinars/">Webinars</a></li> <li id="menu-item-56654" class="new-promotion menu-item menu-item-type-post_type menu-item-object-page menu-item-56654"><a href="https://www.invicti.com/podcasts/">Podcasts</a></li> <li id="menu-item-27789" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27789"><a href="https://www.invicti.com/learn/">Invicti Learn</a></li> <li id="menu-item-34" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-34"><a href="https://www.invicti.com/resources/">Resource Library</a></li> <li id="menu-item-37" class="partners-custom menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-37"><a href="#">Partners</a> <ul class="sub-menu level--2"> <li id="menu-item-27215" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-27215"><a href="https://www.invicti.com/partners/">Channel</a></li> <li id="menu-item-27218" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-27218"><a href="https://www.invicti.com/clp/managed-security-service-provider/">MSSP</a></li> </ul> </li> <li id="menu-item-38" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-38"><a href="https://www.invicti.com/support/">Support</a></li> </ul> </li> </ul> </nav><!-- #site-navigation--> </div> </header><!-- .site-header--> <div class="content"> <div class="container flex"> <aside class="sidebar"> <div class="sidebar-contents">Table of Contents</div> <div class="sidebar-menu"> <div class="menu-learn-sidebar-menu-container"><ul id="menu-learn-sidebar-menu" class="menu"><li class=' menu-item menu-item-type-post_type menu-item-object-hub current-menu-ancestor current-menu-parent menu-item-has-children' data-val='Vulnerabilities'><div class="menu-item-block"><a href="https://www.invicti.com/learn/vulnerabilities/">Vulnerabilities</a><span class="menu-expander"><svg width="10" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M1.175.912 5 4.73 8.825.912 10 2.087l-5 5-5-5L1.175.912Z" fill="currentColor"/> <path d="M1.175.912 5 4.73 8.825.912 10 2.087l-5 5-5-5L1.175.912Z" fill="currentColor" fill-opacity=".25"/></svg></span></div> <ul class="sub-menu level--1"> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Remote code execution (RCE)'><a href="https://www.invicti.com/learn/remote-code-execution-rce/">Remote code execution (RCE)</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='OS command injection'><a href="https://www.invicti.com/learn/os-command-injection/">OS command injection</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Server-side request forgery (SSRF)'><a href="https://www.invicti.com/learn/server-side-request-forgery-ssrf/">Server-side request forgery (SSRF)</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub menu-item-has-children' data-val='SQL injection (SQLi)'><div class="menu-item-block"><a href="https://www.invicti.com/learn/sql-injection-sqli/">SQL injection (SQLi)</a><span class="menu-expander"><svg width="10" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M1.175.912 5 4.73 8.825.912 10 2.087l-5 5-5-5L1.175.912Z" fill="currentColor"/> <path d="M1.175.912 5 4.73 8.825.912 10 2.087l-5 5-5-5L1.175.912Z" fill="currentColor" fill-opacity=".25"/></svg></span></div> <ul class="sub-menu level--2"> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='In-band SQL injection'><a href="https://www.invicti.com/learn/in-band-sql-injection/">In-band SQL injection</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Blind SQL injection'><a href="https://www.invicti.com/learn/blind-sql-injection/">Blind SQL injection</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Out-of-band SQL injection'><a href="https://www.invicti.com/learn/out-of-band-sql-injection-oob-sqli/">Out-of-band SQL injection</a></li> </ul> </li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Local file inclusion (LFI)'><a href="https://www.invicti.com/learn/local-file-inclusion-lfi/">Local file inclusion (LFI)</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Remote file inclusion (RFI)'><a href="https://www.invicti.com/learn/remote-file-inclusion-rfi/">Remote file inclusion (RFI)</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Directory traversal'><a href="https://www.invicti.com/learn/directory-traversal-path-traversal/">Directory traversal</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub menu-item-has-children' data-val='Cross-site scripting (XSS)'><div class="menu-item-block"><a href="https://www.invicti.com/learn/cross-site-scripting-xss/">Cross-site scripting (XSS)</a><span class="menu-expander"><svg width="10" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M1.175.912 5 4.73 8.825.912 10 2.087l-5 5-5-5L1.175.912Z" fill="currentColor"/> <path d="M1.175.912 5 4.73 8.825.912 10 2.087l-5 5-5-5L1.175.912Z" fill="currentColor" fill-opacity=".25"/></svg></span></div> <ul class="sub-menu level--2"> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Stored/persistent cross-site scripting'><a href="https://www.invicti.com/learn/stored-xss-persistent-cross-site-scripting/">Stored/persistent cross-site scripting</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Reflected/non-persistent cross-site scripting'><a href="https://www.invicti.com/learn/reflected-xss-non-persistent-cross-site-scripting/">Reflected/non-persistent cross-site scripting</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='DOM-based cross-site scripting'><a href="https://www.invicti.com/learn/dom-based-cross-site-scripting-dom-xss/">DOM-based cross-site scripting</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Blind cross-site scripting'><a href="https://www.invicti.com/learn/blind-cross-site-scripting/">Blind cross-site scripting</a></li> </ul> </li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Cross-site request forgery (CSRF)'><a href="https://www.invicti.com/learn/cross-site-request-forgery-csrf/">Cross-site request forgery (CSRF)</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub menu-item-has-children' data-val='XML external entity (XXE)'><div class="menu-item-block"><a href="https://www.invicti.com/learn/xml-external-entity-xxe/">XML external entity (XXE)</a><span class="menu-expander"><svg width="10" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M1.175.912 5 4.73 8.825.912 10 2.087l-5 5-5-5L1.175.912Z" fill="currentColor"/> <path d="M1.175.912 5 4.73 8.825.912 10 2.087l-5 5-5-5L1.175.912Z" fill="currentColor" fill-opacity=".25"/></svg></span></div> <ul class="sub-menu level--2"> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Out-of-band XML external entity (OOB XXE)'><a href="https://www.invicti.com/learn/out-of-band-xml-external-entity-oob-xxe/">Out-of-band XML external entity (OOB XXE)</a></li> </ul> </li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='CRLF injection'><a href="https://www.invicti.com/learn/crlf-injection/">CRLF injection</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Email injection'><a href="https://www.invicti.com/learn/email-injection/">Email injection</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='HTML injection'><a href="https://www.invicti.com/learn/html-injection/">HTML injection</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='NoSQL injection'><a href="https://www.invicti.com/learn/nosql-injection/">NoSQL injection</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub current-menu-item' data-val='JSON Injection'><a href="https://www.invicti.com/learn/json-injection/">JSON Injection</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Insecure direct object references (IDOR)'><a href="https://www.invicti.com/learn/insecure-direct-object-references-idor/">Insecure direct object references (IDOR)</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub menu-item-has-children' data-val='Unvalidated redirects and forwards'><div class="menu-item-block"><a href="https://www.invicti.com/learn/unvalidated-redirects-and-forwards/">Unvalidated redirects and forwards</a><span class="menu-expander"><svg width="10" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M1.175.912 5 4.73 8.825.912 10 2.087l-5 5-5-5L1.175.912Z" fill="currentColor"/> <path d="M1.175.912 5 4.73 8.825.912 10 2.087l-5 5-5-5L1.175.912Z" fill="currentColor" fill-opacity=".25"/></svg></span></div> <ul class="sub-menu level--2"> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Open redirect'><a href="https://www.invicti.com/learn/open-redirect-open-redirection/">Open redirect</a></li> </ul> </li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Directory listing'><a href="https://www.invicti.com/learn/directory-listing/">Directory listing</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Password reset poisoning'><a href="https://www.invicti.com/learn/password-reset-poisoning/">Password reset poisoning</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Buffer overflow'><a href="https://www.invicti.com/learn/buffer-overflow-stack-overflow-heap-overflow/">Buffer overflow</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Integer overflow'><a href="https://www.invicti.com/learn/integer-overflow/">Integer overflow</a></li> </ul> </li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub menu-item-has-children' data-val='Attacks'><div class="menu-item-block"><a href="https://www.invicti.com/learn/attacks/">Attacks</a><span class="menu-expander"><svg width="10" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M1.175.912 5 4.73 8.825.912 10 2.087l-5 5-5-5L1.175.912Z" fill="currentColor"/> <path d="M1.175.912 5 4.73 8.825.912 10 2.087l-5 5-5-5L1.175.912Z" fill="currentColor" fill-opacity=".25"/></svg></span></div> <ul class="sub-menu level--1"> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Session hijacking'><a href="https://www.invicti.com/learn/session-hijacking/">Session hijacking</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Session fixation'><a href="https://www.invicti.com/learn/session-fixation/">Session fixation</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Session prediction'><a href="https://www.invicti.com/learn/session-prediction/">Session prediction</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Cookie hijacking'><a href="https://www.invicti.com/learn/cookie-hijacking/">Cookie hijacking</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Cookie poisoning'><a href="https://www.invicti.com/learn/cookie-poisoning/">Cookie poisoning</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Clickjacking'><a href="https://www.invicti.com/learn/clickjacking/">Clickjacking</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Forced browsing'><a href="https://www.invicti.com/learn/forced-browsing/">Forced browsing</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='XSS filter evasion'><a href="https://www.invicti.com/learn/xss-filter-evasion/">XSS filter evasion</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Source code disclosure'><a href="https://www.invicti.com/learn/source-code-disclosure/">Source code disclosure</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Host header attacks'><a href="https://www.invicti.com/learn/host-header-attacks/">Host header attacks</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Web cache poisoning'><a href="https://www.invicti.com/learn/web-cache-poisoning/">Web cache poisoning</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Privilege escalation'><a href="https://www.invicti.com/learn/privilege-escalation/">Privilege escalation</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Web shell'><a href="https://www.invicti.com/learn/web-shell/">Web shell</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Reverse shell'><a href="https://www.invicti.com/learn/reverse-shell/">Reverse shell</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Cross-frame scripting (XFS)'><a href="https://www.invicti.com/learn/cross-frame-scripting-xfs/">Cross-frame scripting (XFS)</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Broken link hijacking'><a href="https://www.invicti.com/learn/broken-link-hijacking-blh/">Broken link hijacking</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='SEO poisoning'><a href="https://www.invicti.com/learn/seo-poisoning/">SEO poisoning</a></li> <li class=' menu-item menu-item-type-custom menu-item-object-custom' data-val='Low Orbit Ion Cannon (LOIC)'><a href="https://www.invicti.com/learn/low-orbit-ion-cannon-loic/">Low Orbit Ion Cannon (LOIC)</a></li> <li class=' menu-item menu-item-type-custom menu-item-object-custom' data-val='High Orbit Ion Cannon (HOIC)'><a href="https://www.invicti.com/learn/high-orbit-ion-cannon-hoic/">High Orbit Ion Cannon (HOIC)</a></li> <li class=' menu-item menu-item-type-custom menu-item-object-custom' data-val='Slowloris attack'><a href="https://www.invicti.com/learn/slowloris-attack/">Slowloris attack</a></li> <li class=' menu-item menu-item-type-custom menu-item-object-custom' data-val='R.U.D.Y. attack'><a href="https://www.invicti.com/learn/rudy-attack/">R.U.D.Y. attack</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub menu-item-has-children' data-val='Man-in-the-middle attacks (MITM)'><div class="menu-item-block"><a href="https://www.invicti.com/learn/man-in-the-middle-attacks-mitm/">Man-in-the-middle attacks (MITM)</a><span class="menu-expander"><svg width="10" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M1.175.912 5 4.73 8.825.912 10 2.087l-5 5-5-5L1.175.912Z" fill="currentColor"/> <path d="M1.175.912 5 4.73 8.825.912 10 2.087l-5 5-5-5L1.175.912Z" fill="currentColor" fill-opacity=".25"/></svg></span></div> <ul class="sub-menu level--2"> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='ARP spoofing'><a href="https://www.invicti.com/learn/mitm-arp-spoofing/">ARP spoofing</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='IP spoofing'><a href="https://www.invicti.com/learn/mitm-ip-spoofing-ip-address-spoofing/">IP spoofing</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='DNS cache poisoning'><a href="https://www.invicti.com/learn/mitm-dns-spoofing-dns-cache-poisoning/">DNS cache poisoning</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='HTTP spoofing'><a href="https://www.invicti.com/learn/mitm-https-spoofing-idn-homograph-attack/">HTTP spoofing</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='SSL hijacking'><a href="https://www.invicti.com/learn/mitm-ssl-hijacking/">SSL hijacking</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='SSL stripping'><a href="https://www.invicti.com/learn/mitm-ssl-stripping/">SSL stripping</a></li> </ul> </li> </ul> </li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub menu-item-has-children' data-val='Protection'><div class="menu-item-block"><a href="https://www.invicti.com/learn/protection/">Protection</a><span class="menu-expander"><svg width="10" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M1.175.912 5 4.73 8.825.912 10 2.087l-5 5-5-5L1.175.912Z" fill="currentColor"/> <path d="M1.175.912 5 4.73 8.825.912 10 2.087l-5 5-5-5L1.175.912Z" fill="currentColor" fill-opacity=".25"/></svg></span></div> <ul class="sub-menu level--1"> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Same-origin policy (SOP)'><a href="https://www.invicti.com/learn/same-origin-policy-sop/">Same-origin policy (SOP)</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='HTTP Strict Transport Security (HSTS)'><a href="https://www.invicti.com/learn/http-strict-transport-security-hsts/">HTTP Strict Transport Security (HSTS)</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Cookie security flags'><a href="https://www.invicti.com/learn/cookie-security-flags/">Cookie security flags</a></li> </ul> </li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub menu-item-has-children' data-val='Tools'><div class="menu-item-block"><a href="https://www.invicti.com/learn/tools/">Tools</a><span class="menu-expander"><svg width="10" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M1.175.912 5 4.73 8.825.912 10 2.087l-5 5-5-5L1.175.912Z" fill="currentColor"/> <path d="M1.175.912 5 4.73 8.825.912 10 2.087l-5 5-5-5L1.175.912Z" fill="currentColor" fill-opacity=".25"/></svg></span></div> <ul class="sub-menu level--1"> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Dynamic application security testing (DAST)'><a href="https://www.invicti.com/learn/dynamic-application-security-testing-dast/">Dynamic application security testing (DAST)</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Static application security testing (SAST)'><a href="https://www.invicti.com/learn/static-application-security-testing-sast/">Static application security testing (SAST)</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Interactive application security testing (IAST)'><a href="https://www.invicti.com/learn/interactive-application-security-testing-iast/">Interactive application security testing (IAST)</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Software composition analysis (SCA)'><a href="https://www.invicti.com/learn/software-composition-analysis-sca/">Software composition analysis (SCA)</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Web application firewall (WAF)'><a href="https://www.invicti.com/learn/web-application-firewall-waf/">Web application firewall (WAF)</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Web asset discovery'><a href="https://www.invicti.com/learn/web-asset-discovery/">Web asset discovery</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Vulnerability management'><a href="https://www.invicti.com/learn/vulnerability-management/">Vulnerability management</a></li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='Vulnerability assessment'><a href="https://www.invicti.com/learn/vulnerability-assessment/">Vulnerability assessment</a></li> </ul> </li> <li class=' menu-item menu-item-type-post_type menu-item-object-hub' data-val='About Invicti Learn'><a href="https://www.invicti.com/learn/about/">About Invicti Learn</a></li> </ul></div> </div> <div class="sidebar-button"> </div> </aside> <main class="main entry-content col-span-9"> <h1 class="wp-block-heading">JSON injection</h1> <figure class="wp-block-image size-large"><picture><source srcset="https://cdn.invicti.com/app/uploads/2022/03/15153924/Learn_02_banner-1024x131.webp 1024w,https://cdn.invicti.com/app/uploads/2022/03/15153924/Learn_02_banner-300x38.webp 300w,https://cdn.invicti.com/app/uploads/2022/03/15153924/Learn_02_banner-768x98.webp 768w,https://cdn.invicti.com/app/uploads/2022/03/15153924/Learn_02_banner.webp 1053w" sizes="(max-width: 1024px) 100vw, 1024px" type="image/webp"><img src="https://cdn.invicti.com/app/uploads/2022/03/15153924/Learn_02_banner-1024x131.png" height="131" width="1024" srcset="https://cdn.invicti.com/app/uploads/2022/03/15153924/Learn_02_banner-1024x131.png 1024w, https://cdn.invicti.com/app/uploads/2022/03/15153924/Learn_02_banner-300x38.png 300w, https://cdn.invicti.com/app/uploads/2022/03/15153924/Learn_02_banner-768x98.png 768w, https://cdn.invicti.com/app/uploads/2022/03/15153924/Learn_02_banner.png 1053w" sizes="(max-width: 1024px) 100vw, 1024px" class="wp-image-37077 sp-no-webp" alt="" fetchpriority="high" > </picture></figure> <h2 class="wp-block-heading">What is JSON injection?</h2> <p><em>JSON injection</em> is a vulnerability that lets a malicious hacker inject malicious data into JSON streams or use malicious JSON streams to modify application behavior. There are two types of JSON injections, server-side and client-side:</p> <ul class="wp-block-list"> <li><em>Server-side JSON injection</em> happens when data from an untrusted source is not sanitized by the server and is written directly to a JSON stream.</li> <li><em>Client-side JSON injection</em> happens when data from an untrusted JSON source is not sanitized and is parsed directly using the JavaScript <em>eval</em> function.</li> </ul> <hr class="wp-block-separator has-css-opacity is-style-wide" /> <figure class="wp-block-table is-style-default" style="margin-top:1em;margin-bottom:0px"> <table class="has-text-color" style="color:var(--color-nsdark)"> <tbody> <tr> <td class="has-text-align-left" data-align="left" style="border: none"><strong>Severity:</strong></td> <td class="has-text-align-left" data-align="left" style="border: none"> <picture><source srcset="https://cdn.invicti.com/app/uploads/2022/11/15094456/skull.webp " type="image/webp"><img src="https://cdn.invicti.com/app/uploads/2022/11/15094456/skull.png" class=" sp-no-webp" alt="" style="float:left;height:1em" > </picture> <picture><source srcset="https://cdn.invicti.com/app/uploads/2022/11/15094456/skull.webp " type="image/webp"><img src="https://cdn.invicti.com/app/uploads/2022/11/15094456/skull.png" class=" sp-no-webp" alt="" style="float:left;height:1em" > </picture> </td> <td class="has-text-align-left" data-align="left" style="border: none">medium severity</td> </tr> <tr> <td class="has-text-align-left" data-align="left" style="border: none"><strong>Prevalence:</strong></td> <td class="has-text-align-left" data-align="left" style="border: none"> <picture><source srcset="https://cdn.invicti.com/app/uploads/2022/11/15094456/skull.webp " type="image/webp"><img src="https://cdn.invicti.com/app/uploads/2022/11/15094456/skull.png" class=" sp-no-webp" alt="" style="float:left;height:1em" > </picture> <picture><source srcset="https://cdn.invicti.com/app/uploads/2022/11/15094456/skull.webp " type="image/webp"><img src="https://cdn.invicti.com/app/uploads/2022/11/15094456/skull.png" class=" sp-no-webp" alt="" style="float:left;height:1em" > </picture> </td> <td class="has-text-align-left" data-align="left" style="border: none">discovered rarely</td> </tr> <tr> <td class="has-text-align-left" data-align="left" style="border: none"><strong>Scope:</strong></td> <td class="has-text-align-left" data-align="left" style="border: none"> <picture><source srcset="https://cdn.invicti.com/app/uploads/2022/11/15094456/skull.webp " type="image/webp"><img src="https://cdn.invicti.com/app/uploads/2022/11/15094456/skull.png" class=" sp-no-webp" alt="" style="float:left;height:1em" > </picture> <picture><source srcset="https://cdn.invicti.com/app/uploads/2022/11/15094456/skull.webp " type="image/webp"><img src="https://cdn.invicti.com/app/uploads/2022/11/15094456/skull.png" class=" sp-no-webp" alt="" style="float:left;height:1em" > </picture> </td> <td class="has-text-align-left" data-align="left" style="border: none">may appear in all apps that use JSON</td> </tr> <tr> <td class="has-text-align-left" data-align="left" style="border: none"><strong>Technical impact:</strong></td> <td class="has-text-align-left" data-align="left" style="border: none"></td> <td class="has-text-align-left" data-align="left" style="border: none">privilege escalation, cross-site scripting</td> </tr> <tr> <td class="has-text-align-left" data-align="left" style="border: none"><strong>Worst-case consequences:</strong></td> <td class="has-text-align-left" data-align="left" style="border: none"></td> <td class="has-text-align-left" data-align="left" style="border: none">full system compromise</td> </tr> <tr> <td class="has-text-align-left" data-align="left" style="border: none"><strong>Quick fix:</strong></td> <td class="has-text-align-left" data-align="left" style="border: none"></td> <td class="has-text-align-left" data-align="left" style="border: none">sanitize user input, do not use the JS <em>eval</em> function</td> </tr> </tbody> </table> </figure> <hr class="wp-block-separator has-css-opacity is-style-wide" /> <h2 class="wp-block-heading">What is JSON?</h2> <p>JSON (JavaScript Object Notation) is a lightweight data interchange format used for communication between applications. It performs a similar role to XML but is simpler and better suited to processing in JavaScript.</p> <p>Many web applications use this format to communicate and serialize/deserialize data. Some web applications also use JSON to store important information, such as user data. JSON is commonly used in RESTful APIs and AJAX applications.</p> <h3 class="wp-block-heading">What is JSON hijacking?</h3> <p>While JSON hijacking (a subset of cross-site script inclusion – XSSI) also involves the JSON format, it is a slightly different attack, in some ways similar to<a href="https://www.invicti.com/learn/cross-site-request-forgery-csrf/"> cross-site request forgery (CSRF)</a>. Attackers can use JSON hijacking to intercept JSON data sent from a web server to a web application. A typical JSON hijacking attack might look like this:</p> <ol class="wp-block-list"> <li>The attacker creates a malicious website containing a <em>script</em> tag that references a JSON data URL of the web application under attack and includes code to hijack the JSON data.</li> <li>A user logged into the targeted web application is tricked into visiting the malicious website (usually using social engineering).</li> <li>Since the<a href="https://www.invicti.com/learn/same-origin-policy-sop/"> same-origin policy (SOP)</a> allows JavaScript from any website to be included and executed in the context of any other site, the user’s web browser loads the JSON data in the context of the malicious site.</li> <li>The malicious website hijacks the JSON data.</li> </ol> <h2 class="wp-block-heading">Example of a server-side JSON injection attack</h2> <p>A simple server-side JSON injection could be performed in PHP as follows:</p> <ol class="wp-block-list"> <li>The server stores user data as a JSON string, including the account type.</li> <li>User name and password values are taken directly from user input parameters without validation or sanitization.</li> <li>The JSON string is built using simple concatenation:</li> </ol> <pre class="wp-block-code is-style-code-highlighter language-php"><code>$json_string = '{"accountType":"user","userName":"'.$_GET['userName'].'","pass":"'.$_GET['pass'].'"}';</code></pre> <ol class="wp-block-list" start="4"> <li>A malicious user appends data to their user name entered into an input form or delivered in an HTTP header. This data is sent to the back-end unsanitized:</li> </ol> <pre class="wp-block-preformatted">john%22,%22accountType%22:%22administrator%22</pre> <ol class="wp-block-list" start="5"> <li>The resulting JSON string stored by the application back-end is:</li> </ol> <pre class="wp-block-code is-style-code-highlighter language-json"><code>{ "accountType":"user", "userName":"john", "accountType":"administrator", "pass":"password" }</code></pre> <ol class="wp-block-list" start="6"> <li>When reading the stored string, the JSON parser (<em>json_decode</em>) encounters two <em>accountType</em> entries and accepts the last one, granting <em>john</em> administrator privileges without any authentication. Note that, strictly speaking, the behavior of <em>json_decode</em> is not incorrect –<a href="https://tools.ietf.org/html/rfc7159" target="_blank" rel="noreferrer noopener nofollow"> RFC-7159</a> for the JSON format states that “the names within an object <em>SHOULD</em> be unique” but not that they <em>must</em> be unique, leaving some room for interpretation.</li> </ol> <h2 class="wp-block-heading" id="example">Example of a client-side JSON injection attack</h2> <p>A simple client-side JSON injection could be performed as follows:</p> <ol class="wp-block-list"> <li>The initial JSON string is the same as in the previous example.</li> <li>The server gets the JSON data, including a malicious payload, from an untrusted source and does not sanitize it.</li> <li>The client parses the JSON string using <em>eval</em>:</li> </ol> <pre class="wp-block-code is-style-code-highlighter language-javascript"><code>var result = eval("(" + json_string + ")"); document.getElementById("#accountType").innerText = result.account; document.getElementById("#userName").innerText = result.name; document.getElementById("#pass").innerText = result.pass;</code></pre> <ol class="wp-block-list" start="4"> <li>The <em>accountType</em> value injected by the attacker is:</li> </ol> <pre class="wp-block-preformatted">user"});alert(document.cookie);({"accountType":"user</pre> <ol class="wp-block-list" start="5"> <li>The <em>eval</em> function executes the <em>alert</em> call.</li> <li>Parsing the malicious string results in a<a href="https://www.invicti.com/learn/cross-site-scripting-xss/"> cross-site scripting (XSS)</a> attack (<em>document.cookie</em> is disclosed).</li> </ol> <h2 class="wp-block-heading">Potential consequences of a JSON injection attack</h2> <p>The consequences of JSON injection highly depend on the way JSON data is used by the web application. However, in some cases, they may be quite severe:</p> <ul class="wp-block-list"> <li>If JSON is used to store authentication data and the app is susceptible to server-side JSON injection, the attacker may gain access to an administrative account in the application. Depending on the privileges of that administrative account, they could then obtain highly sensitive data or perform malicious actions.</li> <li>If a web application is vulnerable to client-side JSON injection, it may be used for attacks that involve<a href="https://www.invicti.com/learn/reflected-xss-non-persistent-cross-site-scripting/"> reflected XSS</a>, for example, in phishing or spam campaigns.</li> </ul> <p>While JSON injection on its own may not seem very dangerous, it is often only one step in a longer chain of attacks, so in some cases it can have severe consequences, up to and including full system compromise.</p> <h2 class="wp-block-heading" id="detect">How to detect JSON injection vulnerabilities?</h2> <p>The best way to detect JSON injection vulnerabilities varies depending on whether they are already known or unknown.</p> <ul class="wp-block-list"> <li>If you only use commercial or open-source software and do not develop software of your own, it may be enough to identify the exact version of the system or application you are using. If the identified version is susceptible to JSON injection, you can assume that your software is vulnerable. You can identify the version manually or use a suitable security tool, such as a<a href="https://www.invicti.com/learn/software-composition-analysis-sca/"> software composition analysis (SCA)</a> solution for web applications or a network scanner for networked systems and applications.</li> <li>If you develop your own software or want the ability to potentially find previously unknown JSON injection vulnerabilities (zero-days) in known applications, you must be able to successfully exploit the JSON injection vulnerability to be certain that it exists. This requires either performing manual pentesting with the help of security researchers or using a vulnerability scanner tool that can use automation to exploit web vulnerabilities. Examples of such tools are<a href="https://www.invicti.com/"> Invicti</a> and<a href="https://acunetix.com/"> Acunetix by Invicti</a>. We recommend using this method even for known vulnerabilities.</li> </ul> <h2 class="wp-block-heading" id="prevent">How to prevent JSON injection vulnerabilities in web applications?</h2> <p>As with most vulnerabilities, the key to maintaining web application security and preventing JSON injections is to sanitize data. This applies to both server-side and client-side JSON injections.</p> <p>To prevent server-side JSON injections, sanitize all data before serializing it to JSON. For example, if you use Java, a good option to sanitize JSON data is to use the<a href="https://github.com/OWASP/json-sanitizer" target="_blank" rel="noreferrer noopener nofollow"> OWASP JSON Sanitizer available on GitHub</a>. An even better practice is never to write JSON data manually but always using framework functions that perform sanitization.</p> <p>The best way of preventing client-side JSON injections is never to use the <em>eval</em> function to evaluate JSON data. Whenever you use the <em>eval</em><em> </em>function with untrusted data that contains JavaScript code, that code will be executed – and it could be malicious. To eliminate this risk, use <em>JSON.parse</em> instead.</p> <h2 class="wp-block-heading" id="mitigate">How to mitigate JSON injection attacks?</h2> <ul class="wp-block-list"> <li>The only way to prevent the severe consequences of server-side JSON injections, apart from scanning for them early in the development cycle, is to design applications so they do not load sensitive information, such as account information and privileges, from user-controlled or otherwise untrusted JSON data.</li> <li>You can completely eliminate the risk of client-side JSON injections by enforcing<a href="https://www.invicti.com/blog/web-security/content-security-policy/"> Content Security Policy</a>, which<a href="https://developer.chrome.com/extensions/contentSecurityPolicy#JSEval" target="_blank" rel="noreferrer noopener nofollow"> by default prevents the use of <em>eval</em></a>. This forces the developers to use the safer <em>JSON.parse</em> method instead.</li> </ul> <h2 class="wp-block-heading">Frequently asked questions</h2> <div class="invicti-block accordion style-one" id="accordion_6746bd6ebd338"> <div class="accordion-section"> <h4 class="accordion-heading">What are JSON injection attacks?</h4> <div class="accordion-text-holder"> <div class="accordion-text"><p>JSON injection attacks happen when unsanitized JSON data containing a malicious payload is accepted and parsed by a web application or browser. Server-side JSON injection attacks are possible if input data is not sanitized by the server and is written directly to a JSON stream. Client-side JSON injection attacks are possible if incoming JSON data is not sanitized and is parsed directly using the JavaScript eval function.</p> <p> </p> <p><a href="https://www.invicti.com/blog/web-security/input-validation-errors-root-of-all-evil/">Learn more about the dangers of missing input validation and sanitization.</a></p> </div> </div> </div> <div class="accordion-section"> <h4 class="accordion-heading">What is JSON hijacking?</h4> <div class="accordion-text-holder"> <div class="accordion-text"><p>JSON hijacking happens when a malicious web page causes the victim’s web browser to retrieve JSON data from a targeted web application. The web browser then passes the JSON data to a web server controlled by the attacker.</p> <p> </p> <p><a href="https://www.invicti.com/learn/cross-site-request-forgery-csrf/">Read about cross-site request forgery (CSRF) attacks.</a></p> </div> </div> </div> <div class="accordion-section"> <h4 class="accordion-heading">How dangerous are JSON injections?</h4> <div class="accordion-text-holder"> <div class="accordion-text"><p>JSON injections are not very common and not as dangerous as SQL injection or other severe vulnerabilities, but they can still be used in attack chains that lead to other, more dangerous attacks, such as cross-site scripting (XSS).</p> <p> </p> <p><a href="https://www.invicti.com/learn/cross-site-scripting-xss/">Read more about cross-site scripting (XSS).</a></p> </div> </div> </div> </div> <figure class="wp-block-table is-style-stripes ccfg-unique-6c81af-b7"><table><thead><tr><th>Classification</th><th>ID</th></tr></thead><tbody><tr><td>CAPEC</td><td>153</td></tr><tr><td>CWE</td><td>74, 116</td></tr><tr><td>WASC</td><td>20</td></tr><tr><td>OWASP 2021</td><td>A3</td></tr></tbody></table></figure> <hr class="wp-block-separator has-css-opacity is-style-wide" /> <p></p> <p class="has-small-font-size"><em><a href="https://www.invicti.com/learn/about/">Written by: Tomasz Andrzej Nidecki, reviewed by: Benjamin Daniel Mussler</a></em></p> </main> </div> </div> <footer class="site-footer"> <div class="container primary-footer"> <div class="company-info-wrapper"> <figure> <img class="logo-icon footerlogo" src="https://cdn.invicti.com/branding/invicti-logo-black.svg" alt="Invicti Logo - The Largest Dynamic Application Security Solutions Provider In The World" width="128" height="36" /> </figure> <div class="social-icons"> <a href="https://twitter.com/InvictiSecurity" aria-label="Twitter" target="_blank" rel="noopener noreferrer" title="Twitter"> <svg xmlns="http://www.w3.org/2000/svg" width="20.616" height="16.969"> <path d="M20.532 2.035a8.514 8.514 0 01-2.085.595c.336-.057.827-.663 1.025-.909a3.838 3.838 0 00.693-1.262c.017-.036.031-.081-.005-.109a.119.119 0 00-.111.009 10.543 10.543 0 01-2.472.946.168.168 0 01-.171-.044 1.845 1.845 0 00-.216-.221 4.377 4.377 0 00-1.2-.734 4.167 4.167 0 00-1.836-.3 4.4 4.4 0 00-1.743.493 4.473 4.473 0 00-1.405 1.148 4.316 4.316 0 00-.84 1.682 4.557 4.557 0 00-.044 1.775c.013.1 0 .112-.085.1A13.2 13.2 0 011.543.881c-.1-.112-.154-.112-.235.009a4.307 4.307 0 00.734 5.089c.167.158.339.315.522.46a4.342 4.342 0 01-1.639-.46c-.1-.062-.149-.026-.158.087a2.622 2.622 0 00.027.486 4.357 4.357 0 002.683 3.473 2.548 2.548 0 00.544.165 4.841 4.841 0 01-1.608.05c-.116-.022-.162.036-.116.149a4.523 4.523 0 003.38 2.829c.154.026.306.026.46.062-.009.014-.018.014-.027.027a5.364 5.364 0 01-2.306 1.223 8.282 8.282 0 01-3.5.449c-.189-.028-.228-.026-.279 0s-.006.076.054.125c.239.158.482.3.729.433a11.571 11.571 0 002.343.936 12.471 12.471 0 0012.106-2.831c2.481-2.465 3.351-5.866 3.351-9.27 0-.133.158-.207.251-.278a8.157 8.157 0 001.648-1.713.518.518 0 00.109-.328v-.018c0-.054 0-.039-.084 0z" fill="currentColor"/> </svg> </a> <a href="https://facebook.com/Invicti-Security-100090617259790/" aria-label="Facebook" target="_blank" rel="noopener noreferrer" title="Facebook"> <svg xmlns="http://www.w3.org/2000/svg" width="11.862" height="22.315"> <path d="M11.085 12.457l.615-4.008H7.854v-2.6a2 2 0 012.26-2.165h1.748V.272a21.277 21.277 0 00-3.1-.271c-3.167 0-5.237 1.92-5.237 5.395v3.055H.003v4.008h3.522v9.69a14.013 14.013 0 002.166.168 14.013 14.013 0 002.166-.168v-9.69z" fill="currentColor"/> </svg> </a> <a href="https://www.linkedin.com/company/invicti-security" aria-label="Linkedin" target="_blank" rel="noopener noreferrer" title="Linkedin"> <svg xmlns="http://www.w3.org/2000/svg" width="20.636" height="20.588"> <path d="M.342 6.834h4.282v13.754H.342zM2.483-.002a2.478 2.478 0 012.478 2.477 2.48 2.48 0 01-2.478 2.481 2.482 2.482 0 01-2.481-2.48A2.48 2.48 0 012.483-.002M7.305 6.834h4.1v1.882h.056a4.5 4.5 0 014.049-2.219c4.329 0 5.125 2.847 5.125 6.551v7.543h-4.271v-6.686c0-1.6-.032-3.648-2.223-3.648-2.226 0-2.564 1.737-2.564 3.53v6.8H7.305z" fill="currentColor"/> </svg> </a> <a href="https://www.invicti.com/blog/feed/" aria-label="RSS Feed" target="_blank" rel="noopener noreferrer" title="RSS Feed"> <svg width="20" height="20" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M1 6.34887C6.05667 6.08303 9.25 9.2772 8.985 14.3339" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path> <path d="M1.83333 14.3339C2.29357 14.3339 2.66667 13.9608 2.66667 13.5005C2.66667 13.0403 2.29357 12.6672 1.83333 12.6672C1.3731 12.6672 1 13.0403 1 13.5005C1 13.9608 1.3731 14.3339 1.83333 14.3339Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path> <path d="M1 1.02553C9.42833 0.583866 14.7508 5.90637 14.3083 14.3339" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </a> </div> <div class="company-info"> <p>Invicti Security Corp <br>1000 N Lamar Blvd Suite 300 <br>Austin, TX 78703, US</p> </div> <div class="copyright hidden-md"> <p>© Invicti 2024</p> </div> </div> <ul id="footer-primary-menu" class="footer-primary-menu"><li id="menu-item-50" class="footer-menu-title menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-50"><a href="#">RESOURCES</a> <ul class="sub-menu level--1"> <li id="menu-item-51" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-51"><a href="https://www.invicti.com/features/">Features</a></li> <li id="menu-item-52" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-52"><a href="https://www.invicti.com/integrations/">Integrations</a></li> <li id="menu-item-53" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-53"><a href="https://www.invicti.com/plans/">Plans</a></li> <li id="menu-item-54" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-54"><a href="https://www.invicti.com/case-studies/">Case Studies</a></li> <li id="menu-item-55" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-55"><a href="https://www.invicti.com/changelogs/">Changelogs</a></li> <li id="menu-item-22395" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22395"><a href="https://www.invicti.com/learn/welcome/">Invicti Learn</a></li> </ul> </li> <li id="menu-item-57" class="footer-menu-title menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-57"><a href="#">USE CASES</a> <ul class="sub-menu level--1"> <li id="menu-item-58" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-58"><a href="https://www.invicti.com/penetration-testing-software/">Penetration Testing Software</a></li> <li id="menu-item-59" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-59"><a href="https://www.invicti.com/website-security-scanner/">Website Security Scanner</a></li> <li id="menu-item-60" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-60"><a href="https://www.invicti.com/ethical-hacking-software/">Ethical Hacking Software</a></li> <li id="menu-item-61" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-61"><a href="https://www.invicti.com/web-vulnerability-scanner/">Web Vulnerability Scanner</a></li> <li id="menu-item-62" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-62"><a href="https://www.invicti.com/vulnerability-scanner-comparison/">Comparisons</a></li> <li id="menu-item-63" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-63"><a href="https://www.invicti.com/online-web-application-security-scanner/">Online Application Scanner</a></li> </ul> </li> <li id="menu-item-64" class="footer-menu-title menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-64"><a href="#">WEB SECURITY</a> <ul class="sub-menu level--1"> <li id="menu-item-70" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-70"><a href="https://www.invicti.com/blog/web-security/false-positives-web-application-security/">The Problem with False Positives</a></li> <li id="menu-item-69" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-69"><a href="https://www.invicti.com/blog/web-security/comparison-commercial-non-commercial-web-application-security-scanner/">Why Pay for Web Scanners</a></li> <li id="menu-item-68" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-68"><a href="https://www.invicti.com/blog/web-security/sql-injection-cheat-sheet/">SQL Injection Cheat Sheet</a></li> <li id="menu-item-67" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-67"><a href="https://www.invicti.com/blog/web-security/getting-started-web-application-security/">Getting Started with Web Security</a></li> <li id="menu-item-66" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-66"><a href="https://www.invicti.com/web-vulnerability-scanner/vulnerabilities/">Vulnerability Index</a></li> <li id="menu-item-65" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-65"><a href="https://www.invicti.com/blog/web-security/content-security-policy/">Using Content Security Policy to Secure Web Applications</a></li> </ul> </li> <li id="menu-item-55407" class="footer-menu-title menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-55407"><a href="#">COMPARISON</a> <ul class="sub-menu level--1"> <li id="menu-item-55408" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-55408"><a href="https://www.invicti.com/vulnerability-scanner-comparison/invicti-vs-burp-suite/">Burp Suite vs. Invicti</a></li> <li id="menu-item-55409" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-55409"><a href="https://www.invicti.com/vulnerability-scanner-comparison/invicti-vs-probely/">Probely vs. Invicti</a></li> <li id="menu-item-55410" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-55410"><a href="https://www.invicti.com/vulnerability-scanner-comparison/invicti-vs-acunetix/">Acunetix vs. Invicti</a></li> <li id="menu-item-55411" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-55411"><a href="https://www.invicti.com/vulnerability-scanner-comparison/invicti-vs-qualys/">Qualys vs. Invicti</a></li> <li id="menu-item-55412" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-55412"><a href="https://www.invicti.com/vulnerability-scanner-comparison/invicti-vs-nessus/">Tenable Nessus vs. Invicti</a></li> </ul> </li> <li id="menu-item-71" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-71"><a href="#">COMPANY</a> <ul class="sub-menu level--1"> <li id="menu-item-72" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-72"><a href="https://www.invicti.com/about/">About Us</a></li> <li id="menu-item-73" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-73"><a href="https://www.invicti.com/contact/">Contact Us</a></li> <li id="menu-item-74" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-74"><a href="https://www.invicti.com/support/">Support</a></li> <li id="menu-item-75" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-75"><a href="https://www.invicti.com/careers/">Careers</a></li> <li id="menu-item-76" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-76"><a href="https://www.invicti.com/resources/">Resources</a></li> <li id="menu-item-77" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-77"><a href="https://www.invicti.com/partners/">Partners</a></li> </ul> </li> </ul> </div> <div class="container copyright-mobile"> © Invicti 2024 </div> <div class="container"> <ul id="footer-bottom-menu" class="footer-bottom-menu"><li id="menu-item-55180" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-55180"><a href="https://www.invicti.com/compliance/">Compliance</a></li> <li id="menu-item-78" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-78"><a href="https://www.invicti.com/legal/">Legal</a></li> <li id="menu-item-79" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-79"><a href="https://www.invicti.com/compliance/privacy-policy/">Privacy Policy</a></li> <li id="menu-item-8973" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8973"><a href="https://www.invicti.com/compliance/california-privacy-rights/">California Privacy Rights</a></li> <li id="menu-item-80" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-80"><a href="https://www.invicti.com/legal/terms/">Terms of Use</a></li> <li id="menu-item-81" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-81"><a href="https://www.invicti.com/accessibility/">Accessibility</a></li> <li id="menu-item-82" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-82"><a href="https://www.invicti.com/sitemap/">Sitemap</a></li> </ul> </div> </footer> <div class="cookie-notice" id="cookie-notice-bar"> <p> By using this website you agree with our use of cookies to improve its performance and enhance your experience. More information in our <a href="https://www.invicti.com/privacy-policy" rel="noreferrer">Privacy Policy</a>. </p> <button class="cookie-notice-button" title="OK">OK</button> </div><link rel='stylesheet' id='wp-block-library-css' href='https://www.invicti.com/wp/wp-includes/css/dist/block-library/style.min.css' type='text/css' media='all' /> <style id='wp-block-library-inline-css' type='text/css'> .is-style-quote-primary.wp-block-quote{--tw-border-opacity:1;--tw-text-opacity:1;border-color:rgb(204 139 219/var(--tw-border-opacity));border-left-width:0;color:rgb(16 24 32/var(--tw-text-opacity));margin-bottom:0;margin-left:2.5rem;padding-left:1.25rem;position:relative}@media (min-width:767px){.is-style-quote-primary.wp-block-quote{border-left-width:5px;margin-left:65px;padding-bottom:.1875rem;padding-left:2.5rem;padding-top:.1875rem}}.is-style-quote-primary.wp-block-quote a{--tw-text-opacity:1;color:rgb(16 24 32/var(--tw-text-opacity));-webkit-text-decoration-line:underline;text-decoration-line:underline}.is-style-quote-primary.wp-block-quote cite{--tw-text-opacity:1;color:rgb(16 24 32/var(--tw-text-opacity));display:block;font-size:.75rem;font-weight:500;margin-top:.625rem}@media (min-width:576px){.is-style-quote-primary.wp-block-quote cite{font-size:.875rem}}.is-style-quote-primary.wp-block-quote:before{--tw-bg-opacity:1;background-color:rgb(89 23 105/var(--tw-bg-opacity));height:100%;left:-45px;position:absolute;top:0;width:37px}@media (min-width:767px){.is-style-quote-primary.wp-block-quote:before{--tw-bg-opacity:1;background-color:rgb(204 139 219/var(--tw-bg-opacity));left:-65px;width:21px}}.is-style-quote-primary.wp-block-quote:before{content:"";-webkit-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z'/%3E%3C/svg%3E") top/contain no-repeat;mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z'/%3E%3C/svg%3E") top/contain no-repeat}@media (min-width:767px){.is-style-quote-primary.wp-block-quote:before{-webkit-mask-position:center;mask-position:center}} .is-style-quote-warning.wp-block-quote,blockquote.warning{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(242 222 222/var(--tw-bg-opacity));border-color:rgb(235 204 209/var(--tw-border-opacity));border-width:1px;color:rgb(169 68 66/var(--tw-text-opacity));font-size:1rem;margin-bottom:0;padding:1.25rem 1.5625rem 1.25rem 4rem;position:relative}.is-style-quote-warning.wp-block-quote a,blockquote.warning a{--tw-text-opacity:1;color:rgb(169 68 66/var(--tw-text-opacity));-webkit-text-decoration-line:underline;text-decoration-line:underline}.is-style-quote-warning.wp-block-quote a:hover,blockquote.warning a:hover{--tw-text-opacity:1;color:rgb(109 36 35/var(--tw-text-opacity))}.is-style-quote-warning.wp-block-quote:before,blockquote.warning:before{--tw-bg-opacity:1;background-color:rgb(169 68 66/var(--tw-bg-opacity));content:"";height:100%;left:17px;-webkit-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-2 -3 24 24'%3E%3Cpath fill='currentColor' d='m12.8 1.613 6.701 11.161c.963 1.603.49 3.712-1.057 4.71a3.213 3.213 0 0 1-1.743.516H3.298C1.477 18 0 16.47 0 14.581c0-.639.173-1.264.498-1.807L7.2 1.613C8.162.01 10.196-.481 11.743.517c.428.276.79.651 1.057 1.096zm-2.22.839a1.077 1.077 0 0 0-1.514.365L2.365 13.98a1.17 1.17 0 0 0-.166.602c0 .63.492 1.14 1.1 1.14H16.7c.206 0 .407-.06.581-.172a1.164 1.164 0 0 0 .353-1.57L10.933 2.817a1.12 1.12 0 0 0-.352-.365zM10 14a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm0-9a1 1 0 0 1 1 1v4a1 1 0 0 1-2 0V6a1 1 0 0 1 1-1z'/%3E%3C/svg%3E") top/contain no-repeat;mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-2 -3 24 24'%3E%3Cpath fill='currentColor' d='m12.8 1.613 6.701 11.161c.963 1.603.49 3.712-1.057 4.71a3.213 3.213 0 0 1-1.743.516H3.298C1.477 18 0 16.47 0 14.581c0-.639.173-1.264.498-1.807L7.2 1.613C8.162.01 10.196-.481 11.743.517c.428.276.79.651 1.057 1.096zm-2.22.839a1.077 1.077 0 0 0-1.514.365L2.365 13.98a1.17 1.17 0 0 0-.166.602c0 .63.492 1.14 1.1 1.14H16.7c.206 0 .407-.06.581-.172a1.164 1.164 0 0 0 .353-1.57L10.933 2.817a1.12 1.12 0 0 0-.352-.365zM10 14a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm0-9a1 1 0 0 1 1 1v4a1 1 0 0 1-2 0V6a1 1 0 0 1 1-1z'/%3E%3C/svg%3E") top/contain no-repeat;-webkit-mask-position:top;mask-position:top;position:absolute;width:30px} .is-style-quote-info.wp-block-quote,blockquote.info{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(217 237 247/var(--tw-bg-opacity));border-color:rgb(188 232 241/var(--tw-border-opacity));border-width:1px;color:rgb(49 112 143/var(--tw-text-opacity));font-size:1rem;margin-bottom:0;padding:1.25rem 1.5625rem 1.25rem 4rem;position:relative}.is-style-quote-info.wp-block-quote a,blockquote.info a{--tw-text-opacity:1;color:rgb(49 112 143/var(--tw-text-opacity));-webkit-text-decoration-line:underline;text-decoration-line:underline}.is-style-quote-info.wp-block-quote a:hover,blockquote.info a:hover{--tw-text-opacity:1;color:rgb(19 69 95/var(--tw-text-opacity))}.is-style-quote-info.wp-block-quote:before,blockquote.info:before{--tw-bg-opacity:1;background-color:rgb(49 112 143/var(--tw-bg-opacity));content:"";height:100%;left:20px;-webkit-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' fill='%2331708f'%3E%3Cpath d='M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 128c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.3-32-32 14.3-32 32-32zm40 256h-80c-13.2 0-24-10.7-24-24s10.75-24 24-24h16v-64h-8c-13.25 0-24-10.75-24-24s10.8-24 24-24h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24s-10.7 24-24 24z'/%3E%3C/svg%3E") top/contain no-repeat;mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' fill='%2331708f'%3E%3Cpath d='M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 128c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.3-32-32 14.3-32 32-32zm40 256h-80c-13.2 0-24-10.7-24-24s10.75-24 24-24h16v-64h-8c-13.25 0-24-10.75-24-24s10.8-24 24-24h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24s-10.7 24-24 24z'/%3E%3C/svg%3E") top/contain no-repeat;-webkit-mask-position:top;mask-position:top;position:absolute;width:25px} .is-style-quote-tips.wp-block-quote,blockquote.tips{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 254 250/var(--tw-bg-opacity));border-color:rgb(255 243 204/var(--tw-border-opacity));border-width:1px;color:rgb(121 108 16/var(--tw-text-opacity));font-size:1rem;margin-bottom:0;padding:1.25rem 1.5625rem 1.25rem 4rem;position:relative}.is-style-quote-tips.wp-block-quote a,blockquote.tips a{--tw-text-opacity:1;color:rgb(121 108 16/var(--tw-text-opacity));-webkit-text-decoration-line:underline;text-decoration-line:underline}.is-style-quote-tips.wp-block-quote a:hover,blockquote.tips a:hover{--tw-text-opacity:1;color:rgb(77 70 14/var(--tw-text-opacity))}.is-style-quote-tips.wp-block-quote:before,blockquote.tips:before{--tw-bg-opacity:1;background-color:rgb(255 196 0/var(--tw-bg-opacity));content:"";height:100%;left:23px;-webkit-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1536'%3E%3Cpath d='M736 448q0 13-9.5 22.5T704 480t-22.5-9.5T672 448q0-46-54-71t-106-25q-13 0-22.5-9.5T480 320t9.5-22.5T512 288q50 0 99.5 16t87 54 37.5 90zm160 0q0-72-34.5-134t-90-101.5-123-62T512 128t-136.5 22.5-123 62-90 101.5T128 448q0 101 68 180 10 11 30.5 33t30.5 33q128 153 141 298h228q13-145 141-298 10-11 30.5-33t30.5-33q68-79 68-180zm128 0q0 155-103 268-45 49-74.5 87T787 898.5 753 1006q47 28 47 82 0 37-25 64 25 27 25 64 0 52-45 81 13 23 13 47 0 46-31.5 71t-77.5 25q-20 44-60 70t-87 26-87-26-60-70q-46 0-77.5-25t-31.5-71q0-24 13-47-45-29-45-81 0-37 25-64-25-27-25-64 0-54 47-82-4-50-34-107.5T177.5 803 103 716Q0 603 0 448q0-99 44.5-184.5t117-142 164-89T512 0t186.5 32.5 164 89 117 142T1024 448z'/%3E%3C/svg%3E") top/contain no-repeat;mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1536'%3E%3Cpath d='M736 448q0 13-9.5 22.5T704 480t-22.5-9.5T672 448q0-46-54-71t-106-25q-13 0-22.5-9.5T480 320t9.5-22.5T512 288q50 0 99.5 16t87 54 37.5 90zm160 0q0-72-34.5-134t-90-101.5-123-62T512 128t-136.5 22.5-123 62-90 101.5T128 448q0 101 68 180 10 11 30.5 33t30.5 33q128 153 141 298h228q13-145 141-298 10-11 30.5-33t30.5-33q68-79 68-180zm128 0q0 155-103 268-45 49-74.5 87T787 898.5 753 1006q47 28 47 82 0 37-25 64 25 27 25 64 0 52-45 81 13 23 13 47 0 46-31.5 71t-77.5 25q-20 44-60 70t-87 26-87-26-60-70q-46 0-77.5-25t-31.5-71q0-24 13-47-45-29-45-81 0-37 25-64-25-27-25-64 0-54 47-82-4-50-34-107.5T177.5 803 103 716Q0 603 0 448q0-99 44.5-184.5t117-142 164-89T512 0t186.5 32.5 164 89 117 142T1024 448z'/%3E%3C/svg%3E") top/contain no-repeat;-webkit-mask-position:top;mask-position:top;position:absolute;width:20px} .wp-block-group.is-style-group-info{--tw-border-opacity:1;border-color:rgb(250 249 247/var(--tw-border-opacity));border-width:1px;padding:1.5625rem} .is-style-whitepaper-primary-query.wp-block-query .is-layout-flow{list-style-type:none;padding:0}.is-style-whitepaper-primary-query.wp-block-query li .wp-block-group{padding:0!important}.is-style-whitepaper-primary-query.wp-block-query li .wp-block-post-title{font-size:1.125rem;font-style:normal;font-weight:500;margin-top:1rem}.is-style-whitepaper-primary-query.wp-block-query li .wp-block-post-title a{color:#1d1c29!important}.is-style-whitepaper-primary-query.wp-block-query li .wp-block-post-title a:hover{color:var(--color-primary-invictipurple)!important}@media (max-width:766px){.is-style-whitepaper-primary-query.wp-block-query .wp-block-post-template.is-flex-container.is-flex-container.columns-4>li{width:100%}}@media (min-width:767px) and (max-width:991px){.is-style-whitepaper-primary-query.wp-block-query .wp-block-post-template.is-flex-container.is-flex-container.columns-4>li{width:calc(50% - .9375em)}} .is-style-whitepaper-featured-query.wp-block-query .is-layout-flow{list-style-type:none;padding:0}.is-style-whitepaper-featured-query.wp-block-query li .wp-block-group{padding:0!important}.is-style-whitepaper-featured-query.wp-block-query li .wp-block-post-title{font-size:1.625rem;font-style:normal;font-weight:500;line-height:1.16;margin-bottom:0;margin-top:.625rem}.is-style-whitepaper-featured-query.wp-block-query li .wp-block-post-title a{color:#1d1c29!important}.is-style-whitepaper-featured-query.wp-block-query li .wp-block-post-title a:hover{color:var(--color-primary-invictipurple)!important}.is-style-whitepaper-featured-query.wp-block-query .wp-block-post-excerpt__excerpt{--tw-text-opacity:1;color:rgb(99 101 105/var(--tw-text-opacity));font-family:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:1rem;font-style:normal;font-weight:400;line-height:1.36;padding-bottom:1.875rem;padding-top:1.25rem} .is-style-webinar-primary-query.wp-block-query ul{list-style-type:none;padding-left:0}.is-style-webinar-primary-query.wp-block-query ul li{margin-bottom:2rem}.is-style-webinar-primary-query.wp-block-query .is-layout-flow{list-style-type:none;padding:0}.is-style-webinar-primary-query.wp-block-query li .wp-block-post-featured-image{min-height:160px}.is-style-webinar-primary-query.wp-block-query li .wp-block-post-title{font-size:1.125rem;font-style:normal;font-weight:500;margin-bottom:.3125rem;margin-top:1rem}.is-style-webinar-primary-query.wp-block-query li .wp-block-post-title a{--tw-text-opacity:1;color:rgb(16 24 32/var(--tw-text-opacity));transition-duration:.3s}.is-style-webinar-primary-query.wp-block-query li .wp-block-post-title a:hover{--tw-text-opacity:1;color:rgb(89 23 105/var(--tw-text-opacity))}@media (max-width:766px){.is-style-webinar-primary-query.wp-block-query .wp-block-post-template.is-flex-container.is-flex-container.columns-4>li{width:100%}}@media (min-width:767px) and (max-width:991px){.is-style-webinar-primary-query.wp-block-query .wp-block-post-template.is-flex-container.is-flex-container.columns-4>li{width:calc(50% - .9375em)}} @charset "UTF-8";.is-style-webinar-featured-query.wp-block-query .is-layout-flow{list-style-type:none;padding:0}.is-style-webinar-featured-query.wp-block-query li .wp-block-post-featured-image{margin-left:auto;margin-right:auto;max-width:600px}.is-style-webinar-featured-query.wp-block-query li .wp-block-post-title{font-size:1.25rem;font-style:normal;font-weight:500;line-height:1.16;margin-bottom:.625rem;margin-top:1.25rem}@media (min-width:767px){.is-style-webinar-featured-query.wp-block-query li .wp-block-post-title{margin-top:0}}@media (min-width:992px){.is-style-webinar-featured-query.wp-block-query li .wp-block-post-title{font-size:1.625rem}}.is-style-webinar-featured-query.wp-block-query li .wp-block-post-title a{--tw-text-opacity:1;color:rgb(16 24 32/var(--tw-text-opacity));transition-duration:.3s}.is-style-webinar-featured-query.wp-block-query li .wp-block-post-title a:hover{--tw-text-opacity:1;color:rgb(89 23 105/var(--tw-text-opacity))}.is-style-webinar-featured-query.wp-block-query li .wp-block-post-excerpt{margin-bottom:1.25rem;margin-top:1.25rem}.is-style-webinar-featured-query.wp-block-query li .wp-block-post-excerpt p{line-height:1.5}@media (min-width:992px){.is-style-webinar-featured-query.wp-block-query li .wp-block-post-excerpt p{font-size:.9375rem}}@media (min-width:1200px){.is-style-webinar-featured-query.wp-block-query li .wp-block-post-excerpt p{font-size:1rem}}.is-style-webinar-featured-query.wp-block-query li .wp-block-read-more{--tw-text-opacity:1;color:rgb(44 81 189/var(--tw-text-opacity));font-family:Circular XX,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;margin-bottom:0;position:relative}.is-style-webinar-featured-query.wp-block-query li .wp-block-read-more:hover{--tw-text-opacity:1;color:rgb(60 16 83/var(--tw-text-opacity))}.is-style-webinar-featured-query.wp-block-query li .wp-block-read-more:after{content:"▶";font-size:.875rem;margin-left:.3125rem} .wp-block-code.is-style-code-highlighter>code{border-style:none;padding:.625rem 0}.wp-block-code.is-style-code-highlighter>code .punctuation{--tw-text-opacity:1;color:rgb(16 24 32/var(--tw-text-opacity))}.wp-block-code.is-style-code-highlighter>code .line-numbers-rows{padding-bottom:.625rem;padding-top:.625rem}.wp-block-code.is-style-code-highlighter+.toolbar{right:.3em}.wp-block-code.is-style-code-highlighter+.toolbar>.toolbar-item>button{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;background-color:rgb(177 177 178/var(--tw-bg-opacity));border-radius:.25rem;border-width:0;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:rgb(255 255 255/var(--tw-text-opacity));line-height:1;padding:.25rem .625rem;text-transform:lowercase} </style> <style id='wp-block-library-theme-inline-css' type='text/css'> .wp-block-audio :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-audio :where(figcaption){color:#ffffffa6}.wp-block-audio{margin:0 0 1em}.wp-block-code{border:1px solid #ccc;border-radius:4px;font-family:Menlo,Consolas,monaco,monospace;padding:.8em 1em}.wp-block-embed :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-embed :where(figcaption){color:#ffffffa6}.wp-block-embed{margin:0 0 1em}.blocks-gallery-caption{color:#555;font-size:13px;text-align:center}.is-dark-theme .blocks-gallery-caption{color:#ffffffa6}:root :where(.wp-block-image figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme :root :where(.wp-block-image figcaption){color:#ffffffa6}.wp-block-image{margin:0 0 1em}.wp-block-pullquote{border-bottom:4px solid;border-top:4px solid;color:currentColor;margin-bottom:1.75em}.wp-block-pullquote cite,.wp-block-pullquote footer,.wp-block-pullquote__citation{color:currentColor;font-size:.8125em;font-style:normal;text-transform:uppercase}.wp-block-quote{border-left:.25em solid;margin:0 0 1.75em;padding-left:1em}.wp-block-quote cite,.wp-block-quote footer{color:currentColor;font-size:.8125em;font-style:normal;position:relative}.wp-block-quote.has-text-align-right{border-left:none;border-right:.25em solid;padding-left:0;padding-right:1em}.wp-block-quote.has-text-align-center{border:none;padding-left:0}.wp-block-quote.is-large,.wp-block-quote.is-style-large,.wp-block-quote.is-style-plain{border:none}.wp-block-search .wp-block-search__label{font-weight:700}.wp-block-search__button{border:1px solid #ccc;padding:.375em .625em}:where(.wp-block-group.has-background){padding:1.25em 2.375em}.wp-block-separator.has-css-opacity{opacity:.4}.wp-block-separator{border:none;border-bottom:2px solid;margin-left:auto;margin-right:auto}.wp-block-separator.has-alpha-channel-opacity{opacity:1}.wp-block-separator:not(.is-style-wide):not(.is-style-dots){width:100px}.wp-block-separator.has-background:not(.is-style-dots){border-bottom:none;height:1px}.wp-block-separator.has-background:not(.is-style-wide):not(.is-style-dots){height:2px}.wp-block-table{margin:0 0 1em}.wp-block-table td,.wp-block-table th{word-break:normal}.wp-block-table :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-table :where(figcaption){color:#ffffffa6}.wp-block-video :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-video :where(figcaption){color:#ffffffa6}.wp-block-video{margin:0 0 1em}:root :where(.wp-block-template-part.has-background){margin-bottom:0;margin-top:0;padding:1.25em 2.375em} </style> <script type="text/javascript" id="app-footer-js" nonce="wo123jejr234982dfn">!function(){"use strict";var r,n={},t={};function e(r){var o=t[r];if(void 0!==o)return o.exports;var u=t[r]={exports:{}};return n[r](u,u.exports,e),u.exports}e.m=n,r=[],e.O=function(n,t,o,u){if(!t){var i=1/0;for(s=0;s<r.length;s++){t=r[s][0],o=r[s][1],u=r[s][2];for(var f=!0,c=0;c<t.length;c++)(!1&u||i>=u)&&Object.keys(e.O).every((function(r){return e.O[r](t[c])}))?t.splice(c--,1):(f=!1,u<i&&(i=u));if(f){r.splice(s--,1);var a=o();void 0!==a&&(n=a)}}return n}u=u||0;for(var s=r.length;s>0&&r[s-1][2]>u;s--)r[s]=r[s-1];r[s]=[t,o,u]},e.o=function(r,n){return Object.prototype.hasOwnProperty.call(r,n)},function(){var r={8546:0,8138:0,9049:0,4522:0,8056:0,3626:0,2917:0,7260:0,7484:0,995:0,5398:0,1697:0,3896:0,687:0,7555:0,3206:0,9484:0,1120:0,4167:0,9774:0,3615:0,2229:0,9944:0,1785:0,196:0,896:0,1548:0,2651:0,1739:0,7532:0,1891:0,9047:0,7368:0,6469:0,2078:0,3415:0,8320:0,1010:0,4906:0,2855:0,4098:0,973:0,8201:0,7089:0,6840:0,3770:0,8043:0,4216:0,226:0,383:0,2285:0,6045:0,6567:0,1575:0,1855:0,9489:0,7215:0,4674:0,5177:0,9190:0,9402:0,4346:0,175:0,1121:0,6231:0,4055:0,5517:0,4298:0,7695:0,7916:0,8947:0,4915:0,547:0,7258:0,8624:0,2039:0,7381:0,7123:0,5839:0,3501:0,2132:0,1518:0,530:0,148:0,1909:0,5605:0,3375:0,188:0,1981:0,6362:0,798:0,2212:0,5950:0,8517:0,7991:0,5551:0,2125:0,1099:0,9331:0,5760:0,2126:0,4692:0,495:0,4777:0,961:0,9598:0,2845:0,2019:0,2879:0,2365:0};e.O.j=function(n){return 0===r[n]};var n=function(n,t){var o,u,i=t[0],f=t[1],c=t[2],a=0;if(i.some((function(n){return 0!==r[n]}))){for(o in f)e.o(f,o)&&(e.m[o]=f[o]);if(c)var s=c(e)}for(n&&n(t);a<i.length;a++)u=i[a],e.o(r,u)&&r[u]&&r[u][0](),r[i[a]]=0;return e.O(s)},t=self.webpackChunk=self.webpackChunk||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))}()}(); !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.lozad=e()}(this,(function(){"use strict";var t="undefined"!=typeof document&&document.documentMode,e={rootMargin:"0px",threshold:0,load:function(e){if("picture"===e.nodeName.toLowerCase()){var r=e.querySelector("img"),a=!1;null===r&&(r=document.createElement("img"),a=!0),t&&e.getAttribute("data-iesrc")&&(r.src=e.getAttribute("data-iesrc")),e.getAttribute("data-alt")&&(r.alt=e.getAttribute("data-alt")),a&&e.append(r)}if("video"===e.nodeName.toLowerCase()&&!e.getAttribute("data-src")&&e.children){for(var o=e.children,i=void 0,n=0;n<=o.length-1;n++)(i=o[n].getAttribute("data-src"))&&(o[n].src=i);e.load()}e.getAttribute("data-poster")&&(e.poster=e.getAttribute("data-poster")),e.getAttribute("data-src")&&(e.src=e.getAttribute("data-src")),e.getAttribute("data-srcset")&&e.setAttribute("srcset",e.getAttribute("data-srcset"));var d=",";if(e.getAttribute("data-background-delimiter")&&(d=e.getAttribute("data-background-delimiter")),e.getAttribute("data-background-image"))e.style.backgroundImage="url('"+e.getAttribute("data-background-image").split(d).join("'),url('")+"')";else if(e.getAttribute("data-background-image-set")){var u=e.getAttribute("data-background-image-set").split(d),g=u[0].substr(0,u[0].indexOf(" "))||u[0];g=-1===g.indexOf("url(")?"url("+g+")":g,1===u.length?e.style.backgroundImage=g:e.setAttribute("style",(e.getAttribute("style")||"")+"background-image: "+g+"; background-image: -webkit-image-set("+u+"); background-image: image-set("+u+")")}e.getAttribute("data-toggle-class")&&e.classList.toggle(e.getAttribute("data-toggle-class"))},loaded:function(){}};function r(t){t.setAttribute("data-loaded",!0)}var a=function(t){return"true"===t.getAttribute("data-loaded")},o=function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:document;return t instanceof Element?[t]:t instanceof NodeList?t:e.querySelectorAll(t)};return function(){var t,i,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:".lozad",d=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},u=Object.assign({},e,d),g=u.root,s=u.rootMargin,c=u.threshold,l=u.load,b=u.loaded,f=void 0;"undefined"!=typeof window&&window.IntersectionObserver&&(f=new IntersectionObserver((t=l,i=b,function(e,o){e.forEach((function(e){(0<e.intersectionRatio||e.isIntersecting)&&(o.unobserve(e.target),a(e.target)||(t(e.target),r(e.target),i(e.target)))}))}),{root:g,rootMargin:s,threshold:c}));for(var A,m=o(n,g),v=0;v<m.length;v++)(A=m[v]).getAttribute("data-placeholder-background")&&(A.style.background=A.getAttribute("data-placeholder-background"));return{observe:function(){for(var t=o(n,g),e=0;e<t.length;e++)a(t[e])||(f?f.observe(t[e]):(l(t[e]),r(t[e]),b(t[e])))},triggerLoad:function(t){a(t)||(l(t),r(t),b(t))},observer:f}}})); !function(e){var n;if("function"==typeof define&&define.amd&&(define(e),n=!0),"object"==typeof exports&&(module.exports=e(),n=!0),!n){var t=window.Cookies,o=window.Cookies=e();o.noConflict=function(){return window.Cookies=t,o}}}((function(){function e(){for(var e=0,n={};e<arguments.length;e++){var t=arguments[e];for(var o in t)n[o]=t[o]}return n}function n(e){return e.replace(/(%[0-9A-Z]{2})+/g,decodeURIComponent)}return function t(o){function r(){}function i(n,t,i){if("undefined"!=typeof document){"number"==typeof(i=e({path:"/"},r.defaults,i)).expires&&(i.expires=new Date(1*new Date+864e5*i.expires)),i.expires=i.expires?i.expires.toUTCString():"";try{var c=JSON.stringify(t);/^[\{\[]/.test(c)&&(t=c)}catch(e){}t=o.write?o.write(t,n):encodeURIComponent(String(t)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),n=encodeURIComponent(String(n)).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/[\(\)]/g,escape);var f="";for(var u in i)i[u]&&(f+="; "+u,!0!==i[u]&&(f+="="+i[u].split(";")[0]));return document.cookie=n+"="+t+f}}function c(e,t){if("undefined"!=typeof document){for(var r={},i=document.cookie?document.cookie.split("; "):[],c=0;c<i.length;c++){var f=i[c].split("="),u=f.slice(1).join("=");t||'"'!==u.charAt(0)||(u=u.slice(1,-1));try{var a=n(f[0]);if(u=(o.read||o)(u,a)||n(u),t)try{u=JSON.parse(u)}catch(e){}if(r[a]=u,e===a)break}catch(e){}}return e?r[e]:r}}return r.set=i,r.get=function(e){return c(e,!1)},r.getJSON=function(e){return c(e,!0)},r.remove=function(n,t){i(n,"",e(t,{expires:-1}))},r.defaults={},r.withConverter=t,r}((function(){}))})); (self.webpackChunk=self.webpackChunk||[]).push([[9742],{4006:function(){var e=function(){"use strict";var e={},t=[];return e.extend=function(t,o){e[t]=o},e.init=function(e){t.push(e)},e.getAll=function(){return e},e.on=function(e,t,o,n){if(!e)throw new Error("Please provide an element to attach the event to.");if(!t)throw new Error("Please provide an event to listen for.");if(!o||"function"!=typeof o)throw new Error("Please provide a valid callback function to run");e.addEventListener(t,o,n||!1)},e.off=function(e,t){e.removeEventListener(t,t)},e.imageLazyLoading=function(){lozad(".lozad",{rootMargin:"300px",threshold:0}).observe()},e.pageSettings=function(){var e=0,t=document.querySelector(":root"),o=document.querySelector(".site-footer"),n=document.querySelector(".site-header");if(n){var i=n.offsetHeight;e+=i,t.style.setProperty("--header-height",i+"px")}if(o){var a=o.offsetHeight;e+=a,t.style.setProperty("--footer-height",a+"px")}t.style.setProperty("--add-height",e+"px")},e.ready=function(){var e=new Event("ready");document.dispatchEvent(e)},document.addEventListener("DOMContentLoaded",e.ready),e.init(e.imageLazyLoading),e.init(e.pageSettings),window.onload=function(){e.pageSettings()},window.onresize=function(){e.pageSettings()},document.addEventListener("DOMContentLoaded",(function(){t.forEach((function(e){e.call()}))})),e}();window.App=e,e.init((function(){var e=document.getElementById("cookie-notice-bar"),t=e.getElementsByClassName("cookie-notice-button")[0],o=new Event("cookiesAllowed");Cookies.get("cookiebar")||e.classList.add("active"),t.onclick=function(){Cookies.set("cookiebar","hide",{expires:999}),window.dispatchEvent(o)},window.addEventListener("cookiesAllowed",(function(t){t.preventDefault(),e.classList.remove("active")}),!1)})),e.extend("utm",{nsUtmKeys:["utm_source","utm_campaign","utm_medium","utm_content","utm_term","utm_concept","vwo_id","vwo_variation","gclid"],localStoragePrefix:"",localStorageLandingPageKey:"ns_landing_page_key",localStorageReferrerKey:"referrerUrl",saveUtmDataToLocalStorage:function(){var e=this;try{var t=new URLSearchParams(window.location.search);this.nsUtmKeys.forEach((function(o){!0===t.has(o)&&null!=t.get(o)&&"null"!=t.get(o)&&localStorage.setItem(e.localStoragePrefix+o,t.get(o))})),Cookies.get(this.localStorageLandingPageKey)||(Cookies.set(this.localStorageLandingPageKey,window.location.protocol+"//"+window.location.host+window.location.pathname,{expires:1/48}),e.saveReferrer())}catch(e){console.error(e)}},saveReferrer:function(){var e=this,t=document.referrer;""!==t&&(t=(t=(t=(t=t.replace("http://","")).replace("https://","")).replace("www.","")).replace("/","")),localStorage.setItem(this.localStorageReferrerKey,t);var o=localStorage.getItem(e.localStoragePrefix+"utm_source");if(""!==t&&(null===o||""==o)){var n=e.getSearchEngine(t);localStorage.setItem(e.localStoragePrefix+"utm_source",n),localStorage.setItem(e.localStoragePrefix+"utm_medium",n!=t?"organic":"referral")}""!==t&&-1===t.indexOf("invicti.com")||null!==o&&""!=o||(localStorage.setItem(e.localStoragePrefix+"utm_source","direct"),localStorage.setItem(e.localStoragePrefix+"utm_medium","direct"))},getSearchEngine:function(e){return null==e?e:-1!=e.indexOf("google")?"google":-1!=e.indexOf("bing.com")?"bing":-1!=e.indexOf("duckduckgo.com")?"duckduckgo":-1!=e.indexOf("yahoo")?"yahoo":-1!=e.indexOf("baidu.com")?"baidu":-1!=e.indexOf("ecosia.org")?"ecosia.org ":-1!=e.indexOf("yandex")?"yandex":-1!=e.indexOf("qwant.com")?"qwant":-1!=e.indexOf("naver.com")?"naver":-1!=e.indexOf("ask")?"ask.com ":-1!=e.indexOf("so.com")?"so.com ":-1!=e.indexOf("sogou.com")?"sogou":e},vwoInit:function(){window.VWO=window.VWO||[],window.VWO.push(["onVariationApplied",function(e){if(e){var t=e[1],o=e[2];if(void 0!==window._vwo_exp[t].comb_n[o]&&["VISUAL_AB","VISUAL","SPLIT_URL","SURVEY"].indexOf(window._vwo_exp[t].type)>-1){var n=parseInt(sessionStorage.getItem("ns_vwo_id"),10);(isNaN(n)||n>t)&&(sessionStorage.setItem("ns_vwo_id",t),sessionStorage.setItem("ns_vwo_variation",o))}}}])},init:function(){var t=e.utm;t.vwoInit(),t.saveUtmDataToLocalStorage()}}),e.init(e.utm.init),e.init((function(){"function"==typeof WOW&&new WOW({boxClass:"wow",animateClass:"animated",offset:165,mobile:!1,live:!1}).init()})),e.init((function(){var e=document.querySelector(".invicti-bar"),t=localStorage.getItem("hello_bar");if(e&&(null==t||"hide"!==t)){var o=document.querySelector(".bar-close"),n=document.querySelector("body"),i=document.querySelector(".transparent-header");n.classList.add("invicti-bar-active"),i&&n.classList.add("transparent-header-active"),o.addEventListener("click",(function(){localStorage.setItem("hello_bar","hide"),n.classList.remove("invicti-bar-active"),n.classList.remove("transparent-header-active")}))}}))}},function(e){var t;t=4006,e(e.s=t)}]); /* PrismJS 1.29.0 https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+aspnet+c+csharp+graphql+java+json+json5+jsonp+markup-templating+nginx+php+python+regex+ruby+sql&plugins=line-numbers+toolbar+copy-to-clipboard */ var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(e){var n=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,r={},a={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof i?new i(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(n,t){var r,i;switch(t=t||{},a.util.type(n)){case"Object":if(i=a.util.objId(n),t[i])return t[i];for(var l in r={},t[i]=r,n)n.hasOwnProperty(l)&&(r[l]=e(n[l],t));return r;case"Array":return i=a.util.objId(n),t[i]?t[i]:(r=[],t[i]=r,n.forEach((function(n,a){r[a]=e(n,t)})),r);default:return n}},getLanguage:function(e){for(;e;){var t=n.exec(e.className);if(t)return t[1].toLowerCase();e=e.parentElement}return"none"},setLanguage:function(e,t){e.className=e.className.replace(RegExp(n,"gi"),""),e.classList.add("language-"+t)},currentScript:function(){if("undefined"==typeof document)return null;if("currentScript"in document)return document.currentScript;try{throw new Error}catch(r){var e=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(r.stack)||[])[1];if(e){var n=document.getElementsByTagName("script");for(var t in n)if(n[t].src==e)return n[t]}return null}},isActive:function(e,n,t){for(var r="no-"+n;e;){var a=e.classList;if(a.contains(n))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!t}},languages:{plain:r,plaintext:r,text:r,txt:r,extend:function(e,n){var t=a.util.clone(a.languages[e]);for(var r in n)t[r]=n[r];return t},insertBefore:function(e,n,t,r){var i=(r=r||a.languages)[e],l={};for(var o in i)if(i.hasOwnProperty(o)){if(o==n)for(var s in t)t.hasOwnProperty(s)&&(l[s]=t[s]);t.hasOwnProperty(o)||(l[o]=i[o])}var u=r[e];return r[e]=l,a.languages.DFS(a.languages,(function(n,t){t===u&&n!=e&&(this[n]=l)})),l},DFS:function e(n,t,r,i){i=i||{};var l=a.util.objId;for(var o in n)if(n.hasOwnProperty(o)){t.call(n,o,n[o],r||o);var s=n[o],u=a.util.type(s);"Object"!==u||i[l(s)]?"Array"!==u||i[l(s)]||(i[l(s)]=!0,e(s,t,o,i)):(i[l(s)]=!0,e(s,t,null,i))}}},plugins:{},highlightAll:function(e,n){a.highlightAllUnder(document,e,n)},highlightAllUnder:function(e,n,t){var r={callback:t,container:e,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};a.hooks.run("before-highlightall",r),r.elements=Array.prototype.slice.apply(r.container.querySelectorAll(r.selector)),a.hooks.run("before-all-elements-highlight",r);for(var i,l=0;i=r.elements[l++];)a.highlightElement(i,!0===n,r.callback)},highlightElement:function(n,t,r){var i=a.util.getLanguage(n),l=a.languages[i];a.util.setLanguage(n,i);var o=n.parentElement;o&&"pre"===o.nodeName.toLowerCase()&&a.util.setLanguage(o,i);var s={element:n,language:i,grammar:l,code:n.textContent};function u(e){s.highlightedCode=e,a.hooks.run("before-insert",s),s.element.innerHTML=s.highlightedCode,a.hooks.run("after-highlight",s),a.hooks.run("complete",s),r&&r.call(s.element)}if(a.hooks.run("before-sanity-check",s),(o=s.element.parentElement)&&"pre"===o.nodeName.toLowerCase()&&!o.hasAttribute("tabindex")&&o.setAttribute("tabindex","0"),!s.code)return a.hooks.run("complete",s),void(r&&r.call(s.element));if(a.hooks.run("before-highlight",s),s.grammar)if(t&&e.Worker){var c=new Worker(a.filename);c.onmessage=function(e){u(e.data)},c.postMessage(JSON.stringify({language:s.language,code:s.code,immediateClose:!0}))}else u(a.highlight(s.code,s.grammar,s.language));else u(a.util.encode(s.code))},highlight:function(e,n,t){var r={code:e,grammar:n,language:t};if(a.hooks.run("before-tokenize",r),!r.grammar)throw new Error('The language "'+r.language+'" has no grammar.');return r.tokens=a.tokenize(r.code,r.grammar),a.hooks.run("after-tokenize",r),i.stringify(a.util.encode(r.tokens),r.language)},tokenize:function(e,n){var t=n.rest;if(t){for(var r in t)n[r]=t[r];delete n.rest}var a=new s;return u(a,a.head,e),o(e,a,n,a.head,0),function(e){for(var n=[],t=e.head.next;t!==e.tail;)n.push(t.value),t=t.next;return n}(a)},hooks:{all:{},add:function(e,n){var t=a.hooks.all;t[e]=t[e]||[],t[e].push(n)},run:function(e,n){var t=a.hooks.all[e];if(t&&t.length)for(var r,i=0;r=t[i++];)r(n)}},Token:i};function i(e,n,t,r){this.type=e,this.content=n,this.alias=t,this.length=0|(r||"").length}function l(e,n,t,r){e.lastIndex=n;var a=e.exec(t);if(a&&r&&a[1]){var i=a[1].length;a.index+=i,a[0]=a[0].slice(i)}return a}function o(e,n,t,r,s,g){for(var f in t)if(t.hasOwnProperty(f)&&t[f]){var h=t[f];h=Array.isArray(h)?h:[h];for(var d=0;d<h.length;++d){if(g&&g.cause==f+","+d)return;var v=h[d],p=v.inside,m=!!v.lookbehind,y=!!v.greedy,k=v.alias;if(y&&!v.pattern.global){var x=v.pattern.toString().match(/[imsuy]*$/)[0];v.pattern=RegExp(v.pattern.source,x+"g")}for(var b=v.pattern||v,w=r.next,A=s;w!==n.tail&&!(g&&A>=g.reach);A+=w.value.length,w=w.next){var E=w.value;if(n.length>e.length)return;if(!(E instanceof i)){var P,L=1;if(y){if(!(P=l(b,A,e,m))||P.index>=e.length)break;var S=P.index,O=P.index+P[0].length,j=A;for(j+=w.value.length;S>=j;)j+=(w=w.next).value.length;if(A=j-=w.value.length,w.value instanceof i)continue;for(var C=w;C!==n.tail&&(j<O||"string"==typeof C.value);C=C.next)L++,j+=C.value.length;L--,E=e.slice(A,j),P.index-=A}else if(!(P=l(b,0,E,m)))continue;S=P.index;var N=P[0],_=E.slice(0,S),M=E.slice(S+N.length),W=A+E.length;g&&W>g.reach&&(g.reach=W);var z=w.prev;if(_&&(z=u(n,z,_),A+=_.length),c(n,z,L),w=u(n,z,new i(f,p?a.tokenize(N,p):N,k,N)),M&&u(n,w,M),L>1){var I={cause:f+","+d,reach:W};o(e,n,t,w.prev,A,I),g&&I.reach>g.reach&&(g.reach=I.reach)}}}}}}function s(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function u(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function c(e,n,t){for(var r=n.next,a=0;a<t&&r!==e.tail;a++)r=r.next;n.next=r,r.prev=n,e.length-=a}if(e.Prism=a,i.stringify=function e(n,t){if("string"==typeof n)return n;if(Array.isArray(n)){var r="";return n.forEach((function(n){r+=e(n,t)})),r}var i={type:n.type,content:e(n.content,t),tag:"span",classes:["token",n.type],attributes:{},language:t},l=n.alias;l&&(Array.isArray(l)?Array.prototype.push.apply(i.classes,l):i.classes.push(l)),a.hooks.run("wrap",i);var o="";for(var s in i.attributes)o+=" "+s+'="'+(i.attributes[s]||"").replace(/"/g,""")+'"';return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+o+">"+i.content+"</"+i.tag+">"},!e.document)return e.addEventListener?(a.disableWorkerMessageHandler||e.addEventListener("message",(function(n){var t=JSON.parse(n.data),r=t.language,i=t.code,l=t.immediateClose;e.postMessage(a.highlight(i,a.languages[r],r)),l&&e.close()}),!1),a):a;var g=a.util.currentScript();function f(){a.manual||a.highlightAll()}if(g&&(a.filename=g.src,g.hasAttribute("data-manual")&&(a.manual=!0)),!a.manual){var h=document.readyState;"loading"===h||"interactive"===h&&g&&g.defer?document.addEventListener("DOMContentLoaded",f):window.requestAnimationFrame?window.requestAnimationFrame(f):window.setTimeout(f,16)}return a}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); Prism.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",(function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))})),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^<!\[CDATA\[|\]\]>$/i;var t={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:s}};t["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp("(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[^])*?(?=</__>)".replace(/__/g,(function(){return a})),"i"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore("markup","cdata",n)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(a,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp("(^|[\"'\\s])(?:"+a+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))","i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml; !function(s){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:[^;{\\s\"']|\\s+(?!\\s)|"+e.source+")*?(?:;|(?=\\s*\\{))"),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|(?:[^\\\\\r\n()\"']|\\\\[^])*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+e.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(Prism); Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}; Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp("(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])"),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp("((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/(?:(?:\\[(?:[^\\]\\\\\r\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}|(?:\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\s|/\\*(?:[^*]|\\*(?!/))*\\*/)*(?:$|[\r\n,.;:})\\]]|//))"),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),Prism.languages.js=Prism.languages.javascript; !function(e){function n(e,n){return e.replace(/<<(\d+)>>/g,(function(e,s){return"(?:"+n[+s]+")"}))}function s(e,s,a){return RegExp(n(e,s),a||"")}function a(e,n){for(var s=0;s<n;s++)e=e.replace(/<<self>>/g,(function(){return"(?:"+e+")"}));return e.replace(/<<self>>/g,"[^\\s\\S]")}var t="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",r="class enum interface record struct",i="add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)",o="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function l(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var d=l(r),p=RegExp(l(t+" "+r+" "+i+" "+o)),c=l(r+" "+i+" "+o),u=l(t+" "+r+" "+o),g=a("<(?:[^<>;=+\\-*/%&|^]|<<self>>)*>",2),b=a("\\((?:[^()]|<<self>>)*\\)",2),h="@?\\b[A-Za-z_]\\w*\\b",f=n("<<0>>(?:\\s*<<1>>)?",[h,g]),m=n("(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*",[c,f]),k="\\[\\s*(?:,\\s*)*\\]",y=n("<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?",[m,k]),w=n("[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>",[g,b,k]),v=n("\\(<<0>>+(?:,<<0>>+)+\\)",[w]),x=n("(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?",[v,m,k]),$={keyword:p,punctuation:/[<>()?,.:[\]]/},_="'(?:[^\r\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'",B='"(?:\\\\.|[^\\\\"\r\n])*"';e.languages.csharp=e.languages.extend("clike",{string:[{pattern:s("(^|[^$\\\\])<<0>>",['@"(?:""|\\\\[^]|[^\\\\"])*"(?!")']),lookbehind:!0,greedy:!0},{pattern:s("(^|[^@$\\\\])<<0>>",[B]),lookbehind:!0,greedy:!0}],"class-name":[{pattern:s("(\\busing\\s+static\\s+)<<0>>(?=\\s*;)",[m]),lookbehind:!0,inside:$},{pattern:s("(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)",[h,x]),lookbehind:!0,inside:$},{pattern:s("(\\busing\\s+)<<0>>(?=\\s*=)",[h]),lookbehind:!0},{pattern:s("(\\b<<0>>\\s+)<<1>>",[d,f]),lookbehind:!0,inside:$},{pattern:s("(\\bcatch\\s*\\(\\s*)<<0>>",[m]),lookbehind:!0,inside:$},{pattern:s("(\\bwhere\\s+)<<0>>",[h]),lookbehind:!0},{pattern:s("(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>",[y]),lookbehind:!0,inside:$},{pattern:s("\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))",[x,u,h]),inside:$}],keyword:p,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:[dflmu]|lu|ul)?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),e.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),e.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:s("([(,]\\s*)<<0>>(?=\\s*:)",[h]),lookbehind:!0,alias:"punctuation"}}),e.languages.insertBefore("csharp","class-name",{namespace:{pattern:s("(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])",[h]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:s("(\\b(?:default|sizeof|typeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))",[b]),lookbehind:!0,alias:"class-name",inside:$},"return-type":{pattern:s("<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))",[x,m]),inside:$,alias:"class-name"},"constructor-invocation":{pattern:s("(\\bnew\\s+)<<0>>(?=\\s*[[({])",[x]),lookbehind:!0,inside:$,alias:"class-name"},"generic-method":{pattern:s("<<0>>\\s*<<1>>(?=\\s*\\()",[h,g]),inside:{function:s("^<<0>>",[h]),generic:{pattern:RegExp(g),alias:"class-name",inside:$}}},"type-list":{pattern:s("\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))",[d,f,h,x,p.source,b,"\\bnew\\s*\\(\\s*\\)"]),lookbehind:!0,inside:{"record-arguments":{pattern:s("(^(?!new\\s*\\()<<0>>\\s*)<<1>>",[f,b]),lookbehind:!0,greedy:!0,inside:e.languages.csharp},keyword:p,"class-name":{pattern:RegExp(x),greedy:!0,inside:$},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var E=B+"|"+_,R=n("/(?![*/])|//[^\r\n]*[\r\n]|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>",[E]),z=a(n("[^\"'/()]|<<0>>|\\(<<self>>*\\)",[R]),2),S="\\b(?:assembly|event|field|method|module|param|property|return|type)\\b",j=n("<<0>>(?:\\s*\\(<<1>>*\\))?",[m,z]);e.languages.insertBefore("csharp","class-name",{attribute:{pattern:s("((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])",[S,j]),lookbehind:!0,greedy:!0,inside:{target:{pattern:s("^<<0>>(?=\\s*:)",[S]),alias:"keyword"},"attribute-arguments":{pattern:s("\\(<<0>>*\\)",[z]),inside:e.languages.csharp},"class-name":{pattern:RegExp(m),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var A=":[^}\r\n]+",F=a(n("[^\"'/()]|<<0>>|\\(<<self>>*\\)",[R]),2),P=n("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[F,A]),U=a(n("[^\"'/()]|/(?!\\*)|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>|\\(<<self>>*\\)",[E]),2),Z=n("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[U,A]);function q(n,a){return{interpolation:{pattern:s("((?:^|[^{])(?:\\{\\{)*)<<0>>",[n]),lookbehind:!0,inside:{"format-string":{pattern:s("(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)",[a,A]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:e.languages.csharp}}},string:/[\s\S]+/}}e.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:s('(^|[^\\\\])(?:\\$@|@\\$)"(?:""|\\\\[^]|\\{\\{|<<0>>|[^\\\\{"])*"',[P]),lookbehind:!0,greedy:!0,inside:q(P,F)},{pattern:s('(^|[^@\\\\])\\$"(?:\\\\.|\\{\\{|<<0>>|[^\\\\"{])*"',[Z]),lookbehind:!0,greedy:!0,inside:q(Z,U)}],char:{pattern:RegExp(_),greedy:!0}}),e.languages.dotnet=e.languages.cs=e.languages.csharp}(Prism); Prism.languages.aspnet=Prism.languages.extend("markup",{"page-directive":{pattern:/<%\s*@.*%>/,alias:"tag",inside:{"page-directive":{pattern:/<%\s*@\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,alias:"tag"},rest:Prism.languages.markup.tag.inside}},directive:{pattern:/<%.*%>/,alias:"tag",inside:{directive:{pattern:/<%\s*?[$=%#:]{0,2}|%>/,alias:"tag"},rest:Prism.languages.csharp}}}),Prism.languages.aspnet.tag.pattern=/<(?!%)\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/,Prism.languages.insertBefore("inside","punctuation",{directive:Prism.languages.aspnet.directive},Prism.languages.aspnet.tag.inside["attr-value"]),Prism.languages.insertBefore("aspnet","comment",{"asp-comment":{pattern:/<%--[\s\S]*?--%>/,alias:["asp","comment"]}}),Prism.languages.insertBefore("aspnet",Prism.languages.javascript?"script":"tag",{"asp-script":{pattern:/(<script(?=.*runat=['"]?server\b)[^>]*>)[\s\S]*?(?=<\/script>)/i,lookbehind:!0,alias:["asp","script"],inside:Prism.languages.csharp||{}}}); Prism.languages.c=Prism.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),Prism.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),Prism.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},Prism.languages.c.string],char:Prism.languages.c.char,comment:Prism.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:Prism.languages.c}}}}),Prism.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete Prism.languages.c.boolean; Prism.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:Prism.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},Prism.hooks.add("after-tokenize",(function(n){if("graphql"===n.language)for(var t=n.tokens.filter((function(n){return"string"!=typeof n&&"comment"!==n.type&&"scalar"!==n.type})),e=0;e<t.length;){var a=t[e++];if("keyword"===a.type&&"mutation"===a.content){var r=[];if(c(["definition-mutation","punctuation"])&&"("===l(1).content){e+=2;var i=f(/^\($/,/^\)$/);if(-1===i)continue;for(;e<i;e++){var o=l(0);"variable"===o.type&&(b(o,"variable-input"),r.push(o.content))}e=i+1}if(c(["punctuation","property-query"])&&"{"===l(0).content&&(e++,b(l(0),"property-mutation"),r.length>0)){var s=f(/^\{$/,/^\}$/);if(-1===s)continue;for(var u=e;u<s;u++){var p=t[u];"variable"===p.type&&r.indexOf(p.content)>=0&&b(p,"variable-input")}}}}function l(n){return t[e+n]}function c(n,t){t=t||0;for(var e=0;e<n.length;e++){var a=l(e+t);if(!a||a.type!==n[e])return!1}return!0}function f(n,a){for(var r=1,i=e;i<t.length;i++){var o=t[i],s=o.content;if("punctuation"===o.type&&"string"==typeof s)if(n.test(s))r++;else if(a.test(s)&&0==--r)return i}return-1}function b(n,t){var e=n.alias;e?Array.isArray(e)||(n.alias=e=[e]):n.alias=e=[],e.push(t)}})); !function(e){var n=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\s*[(){}[\]<>=%~.:,;?+\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,t="(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*",s={pattern:RegExp("(^|[^\\w.])"+t+"[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b"),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}},punctuation:/\./}};e.languages.java=e.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"/,lookbehind:!0,greedy:!0},"class-name":[s,{pattern:RegExp("(^|[^\\w.])"+t+"[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()]|\\s*(?:\\[[\\s,]*\\]\\s*)?::\\s*new\\b)"),lookbehind:!0,inside:s.inside},{pattern:RegExp("(\\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\\s+)"+t+"[A-Z]\\w*\\b"),lookbehind:!0,inside:s.inside}],keyword:n,function:[e.languages.clike.function,{pattern:/(::\s*)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0},constant:/\b[A-Z][A-Z_\d]+\b/}),e.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"},char:{pattern:/'(?:\\.|[^'\\\r\n]){1,6}'/,greedy:!0}}),e.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":s,keyword:n,punctuation:/[<>(),.:]/,operator:/[?&|]/}},import:[{pattern:RegExp("(\\bimport\\s+)"+t+"(?:[A-Z]\\w*|\\*)(?=\\s*;)"),lookbehind:!0,inside:{namespace:s.inside.namespace,punctuation:/\./,operator:/\*/,"class-name":/\w+/}},{pattern:RegExp("(\\bimport\\s+static\\s+)"+t+"(?:\\w+|\\*)(?=\\s*;)"),lookbehind:!0,alias:"static",inside:{namespace:s.inside.namespace,static:/\b\w+$/,punctuation:/\./,operator:/\*/,"class-name":/\w+/}}],namespace:{pattern:RegExp("(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!<keyword>)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?".replace(/<keyword>/g,(function(){return n.source}))),lookbehind:!0,inside:{punctuation:/\./}}})}(Prism); Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json; !function(n){var e=/("|')(?:\\(?:\r\n?|\n|.)|(?!\1)[^\\\r\n])*\1/;n.languages.json5=n.languages.extend("json",{property:[{pattern:RegExp(e.source+"(?=\\s*:)"),greedy:!0},{pattern:/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/,alias:"unquoted"}],string:{pattern:e,greedy:!0},number:/[+-]?\b(?:NaN|Infinity|0x[a-fA-F\d]+)\b|[+-]?(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[eE][+-]?\d+\b)?/})}(Prism); Prism.languages.jsonp=Prism.languages.extend("json",{punctuation:/[{}[\]();,.]/}),Prism.languages.insertBefore("jsonp","punctuation",{function:/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*\()/}); !function(e){function n(e,n){return"___"+e.toUpperCase()+n+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(t,a,r,o){if(t.language===a){var c=t.tokenStack=[];t.code=t.code.replace(r,(function(e){if("function"==typeof o&&!o(e))return e;for(var r,i=c.length;-1!==t.code.indexOf(r=n(a,i));)++i;return c[i]=e,r})),t.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(t,a){if(t.language===a&&t.tokenStack){t.grammar=e.languages[a];var r=0,o=Object.keys(t.tokenStack);!function c(i){for(var u=0;u<i.length&&!(r>=o.length);u++){var g=i[u];if("string"==typeof g||g.content&&"string"==typeof g.content){var l=o[r],s=t.tokenStack[l],f="string"==typeof g?g:g.content,p=n(a,l),k=f.indexOf(p);if(k>-1){++r;var m=f.substring(0,k),d=new e.Token(a,e.tokenize(s,t.grammar),"language-"+a,s),h=f.substring(k+p.length),v=[];m&&v.push.apply(v,c([m])),v.push(d),h&&v.push.apply(v,c([h])),"string"==typeof g?i.splice.apply(i,[u,1].concat(v)):g.content=v}}else g.content&&c(g.content)}return i}(t.tokens)}}}})}(Prism); !function(e){var n=/\$(?:\w[a-z\d]*(?:_[^\x00-\x1F\s"'\\()$]*)?|\{[^}\s"'\\]+\})/i;e.languages.nginx={comment:{pattern:/(^|[\s{};])#.*/,lookbehind:!0,greedy:!0},directive:{pattern:/(^|\s)\w(?:[^;{}"'\\\s]|\\.|"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|\s+(?:#.*(?!.)|(?![#\s])))*?(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:{string:{pattern:/((?:^|[^\\])(?:\\\\)*)(?:"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')/,lookbehind:!0,greedy:!0,inside:{escape:{pattern:/\\["'\\nrt]/,alias:"entity"},variable:n}},comment:{pattern:/(\s)#.*/,lookbehind:!0,greedy:!0},keyword:{pattern:/^\S+/,greedy:!0},boolean:{pattern:/(\s)(?:off|on)(?!\S)/,lookbehind:!0},number:{pattern:/(\s)\d+[a-z]*(?!\S)/i,lookbehind:!0},variable:n}},punctuation:/[{};]/}}(Prism); !function(e){var a=/\/\*[\s\S]*?\*\/|\/\/.*|#(?!\[).*/,t=[{pattern:/\b(?:false|true)\b/i,alias:"boolean"},{pattern:/(::\s*)\b[a-z_]\w*\b(?!\s*\()/i,greedy:!0,lookbehind:!0},{pattern:/(\b(?:case|const)\s+)\b[a-z_]\w*(?=\s*[;=])/i,greedy:!0,lookbehind:!0},/\b(?:null)\b/i,/\b[A-Z_][A-Z0-9_]*\b(?!\s*\()/],i=/\b0b[01]+(?:_[01]+)*\b|\b0o[0-7]+(?:_[0-7]+)*\b|\b0x[\da-f]+(?:_[\da-f]+)*\b|(?:\b\d+(?:_\d+)*\.?(?:\d+(?:_\d+)*)?|\B\.\d+)(?:e[+-]?\d+)?/i,n=/<?=>|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,s=/[{}\[\](),:;]/;e.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:a,variable:/\$+(?:\w+\b|(?=\{))/,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:array|bool|boolean|float|int|integer|object|string)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|never|object|self|static|string|void)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:array(?!\s*\()|bool|float|int|iterable|mixed|object|string|void)\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:false|null)\b|\b(?:false|null)(?=\s*\|)/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|never|new|or|parent|print|private|protected|public|readonly|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s*)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:i,operator:n,punctuation:s};var l={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,lookbehind:!0,inside:e.languages.php},r=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:l}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:l}}];e.languages.insertBefore("php","variable",{string:r,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:a,string:r,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,number:i,operator:n,punctuation:s}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),e.hooks.add("before-tokenize",(function(a){/<\?/.test(a.code)&&e.languages["markup-templating"].buildPlaceholders(a,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/g)})),e.hooks.add("after-tokenize",(function(a){e.languages["markup-templating"].tokenizePlaceholders(a,"php")}))}(Prism); Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python; !function(a){var e={pattern:/\\[\\(){}[\]^$+*?|.]/,alias:"escape"},n=/\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/,t="(?:[^\\\\-]|"+n.source+")",s=RegExp(t+"-"+t),i={pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:"variable"};a.languages.regex={"char-class":{pattern:/((?:^|[^\\])(?:\\\\)*)\[(?:[^\\\]]|\\[\s\S])*\]/,lookbehind:!0,inside:{"char-class-negation":{pattern:/(^\[)\^/,lookbehind:!0,alias:"operator"},"char-class-punctuation":{pattern:/^\[|\]$/,alias:"punctuation"},range:{pattern:s,inside:{escape:n,"range-punctuation":{pattern:/-/,alias:"operator"}}},"special-escape":e,"char-set":{pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},escape:n}},"special-escape":e,"char-set":{pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:"keyword"},{pattern:/\\k<[^<>']+>/,alias:"keyword",inside:{"group-name":i}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:"function"},escape:n,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|<?[=!]|[idmnsuxU]+(?:-[idmnsuxU]+)?:?))?/,alias:"punctuation",inside:{"group-name":i}},{pattern:/\)/,alias:"punctuation"}],quantifier:{pattern:/(?:[+*?]|\{\d+(?:,\d*)?\})[?+]?/,alias:"number"},alternation:{pattern:/\|/,alias:"keyword"}}}(Prism); !function(e){e.languages.ruby=e.languages.extend("clike",{comment:{pattern:/#.*|^=begin\s[\s\S]*?^=end/m,greedy:!0},"class-name":{pattern:/(\b(?:class|module)\s+|\bcatch\s+\()[\w.\\]+|\b[A-Z_]\w*(?=\s*\.\s*new\b)/,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/,operator:/\.{2,3}|&\.|===|<?=>|[!=]?~|(?:&&|\|\||<<|>>|\*\*|[+\-*/%<>!^&|=])=?|[?:]/,punctuation:/[(){}[\].,;]/}),e.languages.insertBefore("ruby","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}});var n={pattern:/((?:^|[^\\])(?:\\{2})*)#\{(?:[^{}]|\{[^{}]*\})*\}/,lookbehind:!0,inside:{content:{pattern:/^(#\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:e.languages.ruby},delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"}}};delete e.languages.ruby.function;var t="(?:"+["([^a-zA-Z0-9\\s{(\\[<=])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1","\\((?:[^()\\\\]|\\\\[^]|\\((?:[^()\\\\]|\\\\[^])*\\))*\\)","\\{(?:[^{}\\\\]|\\\\[^]|\\{(?:[^{}\\\\]|\\\\[^])*\\})*\\}","\\[(?:[^\\[\\]\\\\]|\\\\[^]|\\[(?:[^\\[\\]\\\\]|\\\\[^])*\\])*\\]","<(?:[^<>\\\\]|\\\\[^]|<(?:[^<>\\\\]|\\\\[^])*>)*>"].join("|")+")",i='(?:"(?:\\\\.|[^"\\\\\r\n])*"|(?:\\b[a-zA-Z_]\\w*|[^\\s\0-\\x7F]+)[?!]?|\\$.)';e.languages.insertBefore("ruby","keyword",{"regex-literal":[{pattern:RegExp("%r"+t+"[egimnosux]{0,6}"),greedy:!0,inside:{interpolation:n,regex:/[\s\S]+/}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:n,regex:/[\s\S]+/}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:[{pattern:RegExp("(^|[^:]):"+i),lookbehind:!0,greedy:!0},{pattern:RegExp("([\r\n{(,][ \t]*)"+i+"(?=:(?!:))"),lookbehind:!0,greedy:!0}],"method-definition":{pattern:/(\bdef\s+)\w+(?:\s*\.\s*\w+)?/,lookbehind:!0,inside:{function:/\b\w+$/,keyword:/^self\b/,"class-name":/^\w+/,punctuation:/\./}}}),e.languages.insertBefore("ruby","string",{"string-literal":[{pattern:RegExp("%[qQiIwWs]?"+t),greedy:!0,inside:{interpolation:n,string:/[\s\S]+/}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:n,string:/[\s\S]+/}},{pattern:/<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?[a-z_]\w*|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?/}},interpolation:n,string:/[\s\S]+/}},{pattern:/<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?'[a-z_]\w*'|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?'|'$/}},string:/[\s\S]+/}}],"command-literal":[{pattern:RegExp("%x"+t),greedy:!0,inside:{interpolation:n,command:{pattern:/[\s\S]+/,alias:"string"}}},{pattern:/`(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|[^\\`#\r\n])*`/,greedy:!0,inside:{interpolation:n,command:{pattern:/[\s\S]+/,alias:"string"}}}]}),delete e.languages.ruby.string,e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\b/,constant:/\b[A-Z][A-Z0-9_]*(?:[?!]|\b)/}),e.languages.rb=e.languages.ruby}(Prism); Prism.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/}; !function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var e="line-numbers",n=/\n(?!$)/g,t=Prism.plugins.lineNumbers={getLine:function(n,t){if("PRE"===n.tagName&&n.classList.contains(e)){var i=n.querySelector(".line-numbers-rows");if(i){var r=parseInt(n.getAttribute("data-start"),10)||1,s=r+(i.children.length-1);t<r&&(t=r),t>s&&(t=s);var l=t-r;return i.children[l]}}},resize:function(e){r([e])},assumeViewportIndependence:!0},i=void 0;window.addEventListener("resize",(function(){t.assumeViewportIndependence&&i===window.innerWidth||(i=window.innerWidth,r(Array.prototype.slice.call(document.querySelectorAll("pre.line-numbers"))))})),Prism.hooks.add("complete",(function(t){if(t.code){var i=t.element,s=i.parentNode;if(s&&/pre/i.test(s.nodeName)&&!i.querySelector(".line-numbers-rows")&&Prism.util.isActive(i,e)){i.classList.remove(e),s.classList.add(e);var l,o=t.code.match(n),a=o?o.length+1:1,u=new Array(a+1).join("<span></span>");(l=document.createElement("span")).setAttribute("aria-hidden","true"),l.className="line-numbers-rows",l.innerHTML=u,s.hasAttribute("data-start")&&(s.style.counterReset="linenumber "+(parseInt(s.getAttribute("data-start"),10)-1)),t.element.appendChild(l),r([s]),Prism.hooks.run("line-numbers",t)}}})),Prism.hooks.add("line-numbers",(function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0}))}function r(e){if(0!=(e=e.filter((function(e){var n,t=(n=e,n?window.getComputedStyle?getComputedStyle(n):n.currentStyle||null:null)["white-space"];return"pre-wrap"===t||"pre-line"===t}))).length){var t=e.map((function(e){var t=e.querySelector("code"),i=e.querySelector(".line-numbers-rows");if(t&&i){var r=e.querySelector(".line-numbers-sizer"),s=t.textContent.split(n);r||((r=document.createElement("span")).className="line-numbers-sizer",t.appendChild(r)),r.innerHTML="0",r.style.display="block";var l=r.getBoundingClientRect().height;return r.innerHTML="",{element:e,lines:s,lineHeights:[],oneLinerHeight:l,sizer:r}}})).filter(Boolean);t.forEach((function(e){var n=e.sizer,t=e.lines,i=e.lineHeights,r=e.oneLinerHeight;i[t.length-1]=void 0,t.forEach((function(e,t){if(e&&e.length>1){var s=n.appendChild(document.createElement("span"));s.style.display="block",s.textContent=e}else i[t]=r}))})),t.forEach((function(e){for(var n=e.sizer,t=e.lineHeights,i=0,r=0;r<t.length;r++)void 0===t[r]&&(t[r]=n.children[i++].getBoundingClientRect().height)})),t.forEach((function(e){var n=e.sizer,t=e.element.querySelector(".line-numbers-rows");n.style.display="none",n.innerHTML="",e.lineHeights.forEach((function(e,n){t.children[n].style.height=e+"px"}))}))}}}(); !function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var e=[],t={},n=function(){};Prism.plugins.toolbar={};var a=Prism.plugins.toolbar.registerButton=function(n,a){var r;r="function"==typeof a?a:function(e){var t;return"function"==typeof a.onClick?((t=document.createElement("button")).type="button",t.addEventListener("click",(function(){a.onClick.call(this,e)}))):"string"==typeof a.url?(t=document.createElement("a")).href=a.url:t=document.createElement("span"),a.className&&t.classList.add(a.className),t.textContent=a.text,t},n in t?console.warn('There is a button with the key "'+n+'" registered already.'):e.push(t[n]=r)},r=Prism.plugins.toolbar.hook=function(a){var r=a.element.parentNode;if(r&&/pre/i.test(r.nodeName)&&!r.parentNode.classList.contains("code-toolbar")){var o=document.createElement("div");o.classList.add("code-toolbar"),r.parentNode.insertBefore(o,r),o.appendChild(r);var i=document.createElement("div");i.classList.add("toolbar");var l=e,d=function(e){for(;e;){var t=e.getAttribute("data-toolbar-order");if(null!=t)return(t=t.trim()).length?t.split(/\s*,\s*/g):[];e=e.parentElement}}(a.element);d&&(l=d.map((function(e){return t[e]||n}))),l.forEach((function(e){var t=e(a);if(t){var n=document.createElement("div");n.classList.add("toolbar-item"),n.appendChild(t),i.appendChild(n)}})),o.appendChild(i)}};a("label",(function(e){var t=e.element.parentNode;if(t&&/pre/i.test(t.nodeName)&&t.hasAttribute("data-label")){var n,a,r=t.getAttribute("data-label");try{a=document.querySelector("template#"+r)}catch(e){}return a?n=a.content:(t.hasAttribute("data-url")?(n=document.createElement("a")).href=t.getAttribute("data-url"):n=document.createElement("span"),n.textContent=r),n}})),Prism.hooks.add("complete",r)}}(); !function(){function t(t){var e=document.createElement("textarea");e.value=t.getText(),e.style.top="0",e.style.left="0",e.style.position="fixed",document.body.appendChild(e),e.focus(),e.select();try{var o=document.execCommand("copy");setTimeout((function(){o?t.success():t.error()}),1)}catch(e){setTimeout((function(){t.error(e)}),1)}document.body.removeChild(e)}"undefined"!=typeof Prism&&"undefined"!=typeof document&&(Prism.plugins.toolbar?Prism.plugins.toolbar.registerButton("copy-to-clipboard",(function(e){var o=e.element,n=function(t){var e={copy:"Copy","copy-error":"Press Ctrl+C to copy","copy-success":"Copied!","copy-timeout":5e3};for(var o in e){for(var n="data-prismjs-"+o,c=t;c&&!c.hasAttribute(n);)c=c.parentElement;c&&(e[o]=c.getAttribute(n))}return e}(o),c=document.createElement("button");c.className="copy-to-clipboard-button",c.setAttribute("type","button");var r=document.createElement("span");return c.appendChild(r),u("copy"),function(e,o){e.addEventListener("click",(function(){!function(e){navigator.clipboard?navigator.clipboard.writeText(e.getText()).then(e.success,(function(){t(e)})):t(e)}(o)}))}(c,{getText:function(){return o.textContent},success:function(){u("copy-success"),i()},error:function(){u("copy-error"),setTimeout((function(){!function(t){window.getSelection().selectAllChildren(t)}(o)}),1),i()}}),c;function i(){setTimeout((function(){u("copy")}),n["copy-timeout"])}function u(t){r.textContent=n[t],c.setAttribute("data-copy-state",t)}})):console.warn("Copy to Clipboard plugin loaded before Toolbar plugin."))}(); (self.webpackChunk=self.webpackChunk||[]).push([[1137],{2768:function(){App.init((function(){document.querySelectorAll(".is-style-code-highlighter").forEach((function(e){-1===e.classList.value.search("language-")&&e.classList.add("language-javascript"),e.classList.add("line-numbers"),e.parentNode.classList.add("line-numbers")})),Prism.highlightAll(document.querySelector("main.main"))}))}},function(e){var s;s=2768,e(e.s=s)}]); function At(n,t){for(var e=0;e<t.length;e++){var i=t[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(n,i.key,i)}}var n,t;n=this,t=function(){"use strict";var n="splide",t="data-"+n;function e(n){n.length=0}function i(n){return!s(n)&&"object"==typeof n}function o(n){return Array.isArray(n)}function r(n){return"string"==typeof n}function u(n){return void 0===n}function s(n){return null===n}function c(n){return n instanceof HTMLElement}function a(n){return o(n)?n:[n]}function f(n,t){a(n).forEach(t)}function l(n,t){return-1<n.indexOf(t)}function d(n,t){return n.push.apply(n,a(t)),n}var p=Array.prototype;function h(n,t,e){return p.slice.call(n,t,e)}function g(n,t,e){n&&f(t,(function(t){t&&n.classList[e?"add":"remove"](t)}))}function v(n,t){g(n,r(t)?t.split(" "):t,!0)}function m(n,t){f(t,n.appendChild.bind(n))}function y(n,t){f(n,(function(n){var e=t.parentNode;e&&e.insertBefore(n,t)}))}function b(n,t){return c(n)&&(n.msMatchesSelector||n.matches).call(n,t)}function w(n,t){return n?h(n.children).filter((function(n){return b(n,t)})):[]}function x(n,t){return t?w(n,t)[0]:n.firstElementChild}function E(n,t,e){if(n)for(var i=Object.keys(n),o=(i=e?i.reverse():i,0);o<i.length;o++){var r=i[o];if("__proto__"!==r&&!1===t(n[r],r))break}return n}function S(n){return h(arguments,1).forEach((function(t){E(t,(function(e,i){n[i]=t[i]}))})),n}function P(n,t){return E(t,(function(t,e){o(t)?n[e]=t.slice():i(t)?n[e]=P(i(n[e])?n[e]:{},t):n[e]=t})),n}function k(n,t){n&&f(t,(function(t){n.removeAttribute(t)}))}function _(n,t,e){i(t)?E(t,(function(t,e){_(n,e,t)})):s(e)?k(n,t):n.setAttribute(t,String(e))}function A(n,t,e){return n=document.createElement(n),t&&(r(t)?v:_)(n,t),e&&m(e,n),n}function L(n,t,e){if(u(e))return getComputedStyle(n)[t];s(e)||(n=n.style)[t]!==(e=""+e)&&(n[t]=e)}function z(n,t){L(n,"display",t)}function C(n,t){return n.getAttribute(t)}function D(n,t){return n&&n.classList.contains(t)}function M(n){return n.getBoundingClientRect()}function I(n){f(n,(function(n){n&&n.parentNode&&n.parentNode.removeChild(n)}))}function N(n){return x((new DOMParser).parseFromString(n,"text/html").body)}function T(n,t){n.preventDefault(),t&&(n.stopPropagation(),n.stopImmediatePropagation())}function O(n,t){return n&&n.querySelector(t)}function R(n,t){return h(n.querySelectorAll(t))}function F(n,t){g(n,t,!1)}function j(n){return r(n)?n:n?n+"px":""}function W(t,e){if(void 0===e&&(e=""),!t)throw new Error("["+n+"] "+e)}function B(n){setTimeout(n)}function X(){}function H(n){return requestAnimationFrame(n)}var G=Math.min,Y=Math.max,q=Math.floor,U=Math.ceil,J=Math.abs;function K(n,t,e,i){var o=G(t,e);e=Y(t,e);return i?o<n&&n<e:o<=n&&n<=e}function Q(n,t,e){var i=G(t,e);e=Y(t,e);return G(Y(i,n),e)}function V(n){return(0<n)-(n<0)}function Z(n,t){return f(t,(function(t){n=n.replace("%s",""+t)})),n}function $(n){return n<10?"0"+n:""+n}var nn={};var tn="mounted",en="move",on="moved",rn="shifted",un="click",sn="slide:keydown",cn="refresh",an="updated",fn="resize",ln="resized",dn="repositioned",pn="scrolled",hn="destroy",gn="navigation:mounted",vn="lazyload:loaded";function mn(n){var t=n.event,e={},i=[];function o(n,t,e){r(n,t,(function(n,t){i=i.filter((function(i){return!!(i[0]!==n||i[1]!==t||e&&i[2]!==e)||(n.removeEventListener(t,i[2],i[3]),!1)}))}))}function r(n,t,e){f(n,(function(n){n&&t.split(" ").forEach(e.bind(null,n))}))}function u(){i=i.filter((function(n){return o(n[0],n[1])})),t.offBy(e)}return t.on(hn,u,e),{on:function(n,i,o){t.on(n,i,e,o)},off:function(n){t.off(n,e)},emit:t.emit,bind:function(n,t,e,o){r(n,t,(function(n,t){i.push([n,t,e,o]),n.addEventListener(t,e,o)}))},unbind:o,destroy:u}}function yn(n,t,e,i){var o,r,u=Date.now,s=0,c=!0,a=0;function f(){if(!c){var r=u()-o;if(n<=r?(s=1,o=u()):s=r/n,e&&e(s),1===s&&(t(),i&&++a>=i))return l();H(f)}}function l(){c=!0}function d(){cancelAnimationFrame(r),c=!(r=s=0)}return{start:function(t){t||d(),o=u()-(t?s*n:0),c=!1,H(f)},rewind:function(){o=u(),s=0,e&&e(s)},pause:l,cancel:d,set:function(t){n=t},isPaused:function(){return c}}}function bn(n,t){var e;return function(){var i=arguments,o=this;e||(e=yn(t||0,(function(){n.apply(o,i),e=null}),null,1)).start()}}var wn={marginRight:["marginBottom","marginLeft"],autoWidth:["autoHeight"],fixedWidth:["fixedHeight"],paddingLeft:["paddingTop","paddingRight"],paddingRight:["paddingBottom","paddingLeft"],width:["height"],left:["top","right"],right:["bottom","left"],x:["y"],X:["Y"],Y:["X"],ArrowLeft:["ArrowUp","ArrowRight"],ArrowRight:["ArrowDown","ArrowLeft"]},xn=n,En=n+"__slide",Sn=En+"--clone",Pn=n+"__arrows",kn=n+"__arrow",_n=kn+"--prev",An=kn+"--next",Ln=n+"__pagination",zn=n+"__progress",Cn="is-active",Dn="is-prev",Mn="is-next",In="is-visible",Nn="is-loading",Tn=[Cn,In,Dn,Mn,Nn],On="role",Rn="aria-controls",Fn="aria-current",jn="aria-label",Wn="aria-hidden",Bn="tabindex",Xn="aria-orientation",Hn=[On,Rn,Fn,jn,Wn,Xn,Bn,"disabled"],Gn="slide",Yn="loop",qn="fade";var Un={passive:!1,capture:!0},Jn="touchmove mousemove",Kn="touchend touchcancel mouseup",Qn=["Left","Right","Up","Down"],Vn="keydown",Zn=t+"-lazy",$n=Zn+"-srcset",nt=[" ","Enter","Spacebar"],tt=Object.freeze({__proto__:null,Options:function(n,e,i){var o,r,u,s=bn(a);function c(n){n&&removeEventListener("resize",s)}function a(){var t;(t=(t=function(n){return n[1].matches},h(r).filter(t)[0]||[]))[0]!==u&&function(t){(t=i.breakpoints[t]||o).destroy?(n.options=o,n.destroy("completely"===t.destroy)):(n.state.is(5)&&(c(!0),n.mount()),n.options=t)}(u=t[0])}return{setup:function(){try{P(i,JSON.parse(C(n.root,t)))}catch(u){W(!1,u.message)}o=P({},i);var e,u=i.breakpoints;u&&(e="min"===i.mediaQuery,r=Object.keys(u).sort((function(n,t){return e?+t-+n:+n-+t})).map((function(n){return[n,matchMedia("("+(e?"min":"max")+"-width:"+n+"px)")]})),a())},mount:function(){r&&addEventListener("resize",s)},destroy:c}},Direction:function(n,t,e){return{resolve:function(n,t){var i=e.direction;return wn[n]["rtl"!==i||t?"ttb"===i?0:-1:1]||n},orient:function(n){return n*("rtl"===e.direction?1:-1)}}},Elements:function(t,i,o){var r,u,s,c,a=mn(t).on,f=t.root,l={},p=[];function h(){var t;!function(){u=x(f,".splide__slider"),s=O(f,".splide__track"),c=x(s,".splide__list"),W(s&&c,"A track/list element is missing."),d(p,w(c,"."+En+":not(."+Sn+")"));var n=b(".splide__autoplay"),t=b("."+Pn);S(l,{root:f,slider:u,track:s,list:c,slides:p,arrows:t,autoplay:n,prev:O(t,"."+_n),next:O(t,"."+An),bar:O(b("."+zn),".splide__progress__bar"),play:O(n,".splide__play"),pause:O(n,".splide__pause")})}(),t=f.id||function(n){return""+n+$(nn[n]=(nn[n]||0)+1)}(n),f.id=t,s.id=s.id||t+"-track",c.id=c.id||t+"-list",v(f,r=E())}function g(){[f,s,c].forEach((function(n){k(n,"style")})),e(p),F(f,r)}function m(){g(),h()}function y(){F(f,r),v(f,r=E())}function b(n){return x(f,n)||x(u,n)}function E(){return[xn+"--"+o.type,xn+"--"+o.direction,o.drag&&xn+"--draggable",o.isNavigation&&xn+"--nav",Cn]}return S(l,{setup:h,mount:function(){a(cn,m,8),a(an,y)},destroy:g})},Slides:function(n,t,i){var o=mn(n),u=o.on,s=o.emit,d=o.bind,p=(o=t.Elements).slides,h=o.list,w=[];function E(){p.forEach((function(n,t){A(n,t,-1)}))}function S(){T((function(n){n.destroy()})),e(w)}function P(){S(),E()}function A(t,e,i){(t=function(n,t,e,i){var o,r=mn(n),u=r.on,s=r.emit,c=r.bind,a=r.destroy,f=n.Components,l=n.root,d=n.options,p=d.isNavigation,h=d.updateOnMove,v=f.Direction.resolve,m=C(i,"style"),y=-1<e,b=x(i,".splide__slide__container"),w=d.focusableNodes&&R(i,d.focusableNodes);function E(){var o=y?e:t,r=Z(d.i18n.slideX,o+1);o=n.splides.map((function(n){return n.splide.root.id})).join(" "),_(i,jn,r),_(i,Rn,o),_(i,On,"menuitem"),A(z())}function S(){o||P()}function P(){var e;o||(e=n.index,A(z()),function(n){var t=!n&&(!z()||y);_(i,Wn,t||null),_(i,Bn,!t&&d.slideFocus?0:null),w&&w.forEach((function(n){_(n,Bn,t?-1:null)})),n!==D(i,In)&&(g(i,In,n),s(n?"visible":"hidden",I))}(function(){if(n.is(qn))return z();var t=M(f.Elements.track),e=M(i),o=v("left"),r=v("right");return q(t[o])<=U(e[o])&&q(e[r])<=U(t[r])}()),g(i,Dn,t===e-1),g(i,Mn,t===e+1))}function A(n){n!==D(i,Cn)&&(g(i,Cn,n),p&&_(i,Fn,n||null),s(n?"active":"inactive",I))}function z(){var i=n.index;return i===t||d.cloneStatus&&i===e}var I={index:t,slideIndex:e,slide:i,container:b,isClone:y,mount:function(){y||(i.id=l.id+"-slide"+$(t+1)),c(i,"click keydown",(function(n){s("click"===n.type?un:sn,I,n)})),u([cn,dn,rn,on,pn],P),u(gn,E),h&&u(en,S)},destroy:function(){o=!0,a(),F(i,Tn),k(i,Hn),_(i,"style",m)},update:P,style:function(n,t,e){L(e&&b||i,n,t)},isWithin:function(e,i){return e=J(e-t),(e=y||!d.rewind&&!n.is(Yn)?e:G(e,n.length-e))<=i}};return I}(n,e,i,t)).mount(),w.push(t)}function z(n){return n?O((function(n){return!n.isClone})):w}function T(n,t){z(t).forEach(n)}function O(n){return w.filter("function"==typeof n?n:function(t){return r(n)?b(t.slide,n):l(a(n),t.index)})}return{mount:function(){E(),u(cn,P),u([tn,cn],(function(){w.sort((function(n,t){return n.index-t.index}))}))},destroy:S,update:function(){T((function(n){n.update()}))},register:A,get:z,getIn:function(n){var e=t.Controller,o=e.toIndex(n),r=e.hasFocus()?1:i.perPage;return O((function(n){return K(n.index,o,o+r-1)}))},getAt:function(n){return O(n)[0]},add:function(n,t){f(n,(function(n){var e,o,u;c(n=r(n)?N(n):n)&&((e=p[t])?y(n,e):m(h,n),v(n,i.classes.slide),n=n,o=s.bind(null,fn),n=R(n,"img"),(u=n.length)?n.forEach((function(n){d(n,"load error",(function(){--u||o()}))})):o())})),s(cn)},remove:function(n){I(O(n).map((function(n){return n.slide}))),s(cn)},forEach:T,filter:O,style:function(n,t,e){T((function(i){i.style(n,t,e)}))},getLength:function(n){return(n?p:w).length},isEnough:function(){return w.length>i.perPage}}},Layout:function(n,t,e){var o,r,u=mn(n),s=u.on,c=u.bind,a=u.emit,f=t.Slides,l=t.Direction.resolve,d=(t=t.Elements).root,p=t.track,h=t.list,g=f.getAt;function v(){r=null,o="ttb"===e.direction,L(d,"maxWidth",j(e.width)),L(p,l("paddingLeft"),y(!1)),L(p,l("paddingRight"),y(!0)),m()}function m(){var n=M(d);r&&r.width===n.width&&r.height===n.height||(L(p,"height",function(){var n="";return o&&(W(n=b(),"height or heightRatio is missing."),n="calc("+n+" - "+y(!1)+" - "+y(!0)+")"),n}()),f.style(l("marginRight"),j(e.gap)),f.style("width",(e.autoWidth?"":j(e.fixedWidth)||(o?"":w()))||null),f.style("height",j(e.fixedHeight)||(o?e.autoHeight?"":w():b())||null,!0),r=n,a(ln))}function y(n){var t=e.padding;n=l(n?"right":"left");return t&&j(t[n]||(i(t)?0:t))||"0px"}function b(){return j(e.height||M(h).width*e.heightRatio)}function w(){var n=j(e.gap);return"calc((100%"+(n&&" + "+n)+")/"+(e.perPage||1)+(n&&" - "+n)+")"}function x(n,t){var e=g(n);return e?(n=M(e.slide)[l("right")],e=M(h)[l("left")],J(n-e)+(t?0:E())):0}function E(){var n=g(0);return n&&parseFloat(L(n.slide,l("marginRight")))||0}return{mount:function(){v(),c(window,"resize load",bn(a.bind(this,fn))),s([an,cn],v),s(fn,m)},listSize:function(){return M(h)[l("width")]},slideSize:function(n,t){return(n=g(n||0))?M(n.slide)[l("width")]+(t?0:E()):0},sliderSize:function(){return x(n.length-1,!0)-x(-1,!0)},totalSize:x,getPadding:function(n){return parseFloat(L(p,l("padding"+(n?"Right":"Left"))))||0}}},Clones:function(n,t,i){var o,u=mn(n),s=u.on,c=u.emit,a=t.Elements,f=t.Slides,l=t.Direction.resolve,p=[];function h(){(o=x())&&(function(t){var e=f.get().slice(),o=e.length;if(o){for(;e.length<t;)d(e,e);d(e.slice(-t),e.slice(0,t)).forEach((function(r,u){var s=u<t,c=function(t,e){return v(t=t.cloneNode(!0),i.classes.clone),t.id=n.root.id+"-clone"+$(e+1),t}(r.slide,u);s?y(c,e[0].slide):m(a.list,c),d(p,c),f.register(c,u-t+(s?0:o),r.index)}))}}(o),c(fn))}function g(){I(p),e(p)}function b(){g(),h()}function w(){o<x()&&c(cn)}function x(){var t,e,o=i.clones;return n.is(Yn)?o||(t=a.list,r(e=i[l("fixedWidth")])&&(e=M(t=A("div",{style:"width: "+e+"; position: absolute;"},t)).width,I(t)),o=((e=e)&&U(M(a.track)[l("width")]/e)||i[l("autoWidth")]&&n.length||i.perPage)*(i.drag?(i.flickMaxPages||1)+1:2)):o=0,o}return{mount:function(){h(),s(cn,b),s([an,fn],w)},destroy:g}},Move:function(n,t,e){var i,o=mn(n),r=o.on,s=o.emit,c=(o=t.Layout).slideSize,a=o.getPadding,f=o.totalSize,l=o.listSize,d=o.sliderSize,p=(o=t.Direction).resolve,h=o.orient,g=(o=t.Elements).list,v=o.track;function m(){P()||(t.Scroll.cancel(),y(n.index),s(dn))}function y(n){b(x(n,!0))}function b(t,e){n.is(qn)||(e=e?t:function(t){var e,i;return n.is(Yn)&&(i=h(t-E()),e=_(!1,t)&&i<0,i=_(!0,t)&&0<i,(e||i)&&(t=w(t,i))),t}(t),g.style.transform="translate"+p("X")+"("+e+"px)",t!==e&&s(rn))}function w(n,t){var e=n-S(t),i=d();return n-h(i*(U(J(e)/i)||1))*(t?1:-1)}function x(t,i){var o=h(f(t-1)-(o=t,"center"===(t=e.focus)?(l()-c(o,!0))/2:+t*c(o)||0));return i?function(t){return e.trimSpace&&n.is(Gn)&&(t=Q(t,0,h(d()-l()))),t}(o):o}function E(){var n=p("left");return M(g)[n]-M(v)[n]+h(a(!1))}function S(n){return x(n?t.Controller.getEnd():0,!!e.trimSpace)}function P(){return n.state.is(4)&&e.waitForTransition}function _(n,t){t=u(t)?E():t;var e=!0!==n&&h(t)<h(S(!1));t=!1!==n&&h(t)>h(S(!0));return e||t}return{mount:function(){i=t.Transition,r([tn,ln,an,cn],m)},destroy:function(){k(g,"style")},move:function(o,r,u,c){var a,f;P()||(a=n.state.set,f=E(),o!==r&&(i.cancel(),b(w(f,r<o),!0)),a(4),s(en,r,u,o),i.start(r,(function(){a(3),s(on,r,u,o),"move"===e.trimSpace&&o!==u&&f===E()?t.Controller.go(u<o?">":"<",!1,c):c&&c()})))},jump:y,translate:b,shift:w,cancel:function(){b(E()),i.cancel()},toIndex:function(n){for(var e=t.Slides.get(),i=0,o=1/0,r=0;r<e.length;r++){var u=e[r].index,s=J(x(u,!0)-n);if(!(s<=o))break;o=s,i=u}return i},toPosition:x,getPosition:E,getLimit:S,isBusy:P,exceededLimit:_}},Controller:function(n,t,e){var i,o,s,c=mn(n).on,a=t.Move,f=a.getPosition,l=a.getLimit,d=t.Slides,p=d.isEnough,h=d.getLength,g=n.is(Yn),v=n.is(Gn),m=e.start||0,y=m;function b(){i=h(!0),o=e.perMove,s=e.perPage,m=Q(m,0,i-1)}function w(n,e,i,o,r){var u=e?n:z(n);t.Scroll.scroll(e||i?a.toPosition(u,!0):n,o,(function(){C(a.toIndex(a.getPosition())),r&&r()}))}function x(n){return S(!1,n)}function E(n){return S(!0,n)}function S(n,t){var e,i,r=o||(D()?1:s),u=P(m+r*(n?-1:1),m);return-1!==u||!v||(e=f(),i=l(!n),r=1,J(e-i)<r)?t?u:_(u):n?0:k()}function P(n,t,r){var u;return p()?(u=k(),n<0||u<n?n=K(0,n,t,!0)||K(u,t,n,!0)?A(L(n)):g?o||D()?n:n<0?-(i%s||s):i:e.rewind?n<0?u:0:-1:r||n===t||(n=o?n:A(L(t)+(n<t?-1:1)))):n=-1,n}function k(){var n=i-s;return(D()||g&&o)&&(n=i-1),Y(n,0)}function _(n){return g?p()?n%i+(n<0?i:0):-1:n}function A(n){return Q(D()?n:s*n,0,k())}function L(n){return D()||(n=K(n,i-s,i-1)?i-1:n,n=q(n/s)),n}function z(n){return n=a.toIndex(n),v?Q(n,0,k()):n}function C(n){n!==m&&(y=m,m=n)}function D(){return!u(e.focus)||e.isNavigation}return{mount:function(){b(),c([an,cn],b,9)},go:function(n,t,i){var o=function(n){var t,e,i=m;return r(n)?(t=(e=n.match(/([+\-<>])(\d+)?/)||[])[1],e=e[2],"+"===t||"-"===t?i=P(m+ +(""+t+(+e||1)),m,!0):">"===t?i=e?A(+e):x(!0):"<"===t&&(i=E(!0))):i=g?n:Q(n,0,k()),i}(n);e.useScroll?w(o,!0,!0,e.speed,i):-1<(n=_(o))&&!a.isBusy()&&(t||n!==m)&&(C(n),a.move(o,n,y,i))},scroll:w,getNext:x,getPrev:E,getAdjacent:S,getEnd:k,setIndex:C,getIndex:function(n){return n?y:m},toIndex:A,toPage:L,toDest:z,hasFocus:D}},Arrows:function(n,t,e){var i,o=mn(n),r=o.on,u=o.bind,s=o.emit,c=e.classes,a=e.i18n,f=t.Elements,l=t.Controller,d=f.arrows,p=f.prev,h=f.next,g={};function v(){var t,o;e.arrows&&(p&&h||(d=A("div",c.arrows),p=b(!0),h=b(!1),i=!0,m(d,[p,h]),y(d,x("slider"===e.arrows&&f.slider||n.root)))),p&&h&&(g.prev?z(d,!1===e.arrows?"none":""):(t=f.track.id,_(p,Rn,t),_(h,Rn,t),g.prev=p,g.next=h,o=l.go,r([tn,on,an,cn,pn],w),u(h,"click",(function(){o(">",!0)})),u(p,"click",(function(){o("<",!0)})),s("arrows:mounted",p,h)))}function b(n){return N('<button class="'+c.arrow+" "+(n?c.prev:c.next)+'" type="button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" width="40" height="40"><path d="'+(e.arrowPath||"m15.5 0.932-4.3 4.38 14.5 14.6-14.5 14.5 4.3 4.4 14.6-14.6 4.4-4.3-4.4-4.4-14.6-14.6z")+'" />')}function w(){var t=n.index,e=l.getPrev(),i=l.getNext(),o=-1<e&&t<e?a.last:a.prev;t=-1<i&&i<t?a.first:a.next;p.disabled=e<0,h.disabled=i<0,_(p,jn,o),_(h,jn,t),s("arrows:updated",p,h,e,i)}return{arrows:g,mount:function(){v(),r(an,v)},destroy:function(){i?I(d):(k(p,Hn),k(h,Hn))}}},Autoplay:function(n,t,e){var i,o,r,u=mn(n),s=u.on,c=u.bind,a=u.emit,f=yn(e.interval,n.go.bind(n,">"),(function(n){var t=d.bar;t&&L(t,"width",100*n+"%"),a("autoplay:playing",n)})),l=f.isPaused,d=t.Elements;function p(n){var t=n?"pause":"play",i=d[t];i&&(_(i,Rn,d.track.id),_(i,jn,e.i18n[t]),c(i,"click",n?g:h))}function h(){l()&&t.Slides.isEnough()&&(f.start(!e.resetProgress),o=i=r=!1,a("autoplay:play"))}function g(n){void 0===n&&(n=!0),l()||(f.pause(),a("autoplay:pause")),r=n}function v(){r||(i||o?g(!1):h())}function m(){var i=t.Slides.getAt(n.index);f.set(i&&+C(i.slide,"data-splide-interval")||e.interval)}return{mount:function(){var n=e.autoplay;n&&(p(!0),p(!1),function(){var n=d.root;e.pauseOnHover&&c(n,"mouseenter mouseleave",(function(n){i="mouseenter"===n.type,v()})),e.pauseOnFocus&&c(n,"focusin focusout",(function(n){o="focusin"===n.type,v()})),s([en,"scroll",cn],f.rewind),s(en,m)}(),"pause"!==n&&h())},destroy:f.cancel,play:h,pause:g,isPaused:l}},Cover:function(n,t,e){var i=mn(n).on;function o(n){t.Slides.forEach((function(t){var e=x(t.container||t.slide,"img");e&&e.src&&r(n,e,t)}))}function r(n,t,e){e.style("background",n?'center/cover no-repeat url("'+t.src+'")':"",!0),z(t,n?"none":"")}return{mount:function(){e.cover&&(i(vn,(function(n,t){r(!0,n,t)})),i([tn,an,cn],o.bind(null,!0)))},destroy:function(){o(!1)}}},Scroll:function(n,t,e){var i,o,r=mn(n),u=r.on,s=r.emit,c=t.Move,a=c.getPosition,f=c.getLimit,l=c.exceededLimit;function d(){var t=a(),e=c.toIndex(t);K(e,0,n.length-1)||c.translate(c.shift(t,0<e),!0),o&&o(),s(pn)}function p(){i&&i.cancel()}function h(){i&&!i.isPaused()&&(p(),d())}return{mount:function(){u(en,p),u([an,cn],h)},destroy:p,scroll:function t(r,u,h,g){var v,m=a(),y=1;u=u||(v=J(r-m),Y(v/1.5,800)),o=h,p(),i=yn(u,d,(function(i){var o=a(),u=(m+(r-m)*(u=i,(i=e.easingFunc)?i(u):1-Math.pow(1-u,4))-a())*y;c.translate(o+u),n.is(Gn)&&!g&&l()&&(y*=.6,J(u)<10&&(u=l(!1),t(f(!u),600,null,!0)))}),1),s("scroll"),i.start()},cancel:h}},Drag:function(n,t,e){var o,r,u,s,c,a,f,l,d,p=mn(n),h=p.on,g=p.emit,v=p.bind,m=p.unbind,y=t.Move,w=t.Scroll,x=t.Controller,E=t.Elements.track,S=(p=t.Direction).resolve,P=p.orient,k=y.getPosition,_=y.exceededLimit,A=!1;function L(){var n=e.drag;j(!n),c="free"===n}function z(n){var t,i;l||(i=e.noDrag,t=F(n),i=!i||!b(n.target,i),f=!1,!i||!t&&n.button||(y.isBusy()?T(n,!0):(d=t?E:window,s=u=null,v(d,Jn,C,Un),v(d,Kn,D,Un),y.cancel(),w.cancel(),M(n))))}function C(t){var u,c,l;s||g("drag"),(s=t).cancelable&&(u=O(t)-O(r),a?(y.translate(o+u/(A&&n.is(Gn)?5:1)),c=200<R(t)-R(r),l=A!==(A=_()),(c||l)&&M(t),g("dragging"),f=!0,T(t)):(l=i(l=e.dragMinThreshold)?l:{mouse:0,touch:+l||10},a=J(u)>(F(t)?l.touch:l.mouse),N()&&T(t)))}function D(i){m(d,Jn,C),m(d,Kn,D);var o,f,l=n.index;s?((a||i.cancelable&&N())&&(f=o=function(t){if(n.is(Yn)||!A){var e=r===s&&u||r,i=O(s)-O(e);e=R(t)-R(e),t=R(t)-R(s)<200;if(e&&t)return i/e}return 0}(i),f=k()+V(f)*G(J(f)*(e.flickPower||600),c?1/0:t.Layout.listSize()*(e.flickMaxPages||1)),c?x.scroll(f):n.is(qn)?x.go(l+P(V(o))):x.go(x.toDest(f),!0),T(i)),g("dragged")):c||k()===y.toPosition(l)||x.go(l,!0),a=!1}function M(n){u=r,r=n,o=k()}function I(n){!l&&f&&T(n,!0)}function N(){var n=J(O(s)-O(r));return J(O(s,!0)-O(r,!0))<n}function O(n,t){return(F(n)?n.touches[0]:n)["page"+S(t?"Y":"X")]}function R(n){return n.timeStamp}function F(n){return"undefined"!=typeof TouchEvent&&n instanceof TouchEvent}function j(n){l=n}return{mount:function(){v(E,Jn,X,Un),v(E,Kn,X,Un),v(E,"touchstart mousedown",z,Un),v(E,"click",I,{capture:!0}),v(E,"dragstart",T),h([tn,an],L)},disable:j,isDragging:function(){return a}}},Keyboard:function(n,t,e){var i,o,r=mn(n),u=r.on,s=r.bind,a=r.unbind,f=n.root,d=t.Direction.resolve;function p(){var n=e.keyboard;n&&("focused"===n?_(i=f,Bn,0):i=window,s(i,Vn,m))}function h(){a(i,Vn),c(i)&&k(i,Bn)}function g(){var n=o;o=!0,B((function(){o=n}))}function v(){h(),p()}function m(t){o||(t=t.key,(t=l(Qn,t)?"Arrow"+t:t)===d("ArrowLeft")?n.go("<"):t===d("ArrowRight")&&n.go(">"))}return{mount:function(){p(),u(an,v),u(en,g)},destroy:h,disable:function(n){o=n}}},LazyLoad:function(n,t,e){var i=mn(n),o=i.on,r=i.off,u=i.bind,s=i.emit,c="sequential"===e.lazyLoad,a=[],f=0;function l(){p(),d()}function d(){t.Slides.forEach((function(n){R(n.slide,"[data-splide-lazy], [data-splide-lazy-srcset]").forEach((function(t){var i,o,r=C(t,Zn),u=C(t,$n);r===t.src&&u===t.srcset||(i=e.classes.spinner,_(o=x(o=t.parentElement,"."+i)||A("span",i,o),On,"presentation"),a.push({o:t,e:n,src:r,srcset:u,c:o}),t.src||z(t,"none"))}))})),c&&m()}function p(){f=0,a=[]}function h(){(a=a.filter((function(t){var i=e.perPage*((e.preloadPages||1)+1)-1;return!t.e.isWithin(n.index,i)||g(t)}))).length||r(on)}function g(n){var t=n.o;v(n.e.slide,Nn),u(t,"load error",(function(t){!function(n,t){var e=n.e;F(e.slide,Nn),t||(I(n.c),z(n.o,""),s(vn,n.o,e),s(fn)),c&&m()}(n,"error"===t.type)})),["src","srcset"].forEach((function(e){n[e]&&(_(t,e,n[e]),k(t,"src"===e?Zn:$n))}))}function m(){f<a.length&&g(a[f++])}return{mount:function(){e.lazyLoad&&(d(),o(cn,l),c||o([tn,cn,on,pn],h))},destroy:p}},Pagination:function(n,t,i){var o,r=mn(n),u=r.on,s=r.emit,c=r.bind,a=r.unbind,f=t.Slides,l=t.Elements,d=t.Controller,p=d.hasFocus,h=d.getIndex,g=[];function m(){y(),i.pagination&&f.isEnough()&&(function(){var t=n.length,e=i.classes,r=i.i18n,u=i.perPage,s="slider"===i.pagination&&l.slider||l.root,a=p()?t:U(t/u);o=A("ul",e.pagination,s);for(var d=0;d<a;d++){var h=A("li",null,o),v=A("button",{class:e.page,type:"button"},h),m=f.getIn(d).map((function(n){return n.slide.id})),y=!p()&&1<u?r.pageX:r.slideX;c(v,"click",b.bind(null,d)),_(v,Rn,m.join(" ")),_(v,jn,Z(y,d+1)),g.push({li:h,button:v,page:d})}}(),s("pagination:mounted",{list:o,items:g},w(n.index)),x())}function y(){o&&(I(o),g.forEach((function(n){a(n.button,"click")})),e(g),o=null)}function b(n){d.go(">"+n,!0,(function(){var t=f.getAt(d.toIndex(n));t&&((t=t.slide).setActive&&t.setActive()||t.focus({preventScroll:!0}))}))}function w(n){return g[d.toPage(n)]}function x(){var n=w(h(!0)),t=w(h());n&&(F(n.button,Cn),k(n.button,Fn)),t&&(v(t.button,Cn),_(t.button,Fn,!0)),s("pagination:updated",{list:o,items:g},n,t)}return{items:g,mount:function(){m(),u([an,cn],m),u([en,pn],x)},destroy:y,getAt:w,update:x}},Sync:function(n,t,i){var o=t.Elements.list,r=[];function u(){var t,e;n.splides.forEach((function(t){var e;t.isParent||(e=t.splide,[n,e].forEach((function(t){var i=mn(t),o=t===n?e:n;i.on(en,(function(n,t,e){o.go(o.is(Yn)?e:n)})),r.push(i)})))})),i.isNavigation&&((e=(t=mn(n)).on)(un,a),e(sn,f),e([tn,an],c),_(o,On,"menu"),r.push(t),t.emit(gn,n.splides))}function s(){k(o,Hn),r.forEach((function(n){n.destroy()})),e(r)}function c(){_(o,Xn,"ttb"!==i.direction?"horizontal":null)}function a(t){n.go(t.index)}function f(n,t){l(nt,t.key)&&(a(n),T(t))}return{mount:u,destroy:s,remount:function(){s(),u()}}},Wheel:function(n,t,e){var i=mn(n).bind;function o(i){var o;!i.cancelable||(o=i.deltaY)&&(n.go((o=o<0)?"<":">"),o=o,e.releaseWheel&&!n.state.is(4)&&-1===t.Controller.getAdjacent(o)||T(i))}return{mount:function(){e.wheel&&i(t.Elements.track,"wheel",o,Un)}}}}),et={type:"slide",speed:400,waitForTransition:!0,perPage:1,cloneStatus:!0,arrows:!0,pagination:!0,interval:5e3,pauseOnHover:!0,pauseOnFocus:!0,resetProgress:!0,keyboard:!0,easing:"cubic-bezier(0.25, 1, 0.5, 1)",drag:!0,direction:"ltr",slideFocus:!0,trimSpace:!0,focusableNodes:"a, button, textarea, input, select, iframe",classes:{slide:En,clone:Sn,arrows:Pn,arrow:kn,prev:_n,next:An,pagination:Ln,page:Ln+"__page",spinner:n+"__spinner"},i18n:{prev:"Previous slide",next:"Next slide",first:"Go to first slide",last:"Go to last slide",slideX:"Go to slide %s",pageX:"Go to page %s",play:"Start autoplay",pause:"Pause autoplay"}};function it(n,t,e){var i=mn(n).on;return{mount:function(){i([tn,cn],(function(){B((function(){t.Slides.style("transition","opacity "+e.speed+"ms "+e.easing)}))}))},start:function(n,e){var i=t.Elements.track;L(i,"height",j(M(i).height)),B((function(){e(),L(i,"height","")}))},cancel:X}}function ot(n,t,e){var i,o=mn(n).bind,r=t.Move,u=t.Controller,s=t.Elements.list;function c(){a("")}function a(n){L(s,"transition",n)}return{mount:function(){o(s,"transitionend",(function(n){n.target===s&&i&&(c(),i())}))},start:function(t,o){var s=r.toPosition(t,!0),c=r.getPosition(),f=function(t){var i=e.rewindSpeed;if(n.is(Gn)&&i){var o=u.getIndex(!0),r=u.getEnd();if(0===o&&r<=t||r<=o&&0===t)return i}return e.speed}(t);1<=J(s-c)&&1<=f?(a("transform "+f+"ms "+e.easing),r.translate(s,!0),i=o):(r.jump(t),o())},cancel:c}}return(Ln=function(){function n(t,e){this.event=function(){var n={};function t(t,i){e(t,(function(t,e){var o=n[t];n[t]=o&&o.filter((function(n){return n.n?n.n!==i:i||n.t!==e}))}))}function e(n,t){a(n).join(" ").split(" ").forEach((function(n){n=n.split("."),t(n[0],n[1])}))}return{on:function(t,i,o,r){void 0===r&&(r=10),e(t,(function(t,e){n[t]=n[t]||[],d(n[t],{i:t,r:i,t:e,u:r,n:o}).sort((function(n,t){return n.u-t.u}))}))},off:t,offBy:function(e){E(n,(function(n,i){t(i,e)}))},emit:function(t){var e=arguments;(n[t]||[]).forEach((function(n){n.r.apply(n,h(e,1))}))},destroy:function(){n={}}}}(),this.Components={},this.state=function(n){var t=n;return{set:function(n){t=n},is:function(n){return l(a(n),t)}}}(1),this.splides=[],this.f={},this.a={},W(t=r(t)?O(document,t):t,t+" is invalid."),this.root=t,P(et,n.defaults),P(P(this.f,et),e||{})}var t,i=n.prototype;return i.mount=function(n,t){var e=this,i=this.state,o=this.Components;return W(i.is([1,5]),"Already mounted!"),i.set(1),this.s=o,this.l=t||this.l||(this.is(qn)?it:ot),this.a=n||this.a,E(S({},tt,this.a,{Transition:this.l}),(function(n,t){n=n(e,o,e.f),(o[t]=n).setup&&n.setup()})),E(o,(function(n){n.mount&&n.mount()})),this.emit(tn),v(this.root,"is-initialized"),i.set(3),this.emit("ready"),this},i.sync=function(n){return this.splides.push({splide:n}),n.splides.push({splide:this,isParent:!0}),this.state.is(3)&&(this.s.Sync.remount(),n.Components.Sync.remount()),this},i.go=function(n){return this.s.Controller.go(n),this},i.on=function(n,t){return this.event.on(n,t,null,20),this},i.off=function(n){return this.event.off(n),this},i.emit=function(n){var t;return(t=this.event).emit.apply(t,[n].concat(h(arguments,1))),this},i.add=function(n,t){return this.s.Slides.add(n,t),this},i.remove=function(n){return this.s.Slides.remove(n),this},i.is=function(n){return this.f.type===n},i.refresh=function(){return this.emit(cn),this},i.destroy=function(n){void 0===n&&(n=!0);var t=this.event,i=this.state;return i.is(1)?t.on("ready",this.destroy.bind(this,n),this):(E(this.s,(function(t){t.destroy&&t.destroy(n)}),!0),t.emit(hn),t.destroy(),n&&e(this.splides),i.set(5)),this},t=n,(i=[{key:"options",get:function(){return this.f},set:function(n){var t=this.f;P(t,n),this.state.is(1)||this.emit(an,t)}},{key:"length",get:function(){return this.s.Slides.getLength(!0)}},{key:"index",get:function(){return this.s.Controller.getIndex()}}])&&At(t.prototype,i),n}()).defaults={},Ln.STATES={CREATED:1,MOUNTED:2,IDLE:3,MOVING:4,DESTROYED:5},Ln},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(n="undefined"!=typeof globalThis?globalThis:n||self).Splide=t(); (self.webpackChunk=self.webpackChunk||[]).push([[2653],{9241:function(){App.extend("accordions",{accordionBlocks:document.querySelectorAll(".invicti-block.accordion"),run:function(n){n.querySelectorAll(".accordion-heading").forEach((function(c){c.onclick=function(){var o=c.parentNode.closest(".accordion-section"),i=n.querySelectorAll(".accordion-section.active");o.classList.contains("active")?o.classList.remove("active"):o.classList.add("active"),i.forEach((function(n){n.classList.remove("active")}))}}))},setHeight:function(n){n.querySelectorAll(".accordion-section").forEach((function(n){var c=n.querySelector(".accordion-text").clientHeight+1;n.setAttribute("style","--accordion-height:".concat(c,"px"))}))},init:function(){var n=window.App.accordions;n.accordionBlocks.forEach((function(c){n.run(c),n.setHeight(c),window.addEventListener("resize",(function(){n.setHeight(c)}))}))}}),App.init(App.accordions.init)},3746:function(){},2611:function(){},3852:function(){},7977:function(){},7016:function(){},6813:function(){},5883:function(){},8758:function(){},7347:function(){},5177:function(){},7314:function(){},2153:function(){},429:function(){},7098:function(){},8682:function(){},9889:function(){},8464:function(){},4377:function(){},9683:function(){},3085:function(){},4556:function(){},6546:function(){},4234:function(){},6837:function(){},2340:function(){},2700:function(){},9760:function(){},9845:function(){},8289:function(){},2457:function(){},9876:function(){},5265:function(){},6602:function(){},4489:function(){},4422:function(){},861:function(){},4044:function(){},9382:function(){},5376:function(){},8701:function(){},2898:function(){},1989:function(){},4953:function(){},7363:function(){},8797:function(){},8077:function(){},9727:function(){},8806:function(){},4321:function(){},7696:function(){},2511:function(){},8943:function(){},9622:function(){},2186:function(){},4598:function(){},6153:function(){},8753:function(){},721:function(){},6321:function(){},4557:function(){},8169:function(){},7786:function(){},3120:function(){},9657:function(){},5257:function(){},6821:function(){},680:function(){},1815:function(){},8113:function(){},4318:function(){},8006:function(){},7085:function(){},2293:function(){},1751:function(){},9735:function(){},788:function(){},3761:function(){},9294:function(){},5468:function(){},2397:function(){},8867:function(){},7064:function(){},3965:function(){},1393:function(){},5171:function(){},3800:function(){},6157:function(){},8775:function(){},3512:function(){},2696:function(){},8492:function(){},9308:function(){},6881:function(){},7041:function(){},1309:function(){},6232:function(){},578:function(){},2188:function(){},3606:function(){},3614:function(){},4361:function(){},4268:function(){},7106:function(){},9181:function(){},7910:function(){},1525:function(){},2108:function(){},297:function(){},1943:function(){}},function(n){var c=function(c){return n(n.s=c)};n.O(0,[8138,9049,4522,8056,3626,2917,7260,7484,995,5398,1697,3896,687,7555,3206,9484,1120,4167,9774,3615,2229,9944,1785,196,896,1548,2651,1739,7532,1891,9047,7368,6469,2078,3415,8320,1010,4906,2855,4098,973,8201,7089,6840,3770,8043,4216,226,383,2285,6045,6567,1575,1855,9489,7215,4674,5177,9190,9402,4346,175,1121,6231,4055,5517,4298,7695,7916,8947,4915,547,7258,8624,2039,7381,7123,5839,3501,2132,1518,530,148,1909,5605,3375,188,1981,6362,798,2212,5950,8517,7991,5551,2125,1099,9331,5760,2126,4692,495,4777,961,9598,2845,2019,2879,2365],(function(){return c(9241),c(5257),c(788),c(6157),c(2188),c(1943),c(7314),c(9889),c(8464),c(4377),c(9683),c(3085),c(4556),c(6546),c(4234),c(6837),c(2340),c(2700),c(9760),c(9845),c(8289),c(2457),c(9876),c(5265),c(6602),c(4489),c(4422),c(861),c(4044),c(9382),c(5376),c(8701),c(2898),c(1989),c(4953),c(7363),c(8797),c(8077),c(9727),c(8806),c(4321),c(7696),c(2511),c(8943),c(9622),c(2186),c(4598),c(6153),c(8753),c(721),c(6321),c(4557),c(8169),c(7786),c(3120),c(9657),c(6821),c(680),c(1815),c(8113),c(4318),c(8006),c(7085),c(2293),c(1751),c(9735),c(3761),c(9294),c(5468),c(2397),c(8867),c(7064),c(3965),c(1393),c(5171),c(3800),c(8775),c(3512),c(2696),c(8492),c(9308),c(6881),c(7041),c(1309),c(6232),c(578),c(3606),c(3614),c(4361),c(4268),c(7106),c(9181),c(7910),c(1525),c(2108),c(297),c(3746),c(2611),c(3852),c(7977),c(7016),c(6813),c(5883),c(8758),c(7347),c(5177),c(2153),c(429),c(7098),c(8682)}));n.O()}]); (self.webpackChunk=self.webpackChunk||[]).push([[4998],{1035:function(){App.extend("navbar",{stickyHeader:function(){var e=document.querySelector("body"),t=document.querySelector(".sticky-header-observer");t&&new IntersectionObserver((function(t){t[0].isIntersecting?e.classList.remove("sticky-header"):e.classList.add("sticky-header")})).observe(t)},mobileSubMenu:function(){document.querySelectorAll("#site-navigation .menu-item-has-children a").forEach((function(e){App.on(e,"click",(function(){App.mobileMenuActive&&(e.parentElement.classList.contains("active-sub-menu")?e.parentElement.classList.remove("active-sub-menu"):e.parentElement.classList.add("active-sub-menu"))}))}))},mobileMenu:function(){var e=document.querySelectorAll(".navbar-toggle"),t=document.querySelector("body");e&&e.forEach((function(e){App.on(e,"click",(function(){var e=document.querySelector(".site-header"),n=document.querySelector(".primary-menu-wrapper"),i=window.innerHeight;t.classList.contains("mobile-menu-active")?(n.removeAttribute("style"),t.classList.remove("mobile-menu-active"),App.extend("mobileMenuActive",!1)):(n.style.height=i-e.offsetHeight+"px",t.classList.add("mobile-menu-active"),App.extend("mobileMenuActive",!0))}))}))},resizer:function(){App.on(window,"resize",(function(){var e=document.querySelector(".primary-menu-wrapper");e&&(e.removeAttribute("style"),document.querySelector("body").classList.remove("mobile-menu-active"))}))},init:function(){var e=App.navbar;e.stickyHeader(),e.mobileMenu(),e.mobileSubMenu(),e.resizer()}}),App.init(App.navbar.init)}},function(e){var t;t=1035,e(e.s=t)}]); (self.webpackChunk=self.webpackChunk||[]).push([[9929],{3817:function(){App.init((function(){var e=document.querySelectorAll(".sidebar-menu .menu-item.menu-item-has-children"),t=document.querySelector(".sidebar-contents");e&&(e.forEach((function(e){e.classList.contains("current-menu-ancestor")&&e.classList.add("active"),e.querySelector(".menu-expander").addEventListener("click",(function(){e.classList.toggle("active")}))})),t.addEventListener("click",(function(){document.querySelector(".sidebar-menu").classList.toggle("active"),document.querySelector(".sidebar").classList.toggle("active")})))}))}},function(e){var t;t=3817,e(e.s=t)}]); </script> <style id="prismcss">code[class*=language-],pre[class*=language-]{color:#000;background:0 0;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{position:relative;margin:.5em 0;overflow:visible;padding:1px}pre[class*=language-]>code{position:relative;z-index:1}code[class*=language-]{max-height:inherit;height:inherit;padding:0 1em;display:block;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background-color:#fdfdfd;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:1em}:not(pre)>code[class*=language-]{position:relative;padding:.2em;border-radius:.3em;color:#c92c2c;border:1px solid rgba(0,0,0,.1);display:inline;white-space:normal}pre[class*=language-]:after,pre[class*=language-]:before{content:'';display:block;position:absolute;bottom:.75em;left:.18em;width:40%;height:20%;max-height:13em}pre[class*=language-]:after{right:.75em;left:auto;-webkit-transform:rotate(2deg);-moz-transform:rotate(2deg);-ms-transform:rotate(2deg);-o-transform:rotate(2deg);transform:rotate(2deg)}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#6b7782}.token.punctuation{color:#5f6364}.token.boolean,.token.constant,.token.deleted,.token.function-name,.token.number,.token.property,.token.symbol,.token.tag{color:#c92c2c}.token.attr-name,.token.builtin,.token.char,.token.function,.token.inserted,.token.selector,.token.string{color:#2f9c0a}.token.entity,.token.operator,.token.url,.token.variable{color:#a67f59;background:rgba(255,255,255,.5)}.token.atrule,.token.attr-value,.token.class-name,.token.keyword{color:#1990b8}.token.important,.token.regex{color:#e90}.language-css .token.string,.style .token.string{color:#a67f59;background:rgba(255,255,255,.5)}.token.important{font-weight:400}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.namespace{opacity:.7}@media screen and (max-width:767px){pre[class*=language-]:after,pre[class*=language-]:before{bottom:14px;box-shadow:none}}pre[class*=language-].line-numbers.line-numbers{padding-left:0}pre[class*=language-].line-numbers.line-numbers code{padding-left:3.8em}pre[class*=language-].line-numbers.line-numbers .line-numbers-rows{left:0}pre[class*=language-][data-line]{padding-top:0;padding-bottom:0;padding-left:0}pre[data-line] code{position:relative;padding-left:4em}pre .line-highlight{margin-top:0}pre[class*=language-].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #ccc;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right}div.code-toolbar{position:relative}div.code-toolbar>.toolbar{position:absolute;z-index:6;top:.3em;right:.2em;transition:opacity .3s ease-in-out;opacity:0}div.code-toolbar:hover>.toolbar{opacity:1}div.code-toolbar:focus-within>.toolbar{opacity:1}div.code-toolbar>.toolbar>.toolbar-item{display:inline-block}div.code-toolbar>.toolbar>.toolbar-item>a{cursor:pointer}div.code-toolbar>.toolbar>.toolbar-item>button{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}div.code-toolbar>.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar>.toolbar-item>span{color:#bbb;font-size:.8em;padding:0 .5em;background:#f5f2f0;background:rgba(224,224,224,.2);box-shadow:0 2px 0 0 rgba(0,0,0,.2);border-radius:.5em}div.code-toolbar>.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar>.toolbar-item>span:focus,div.code-toolbar>.toolbar>.toolbar-item>span:hover{color:inherit;text-decoration:none}pre[class*=language]>code{border-style:none;padding-left:0;padding-right:0;padding-top:.625rem;padding-bottom:.625rem}pre[class*=language]:not(.line-numbers){border-radius:4px!important}pre[class*=language]:not(.line-numbers)>code{border-style:none;padding:.625rem 1em}pre[class*=language]>code .punctuation{--tw-text-opacity:1;color:rgb(29 28 41 / var(--tw-text-opacity))}div.code-toolbar>pre[class*=language]>code .line-numbers-rows{padding-top:.625rem;padding-bottom:.625rem}div.code-toolbar>.toolbar{right:.3em}div.code-toolbar>.toolbar>.toolbar-item>button{border-radius:.25rem;border-width:0;--tw-bg-opacity:1;background-color:rgb(204 204 204 / var(--tw-bg-opacity));padding-left:.625rem;padding-right:.625rem;padding-top:.25rem;padding-bottom:.25rem;text-transform:lowercase;line-height:1;--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity));--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)} </style> <!-- Start VWO Async SmartCode --> <script async type='text/javascript' nonce="wo123jejr234982dfn"> window._vwo_code = window._vwo_code || (function(){ var account_id=301870, settings_tolerance=2000, library_tolerance=2500, use_existing_jquery=false, is_spa=1, hide_element='body', /* DO NOT EDIT BELOW THIS LINE */ f=false,d=document,code={use_existing_jquery:function(){return use_existing_jquery;},library_tolerance:function(){return library_tolerance;},finish:function(){if(!f){f=true;var a=d.getElementById('_vis_opt_path_hides');if(a)a.parentNode.removeChild(a);}},finished:function(){return f;},load:function(a){var b=d.createElement('script');b.src=a;b.type='text/javascript';b.innerText;b.onerror=function(){_vwo_code.finish();};d.getElementsByTagName('head')[0].appendChild(b);},init:function(){ window.settings_timer=setTimeout(function () {_vwo_code.finish() },settings_tolerance);var a=d.createElement('style'),b=hide_element?hide_element+'{opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important;}':'',h=d.getElementsByTagName('head')[0];a.setAttribute('id','_vis_opt_path_hides');a.setAttribute('type','text/css');if(a.styleSheet)a.styleSheet.cssText=b;else a.appendChild(d.createTextNode(b));h.appendChild(a);this.load('https://dev.visualwebsiteoptimizer.com/j.php?a='+account_id+'&u='+encodeURIComponent(d.URL)+'&f='+(+is_spa)+'&r='+Math.random());return settings_timer; }};window._vwo_settings_timer = code.init(); return code; }()); </script> <!-- End VWO Async SmartCode --> </body> </html> <!-- Performance optimized by Redis Object Cache. Learn more: https://wprediscache.com -->