CINXE.COM

GraphQL Vulnerability Analysis: The Top Threats - DevOps.com

<!DOCTYPE html> <html lang="en-US"> <head > <meta charset="UTF-8" /> <script type="text/javascript"> /* <![CDATA[ */ var gform;gform||(document.addEventListener("gform_main_scripts_loaded",function(){gform.scriptsLoaded=!0}),document.addEventListener("gform/theme/scripts_loaded",function(){gform.themeScriptsLoaded=!0}),window.addEventListener("DOMContentLoaded",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,themeScriptsLoaded:!1,isFormEditor:()=>"function"==typeof InitializeEditor,callIfLoaded:function(o){return!(!gform.domLoaded||!gform.scriptsLoaded||!gform.themeScriptsLoaded&&!gform.isFormEditor()||(gform.isFormEditor()&&console.warn("The use of gform.initializeOnLoaded() is deprecated in the form editor context and will be removed in Gravity Forms 3.1."),o(),0))},initializeOnLoaded:function(o){gform.callIfLoaded(o)||(document.addEventListener("gform_main_scripts_loaded",()=>{gform.scriptsLoaded=!0,gform.callIfLoaded(o)}),document.addEventListener("gform/theme/scripts_loaded",()=>{gform.themeScriptsLoaded=!0,gform.callIfLoaded(o)}),window.addEventListener("DOMContentLoaded",()=>{gform.domLoaded=!0,gform.callIfLoaded(o)}))},hooks:{action:{},filter:{}},addAction:function(o,r,e,t){gform.addHook("action",o,r,e,t)},addFilter:function(o,r,e,t){gform.addHook("filter",o,r,e,t)},doAction:function(o){gform.doHook("action",o,arguments)},applyFilters:function(o){return gform.doHook("filter",o,arguments)},removeAction:function(o,r){gform.removeHook("action",o,r)},removeFilter:function(o,r,e){gform.removeHook("filter",o,r,e)},addHook:function(o,r,e,t,n){null==gform.hooks[o][r]&&(gform.hooks[o][r]=[]);var d=gform.hooks[o][r];null==n&&(n=r+"_"+d.length),gform.hooks[o][r].push({tag:n,callable:e,priority:t=null==t?10:t})},doHook:function(r,o,e){var t;if(e=Array.prototype.slice.call(e,1),null!=gform.hooks[r][o]&&((o=gform.hooks[r][o]).sort(function(o,r){return o.priority-r.priority}),o.forEach(function(o){"function"!=typeof(t=o.callable)&&(t=window[t]),"action"==r?t.apply(null,e):e[0]=t.apply(null,e)})),"filter"==r)return e[0]},removeHook:function(o,r,t,n){var e;null!=gform.hooks[o][r]&&(e=(e=gform.hooks[o][r]).filter(function(o,r,e){return!!(null!=n&&n!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][r]=e)}}); /* ]]> */ </script> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> <style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style> <!-- Google Tag Manager for WordPress by gtm4wp.com --> <script data-cfasync="false" data-pagespeed-no-defer> var gtm4wp_datalayer_name = "dataLayer"; var dataLayer = dataLayer || []; </script> <!-- End Google Tag Manager for WordPress by gtm4wp.com --> <!-- This site is optimized with the Yoast SEO Premium plugin v23.9 (Yoast SEO v23.9) - https://yoast.com/wordpress/plugins/seo/ --> <title>GraphQL Vulnerability Analysis: The Top Threats - DevOps.com</title> <meta name="description" content="For developers, DevOps and security teams tasked with safeguarding GraphQL deployments, the first step is knowing what you’re up against." /> <link rel="canonical" href="https://devops.com/graphql-vulnerability-analysis-the-top-threats/" /> <meta property="og:locale" content="en_US" /> <meta property="og:type" content="article" /> <meta property="og:title" content="GraphQL Vulnerability Analysis: The Top Threats - DevOps.com" /> <meta property="og:description" content="For developers, DevOps and security teams tasked with safeguarding GraphQL deployments, the first step is knowing what you’re up against." /> <meta property="og:url" content="https://devops.com/graphql-vulnerability-analysis-the-top-threats/" /> <meta property="og:site_name" content="DevOps.com" /> <meta property="article:publisher" content="https://www.facebook.com/devopscom" /> <meta property="article:published_time" content="2022-12-01T13:30:28+00:00" /> <meta property="article:modified_time" content="2022-12-01T12:20:56+00:00" /> <meta property="og:image" content="https://devops.com/wp-content/uploads/2021/02/Intuitive-transaction-profiling-for-IBM-CICS-trace-data.png" /> <meta property="og:image:width" content="770" /> <meta property="og:image:height" content="330" /> <meta property="og:image:type" content="image/png" /> <meta name="author" content="Shahar Binyamin" /> <meta name="twitter:label1" content="Written by" /> <meta name="twitter:data1" content="Shahar Binyamin" /> <meta name="twitter:label2" content="Est. reading time" /> <meta name="twitter:data2" content="4 minutes" /> <script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"Article","@id":"https://devops.com/graphql-vulnerability-analysis-the-top-threats/#article","isPartOf":{"@id":"https://devops.com/graphql-vulnerability-analysis-the-top-threats/"},"author":{"@id":"https://devops.com/#/schema/person/90c7177c35eaa8394c757cb1ee6438e1"},"headline":"GraphQL Vulnerability Analysis: The Top Threats","datePublished":"2022-12-01T13:30:28+00:00","dateModified":"2022-12-01T12:20:56+00:00","mainEntityOfPage":{"@id":"https://devops.com/graphql-vulnerability-analysis-the-top-threats/"},"wordCount":698,"commentCount":0,"publisher":{"@id":"https://devops.com/#organization"},"image":{"@id":"https://devops.com/graphql-vulnerability-analysis-the-top-threats/#primaryimage"},"thumbnailUrl":"https://devops.com/wp-content/uploads/2021/02/Intuitive-transaction-profiling-for-IBM-CICS-trace-data.png","keywords":["code vulnerabilities","GraphQL","MITRE","secure code"],"articleSection":["Blogs","DataOps","DevOps and Open Technologies","DevOps Practice","DevOps Toolbox"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https://devops.com/graphql-vulnerability-analysis-the-top-threats/#respond"]}],"copyrightYear":"2022","copyrightHolder":{"@id":"https://devops.com/#organization"}},{"@type":"WebPage","@id":"https://devops.com/graphql-vulnerability-analysis-the-top-threats/","url":"https://devops.com/graphql-vulnerability-analysis-the-top-threats/","name":"GraphQL Vulnerability Analysis: The Top Threats - DevOps.com","isPartOf":{"@id":"https://devops.com/#website"},"primaryImageOfPage":{"@id":"https://devops.com/graphql-vulnerability-analysis-the-top-threats/#primaryimage"},"image":{"@id":"https://devops.com/graphql-vulnerability-analysis-the-top-threats/#primaryimage"},"thumbnailUrl":"https://devops.com/wp-content/uploads/2021/02/Intuitive-transaction-profiling-for-IBM-CICS-trace-data.png","datePublished":"2022-12-01T13:30:28+00:00","dateModified":"2022-12-01T12:20:56+00:00","description":"For developers, DevOps and security teams tasked with safeguarding GraphQL deployments, the first step is knowing what you’re up against.","breadcrumb":{"@id":"https://devops.com/graphql-vulnerability-analysis-the-top-threats/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https://devops.com/graphql-vulnerability-analysis-the-top-threats/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https://devops.com/graphql-vulnerability-analysis-the-top-threats/#primaryimage","url":"https://devops.com/wp-content/uploads/2021/02/Intuitive-transaction-profiling-for-IBM-CICS-trace-data.png","contentUrl":"https://devops.com/wp-content/uploads/2021/02/Intuitive-transaction-profiling-for-IBM-CICS-trace-data.png","width":770,"height":330,"caption":"Data GraphQL API Dynatrace"},{"@type":"BreadcrumbList","@id":"https://devops.com/graphql-vulnerability-analysis-the-top-threats/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blogs","item":"https://devops.com/category/blogs/"},{"@type":"ListItem","position":2,"name":"GraphQL Vulnerability Analysis: The Top Threats"}]},{"@type":"WebSite","@id":"https://devops.com/#website","url":"https://devops.com/","name":"DevOps.com","description":"Where the world meets DevOps","publisher":{"@id":"https://devops.com/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://devops.com/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https://devops.com/#organization","name":"DevOps.com","url":"https://devops.com/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://devops.com/#/schema/logo/image/","url":"https://devops.com/wp-content/uploads/2019/05/DO-symbol-Transparent.png","contentUrl":"https://devops.com/wp-content/uploads/2019/05/DO-symbol-Transparent.png","width":250,"height":250,"caption":"DevOps.com"},"image":{"@id":"https://devops.com/#/schema/logo/image/"},"sameAs":["https://www.facebook.com/devopscom","https://x.com/devopsdotcom","https://www.linkedin.com/company/4826138?trk=tyah&amp;amp;amp;trkInfo=clickedVertical:company,idx:1-1-1,tarId:1433442870536,tas:DevOps.com","https://www.youtube.com/c/Devopsdotcom"]},{"@type":"Person","@id":"https://devops.com/#/schema/person/90c7177c35eaa8394c757cb1ee6438e1","name":"Shahar Binyamin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://devops.com/#/schema/person/image/48009d979e56ad624bbe8fb91e1e1ebe","url":"https://devops.com/wp-content/uploads/2022/12/cropped-Shahar_Binyamin-scaled-1-96x96.jpeg","contentUrl":"https://devops.com/wp-content/uploads/2022/12/cropped-Shahar_Binyamin-scaled-1-96x96.jpeg","caption":"Shahar Binyamin"},"description":"Shahar Binyamin is the CEO and co-founder of Inigo.io, which focuses on GraphQL security and management tools for developers and DevSecOps teams. A software engineer by trade, he has extensive experience working on high-profile enterprise application and security projects. Among his roles, Shahar spent several years within the InfoSec Unit of the Israeli Defense Forces. He has also led product development at Dropbox and Kiteworks, with a focus on ensuring data and API security. He co-founded Inigo to address the disconnect between developers using GraphQL and the API security and operation challenges they were having. Shahar lives in Silicon Valley, where Inigo is headquartered.","url":"https://devops.com/author/shahar-binyamin/"}]}</script> <!-- / Yoast SEO Premium plugin. --> <link rel='dns-prefetch' href='//js.hs-scripts.com' /> <link rel='dns-prefetch' href='//stats.wp.com' /> <link rel='dns-prefetch' href='//fonts.googleapis.com' /> <link rel='dns-prefetch' href='//www.googletagmanager.com' /> <link rel='dns-prefetch' href='//pagead2.googlesyndication.com' /> <link rel="alternate" type="application/rss+xml" title="DevOps.com &raquo; Feed" href="https://devops.com/feed/" /> <link rel="alternate" type="application/rss+xml" title="DevOps.com &raquo; Comments Feed" href="https://devops.com/comments/feed/" /> <link rel="alternate" type="text/calendar" title="DevOps.com &raquo; iCal Feed" href="https://devops.com/webinars/?ical=1" /> <link rel="alternate" type="application/rss+xml" title="DevOps.com &raquo; GraphQL Vulnerability Analysis: The Top Threats Comments Feed" href="https://devops.com/graphql-vulnerability-analysis-the-top-threats/feed/" /> <script type="text/javascript"> /* <![CDATA[ */ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/devops.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=1fdc173ed44ea313992d83dbd85d2021"}}; /*! This file is auto-generated */ !function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings); /* ]]> */ </script> <link rel='stylesheet' id='jetpack_related-posts-css' href='https://devops.com/wp-content/plugins/jetpack/modules/related-posts/related-posts.css' type='text/css' media='all' /> <link rel='stylesheet' id='pt-cv-public-style-css' href='https://devops.com/wp-content/plugins/content-views-query-and-display-post-page/public/assets/css/cv.css' type='text/css' media='all' /> <link rel='stylesheet' id='pt-cv-public-pro-style-css' href='https://devops.com/wp-content/plugins/pt-content-views-pro/public/assets/css/cvpro.min.css' type='text/css' media='all' /> <link rel='stylesheet' id='tribe-events-pro-mini-calendar-block-styles-css' href='https://devops.com/wp-content/plugins/events-calendar-pro/src/resources/css/tribe-events-pro-mini-calendar-block.min.css' type='text/css' media='all' /> <link rel='stylesheet' id='devops-css' href='https://devops.com/wp-content/themes/genesis-devops/style.css' type='text/css' media='all' /> <style id='wp-emoji-styles-inline-css' type='text/css'> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='wp-block-library-css' href='https://devops.com/wp-includes/css/dist/block-library/style.min.css' type='text/css' media='all' /> <link rel='stylesheet' id='mediaelement-css' href='https://devops.com/wp-includes/js/mediaelement/mediaelementplayer-legacy.min.css' type='text/css' media='all' /> <link rel='stylesheet' id='wp-mediaelement-css' href='https://devops.com/wp-includes/js/mediaelement/wp-mediaelement.min.css' type='text/css' media='all' /> <style id='jetpack-sharing-buttons-style-inline-css' type='text/css'> .jetpack-sharing-buttons__services-list{display:flex;flex-direction:row;flex-wrap:wrap;gap:0;list-style-type:none;margin:5px;padding:0}.jetpack-sharing-buttons__services-list.has-small-icon-size{font-size:12px}.jetpack-sharing-buttons__services-list.has-normal-icon-size{font-size:16px}.jetpack-sharing-buttons__services-list.has-large-icon-size{font-size:24px}.jetpack-sharing-buttons__services-list.has-huge-icon-size{font-size:36px}@media print{.jetpack-sharing-buttons__services-list{display:none!important}}.editor-styles-wrapper .wp-block-jetpack-sharing-buttons{gap:0;padding-inline-start:0}ul.jetpack-sharing-buttons__services-list.has-background{padding:1.25em 2.375em} </style> <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;} </style> <link rel='stylesheet' id='chain-wire-css' href='https://devops.com/wp-content/plugins/chainwire-integration/public/css/chainwire-public.css' type='text/css' media='all' /> <link rel='stylesheet' id='owl-css-css' href='https://devops.com/wp-content/plugins/devops_core/assets/owl.carousel.min.css' type='text/css' media='all' /> <link rel='stylesheet' id='owl-theme-css-css' href='https://devops.com/wp-content/plugins/devops_core/assets/owl.theme.default.min.css' type='text/css' media='all' /> <link rel='stylesheet' id='wppopups-pro-css' href='https://devops.com/wp-content/plugins/wppopups/pro/assets/css/wppopups.css' type='text/css' media='all' /> <link rel='stylesheet' id='megamenu-css' href='https://devops.com/wp-content/uploads/maxmegamenu/style.css' type='text/css' media='all' /> <link rel='stylesheet' id='dashicons-css' href='https://devops.com/wp-includes/css/dashicons.min.css' type='text/css' media='all' /> <link rel='stylesheet' id='megamenu-google-fonts-css' href='//fonts.googleapis.com/css?family=Raleway%3A400%2C700&#038;ver=1fdc173ed44ea313992d83dbd85d2021' type='text/css' media='all' /> <link rel='stylesheet' id='megamenu-fontawesome6-css' href='https://devops.com/wp-content/plugins/megamenu-pro/icons/fontawesome6/css/all.min.css' type='text/css' media='all' /> <link rel='stylesheet' id='wppopups-base-css' href='https://devops.com/wp-content/plugins/wppopups/src/assets/css/wppopups-base.css' type='text/css' media='all' /> <link rel='stylesheet' id='my-theme-extra-style-css' href='https://devops.com/wp-content/themes/genesis-devops/extra-style.css' type='text/css' media='all' /> <link rel='stylesheet' id='genesis-webinars-style-css' href='https://devops.com/wp-content/themes/genesis-devops/webinars.css' type='text/css' media='all' /> <link rel='stylesheet' id='genesis-any-style-css' href='https://devops.com/wp-content/themes/genesis-devops/js/slider/any/css/anythingslider.css' type='text/css' media='all' /> <link rel='stylesheet' id='meks-ads-widget-css' href='https://devops.com/wp-content/plugins/meks-easy-ads-widget/css/style.css' type='text/css' media='all' /> <link rel='stylesheet' id='fontawesome-css' href='https://devops.com/wp-content/themes/genesis-devops/css/font-awesome.min.css' type='text/css' media='all' /> <link rel='stylesheet' id='devops-google-fonts-css' href='https://fonts.googleapis.com/css?family=Raleway%3A500%2C600%2C700&#038;ver=1.0.6' type='text/css' media='all' /> <link rel='stylesheet' id='bdt-uikit-css' href='https://devops.com/wp-content/plugins/bdthemes-element-pack/assets/css/bdt-uikit.css' type='text/css' media='all' /> <link rel='stylesheet' id='ep-helper-css' href='https://devops.com/wp-content/plugins/bdthemes-element-pack/assets/css/ep-helper.css' type='text/css' media='all' /> <script type="text/javascript" id="jetpack_related-posts-js-extra"> /* <![CDATA[ */ var related_posts_js_options = {"post_heading":"h4"}; /* ]]> */ </script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/jetpack/_inc/build/related-posts/related-posts.min.js?ver=20240116" id="jetpack_related-posts-js"></script> <script type="text/javascript" src="https://devops.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script> <script type="text/javascript" src="https://devops.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script> <script type="text/javascript" src="https://devops.com/wp-includes/js/dist/hooks.min.js?ver=4d63a3d491d11ffd8ac6" id="wp-hooks-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/devops_core/assets/list.min.js?ver=1fdc173ed44ea313992d83dbd85d2021" id="list-min-js-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/devops_core/assets/owl.carousel.min.js?ver=1fdc173ed44ea313992d83dbd85d2021" id="owl-min-js-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/devops_core/assets/isotope.pkgd.min.js?ver=1fdc173ed44ea313992d83dbd85d2021" id="isotope-js-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/devops_core/assets/custom.js?ver=1fdc173ed44ea313992d83dbd85d2021" id="j-custom-js-js"></script> <script type="text/javascript" id="wppopups-pro-js-js-extra"> /* <![CDATA[ */ var wppopups_pro_vars = {"enable_stats":"1","m_id":"","data_sampling":"","post_id":"157147","l18n":{"wait":"Please wait","seconds":"seconds"}}; /* ]]> */ </script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/wppopups/pro/assets/js/wppopups.js?ver=2.2.0.3" id="wppopups-pro-js-js"></script> <!--[if lt IE 9]> <script type="text/javascript" src="https://devops.com/wp-content/themes/genesis/lib/js/html5shiv.min.js?ver=3.7.3" id="html5shiv-js"></script> <![endif]--> <script type="text/javascript" src="https://devops.com/wp-content/themes/genesis-devops/js/scripts.js?ver=1.0.6" id="devops-js-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/themes/genesis-devops/js/sticky-menu.js?ver=1.0.6" id="devops-sticky-menu-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/themes/genesis-devops/js/responsive-menu.js?ver=1.0.6" id="devops-responsive-menu-js"></script> <link rel="https://api.w.org/" href="https://devops.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://devops.com/wp-json/wp/v2/posts/157147" /><link rel='shortlink' href='https://devops.com/?p=157147' /> <link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://devops.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fdevops.com%2Fgraphql-vulnerability-analysis-the-top-threats%2F" /> <link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://devops.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fdevops.com%2Fgraphql-vulnerability-analysis-the-top-threats%2F&#038;format=xml" /> <style type="text/css"> .feedzy-rss-link-icon:after { content: url("https://devops.com/wp-content/plugins/feedzy-rss-feeds/img/external-link.png"); margin-left: 3px; } </style> <meta name="generator" content="Site Kit by Google 1.140.0" /> <!-- DO NOT COPY THIS SNIPPET! Start of Page Analytics Tracking for HubSpot WordPress plugin v11.1.73--> <script class="hsq-set-content-id" data-content-id="blog-post"> var _hsq = _hsq || []; _hsq.push(["setContentType", "blog-post"]); </script> <!-- DO NOT COPY THIS SNIPPET! End of Page Analytics Tracking for HubSpot WordPress plugin --> <meta name="tec-api-version" content="v1"><meta name="tec-api-origin" content="https://devops.com"><link rel="alternate" href="https://devops.com/wp-json/tribe/events/v1/" /> <style>img#wpstats{display:none}</style> <!-- Google Tag Manager for WordPress by gtm4wp.com --> <!-- GTM Container placement set to footer --> <script data-cfasync="false" data-pagespeed-no-defer type="text/javascript"> var dataLayer_content = {"pageTitle":"GraphQL Vulnerability Analysis: The Top Threats - DevOps.com","pagePostType":"post","pagePostType2":"single-post","pageCategory":["blogs","data-ops","devops-open-technologies","devops-practice","devops-toolbox"],"pageAttributes":["code-vulnerabilities","graphql","mitre","secure-code"],"pagePostAuthor":"Shahar Binyamin"}; dataLayer.push( dataLayer_content ); </script> <script data-cfasync="false"> (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= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-NZLPNQS'); </script> <!-- End Google Tag Manager for WordPress by gtm4wp.com --> <script> jQuery(window).on('elementor/frontend/init', function () { //wait for elementor to load elementorFrontend.on('components:init', function () { //wait for elementor pro to load setTimeout(() => { elementorProFrontend.modules.popup.showPopup({id: 0 }); }, 500); // Delay half a second. Elementor document doesn't fully load sometimes. }); }); </script> <link rel="pingback" href="https://devops.com/xmlrpc.php" /> <style type="text/css">.site-title a { background: url(https://devops.com/wp-content/uploads/2023/01/devops-logo-tsg.png) no-repeat !important; }</style> <script async='async' src='https://www.googletagservices.com/tag/js/gpt.js'></script> <script> var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; </script> <script> googletag.cmd.push(function() { var mapb=googletag.sizeMapping(). addSize([770, 0], [728, 90]). addSize([0, 0], [320, 50]). build(); var desk=googletag.sizeMapping(). addSize([1450, 0], [160, 600]). addSize([0, 0], [0, 0]). build(); //googletag.defineSlot('/80877830/DO_after-entry', [[728, 90], [320, 50]], 'div-gpt-ad-1494536589535-0').defineSizeMapping(mapb).addService(googletag.pubads()); googletag.defineSlot('/80877830/DO_Article-Medium-1', [300, 250], 'div-gpt-ad-1494536589535-1').addService(googletag.pubads()); googletag.defineSlot('/80877830/DO_Article-Medium-2', [300, 250], 'div-gpt-ad-1494536589535-2').addService(googletag.pubads()); googletag.defineSlot('/80877830/DO_Home_Bottom_Ad', [[728, 90], [320, 50]], 'div-gpt-ad-1494536589535-3').defineSizeMapping(mapb).addService(googletag.pubads()); googletag.defineSlot('/80877830/DO_Home-Medium', [300, 250], 'div-gpt-ad-1494536589535-4').addService(googletag.pubads()); googletag.defineSlot('/80877830/DO_header-right', [[728, 90], [320, 50]], 'div-gpt-ad-1494599233432-0').defineSizeMapping(mapb).addService(googletag.pubads()); googletag.defineOutOfPageSlot('/80877830/DevOps.com_OOP', 'div-gpt-ad-1494947147258-0').addService(googletag.pubads()); googletag.defineSlot('/80877830/DO_Home_Bottom_Ad_2', [728, 90], 'div-gpt-ad-1519910493553-0').defineSizeMapping(mapb).addService(googletag.pubads()); googletag.defineSlot('/80877830/DO_SkyScraper_Left', [160, 600], 'div-gpt-ad-1542202470575-0').defineSizeMapping(desk).addService(googletag.pubads()); googletag.defineSlot('/80877830/DO_SkyScraper_Right', [160, 600], 'div-gpt-ad-1542202633557-0').defineSizeMapping(desk).addService(googletag.pubads()); googletag.pubads().setTargeting("category", ["blogs", "data-ops", "devops-open-technologies", "devops-practice", "devops-toolbox", ""]); googletag.pubads().setTargeting("homepage","no"); googletag.pubads().setTargeting("test", ""); googletag.pubads().setTargeting("articleID", "157147"); googletag.enableServices(); }); </script> <!-- Google AdSense meta tags added by Site Kit --> <meta name="google-adsense-platform-account" content="ca-host-pub-2644536267352236"> <meta name="google-adsense-platform-domain" content="sitekit.withgoogle.com"> <!-- End Google AdSense meta tags added by Site Kit --> <meta name="generator" content="Elementor 3.24.7; features: additional_custom_breakpoints; settings: css_print_method-external, google_font-enabled, font_display-auto"> <style> .e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload), .e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload) * { background-image: none !important; } @media screen and (max-height: 1024px) { .e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload), .e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload) * { background-image: none !important; } } @media screen and (max-height: 640px) { .e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload), .e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload) * { background-image: none !important; } } </style> <!-- Google AdSense snippet added by Site Kit --> <script type="text/javascript" async="async" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2091799172090865&amp;host=ca-host-pub-2644536267352236" crossorigin="anonymous"></script> <!-- End Google AdSense snippet added by Site Kit --> <style type="text/css" id="spu-css-174203" class="spu-css"> #spu-bg-174203 { background-color: rgba(0,0,0,0.5); } #spu-174203 .spu-close { font-size: 30px; color: rgb(255, 255, 255); text-shadow: 0 1px 0 #000; } #spu-174203 .spu-close:hover { color: rgb(204, 204, 204); } #spu-174203 { background-color: rgb(29, 29, 33); max-width: 650px; border-radius: 0px; height: auto; box-shadow: 0px 0px 0px 0px #ccc; } #spu-174203 .spu-container { padding: 0px; height: calc(100% - 0px); } .spu-content .hs-form { display: flex; align-items: flex-start; justify-content: center; padding-bottom: 20px; } .spu-content .hs_email { width: 75%; } .spu-content .hs-input { height: 46px; } .hs-error-msgs { color: #fff; } .spu-content .hs_submit { width: 20%; } </style> <link rel="icon" href="https://devops.com/wp-content/uploads/2021/10/android-chrome-256x256-1-130x130.png" sizes="32x32" /> <link rel="icon" href="https://devops.com/wp-content/uploads/2021/10/android-chrome-256x256-1-254x254.png" sizes="192x192" /> <link rel="apple-touch-icon" href="https://devops.com/wp-content/uploads/2021/10/android-chrome-256x256-1-254x254.png" /> <meta name="msapplication-TileImage" content="https://devops.com/wp-content/uploads/2021/10/android-chrome-256x256-1.png" /> <style type="text/css" id="pt-cv-custom-style-33b17922v7">.pt-cv-social-buttons a{-webkit-filter:grayscale(0.9);filter:gray;filter:grayscale(0.9)}.pt-cv-social-buttons a:hover{-webkit-filter:grayscale(0);filter:gray;filter:grayscale(0)} .pt-cv-meta-fields .avatar{width:30px;height:auto} .pt-cv-meta-fields .screen-reader-text {display:none} </style> <style type="text/css" id="wp-custom-css"> .page-id-173698 { font-family: "Inter"; } .page-id-173698 #speaker-name { margin-bottom: 0; } .page-id-173698 #speaker-title p { margin: 0; color: #747474; } .page-id-173698 #speaker-description { font-size: 14px; } #pt-cv-view-ee38785r0s .pt-cv-content-item { border-bottom: 1px solid #ddd !important; margin-bottom: 20px; } #pt-cv-view-ee38785r0s .pt-cv-thumbnail { object-fit: cover; width: 100%; } .elementor-element-e999656 { margin-bottom: 0 !important; } #pt-cv-view-adef981o1p { margin-right: 0px !important; margin-left: 0px !important; } #pt-cv-view-adef981o1p .col-md-12.pt-cv-omain.pt-cv-content-item.pt-cv-1-col { padding: 0 !important; } #pt-cv-view-adef981o1p .pt-cv-thumbnail, #pt-cv-view-adef981o1p .pt-cv-thumbnail { width: 100%; } #pt-cv-view-adef981o1p .pt-cv-content { padding: 20px; } /* Gregs Page */ .page-id-172604 .site-header, .page-id-172604 .nav-primary > .wrap { display: none; } /*AWS Serverless On Demand Webinars*/ #pt-cv-view-1776e8aal6 { margin: 0 !important; } #pt-cv-view-1776e8aal6 .pt-cv-1-col:first-child { padding-left: 0; } #pt-cv-view-1776e8aal6 .pt-cv-1-col:nth-of-type(2), #pt-cv-view-1776e8aal6 .pt-cv-1-col:nth-of-type(4) { padding-right: 0; padding-left: 0; } #pt-cv-view-1776e8aal6 .pt-cv-1-col:nth-of-type(3) { padding-left: 0; } #pt-cv-view-1776e8aal6 .pt-cv-1-col:last-child { padding-left: 0; } .page-template-aws-builder-hub-partners .sgpb-popup-dialog-main-div-wrapper { display: none; } @media (min-width: 768px) { .elementor-161310 .elementor-element.elementor-element-44af0c3, .elementor-161310 .elementor-element.elementor-element-c1d27f2, .elementor-161310 .elementor-element.elementor-element-807b75f{ width: 26.653%; } } @media (min-width: 768px) { .elementor-161310 .elementor-element.elementor-element-0239c2e, .elementor-161310 .elementor-element.elementor-element-92ac4b4, .elementor-161310 .elementor-element.elementor-element-3e37e91{ width: 48.695%; } } @media (min-width: 768px) { .elementor-161310 .elementor-element.elementor-element-05c7d51, .elementor-161310 .elementor-element.elementor-element-f8206b8, .elementor-161310 .elementor-element.elementor-element-1228b53{ width: 24.316%; } } .elementor-129505 .elementor-element.elementor-element-2fefd07 > .elementor-widget-container { background-color: #333; background-image: none !important; } .elementor-129505 .elementor-element.elementor-element-20c9085 > .elementor-widget-container { background-color: #333; background-image: none !important; margin: 0 12px 0 1px; padding: 5px; } .elementor-129505 .elementor-element.elementor-element-20c9085 .elementor-heading-title { color: #fff; text-shadow: 0 0 10px rgba(0,0,0,.3); } @media screen and (max-width: 480px) { #tribe-events .webinars-heading { margin-top: 30px; } } .page-template-ecotech-insights .site-inner { background: #fff; padding-left: 0 !important; } @media screen and (min-width: 1024px) { .elementor-160146 .elementor-element.elementor-element-5875a83 { width: 80% !important; } .elementor-160146 .elementor-element.elementor-element-c5257e6 { width: 18%; } } /* .gform_legacy_markup_wrapper table.gsurvey-likert th.gsurvey-likert-choice-label, .gform_legacy_markup_wrapper table.gsurvey-likert tr:nth-child(2n+1) .gsurvey-likert-row-label, .gravity-theme table.gsurvey-likert tr:nth-child(2n+1) .gsurvey-likert-row-label, .gform_legacy_markup_wrapper table.gsurvey-likert .gsurvey-likert-row-label, .gravity-theme table.gsurvey-likert .gsurvey-likert-row-label { font-size: 10px; } .gravity-theme table.gsurvey-likert th.gsurvey-likert-choice-label { font-size: 8px; } */ .page-template-aws-builder-hub .marquee-outer-container { display: none !important; } /*PODCAST SIDEBAR */ #text-89, #text-89 p { margin: 0; padding: 0; } /* SPONSORED CONTENT SIDEBAR WIDGET */ .category-sponsored-content .content, .category-analyst-corner .content { width: 98% !important; } #featured-post-14 { background: #333; padding: 10px; } #featured-post-14 .entry { background: #333 !important; } #featured-post-14 .widget-title { margin-bottom: 10px !important; background: #DC2E2A; font-weight: 600; text-transform: uppercase !important; } #featured-post-14 .entry-title { margin-bottom: 3px !important; line-height: 1em !important; display: block; } #featured-post-14 .entry-title a { color: #fff !important; font-weight: 600 !important; font-size: 15px; text-transform: none; line-height: 1em; } #featured-post-14 .entry-meta, #featured-post-14 .entry-author-link { color: rgba(255,255,255,.6); float: none; display: inline; font-size: 13px; text-transform: none; } .sponsored-content article { padding: 0 15px !important; } .sponsored-content .content-sidebar-wrap, .cyberwire .content-sidebar-wrap { margin-top: 12px; } .elementor-129505 .elementor-element.elementor-element-ab012a6 > .elementor-widget-container { margin: 0 10px 0 2px; padding: 5px; background-color: #333; background-image: url(https://devops.com/wp-content/uploads/2019/04/DevOpsArrow_241.png); background-position: center right; background-repeat: no-repeat; background-size: auto; } .elementor-129505 .elementor-element.elementor-element-ab012a6 .elementor-heading-title { color: #fff; text-shadow: 0 0 10px rgba(0,0,0,.3); } /*MENU FIX */ #mega-menu-wrap-topmenu #mega-menu-topmenu li.mega-menu-item-has-children > a.mega-menu-link > span.mega-indicator::after { margin: 0 0 0 2px; } /* SAFARI SEARCH FIX*/ @media not all and (min-resolution:.001dpcm) { @supports (-webkit-appearance:none) and (display:flow-root) { html { overflow-x: visible !important; } } } /*Newsletter */ #custom_html-70 { padding: 20px; background: #DC2E2A; } #custom_html-70 .widget-title, .hs_submit input:hover[type="submit"] { text-align: center; font-weight: bold; background: #000; } .hs-button { text-align: center; display: block; margin: auto; } .hs-richtext.hs-main-font-element { margin: 20px auto; } .hbspt-form p { color: #fff; text-align: center; } /* POLL */ .mega-search-wrap { z-index: 0!important; } .page-id-148327 #custom_html-71{ display: none; } #mks_ads_widget-2 .widget-wrap { background: #DC2E2A; } .mks_adswidget_ul.custom li { margin-top: 0 !important; } /*QUIZ */ #mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-129582 .mega-search-wrap { z-index: 1; } /* UNBOUND */ .elementor-element-a2539c2 .elementor-widget-container, .elementor-element-634a6f3 .elementor-widget-container { padding: 10px; background-color: #000; background-image: url(https://devops.com/wp-content/uploads/2021/04/white-arrow-padding.png); background-position: center right; background-repeat: no-repeat; } .elementor-element-52ddf69 .elementor-heading-title a, .elementor-element-a2539c2 .elementor-heading-title a, .elementor-element-634a6f3 .elementor-heading-title a{ color: #fff; } #pt-cv-view-68732b26od .pt-cv-ctf-list, #pt-cv-view-68732b26od .pt-cv-ctf-column { display: flex; } .elementor-element-e98917f .pt-cv-content-item, .elementor-element-0c4bd9e .pt-cv-content-item{ border: solid 4px #333; margin: 20px; width: calc(100% - 40px); padding: 10px; } /*NEW HOME FEATURE */ .elementor-129505 .elementor-element.elementor-element-7a99144 > .elementor-column-wrap > .elementor-widget-wrap > .elementor-widget:not(.elementor-widget__width-auto):not(.elementor-widget__width-initial):not(:last-child):not(.elementor-absolute) { margin-bottom: 0; } #pt-cv-view-b007d672b1 .carousel-control.left { margin: 10px 10px 0 0; } #pt-cv-view-b007d672b1 .carousel-control.right { margin: 10px 10px 0 0; } #pum-144000, .pum { display: none!important; } /**AWS BB Page **/ .page-template-awsbb-microsite .sidebar-primary { padding-right: 0 !important; padding-left: 10px !important; } @media only screen and (min-width: 768px) { .page-template-awsbb-microsite .sidebar-primary { padding-right: 0 !important; padding-left: 0px !important; } } .bb-swag { border: solid 2px #69E4AF; padding: 10px; } .first.video { display: inline-block; background: linear-gradient(#234C4F, #233A44); padding: 40px; margin-top: 20px; } @media only screen and (min-width: 768px) { .first.video .image-video { width: 382px; float: left; } } .first.video .text-video { color: #fff; padding-top: 20px; } @media only screen and (min-width: 768px) { .first.video .text-video { padding-left: 420px; color: #fff; padding-top: 40px } } .page-template-awsbb-microsite .site-inner { padding-top: 20px; } #media_image-6 { padding-top: 0; } #media_image-7 img { border: solid 2px #69E4AF; } .page-template-awsbb-microsite .title-bar-bg { background: #161E2D; background-image: url("https://devops.com/wp-content/uploads/2021/04/white-arrow-padding.png"); background-position: center right; background-repeat: no-repeat; margin: 20px 0px 5px 0px; padding: 10px 10px 10px 10px; display: block; } .page-template-awsbb-microsite .title-bar-bg a, .page-template-awsbb-microsite .title-bar-bg a:hover, .page-template-awsbb-microsite .title-bar-bg a:active, .page-template-awsbb-microsite .title-bar-bg a:focus { display: block; color: #fff; text-decoration: none; font-size: 16px; } .page-template-awsbb-microsite .featured-latest-title { margin: 20px 0 10px 0; } .page-template-awsbb-microsite .featured-small { margin: 0 20px 10px 0; } .page-template-awsbb-microsite .featured-small a, .page-template-awsbb-microsite .featured-latest a { color: #333333 !important; font-weight: 600 !important; line-height: 1.3 !important; font-size: 15px; } .page-template-awsbb-microsite .banner { background: url("https://devops.com/wp-content/uploads/2021/06/aws-bugbust-hero-rs.jpg") no-repeat; height: 267px; width: 883px; } .page-template-awsbb-microsite .banner h1{ padding: 130px 20px 0; font-size: 18px; color: #fff; width: auto; } @media only screen and (min-width: 768px) { .page-template-awsbb-microsite .banner h1{ padding: 130px 0 0 50px; font-size: 18px; color: #fff; width: 420px; line-height: 1.4em; } } .page-template-awsbb-microsite .thumb { width: 100px; } .page-template-awsbb-microsite .cartoon { margin: 0 auto 0; text-align: center; } /** CUSTOM AD **/ .custom-ad { padding: 10px; border-top: solid 1px #ccc; border-bottom: solid 1px #ccc; margin: 10px auto; position: relative; display: flex; align-items: center; } .custom-ad-image { float: left; margin-right: 20px; width: 300px; /*height: 169px;*/ overflow: hidden; } .custom-ad-sponsored { font-weight: bold; color: #ff0000; font-style: italic; } .custom-ad-text a { text-decoration: none; color: #000; } .custom-ad-text a:hover { text-decoration: none!important; color: #ff0000; } .clear-custom-ad { clear: both; } /* ROCKET MICRO SITE STYLES & SITE OVERRIDES */ #spotlight .elementor-author-box__avatar img { border-radius: 0; width: auto !important; object-fit: contain; } #pt-cv-view-ffab038v81 .left.carousel-control, #pt-cv-view-ffab038v81 .right.carousel-control { display: none; } #custom_html-66 h4.widget-title { display: none; } .page-template-rocket .widget-title, .rocket-microsite .widget-title, .rocket-analyst-reports-white-papers .widget-title, .rocket-microsite-latest .widget-title, .rocket-oss-tools-for-ibm-z .widget-title, .page-template-page_rocket_archive .widget-title, .category-54621 .widget-title, .category-54622 .widget-title, .category-54623 .widget-title, .category-54624 .widget-title { background-color: #027468; } div#pt-cv-view-4080038g2k.pt-cv-colsys, div#pt-cv-view-ffab038v81.pt-cv-colsys { margin: 0 !important; } div#pt-cv-view-ab46290ema .col-md-6.pt-cv-content-item.pt-cv-1-col, div#pt-cv-view-582ed10nx7 .col-md-12.pt-cv-content-item.pt-cv-1-col, { padding: 0 !important; } .page-template-rocket .addtoany_list, .rocket-microsite .addtoany_list, .rocket-analyst-reports-white-papers .addtoany_list, .rocket-microsite-latest .addtoany_list, .rocket-oss-tools-for-ibm-z .addtoany_list { margin-top: 20px; display: flex; justify-content: center; } #pt-cv-view-16aa7cbary .pt-cv-ifield { display: flex; margin-bottom: 10px !important; } #pt-cv-view-16aa7cbary .pt-cv-thumb-left.cvp-responsive-image { margin-bottom: 0; } #pt-cv-view-16aa7cbary .pt-cv-title { display: flex; align-self: center; align-items: center; margin-bottom: 0; } #pt-cv-view-16aa7cbary .pt-cv-title::before { content: ""; background: url(https://devopsdevwork.wpengine.com/wp-content/uploads/2021/03/podium.svg) no-repeat; height: 20px; width: 20px; margin-right: 10px; display: flex; } .page-template-rocket .su-image-carousel-crop .su-image-carousel-item-content img, .rocket-microsite .su-image-carousel-crop .su-image-carousel-item-content img, .rocket-analyst-reports-white-papers .su-image-carousel-crop .su-image-carousel-item-content img, .rocket-microsite-latest .su-image-carousel-crop .su-image-carousel-item-content img, .rocket-oss-tools-for-ibm-z .su-image-carousel-crop .su-image-carousel-item-content img { object-fit: contain; } #a2a_follow_widget-2 .widget-title { margin-bottom: 10px; } /* END MICROSITE CUSTOMIZATIONS */ /*EDITORIAL CALENDAR LAYOUT FIX */ .elementor-129505 .elementor-element.elementor-element-4ad8438 > .elementor-widget-container { margin: 0px 10px 0px 3px !important; } /* PLUGIN UPDATE FIX 4-3-21 */ .bdt-news-ticker .bdt-news-ticker-label::after { display: none; } .bdt-news-ticker .bdt-news-ticker-content ul li a { padding: 4px 0px 10px 16px !important; } .bdt-news-ticker-controls button { padding: 0; } /* AUTHORS PAGE IMAGE FIX */ .dir-listing{ position: relative; } /** HCL BADGE **/ .pt-cv-custom-fields.pt-cv-ctf-sponsored_content .pt-cv-ctf-value { display: none; } /* SINGLE POST DISPLAY */ .entry-title.sponsored { position: relative; } /* .entry-title.sponsored::before { content: ""; background: url(https://devops.com/wp-content/uploads/2021/03/laptop-code-black.svg) no-repeat 0 0; height: 35px; width: 35px; display: inline-block; float: left; margin-right: 10px; position: relative; top: 6px; }*/ /*LOW CODE ARCHIVE PAGE */ #pt-cv-view-8d86a75u5j .pt-cv-ctf-list { display: inline-block; float: right; margin-right: 10px; position: relative; top: -20px; margin-top: -20px; } /* #pt-cv-view-8d86a75u5j .pt-cv-custom-fields.pt-cv-ctf-sponsored_content::before { content: ""; background: url(https://devops.com/wp-content/uploads/2021/03/laptop-code-black.svg) no-repeat 0 0; height: 30px; width: 30px; float: right; } */ /*HOME PAGE RIGHT RAIL LATEST */ #pt-cv-view-cee3219m65 .pt-cv-ctf-list { display: inline-block; float: right; margin-right: 10px; position: relative; top: -30px; } #pt-cv-view-cee3219m65 .pt-cv-custom-fields.pt-cv-ctf-sponsored_content::before { content: ""; background: url(https://devops.com/wp-content/uploads/2021/03/laptop-code-dgray.svg) no-repeat 0 0; height: 27px; width: 27px; } #pt-cv-view-cee3219m65 .pt-cv-ctf-list { display: inline-block; float: right; margin-right: 10px; position: relative; top: -13px; } .page-id-140470 .entry-title { display:none !important; } /* This for removing extra padding on microsite widget pages. Find the pt-cv-view-???? specific to the widget and duplicate and copy that. */ div#pt-cv-view-9f39fc9rjh .col-md-12.pt-cv-omain.pt-cv-content-item.pt-cv-1-col { padding-right: 0px !important; } div#pt-cv-view-117ab7a3lp .col-md-12.pt-cv-omain.pt-cv-content-item.pt-cv-1-col { padding-right: 0px !important; } div#pt-cv-view-4beabaflfs.pt-cv-view.pt-cv-scrollable.pt-cv-colsys { padding-left: 12px !important; } div#pt-cv-view-4beabaflfs.pt-cv-scrollable .pt-cv-thumbnail { width: 200px; } div#pt-cv-view-62221e39gi.pt-cv-scrollable .pt-cv-thumbnail { width: 200px; } div#pt-cv-view-91a13a0apm .col-md-12.pt-cv-omain.pt-cv-content-item.pt-cv-1-col { padding-right:0px !important; } div#pt-cv-view-98fbdec2ao .col-md-4.col-sm-4.col-xs-12.pt-cv-content-item.pt-cv-1-col { padding-right:0px !important; } div#pt-cv-view-3dc2d7dn8d .col-md-6.col-sm-4.col-xs-12.pt-cv-content-item.pt-cv-1-col { padding-right: 0px !important; padding-left: 20px !important; } ul#menu-csc-main-navigation.menu.genesis-nav-menu.menu-primary.responsive-menu { padding-bottom:0px !important; } .genesis-nav-menu a:hover { color:#dc2e2a !important; } .genesis-nav-menu a { color:#fff !important; padding: 10px 10px; } .genesis-nav-menu .sub-menu a { color:#fff; } .genesis-nav-menu .sub-menu { background-color: #333333; color: #000; } .genesis-nav-menu .sub-menu a:hover { background-color: #333333; } //////// .page-id-136679 .tribe-mini-calendar-event .list-info { padding-right: 5px; } .page-id-136679 .tribe-events-widget-link { display:none !important; } .page-id-136679 .tribe-events-widget-link2 { display:none !important; } .page-id-138296 .tribe-mini-calendar-event .list-info { padding-right: 5px; } .page-id-138296 .tribe-events-widget-link { display:none !important; } .page-id-138296 .tribe-events-widget-link2 { display:none !important; } div#pt-cv-view-791beb34b0.pt-cv-view.pt-cv-one_others.pt-cv-colsys.pt-cv-sharp-buttons.pt-cv-reused div.pt-cv-page div.col-md-8.pt-cv-ocol.col-sm-8.col-xs-12 div.col-md-12.pt-cv-omain.pt-cv-content-item.pt-cv-1-col { padding-right:0px !important; } div#pt-cv-view-9d06d2e8f4.pt-cv-view.pt-cv-one_others.pt-cv-colsys.pt-cv-sharp-buttons.pt-cv-reused div.pt-cv-page div.col-md-12.pt-cv-ocol div.col-md-12.pt-cv-omain.pt-cv-content-item.pt-cv-1-col { padding-right:0px !important; } .wpforms-confirmation-container-full, div[submit-success] > .wpforms-confirmation-container-full:not(.wpforms-redirection-message) { background: #e9e9f1; border: 1px solid #b4d39b; } html,body { width: 100%; height: 100%; margin: 0px; padding: 0px; overflow-x: hidden; } .content { width: 100% !important; display: flex; flex-direction: column; } .after-entry.widget-area { order: 3; } .adjacent-entry-pagination.pagination { order: 2; } aside.sidebar.sidebar-primary { display: none !important; } @media (min-width: 1000px) { .content { width: 70% !important; } aside.sidebar.sidebar-primary { width: 25% !important; display: block !important; } } @media (max-width: 600px) { .content { width: 100% !important; } aside.sidebar.sidebar-primary { width: 100% !important; display: block !important; } } /* @media only screen and (min-width: 1600px) { .pum-overlay, html.pum-open.pum-open-overlay-disabled.pum-open-fixed .pum-container, html.pum-open.pum-open-overlay.pum-open-fixed .pum-container { left: 1800px !important; } } */ .webinarslider { margin-top:10px; } #pt-cv-view-99c4ca3njg .pt-cv-custom-fields * { color: #fff; } #pt-cv-view-2466c21qxe .pt-cv-custom-fields * { color: #fff; } #pt-cv-view-cc5c992qah .pt-cv-custom-fields * { color: #fff; } aside.sidebar.sidebar-primary.widget-area section#custom_html-57.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.pt-cv-carousel { padding-bottom: 0px; } aside.sidebar.sidebar-primary.widget-area section#custom_html-57.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget { border-style: solid; border-width: 1px; border-color: #f2f2f2; } aside.sidebar.sidebar-primary.widget-area section#custom_html-56.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.pt-cv-carousel { padding-bottom: 0px; } aside.sidebar.sidebar-primary.widget-area section#custom_html-56.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget { border-style: solid; border-width: 1px; border-color: #f2f2f2; } aside.sidebar.sidebar-primary.widget-area section#custom_html-55.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.pt-cv-carousel { padding-bottom: 0px; } aside.sidebar.sidebar-primary.widget-area section#custom_html-55.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget { border-style: solid; border-width: 1px; border-color: #f2f2f2; } aside.sidebar.sidebar-primary.widget-area section#custom_html-51.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.pt-cv-carousel { padding-bottom: 0px; } aside.sidebar.sidebar-primary.widget-area section#custom_html-51.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget { border-style: solid; border-width: 1px; border-color: #f2f2f2; } aside.sidebar.sidebar-primary.widget-area section#custom_html-47.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.pt-cv-carousel { padding-bottom: 0px; } aside.sidebar.sidebar-primary.widget-area section#custom_html-47.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget { border-style: solid; border-width: 1px; border-color: #f2f2f2; } aside.sidebar.sidebar-primary.widget-area section#custom_html-45.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.pt-cv-carousel { padding-bottom: 0px; } aside.sidebar.sidebar-primary.widget-area section#custom_html-45.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget { border-style: solid; border-width: 1px; border-color: #f2f2f2; } div.gform_body ul#gform_fields_21.gform_fields.top_label.form_sublabel_below.description_above li#field_21_4.gfield.gsection.newsletter-privacy-policy.field_sublabel_below.field_description_above.gfield_visibility_visible { margin-right:0px !important; padding-right:0px !important; } div.gform_body ul#gform_fields_21.gform_fields.top_label.form_sublabel_below.description_above li#field_21_3.gfield.sidebar-signup-form.gfield_contains_required.field_sublabel_below.field_description_above.hidden_label.gfield_visibility_visible { margin-right:0px !important; padding-right:0px!important; } div.gform_body ul#gform_fields_39.gform_fields.top_label.form_sublabel_below.description_above li#field_39_6.gfield.gfield_contains_required.field_sublabel_below.field_description_above.hidden_label.gfield_visibility_visible div.ginput_container.ginput_container_text input#input_39_6.medium { margin-top:12px; } .gform_wrapper.gf_browser_chrome span.address_country { /* margin-top: -2px; */ padding-top: 16px; } aside.sidebar.sidebar-primary.widget-area section#custom_html-44.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget { border-style: solid; border-width: 1px; border-color: #f2f2f2; } aside.sidebar.sidebar-primary.widget-area section#custom_html-44.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.su-custom-gallery { margin-bottom: 0px !important; } aside.sidebar.sidebar-primary.widget-area section#custom_html-17.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.su-custom-gallery { margin-bottom: 0px !important; } .tribe-events-loop .tribe-events-event-meta { font-size: 12px !important; } .tribe-mini-calendar-event .list-info h2 { font-size: 14px !important; font-weight: bold !important; line-height: 18px !important; margin-top: 0px !important; margin-bottom: 10px !important; } .elementor-129505 .elementor-element.elementor-element-cfcb608 { display:none; } @media only screen and (max-width: 1024px) { .bdt-news-ticker-content { text-overflow: ellipsis !important; white-space: nowrap !important; width: 90%; overflow: hidden !important; } } div.bdt-news-ticker.bdt-grid.bdt-grid-collapse div.bdt-width-expand.bdt-grid.bdt-grid-collapse.bdt-slideshow div.bdt-news-ticker-navigation.bdt-flex.bdt-flex-middle.bdt-width-auto a.bdt-icon.bdt-slidenav-next.bdt-slidenav { color: #fff; } div.bdt-news-ticker.bdt-grid.bdt-grid-collapse div.bdt-width-expand.bdt-grid.bdt-grid-collapse.bdt-slideshow div.bdt-news-ticker-navigation.bdt-flex.bdt-flex-middle.bdt-width-auto a.bdt-icon.bdt-slidenav-previous.bdt-slidenav { color: #fff; } .bdt-news-ticker { height: 35px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .bdt-news-ticker-content { padding-top: 3px; } .bdt-flex-middle { align-items: flex-start; } .bdt-grid-collapse { padding-left: 40px !important; padding-top: 3px !important; } .elementor-129505 .elementor-element.elementor-element-e2b0874 > .elementor-widget-container { margin: 0px 12px 0px 1px; padding: 5px 5px 5px 5px; background-image: url(https://3ovyg21t17l11k49tk1oma21-wpengine.netdna-ssl.com/wp-content/uploads/2019/04/DevOpsArrow_892.png); background-position: center right; background-repeat: no-repeat; background-size: auto; } .elementor-129505 .elementor-element.elementor-element-e2b0874.elementor-widget-heading .elementor-heading-title { color: #ffffff; } div#pt-cv-view-e43592dbt0.pt-cv-view.pt-cv-grid.pt-cv-colsys.pt-cv-sharp-buttons div.pt-cv-page div.col-md-4.col-sm-4.col-xs-12.pt-cv-content-item.pt-cv-1-col { padding-right:0px; } #mega-menu-topmenu > li.mega-menu-megamenu > ul.mega-sub-menu { left:-7px !important; width: 101% !important; } #mega-menu-primary > li.mega-menu-megamenu > ul.mega-sub-menu { left:-7px !important; width: 101% !important; } .su-pullquote-align-right { border-left: 5px solid #dc2e2a !important; } .su-pullquote-align-left { border-right: 5px solid #dc2e2a !important; } .do_blockquote { max-width: 600px; text-align: center !important; margin: 20px !important; padding: 20px !important; font-size: 20px !important; color: #333333; border-left: 4px solid #dc2e2a !important; border-top-left-radius: 30px !important; border-bottom-left-radius: 30px !important; border-right: 4px solid #dc2e2a !important; border-top-right-radius: 30px !important; border-bottom-right-radius: 30px !important; } p#breadcrumbs { margin-bottom: 0px !important; } .header-image .site-title a { background-position: top left !important; } .site-description { padding-bottom: 10px !important; text-align: left; } .site-title { padding-bottom: 5px !important; } div.elementor-widget-container ul li { margin-top: 0px !important; margin-bottom: 12px !important; } @media only screen and (max-width: 1024px) { #pt-cv-view-117ab7a3lp .pt-cv-content { color: #ffffff !important; display: none; } #pt-cv-view-91a13a0apm .pt-cv-content { color: #ffffff !important; display: none; } } @media only screen and (max-width: 768px) { #pt-cv-view-117ab7a3lp .pt-cv-content { color: #ffffff !important; display: none; } #pt-cv-view-91a13a0apm .pt-cv-content { color: #ffffff !important; display: none; } .widget-area.header-widget-area { display: none; } } @media (max-width: 639px) { .bdt-visible\@s { display: flex !important; } .bdt-news-ticker .bdt-news-ticker-content { padding-left: 14px !important } .bdt-news-ticker-label-inner { padding-left: 5px !important; padding-right: 10px !important; } } .widget-title { text-transform: capitalize !important; } .elementor-heading-title { text-transform:none !important; } .single .post img.attachment-post-image { width: 900px; } .single .category-roelbob img.attachment-post-image { width: auto; } .post-118516 .pt-cv-scrollable .pt-cv-cap-w-img { margin-left: 22.0% !important; padding-right: 5%; padding-left: 3%; height: 100%; width: 75%; z-index: -5; } .post-129336 .pt-cv-scrollable .pt-cv-cap-w-img { margin-left: 22.0% !important; padding-right: 5%; padding-left: 3%; height: 100%; width: 75%; z-index: -5; } div.cvp-replayout div.pt-cv-wrapper div#pt-cv-view-8d86a75u5j.pt-cv-view.pt-cv-pinterest.pt-cv-colsys.pt-cv-nolf.pt-cv-border.pt-cv-no-bb.pt-cv-pgloadmore.pt-cv-sharp-buttons div.pt-cv-page.shuffle.cvpshuffled div.col-md-12.col-sm-12.col-xs-12.pt-cv-content-item.pt-cv-2-col.shuffle-item.filtered div.pt-cv-pinmas a._self.pt-cv-href-thumbnail.pt-cv-thumb-right.cvplbd img.pt-cv-thumbnail.img-none.pull-right.cvp-substitute.cvplazy { width: 30% !important; } div#pt-cv-view-117ab7a3lp.pt-cv-view.pt-cv-one_others.pt-cv-colsys.pt-cv-sharp-buttons.pt-cv-reused div.pt-cv-page div.col-md-8.pt-cv-ocol.col-sm-8.col-xs-12 div.col-md-12.pt-cv-omain.pt-cv-content-item.pt-cv-1-col { padding-right:0px !important; } article.post-15.page.type-page.status-publish.has-post-thumbnail.entry div.entry-content div { float: left !important; } @media (max-width: 768px) { #mega-menu-wrap-primary #mega-menu-primary > li.mega-menu-item { display: inline-flex; } #mega-menu-wrap-secondary #mega-menu-secondary > li.mega-menu-item { display: inline-flex; } } @media (max-width: 768px) { #mega-menu-wrap-topmenu { max-width:80% } } @media (min-width: 768px) { #mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 { margin-left: 350px !important; } } @media (max-width: 1000px) { #mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 { margin-left: 0px !important; } } @media (max-width: 600px) { #mega-menu-wrap-topmenu .mega-menu-toggle.mega-menu-open + #mega-menu-topmenu { padding-left: 20px; } #mega-menu-wrap-topmenu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-label { padding-left: 20px; } #mega-menu-wrap-topmenu { padding-top:10px; margin-left: -15px; max-width: 110% !important; } .sidebar-primary { padding-right:10px !important; } .nav-primary { background-color: #333333 !important; } } @media (max-width: 768px) { #mega-menu-wrap-primary #mega-menu-primary > li.mega-menu-item { display: inline-flex; } #mega-menu-wrap-secondary #mega-menu-secondary > li.mega-menu-item { display: inline-flex; } } @media (max-width: 768px) { #mega-menu-wrap-topmenu { max-width:80% } } @media (min-width: 768px) { #mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 { margin-left: 350px !important; } } @media (max-width: 1000px) { #mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 { margin-left: 0px !important; } } @media (max-width: 600px) { #mega-menu-wrap-topmenu .mega-menu-toggle.mega-menu-open + #mega-menu-topmenu { padding-left: 20px; } #mega-menu-wrap-topmenu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-label { padding-left: 20px; } #mega-menu-wrap-topmenu { padding-top:10px; margin-left: -15px; max-width: 110% !important; } .sidebar-primary { padding-right:10px !important; } .nav-primary { background-color: #333333 !important; } } @media (max-width: 768px) { #mega-menu-wrap-topmenu { max-width:80% } } @media (min-width: 768px) { #mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 { margin-left: 350px !important; } } @media (max-width: 1000px) { #mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 { margin-left: 0px !important; } } @media (max-width: 600px) { #mega-menu-wrap-topmenu .mega-menu-toggle.mega-menu-open + #mega-menu-topmenu { padding-left: 20px; } #mega-menu-wrap-topmenu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-label { padding-left: 20px; } #mega-menu-wrap-topmenu { padding-top:10px; margin-left: -15px; max-width: 110% !important; } .sidebar-primary { padding-right:10px !important; } .nav-primary { background-color: #333333 !important; } } .nav-primary { background-color: #333333 !important; } .site-header .wrap { padding-bottom: 0px !important; } #mega-menu-wrap-topmenu { padding-top:25px; height:60px !important; } @media (max-width: 600px) { .nav-primary { display:none !important; } #mega-menu-wrap-primary { display:none !important; } .nav.nav-primary.cloned { display:none; } div#mega-menu-wrap-topmenu.mega-menu-wrap { padding-top:20px; } div.site-container header.site-header div.wrap { padding-bottom: 0px; margin-bottom:0px; } } @media (max-width: 768px) { #mega-menu-wrap-topmenu { max-width:80% } } @media (min-width: 768px) { #mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 { margin-left: 350px !important; } } @media (max-width: 1000px) { #mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 { margin-left: 0px !important; } } @media (max-width: 600px) { #mega-menu-wrap-topmenu .mega-menu-toggle.mega-menu-open + #mega-menu-topmenu { padding-left: 20px; } #mega-menu-wrap-topmenu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-label { padding-left: 20px; } #mega-menu-wrap-topmenu { padding-top:10px; margin-left: -15px; max-width: 110% !important; } .sidebar-primary { padding-right:10px !important; } .nav-primary { background-color: #333333 !important; } } @media (min-width: 1000px) { h6.pt-cv-title { font-size:15px; } } div.site-inner div.content-sidebar-wrap div.author-header { float: left; width: 900px !important; } div.pt-cv-meta-fields { font-size:13px !important; padding-bottom:7px !important; margin-bottom:0px !important; } #mega-menu-wrap-primary #mega-menu-primary > li.mega-menu-item > a.mega-menu-link { font-weight: 500 !important; color: #fff; } /* @media (min-width: 1000px) { .page-id-129505 .site-container { background-color:#000; } .page-id-129505 .site-header { max-width: 1280px; margin-left: auto; margin-right: auto; padding-top:10px; } .page-id-129505 .site-inner { max-width: 1280px; background-color:white; padding-left:20px !important; } .page-id-129505 .site-inner { max-width: 1280px; background-color:white; padding-left:15px !important; } .page-id-129505 .nav-primary { max-width: 1280px; margin-left: auto; margin-right: auto; margin-bottom:0px; } .page-id-129505 .site-inner { max-width: 1280px; } .page-id-129505 .content { width: 900px; } .page-id-129505 .wrap { max-width: 1240px; } .page-id-129505 .sidebar-primary { margin-right:20px; width:300px !important; } */ @media (min-width: 1000px) { .site-header div.wrap div.widget-area.header-widget-area { padding-top: 20px; } .site-container { background-color:#fff; } .site-header { max-width: 100%; margin-left: auto; margin-right: auto; padding-top:0px; } .site-inner { max-width: 1280px; background-color:white; padding-left:20px !important; } .site-inner { max-width: 1280px; background-color:white; padding-left:20px !important; padding-top: 5px; } .nav-primary { max-width: 100%; margin-left: auto; margin-right: auto; margin-bottom:0px; } .site-inner { max-width: 1280px; } .content { width: 900px; } .wrap { max-width: 1240px; padding-left: 0 !important; } .sidebar-primary { margin-right:20px; width:300px !important; } .site-footer { max-width: 100%; margin-left: auto; margin-right: auto; padding-top: 20px !important; padding-bottom: 0px; } .site-description { padding-left:10px } .title-area { margin-left: -10px !important; padding-top: 20px; } } article.post-123566.page.type-page.status-publish.entry div.entry-content div#gform_wrapper_42.gf_browser_chrome.gform_wrapper form#gform_42 div.gform_footer.top_label input#gform_submit_button_42.gform_button.button { margin-left: 0px !important; } article.post-793.page.type-page.status-publish.entry div.entry-content div#gform_wrapper_39.gf_browser_gecko.gform_wrapper form#gform_39 div.gform_footer.top_label input#gform_submit_button_39.gform_button.button { margin-left: 0px !important; } div.gform_wrapper .gform_footer input[type="submit"] { margin-left: 0px !important; } aside.sidebar.sidebar-primary.widget-area section#gform_widget-3 .widget-wrap { background: #DC2E2A; padding: 10px; } aside.sidebar.sidebar-primary.widget-area section#gform_widget-3 .widget-title { font-weight: bold; background-color: #000; padding: 5px 40px 2px 40px; margin: auto; text-transform: uppercase !important; } aside.sidebar.sidebar-primary.widget-area section#gform_widget-3 #gform_wrapper_21 { background: #DC2E2A; border: 0 none; } aside.sidebar.sidebar-primary.widget-area section#gform_widget-3 #gfield_description_21_4 a { color: #000; } aside.sidebar.sidebar-primary.widget-area section#gform_widget-3 .gform_footer input[type="submit"] { background-color: #000; } aside.sidebar.sidebar-primary.widget-area section#gform_widget-3.widget.gform_widget div.widget-wrap div#gform_wrapper_21.gf_browser_gecko.gform_wrapper form#gform_21 div.gform_footer.top_label input#gform_submit_button_21.gform_button.button { margin-left: 0px !important; margin-right: 0px !important; } section#gform_widget-3.widget.gform_widget div.widget-wrap div#gform_wrapper_21.gf_browser_gecko.gform_wrapper form#gform_21 div.gform_footer.top_label input#gform_submit_button_21.gform_button.button { margin-left: auto !important; margin-right: auto !important; } div.gform_wrapper .gform_footer input[type="submit"] { margin: 0px 0px 0px; } @media (max-width: 768px) { body.downloads-template-default.single.single-downloads .alignright { display:block !important; float:none !important; } div#pt-cv-view-a8a83ed3nr.pt-cv-view.pt-cv-pinterest.pt-cv-colsys { padding-left: 0px !important; padding-right: 0px !important; } div#pt-cv-view-a8a83ed3nr.pt-cv-view.pt-cv-pinterest.pt-cv-colsys { margin-left: 0px !important; margin-right: 0px !important; } div#pt-cv-view-a8a83ed3nr.pt-cv-view.pt-cv-pinterest.pt-cv-colsys.pt-cv-border.pt-cv-no-bb.pt-cv-pgloadmore.pt-cv-sharp-buttons div.pt-cv-page.shuffle.cvpshuffled div.col-md-6.col-sm-12.col-xs-12.pt-cv-content-item.pt-cv-1-col.shuffle-item.filtered { padding-left: 0px; padding-right: 0px; } div#pt-cv-view-18214d4op9.pt-cv-view.pt-cv-pinterest.pt-cv-colsys.pt-cv-nolf.pt-cv-border.pt-cv-no-bb.pt-cv-pgloadmore.pt-cv-sharp-buttons.pt-cv-reused div.pt-cv-page.shuffle.cvpshuffled div.col-md-12.col-sm-12.col-xs-12.pt-cv-content-item.pt-cv-2-col.shuffle-item.filtered { padding-left: 0px !important; padding-right: 0px !important; } div#pt-cv-view-18214d4op9.pt-cv-view.pt-cv-pinterest.pt-cv-colsys { padding-left: 0px !important; padding-right: 0px !important; } div#pt-cv-view-18214d4op9.pt-cv-view.pt-cv-pinterest.pt-cv-colsys { margin-right: 0px !important; } } @media (max-width: 1240px) { #mega-menu-wrap-topmenu #mega-menu-topmenu { margin-left:20px !important; padding-right: 10px !important; } #mega-menu-wrap-primary { margin-left:20px !important; } } @media (min-width: 1240px) { .site-header .widget-area { width: 800px !important; } } .title-area { margin-left: 10px !important; } @media (min-width: 1240px) { .title-area { margin-left: -10px !important; } } @media (max-width: 1000px) { #mega-menu-wrap-primary { margin-left:10px !important; } } ul.mega-sub-menu { z-index: 9999999 !important; } .post-118516 .pt-cv-scrollable .pt-cv-cap-w-img { width: 100% !important; margin-left: 190px !important; padding-right: 230px !important; } .post-118516 .pt-cv-wrapper .col-xs-6 { width: 100% !important; } @media (max-width: 600px) { .post-118516 .pt-cv-wrapper .col-xs-6 { width: 50% !important; } } .pum-content .pt-cv-wrapper .carousel-control .glyphicon { width: 0px; height: 30px; margin-top: 108px; margin-right: 20px; margin-left: 0px; } .pum-theme-126813 .pum-title, .pum-theme-default-theme .pum-title { text-align: center; font-size: 16px; } .pum-content .pt-cv-textbelow .pt-cv-carousel-caption { position: relative; margin: 0; top: 0; left: 0; right: 0; padding-top: 0px; padding-bottom: 5px; color: inherit; } .pum-content img { margin-bottom: 10px !important; } .pum-container { } .pum-theme-126813 .pum-container, .pum-theme-default-theme .pum-container { border: 0px !important; box-shadow: none !important; padding-right: 20px !important; } </style> <style type="text/css">/** Mega Menu CSS: fs **/</style> </head> <body class="post-template-default single single-post postid-157147 single-format-standard tribe-no-js mega-menu-topmenu blogs data-ops devops-open-technologies devops-practice devops-toolbox custom-header header-image header-full-width content-sidebar elementor-default elementor-kit-134475" itemscope itemtype="https://schema.org/WebPage"><div class="header-ad" class="widget-area"><section id="text-101" class="widget widget_text"><div class="widget-wrap"> <div class="textwidget"><div class="new-header"> <div class="logo-area"> <a href="https://devops.com/"><img decoding="async" src="https://devops.com/wp-content/uploads/2023/01/devops-logo-tsg.png"/></a> </div> <div class="widget-area header-widget-area"> <!-- /80877830/DO_header-right --></p> <div id='div-gpt-ad-1494599233432-0' style='min-width: 320px; min-height: 50px;'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1494599233432-0'); }); </script> </div> </div> <p><!-- end widget area--></p> </div> <p><!-- end header--></p> </div> </div></section> <section id="custom_html-92" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><div class="textwidget custom-html-widget"><h1 class="newsletter"> Sign up for our newsletter!<br /><span class="news-text">Stay informed on the latest DevOps news</span> </h1> <script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/embed/v2.js"></script> <script> hbspt.forms.create({ portalId: "1628905", formId: "d9434e0c-c51c-4ccd-9ea5-54509a040161" }); </script></div></div></section> </div><!-- /80877830/DevOps.com_OOP --> <div id='div-gpt-ad-1494947147258-0'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1494947147258-0'); }); </script> </div><div class="site-container"><header class="site-header" itemscope itemtype="https://schema.org/WPHeader"><div class="wrap"><div class="title-area"><p class="site-title" itemprop="headline"><a href="https://devops.com/">DevOps.com</a></p></div><div id="mega-menu-wrap-topmenu" class="mega-menu-wrap"><div class="mega-menu-toggle"><div class="mega-toggle-blocks-left"><div class='mega-toggle-block mega-menu-toggle-block mega-toggle-block-1' id='mega-toggle-block-1' tabindex='0'><span class='mega-toggle-label' role='button' aria-expanded='false'><span class='mega-toggle-label-closed'></span><span class='mega-toggle-label-open'></span></span></div><div class='mega-toggle-block mega-spacer-block mega-toggle-block-2' id='mega-toggle-block-2'></div><div class='mega-toggle-block mega-search-block mega-toggle-block-3' id='mega-toggle-block-3'><div class='mega-search-wrap'><form class='mega-search expand-to-right mega-search-closed' action='https://devops.com/'> <span class='dashicons dashicons-search search-icon'></span> <input type='submit' value='Search'> <input type='text' aria-label='Search' data-placeholder='Search' name='s' /> </form></div></div></div><div class="mega-toggle-blocks-center"></div><div class="mega-toggle-blocks-right"></div></div><ul id="mega-menu-topmenu" class="mega-menu max-mega-menu mega-menu-horizontal mega-no-js" data-event="hover_intent" data-effect="fade_up" data-effect-speed="200" data-effect-mobile="disabled" data-effect-speed-mobile="0" data-panel-width=".wrap" data-mobile-force-width="body" data-second-click="close" data-document-click="collapse" data-vertical-behaviour="accordion" data-breakpoint="600" data-unbind="true" data-mobile-state="collapse_all" data-mobile-direction="vertical" data-hover-intent-timeout="300" data-hover-intent-interval="100" data-overlay-desktop="false" data-overlay-mobile="false"><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-has-children mega-align-bottom-left mega-menu-flyout mega-menu-item-129359' id='mega-menu-item-129359'><a class="mega-menu-link" href="#" aria-expanded="false" tabindex="0">Latest<span class="mega-indicator"></span></a> <ul class="mega-sub-menu"> <li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-current-post-ancestor mega-current-menu-parent mega-current-post-parent mega-menu-item-129361' id='mega-menu-item-129361'><a class="mega-menu-link" href="https://devops.com/category/blogs/">Articles</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129362' id='mega-menu-item-129362'><a class="mega-menu-link" href="https://devops.com/category/features/">Features</a></li><li class='mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-130105' id='mega-menu-item-130105'><a class="mega-menu-link" href="https://devops.com/most-read/">Most Read</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129363' id='mega-menu-item-129363'><a class="mega-menu-link" href="https://devops.com/category/news/">News</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129364' id='mega-menu-item-129364'><a class="mega-menu-link" href="https://devops.com/category/press-releases/">News Releases</a></li></ul> </li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-has-children mega-align-bottom-left mega-menu-flyout mega-hide-on-desktop mega-menu-item-129549' id='mega-menu-item-129549'><a class="mega-menu-link" href="#" aria-expanded="false" tabindex="0">Topics<span class="mega-indicator"></span></a> <ul class="mega-sub-menu"> <li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129550' id='mega-menu-item-129550'><a class="mega-menu-link" href="https://devops.com/category/blogs/ai/">AI</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129551' id='mega-menu-item-129551'><a class="mega-menu-link" href="https://devops.com/category/blogs/continuous-delivery/">Continuous Delivery</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129552' id='mega-menu-item-129552'><a class="mega-menu-link" href="https://devops.com/category/blogs/continuous-testing/">Continuous Testing</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129554' id='mega-menu-item-129554'><a class="mega-menu-link" href="https://devops.com/category/blogs/devops-in-the-cloud/">Cloud</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129553' id='mega-menu-item-129553'><a class="mega-menu-link" href="https://devops.com/category/blogs/devops-culture/">Culture</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-current-post-ancestor mega-current-menu-parent mega-current-post-parent mega-menu-item-155962' id='mega-menu-item-155962'><a class="mega-menu-link" href="https://devops.com/category/blogs/data-ops/">DataOps</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129557' id='mega-menu-item-129557'><a class="mega-menu-link" href="https://devops.com/category/blogs/devsecops/">DevSecOps</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129558' id='mega-menu-item-129558'><a class="mega-menu-link" href="https://devops.com/category/blogs/enterprise-devops/">Enterprise DevOps</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129559' id='mega-menu-item-129559'><a class="mega-menu-link" href="https://devops.com/category/blogs/leadership-suite/">Leadership Suite</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-current-post-ancestor mega-current-menu-parent mega-current-post-parent mega-menu-item-129555' id='mega-menu-item-129555'><a class="mega-menu-link" href="https://devops.com/category/blogs/devops-practice/">DevOps Practice</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129560' id='mega-menu-item-129560'><a class="mega-menu-link" href="https://devops.com/category/blogs/roelbob/">ROELBOB</a></li><li class='mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-current-post-ancestor mega-current-menu-parent mega-current-post-parent mega-menu-item-129556' id='mega-menu-item-129556'><a class="mega-menu-link" href="https://devops.com/category/blogs/devops-toolbox/">DevOps Toolbox</a></li><li class='mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-134328' id='mega-menu-item-134328'><a class="mega-menu-link" href="https://devops.com/it-as-code/">IT as Code</a></li></ul> </li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-has-children mega-align-bottom-left mega-menu-flyout mega-menu-item-148119' id='mega-menu-item-148119'><a class="mega-menu-link" href="#" aria-expanded="false" tabindex="0">Videos/Podcasts<span class="mega-indicator"></span></a> <ul class="mega-sub-menu"> <li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-156208' id='mega-menu-item-156208'><a target="_blank" class="mega-menu-link" href="https://www.techstrongpodcasts.com">Techstrong.tv Podcast</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-157038' id='mega-menu-item-157038'><a target="_blank" class="mega-menu-link" href="https://www.twitch.tv/techstrongtv">Techstrong.tv - Twitch</a></li><li class='mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-148118' id='mega-menu-item-148118'><a class="mega-menu-link" href="https://devops.com/devops-unbound/">DevOps Unbound</a></li></ul> </li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-has-children mega-align-bottom-left mega-menu-flyout mega-menu-item-129366' id='mega-menu-item-129366'><a class="mega-menu-link" href="#" aria-expanded="false" tabindex="0">Webinars<span class="mega-indicator"></span></a> <ul class="mega-sub-menu"> <li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129367' id='mega-menu-item-129367'><a class="mega-menu-link" href="https://devops.com/webinars/">Upcoming</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-159824' id='mega-menu-item-159824'><a class="mega-menu-link" href="https://devops.com/webinars/month/">Calendar View</a></li><li class='mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-129368' id='mega-menu-item-129368'><a class="mega-menu-link" href="https://devops.com/on-demand-webinars/">On-Demand Webinars</a></li></ul> </li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-align-bottom-left mega-menu-flyout mega-menu-item-129369' id='mega-menu-item-129369'><a class="mega-menu-link" href="https://devops.com/library" tabindex="0">Library</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-has-children mega-align-bottom-left mega-menu-flyout mega-menu-item-129373' id='mega-menu-item-129373'><a class="mega-menu-link" href="#" aria-expanded="false" tabindex="0">Events<span class="mega-indicator"></span></a> <ul class="mega-sub-menu"> <li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-143358' id='mega-menu-item-143358'><a class="mega-menu-link" href="https://www.mediaopsevents.com/virtual/upcoming">Upcoming Events</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-159823' id='mega-menu-item-159823'><a class="mega-menu-link" href="https://devops.com/webinars/month/?tribe-bar-date=2023-04-04">Calendar View</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-143359' id='mega-menu-item-143359'><a class="mega-menu-link" href="https://www.mediaopsevents.com/virtual/843942">On-Demand Events</a></li></ul> </li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-align-bottom-left mega-menu-flyout mega-menu-item-158236' id='mega-menu-item-158236'><a class="mega-menu-link" href="https://devops.com/category/sponsored-content" tabindex="0">Sponsored Content</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-has-children mega-align-bottom-left mega-menu-flyout mega-menu-item-129382' id='mega-menu-item-129382'><a class="mega-menu-link" href="#" aria-expanded="false" tabindex="0">Related Sites<span class="mega-indicator"></span></a> <ul class="mega-sub-menu"> <li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129383' id='mega-menu-item-129383'><a target="_blank" class="mega-menu-link" href="https://techstronggroup.com">Techstrong Group</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129384' id='mega-menu-item-129384'><a target="_blank" class="mega-menu-link" href="https://cloudnativenow.com/">Cloud Native Now</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129385' id='mega-menu-item-129385'><a target="_blank" class="mega-menu-link" href="https://securityboulevard.com">Security Boulevard</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-174294' id='mega-menu-item-174294'><a class="mega-menu-link" href="https://platformengineering.com/">Platform Engineering</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129386' id='mega-menu-item-129386'><a target="_blank" class="mega-menu-link" href="https://techstrongresearch.com/">Techstrong Research</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129391' id='mega-menu-item-129391'><a target="_blank" class="mega-menu-link" href="https://devopsdozen.com">DevOps Dozen</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129388' id='mega-menu-item-129388'><a target="_blank" class="mega-menu-link" href="https://www.youtube.com/channel/UC-zcE077X98oTEDPwKkDQxQ">DevOps TV</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-156209' id='mega-menu-item-156209'><a target="_blank" class="mega-menu-link" href="https://techstrong.tv/">Techstrong TV</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129387' id='mega-menu-item-129387'><a target="_blank" class="mega-menu-link" href="https://www.techstrongpodcasts.com">Techstrong.tv Podcast</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-157037' id='mega-menu-item-157037'><a target="_blank" class="mega-menu-link" href="https://www.twitch.tv/techstrongtv">Techstrong.tv - Twitch</a></li></ul> </li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-align-bottom-left mega-menu-flyout mega-menu-item-134553' id='mega-menu-item-134553'><a target="_blank" class="mega-menu-link" href="https://techstronggroup.com/assets/techstrong-media-kit.pdf" tabindex="0">Media Kit</a></li><li class='mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-align-bottom-left mega-menu-flyout mega-menu-item-146059' id='mega-menu-item-146059'><a class="mega-menu-link" href="https://devops.com/about/" tabindex="0">About</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-align-bottom-left mega-menu-flyout mega-menu-item-155727' id='mega-menu-item-155727'><a class="mega-menu-link" href="https://techstronggroup.com/tellmemore/" tabindex="0">Sponsor</a></li><li class='mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-align-bottom-left mega-menu-flyout mega-has-icon mega-icon-left mega-hide-text mega-item-align-right mega-menu-item-129582' id='mega-menu-item-129582'><div class='mega-search-wrap mega-static'> <form class='mega-search mega-search-open' role='search' action='https://devops.com/'><input type='submit' value='Search'><input type='text' role='searchbox' id='mega-search-129582' aria-label='Search...' name='s' autocomplete='off' placeholder='Search...' /><span tabindex='0' role='button' class='dashicons dashicons-search search-icon' aria-controls='mega-search-129582' aria-label='Search'></span> </form></div></li></ul></div></div></header><nav class="nav-primary" aria-label="Main" itemscope itemtype="https://schema.org/SiteNavigationElement"><div class="wrap"><ul id="menu-csc-main-navigation" class="menu genesis-nav-menu menu-primary"><li id="menu-item-129432" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-129432"><a href="https://devops.com/category/blogs/ai/" itemprop="url"><span itemprop="name">AI</span></a></li> <li id="menu-item-2454" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-2454"><a href="https://devops.com/category/blogs/devops-in-the-cloud/" itemprop="url"><span itemprop="name">Cloud</span></a></li> <li id="menu-item-30251" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-30251"><a href="https://devops.com/category/blogs/continuous-delivery/" itemprop="url"><span itemprop="name">CI/CD</span></a></li> <li id="menu-item-129371" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-129371"><a href="https://devops.com/category/blogs/continuous-testing/" itemprop="url"><span itemprop="name">Continuous Testing</span></a></li> <li id="menu-item-155963" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-item-155963"><a href="https://devops.com/category/blogs/data-ops/" itemprop="url"><span itemprop="name">DataOps</span></a></li> <li id="menu-item-129349" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-129349"><a href="https://devops.com/category/blogs/devsecops/" itemprop="url"><span itemprop="name">DevSecOps</span></a></li> <li id="menu-item-154132" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-154132"><a href="https://devops.com/devops-onramp/" itemprop="url"><span itemprop="name">DevOps Onramp</span></a></li> <li id="menu-item-157571" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-157571"><a href="https://devops.com/category/blogs/platform-engineering" itemprop="url"><span itemprop="name">Platform Engineering</span></a></li> <li id="menu-item-141617" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-141617"><a href="https://devops.com/category/blogs/low-code-no-code/" itemprop="url"><span itemprop="name">Low-Code/No-Code</span></a></li> <li id="menu-item-134327" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-134327"><a href="https://devops.com/it-as-code/" itemprop="url"><span itemprop="name">IT as Code</span></a></li> <li id="menu-item-129563" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-129563"><a href="#" itemprop="url"><span itemprop="name">More</span></a> <ul class="sub-menu"> <li id="menu-item-169899" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-169899"><a href="https://devops.com/aws-serverless/" itemprop="url"><span itemprop="name">Serverless on AWS</span></a></li> <li id="menu-item-166009" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-166009"><a href="https://devops.com/builder-community-hub/" itemprop="url"><span itemprop="name">Builder Community Hub</span></a></li> <li id="menu-item-129564" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-129564"><a href="https://devops.com/category/blogs/application-performance-managementmonitoring/" itemprop="url"><span itemprop="name">Application Performance Management/Monitoring</span></a></li> <li id="menu-item-129546" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-129546"><a href="https://devops.com/category/blogs/devops-culture/" itemprop="url"><span itemprop="name">Culture</span></a></li> <li id="menu-item-129547" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-129547"><a href="https://devops.com/category/blogs/enterprise-devops/" itemprop="url"><span itemprop="name">Enterprise DevOps</span></a></li> <li id="menu-item-117163" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-117163"><a href="https://devops.com/category/blogs/roelbob/" itemprop="url"><span itemprop="name">ROELBOB</span></a></li> </ul> </li> </ul></div></nav><div class="site-inner"><div class="content-sidebar-wrap"><main class="content"><div id="sky"> <div class="leftad" style="top: 156px; margin-left: -740px; width: 160px;height: 1080px;position: fixed;left: 50%;" > <!-- /80877830/DO_SkyScraper_Left --> <div id='div-gpt-ad-1542202470575-0' style='height:600px; width:160px;'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1542202470575-0'); }); </script> </div> </div> <div class="rightad" style="top: 156px; margin-left: 580px;width: 160px;height: 1080px;position: fixed;left: 50%;" > <!-- /80877830/DO_SkyScraper_Right --> <div id='div-gpt-ad-1542202633557-0' style='height:600px; width:160px;'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1542202633557-0'); }); </script> </div> </div> </div><p id="breadcrumbs"><span><span><a href="https://devops.com/category/blogs/">Blogs</a></span> <span class="breadcrumb_last" aria-current="page">GraphQL Vulnerability Analysis: The Top Threats</span></span></p><article class="post-157147 post type-post status-publish format-standard has-post-thumbnail category-blogs category-data-ops category-devops-open-technologies category-devops-practice category-devops-toolbox tag-code-vulnerabilities tag-graphql tag-mitre tag-secure-code entry" itemscope itemtype="https://schema.org/CreativeWork"><header class="entry-header"><h1 class="entry-title" itemprop="headline">GraphQL Vulnerability Analysis: The Top Threats</h1> <p class="entry-meta">By: <span class="entry-author" itemprop="author" itemscope itemtype="https://schema.org/Person"><a href="https://devops.com/author/shahar-binyamin/" class="entry-author-link" rel="author" itemprop="url"><span class="entry-author-name" itemprop="name">Shahar Binyamin</span></a></span> on <time class="entry-time" itemprop="datePublished" datetime="2022-12-01T08:30:28-05:00">December 1, 2022</time> <span class="entry-comments-link"><a href="https://devops.com/graphql-vulnerability-analysis-the-top-threats/#respond"><span class="dsq-postid" data-dsqidentifier="157147 https://devops.com/?p=157147">Leave a Comment</span></a></span> </p></header><div class="entry-content" itemprop="text"><p class="p1">Publicly available vulnerability data can be a goldmine for insights into how DevOps and DevSecOps teams can prioritize threats and improve security across the pipeline. With this in mind, Inigo recently performed a deep-dive analysis of known vulnerabilities affecting GraphQL components—including GraphQL clients such as Relay and GraphQL servers such as Apollo, Graphene, Ariadne, GitLab Enterprise, Magento and others. Our main data sources for this investigation were the <a href="https://cve.mitre.org/" target="_blank" rel="noopener"><span class="s1">MITRE CVE database</span></a> and the <a href="https://hackerone.com/hacktivity" target="_blank" rel="noopener"><span class="s1">HackerOne Hacktivity portal</span></a>.</p><h3 class="p3">Analysis and Findings From the MITRE CVE Database</h3><p class="p1">First, a few caveats about the MITRE CVE database. While it’s considered the source of truth for CVEs and the best data source available for understanding these vulnerabilities, it has its limits. Not every vulnerability gets reported, and not every reported vulnerability gets an assigned CVE identifier. Vulnerabilities generally receive a CVE identifier when an impacted software vendor or researcher recognizes a vulnerability and files a CVE request with MITRE. Large software vendors including GitLab, GitHub, Adobe and many more also serve as <a href="https://www.cve.org/PartnerInformation/ListofPartners" target="_blank" rel="noopener"><span class="s1">CVE Numbering Authority (CNA) partners</span></a>, authorizing them to issue CVE identifiers themselves (often only for the scope of their own software). All this is to say that the MITRE CVE database is a strong data source for our analysis, but it shouldn’t be considered comprehensive.</p><div class='code-block code-block-5' style='margin: 8px 0; clear: both;'> <div class="custom-ad"> <div style="margin: auto;text-align: center;"> <button type="button" class="collapsible"><img src="https://devops.com/wp-content/uploads/2024/12/Hybrid-Cloud-Resiliency-and-Security-Strategies.png"></button> <div class="content-collapse" style="text-align: left;"> <p><script type="text/javascript"></script> <div class='gf_browser_ie gf_browser_ie7 gform_wrapper gravity-theme gform-theme--no-framework gpoll_enabled_wrapper gpoll_show_results_link_wrapper gpoll_wrapper' data-form-theme='gravity-theme' data-form-index='0' id='gform_wrapper_129' style='display:none'><div id='gf_129' class='gform_anchor' tabindex='-1'></div> <div class='gform_heading'> <p class='gform_description'></p> </div><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_129' id='gform_129' class='gpoll_enabled gpoll_show_results_link gpoll' action='/graphql-vulnerability-analysis-the-top-threats/#gf_129' data-formid='129' novalidate> <div id='gf_progressbar_wrapper_129' class='gf_progressbar_wrapper' data-start-at-zero=''> <p class="gf_progressbar_title">Step <span class='gf_step_current_page'>1</span> of <span class='gf_step_page_count'>7</span><span class='gf_step_page_name'></span> </p> <div class='gf_progressbar gf_progressbar_blue' aria-hidden='true'> <div class='gf_progressbar_percentage percentbar_blue percentbar_14' style='width:14%;'><span>14%</span></div> </div></div> <div class='gform-body gform_body'><div id='gform_page_129_1' class='gform_page ' data-js='page-field-id-0' > <div class='gform_page_fields'><div id='gform_fields_129' class='gform_fields top_label form_sublabel_below description_below validation_below'><fieldset id="field_129_3" class="gfield gfield--type-poll gfield--type-choice gfield--input-type-radio gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible gpoll_field" data-field-class="gpoll_field" data-js-reload="field_129_3" ><legend class='gfield_label gform-field-label' >Which of the following best describes how you currently monitor and manage systems across your hybrid cloud environment?<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></legend><div class='ginput_container ginput_container_radio'><div class='gfield_radio' id='input_129_3'> <div class='gchoice gchoice_129_3_0'> <input class='gfield-choice-input' name='input_3' type='radio' value='Multiple separate tools for different environments' id='choice_129_3_0' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_3_0' id='label_129_3_0' class='gform-field-label gform-field-label--type-inline'>Multiple separate tools for different environments</label> </div> <div class='gchoice gchoice_129_3_1'> <input class='gfield-choice-input' name='input_3' type='radio' value='Multiple separate tools for different monitoring and management functions' id='choice_129_3_1' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_3_1' id='label_129_3_1' class='gform-field-label gform-field-label--type-inline'>Multiple separate tools for different monitoring and management functions</label> </div> <div class='gchoice gchoice_129_3_2'> <input class='gfield-choice-input' name='input_3' type='radio' value='Single consolidated dashboard' id='choice_129_3_2' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_3_2' id='label_129_3_2' class='gform-field-label gform-field-label--type-inline'>Single consolidated dashboard</label> </div> <div class='gchoice gchoice_129_3_3'> <input class='gfield-choice-input' name='input_3' type='radio' value='Custom built monitoring and management solution' id='choice_129_3_3' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_3_3' id='label_129_3_3' class='gform-field-label gform-field-label--type-inline'>Custom built monitoring and management solution</label> </div> <div class='gchoice gchoice_129_3_4'> <input class='gfield-choice-input' name='input_3' type='radio' value='No full monitoring and management solution' id='choice_129_3_4' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_3_4' id='label_129_3_4' class='gform-field-label gform-field-label--type-inline'>No full monitoring and management solution</label> </div> <div class='gchoice gchoice_129_3_5'> <input class='gfield-choice-input' name='input_3' type='radio' value='Don’t know' id='choice_129_3_5' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_3_5' id='label_129_3_5' class='gform-field-label gform-field-label--type-inline'>Don’t know</label> </div></div></div></fieldset></div> </div> <div class='gform-page-footer gform_page_footer top_label'> <input type='button' id='gform_next_button_129_1' class='gform_next_button gform-theme-button button' onclick='gform.submission.handleButtonClick(this);' value='Next' /> </div> </div> <div id='gform_page_129_2' class='gform_page' data-js='page-field-id-1' style='display:none;'> <div class='gform_page_fields'> <div id='gform_fields_129_2' class='gform_fields top_label form_sublabel_below description_below validation_below'><fieldset id="field_129_4" class="gfield gfield--type-poll gfield--type-choice gfield--input-type-radio gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible gpoll_field" data-field-class="gpoll_field" data-js-reload="field_129_4" ><legend class='gfield_label gform-field-label' >How valuable would it be for your monitoring and management solution to incorporate predictive analytics to help you identify and address system issues that are critical and not waste time or effort working through all the data and “noise” that is not critical?<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></legend><div class='ginput_container ginput_container_radio'><div class='gfield_radio' id='input_129_4'> <div class='gchoice gchoice_129_4_0'> <input class='gfield-choice-input' name='input_4' type='radio' value='Extremely valuable' id='choice_129_4_0' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_4_0' id='label_129_4_0' class='gform-field-label gform-field-label--type-inline'>Extremely valuable</label> </div> <div class='gchoice gchoice_129_4_1'> <input class='gfield-choice-input' name='input_4' type='radio' value='Moderately valuable' id='choice_129_4_1' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_4_1' id='label_129_4_1' class='gform-field-label gform-field-label--type-inline'>Moderately valuable</label> </div> <div class='gchoice gchoice_129_4_2'> <input class='gfield-choice-input' name='input_4' type='radio' value='Somewhat valuable' id='choice_129_4_2' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_4_2' id='label_129_4_2' class='gform-field-label gform-field-label--type-inline'>Somewhat valuable</label> </div> <div class='gchoice gchoice_129_4_3'> <input class='gfield-choice-input' name='input_4' type='radio' value='Slightly valuable' id='choice_129_4_3' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_4_3' id='label_129_4_3' class='gform-field-label gform-field-label--type-inline'>Slightly valuable</label> </div> <div class='gchoice gchoice_129_4_4'> <input class='gfield-choice-input' name='input_4' type='radio' value='Not valuable' id='choice_129_4_4' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_4_4' id='label_129_4_4' class='gform-field-label gform-field-label--type-inline'>Not valuable</label> </div></div></div></fieldset></div> </div> <div class='gform-page-footer gform_page_footer top_label'> <input type='button' id='gform_previous_button_129_14' class='gform_previous_button gform-theme-button gform-theme-button--secondary button' onclick='gform.submission.handleButtonClick(this);' value='Previous' /> <input type='button' id='gform_next_button_129_14' class='gform_next_button gform-theme-button button' onclick='gform.submission.handleButtonClick(this);' value='Next' /> </div> </div> <div id='gform_page_129_3' class='gform_page' data-js='page-field-id-14' style='display:none;'> <div class='gform_page_fields'> <div id='gform_fields_129_3' class='gform_fields top_label form_sublabel_below description_below validation_below'><fieldset id="field_129_5" class="gfield gfield--type-poll gfield--type-choice gfield--input-type-radio gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible gpoll_field" data-field-class="gpoll_field" data-js-reload="field_129_5" ><legend class='gfield_label gform-field-label' >How do you most typically address potential system issues BEFORE they impact your operations?<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></legend><div class='ginput_container ginput_container_radio'><div class='gfield_radio' id='input_129_5'> <div class='gchoice gchoice_129_5_0'> <input class='gfield-choice-input' name='input_5' type='radio' value='Automated workflows and playbooks to remediate potential issues as soon as' id='choice_129_5_0' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_5_0' id='label_129_5_0' class='gform-field-label gform-field-label--type-inline'>Automated workflows and playbooks to remediate potential issues as soon as they are detected</label> </div> <div class='gchoice gchoice_129_5_1'> <input class='gfield-choice-input' name='input_5' type='radio' value='An orchestrated response process that leverages automation, AI, and human' id='choice_129_5_1' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_5_1' id='label_129_5_1' class='gform-field-label gform-field-label--type-inline'>An orchestrated response process that leverages automation, AI, and human expertise to rapidly respond to potential issues</label> </div> <div class='gchoice gchoice_129_5_2'> <input class='gfield-choice-input' name='input_5' type='radio' value='Advanced monitoring tools such as predictive analytics and anomaly detection to' id='choice_129_5_2' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_5_2' id='label_129_5_2' class='gform-field-label gform-field-label--type-inline'>Advanced monitoring tools such as predictive analytics and anomaly detection to proactively identify and address potential issues</label> </div> <div class='gchoice gchoice_129_5_3'> <input class='gfield-choice-input' name='input_5' type='radio' value='Respond to issues as they arise, using manual processes and troubleshooting' id='choice_129_5_3' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_5_3' id='label_129_5_3' class='gform-field-label gform-field-label--type-inline'>Respond to issues as they arise, using manual processes and troubleshooting techniques</label> </div> <div class='gchoice gchoice_129_5_4'> <input class='gfield-choice-input' name='input_5' type='radio' value='A combination of automated remediation, orchestrated response, and/or' id='choice_129_5_4' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_5_4' id='label_129_5_4' class='gform-field-label gform-field-label--type-inline'>A combination of automated remediation, orchestrated response, and/or proactive monitoring to address potential system issues</label> </div> <div class='gchoice gchoice_129_5_5'> <input class='gfield-choice-input' name='input_5' type='radio' value='Don’t know' id='choice_129_5_5' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_5_5' id='label_129_5_5' class='gform-field-label gform-field-label--type-inline'>Don’t know</label> </div> <div class='gchoice gchoice_129_5_6'> <input class='gfield-choice-input' name='input_5' type='radio' value='gf_other_choice' id='choice_129_5_6' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_5_6' id='label_129_5_6' class='gform-field-label gform-field-label--type-inline'>Other</label><br /><input id='input_129_5_other' class='gchoice_other_control' name='input_5_other' type='text' value='Other' aria-label='Other Choice, please specify' disabled='disabled' /> </div></div></div></fieldset></div> </div> <div class='gform-page-footer gform_page_footer top_label'> <input type='button' id='gform_previous_button_129_13' class='gform_previous_button gform-theme-button gform-theme-button--secondary button' onclick='gform.submission.handleButtonClick(this);' value='Previous' /> <input type='button' id='gform_next_button_129_13' class='gform_next_button gform-theme-button button' onclick='gform.submission.handleButtonClick(this);' value='Next' /> </div> </div> <div id='gform_page_129_4' class='gform_page' data-js='page-field-id-13' style='display:none;'> <div class='gform_page_fields'> <div id='gform_fields_129_4' class='gform_fields top_label form_sublabel_below description_below validation_below'><fieldset id="field_129_6" class="gfield gfield--type-poll gfield--type-choice gfield--input-type-checkbox gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible gpoll_field" data-field-class="gpoll_field" data-js-reload="field_129_6" ><legend class='gfield_label gform-field-label gfield_label_before_complex' >What methods does your organization use to control and monitor cloud/IT spending?<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></legend><div class='ginput_container ginput_container_checkbox'><div class='gfield_checkbox ' id='input_129_6'><div class='gchoice gchoice_129_6_1'> <input class='gfield-choice-input' name='input_6.1' type='checkbox' value='Centralized procurement processes' id='choice_129_6_1' /> <label for='choice_129_6_1' id='label_129_6_1' class='gform-field-label gform-field-label--type-inline'>Centralized procurement processes</label> </div><div class='gchoice gchoice_129_6_2'> <input class='gfield-choice-input' name='input_6.2' type='checkbox' value='Pre-approved budget thresholds' id='choice_129_6_2' /> <label for='choice_129_6_2' id='label_129_6_2' class='gform-field-label gform-field-label--type-inline'>Pre-approved budget thresholds</label> </div><div class='gchoice gchoice_129_6_3'> <input class='gfield-choice-input' name='input_6.3' type='checkbox' value='Automated cost monitoring tools' id='choice_129_6_3' /> <label for='choice_129_6_3' id='label_129_6_3' class='gform-field-label gform-field-label--type-inline'>Automated cost monitoring tools</label> </div><div class='gchoice gchoice_129_6_4'> <input class='gfield-choice-input' name='input_6.4' type='checkbox' value='Department-level spending controls' id='choice_129_6_4' /> <label for='choice_129_6_4' id='label_129_6_4' class='gform-field-label gform-field-label--type-inline'>Department-level spending controls</label> </div><div class='gchoice gchoice_129_6_5'> <input class='gfield-choice-input' name='input_6.5' type='checkbox' value='Regular cost audits and reviews' id='choice_129_6_5' /> <label for='choice_129_6_5' id='label_129_6_5' class='gform-field-label gform-field-label--type-inline'>Regular cost audits and reviews</label> </div><div class='gchoice gchoice_129_6_6'> <input class='gfield-choice-input' name='input_6.6' type='checkbox' value='Cloud cost optimization platform' id='choice_129_6_6' /> <label for='choice_129_6_6' id='label_129_6_6' class='gform-field-label gform-field-label--type-inline'>Cloud cost optimization platform</label> </div><div class='gchoice gchoice_129_6_7'> <input class='gfield-choice-input' name='input_6.7' type='checkbox' value='Approval workflows for resource provisioning' id='choice_129_6_7' /> <label for='choice_129_6_7' id='label_129_6_7' class='gform-field-label gform-field-label--type-inline'>Approval workflows for resource provisioning</label> </div><div class='gchoice gchoice_129_6_8'> <input class='gfield-choice-input' name='input_6.8' type='checkbox' value='Native financial operations tools provided by the cloud provider' id='choice_129_6_8' /> <label for='choice_129_6_8' id='label_129_6_8' class='gform-field-label gform-field-label--type-inline'>Native financial operations tools provided by the cloud provider</label> </div><div class='gchoice gchoice_129_6_9'> <input class='gfield-choice-input' name='input_6.9' type='checkbox' value='No formal controls in place' id='choice_129_6_9' /> <label for='choice_129_6_9' id='label_129_6_9' class='gform-field-label gform-field-label--type-inline'>No formal controls in place</label> </div><div class='gchoice gchoice_129_6_11'> <input class='gfield-choice-input' name='input_6.11' type='checkbox' value='Don’t know' id='choice_129_6_11' /> <label for='choice_129_6_11' id='label_129_6_11' class='gform-field-label gform-field-label--type-inline'>Don’t know</label> </div><div class='gchoice gchoice_129_6_12'> <input class='gfield-choice-input' name='input_6.12' type='checkbox' value='gpoll6e0ce7ffa' id='choice_129_6_12' /> <label for='choice_129_6_12' id='label_129_6_12' class='gform-field-label gform-field-label--type-inline'>Other</label> </div></div></div></fieldset><div id="field_129_15" class="gfield gfield--type-text gfield--input-type-text gfield--width-full field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" data-js-reload="field_129_15" ><label class='gfield_label gform-field-label' for='input_129_15'>Please specify:</label><div class='ginput_container ginput_container_text'><input name='input_15' id='input_129_15' type='text' value='' class='large' aria-invalid="false" /></div></div></div> </div> <div class='gform-page-footer gform_page_footer top_label'> <input type='button' id='gform_previous_button_129_12' class='gform_previous_button gform-theme-button gform-theme-button--secondary button' onclick='gform.submission.handleButtonClick(this);' value='Previous' /> <input type='button' id='gform_next_button_129_12' class='gform_next_button gform-theme-button button' onclick='gform.submission.handleButtonClick(this);' value='Next' /> </div> </div> <div id='gform_page_129_5' class='gform_page' data-js='page-field-id-12' style='display:none;'> <div class='gform_page_fields'> <div id='gform_fields_129_5' class='gform_fields top_label form_sublabel_below description_below validation_below'><fieldset id="field_129_7" class="gfield gfield--type-poll gfield--type-choice gfield--input-type-checkbox gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible gpoll_field" data-field-class="gpoll_field" data-js-reload="field_129_7" ><legend class='gfield_label gform-field-label gfield_label_before_complex' >Which methods do you rely on most to detect security vulnerabilities in your systems?<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></legend><div class='ginput_container ginput_container_checkbox'><div class='gfield_checkbox ' id='input_129_7'><div class='gchoice gchoice_129_7_1'> <input class='gfield-choice-input' name='input_7.1' type='checkbox' value='Automated scanning tools' id='choice_129_7_1' /> <label for='choice_129_7_1' id='label_129_7_1' class='gform-field-label gform-field-label--type-inline'>Automated scanning tools</label> </div><div class='gchoice gchoice_129_7_2'> <input class='gfield-choice-input' name='input_7.2' type='checkbox' value='Manual assessments' id='choice_129_7_2' /> <label for='choice_129_7_2' id='label_129_7_2' class='gform-field-label gform-field-label--type-inline'>Manual assessments</label> </div><div class='gchoice gchoice_129_7_3'> <input class='gfield-choice-input' name='input_7.3' type='checkbox' value='Vendor notifications' id='choice_129_7_3' /> <label for='choice_129_7_3' id='label_129_7_3' class='gform-field-label gform-field-label--type-inline'>Vendor notifications</label> </div><div class='gchoice gchoice_129_7_4'> <input class='gfield-choice-input' name='input_7.4' type='checkbox' value='Threat modeling (for early detection)' id='choice_129_7_4' /> <label for='choice_129_7_4' id='label_129_7_4' class='gform-field-label gform-field-label--type-inline'>Threat modeling (for early detection)</label> </div><div class='gchoice gchoice_129_7_5'> <input class='gfield-choice-input' name='input_7.5' type='checkbox' value='None of these' id='choice_129_7_5' /> <label for='choice_129_7_5' id='label_129_7_5' class='gform-field-label gform-field-label--type-inline'>None of these</label> </div><div class='gchoice gchoice_129_7_6'> <input class='gfield-choice-input' name='input_7.6' type='checkbox' value='Don’t know' id='choice_129_7_6' /> <label for='choice_129_7_6' id='label_129_7_6' class='gform-field-label gform-field-label--type-inline'>Don’t know</label> </div><div class='gchoice gchoice_129_7_7'> <input class='gfield-choice-input' name='input_7.7' type='checkbox' value='gpoll7b91b057d' id='choice_129_7_7' /> <label for='choice_129_7_7' id='label_129_7_7' class='gform-field-label gform-field-label--type-inline'>Other</label> </div></div></div></fieldset><div id="field_129_16" class="gfield gfield--type-text gfield--input-type-text gfield--width-full field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" data-js-reload="field_129_16" ><label class='gfield_label gform-field-label' for='input_129_16'>Please specify:</label><div class='ginput_container ginput_container_text'><input name='input_16' id='input_129_16' type='text' value='' class='large' aria-invalid="false" /></div></div></div> </div> <div class='gform-page-footer gform_page_footer top_label'> <input type='button' id='gform_previous_button_129_11' class='gform_previous_button gform-theme-button gform-theme-button--secondary button' onclick='gform.submission.handleButtonClick(this);' value='Previous' /> <input type='button' id='gform_next_button_129_11' class='gform_next_button gform-theme-button button' onclick='gform.submission.handleButtonClick(this);' value='Next' /> </div> </div> <div id='gform_page_129_6' class='gform_page' data-js='page-field-id-11' style='display:none;'> <div class='gform_page_fields'> <div id='gform_fields_129_6' class='gform_fields top_label form_sublabel_below description_below validation_below'><fieldset id="field_129_8" class="gfield gfield--type-poll gfield--type-choice gfield--input-type-checkbox gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible gpoll_field" data-field-class="gpoll_field" data-js-reload="field_129_8" ><legend class='gfield_label gform-field-label gfield_label_before_complex' >What are the TWO most common ways you prioritize vulnerabilities to address within your environment?<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></legend><div class='ginput_container ginput_container_checkbox'><div class='gfield_checkbox ' id='input_129_8'><div class='gchoice gchoice_129_8_1'> <input class='gfield-choice-input' name='input_8.1' type='checkbox' value='Based on potential impact' id='choice_129_8_1' /> <label for='choice_129_8_1' id='label_129_8_1' class='gform-field-label gform-field-label--type-inline'>Based on potential impact</label> </div><div class='gchoice gchoice_129_8_2'> <input class='gfield-choice-input' name='input_8.2' type='checkbox' value='Based on exploitability' id='choice_129_8_2' /> <label for='choice_129_8_2' id='label_129_8_2' class='gform-field-label gform-field-label--type-inline'>Based on exploitability</label> </div><div class='gchoice gchoice_129_8_3'> <input class='gfield-choice-input' name='input_8.3' type='checkbox' value='Regulatory compliance requirements' id='choice_129_8_3' /> <label for='choice_129_8_3' id='label_129_8_3' class='gform-field-label gform-field-label--type-inline'>Regulatory compliance requirements</label> </div><div class='gchoice gchoice_129_8_4'> <input class='gfield-choice-input' name='input_8.4' type='checkbox' value='Based on CVSS scores' id='choice_129_8_4' /> <label for='choice_129_8_4' id='label_129_8_4' class='gform-field-label gform-field-label--type-inline'>Based on CVSS scores</label> </div><div class='gchoice gchoice_129_8_5'> <input class='gfield-choice-input' name='input_8.5' type='checkbox' value='Risk-based analysis of multiple factors' id='choice_129_8_5' /> <label for='choice_129_8_5' id='label_129_8_5' class='gform-field-label gform-field-label--type-inline'>Risk-based analysis of multiple factors</label> </div><div class='gchoice gchoice_129_8_6'> <input class='gfield-choice-input' name='input_8.6' type='checkbox' value='First-in-first-out approach' id='choice_129_8_6' /> <label for='choice_129_8_6' id='label_129_8_6' class='gform-field-label gform-field-label--type-inline'>First-in-first-out approach</label> </div><div class='gchoice gchoice_129_8_7'> <input class='gfield-choice-input' name='input_8.7' type='checkbox' value='No formal prioritization process' id='choice_129_8_7' /> <label for='choice_129_8_7' id='label_129_8_7' class='gform-field-label gform-field-label--type-inline'>No formal prioritization process</label> </div><div class='gchoice gchoice_129_8_8'> <input class='gfield-choice-input' name='input_8.8' type='checkbox' value='Don’t know' id='choice_129_8_8' /> <label for='choice_129_8_8' id='label_129_8_8' class='gform-field-label gform-field-label--type-inline'>Don’t know</label> </div></div></div></fieldset></div> </div> <div class='gform-page-footer gform_page_footer top_label'> <input type='button' id='gform_previous_button_129_10' class='gform_previous_button gform-theme-button gform-theme-button--secondary button' onclick='gform.submission.handleButtonClick(this);' value='Previous' /> <input type='button' id='gform_next_button_129_10' class='gform_next_button gform-theme-button button' onclick='gform.submission.handleButtonClick(this);' value='Next' /> </div> </div> <div id='gform_page_129_7' class='gform_page' data-js='page-field-id-10' style='display:none;'> <div class='gform_page_fields'> <div id='gform_fields_129_7' class='gform_fields top_label form_sublabel_below description_below validation_below'><fieldset id="field_129_9" class="gfield gfield--type-poll gfield--type-choice gfield--input-type-radio gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible gpoll_field" data-field-class="gpoll_field" data-js-reload="field_129_9" ><legend class='gfield_label gform-field-label' >How do you typically handle system updates and security patches?<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></legend><div class='ginput_container ginput_container_radio'><div class='gfield_radio' id='input_129_9'> <div class='gchoice gchoice_129_9_0'> <input class='gfield-choice-input' name='input_9' type='radio' value='Automated updates and patches' id='choice_129_9_0' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_9_0' id='label_129_9_0' class='gform-field-label gform-field-label--type-inline'>Automated updates and patches</label> </div> <div class='gchoice gchoice_129_9_1'> <input class='gfield-choice-input' name='input_9' type='radio' value='Manually review and apply updates and patches on a regular schedule' id='choice_129_9_1' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_9_1' id='label_129_9_1' class='gform-field-label gform-field-label--type-inline'>Manually review and apply updates and patches on a regular schedule</label> </div> <div class='gchoice gchoice_129_9_2'> <input class='gfield-choice-input' name='input_9' type='radio' value='A combination of automation and manual review' id='choice_129_9_2' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_9_2' id='label_129_9_2' class='gform-field-label gform-field-label--type-inline'>A combination of automation and manual review</label> </div> <div class='gchoice gchoice_129_9_3'> <input class='gfield-choice-input' name='input_9' type='radio' value='Apply updates and patches on an as-needed basis.' id='choice_129_9_3' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_9_3' id='label_129_9_3' class='gform-field-label gform-field-label--type-inline'>Apply updates and patches on an as-needed basis.</label> </div> <div class='gchoice gchoice_129_9_4'> <input class='gfield-choice-input' name='input_9' type='radio' value='Outsourced update and patch management' id='choice_129_9_4' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_9_4' id='label_129_9_4' class='gform-field-label gform-field-label--type-inline'>Outsourced update and patch management</label> </div> <div class='gchoice gchoice_129_9_5'> <input class='gfield-choice-input' name='input_9' type='radio' value='No defined process' id='choice_129_9_5' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_9_5' id='label_129_9_5' class='gform-field-label gform-field-label--type-inline'>No defined process</label> </div> <div class='gchoice gchoice_129_9_6'> <input class='gfield-choice-input' name='input_9' type='radio' value='Don’t know' id='choice_129_9_6' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_9_6' id='label_129_9_6' class='gform-field-label gform-field-label--type-inline'>Don’t know</label> </div> <div class='gchoice gchoice_129_9_7'> <input class='gfield-choice-input' name='input_9' type='radio' value='gf_other_choice' id='choice_129_9_7' onchange='gformToggleRadioOther( this )' /> <label for='choice_129_9_7' id='label_129_9_7' class='gform-field-label gform-field-label--type-inline'>Other</label><br /><input id='input_129_9_other' class='gchoice_other_control' name='input_9_other' type='text' value='Other' aria-label='Other Choice, please specify' disabled='disabled' /> </div></div></div></fieldset></div></div> <div class='gform-page-footer gform_page_footer top_label'><input type='submit' id='gform_previous_button_129' class='gform_previous_button gform-theme-button gform-theme-button--secondary button' onclick='gform.submission.handleButtonClick(this);' value='Previous' /> <input type='submit' id='gform_submit_button_129' class='gform_button button' onclick='gform.submission.handleButtonClick(this);' value='Submit' /> <input type='hidden' name='gform_ajax' value='form_id=129&amp;title=&amp;description=1&amp;tabindex=0&amp;theme=gravity-theme' /> <input type='hidden' class='gform_hidden' name='gform_submission_method' data-js='gform_submission_method_129' value='iframe' /> <input type='hidden' class='gform_hidden' name='gform_theme' data-js='gform_theme_129' id='gform_theme_129' value='gravity-theme' /> <input type='hidden' class='gform_hidden' name='gform_style_settings' data-js='gform_style_settings_129' id='gform_style_settings_129' value='' /> <input type='hidden' class='gform_hidden' name='is_submit_129' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='129' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_129' value='WyJ7XCI2LjFcIjpcIjQ4MmQ4ZDQyNmFjYTc5ZmZlNmYyMWE3YmI5NWE2OWIzXCIsXCI2LjJcIjpcImZjMzg1NThiNmJiOGZkZGIwMWZhNTExNDcyYWViM2FmXCIsXCI2LjNcIjpcImYzYTcyNjk5ZDY0ZDZmYjFkMWJlOWExNzU5MWRiNDU1XCIsXCI2LjRcIjpcIjdmZDRkNjkzMmFiZjMyZDhiOGMwMTQzZjVkMTMxNzUxXCIsXCI2LjVcIjpcIjk4MTgwMjczYjA0NjNhNDM0NGNkZjE4YTc4ZDYxYjdmXCIsXCI2LjZcIjpcIjcxMjM2YmVlMjE3NmMwMWE4NDIzOTEzOGU2MzJmMmI1XCIsXCI2LjdcIjpcIjcwOTgxZjVkMWUxMjYzNjhkZDAyZjk5ZTc2ZjdkNWVhXCIsXCI2LjhcIjpcImZjOGMxOTdjMWMzZDMyNTI2MTZlMjQwNzc5NzMxYzhmXCIsXCI2LjlcIjpcImM3NDJmMjUwYWFhNGI2M2MxMGFmYWE5ZTE1ZjFkM2NmXCIsXCI2LjExXCI6XCI3YjQ1YTE5ZDE2NWNiN2U0MTA1Y2QxM2EzMmQzYmI4NlwiLFwiNi4xMlwiOlwiZGU0NmFkZjZjNzUxMDdhYWM2MzFiMWMyZjRiMGRiMTlcIixcIjcuMVwiOlwiZjE3ZjNkOGI0NjZhYzFiN2RkNmI3ZTM1ZDMwMjUyYTlcIixcIjcuMlwiOlwiMDJkM2Y2NDRhNGVhYTM0ZmNmZWU3ZDZmMzI0MTcyNWFcIixcIjcuM1wiOlwiYWI5MWNmYWRhOTJiNTExMzZhNWMzNGQ4NzAwMDExNzNcIixcIjcuNFwiOlwiOWIxMDVkYjc4MzkzOTNkYTI0OGVlMTlkMGYzOGRjZjZcIixcIjcuNVwiOlwiMDIyMzcwYjM1MzJhZjdmY2UyZWM2N2NjODZjOGQ0MzNcIixcIjcuNlwiOlwiN2I0NWExOWQxNjVjYjdlNDEwNWNkMTNhMzJkM2JiODZcIixcIjcuN1wiOlwiMWEzOWUyMjg1OGRjMmFhODZhYmFhN2IxYzk3ZWU0MTJcIixcIjguMVwiOlwiODgyZWYyMjE4MTM0ZGJiYmNlY2Y3ZjJkZmNmYjllYjdcIixcIjguMlwiOlwiMjc5OGZjMzNmZWQ4NWJjOWIyN2VmYTMwMWIzZTgyODZcIixcIjguM1wiOlwiZDdlYmNiZjM3YmYwMGM5MzEyMWI0OTc2OTA5ZWJlZWFcIixcIjguNFwiOlwiYWI2ZjVhYWJhNGQ1NGNlNDlmYzgwZTk2MzY3NjMwMWZcIixcIjguNVwiOlwiNjA1MWViMzFjMGQ1ODE5ZDcxOGQ4MWNmMTdlZTZkNzNcIixcIjguNlwiOlwiMDIxNGNlZGFmOTk4YzM0YTU3NmE3NjVhYjc5MTk5NGFcIixcIjguN1wiOlwiNWQzMzlkNTQwOWE5YzdkMWY5MjhmYzhjMTY0ZTNlYzhcIixcIjguOFwiOlwiN2I0NWExOWQxNjVjYjdlNDEwNWNkMTNhMzJkM2JiODZcIn0iLCJmZWY3MzNiODBkY2VkMDdjM2M4NWVkZTFmYWQ3NmEwYSJd' /> <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_target_page_number_129' id='gform_target_page_number_129' value='2' /> <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_source_page_number_129' id='gform_source_page_number_129' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </div></div> <p style="display: none !important;" class="akismet-fields-container" data-prefix="ak_"><label>&#916;<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js" value="172"/><script>document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() );</script></p><div class='code-block code-block-16' style='margin: 8px 0; clear: both;'> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2091799172090865" crossorigin="anonymous"></script> <!-- In Article 1 --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-2091799172090865" data-ad-slot="8234055494" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script></div> </form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_129' id='gform_ajax_frame_129' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe> <script type="text/javascript"> /* <![CDATA[ */ gform.initializeOnLoaded( function() {gformInitSpinner( 129, 'https://devops.com/wp-content/plugins/gravityforms/images/spinner.svg', true );jQuery('#gform_ajax_frame_129').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_129');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_129').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){form_content.find('form').css('opacity', 0);jQuery('#gform_wrapper_129').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_129').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_129').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_129').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_129').val();gformInitSpinner( 129, 'https://devops.com/wp-content/plugins/gravityforms/images/spinner.svg', true );jQuery(document).trigger('gform_page_loaded', [129, current_page]);window['gf_submitting_129'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}jQuery('#gform_wrapper_129').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_129').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [129]);window['gf_submitting_129'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_129').text());}else{jQuery('#gform_129').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger("gform_pre_post_render", [{ formId: "129", currentPage: "current_page", abort: function() { this.preventDefault(); } }]); if (event && event.defaultPrevented) { return; } const gformWrapperDiv = document.getElementById( "gform_wrapper_129" ); if ( gformWrapperDiv ) { const visibilitySpan = document.createElement( "span" ); visibilitySpan.id = "gform_visibility_test_129"; gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan ); } const visibilityTestDiv = document.getElementById( "gform_visibility_test_129" ); let postRenderFired = false; function triggerPostRender() { if ( postRenderFired ) { return; } postRenderFired = true; jQuery( document ).trigger( 'gform_post_render', [129, current_page] ); gform.utils.trigger( { event: 'gform/postRender', native: false, data: { formId: 129, currentPage: current_page } } ); gform.utils.trigger( { event: 'gform/post_render', native: false, data: { formId: 129, currentPage: current_page } } ); if ( visibilityTestDiv ) { visibilityTestDiv.parentNode.removeChild( visibilityTestDiv ); } } function debounce( func, wait, immediate ) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if ( !immediate ) func.apply( context, args ); }; var callNow = immediate && !timeout; clearTimeout( timeout ); timeout = setTimeout( later, wait ); if ( callNow ) func.apply( context, args ); }; } const debouncedTriggerPostRender = debounce( function() { triggerPostRender(); }, 200 ); if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) { const observer = new MutationObserver( ( mutations ) => { mutations.forEach( ( mutation ) => { if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) { debouncedTriggerPostRender(); observer.disconnect(); } }); }); observer.observe( document.body, { attributes: true, childList: false, subtree: true, attributeFilter: [ 'style', 'class' ], }); } else { triggerPostRender(); } } );} ); /* ]]&gt; */ </script> </p> </div> </div> <div class="clear-custom-ad"></div> </div></div> <p class="p1">Inigo started its investigation by searching the MITRA CVE database for the term “GraphQL,” revealing 45 CVE records (at the time of the research) relevant to GraphQL clients, servers, and other components. Interestingly, the first tracked GraphQL vulnerability was CVE-2019-1000011 from 2019: Most likely not the first vulnerability ever discovered in GraphQL software, but the oldest available in this database.</p><p class="p1">Researchers were curious to know which classes of GraphQL vulnerabilities were most common, and which GraphQL software has the most known CVEs. The following chart displays the results of the analysis answering the first question.</p><p class="p5"><span class="Apple-converted-space"> <img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-157150" src="https://devops.com/wp-content/uploads/2022/12/Screen-Shot-2022-12-01-at-7.11.19-AM.png" alt="" width="637" height="408" srcset="https://devops.com/wp-content/uploads/2022/12/Screen-Shot-2022-12-01-at-7.11.19-AM.png 637w, https://devops.com/wp-content/uploads/2022/12/Screen-Shot-2022-12-01-at-7.11.19-AM-203x130.png 203w, https://devops.com/wp-content/uploads/2022/12/Screen-Shot-2022-12-01-at-7.11.19-AM-240x154.png 240w, https://devops.com/wp-content/uploads/2022/12/Screen-Shot-2022-12-01-at-7.11.19-AM-397x254.png 397w" sizes="(max-width: 637px) 100vw, 637px" /><div class='code-block code-block-13 ai-track' data-ai='WzEzLCIiLCJCbG9jayAxMyIsIiIsMV0=' style='margin: 8px 0; clear: both;'> <style> .ai-rotate {position: relative;} .ai-rotate-hidden {visibility: hidden;} .ai-rotate-hidden-2 {position: absolute; top: 0; left: 0; width: 100%; height: 100%;} .ai-list-data, .ai-ip-data, .ai-filter-check, .ai-fallback, .ai-list-block, .ai-list-block-ip, .ai-list-block-filter {visibility: hidden; position: absolute; width: 50%; height: 1px; top: -1000px; z-index: -9999; margin: 0px!important;} .ai-list-data, .ai-ip-data, .ai-filter-check, .ai-fallback {min-width: 1px;} </style> <div class='ai-rotate ai-unprocessed ai-timed-rotation ai-13-1' data-info='WyIxMy0xIiwyXQ==' style='position: relative;'> <div class='ai-rotate-option' style='visibility: hidden;' data-index="1" data-name="VGVjaHN0cm9uZyBHYW5nIFlvdXR1YmU=" data-time="MTA="> <div class="custom-ad"> <div style="margin: auto; text-align: center;"><a href="https://youtu.be/Fojn5NFwaw8" target="_blank"><img src="https://securityboulevard.com/wp-content/uploads/2024/12/Techstrong-Gang-Youtube-PodcastV2-770.png" alt="Techstrong Gang Youtube"></a></div> <div class="clear-custom-ad"></div> </div></div> <div class='ai-rotate-option' style='visibility: hidden; position: absolute; top: 0; left: 0; width: 100%; height: 100%;' data-index="2" data-name="UHJlZGljdCAyMDI1" data-time="MTA="> <div class="custom-ad"> <div style="margin: auto; text-align: center;"><a href="https://www.techstrongevents.com/predict-2025/home" target="_blank"><img src="https://cloudnativenow.com/wp-content/uploads/2024/11/Banner-770x330-social-3.png" alt="Predict 2025"></a></div> <div class="clear-custom-ad"></div> </div></div> </div> </div> </span></p><p class="p1">Authorization bypass vulnerabilities are far and away the most common vulnerability class, and a majority representing 54.8% of all GraphQL vulnerabilities. At 16.7%, denial-of-service (DoS) vulnerabilities stand out as the second most common vulnerability class, followed by information disclosure (9.5%), code execution (7.1%), cross-site request forgery (CSRF) (7.1%) and injection (4.8%).</p><p class="p1">Analysis into which GraphQL software has the most CVEs revealed the following:</p><p class="p5"><span class="Apple-converted-space"> <img decoding="async" class="alignnone size-full wp-image-157151" src="https://devops.com/wp-content/uploads/2022/12/Screen-Shot-2022-12-01-at-7.11.54-AM.png" alt="" width="636" height="362" srcset="https://devops.com/wp-content/uploads/2022/12/Screen-Shot-2022-12-01-at-7.11.54-AM.png 636w, https://devops.com/wp-content/uploads/2022/12/Screen-Shot-2022-12-01-at-7.11.54-AM-228x130.png 228w, https://devops.com/wp-content/uploads/2022/12/Screen-Shot-2022-12-01-at-7.11.54-AM-271x154.png 271w, https://devops.com/wp-content/uploads/2022/12/Screen-Shot-2022-12-01-at-7.11.54-AM-400x228.png 400w" sizes="(max-width: 636px) 100vw, 636px" /></span></p><p class="p1">To be clear, these findings don’t necessarily speak to how hardened or how safe a particular GraphQL component is. Popular GraphQL servers simply draw more attention and have more eyeballs searching for vulnerabilities, whether they belong to attackers or security personnel. While this fact skews these results, viewing this data at a glance remains interesting.</p><h2 class="p3">Analysis and Findings From the HackerOne Vulnerability Database</h2><p class="p1">The HackerOne Hacktivity portal offers a robust database resource that collects information on vulnerabilities as reported by researchers. The analysis looked at public reports of GraphQL vulnerabilities, finding 74 results since 2018.</p><p class="p5"><span class="Apple-converted-space"> <img decoding="async" class="alignnone size-full wp-image-157152" src="https://devops.com/wp-content/uploads/2022/12/Screen-Shot-2022-12-01-at-7.12.19-AM.png" alt="" width="647" height="424" srcset="https://devops.com/wp-content/uploads/2022/12/Screen-Shot-2022-12-01-at-7.12.19-AM.png 647w, https://devops.com/wp-content/uploads/2022/12/Screen-Shot-2022-12-01-at-7.12.19-AM-198x130.png 198w, https://devops.com/wp-content/uploads/2022/12/Screen-Shot-2022-12-01-at-7.12.19-AM-235x154.png 235w, https://devops.com/wp-content/uploads/2022/12/Screen-Shot-2022-12-01-at-7.12.19-AM-388x254.png 388w" sizes="(max-width: 647px) 100vw, 647px" /></span></p><p class="p1">As the graph shows, identified GraphQL vulnerabilities fell mostly into the authorization class (87%), with DoS (7%) a far second and race condition and session management vulnerabilities each coming in at 2.8%.</p><p class="p1">Bug bounties offer an interesting and likely influential factor here. Over the 2018-2022 timeframe, bug bounties granted for these vulnerabilities ranged from $250 to more than $20,000. At the same time, authorization vulnerabilities carry a high risk to sensitive data such as personally identifiable information (PII). This drives organizations to place premium bounties on these authorization flaws and motivates security researchers to focus on earning those prizes. Therefore, white-hat hackers will naturally test for authorization flaws first, perhaps leading to their overrepresentation in the data. It’s also important to note that bug bounty programs tend to prohibit testing for DoS vulnerabilities for obvious reasons, possibly reducing their representation here.</p><h3 class="p3">Open-Eyed GraphQL Security</h3><p class="p1">For developers, DevOps and security teams tasked with safeguarding GraphQL deployments, the first step is knowing what you’re up against. The findings above should serve as an eye-opener that helps teams to prioritize threats, whether they be authorization, DoS and other classes of GraphQL vulnerabilities. As more and more organizations rush into GraphQL (increasingly migrating from REST APIs), security cannot be put on the back burner. There’s too much at stake, and ensuring the security of GraphQL deployments isn’t nearly as difficult or time-consuming as many teams currently think.</p><div class="spu-placeholder" style="display:none"></div><!-- CONTENT END 1 --> <!--<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"> <rdf:Description rdf:about="https://devops.com/graphql-vulnerability-analysis-the-top-threats/" dc:identifier="https://devops.com/graphql-vulnerability-analysis-the-top-threats/" dc:title="GraphQL Vulnerability Analysis: The Top Threats" trackback:ping="https://devops.com/graphql-vulnerability-analysis-the-top-threats/trackback/" /> </rdf:RDF>--> </div><footer class="entry-footer"><p class="entry-meta"><span class="entry-categories">Filed Under: <a href="https://devops.com/category/blogs/" rel="category tag">Blogs</a>, <a href="https://devops.com/category/blogs/data-ops/" rel="category tag">DataOps</a>, <a href="https://devops.com/category/blogs/devops-open-technologies/" rel="category tag">DevOps and Open Technologies</a>, <a href="https://devops.com/category/blogs/devops-practice/" rel="category tag">DevOps Practice</a>, <a href="https://devops.com/category/blogs/devops-toolbox/" rel="category tag">DevOps Toolbox</a></span> <span class="entry-tags">Tagged With: <a href="https://devops.com/tag/code-vulnerabilities/" rel="tag">code vulnerabilities</a>, <a href="https://devops.com/tag/graphql/" rel="tag">GraphQL</a>, <a href="https://devops.com/tag/mitre/" rel="tag">MITRE</a>, <a href="https://devops.com/tag/secure-code/" rel="tag">secure code</a></span></p></footer></article><div class="after-entry widget-area"><section id="text-84" class="widget widget_text"><div class="widget-wrap"> <div class="textwidget"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2091799172090865" crossorigin="anonymous"></script> <!-- Bottom Of Post Pages --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-2091799172090865" data-ad-slot="9521935058" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script></div> </div></section> </div><div class="adjacent-entry-pagination pagination"><div class="pagination-previous alignleft"><a href="https://devops.com/key-findings-from-the-2022-state-of-graphql-report/" rel="prev">&#x000AB; Key Findings From the 2022 State of GraphQL Report</a></div><div class="pagination-next alignright"><a href="https://devops.com/nobl9-adds-free-tier-to-saas-platform-for-managing-slos/" rel="next">Nobl9 Adds Free Tier to SaaS Platform for Managing SLOs &#x000BB;</a></div></div> <div id="disqus_thread"></div> </main><aside class="sidebar sidebar-primary widget-area" role="complementary" aria-label="Primary Sidebar" itemscope itemtype="https://schema.org/WPSideBar"><section id="custom_html-55" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><h4 class="widget-title widgettitle">Techstrong TV</h4> <div class="textwidget custom-html-widget"><div style="padding:56.25% 0 0 0;position:relative;"><iframe src="https://vimeo.com/event/4046309/embed?muted=1" frameborder="0" allow="autoplay; fullscreen" allowfullscreen style="position:absolute;top:0;left:0;width:100%;height:100%;"></iframe></div><div style="font-style:italic;font-size: 12px;text-align:center;">Click full-screen to enable volume control</div> <center><a href="https://techstrong.tv/">Watch latest episodes and shows</a> </center></div></div></section> <section id="custom_html-88" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><h4 class="widget-title widgettitle">Qlik Tech Field Day Showcase</h4> <div class="textwidget custom-html-widget"><div style="padding:56.25% 0 0 0;position:relative;"><iframe src="https://vimeo.com/event/4565377/embed/interaction" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen style="position:absolute;top:0;left:0;width:100%;height:100%;"></iframe></div></div></div></section> <section id="custom_html-56" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><h4 class="widget-title widgettitle">Upcoming Webinars</h4> <div class="textwidget custom-html-widget"><center><div class="pt-cv-wrapper"><div class="pt-cv-view pt-cv-scrollable pt-cv-colsys pt-cv-center pt-cv-textbelow webinarslider" id="pt-cv-view-99c4ca3njg"><div data-id="pt-cv-page-1" class="pt-cv-page" data-cvc="1"><div id="4e9bf07h5z" class="pt-cv-carousel pt-cv-slide" data-ride="cvcarousel" data-interval=7000> <div class="carousel-inner"><div class="item active"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="174668"><a href="https://devops.com/webinars/unlocking-the-value-of-an-internal-developer-platform-idp-assessing-the-impact-on-your-organization/" class="_blank pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_blank" ><img width="1540" height="660" src="https://devops.com/wp-content/uploads/2024/12/2025.01.08-Cortex-LandingPage-1540x660-DO.png" class="pt-cv-thumbnail img-none" alt="Unlocking the Value of an Internal Developer Platform (IDP): Assessing the Impact on Your Organization" decoding="async" /></a> <div class="pt-cv-carousel-caption"><div class="pt-cv-ctf-list" data-cvc="1"><div class="col-md-12 pt-cv-ctf-column"><div class="pt-cv-custom-fields pt-cv-ctf-_EventStartDate"><div class="pt-cv-ctf-value">Wednesday, January 8, 2025 - 1:00 pm EST</div></div></div></div></div></div></div></div> <div class="item"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="174181"><a href="https://devops.com/webinars/from-chaos-to-clarity-solving-ai-data-pipeline-inefficiencies/" class="_blank pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_blank" ><img width="1540" height="660" src="https://devops.com/wp-content/uploads/2024/11/2025.01.09-VAST-Data-LandingPage-1540x660-DO.png" class="pt-cv-thumbnail img-none" alt="From Chaos to Clarity: Solving AI Data Pipeline Inefficiencies" decoding="async" /></a> <div class="pt-cv-carousel-caption"><div class="pt-cv-ctf-list" data-cvc="1"><div class="col-md-12 pt-cv-ctf-column"><div class="pt-cv-custom-fields pt-cv-ctf-_EventStartDate"><div class="pt-cv-ctf-value">Thursday, January 9, 2025 - 1:00 pm EST</div></div></div></div></div></div></div></div> <div class="item"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="174403"><a href="https://devops.com/webinars/vmware-to-cloud-native-migration-strategies/" class="_blank pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_blank" ><img width="1540" height="660" src="https://devops.com/wp-content/uploads/2024/12/2025.01.14-Presidio-LandingPage-1540x660-DO-4.png" class="pt-cv-thumbnail img-none" alt="VMWare Migration Strategies" decoding="async" /></a> <div class="pt-cv-carousel-caption"><div class="pt-cv-ctf-list" data-cvc="1"><div class="col-md-12 pt-cv-ctf-column"><div class="pt-cv-custom-fields pt-cv-ctf-_EventStartDate"><div class="pt-cv-ctf-value">Tuesday, January 14, 2025 - 12:00 pm EST</div></div></div></div></div></div></div></div></div> </div></div></div></div> <style type="text/css" id="pt-cv-inline-style-2aabab1pq3">#pt-cv-view-99c4ca3njg .pt-cv-content-item { padding-left: 0px !important; } #pt-cv-view-99c4ca3njg { margin-left: 0px !important; } #pt-cv-view-99c4ca3njg .pt-cv-carousel-caption { padding-left: 0px !important; } #pt-cv-view-99c4ca3njg .pt-cv-carousel-caption { left : 0px !important } #pt-cv-view-99c4ca3njg .carousel-control.left { right : 35px } #pt-cv-view-99c4ca3njg .row {margin: 0 0 !important} #pt-cv-view-99c4ca3njg .pt-cv-carousel-caption { background-color: #000000 !important; } #pt-cv-view-99c4ca3njg .pt-cv-title a, #pt-cv-view-99c4ca3njg .panel-title { font-size: 20px !important; line-height: 1.3 !important; font-weight: 600 !important; } #pt-cv-view-99c4ca3njg .pt-cv-content , #pt-cv-view-99c4ca3njg .pt-cv-content *:not(.pt-cv-readmore):not(style):not(script) { font-size: 16px !important; line-height: 1.3 !important; } #pt-cv-view-99c4ca3njg .pt-cv-carousel-caption { background-color: #000000 !important; } #pt-cv-view-99c4ca3njg .pt-cv-custom-fields * { font-size: 12px !important; line-height: 1.3 !important; font-weight: 600 !important; } @media (min-width: 768px) and (max-width: 991px) {#pt-cv-view-99c4ca3njg .pt-cv-custom-fields * { font-size: 12px !important }} @media (max-width: 767px) {#pt-cv-view-99c4ca3njg .pt-cv-custom-fields * { font-size: 12px !important }} #pt-cv-view-99c4ca3njg .pt-cv-readmore { color: #ffffff !important; background-color: #00aeef !important; font-weight: 600 !important; } #pt-cv-view-99c4ca3njg .pt-cv-readmore:hover { color: #ffffff !important; background-color: #00aeef !important; } #pt-cv-view-99c4ca3njg { text-align: center; }</style> </center></div></div></section> <section id="custom_html-70" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><h4 class="widget-title widgettitle">GET THE TOP STORIES OF THE WEEK</h4> <div class="textwidget custom-html-widget"><script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/v2.js"></script> <script> hbspt.forms.create({ region: "na1", portalId: "1628905", formId: "d967bc1f-2d57-4dcf-861d-5930d7bea674" }); </script></div></div></section> <section id="custom_html-90" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><h4 class="widget-title widgettitle">Techstrong Gang Podcast</h4> <div class="textwidget custom-html-widget"><iframe title="Techstrong Gang" allowtransparency="true" height="315" width="100%" style="border: none; min-width: min(100%, 430px);height:315px;" scrolling="no" data-name="pb-iframe-player" src="https://www.podbean.com/player-v2/?i=kurfj-114396d-pbblog-playlist&pbad=0&share=1&download=0&rtl=0&fonts=Arial&skin=1b1b1b&font-color=auto&logo_link=episode_page&order=episodic&limit=10&filter=all&ss=a713390a017602015775e868a2cf26b0&btn-skin=ff6d00&size=315" loading="lazy" allowfullscreen=""></iframe></div></div></section> <section id="custom_html-82" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><h4 class="widget-title widgettitle">DevOps Unbound Podcast</h4> <div class="textwidget custom-html-widget"><iframe title="DevOps Unbound" allowtransparency="true" height="250" width="100%" style="border: none; min-width: min(100%, 430px);height:250px;" scrolling="no" data-name="pb-iframe-player" src="https://www.podbean.com/player-v2/?i=m23s4-f1fd13-pbblog-playlist&pbad=0&share=1&download=0&rtl=0&fonts=Arial&skin=1&font-color=auto&logo_link=episode_page&order=episodic&limit=10&filter=all&ss=a713390a017602015775e868a2cf26b0&btn-skin=1b1b1b&size=250" loading="lazy" allowfullscreen=""></iframe></div></div></section> <section id="custom_html-77" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><div class="textwidget custom-html-widget"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2091799172090865" crossorigin="anonymous"></script> <!-- Right Side Position 1 --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-2091799172090865" data-ad-slot="3999233378" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div></div></section> <section id="text-99" class="widget widget_text"><div class="widget-wrap"> <div class="textwidget"><p><a href="https://techstrongresearch.com/resources/devops-next-2024-and-beyond/"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-171388" src="https://devops.com/wp-content/uploads/2024/10/DevOps-Next-2024-research-300x250-1.png" alt="" width="300" height="250" /></a></p> </div> </div></section> <section id="custom_html-75" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><h4 class="widget-title widgettitle">Press Releases</h4> <div class="textwidget custom-html-widget"><div class="pt-cv-wrapper"><div class="pt-cv-view pt-cv-scrollable pt-cv-colsys pt-cv-center pt-cv-textbelow webinarslider" id="pt-cv-view-8990877amd"><div data-id="pt-cv-page-1" class="pt-cv-page" data-cvc="1"><div id="f20b12bg8m" class="pt-cv-carousel pt-cv-slide" data-ride="cvcarousel" data-interval=7000> <div class="carousel-inner"><div class="item active"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="174530"><a href="https://devops.com/resecurity-introduces-government-security-operations-center-gsoc-at-nato-edge-2024/" class="_self pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_self" ><img width="1200" height="628" src="https://devops.com/wp-content/uploads/2024/12/NATO_173389847143H1Llb1X8.jpg" class="pt-cv-thumbnail img-none" alt="Resecurity introduces Government Security Operations Center (GSOC) at NATO Edge 2024" decoding="async" /></a> <div class="pt-cv-carousel-caption"><h4 class="pt-cv-title"><a href="https://devops.com/resecurity-introduces-government-security-operations-center-gsoc-at-nato-edge-2024/" class="_self cvplbd" target="_self" >Resecurity introduces Government Security Operations Center (GSOC) at NATO Edge 2024</a></h4></div></div></div></div> <div class="item"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="174522"><a href="https://devops.com/dmd-diamond-launches-open-beta-for-v4-blockchain-ahead-of-2025-mainnet/" class="_self pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_self" ><img width="1280" height="720" src="https://devops.com/wp-content/uploads/2024/12/photo_2024-12-09_173641_1733759527kfLycGddpq.jpeg" class="pt-cv-thumbnail img-none" alt="DMD Diamond Launches Open Beta for v4 Blockchain Ahead of 2025 Mainnet" decoding="async" /></a> <div class="pt-cv-carousel-caption"><h4 class="pt-cv-title"><a href="https://devops.com/dmd-diamond-launches-open-beta-for-v4-blockchain-ahead-of-2025-mainnet/" class="_self cvplbd" target="_self" >DMD Diamond Launches Open Beta for v4 Blockchain Ahead of 2025 Mainnet</a></h4></div></div></div></div> <div class="item"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="174436"><a href="https://devops.com/one-identity-named-winner-of-the-coveted-top-infosec-innovator-awards-for-2024/" class="_self pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_self" ><img width="1200" height="720" src="https://devops.com/wp-content/uploads/2024/12/PAM_cloud_image_1200_720_173331556491PD7jhYGr.jpg" class="pt-cv-thumbnail img-none" alt="One Identity Named Winner of the Coveted Top InfoSec Innovator Awards for 2024" decoding="async" /></a> <div class="pt-cv-carousel-caption"><h4 class="pt-cv-title"><a href="https://devops.com/one-identity-named-winner-of-the-coveted-top-infosec-innovator-awards-for-2024/" class="_self cvplbd" target="_self" >One Identity Named Winner of the Coveted Top InfoSec Innovator Awards for 2024</a></h4></div></div></div></div> <div class="item"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="174266"><a href="https://devops.com/halo-security-launches-slack-integration-for-real-time-alerts-on-new-assets-and-vulnerabilities/" class="_self pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_self" ><img width="1200" height="720" src="https://devops.com/wp-content/uploads/2024/11/slack-press-release_1732056016RmZeY8aVZj.jpg" class="pt-cv-thumbnail img-none" alt="Halo Security Launches Slack Integration for Real-Time Alerts on New Assets and Vulnerabilities" decoding="async" /></a> <div class="pt-cv-carousel-caption"><h4 class="pt-cv-title"><a href="https://devops.com/halo-security-launches-slack-integration-for-real-time-alerts-on-new-assets-and-vulnerabilities/" class="_self cvplbd" target="_self" >Halo Security Launches Slack Integration for Real-Time Alerts on New Assets and Vulnerabilities</a></h4></div></div></div></div> <div class="item"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="174133"><a href="https://devops.com/sweet-security-announces-availability-of-its-cloud-native-detection-response-platform-on-the-aws-marketplace/" class="_self pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_self" ><img width="1200" height="720" src="https://devops.com/wp-content/uploads/2024/11/photo_2024-11-11_17-22-10_1731338653zaTGx6Gmxh.jpg" class="pt-cv-thumbnail img-none" alt="Sweet Security Announces Availability of its Cloud Native Detection &amp; Response Platform on the AWS Marketplace" decoding="async" /></a> <div class="pt-cv-carousel-caption"><h4 class="pt-cv-title"><a href="https://devops.com/sweet-security-announces-availability-of-its-cloud-native-detection-response-platform-on-the-aws-marketplace/" class="_self cvplbd" target="_self" >Sweet Security Announces Availability of its Cloud Native Detection &amp; Response Platform on the AWS Marketplace</a></h4></div></div></div></div></div> </div></div></div></div> <style type="text/css" id="pt-cv-inline-style-d9e4d9bz7n">#pt-cv-view-8990877amd .pt-cv-content-item { padding-left: 0px !important; } #pt-cv-view-8990877amd { margin-left: 0px !important; } #pt-cv-view-8990877amd .pt-cv-carousel-caption { padding-left: 0px !important; } #pt-cv-view-8990877amd .pt-cv-carousel-caption { left : 0px !important } #pt-cv-view-8990877amd .carousel-control.left { right : 35px } #pt-cv-view-8990877amd .row {margin: 0 0 !important} #pt-cv-view-8990877amd .pt-cv-title a, #pt-cv-view-8990877amd .panel-title { font-size: 15px !important; line-height: 1.3 !important; color: #000000 !important; display: block !important; text-align: left !important; clear: both !important; } #pt-cv-view-8990877amd .pt-cv-content , #pt-cv-view-8990877amd .pt-cv-content *:not(.pt-cv-readmore):not(style):not(script) { font-size: 16px !important; line-height: 1.3 !important; } #pt-cv-view-8990877amd .pt-cv-custom-fields * { font-size: 12px !important; line-height: 1.3 !important; font-weight: 600 !important; } @media (min-width: 768px) and (max-width: 991px) {#pt-cv-view-8990877amd .pt-cv-custom-fields * { font-size: 12px !important }} @media (max-width: 767px) {#pt-cv-view-8990877amd .pt-cv-custom-fields * { font-size: 12px !important }} #pt-cv-view-8990877amd .pt-cv-readmore { color: #ffffff !important; background-color: #00aeef !important; font-weight: 600 !important; } #pt-cv-view-8990877amd .pt-cv-readmore:hover { color: #ffffff !important; background-color: #00aeef !important; } #pt-cv-view-8990877amd { text-align: center; }</style> </div></div></section> <section id="custom_html-76" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><div class="textwidget custom-html-widget"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2091799172090865" crossorigin="anonymous"></script> <!-- Right Side Position 2 --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-2091799172090865" data-ad-slot="3912437610" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script></div></div></section> <section id="featured-post-14" class="widget featured-content featuredpost"><div class="widget-wrap"><h4 class="widget-title widgettitle">Sponsored Content</h4> <article class="post-174413 post type-post status-publish format-standard has-post-thumbnail category-social-facebook category-social-linkedin category-social-x category-sponsored-content tag-southworks tag-techfieldday tag-writeroftech1 tag-adfd2 entry"><header class="entry-header"><h2 class="entry-title" itemprop="headline"><a href="https://devops.com/southworks-cloud-agnostic-platforms-will-drive-new-possibilities-in-multi-cloud/">SOUTHWORKS &#8211; Cloud-Agnostic Platforms Will Drive New Possibilities in Multi-Cloud</a></h2><p class="entry-meta"><time class="entry-time" itemprop="datePublished" datetime="2024-12-05T13:26:19-05:00">December 5, 2024</time> | <span class="entry-author" itemprop="author" itemscope itemtype="https://schema.org/Person"><a href="https://devops.com/author/sulagna-saha/" class="entry-author-link" rel="author" itemprop="url"><span class="entry-author-name" itemprop="name">Sulagna Saha</span></a></span></p></header></article><article class="post-174328 post type-post status-publish format-standard has-post-thumbnail category-social-facebook category-social-linkedin category-social-x category-sponsored-content tag-techfieldday tag-writeroftech1 tag-adfd2 tag-heroku entry"><header class="entry-header"><h2 class="entry-title" itemprop="headline"><a href="https://devops.com/heroku-uplifts-developer-experience-with-a-shorter-build-and-deploy-cycle/">Heroku Uplifts Developer Experience with a Shorter Build and Deploy Cycle</a></h2><p class="entry-meta"><time class="entry-time" itemprop="datePublished" datetime="2024-11-26T16:53:31-05:00">November 26, 2024</time> | <span class="entry-author" itemprop="author" itemscope itemtype="https://schema.org/Person"><a href="https://devops.com/author/sulagna-saha/" class="entry-author-link" rel="author" itemprop="url"><span class="entry-author-name" itemprop="name">Sulagna Saha</span></a></span></p></header></article><article class="post-173233 post type-post status-publish format-standard has-post-thumbnail category-social-facebook category-social-linkedin category-social-x category-sponsored-content tag-cloud-migration tag-cloud-security tag-devsecops-event entry"><header class="entry-header"><h2 class="entry-title" itemprop="headline"><a href="https://devops.com/dispelling-the-cloud-security-myths-and-accelerating-migration/">Dispelling the Cloud Security Myths and Accelerating Migration</a></h2><p class="entry-meta"><time class="entry-time" itemprop="datePublished" datetime="2024-10-01T21:58:18-04:00">October 1, 2024</time> | <span class="entry-author" itemprop="author" itemscope itemtype="https://schema.org/Person"><a href="https://devops.com/author/gabriel-martinez/" class="entry-author-link" rel="author" itemprop="url"><span class="entry-author-name" itemprop="name">Gabriel Martinez</span></a></span></p></header></article><article class="post-172975 post type-post status-publish format-standard has-post-thumbnail category-social-facebook category-social-linkedin category-social-x category-sponsored-content tag-devsecops tag-opentext entry"><header class="entry-header"><h2 class="entry-title" itemprop="headline"><a href="https://devops.com/embracing-devsecops-the-future-of-secure-software-delivery/">Embracing DevSecOps: The Future of Secure Software Delivery</a></h2><p class="entry-meta"><time class="entry-time" itemprop="datePublished" datetime="2024-09-17T12:26:21-04:00">September 17, 2024</time> | <span class="entry-author" itemprop="author" itemscope itemtype="https://schema.org/Person"><a href="https://devops.com/author/gabriel-martinez/" class="entry-author-link" rel="author" itemprop="url"><span class="entry-author-name" itemprop="name">Gabriel Martinez</span></a></span></p></header></article><article class="post-165745 post type-post status-publish format-standard has-post-thumbnail category-ai category-application-performance-managementmonitoring category-blogs category-infrastructure-networking category-social-facebook category-sponsored-content tag-ai-ml tag-aiops tag-infrastructure tag-networking tag-telco tag-vitria entry"><header class="entry-header"><h2 class="entry-title" itemprop="headline"><a href="https://devops.com/why-aiops-is-critical-for-networks/">Why AIOps is Critical for Networks</a></h2><p class="entry-meta"><time class="entry-time" itemprop="datePublished" datetime="2023-10-03T11:13:56-04:00">October 3, 2023</time> | <span class="entry-author" itemprop="author" itemscope itemtype="https://schema.org/Person"><a href="https://devops.com/author/mitchellashley/" class="entry-author-link" rel="author" itemprop="url"><span class="entry-author-name" itemprop="name">Mitch Ashley</span></a></span></p></header></article></div></section> <section id="text-85" class="widget widget_text"><div class="widget-wrap"> <div class="textwidget"><div id="div-gpt-ad-1494536589535-1" style="height: 250px; width: 300px;"><script>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1494536589535-1'); });</script></div> </div> </div></section> </aside></div></div><footer class="site-footer" itemscope itemtype="https://schema.org/WPFooter"><div class="wrap"><nav class="nav-secondary" aria-label="Secondary" itemscope itemtype="https://schema.org/SiteNavigationElement" id="genesis-nav-secondary"><div class="wrap"><ul id="menu-csc-footer-navigation" class="menu genesis-nav-menu menu-secondary"><li id="menu-item-120384" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-120384"><a href="https://devops.com/" itemprop="url"><span itemprop="name">Home</span></a></li> <li id="menu-item-213" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-213"><a href="https://devops.com/about/" itemprop="url"><span itemprop="name">About DevOps.com</span></a></li> <li id="menu-item-129660" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-129660"><a href="https://devops.com/authors-page/" itemprop="url"><span itemprop="name">Meet our Authors</span></a></li> <li id="menu-item-123986" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-123986"><a href="https://devops.com/blogger-request-form/" itemprop="url"><span itemprop="name">Write for DevOps.com</span></a></li> <li id="menu-item-5573" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-5573"><a href="https://techstronggroup.com/assets/techstrong-media-kit.pdf" itemprop="url"><span itemprop="name">Media Kit</span></a></li> <li id="menu-item-155879" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-155879"><a target="_blank" href="https://techstronggroup.com/tellmemore/" itemprop="url"><span itemprop="name">Sponsor Info</span></a></li> <li id="menu-item-210" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-210"><a href="https://devops.com/copyright/" itemprop="url"><span itemprop="name">Copyright</span></a></li> <li id="menu-item-212" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-212"><a href="https://devops.com/tos/" itemprop="url"><span itemprop="name">TOS</span></a></li> <li id="menu-item-146058" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-146058"><a target="_blank" href="https://techstronggroup.com/privacy-policy/" itemprop="url"><span itemprop="name">Privacy Policy</span></a></li> </ul></div></nav><div class="copy" style="position: relative; padding-bottom: 20px;"><p class="footer-powered-by"><a href="https://techstronggroup.com/" target="_blank"><img src="https://devops.com/wp-content/themes/genesis-devops/images/powered-by-techstrong-ftr.png" alt="Powered by Techstrong Group, Inc."></p><p style="font-family: FontAwesome;"><a class="fa-twitter mega-menu-link" href="https://twitter.com/devopsdotcom" tabindex="0" aria-label="Twitter" target="_blank"></a> <a class="fa-google mega-menu-link" href="https://news.google.com/publications/CAAqJAgKIh5DQklTRUFnTWFnd0tDbVJsZG05d2N5NWpiMjBvQUFQAQ?hl=en-US&amp;gl=US&amp;ceid=US%3Aen" tabindex="0" aria-label="Google News" target="_blank"></a> <a class="fa-linkedin mega-menu-link" href="https://www.linkedin.com/company/devops-com/?viewAsMember=true" tabindex="0" aria-label="LinkedIn" target="_blank"></a> <a class="fa-facebook mega-menu-link" href="https://www.facebook.com/devopscom" tabindex="0" aria-label="Facebook" target="_blank"></a> <a class="fa-youtube-play mega-menu-link" href="https://www.youtube.com/channel/UC-zcE077X98oTEDPwKkDQxQ" tabindex="0" aria-label="YouTube" target="_blank"></a></p><p class="copyright">&copy; 2024 &middot;<a href="https://techstronggroup.com/" target="_blank">Techstrong Group, Inc.</a>All rights reserved.</p></div><p></p></div></footer></div> <script> ( function ( body ) { 'use strict'; body.className = body.className.replace( /\btribe-no-js\b/, 'tribe-js' ); } )( document.body ); </script> <!-- GTM Container placement set to footer --> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NZLPNQS" height="0" width="0" style="display:none;visibility:hidden" aria-hidden="true"></iframe></noscript> <!-- End Google Tag Manager (noscript) --><div class="wppopups-whole" style="display: none"><div class="spu-bg " id="spu-bg-174203"></div><div class="spu-box spu-animation-fade spu-position-centered spu-animation-animated" id="spu-174203" data-id="174203" data-parent="0" data-settings="{&quot;position&quot;:{&quot;position&quot;:&quot;centered&quot;,&quot;sticky_title&quot;:&quot;Postal Popup&quot;,&quot;sticky_title_color&quot;:&quot;rgba(0,0,0,255)&quot;,&quot;sticky_title_size&quot;:&quot;28px&quot;,&quot;sticky_title_bg&quot;:&quot;rgba(255,255,255,255)&quot;,&quot;push_content&quot;:&quot;0&quot;},&quot;animation&quot;:{&quot;animation&quot;:&quot;fade&quot;},&quot;colors&quot;:{&quot;show_overlay&quot;:&quot;yes-color&quot;,&quot;overlay_color&quot;:&quot;rgba(0,0,0,0.5)&quot;,&quot;overlay_blur&quot;:&quot;2&quot;,&quot;bg_color&quot;:&quot;rgb(29, 29, 33)&quot;,&quot;bg_img&quot;:&quot;&quot;,&quot;bg_img_repeat&quot;:&quot;no-repeat&quot;,&quot;bg_img_size&quot;:&quot;auto&quot;},&quot;close&quot;:{&quot;close_color&quot;:&quot;rgb(255, 255, 255)&quot;,&quot;close_hover_color&quot;:&quot;rgb(204, 204, 204)&quot;,&quot;close_shadow_color&quot;:&quot;#000&quot;,&quot;close_size&quot;:&quot;30&quot;,&quot;close_position&quot;:&quot;top_right&quot;},&quot;popup_box&quot;:{&quot;width&quot;:&quot;650px&quot;,&quot;padding&quot;:&quot;0&quot;,&quot;radius&quot;:&quot;0&quot;,&quot;auto_height&quot;:&quot;yes&quot;,&quot;height&quot;:&quot;350px&quot;},&quot;border&quot;:{&quot;border_type&quot;:&quot;none&quot;,&quot;border_color&quot;:&quot;#000&quot;,&quot;border_width&quot;:&quot;3&quot;,&quot;border_radius&quot;:&quot;0&quot;,&quot;border_margin&quot;:&quot;0&quot;},&quot;shadow&quot;:{&quot;shadow_color&quot;:&quot;#ccc&quot;,&quot;shadow_type&quot;:&quot;outset&quot;,&quot;shadow_x_offset&quot;:&quot;0&quot;,&quot;shadow_y_offset&quot;:&quot;0&quot;,&quot;shadow_blur&quot;:&quot;0&quot;,&quot;shadow_spread&quot;:&quot;0&quot;},&quot;css&quot;:{&quot;custom_css&quot;:&quot;.spu-content .hs-form {\r\ndisplay: flex;\r\nalign-items: flex-start;\r\njustify-content: center;\r\npadding-bottom: 20px;\r\n}\r\n\r\n.spu-content .hs_email {\r\nwidth: 75%;\r\n}\r\n\r\n.spu-content .hs-input {\r\nheight: 46px;\r\n}\r\n\r\n.hs-error-msgs {\r\ncolor: #fff;\r\n}\r\n\r\n.spu-content .hs_submit {\r\nwidth: 20%;\r\n}&quot;},&quot;id&quot;:&quot;174203&quot;,&quot;field_id&quot;:1,&quot;rules&quot;:{&quot;group_0&quot;:{&quot;rule_0&quot;:{&quot;rule&quot;:&quot;page_type&quot;,&quot;operator&quot;:&quot;==&quot;,&quot;value&quot;:&quot;all_pages&quot;}}},&quot;global_rules&quot;:{&quot;group_0&quot;:{&quot;rule_0&quot;:{&quot;rule&quot;:&quot;page_type&quot;,&quot;operator&quot;:&quot;==&quot;,&quot;value&quot;:&quot;all_pages&quot;}}},&quot;settings&quot;:{&quot;popup_title&quot;:&quot;Newsletter Popup - Email Only&quot;,&quot;popup_desc&quot;:&quot;&quot;,&quot;test_mode&quot;:&quot;0&quot;,&quot;powered_link&quot;:&quot;0&quot;,&quot;popup_class&quot;:&quot;&quot;,&quot;popup_hidden_class&quot;:&quot;&quot;,&quot;disable_scroll&quot;:&quot;0&quot;,&quot;close_on_conversion&quot;:&quot;1&quot;,&quot;autoclose&quot;:0,&quot;disable_close&quot;:&quot;0&quot;,&quot;advanced_close&quot;:&quot;0&quot;,&quot;conversion_cookie_name&quot;:&quot;spu_conversion_174196&quot;,&quot;conversion_cookie_duration&quot;:&quot;3&quot;,&quot;conversion_cookie_type&quot;:&quot;d&quot;,&quot;closing_cookie_name&quot;:&quot;spu_closing_174196&quot;,&quot;closing_cookie_duration&quot;:&quot;3&quot;,&quot;closing_cookie_type&quot;:&quot;d&quot;},&quot;triggers&quot;:{&quot;trigger_0&quot;:{&quot;trigger&quot;:&quot;exit&quot;}},&quot;success&quot;:{&quot;optin_success_seconds&quot;:0}}" data-need_ajax="0"><div class="spu-container "><div class="spu-content"> <a href="https://webinars.devops.com/in-article-newsletter-popup"><img class="alignnone size-full wp-image-174197" src="https://devops.com/wp-content/uploads/2024/11/Copy-of-DO-Banners-1540x660-1.png" alt="" width="1540" height="660" /></a> <script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/embed/v2.js"></script> <script> hbspt.forms.create({ portalId: "1628905", formId: "a818e690-a8e5-4d1c-861c-010e5829d98c" }); </script> </div><a href="#" class="spu-close spu-close-popup spu-close-top_right">&times;</a><span class="spu-timer"></span></div></div><!--spu-box--></div><script> var coll = document.getElementsByClassName("collapsible"); var i; for (i = 0; i < coll.length; i++) { coll[i].addEventListener("click", function() { this.classList.toggle("active"); var content = this.nextElementSibling; if (content.style.display === "block") { content.style.display = "none"; } else { content.style.display = "block"; } }); } </script><script> /* <![CDATA[ */var tribe_l10n_datatables = {"aria":{"sort_ascending":": activate to sort column ascending","sort_descending":": activate to sort column descending"},"length_menu":"Show _MENU_ entries","empty_table":"No data available in table","info":"Showing _START_ to _END_ of _TOTAL_ entries","info_empty":"Showing 0 to 0 of 0 entries","info_filtered":"(filtered from _MAX_ total entries)","zero_records":"No matching records found","search":"Search:","all_selected_text":"All items on this page were selected. ","select_all_link":"Select all pages","clear_selection":"Clear Selection.","pagination":{"all":"All","next":"Next","previous":"Previous"},"select":{"rows":{"0":"","_":": Selected %d rows","1":": Selected 1 row"}},"datepicker":{"dayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dayNamesShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dayNamesMin":["S","M","T","W","T","F","S"],"monthNames":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthNamesShort":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthNamesMin":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"nextText":"Next","prevText":"Prev","currentText":"Today","closeText":"Done","today":"Today","clear":"Clear"}};/* ]]> */ </script> <script type='text/javascript'> const lazyloadRunObserver = () => { const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` ); const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => { entries.forEach( ( entry ) => { if ( entry.isIntersecting ) { let lazyloadBackground = entry.target; if( lazyloadBackground ) { lazyloadBackground.classList.add( 'e-lazyloaded' ); } lazyloadBackgroundObserver.unobserve( entry.target ); } }); }, { rootMargin: '200px 0px 200px 0px' } ); lazyloadBackgrounds.forEach( ( lazyloadBackground ) => { lazyloadBackgroundObserver.observe( lazyloadBackground ); } ); }; const events = [ 'DOMContentLoaded', 'elementor/lazyload/observe', ]; events.forEach( ( event ) => { document.addEventListener( event, lazyloadRunObserver ); } ); </script> <link rel='stylesheet' id='multiple-authors-widget-css-css' href='https://devops.com/wp-content/plugins/publishpress-authors/src/assets/css/multiple-authors-widget.css' type='text/css' media='all' /> <style id='multiple-authors-widget-css-inline-css' type='text/css'> :root { --ppa-color-scheme: #655997; --ppa-color-scheme-active: #514779; } </style> <link rel='stylesheet' id='multiple-authors-fontawesome-css' href='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css' type='text/css' media='all' /> <link rel='stylesheet' id='gpoll_css-css' href='https://devops.com/wp-content/plugins/gravityformspolls/assets/css/dist/theme.min.css' type='text/css' media='all' /> <link rel='stylesheet' id='gform_basic-css' href='https://devops.com/wp-content/plugins/gravityforms/assets/css/dist/basic.min.css' type='text/css' media='all' /> <link rel='stylesheet' id='gform_theme_components-css' href='https://devops.com/wp-content/plugins/gravityforms/assets/css/dist/theme-components.min.css' type='text/css' media='all' /> <link rel='stylesheet' id='gform_theme-css' href='https://devops.com/wp-content/plugins/gravityforms/assets/css/dist/theme.min.css' type='text/css' media='all' /> <script type="text/javascript" id="wppopups-js-extra"> /* <![CDATA[ */ var wppopups_vars = {"is_admin":"","ajax_url":"https:\/\/devops.com\/wp-admin\/admin-ajax.php","pid":"157147","is_front_page":"","is_blog_page":"","is_category":"","site_url":"https:\/\/devops.com","is_archive":"","is_search":"","is_singular":"1","is_preview":"","facebook":"","twitter":"","val_required":"This field is required.","val_url":"Please enter a valid URL.","val_email":"Please enter a valid email address.","val_number":"Please enter a valid number.","val_checklimit":"You have exceeded the number of allowed selections: {#}.","val_limit_characters":"{count} of {limit} max characters.","val_limit_words":"{count} of {limit} max words.","disable_form_reopen":"__return_false"}; /* ]]> */ </script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/wppopups/src/assets/js/wppopups.js?ver=2.2.0.3" id="wppopups-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/content-views-query-and-display-post-page/assets/ie-fix/html5shiv.min.js?ver=3.7.0" id="pt-cv-html5shiv-script-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/content-views-query-and-display-post-page/assets/ie-fix/respond.js?ver=1.4.2" id="pt-cv-respond-script-js"></script> <script type="text/javascript" id="disqus_count-js-extra"> /* <![CDATA[ */ var countVars = {"disqusShortname":"devopscom"}; /* ]]> */ </script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/disqus-comment-system/public/js/comment_count.js?ver=3.1.2" id="disqus_count-js"></script> <script type="text/javascript" id="disqus_embed-js-extra"> /* <![CDATA[ */ var embedVars = {"disqusConfig":{"integration":"wordpress 3.1.2"},"disqusIdentifier":"157147 https:\/\/devops.com\/?p=157147","disqusShortname":"devopscom","disqusTitle":"GraphQL Vulnerability Analysis: The Top Threats","disqusUrl":"https:\/\/devops.com\/graphql-vulnerability-analysis-the-top-threats\/","postId":"157147"}; /* ]]> */ </script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/disqus-comment-system/public/js/comment_embed.js?ver=3.1.2" id="disqus_embed-js"></script> <script type="text/javascript" id="leadin-script-loader-js-js-extra"> /* <![CDATA[ */ var leadin_wordpress = {"userRole":"visitor","pageType":"post","leadinPluginVersion":"11.1.73"}; /* ]]> */ </script> <script type="text/javascript" src="https://js.hs-scripts.com/1628905.js?integration=WordPress&amp;ver=11.1.73" id="leadin-script-loader-js-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/themes/genesis-devops/webinars.js?ver=1.0.0" id="script-webinars-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/themes/genesis-devops/js/slider/any/js/jquery.easing.1.2.js?ver=1.0.0" id="script-any-pre-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/themes/genesis-devops/js/slider/any/js/jquery.anythingslider.min.js?ver=1.0.0" id="script-any-js"></script> <script type="text/javascript" src="https://devops.com/wp-includes/js/comment-reply.min.js?ver=1fdc173ed44ea313992d83dbd85d2021" id="comment-reply-js" async="async" data-wp-strategy="async"></script> <script type="text/javascript" src="https://stats.wp.com/e-202451.js" id="jetpack-stats-js" data-wp-strategy="defer"></script> <script type="text/javascript" id="jetpack-stats-js-after"> /* <![CDATA[ */ _stq = window._stq || []; _stq.push([ "view", JSON.parse("{\"v\":\"ext\",\"blog\":\"144979424\",\"post\":\"157147\",\"tz\":\"-5\",\"srv\":\"devops.com\",\"j\":\"1:14.0\"}") ]); _stq.push([ "clickTrackerInit", "144979424", "157147" ]); /* ]]> */ </script> <script type="text/javascript" src="https://devops.com/wp-includes/js/hoverIntent.min.js?ver=1.10.2" id="hoverIntent-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/megamenu/js/maxmegamenu.js?ver=3.4.1" id="megamenu-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/megamenu-pro/assets/public.js?ver=2.4" id="megamenu-pro-js"></script> <script type="text/javascript" id="bdt-uikit-js-extra"> /* <![CDATA[ */ var element_pack_ajax_login_config = {"ajaxurl":"https:\/\/devops.com\/wp-admin\/admin-ajax.php","language":"en","loadingmessage":"Sending user info, please wait...","unknownerror":"Unknown error, make sure access is correct!"}; var ElementPackConfig = {"ajaxurl":"https:\/\/devops.com\/wp-admin\/admin-ajax.php","nonce":"5d94bf093b","data_table":{"language":{"sLengthMenu":"Show _MENU_ Entries","sInfo":"Showing _START_ to _END_ of _TOTAL_ entries","sSearch":"Search :","sZeroRecords":"No matching records found","oPaginate":{"sPrevious":"Previous","sNext":"Next"}}},"contact_form":{"sending_msg":"Sending message please wait...","captcha_nd":"Invisible captcha not defined!","captcha_nr":"Could not get invisible captcha response!"},"mailchimp":{"subscribing":"Subscribing you please wait..."},"search":{"more_result":"More Results","search_result":"SEARCH RESULT","not_found":"not found"},"words_limit":{"read_more":"[read more]","read_less":"[read less]"},"elements_data":{"sections":[],"columns":[],"widgets":[]}}; /* ]]> */ </script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/bdthemes-element-pack/assets/js/bdt-uikit.min.js?ver=3.21.7" id="bdt-uikit-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/bdthemes-element-pack/assets/js/common/helper.min.js?ver=7.18.11" id="element-pack-helper-js"></script> <script type="text/javascript" id="pt-cv-content-views-script-js-extra"> /* <![CDATA[ */ var PT_CV_PUBLIC = {"_prefix":"pt-cv-","page_to_show":"5","_nonce":"bcd600969c","is_admin":"","is_mobile":"","ajaxurl":"https:\/\/devops.com\/wp-admin\/admin-ajax.php","lang":"","loading_image_src":"data:image\/gif;base64,R0lGODlhDwAPALMPAMrKygwMDJOTkz09PZWVla+vr3p6euTk5M7OzuXl5TMzMwAAAJmZmWZmZszMzP\/\/\/yH\/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgAPACwAAAAADwAPAAAEQvDJaZaZOIcV8iQK8VRX4iTYoAwZ4iCYoAjZ4RxejhVNoT+mRGP4cyF4Pp0N98sBGIBMEMOotl6YZ3S61Bmbkm4mAgAh+QQFCgAPACwAAAAADQANAAAENPDJSRSZeA418itN8QiK8BiLITVsFiyBBIoYqnoewAD4xPw9iY4XLGYSjkQR4UAUD45DLwIAIfkEBQoADwAsAAAAAA8ACQAABC\/wyVlamTi3nSdgwFNdhEJgTJoNyoB9ISYoQmdjiZPcj7EYCAeCF1gEDo4Dz2eIAAAh+QQFCgAPACwCAAAADQANAAAEM\/DJBxiYeLKdX3IJZT1FU0iIg2RNKx3OkZVnZ98ToRD4MyiDnkAh6BkNC0MvsAj0kMpHBAAh+QQFCgAPACwGAAAACQAPAAAEMDC59KpFDll73HkAA2wVY5KgiK5b0RRoI6MuzG6EQqCDMlSGheEhUAgqgUUAFRySIgAh+QQFCgAPACwCAAIADQANAAAEM\/DJKZNLND\/kkKaHc3xk+QAMYDKsiaqmZCxGVjSFFCxB1vwy2oOgIDxuucxAMTAJFAJNBAAh+QQFCgAPACwAAAYADwAJAAAEMNAs86q1yaWwwv2Ig0jUZx3OYa4XoRAfwADXoAwfo1+CIjyFRuEho60aSNYlOPxEAAAh+QQFCgAPACwAAAIADQANAAAENPA9s4y8+IUVcqaWJ4qEQozSoAzoIyhCK2NFU2SJk0hNnyEOhKR2AzAAj4Pj4GE4W0bkJQIAOw==","is_mobile_tablet":"","sf_no_post_found":"No posts found.","lf__separator":"____"}; var PT_CV_PAGINATION = {"first":"\u00ab","prev":"\u2039","next":"\u203a","last":"\u00bb","goto_first":"Go to first page","goto_prev":"Go to previous page","goto_next":"Go to next page","goto_last":"Go to last page","current_page":"Current page is","goto_page":"Go to page"}; /* ]]> */ </script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/content-views-query-and-display-post-page/public/assets/js/cv.js?ver=4.0.2" id="pt-cv-content-views-script-js"></script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/pt-content-views-pro/public/assets/js/cvpro.min.js?ver=7.1" id="pt-cv-public-pro-script-js"></script> <script type="text/javascript" src="https://devops.com/wp-includes/js/dist/dom-ready.min.js?ver=f77871ff7694fffea381" id="wp-dom-ready-js"></script> <script type="text/javascript" src="https://devops.com/wp-includes/js/dist/i18n.min.js?ver=5e580eb46a90c2b997e6" id="wp-i18n-js"></script> <script type="text/javascript" id="wp-i18n-js-after"> /* <![CDATA[ */ wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); /* ]]> */ </script> <script type="text/javascript" src="https://devops.com/wp-includes/js/dist/a11y.min.js?ver=3156534cc54473497e14" id="wp-a11y-js"></script> <script type="text/javascript" defer='defer' src="https://devops.com/wp-content/plugins/gravityforms/js/jquery.json.min.js?ver=2.9.1" id="gform_json-js"></script> <script type="text/javascript" id="gform_gravityforms-js-extra"> /* <![CDATA[ */ var gform_i18n = {"datepicker":{"days":{"monday":"Mo","tuesday":"Tu","wednesday":"We","thursday":"Th","friday":"Fr","saturday":"Sa","sunday":"Su"},"months":{"january":"January","february":"February","march":"March","april":"April","may":"May","june":"June","july":"July","august":"August","september":"September","october":"October","november":"November","december":"December"},"firstDay":0,"iconText":"Select date"}}; var gf_legacy_multi = []; var gform_gravityforms = {"strings":{"invalid_file_extension":"This type of file is not allowed. Must be one of the following:","delete_file":"Delete this file","in_progress":"in progress","file_exceeds_limit":"File exceeds size limit","illegal_extension":"This type of file is not allowed.","max_reached":"Maximum number of files reached","unknown_error":"There was a problem while saving the file on the server","currently_uploading":"Please wait for the uploading to complete","cancel":"Cancel","cancel_upload":"Cancel this upload","cancelled":"Cancelled"},"vars":{"images_url":"https:\/\/devops.com\/wp-content\/plugins\/gravityforms\/images"}}; var gf_global = {"gf_currency_config":{"name":"U.S. Dollar","symbol_left":"$","symbol_right":"","symbol_padding":"","thousand_separator":",","decimal_separator":".","decimals":2,"code":"USD"},"base_url":"https:\/\/devops.com\/wp-content\/plugins\/gravityforms","number_formats":[],"spinnerUrl":"https:\/\/devops.com\/wp-content\/plugins\/gravityforms\/images\/spinner.svg","version_hash":"3e30111c13c98e7c674217bf5f6bcb40","strings":{"newRowAdded":"New row added.","rowRemoved":"Row removed","formSaved":"The form has been saved. The content contains the link to return and complete the form."}}; /* ]]> */ </script> <script type="text/javascript" defer='defer' src="https://devops.com/wp-content/plugins/gravityforms/js/gravityforms.min.js?ver=2.9.1" id="gform_gravityforms-js"></script> <script type="text/javascript" id="gform_conditional_logic-js-extra"> /* <![CDATA[ */ var gf_legacy = {"is_legacy":""}; /* ]]> */ </script> <script type="text/javascript" defer='defer' src="https://devops.com/wp-content/plugins/gravityforms/js/conditional_logic.min.js?ver=2.9.1" id="gform_conditional_logic-js"></script> <script type="text/javascript" defer='defer' src="https://devops.com/wp-content/plugins/gravityforms/assets/js/dist/utils.min.js?ver=501a987060f4426fb517400c73c7fc1e" id="gform_gravityforms_utils-js"></script> <script type="text/javascript" defer='defer' src="https://devops.com/wp-content/plugins/gravityforms/assets/js/dist/vendor-theme.min.js?ver=ddd2702ee024d421149a5e61416f1ff5" id="gform_gravityforms_theme_vendors-js"></script> <script type="text/javascript" id="gform_gravityforms_theme-js-extra"> /* <![CDATA[ */ var gform_theme_config = {"common":{"form":{"honeypot":{"version_hash":"3e30111c13c98e7c674217bf5f6bcb40"},"ajax":{"ajaxurl":"https:\/\/devops.com\/wp-admin\/admin-ajax.php","ajax_submission_nonce":"eb04e85b5e","i18n":{"step_announcement":"Step %1$s of %2$s, %3$s","unknown_error":"There was an unknown error processing your request. Please try again."}}}},"hmr_dev":"","public_path":"https:\/\/devops.com\/wp-content\/plugins\/gravityforms\/assets\/js\/dist\/","config_nonce":"88e244539a"}; /* ]]> */ </script> <script type="text/javascript" defer='defer' src="https://devops.com/wp-content/plugins/gravityforms/assets/js/dist/scripts-theme.min.js?ver=434d0c7a9798b432de24db888073c55f" id="gform_gravityforms_theme-js"></script> <script type="text/javascript" id="gpoll_js-js-extra"> /* <![CDATA[ */ var gpollVars = {"ajaxurl":"https:\/\/devops.com\/wp-admin\/admin-ajax.php","imagesUrl":"https:\/\/devops.com\/wp-content\/plugins\/gravityformspolls\/images"}; var gpoll_strings = {"viewResults":"View results","backToThePoll":"Back to the poll"}; /* ]]> */ </script> <script type="text/javascript" src="https://devops.com/wp-content/plugins/gravityformspolls/js/gpoll.min.js?ver=4.3.0" id="gpoll_js-js"></script> <script defer type="text/javascript" src="https://devops.com/wp-content/plugins/akismet/_inc/akismet-frontend.js?ver=1732669132" id="akismet-frontend-js"></script> <!-- Shortcodes Ultimate custom CSS - start --> <style type="text/css"> .su-posts-default-loop { margin-left: 15px !important; } .su-posts-default-loop .su-post { margin-bottom: 1.5em; line-height: 1.2 !important; } .su-box { margin-top: 5px; } .su-row { margin-bottom: 0em !important; } .su-list ul li { font-size: small !important; } .su-expand-link { font-size: small !important; } </style> <!-- Shortcodes Ultimate custom CSS - end --> <script type="text/javascript"> /* <![CDATA[ */ gform.initializeOnLoaded( function() { jQuery(document).on('gform_post_render', function(event, formId, currentPage){if(formId == 129) {gf_global["number_formats"][129] = {"3":{"price":false,"value":false},"1":{"price":false,"value":false},"4":{"price":false,"value":false},"14":{"price":false,"value":false},"5":{"price":false,"value":false},"13":{"price":false,"value":false},"6":{"price":false,"value":false},"15":{"price":false,"value":false},"12":{"price":false,"value":false},"7":{"price":false,"value":false},"16":{"price":false,"value":false},"11":{"price":false,"value":false},"8":{"price":false,"value":false},"10":{"price":false,"value":false},"9":{"price":false,"value":false}};if(window['jQuery']){if(!window['gf_form_conditional_logic'])window['gf_form_conditional_logic'] = new Array();window['gf_form_conditional_logic'][129] = { logic: { 4: {"field":{"enabled":true,"actionType":"hide","logicType":"all","rules":[{"fieldId":"3","operator":"is","value":"Don\u2019t know"}]},"nextButton":null,"section":null},15: {"field":{"enabled":true,"actionType":"show","logicType":"all","rules":[{"fieldId":"6","operator":"is","value":"gpoll6e0ce7ffa"}]},"nextButton":null,"section":null},16: {"field":{"enabled":true,"actionType":"show","logicType":"all","rules":[{"fieldId":"7","operator":"is","value":"gpoll7b91b057d"}]},"nextButton":null,"section":null} }, dependents: { 4: [4],15: [15],16: [16] }, animation: 0, defaults: [], fields: {"3":[4],"1":[],"4":[],"14":[],"5":[],"13":[],"6":[15],"15":[],"12":[],"7":[16],"16":[],"11":[],"8":[],"10":[],"9":[]} }; if(!window['gf_number_format'])window['gf_number_format'] = 'decimal_dot';jQuery(document).ready(function(){gform.utils.trigger({ event: 'gform/conditionalLogic/init/start', native: false, data: { formId: 129, fields: null, isInit: true } });window['gformInitPriceFields']();gf_apply_rules(129, [4,15,16], true);jQuery('#gform_wrapper_129').show();jQuery('#gform_wrapper_129 form').css('opacity', '');jQuery(document).trigger('gform_post_conditional_logic', [129, null, true]);gform.utils.trigger({ event: 'gform/conditionalLogic/init/end', native: false, data: { formId: 129, fields: null, isInit: true } });} );} } } );jQuery(document).on('gform_post_conditional_logic', function(event, formId, fields, isInit){} ) } ); /* ]]> */ </script> <script type="text/javascript"> /* <![CDATA[ */ gform.initializeOnLoaded( function() {jQuery(document).trigger("gform_pre_post_render", [{ formId: "129", currentPage: "1", abort: function() { this.preventDefault(); } }]); if (event && event.defaultPrevented) { return; } const gformWrapperDiv = document.getElementById( "gform_wrapper_129" ); if ( gformWrapperDiv ) { const visibilitySpan = document.createElement( "span" ); visibilitySpan.id = "gform_visibility_test_129"; gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan ); } const visibilityTestDiv = document.getElementById( "gform_visibility_test_129" ); let postRenderFired = false; function triggerPostRender() { if ( postRenderFired ) { return; } postRenderFired = true; jQuery( document ).trigger( 'gform_post_render', [129, 1] ); gform.utils.trigger( { event: 'gform/postRender', native: false, data: { formId: 129, currentPage: 1 } } ); gform.utils.trigger( { event: 'gform/post_render', native: false, data: { formId: 129, currentPage: 1 } } ); if ( visibilityTestDiv ) { visibilityTestDiv.parentNode.removeChild( visibilityTestDiv ); } } function debounce( func, wait, immediate ) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if ( !immediate ) func.apply( context, args ); }; var callNow = immediate && !timeout; clearTimeout( timeout ); timeout = setTimeout( later, wait ); if ( callNow ) func.apply( context, args ); }; } const debouncedTriggerPostRender = debounce( function() { triggerPostRender(); }, 200 ); if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) { const observer = new MutationObserver( ( mutations ) => { mutations.forEach( ( mutation ) => { if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) { debouncedTriggerPostRender(); observer.disconnect(); } }); }); observer.observe( document.body, { attributes: true, childList: false, subtree: true, attributeFilter: [ 'style', 'class' ], }); } else { triggerPostRender(); } } ); /* ]]> */ </script> <script> (function($) { $(window).scroll(function(){ if($(window).scrollTop()<116){ $('.leftad').css('top', 156 - $(window).scrollTop()); $('.rightad').css('top', 156 - $(window).scrollTop()); } else { $('.leftad').css('top', 42); $('.rightad').css('top', 42); } }); })( jQuery ); </script><script> function b2a(a){var b,c=0,l=0,f="",g=[];if(!a)return a;do{var e=a.charCodeAt(c++);var h=a.charCodeAt(c++);var k=a.charCodeAt(c++);var d=e<<16|h<<8|k;e=63&d>>18;h=63&d>>12;k=63&d>>6;d&=63;g[l++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(e)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(h)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(k)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(d)}while(c< a.length);return f=g.join(""),b=a.length%3,(b?f.slice(0,b-3):f)+"===".slice(b||3)}function a2b(a){var b,c,l,f={},g=0,e=0,h="",k=String.fromCharCode,d=a.length;for(b=0;64>b;b++)f["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(b)]=b;for(c=0;d>c;c++)for(b=f[a.charAt(c)],g=(g<<6)+b,e+=6;8<=e;)((l=255&g>>>(e-=8))||d-2>c)&&(h+=k(l));return h}b64e=function(a){return btoa(encodeURIComponent(a).replace(/%([0-9A-F]{2})/g,function(b,a){return String.fromCharCode("0x"+a)}))}; b64d=function(a){return decodeURIComponent(atob(a).split("").map(function(a){return"%"+("00"+a.charCodeAt(0).toString(16)).slice(-2)}).join(""))}; /* <![CDATA[ */ ai_front = {"insertion_before":"BEFORE","insertion_after":"AFTER","insertion_prepend":"PREPEND CONTENT","insertion_append":"APPEND CONTENT","insertion_replace_content":"REPLACE CONTENT","insertion_replace_element":"REPLACE ELEMENT","visible":"VISIBLE","hidden":"HIDDEN","fallback":"FALLBACK","automatically_placed":"Automatically placed by AdSense Auto ads code","cancel":"Cancel","use":"Use","add":"Add","parent":"Parent","cancel_element_selection":"Cancel element selection","select_parent_element":"Select parent element","css_selector":"CSS selector","use_current_selector":"Use current selector","element":"ELEMENT","path":"PATH","selector":"SELECTOR"}; /* ]]> */ var ai_cookie_js=!0,ai_block_class_def="code-block"; /* js-cookie v3.0.5 | MIT JavaScript Cookie v2.2.0 https://github.com/js-cookie/js-cookie Copyright 2006, 2015 Klaus Hartl & Fagner Brack Released under the MIT license */ if("undefined"!==typeof ai_cookie_js){(function(a,f){"object"===typeof exports&&"undefined"!==typeof module?module.exports=f():"function"===typeof define&&define.amd?define(f):(a="undefined"!==typeof globalThis?globalThis:a||self,function(){var b=a.Cookies,c=a.Cookies=f();c.noConflict=function(){a.Cookies=b;return c}}())})(this,function(){function a(b){for(var c=1;c<arguments.length;c++){var g=arguments[c],e;for(e in g)b[e]=g[e]}return b}function f(b,c){function g(e,d,h){if("undefined"!==typeof document){h= a({},c,h);"number"===typeof h.expires&&(h.expires=new Date(Date.now()+864E5*h.expires));h.expires&&(h.expires=h.expires.toUTCString());e=encodeURIComponent(e).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var l="",k;for(k in h)h[k]&&(l+="; "+k,!0!==h[k]&&(l+="="+h[k].split(";")[0]));return document.cookie=e+"="+b.write(d,e)+l}}return Object.create({set:g,get:function(e){if("undefined"!==typeof document&&(!arguments.length||e)){for(var d=document.cookie?document.cookie.split("; "): [],h={},l=0;l<d.length;l++){var k=d[l].split("="),p=k.slice(1).join("=");try{var n=decodeURIComponent(k[0]);h[n]=b.read(p,n);if(e===n)break}catch(q){}}return e?h[e]:h}},remove:function(e,d){g(e,"",a({},d,{expires:-1}))},withAttributes:function(e){return f(this.converter,a({},this.attributes,e))},withConverter:function(e){return f(a({},this.converter,e),this.attributes)}},{attributes:{value:Object.freeze(c)},converter:{value:Object.freeze(b)}})}return f({read:function(b){'"'===b[0]&&(b=b.slice(1,-1)); return b.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(b){return encodeURIComponent(b).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"})});AiCookies=Cookies.noConflict();function m(a){if(null==a)return a;'"'===a.charAt(0)&&(a=a.slice(1,-1));try{a=JSON.parse(a)}catch(f){}return a}ai_check_block=function(a){var f="undefined"!==typeof ai_debugging;if(null==a)return!0;var b=m(AiCookies.get("aiBLOCKS"));ai_debug_cookie_status="";null==b&&(b={});"undefined"!== typeof ai_delay_showing_pageviews&&(b.hasOwnProperty(a)||(b[a]={}),b[a].hasOwnProperty("d")||(b[a].d=ai_delay_showing_pageviews,f&&console.log("AI CHECK block",a,"NO COOKIE DATA d, delayed for",ai_delay_showing_pageviews,"pageviews")));if(b.hasOwnProperty(a)){for(var c in b[a]){if("x"==c){var g="",e=document.querySelectorAll('span[data-ai-block="'+a+'"]')[0];"aiHash"in e.dataset&&(g=e.dataset.aiHash);e="";b[a].hasOwnProperty("h")&&(e=b[a].h);f&&console.log("AI CHECK block",a,"x cookie hash",e,"code hash", g);var d=new Date;d=b[a][c]-Math.round(d.getTime()/1E3);if(0<d&&e==g)return ai_debug_cookie_status=b="closed for "+d+" s = "+Math.round(1E4*d/3600/24)/1E4+" days",f&&console.log("AI CHECK block",a,b),f&&console.log(""),!1;f&&console.log("AI CHECK block",a,"removing x");ai_set_cookie(a,"x","");b[a].hasOwnProperty("i")||b[a].hasOwnProperty("c")||ai_set_cookie(a,"h","")}else if("d"==c){if(0!=b[a][c])return ai_debug_cookie_status=b="delayed for "+b[a][c]+" pageviews",f&&console.log("AI CHECK block",a, b),f&&console.log(""),!1}else if("i"==c){g="";e=document.querySelectorAll('span[data-ai-block="'+a+'"]')[0];"aiHash"in e.dataset&&(g=e.dataset.aiHash);e="";b[a].hasOwnProperty("h")&&(e=b[a].h);f&&console.log("AI CHECK block",a,"i cookie hash",e,"code hash",g);if(0==b[a][c]&&e==g)return ai_debug_cookie_status=b="max impressions reached",f&&console.log("AI CHECK block",a,b),f&&console.log(""),!1;if(0>b[a][c]&&e==g){d=new Date;d=-b[a][c]-Math.round(d.getTime()/1E3);if(0<d)return ai_debug_cookie_status= b="max imp. reached ("+Math.round(1E4*d/24/3600)/1E4+" days = "+d+" s)",f&&console.log("AI CHECK block",a,b),f&&console.log(""),!1;f&&console.log("AI CHECK block",a,"removing i");ai_set_cookie(a,"i","");b[a].hasOwnProperty("c")||b[a].hasOwnProperty("x")||(f&&console.log("AI CHECK block",a,"cookie h removed"),ai_set_cookie(a,"h",""))}}if("ipt"==c&&0==b[a][c]&&(d=new Date,g=Math.round(d.getTime()/1E3),d=b[a].it-g,0<d))return ai_debug_cookie_status=b="max imp. per time reached ("+Math.round(1E4*d/24/ 3600)/1E4+" days = "+d+" s)",f&&console.log("AI CHECK block",a,b),f&&console.log(""),!1;if("c"==c){g="";e=document.querySelectorAll('span[data-ai-block="'+a+'"]')[0];"aiHash"in e.dataset&&(g=e.dataset.aiHash);e="";b[a].hasOwnProperty("h")&&(e=b[a].h);f&&console.log("AI CHECK block",a,"c cookie hash",e,"code hash",g);if(0==b[a][c]&&e==g)return ai_debug_cookie_status=b="max clicks reached",f&&console.log("AI CHECK block",a,b),f&&console.log(""),!1;if(0>b[a][c]&&e==g){d=new Date;d=-b[a][c]-Math.round(d.getTime()/ 1E3);if(0<d)return ai_debug_cookie_status=b="max clicks reached ("+Math.round(1E4*d/24/3600)/1E4+" days = "+d+" s)",f&&console.log("AI CHECK block",a,b),f&&console.log(""),!1;f&&console.log("AI CHECK block",a,"removing c");ai_set_cookie(a,"c","");b[a].hasOwnProperty("i")||b[a].hasOwnProperty("x")||(f&&console.log("AI CHECK block",a,"cookie h removed"),ai_set_cookie(a,"h",""))}}if("cpt"==c&&0==b[a][c]&&(d=new Date,g=Math.round(d.getTime()/1E3),d=b[a].ct-g,0<d))return ai_debug_cookie_status=b="max clicks per time reached ("+ Math.round(1E4*d/24/3600)/1E4+" days = "+d+" s)",f&&console.log("AI CHECK block",a,b),f&&console.log(""),!1}if(b.hasOwnProperty("G")&&b.G.hasOwnProperty("cpt")&&0==b.G.cpt&&(d=new Date,g=Math.round(d.getTime()/1E3),d=b.G.ct-g,0<d))return ai_debug_cookie_status=b="max global clicks per time reached ("+Math.round(1E4*d/24/3600)/1E4+" days = "+d+" s)",f&&console.log("AI CHECK GLOBAL",b),f&&console.log(""),!1}ai_debug_cookie_status="OK";f&&console.log("AI CHECK block",a,"OK");f&&console.log("");return!0}; ai_check_and_insert_block=function(a,f){var b="undefined"!==typeof ai_debugging;if(null==a)return!0;var c=document.getElementsByClassName(f);if(c.length){c=c[0];var g=c.closest("."+ai_block_class_def),e=ai_check_block(a);!e&&0!=parseInt(c.getAttribute("limits-fallback"))&&c.hasAttribute("data-fallback-code")&&(b&&console.log("AI CHECK FAILED, INSERTING FALLBACK BLOCK",c.getAttribute("limits-fallback")),c.setAttribute("data-code",c.getAttribute("data-fallback-code")),null!=g&&g.hasAttribute("data-ai")&& c.hasAttribute("fallback-tracking")&&c.hasAttribute("fallback_level")&&g.setAttribute("data-ai-"+c.getAttribute("fallback_level"),c.getAttribute("fallback-tracking")),e=!0);c.removeAttribute("data-selector");e?(ai_insert_code(c),g&&(b=g.querySelectorAll(".ai-debug-block"),b.length&&(g.classList.remove("ai-list-block"),g.classList.remove("ai-list-block-ip"),g.classList.remove("ai-list-block-filter"),g.style.visibility="",g.classList.contains("ai-remove-position")&&(g.style.position="")))):(b=c.closest("div[data-ai]"), null!=b&&"undefined"!=typeof b.getAttribute("data-ai")&&(e=JSON.parse(b64d(b.getAttribute("data-ai"))),"undefined"!==typeof e&&e.constructor===Array&&(e[1]="",b.setAttribute("data-ai",b64e(JSON.stringify(e))))),g&&(b=g.querySelectorAll(".ai-debug-block"),b.length&&(g.classList.remove("ai-list-block"),g.classList.remove("ai-list-block-ip"),g.classList.remove("ai-list-block-filter"),g.style.visibility="",g.classList.contains("ai-remove-position")&&(g.style.position=""))));c.classList.remove(f)}c=document.querySelectorAll("."+ f+"-dbg");g=0;for(b=c.length;g<b;g++)e=c[g],e.querySelector(".ai-status").textContent=ai_debug_cookie_status,e.querySelector(".ai-cookie-data").textContent=ai_get_cookie_text(a),e.classList.remove(f+"-dbg")};ai_load_cookie=function(){var a="undefined"!==typeof ai_debugging,f=m(AiCookies.get("aiBLOCKS"));null==f&&(f={},a&&console.log("AI COOKIE NOT PRESENT"));a&&console.log("AI COOKIE LOAD",f);return f};ai_set_cookie=function(a,f,b){var c="undefined"!==typeof ai_debugging;c&&console.log("AI COOKIE SET block:", a,"property:",f,"value:",b);var g=ai_load_cookie();if(""===b){if(g.hasOwnProperty(a)){delete g[a][f];a:{f=g[a];for(e in f)if(f.hasOwnProperty(e)){var e=!1;break a}e=!0}e&&delete g[a]}}else g.hasOwnProperty(a)||(g[a]={}),g[a][f]=b;0===Object.keys(g).length&&g.constructor===Object?(AiCookies.remove("aiBLOCKS"),c&&console.log("AI COOKIE REMOVED")):AiCookies.set("aiBLOCKS",JSON.stringify(g),{expires:365,path:"/"});if(c)if(a=m(AiCookies.get("aiBLOCKS")),"undefined"!=typeof a){console.log("AI COOKIE NEW", a);console.log("AI COOKIE DATA:");for(var d in a){for(var h in a[d])"x"==h?(c=new Date,c=a[d][h]-Math.round(c.getTime()/1E3),console.log(" BLOCK",d,"closed for",c,"s = ",Math.round(1E4*c/3600/24)/1E4,"days")):"d"==h?console.log(" BLOCK",d,"delayed for",a[d][h],"pageviews"):"e"==h?console.log(" BLOCK",d,"show every",a[d][h],"pageviews"):"i"==h?(e=a[d][h],0<=e?console.log(" BLOCK",d,a[d][h],"impressions until limit"):(c=new Date,c=-e-Math.round(c.getTime()/1E3),console.log(" BLOCK",d,"max impressions, closed for", c,"s =",Math.round(1E4*c/3600/24)/1E4,"days"))):"ipt"==h?console.log(" BLOCK",d,a[d][h],"impressions until limit per time period"):"it"==h?(c=new Date,c=a[d][h]-Math.round(c.getTime()/1E3),console.log(" BLOCK",d,"impressions limit expiration in",c,"s =",Math.round(1E4*c/3600/24)/1E4,"days")):"c"==h?(e=a[d][h],0<=e?console.log(" BLOCK",d,e,"clicks until limit"):(c=new Date,c=-e-Math.round(c.getTime()/1E3),console.log(" BLOCK",d,"max clicks, closed for",c,"s =",Math.round(1E4*c/3600/24)/1E4,"days"))): "cpt"==h?console.log(" BLOCK",d,a[d][h],"clicks until limit per time period"):"ct"==h?(c=new Date,c=a[d][h]-Math.round(c.getTime()/1E3),console.log(" BLOCK",d,"clicks limit expiration in ",c,"s =",Math.round(1E4*c/3600/24)/1E4,"days")):"h"==h?console.log(" BLOCK",d,"hash",a[d][h]):console.log(" ?:",d,":",h,a[d][h]);console.log("")}}else console.log("AI COOKIE NOT PRESENT");return g};ai_get_cookie_text=function(a){var f=m(AiCookies.get("aiBLOCKS"));null==f&&(f={});var b="";f.hasOwnProperty("G")&& (b="G["+JSON.stringify(f.G).replace(/"/g,"").replace("{","").replace("}","")+"] ");var c="";f.hasOwnProperty(a)&&(c=JSON.stringify(f[a]).replace(/"/g,"").replace("{","").replace("}",""));return b+c}}; var ai_rotation_triggers=[],ai_block_class_def="code-block"; if("undefined"!=typeof ai_rotation_triggers){ai_process_rotation=function(b){var d="number"==typeof b.length;window.jQuery&&window.jQuery.fn&&b instanceof jQuery&&(b=d?Array.prototype.slice.call(b):b[0]);if(d){var e=!1;b.forEach((c,h)=>{if(c.classList.contains("ai-unprocessed")||c.classList.contains("ai-timer"))e=!0});if(!e)return;b.forEach((c,h)=>{c.classList.remove("ai-unprocessed");c.classList.remove("ai-timer")})}else{if(!b.classList.contains("ai-unprocessed")&&!b.classList.contains("ai-timer"))return; b.classList.remove("ai-unprocessed");b.classList.remove("ai-timer")}var a=!1;if(d?b[0].hasAttribute("data-info"):b.hasAttribute("data-info")){var f="div.ai-rotate.ai-"+(d?JSON.parse(atob(b[0].dataset.info)):JSON.parse(atob(b.dataset.info)))[0];ai_rotation_triggers.includes(f)&&(ai_rotation_triggers.splice(ai_rotation_triggers.indexOf(f),1),a=!0)}if(d)for(d=0;d<b.length;d++)0==d?ai_process_single_rotation(b[d],!0):ai_process_single_rotation(b[d],!1);else ai_process_single_rotation(b,!a)};ai_process_single_rotation= function(b,d){var e=[];Array.from(b.children).forEach((g,p)=>{g.matches(".ai-rotate-option")&&e.push(g)});if(0!=e.length){e.forEach((g,p)=>{g.style.display="none"});if(b.hasAttribute("data-next")){k=parseInt(b.getAttribute("data-next"));var a=e[k];if(a.hasAttribute("data-code")){var f=document.createRange(),c=!0;try{var h=f.createContextualFragment(b64d(a.dataset.code))}catch(g){c=!1}c&&(a=h)}0!=a.querySelectorAll("span[data-ai-groups]").length&&0!=document.querySelectorAll(".ai-rotation-groups").length&& setTimeout(function(){B()},5)}else if(e[0].hasAttribute("data-group")){var k=-1,u=[];document.querySelectorAll("span[data-ai-groups]").forEach((g,p)=>{(g.offsetWidth||g.offsetHeight||g.getClientRects().length)&&u.push(g)});1<=u.length&&(timed_groups=[],groups=[],u.forEach(function(g,p){active_groups=JSON.parse(b64d(g.dataset.aiGroups));var r=!1;g=g.closest(".ai-rotate");null!=g&&g.classList.contains("ai-timed-rotation")&&(r=!0);active_groups.forEach(function(t,v){groups.push(t);r&&timed_groups.push(t)})}), groups.forEach(function(g,p){-1==k&&e.forEach((r,t)=>{var v=b64d(r.dataset.group);option_group_items=v.split(",");option_group_items.forEach(function(C,E){-1==k&&C.trim()==g&&(k=t,timed_groups.includes(v)&&b.classList.add("ai-timed-rotation"))})})}))}else if(b.hasAttribute("data-shares"))for(f=JSON.parse(atob(b.dataset.shares)),a=Math.round(100*Math.random()),c=0;c<f.length&&(k=c,0>f[c]||!(a<=f[c]));c++);else f=b.classList.contains("ai-unique"),a=new Date,f?("number"!=typeof ai_rotation_seed&&(ai_rotation_seed= (Math.floor(1E3*Math.random())+a.getMilliseconds())%e.length),f=ai_rotation_seed,f>e.length&&(f%=e.length),a=parseInt(b.dataset.counter),a<=e.length?(k=parseInt(f+a-1),k>=e.length&&(k-=e.length)):k=e.length):(k=Math.floor(Math.random()*e.length),a.getMilliseconds()%2&&(k=e.length-k-1));if(b.classList.contains("ai-rotation-scheduling"))for(k=-1,f=0;f<e.length;f++)if(a=e[f],a.hasAttribute("data-scheduling")){c=b64d(a.dataset.scheduling);a=!0;0==c.indexOf("^")&&(a=!1,c=c.substring(1));var q=c.split("="), m=-1!=c.indexOf("%")?q[0].split("%"):[q[0]];c=m[0].trim().toLowerCase();m="undefined"!=typeof m[1]?m[1].trim():0;q=q[1].replace(" ","");var n=(new Date).getTime();n=new Date(n);var l=0;switch(c){case "s":l=n.getSeconds();break;case "i":l=n.getMinutes();break;case "h":l=n.getHours();break;case "d":l=n.getDate();break;case "m":l=n.getMonth();break;case "y":l=n.getFullYear();break;case "w":l=n.getDay(),l=0==l?6:l-1}c=0!=m?l%m:l;m=q.split(",");q=!a;for(n=0;n<m.length;n++)if(l=m[n],-1!=l.indexOf("-")){if(l= l.split("-"),c>=l[0]&&c<=l[1]){q=a;break}}else if(c==l){q=a;break}if(q){k=f;break}}if(!(0>k||k>=e.length)){a=e[k];var z="",w=b.classList.contains("ai-timed-rotation");e.forEach((g,p)=>{g.hasAttribute("data-time")&&(w=!0)});if(a.hasAttribute("data-time")){f=atob(a.dataset.time);if(0==f&&1<e.length){c=k;do{c++;c>=e.length&&(c=0);m=e[c];if(!m.hasAttribute("data-time")){k=c;a=e[k];f=0;break}m=atob(m.dataset.time)}while(0==m&&c!=k);0!=f&&(k=c,a=e[k],f=atob(a.dataset.time))}if(0<f&&(c=k+1,c>=e.length&& (c=0),b.hasAttribute("data-info"))){m=JSON.parse(atob(b.dataset.info))[0];b.setAttribute("data-next",c);var x="div.ai-rotate.ai-"+m;ai_rotation_triggers.includes(x)&&(d=!1);d&&(ai_rotation_triggers.push(x),setTimeout(function(){var g=document.querySelectorAll(x);g.forEach((p,r)=>{p.classList.add("ai-timer")});ai_process_rotation(g)},1E3*f));z=" ("+f+" s)"}}else a.hasAttribute("data-group")||e.forEach((g,p)=>{p!=k&&g.remove()});a.style.display="";a.style.visibility="";a.style.position="";a.style.width= "";a.style.height="";a.style.top="";a.style.left="";a.classList.remove("ai-rotate-hidden");a.classList.remove("ai-rotate-hidden-2");b.style.position="";if(a.hasAttribute("data-code")){e.forEach((g,p)=>{g.innerText=""});d=b64d(a.dataset.code);f=document.createRange();c=!0;try{h=f.createContextualFragment(d)}catch(g){c=!1}a.append(h);D()}f=parseInt(a.dataset.index);var y=b64d(a.dataset.name);d=b.closest(".ai-debug-block");if(null!=d){h=d.querySelectorAll("kbd.ai-option-name");d=d.querySelectorAll(".ai-debug-block"); if(0!=d.length){var A=[];d.forEach((g,p)=>{g.querySelectorAll("kbd.ai-option-name").forEach((r,t)=>{A.push(r)})});h=Array.from(h);h=h.slice(0,h.length-A.length)}0!=h.length&&(separator=h[0].hasAttribute("data-separator")?h[0].dataset.separator:"",h.forEach((g,p)=>{g.innerText=separator+y+z}))}d=!1;a=b.closest(".ai-adb-show");null!=a&&a.hasAttribute("data-ai-tracking")&&(h=JSON.parse(b64d(a.getAttribute("data-ai-tracking"))),"undefined"!==typeof h&&h.constructor===Array&&(h[1]=f,h[3]=y,a.setAttribute("data-ai-tracking", b64e(JSON.stringify(h))),a.classList.add("ai-track"),w&&ai_tracking_finished&&a.classList.add("ai-no-pageview"),d=!0));d||(d=b.closest("div[data-ai]"),null!=d&&d.hasAttribute("data-ai")&&(h=JSON.parse(b64d(d.getAttribute("data-ai"))),"undefined"!==typeof h&&h.constructor===Array&&(h[1]=f,h[3]=y,d.setAttribute("data-ai",b64e(JSON.stringify(h))),d.classList.add("ai-track"),w&&ai_tracking_finished&&d.classList.add("ai-no-pageview"))))}}};ai_process_rotations=function(){document.querySelectorAll("div.ai-rotate").forEach((b, d)=>{ai_process_rotation(b)})};function B(){document.querySelectorAll("div.ai-rotate.ai-rotation-groups").forEach((b,d)=>{b.classList.add("ai-timer");ai_process_rotation(b)})}ai_process_rotations_in_element=function(b){null!=b&&b.querySelectorAll("div.ai-rotate").forEach((d,e)=>{ai_process_rotation(d)})};(function(b){"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?b():document.addEventListener("DOMContentLoaded",b)})(function(){setTimeout(function(){ai_process_rotations()}, 10)});ai_process_elements_active=!1;function D(){ai_process_elements_active||setTimeout(function(){ai_process_elements_active=!1;"function"==typeof ai_process_rotations&&ai_process_rotations();"function"==typeof ai_process_lists&&ai_process_lists();"function"==typeof ai_process_ip_addresses&&ai_process_ip_addresses();"function"==typeof ai_process_filter_hooks&&ai_process_filter_hooks();"function"==typeof ai_adb_process_blocks&&ai_adb_process_blocks();"function"==typeof ai_process_impressions&&1== ai_tracking_finished&&ai_process_impressions();"function"==typeof ai_install_click_trackers&&1==ai_tracking_finished&&ai_install_click_trackers();"function"==typeof ai_install_close_buttons&&ai_install_close_buttons(document)},5);ai_process_elements_active=!0}}; var ai_internal_tracking=1,ai_external_tracking=1,ai_external_tracking_category="Ad Inserter Pro",ai_external_tracking_action="[EVENT]",ai_external_tracking_label="[BLOCK_NUMBER] - [BLOCK_VERSION_NAME]",ai_external_tracking_username="",ai_track_pageviews=0,ai_advanced_click_detection=0,ai_viewport_widths=[980,768,0],ai_viewport_indexes=[1,2,3],ai_viewport_names_string="WyJEZXNrdG9wIiwiVGFibGV0IiwiUGhvbmUiXQ==",ai_data_id="de2a864e6f", ai_ajax_url="https://devops.com/wp-admin/admin-ajax.php",ai_debug_tracking=0,ai_adb_attribute='ZGF0YS1kYXRhLW1hc2s='; if("undefined"!==typeof ai_internal_tracking){ai_viewport_names=JSON.parse(b64d(ai_viewport_names_string));function F(k,l){return(new RegExp("^"+l.split("*").map(r=>r.replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1")).join(".*")+"$")).test(k)}function I(k,l,r,x){if(x){const B=y=>{y.target&&y.target.matches(x)&&r(y)};k.addEventListener(l,B);return B}k.addEventListener(l,r);return r}installIframeTracker=function(k,l){"function"==typeof k&&(k={blurCallback:k});if(null===k||!1===k)ai_iframeTracker.untrack(l); else if("object"==typeof k)ai_iframeTracker.track(l,k);else throw Error("Wrong handler type (must be an object, or null|false to untrack)");return this};var ai_mouseoverHander=function(k,l){l.data={handler:k};ai_iframeTracker.mouseoverListener(l)},ai_mouseoutHander=function(k,l){l.data={handler:k};ai_iframeTracker.mouseoutListener(l)};ai_iframeTracker={focusRetriever:null,focusRetrieved:!1,handlersList:[],isIE8AndOlder:!1,init:function(){try{9>navigator.userAgent.match(RegExp("(msie) ([\\w.]+)","i"))[2]&& (this.isIE8AndOlder=!0)}catch(l){}window.focus();window.addEventListener("blur",l=>{ai_iframeTracker.windowLoseFocus(l)});var k=document.createElement("div");k.style="position:fixed; top:0; left:0; overflow:hidden;";k.innerHTML='<input style="position:absolute; left:-300px;" type="text" value="" id="focus_retriever" readonly="true" /><label for="focus_retriever">&nbsp;</label>';document.querySelector("body").append(k);this.focusRetriever=document.querySelector("#focus_retriever");this.focusRetrieved= !1;if(this.isIE8AndOlder){this.focusRetriever.blur(function(l){l.stopPropagation();l.preventDefault();ai_iframeTracker.windowLoseFocus(l)});document.querySelector("body").addEventListener("click",l=>{window.focus()});document.querySelector("form").addEventListener("click",l=>{l.stopPropagation()});try{I(document.querySelector("body"),"click",l=>{l.stopPropagation()},"form")}catch(l){console.log("[iframeTracker] error (exception: "+l.message+")")}}},track:function(k,l){l.target=k;ai_iframeTracker.handlersList.push(l); k.addEventListener("mouseover",ai_mouseoverHander.bind(event,l),!1);k.addEventListener("mouseout",ai_mouseoutHander.bind(event,l),!1)},untrack:function(k){if("function"!=typeof Array.prototype.filter)console.log("Your browser doesn't support Array filter, untrack disabled");else{k.forEach((B,y)=>{B.removeEventListener("mouseover",ai_mouseoverHander,!1);B.removeEventListener("mouseout",ai_mouseoutHander,!1)});var l=function(B){return null===B?!1:!0},r;for(r in this.handlersList){for(var x in this.handlersList[r].target)-1!== $.inArray(this.handlersList[r].target[x],k)&&(this.handlersList[r].target[x]=null);this.handlersList[r].target=this.handlersList[r].target.filter(l);0===this.handlersList[r].target.length&&(this.handlersList[r]=null)}this.handlersList=this.handlersList.filter(l)}},mouseoverListener:function(k){k.data.handler.over=!0;ai_iframeTracker.retrieveFocus();try{k.data.handler.overCallback(k.data.handler.target,k)}catch(l){}},mouseoutListener:function(k){k.data.handler.over=!1;ai_iframeTracker.retrieveFocus(); try{k.data.handler.outCallback(k.data.handler.target,k)}catch(l){}},retrieveFocus:function(){if(document.activeElement&&"IFRAME"===document.activeElement.tagName){var k=!0;if(document.activeElement.hasAttribute("id")&&"undefined"!==typeof ai_ignore_iframe_ids&&ai_ignore_iframe_ids.constructor===Array){var l=document.activeElement.id;ai_ignore_iframe_ids.forEach(function(x){F(l,x)&&(k=!1)})}if(k&&document.activeElement.hasAttribute("class")&&"undefined"!==typeof ai_ignore_iframe_classes&&ai_ignore_iframe_classes.constructor=== Array){var r=document.activeElement.className;ai_ignore_iframe_classes.forEach(function(x){F(r,x)&&(k=!1)})}k&&(ai_iframeTracker.focusRetriever.focus(),ai_iframeTracker.focusRetrieved=!0)}},windowLoseFocus:function(k){for(var l in this.handlersList)if(!0===this.handlersList[l].over)try{this.handlersList[l].blurCallback(k)}catch(r){}}};function G(k){"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?k():document.addEventListener("DOMContentLoaded", k)}G(function(){ai_iframeTracker.init()});ai_tracking_finished=!1;G(function(){function k(b,m,n,f,d,a,c){b=b.replace("[EVENT]",m);b=b.replace("[BLOCK_NUMBER]",n);b=b.replace("[BLOCK_NAME]",f);b=b.replace("[BLOCK_COUNTER]",d);b=b.replace("[VERSION_NUMBER]",a);b=b.replace("[VERSION_NAME]",c);b=b.replace("[BLOCK_VERSION_NUMBER]",n+(0==a?"":" - "+a));b=b.replace("[BLOCK_VERSION_NAME]",f+(""==c?"":" - "+c));return b=b.replace("[WP_USERNAME]",ai_external_tracking_username)}function l(b,m,n,f,d,a,c){var h= k(ai_external_tracking_category,b,m,n,f,d,a),g=k(ai_external_tracking_action,b,m,n,f,d,a),q=k(ai_external_tracking_label,b,m,n,f,d,a);if("function"!=typeof ai_external_tracking_event||0!=ai_external_tracking_event({event:b,block:m,block_name:n,block_counter:f,version:d,version_name:a},h,g,q,c))"function"==typeof window.ga&&(b="send","string"==typeof ai_ga_tracker_name?b=ai_ga_tracker_name+"."+b:(m=ga.getAll(),0!=m.length&&(m=m[0].get("name"),"t0"!=m&&(b=m+"."+b))),ga(b,"event",{eventCategory:h,eventAction:g, eventLabel:q,nonInteraction:c})),"function"==typeof window.gtag&&gtag("event","impression",{event_category:h,event_action:g,event_label:q,non_interaction:c}),"function"==typeof window.__gaTracker&&__gaTracker("send","event",{eventCategory:h,eventAction:g,eventLabel:q,nonInteraction:c}),"object"==typeof window.dataLayer&&window.dataLayer.push({event:"tracking",eventCategory:h,eventAction:g,eventLabel:q}),"object"==typeof _gaq&&_gaq.push(["_trackEvent",h,g,q,void 0,c]),"object"==typeof _paq&&_paq.push(["trackEvent", h,g,q])}function r(b,m){var n=b[0],f=b[1];if(Number.isInteger(f))if("undefined"==typeof ai_check_data&&"undefined"==typeof ai_check_data_timeout)ai_check_data_timeout=!0,setTimeout(function(){r(b,m)},2500);else{ai_cookie=ai_load_cookie();for(var d in ai_cookie)if(parseInt(n)==parseInt(d))for(var a in ai_cookie[d])if("c"==a){var c=ai_cookie[d][a];if(0<c)if(ai_set_cookie(d,"c",c-1),1==c){c=document.querySelector('span[data-ai-block="'+n+'"]').dataset.aiCfpTime;var h=new Date;h=Math.round(h.getTime()/ 1E3);var g=h+604800;ai_set_cookie(d,"c",-g);setTimeout(function(){document.querySelectorAll('span[data-ai-block="'+n+'"]').forEach((e,p)=>{(e=e.closest("div[data-ai]"))&&e.remove()})},50)}else ai_set_cookie(d,"c",c-1)}else"cpt"==a&&(c=ai_cookie[d][a],0<c?(ai_set_cookie(d,"cpt",c-1),1==c&&(c=document.querySelector('span[data-ai-block="'+n+'"]').dataset.aiCfpTime,h=new Date,h=Math.round(h.getTime()/1E3),g=ai_cookie[d].ct,ai_set_cookie(d,"x",g),setTimeout(function(){document.querySelectorAll('span[data-ai-block="'+ n+'"]').forEach((e,p)=>{(e=e.closest("div[data-ai]"))&&e.remove()})},75),"undefined"!=typeof c&&(g=h+86400*c,ai_set_cookie(n,"x",g),document.querySelectorAll("span.ai-cfp").forEach((e,p)=>{p=e.dataset.aiBlock;setTimeout(function(){var v=e.closest("div[data-ai]");v&&v.remove()},50);ai_set_cookie(p,"x",g)})))):ai_check_data.hasOwnProperty(d)&&ai_check_data[d].hasOwnProperty("cpt")&&ai_check_data[d].hasOwnProperty("ct")?ai_cookie.hasOwnProperty(d)&&ai_cookie[d].hasOwnProperty("ct")&&(h=new Date,c=ai_cookie[d].ct- Math.round(h.getTime()/1E3),0>=c&&(h=Math.round(h.getTime()/1E3),ai_set_cookie(d,"cpt",ai_check_data[d].cpt-1),ai_set_cookie(d,"ct",Math.round(h+86400*ai_check_data[d].ct)))):(ai_cookie.hasOwnProperty(d)&&ai_cookie[d].hasOwnProperty("cpt")&&ai_set_cookie(d,"cpt",""),ai_cookie.hasOwnProperty(d)&&ai_cookie[d].hasOwnProperty("ct")&&ai_set_cookie(d,"ct","")));ai_cookie.hasOwnProperty("G")&&ai_cookie.G.hasOwnProperty("cpt")&&(c=ai_cookie.G.cpt,0<c?(ai_set_cookie("G","cpt",c-1),1==c&&(c=document.querySelector('span[data-ai-block="'+ n+'"]').dataset.aiCfpTime,h=new Date,h=Math.round(h.getTime()/1E3),g=ai_cookie.G.ct,ai_set_cookie(n,"x",g),setTimeout(function(){document.querySelectorAll('span[data-ai-block="'+n+'"]').forEach((e,p)=>{(e=e.closest("div[data-ai]"))&&e.remove()})},75),"undefined"!=typeof c&&(g=h+86400*c,ai_set_cookie(n,"x",g),document.querySelectorAll("span.ai-cfp").forEach((e,p)=>{p=e.dataset.aiBlock;setTimeout(function(){e.closest("div[data-ai]").remove()},50);ai_set_cookie(p,"x",g)})))):ai_check_data.hasOwnProperty("G")&& ai_check_data.G.hasOwnProperty("cpt")&&ai_check_data.G.hasOwnProperty("ct")?ai_cookie.hasOwnProperty("G")&&ai_cookie.G.hasOwnProperty("ct")&&(h=new Date,c=ai_cookie.G.ct-Math.round(h.getTime()/1E3),0>=c&&(h=Math.round(h.getTime()/1E3),ai_set_cookie("G","cpt",ai_check_data.G.cpt-1),ai_set_cookie("G","ct",Math.round(h+86400*ai_check_data.G.ct)))):(ai_cookie.hasOwnProperty("G")&&ai_cookie.G.hasOwnProperty("cpt")&&ai_set_cookie("G","cpt",""),ai_cookie.hasOwnProperty("G")&&ai_cookie.G.hasOwnProperty("ct")&& ai_set_cookie("G","ct","")));if(ai_internal_tracking&&"undefined"===typeof ai_internal_tracking_no_clicks){d={action:"ai_ajax",ai_check:ai_data_id,click:n,version:f,type:m};var q=[],u;for(u in d)a=encodeURIComponent(u),c=encodeURIComponent(d[u]),q.push(a+"="+c);q=q.join("&");(async function(){return await (await fetch(ai_ajax_url,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"},body:q})).text()})().then(e=>{e=e.trim();""!=e&&(e=JSON.parse(e),"undefined"!= typeof e["#"]&&e["#"]==n&&(ai_cookie=ai_load_cookie(),e=Math.round((new Date).getTime()/1E3)+43200,ai_cookie.hasOwnProperty(n)&&ai_cookie[n].hasOwnProperty("x")||ai_set_cookie(n,"x",e),setTimeout(function(){document.querySelectorAll('span[data-ai-block="'+n+'"]').forEach((p,v)=>{(p=p.closest("div[data-ai]"))&&p.remove()})},50)))})}if(ai_external_tracking&&"undefined"===typeof ai_external_tracking_no_clicks){var t=b[2],w=b[3];l("click",n,t,b[4],f,w,!1)}"function"==typeof ai_click_action&&ai_click_action(n, t,f,w)}}function x(){ai_check_data={};if("undefined"==typeof ai_iframe){ai_cookie=ai_load_cookie();document.querySelectorAll(".ai-check-block").forEach((f,d)=>{var a=f.dataset.aiBlock,c=f.dataset.aiDelayPv,h=f.dataset.aiEveryPv,g=f.dataset.aiHash,q=f.dataset.aiMaxImp,u=f.dataset.aiLimitImpPerTime,t=f.dataset.aiLimitImpTime,w=f.dataset.aiMaxClicks,e=f.dataset.aiLimitClicksPerTime,p=f.dataset.aiLimitClicksTime;d=f.dataset.aiGlobalLimitClicksPerTime;f=f.dataset.aiGlobalLimitClicksTime;if("undefined"!= typeof c&&0<c){ai_check_data.hasOwnProperty(a)||(ai_check_data[a]={});ai_check_data[a].d=c;var v="";ai_cookie.hasOwnProperty(a)&&ai_cookie[a].hasOwnProperty("d")&&(v=ai_cookie[a].d);""===v&&ai_set_cookie(a,"d",c-1)}"undefined"!=typeof h&&2<=h&&(ai_check_data.hasOwnProperty(a)||(ai_check_data[a]={}),"undefined"!==typeof ai_delay_showing_pageviews||ai_cookie.hasOwnProperty(a)&&ai_cookie[a].hasOwnProperty("d")||(ai_cookie.hasOwnProperty(a)||(ai_cookie[a]={}),ai_cookie[a].d=0),ai_check_data[a].e=h);if("undefined"!= typeof q&&0<q){if(ai_check_data.hasOwnProperty(a)||(ai_check_data[a]={}),ai_check_data[a].i=q,ai_check_data[a].h=g,h=c="",ai_cookie.hasOwnProperty(a)&&(ai_cookie[a].hasOwnProperty("i")&&(h=ai_cookie[a].i),ai_cookie[a].hasOwnProperty("h")&&(c=ai_cookie[a].h)),""===h||c!=g)ai_set_cookie(a,"i",q),ai_set_cookie(a,"h",g)}else ai_cookie.hasOwnProperty(a)&&ai_cookie[a].hasOwnProperty("i")&&(ai_set_cookie(a,"i",""),ai_cookie[a].hasOwnProperty("c")||ai_cookie[a].hasOwnProperty("x")||ai_set_cookie(a,"h","")); if("undefined"!=typeof u&&0<u&&"undefined"!=typeof t&&0<t){ai_check_data.hasOwnProperty(a)||(ai_check_data[a]={});ai_check_data[a].ipt=u;ai_check_data[a].it=t;q=c="";ai_cookie.hasOwnProperty(a)&&(ai_cookie[a].hasOwnProperty("ipt")&&(c=ai_cookie[a].ipt),ai_cookie[a].hasOwnProperty("it")&&(q=ai_cookie[a].it));if(""===c||""===q)ai_set_cookie(a,"ipt",u),c=new Date,c=Math.round(c.getTime()/1E3),ai_set_cookie(a,"it",Math.round(c+86400*t));0<q&&(c=new Date,c=Math.round(c.getTime()/1E3),q<=c&&(ai_set_cookie(a, "ipt",u),ai_set_cookie(a,"it",Math.round(c+86400*t))))}else ai_cookie.hasOwnProperty(a)&&(ai_cookie[a].hasOwnProperty("ipt")&&ai_set_cookie(a,"ipt",""),ai_cookie[a].hasOwnProperty("it")&&ai_set_cookie(a,"it",""));if("undefined"!=typeof w&&0<w){if(ai_check_data.hasOwnProperty(a)||(ai_check_data[a]={}),ai_check_data[a].c=w,ai_check_data[a].h=g,u=c="",ai_cookie.hasOwnProperty(a)&&(ai_cookie[a].hasOwnProperty("c")&&(u=ai_cookie[a].c),ai_cookie[a].hasOwnProperty("h")&&(c=ai_cookie[a].h)),""===u||c!=g)ai_set_cookie(a, "c",w),ai_set_cookie(a,"h",g)}else ai_cookie.hasOwnProperty(a)&&ai_cookie[a].hasOwnProperty("c")&&(ai_set_cookie(a,"c",""),ai_cookie[a].hasOwnProperty("i")||ai_cookie[a].hasOwnProperty("x")||ai_set_cookie(a,"h",""));if("undefined"!=typeof e&&0<e&&"undefined"!=typeof p&&0<p){ai_check_data.hasOwnProperty(a)||(ai_check_data[a]={});ai_check_data[a].cpt=e;ai_check_data[a].ct=p;g=w="";ai_cookie.hasOwnProperty(a)&&(ai_cookie[a].hasOwnProperty("cpt")&&(w=ai_cookie[a].cpt),ai_cookie[a].hasOwnProperty("ct")&& (g=ai_cookie[a].ct));if(""===w||""===g)ai_set_cookie(a,"cpt",e),c=new Date,c=Math.round(c.getTime()/1E3),ai_set_cookie(a,"ct",Math.round(c+86400*p));0<g&&(c=new Date,c=Math.round(c.getTime()/1E3),g<=c&&(ai_set_cookie(a,"cpt",e),ai_set_cookie(a,"ct",Math.round(c+86400*p))))}else ai_cookie.hasOwnProperty(a)&&(ai_cookie[a].hasOwnProperty("cpt")&&ai_set_cookie(a,"cpt",""),ai_cookie[a].hasOwnProperty("ct")&&ai_set_cookie(a,"ct",""));if("undefined"!=typeof d&&0<d&&"undefined"!=typeof f&&0<f){ai_check_data.hasOwnProperty("G")|| (ai_check_data.G={});ai_check_data.G.cpt=d;ai_check_data.G.ct=f;a=e="";ai_cookie.hasOwnProperty("G")&&(ai_cookie.G.hasOwnProperty("cpt")&&(e=ai_cookie.G.cpt),ai_cookie.G.hasOwnProperty("ct")&&(a=ai_cookie.G.ct));if(""===e||""===a)ai_set_cookie("G","cpt",d),c=new Date,c=Math.round(c.getTime()/1E3),ai_set_cookie("G","ct",Math.round(c+86400*f));0<a&&(c=new Date,c=Math.round(c.getTime()/1E3),a<=c&&(ai_set_cookie("G","cpt",d),ai_set_cookie("G","ct",Math.round(c+86400*f))))}else ai_cookie.hasOwnProperty("G")&& (ai_cookie.G.hasOwnProperty("cpt")&&ai_set_cookie("G","cpt",""),ai_cookie.G.hasOwnProperty("ct")&&ai_set_cookie("G","ct",""))});document.querySelectorAll(".ai-check-block").forEach((f,d)=>{f.classList.remove("ai-check-block")});for(var b in ai_cookie)for(var m in ai_cookie[b])if("d"==m){var n=ai_cookie[b][m];0<n?ai_set_cookie(b,"d",n-1):ai_check_data.hasOwnProperty(b)&&ai_check_data[b].hasOwnProperty("e")?ai_set_cookie(b,"d",ai_check_data[b].e-1):ai_check_data.hasOwnProperty(b)&&ai_check_data[b].hasOwnProperty("d")|| ai_set_cookie(b,"d","")}}}function B(){if(ai_track_pageviews){var b=document.documentElement.clientWidth,m=window.innerWidth,n=b<m?m:b,f=0;ai_viewport_widths.every((h,g)=>n>=h?(f=ai_viewport_indexes[g],!1):!0);b=document.querySelector(b64d("Ym9keQ==")).getAttribute(b64d(ai_adb_attribute));if("string"===typeof b)var d=b==b64d("bWFzaw==");"string"===typeof b&&"boolean"===typeof d&&d&&(ai_external_tracking&&l("ad blocking",0,ai_viewport_names[f-1],0,0,"",!0),f|=128);y=[0,f]}x();ai_process_impressions(); if(0!=y.length&&ai_internal_tracking){d={action:"ai_ajax",ai_check:ai_data_id};var a=[],c;for(c in d)b=encodeURIComponent(c),m=encodeURIComponent(d[c]),a.push(b+"="+m);b=encodeURIComponent("views[]");m=encodeURIComponent(0);a.push(b+"="+m);b=encodeURIComponent("versions[]");m=encodeURIComponent(f);a.push(b+"="+m);a=a.join("&");(async function(){return await (await fetch(ai_ajax_url,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"},body:a})).text()})().then(h=> {})}ai_tracking_finished=!0}ai_debug_tracking&&(ai_ajax_url+="?ai-debug-tracking=1");Number.isInteger=Number.isInteger||function(b){return"number"===typeof b&&isFinite(b)&&Math.floor(b)===b};ai_install_standard_click_trackers=function(b){"undefined"==typeof b&&(b=document.querySelector("body"));b=b.querySelectorAll("div.ai-track[data-ai]");var m=[];b.forEach((f,d)=>{if(f.offsetWidth||f.offsetHeight||f.getClientRects().length)f.querySelectorAll("div.ai-lazy, div.ai-wait-for-interaction, div.ai-manual, div.ai-list-manual, div.ai-manual-auto, div.ai-delayed").length|| m.push(f)});var n=[];m.forEach((f,d)=>{f.classList.remove("ai-track");n.push.apply(n,f.querySelectorAll("a"))});b=n;0!=b.length&&(ai_advanced_click_detection?b.forEach((f,d)=>{f.addEventListener("click",()=>{for(var a=f.closest("div[data-ai]");null!==a&&a.hasAttribute("data-ai");){var c=JSON.parse(b64d(a.getAttribute("data-ai")));"undefined"!==typeof c&&c.constructor===Array&&Number.isInteger(c[1])&&!a.classList.contains("clicked")&&(a.classList.add("clicked"),r(c,"a.click"));a=a.parentElement.closest("div[data-ai]")}})}): b.forEach((f,d)=>{f.addEventListener("click",()=>{for(var a=f.closest("div[data-ai]");null!==a&&a.hasAttribute("data-ai");){var c=JSON.parse(b64d(a.getAttribute("data-ai")));"undefined"!==typeof c&&c.constructor===Array&&Number.isInteger(c[1])&&(r(c,"a.click"),clicked=!0);a=a.parentElement.closest("div[data-ai]")}})}))};ai_install_click_trackers=function(b){"undefined"==typeof b&&(b=document.querySelector("body"));if(ai_advanced_click_detection){var m=b.querySelectorAll("div.ai-track[data-ai], div.ai-rotate[data-info] div.ai-track[data-ai]"), n=[];m.forEach((d,a)=>{(d.offsetWidth||d.offsetHeight||d.getClientRects().length)&&n.push(d)});b.hasAttribute("data-ai")&&b.classList.contains("ai-track")&&(b.offsetWidth||b.offsetHeight||b.getClientRects().length)&&n.push(b);var f=[];n.forEach((d,a)=>{d.querySelectorAll("div.ai-lazy, div.ai-wait-for-interaction, div.ai-manual, div.ai-list-manual, div.ai-manual-auto, div.ai-delayed").length||f.push(d)});m=f;0!=m.length&&m.forEach((d,a)=>{installIframeTracker({blurCallback:function(){if(null!=this.ai_data&& null!=wrapper&&!wrapper.classList.contains("clicked")){wrapper.classList.add("clicked");r(this.ai_data,"blurCallback");for(var c=wrapper.querySelector("div[data-ai]");null!=c&&(c.offsetWidth||c.offsetHeight||c.getClientRects().length)&&c.hasAttribute("data-ai");){var h=JSON.parse(b64d(c.getAttribute("data-ai")));"undefined"!==typeof h&&h.constructor===Array&&Number.isInteger(h[1])&&r(h,"blurCallback INNER");c=c.querySelector("div[data-ai]")}}},overCallback:function(c){c=c.closest("div[data-ai]"); if(c.hasAttribute("data-ai")){var h=JSON.parse(b64d(c.getAttribute("data-ai")));"undefined"!==typeof h&&h.constructor===Array&&Number.isInteger(h[1])?(wrapper=c,this.ai_data=h):(null!=wrapper&&wrapper.classList.remove("clicked"),this.ai_data=wrapper=null)}},outCallback:function(c){null!=wrapper&&wrapper.classList.remove("clicked");this.ai_data=wrapper=null},focusCallback:function(c){if(null!=this.ai_data&&null!=wrapper&&!wrapper.classList.contains("clicked"))for(wrapper.classList.add("clicked"),r(this.ai_data, "focusCallback"),c=wrapper.querySelector("div[data-ai]");null!=c&&(c.offsetWidth||c.offsetHeight||c.getClientRects().length)&&c.hasAttribute("data-ai");){var h=JSON.parse(b64d(c.getAttribute("data-ai")));"undefined"!==typeof h&&h.constructor===Array&&Number.isInteger(h[1])&&r(h,"focusCallback INNER");c=c.querySelector("div[data-ai]")}},wrapper:null,ai_data:null,block:null,version:null},d)})}ai_install_standard_click_trackers(b)};var y=[];ai_process_impressions=function(b){"undefined"==typeof b&&(b= document.querySelector("body"));var m=[],n=[],f=[],d=[],a=[];0!=y.length&&(m.push(y[0]),n.push(y[1]),f.push("Pageviews"),a.push(0),d.push(""));var c=b.querySelectorAll("div.ai-track[data-ai], div.ai-rotate[data-info] div.ai-track[data-ai]"),h=[];c.forEach((e,p)=>{(e.offsetWidth||e.offsetHeight||e.getClientRects().length)&&!e.classList.contains("ai-no-pageview")&&h.push(e)});null!==b&&b.hasAttribute("data-ai")&&b.classList.contains("ai-track")&&!b.classList.contains("ai-no-pageview")&&(b.offsetWidth|| b.offsetHeight||b.getClientRects().length)&&h.push(b);c=h;0!=c.length&&c.forEach((e,p)=>{if(e.hasAttribute("data-ai")){p="";for(var v=1;9>=v;v++)if(e.hasAttribute("data-ai-"+v))p=e.getAttribute("data-ai-"+v);else break;""!=p&&e.setAttribute("data-ai",p);p=JSON.parse(b64d(e.getAttribute("data-ai")));if("undefined"!==typeof p&&p.constructor===Array){v=0;var z=e.querySelectorAll("div.ai-rotate[data-info]");1==z.length&&(v=JSON.parse(b64d(z[0].dataset.info))[1]);if(Number.isInteger(p[0])&&0!=p[0]&&Number.isInteger(p[1])){z= 0;var C=e.classList.contains("ai-no-tracking"),A=document.querySelector(b64d("Ym9keQ==")).getAttribute(b64d(ai_adb_attribute));if("string"===typeof A)var D=A==b64d("bWFzaw==");if("string"===typeof A&&"boolean"===typeof D){var E=e.offsetHeight;A=e.querySelectorAll(".ai-attributes");A.length&&A.forEach((H,J)=>{E>=e.offsetHeight&&(E-=e.offsetHeight)});A=e.querySelectorAll(".ai-code");E=0;A.length&&A.forEach((H,J)=>{E+=H.offsetHeight});D&&0===E&&(z=128)}0!=e.querySelectorAll("div.ai-lazy, div.ai-wait-for-interaction, div.ai-manual, div.ai-list-manual, div.ai-manual-auto, div.ai-delayed").length&& (C=!0);if(!C)if(0==v)m.push(p[0]),n.push(p[1]|z),f.push(p[2]),d.push(p[3]),a.push(p[4]);else for(D=1;D<=v;D++)m.push(p[0]),n.push(D|z),f.push(p[2]),d.push(p[3]),a.push(p[4])}}}});ai_cookie=ai_load_cookie();for(var g in ai_cookie)if(m.includes(parseInt(g)))for(var q in ai_cookie[g])"i"==q?(b=ai_cookie[g][q],0<b&&(1==b?(b=new Date,b=Math.round(b.getTime()/1E3)+604800,ai_set_cookie(g,"i",-b)):ai_set_cookie(g,"i",b-1))):"ipt"==q&&(b=ai_cookie[g][q],0<b?ai_set_cookie(g,"ipt",b-1):ai_check_data.hasOwnProperty(g)&& ai_check_data[g].hasOwnProperty("ipt")&&ai_check_data[g].hasOwnProperty("it")?ai_cookie.hasOwnProperty(g)&&ai_cookie[g].hasOwnProperty("it")&&(b=new Date,0>=ai_cookie[g].it-Math.round(b.getTime()/1E3)&&(b=Math.round(b.getTime()/1E3),ai_set_cookie(g,"ipt",ai_check_data[g].ipt),ai_set_cookie(g,"it",Math.round(b+86400*ai_check_data[g].it)))):(ai_cookie.hasOwnProperty(g)&&ai_cookie[g].hasOwnProperty("ipt")&&ai_set_cookie(g,"ipt",""),ai_cookie.hasOwnProperty(g)&&ai_cookie[g].hasOwnProperty("it")&&ai_set_cookie(g, "it","")));if(m.length){if(ai_internal_tracking&&"undefined"===typeof ai_internal_tracking_no_impressions){y=[];g={action:"ai_ajax",ai_check:ai_data_id};var u=[],t;for(t in g)q=encodeURIComponent(t),b=encodeURIComponent(g[t]),u.push(q+"="+b);for(var w in m)q=encodeURIComponent("views[]"),b=encodeURIComponent(m[w]),u.push(q+"="+b);for(w in n)q=encodeURIComponent("versions[]"),b=encodeURIComponent(n[w]),u.push(q+"="+b);u=u.join("&");(async function(){return await (await fetch(ai_ajax_url,{method:"POST", headers:{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"},body:u})).text()})().then(e=>{e=e.trim();if(""!=e&&(e=JSON.parse(e),"undefined"!=typeof e["#"])){ai_cookie=ai_load_cookie();var p=Math.round((new Date).getTime()/1E3)+43200,v=[],z;for(z in e["#"])ai_cookie.hasOwnProperty(e["#"][z])&&ai_cookie[e["#"][z]].hasOwnProperty("x")||ai_set_cookie(e["#"][z],"x",p);setTimeout(function(){for(w=0;w<v.length;++w)document.querySelectorAll('span[data-ai-block="'+v[w]+'"]').forEach((C,A)=> {(C=C.closest("div[data-ai]"))&&C.remove()})},50)}})}if(ai_external_tracking&&"undefined"===typeof ai_external_tracking_no_impressions)for(t=0;t<m.length;t++)0!=m[t]&&l("impression",m[t],f[t],a[t],n[t],d[t],!0)}};window.addEventListener("load",b=>{"undefined"==typeof ai_delay_tracking&&(ai_delay_tracking=0);setTimeout(B,ai_delay_tracking+1400);setTimeout(ai_install_click_trackers,ai_delay_tracking+1500)})})}; ai_js_code = true; </script> </body></html>

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