Files
nexus/sreweekly/articles/392/03-if-p99-latency-is-bs-what-s-the-alternative.html
2026-09-12 17:23:01 +08:00

10224 lines
1.2 MiB
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en-US">
<head>
<!-- Preconnects and Prefetches -->
<link rel="preconnect" href="https://cdn.thenewstack.io">
<link rel="dns-prefetch" href="https://cdn.thenewstack.io">
<link rel="preconnect" href="https://www.googletagmanager.com">
<link rel="dns-prefetch" href="https://www.googletagmanager.com">
<link rel="preconnect" href="https://www.google-analytics.com">
<link rel="dns-prefetch" href="https://www.google-analytics.com">
<link rel="preconnect" href="https://gstatic.com">
<link rel="dns-prefetch" href="https://gstatic.com">
<link rel="preconnect" href="https://google.com">
<link rel="dns-prefetch" href="https://google.com">
<link rel="preconnect" href="https://pagead2.googlesyndication.com">
<link rel="dns-prefetch" href="https://pagead2.googlesyndication.com">
<link rel="preconnect" href="https://securepubads.g.doubleclick.net">
<link rel="dns-prefetch" href="https://securepubads.g.doubleclick.net">
<link rel="preconnect" href="https://static.cloudflareinsights.com">
<link rel="dns-prefetch" href="https://static.cloudflareinsights.com">
<link rel="preconnect" href="https://connect.facebook.net">
<link rel="dns-prefetch" href="https://connect.facebook.net">
<link rel="preconnect" href="https://snap.licdn.com">
<link rel="dns-prefetch" href="https://snap.licdn.com">
<link rel="preconnect" href="https://challenges.cloudflare.com">
<link rel="dns-prefetch" href="https://challenges.cloudflare.com">
<link rel="preconnect" href="https://www.clarity.ms">
<link rel="dns-prefetch" href="https://www.clarity.ms">
<link rel="preconnect" href="https://bat.bing.com">
<link rel="dns-prefetch" href="https://bat.bing.com">
<link rel="preconnect" href="https://analytics.twitter.com">
<link rel="dns-prefetch" href="https://analytics.twitter.com">
<link rel="preconnect" href="https://static.trueanthem.com">
<link rel="dns-prefetch" href="https://static.trueanthem.com">
<link rel="preconnect" href="https://js.hs-scripts.com">
<link rel="dns-prefetch" href="https://js.hs-scripts.com">
<!-- BlueConic -->
<script src="https://v923.thenewstack.io/script.js"></script>
<script>
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
categories : 'operations'
});
</script>
<!-- Google Tag Manager (Container ID: GTM-NJH9PKQS) -->
<script>window.dataLayer = window.dataLayer || [];</script>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.setAttributeNode(d.createAttribute('data-ot-ignore'));
j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-NJH9PKQS');</script>
<!-- End Google Tag Manager -->
<script>
(function() {
try {
/// Ensure dataLayer exists
window.dataLayer = window.dataLayer || [];
/// Preserve original push
var originalPush = window.dataLayer.push.bind(window.dataLayer);
var tnsCategories = 'operations';
function readCookie(key) {
try {
/// Prefer site utility if available
if (window.tns && typeof window.tns.getCookie === 'function') {
return window.tns.getCookie(key);
}
/// Fallback cookie read
var match = document.cookie
.split('; ')
.find(function(row) { return row.indexOf(key + '=') === 0; });
return match ? match.split('=')[1] : undefined;
} catch (e) {
return undefined;
}
}
function attachUserIdToItem(item) {
try {
if (item && typeof item === 'object' && !Array.isArray(item)) {
var uid = readCookie('tns-user-id');
if (uid && item.user_id == null) {
item.user_id = uid;
}
}
} catch (e) {
/// noop
}
return item;
}
function attachCategoriesToItem(item) {
try {
if (item && typeof item === 'object' && !Array.isArray(item)) {
if (tnsCategories && item.categories == null) {
item.categories = tnsCategories;
}
}
} catch (e) {
/// noop
}
return item;
}
/// Wrap dataLayer.push to auto-attach user_id and categories when available
window.dataLayer.push = function() {
var args = Array.prototype.slice.call(arguments);
for (var i = 0; i < args.length; i++) {
args[i] = attachCategoriesToItem(attachUserIdToItem(args[i]));
}
return originalPush.apply(window.dataLayer, args);
};
/// Push current user_id state early so GTM variables can read it
function pushUserIdState() {
var uid = readCookie('tns-user-id');
if (uid) {
/// Use originalPush to avoid re-wrapping
originalPush({ user_id: uid });
}
}
/// Attempt immediately and on DOMContentLoaded
pushUserIdState();
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', pushUserIdState);
}
} catch (err) {
/// Fail closed: never block the page or GTM
// console.warn('[TNS] dataLayer user_id wrapper error', err);
}
})();
</script>
<meta name="x-tns-path" content="/if-p99-latency-is-bs-whats-the-alternative/">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Key Imagery Preloads -->
<link rel="preload" href="https://cdn.thenewstack.io/media/2023/08/86f461ae-data-center--1024x576.jpg" as="image">
<link rel="profile" href="//gmpg.org/xfn/11">
<link rel="pingback" href="https://thenewstack.io/xmlrpc.php">
<style>
*{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-touch-callout:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html,body,main,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}ul,ol{margin-left:40px}textarea,select,input[type="date"],input[type="datetime"],input[type="datetime-local"],input[type="email"],input[type="month"],input[type="number"],input[type="password"],input[type="search"],input[type="tel"],input[type="text"],input[type="time"],input[type="url"],input[type="week"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-background-clip:padding;-moz-background-clip:padding;-webkit-background-clip:padding;-moz-background-clip:padding;background-clip:padding-box;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0;-webkit-appearance:none;-moz-appearance:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;color:#000;outline:0;margin:0;padding:0;text-align:left;vertical-align:middle}div,main,article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{display:block;position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;background:#eae9e5}body{display:block;position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:16px;font-weight:500;line-height:133%;letter-spacing:.5px;color:#142640;-webkit-font-smoothing:subpixel-antialiased;-webkit-backface-visibility:hidden;-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility;-webkit-tap-highlight-color:rgba(0,0,0,0);overflow-x:hidden;overflow-y:auto}main,div{display:block;position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}p{margin-bottom:18px}h1{font-size:60px;line-height:90%;margin-bottom:24px}@media (max-width:767px){h1{font-size:50px}}@media (max-width:413px){h1{font-size:40px}}h2{font-size:42px;line-height:100%;letter-spacing:1px;margin-bottom:20px}h3{font-size:21px;line-height:90%;margin-bottom:15px}h4{font-size:16px;line-height:120%;margin-bottom:15px}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}table{border-collapse:collapse;border-spacing:0}img{display:block;position:relative}pre{font-family:'Courier New',monospace;font-weight:bold;font-size:15px}.clearfix:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.clearfix{display:inline-block}* html .clearfix{height:1%}.clearfix{display:block}:focus{outline-color:transparent;outline-style:none}.greyscale{-webkit-filter:grayscale(100%);filter:grayscale(100%)}strong{font-weight:bold}em{font-style:italic}img{max-width:100%}.tns-gradient-blue{background:#05aef4;background:-webkit-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:-moz-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:-o-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:-ms-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:linear-gradient(145deg, #05aef4 0%, #4bc8fa 100%)}.tns-gradient-blue-dark{background:#6dd5ff;background:-webkit-linear-gradient(0deg, #6dd5ff 0%, #138bb6 100%);background:-moz-linear-gradient(0deg, #6dd5ff 0%, #138bb6 100%);background:-o-linear-gradient(0deg, #6dd5ff 0%, #138bb6 100%);background:-ms-linear-gradient(0deg, #6dd5ff 0%, #138bb6 100%);background:linear-gradient(90deg, #6dd5ff 0%, #138bb6 100%)}.tns-gradient-pink{background:#ff3287;background:-webkit-linear-gradient(280deg, #ff3287 0%, #f27866 100%);background:-moz-linear-gradient(280deg, #ff3287 0%, #f27866 100%);background:-o-linear-gradient(280deg, #ff3287 0%, #f27866 100%);background:-ms-linear-gradient(280deg, #ff3287 0%, #f27866 100%);background:linear-gradient(170deg, #ff3287 0%, #f27866 100%)}h1{display:block;font-size:36px;margin-bottom:10px}h2{display:block;font-size:21px;font-weight:700;line-height:1.33;margin-bottom:10px}@media (max-width:599px){h2{font-size:24px}}h3{display:block;font-size:17px;font-weight:700;line-height:1.33;margin-top:12px;margin-bottom:7px}h4{display:block;font-size:15px;font-weight:700;margin-top:10px;margin-bottom:7px}p{font-size:17px;line-height:1.45;letter-spacing:.3px;margin-bottom:30px}@media (max-width:599px){p{font-size:20px}}b{font-weight:700}hr{margin-bottom:25px}ul,ol{font-size:16px;margin-bottom:30px}li{margin-bottom:10px}a{color:#ff3287;text-decoration:none}a:hover{color:#01aff4}blockquote{margin-top:30px;border-top:1px solid #01aff4;padding-top:25px;padding-bottom:25px;border-bottom:1px solid #01aff4;margin-bottom:30px}blockquote p{font-size:21px;color:#01aff4;margin-bottom:0}.quote-attribution{margin-top:-23px;color:#01aff4;font-size:14px;margin-bottom:23px}.wp-caption{min-width:100%;max-width:100%}p.attribution{color:#a5a9b0;font-size:12px}p.attribution a{color:#01aff4}p.attribution a:hover{color:#ff3287}code,pre{padding:3px 5px 3px 5px;color:#032f62;font-family:'courier new',courier,monospace;font-size:15px;font-weight:600;background:#eaeff3}body .syntaxhighlighter a,body .syntaxhighlighter div,body .syntaxhighlighter code,body .syntaxhighlighter table,body .syntaxhighlighter table td,body .syntaxhighlighter table tr,body .syntaxhighlighter table tbody,body .syntaxhighlighter table thead,body .syntaxhighlighter table caption,body .syntaxhighlighter textarea{font-family:'courier new',courier,monospace !important}.section-heading{display:block;color:#3c3c3c;font-size:14px;line-height:1.33;font-weight:700;text-transform:uppercase;border-top:solid 1px #3c3c3c;padding-top:7px;margin-bottom:20px}.section-heading-sidebar{font-size:13px;margin-bottom:15px}.media-direct-link{display:none !important}.podcast-embed-subscription-links{display:none !important}ul.page-numbers{list-style-type:none}ul.page-numbers li{display:inline-block}ul.page-numbers span{display:inline-block;font-size:21px;color:#ff3287;margin-right:7px}ul.page-numbers span.page-numbers.dots{color:#a5a9b0}ul.page-numbers a{display:inline-block;font-size:21px;color:#01aff4;margin-right:7px}ul.page-numbers a:hover{color:#ff3287}.post-categories{padding-top:3px;font-size:9px;color:#a5a9b0;color:#18191d;font-weight:400;line-height:1;text-transform:uppercase;letter-spacing:1.2px;margin-bottom:2px}.post-title{display:block;color:#3c3c3c;font-size:16px;line-height:1.3;text-decoration:none;margin-bottom:3px}.post-byline{margin-bottom:4px}.post-byline .post-date,.post-byline .post-author{color:#a5a9b0;font-size:10px;letter-spacing:1.2px;line-height:1;vertical-align:middle;text-transform:uppercase}.post-byline .post-date a,.post-byline .post-author a{text-decoration:none}.post-byline .post-date{margin-bottom:3px}.sponsored-badge{font-size:9px;color:#111215;font-weight:400;line-height:1;text-transform:uppercase;letter-spacing:1.2px}html{background:#fff}body{background:#fff}.content{display:block;width:100%}.content-column{display:block;width:100%;max-width:1260px;padding:0 30px 0 30px;margin:0 auto 0 auto}.row{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex}.col{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:100%;max-width:100%}.col-90{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:90%;max-width:90%}.col-80{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:80%;max-width:80%}.col-75{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:75%;max-width:75%}.col-70{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:70%;max-width:70%}.col-66{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:66.666%;max-width:66.666%}.col-60{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:60%;max-width:60%}.col-50{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:50%;max-width:50%}.col-40{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:40%;max-width:40%}.col-33{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:33.333%;max-width:33.333%}.col-30{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:30%;max-width:30%}.col-25{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:25%;max-width:25%}.col-20{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:20%;max-width:20%}.col-15{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:15%;max-width:15%}.col-10{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:10%;max-width:10%}.youtube-embed-wrapper{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;background:#f6f8fa}.youtube-embed-wrapper iframe{position:absolute;top:0;left:0;width:100%;height:100%}.table-scroll-wrap{width:100%;overflow:hidden;overflow-x:auto;margin-bottom:30px;border:1px solid #a5a9b0}.table-scroll-wrap table{min-width:100%}.table-scroll-wrap table thead{position:relative}.table-scroll-wrap table thead th{min-width:120px;border:1px solid #a5a9b0;border-top:0;text-align:left;padding:5px;background:#f6f8fa}.table-scroll-wrap table thead th:first-child{border-left:0}.table-scroll-wrap table thead th:last-child{border-right:0}.table-scroll-wrap table tbody{position:relative}.table-scroll-wrap table tbody tr:first-child td{border-top:0}.table-scroll-wrap table tbody tr:last-child td{border-bottom:0}.table-scroll-wrap table tbody td{min-width:120px;font-size:14px;line-height:120%;padding:5px;border:1px solid #a5a9b0}.table-scroll-wrap table tbody td:first-child{border-left:0}.table-scroll-wrap table tbody td:last-child{border-right:0}.table-scroll-wrap table tbody tr.crayon-row td{min-width:0}input[type="text"],input[type="email"]{position:relative;display:block;width:100%;height:40px;color:#3c3c3c;font-size:16px;letter-spacing:.7px;padding-left:14px;margin-bottom:20px;border:1px solid #ff3287}input[type="text"]::placeholder,input[type="email"]::placeholder{font-size:16px;color:#a5a9b0}textarea{width:100%;min-height:150px;padding:10px;font-size:16px;resize:none}input[type="submit"],button,.tns-button{position:relative;display:block;width:100%;height:40px;color:#fff;font-size:18px;font-weight:500;line-height:35px;text-align:center;padding:none;border:none;border-radius:5px;background-color:#ff3287;cursor:pointer}input[type="submit"]:hover,button:hover,.tns-button:hover{background-color:#01aff4}.button-pill-wrap{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center}.button-pill{display:inline-block;margin:0 auto 0 auto;padding-left:15px;padding-right:15px;height:20px;color:#111215;font-size:12px;line-height:20px;font-weight:700;text-align:center;background:#eaeff3;border-radius:10px;cursor:pointer}.button-pill:hover{color:#ff3287}@media (max-width:767px){.button-pill{font-size:15px}}.button-spinner{margin-top:9px;border:2px solid rgba(255,255,255,0.33);border-top:2px solid #fff;border-radius:50%;width:20px;height:20px;-webkit-animation:buttonspinner 333ms linear infinite;-moz-animation:buttonspinner 333ms linear infinite;-o-animation:buttonspinner 333ms linear infinite;-ms-animation:buttonspinner 333ms linear infinite;animation:buttonspinner 333ms linear infinite;display:inline-block}@-moz-keyframes buttonspinner{0%{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes buttonspinner{0%{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes buttonspinner{0%{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes buttonspinner{0%{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}#tns-subscribe-popover-screen{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.93);z-index:8000;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);display:none}#tns-subscribe-popover-screen #tns-subscribe-popover{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:100%;max-width:375px;height:auto;background:#fff;border-radius:5px;z-index:8001;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);display:none}@media (max-width:499px){#tns-subscribe-popover-screen #tns-subscribe-popover{max-width:80%}}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-subscribe-popover-title{position:relative;width:100%;height:40px;line-height:40px;padding-left:20px;color:#3c3c3c;font-size:14px;font-weight:700;text-transform:uppercase;border-bottom:1px solid #a5a9b0}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-subscribe-popover-close{position:absolute;top:7px;right:11px;width:12px;cursor:pointer;z-index:2}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-subscribe-popover-close svg{width:100%;height:auto;fill:#fff;opacity:.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";filter:alpha(opacity=50)}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-subscribe-popover-close:hover svg{opacity:1;-ms-filter:none;filter:none}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-subscribe-popover-content{position:relative;width:100%;min-height:60px;padding:20px;color:#3c3c3c;font-size:15px}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-subscribe-popover-buttons{position:relative;width:100%;height:60px;padding:10px}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-promo-daily{margin-top:0;max-width:100%}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-promo-daily .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-promo-daily .row .col{min-width:100%;max-width:100%}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-promo-daily .banner .title{margin-bottom:10px}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-promo-daily .banner .copy{margin-bottom:10px}#tns-subscribe-popover-screen #tns-subscribe-popover .tns-promo-daily .banner .subscribe-col{padding-left:0}#tns-modal-screen{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.93);z-index:12000;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);display:none}#tns-modal-screen #tns-modal{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:100%;max-width:450px;height:auto;background:#fff;border-radius:5px;z-index:12001;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);display:none}@media (max-width:499px){#tns-modal-screen #tns-modal{max-width:80%}}#tns-modal-screen #tns-modal .tns-modal-title{position:relative;width:100%;height:40px;line-height:40px;padding-left:20px;color:#3c3c3c;font-size:14px;font-weight:700;text-transform:uppercase;border-bottom:1px solid #a5a9b0}#tns-modal-screen #tns-modal .tns-modal-close{position:absolute;top:11px;right:14px;width:12px;cursor:pointer;z-index:2}#tns-modal-screen #tns-modal .tns-modal-close svg{width:100%;height:auto;fill:#515151}#tns-modal-screen #tns-modal .tns-modal-close:hover svg{fill:#ff3287}#tns-modal-screen #tns-modal .tns-modal-content{position:relative;width:100%;min-height:60px;padding:20px;color:#3c3c3c;font-size:15px}#tns-modal-screen #tns-modal .tns-modal-buttons{position:relative;width:100%;height:60px;padding:10px}.tns-voxpop-screen{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.9);z-index:9000;display:none}.tns-voxpop-screen .tns-voxpop-modal{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:100%;max-width:450px;background:#fff;background:#f4fbff;background:-webkit-linear-gradient(270deg, #f4fbff 0%, #fff 100%);background:-moz-linear-gradient(270deg, #f4fbff 0%, #fff 100%);background:-o-linear-gradient(270deg, #f4fbff 0%, #fff 100%);background:-ms-linear-gradient(270deg, #f4fbff 0%, #fff 100%);background:linear-gradient(180deg, #f4fbff 0%, #fff 100%);border-radius:5px;z-index:9001}@media (max-width:499px){.tns-voxpop-screen .tns-voxpop-modal{width:calc(100vw - 10px)}}.tns-voxpop-screen .tns-voxpop-modal .header{position:absolute;top:0;left:0;right:0;height:40px}.tns-voxpop-screen .tns-voxpop-modal .header .title{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);height:40px;line-height:40px;color:#3c3c3c;font-size:13px;font-weight:800;text-transform:uppercase}.tns-voxpop-screen .tns-voxpop-modal .header .close-icon{position:absolute;top:11px;right:14px;width:12px;cursor:pointer;z-index:2}.tns-voxpop-screen .tns-voxpop-modal .header .close-icon svg{width:100%;height:auto;fill:#515151}.tns-voxpop-screen .tns-voxpop-modal .header .close-icon:hover svg{fill:#ff3287}.tns-voxpop-screen .tns-voxpop-modal .content{position:absolute;top:40px;left:0;right:0;bottom:20px;padding:20px;padding-bottom:0;padding-top:0;color:#3c3c3c;font-size:15px;overflow-x:hidden;overflow-y:auto}.tns-voxpop-screen .tns-voxpop-modal .content .content-block{position:relative;min-height:100%}.tns-voxpop-screen .tns-voxpop-modal .footer{position:absolute;left:0;right:0;bottom:0;height:20px}body.search-hidden{overflow:hidden}#tns-header{position:relative}#tns-header .header-fixed{position:fixed;width:100%;z-index:100}#tns-header .header-footprint{display:block;width:100%;height:150px;-webkit-transition:all 333ms;-moz-transition:all 333ms;-o-transition:all 333ms;-ms-transition:all 333ms;transition:all 333ms}@media (max-width:1023px){#tns-header .header-footprint{height:60px}}#tns-header #tns-header-masthead{position:absolute;width:100%;background:#fff;z-index:7;-webkit-transition:all 90ms;-moz-transition:all 90ms;-o-transition:all 90ms;-ms-transition:all 90ms;transition:all 90ms}#tns-header #tns-header-masthead.dark{background:#111215}#tns-header #tns-header-masthead.dark .masthead{border-bottom:1px solid #18191d}#tns-header #tns-header-masthead .masthead{width:100%;border-bottom:1px solid #c3c5ca}#tns-header #tns-header-masthead .masthead-block{position:relative;width:100%;max-width:1260px;height:80px;margin:0 auto 0 auto;-webkit-transition:all 333ms;-moz-transition:all 333ms;-o-transition:all 333ms;-ms-transition:all 333ms;transition:all 333ms}@media (max-width:1023px){#tns-header #tns-header-masthead .masthead-block{height:60px}}#tns-header #tns-header-masthead #tns-header-masthead-menu{display:block;position:absolute;top:50%;left:20px;-webkit-transform:translate(0%,-50%);-moz-transform:translate(0%,-50%);-o-transform:translate(0%,-50%);-ms-transform:translate(0%,-50%);transform:translate(0%,-50%)}#tns-header #tns-header-masthead #tns-header-masthead-menu .masthead-menu-icon{display:inline;color:#515151;font-size:14px;-webkit-transition:all 333ms;-moz-transition:all 333ms;-o-transition:all 333ms;-ms-transition:all 333ms;transition:all 333ms;cursor:pointer}#tns-header #tns-header-masthead #tns-header-masthead-menu .masthead-menu-icon:hover path{fill:#ff3287}#tns-header #tns-header-masthead #tns-header-masthead-menu .masthead-menu-icon.active path{fill:#ff3287}#tns-header #tns-header-masthead #tns-header-masthead-menu .masthead-menu-close-icon{display:inline;color:#515151;cursor:pointer;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);display:none}#tns-header #tns-header-masthead #tns-header-masthead-menu .masthead-menu-close-icon svg{width:16px;height:auto}#tns-header #tns-header-masthead #tns-header-masthead-menu .masthead-menu-close-icon path{fill:#ff3287}#tns-header #tns-header-masthead #tns-header-masthead-menu .masthead-menu-close-icon:hover path{fill:#ff3287}#tns-header #tns-header-masthead #tns-header-masthead-logo{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:265px;height:auto;-webkit-transition:all 333ms;-moz-transition:all 333ms;-o-transition:all 333ms;-ms-transition:all 333ms;transition:all 333ms}@media (max-width:1023px){#tns-header #tns-header-masthead #tns-header-masthead-logo{width:175px;height:auto}}#tns-header #tns-header-masthead #tns-header-masthead-logo .tns-logo{position:relative;display:block}#tns-header #tns-header-masthead #tns-header-masthead-logo .tns-logo svg{display:block;width:100%;height:auto}#tns-header #tns-header-masthead #tns-masthead-utility-nav{position:absolute;top:50%;right:20px;-webkit-transform:translate(0%,-50%);-moz-transform:translate(0%,-50%);-o-transform:translate(0%,-50%);-ms-transform:translate(0%,-50%);transform:translate(0%,-50%);font-size:16px;color:#515151;line-height:120%;-webkit-transition:all 333ms;-moz-transition:all 333ms;-o-transition:all 333ms;-ms-transition:all 333ms;transition:all 333ms}#tns-header #tns-header-masthead #tns-masthead-utility-nav .masthead-login-button{position:absolute;color:#01aff4;padding:0;height:25px;line-height:25px;font-size:13px;font-weight:600;right:27px;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-o-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:color 0.2s ease;-moz-transition:color 0.2s ease;-o-transition:color 0.2s ease;-ms-transition:color 0.2s ease;transition:color 0.2s ease;border:none;cursor:pointer}#tns-header #tns-header-masthead #tns-masthead-utility-nav .masthead-login-button:hover{color:#ff69b4}#tns-header #tns-header-masthead #tns-masthead-utility-nav #stackie-flag{position:absolute;z-index:9999;pointer-events:none;top:0;right:30px;-webkit-transform:translate(0,-155%) scaleX(0) scaleY(0);-moz-transform:translate(0,-155%) scaleX(0) scaleY(0);-o-transform:translate(0,-155%) scaleX(0) scaleY(0);-ms-transform:translate(0,-155%) scaleX(0) scaleY(0);transform:translate(0,-155%) scaleX(0) scaleY(0);-webkit-transform-origin:right center;-moz-transform-origin:right center;-o-transform-origin:right center;-ms-transform-origin:right center;transform-origin:right center}#tns-header #tns-header-masthead #tns-masthead-utility-nav #stackie-flag .flag-content{background-color:#ff3287;color:#fff;padding:8px 12px;font-size:14px;font-weight:bold;border-radius:5px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,0.15);box-shadow:0 2px 8px rgba(0,0,0,0.15);position:relative;pointer-events:auto;white-space:nowrap}#tns-header #tns-header-masthead #tns-masthead-utility-nav #stackie-flag .flag-pointer{content:'';position:absolute;right:-8px;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-o-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);width:0;height:0;border-top:8px solid transparent;border-bottom:8px solid transparent;border-left:8px solid #ff3287}#tns-header #tns-header-masthead #tns-masthead-utility-nav #stackie-flag.animate{-webkit-animation:growFromRight .21s ease-out forwards 1.2s,shrinkToRight .21s ease-in forwards 4s;-moz-animation:growFromRight .21s ease-out forwards 1.2s,shrinkToRight .21s ease-in forwards 4s;-o-animation:growFromRight .21s ease-out forwards 1.2s,shrinkToRight .21s ease-in forwards 4s;-ms-animation:growFromRight .21s ease-out forwards 1.2s,shrinkToRight .21s ease-in forwards 4s;animation:growFromRight .21s ease-out forwards 1.2s,shrinkToRight .21s ease-in forwards 4s}@-moz-keyframes growFromRight{0%{-webkit-transform:scaleX(0) scaleY(0);-moz-transform:scaleX(0) scaleY(0);-o-transform:scaleX(0) scaleY(0);-ms-transform:scaleX(0) scaleY(0);transform:scaleX(0) scaleY(0);opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}100%{-webkit-transform:scaleX(1) scaleY(1);-moz-transform:scaleX(1) scaleY(1);-o-transform:scaleX(1) scaleY(1);-ms-transform:scaleX(1) scaleY(1);transform:scaleX(1) scaleY(1);opacity:1;-ms-filter:none;filter:none}}@-webkit-keyframes growFromRight{0%{-webkit-transform:scaleX(0) scaleY(0);-moz-transform:scaleX(0) scaleY(0);-o-transform:scaleX(0) scaleY(0);-ms-transform:scaleX(0) scaleY(0);transform:scaleX(0) scaleY(0);opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}100%{-webkit-transform:scaleX(1) scaleY(1);-moz-transform:scaleX(1) scaleY(1);-o-transform:scaleX(1) scaleY(1);-ms-transform:scaleX(1) scaleY(1);transform:scaleX(1) scaleY(1);opacity:1;-ms-filter:none;filter:none}}@-o-keyframes growFromRight{0%{-webkit-transform:scaleX(0) scaleY(0);-moz-transform:scaleX(0) scaleY(0);-o-transform:scaleX(0) scaleY(0);-ms-transform:scaleX(0) scaleY(0);transform:scaleX(0) scaleY(0);opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}100%{-webkit-transform:scaleX(1) scaleY(1);-moz-transform:scaleX(1) scaleY(1);-o-transform:scaleX(1) scaleY(1);-ms-transform:scaleX(1) scaleY(1);transform:scaleX(1) scaleY(1);opacity:1;-ms-filter:none;filter:none}}@keyframes growFromRight{0%{-webkit-transform:scaleX(0) scaleY(0);-moz-transform:scaleX(0) scaleY(0);-o-transform:scaleX(0) scaleY(0);-ms-transform:scaleX(0) scaleY(0);transform:scaleX(0) scaleY(0);opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}100%{-webkit-transform:scaleX(1) scaleY(1);-moz-transform:scaleX(1) scaleY(1);-o-transform:scaleX(1) scaleY(1);-ms-transform:scaleX(1) scaleY(1);transform:scaleX(1) scaleY(1);opacity:1;-ms-filter:none;filter:none}}@-moz-keyframes shrinkToRight{0%{-webkit-transform:scaleX(1) scaleY(1);-moz-transform:scaleX(1) scaleY(1);-o-transform:scaleX(1) scaleY(1);-ms-transform:scaleX(1) scaleY(1);transform:scaleX(1) scaleY(1);opacity:1;-ms-filter:none;filter:none}100%{-webkit-transform:scaleX(0) scaleY(0);-moz-transform:scaleX(0) scaleY(0);-o-transform:scaleX(0) scaleY(0);-ms-transform:scaleX(0) scaleY(0);transform:scaleX(0) scaleY(0);opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}}@-webkit-keyframes shrinkToRight{0%{-webkit-transform:scaleX(1) scaleY(1);-moz-transform:scaleX(1) scaleY(1);-o-transform:scaleX(1) scaleY(1);-ms-transform:scaleX(1) scaleY(1);transform:scaleX(1) scaleY(1);opacity:1;-ms-filter:none;filter:none}100%{-webkit-transform:scaleX(0) scaleY(0);-moz-transform:scaleX(0) scaleY(0);-o-transform:scaleX(0) scaleY(0);-ms-transform:scaleX(0) scaleY(0);transform:scaleX(0) scaleY(0);opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}}@-o-keyframes shrinkToRight{0%{-webkit-transform:scaleX(1) scaleY(1);-moz-transform:scaleX(1) scaleY(1);-o-transform:scaleX(1) scaleY(1);-ms-transform:scaleX(1) scaleY(1);transform:scaleX(1) scaleY(1);opacity:1;-ms-filter:none;filter:none}100%{-webkit-transform:scaleX(0) scaleY(0);-moz-transform:scaleX(0) scaleY(0);-o-transform:scaleX(0) scaleY(0);-ms-transform:scaleX(0) scaleY(0);transform:scaleX(0) scaleY(0);opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}}@keyframes shrinkToRight{0%{-webkit-transform:scaleX(1) scaleY(1);-moz-transform:scaleX(1) scaleY(1);-o-transform:scaleX(1) scaleY(1);-ms-transform:scaleX(1) scaleY(1);transform:scaleX(1) scaleY(1);opacity:1;-ms-filter:none;filter:none}100%{-webkit-transform:scaleX(0) scaleY(0);-moz-transform:scaleX(0) scaleY(0);-o-transform:scaleX(0) scaleY(0);-ms-transform:scaleX(0) scaleY(0);transform:scaleX(0) scaleY(0);opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}}#tns-header #tns-header-masthead #tns-masthead-utility-nav .masthead-search-icon{color:#515151;cursor:pointer;-webkit-transition:color 333ms;-moz-transition:color 333ms;-o-transition:color 333ms;-ms-transition:color 333ms;transition:color 333ms}#tns-header #tns-header-masthead #tns-masthead-utility-nav .masthead-search-icon:hover{color:#ff3287}#tns-header #tns-header-masthead #tns-masthead-utility-nav .masthead-search-icon svg{width:39px;height:auto;-webkit-transform:translate(20px,5px);-moz-transform:translate(20px,5px);-o-transform:translate(20px,5px);-ms-transform:translate(20px,5px);transform:translate(20px,5px)}#tns-header #tns-header-masthead #tns-masthead-utility-nav .masthead-search-icon-highlight{color:#ff3287}#tns-header #tns-header-masthead #tns-masthead-utility-nav .masthead-search-icon.active path{fill:#ff3287}#tns-header #tns-header-masthead #tns-masthead-utility-nav .masthead-search-close-icon{color:#515151;cursor:pointer;display:none}#tns-header #tns-header-masthead #tns-masthead-utility-nav .masthead-search-close-icon svg{width:16px;height:auto}#tns-header #tns-header-masthead #tns-masthead-utility-nav .masthead-search-close-icon path{fill:#ff3287}#tns-header .header-fixed.collapsed #tns-header-masthead .masthead-block{height:60px}#tns-header .header-fixed.collapsed #tns-header-masthead .masthead-block #tns-header-masthead-logo{width:175px;height:auto}#tns-header .header-fixed.collapsed #tns-header-masthead .masthead-block #tns-header-masthead-menu .menu-icon{display:inline;opacity:1;-ms-filter:none;filter:none}#tns-header #tns-header-search{position:absolute;top:0;left:0;width:100%;height:auto;color:#fff;z-index:6}#tns-header #tns-header-search .search-dropdown{height:60px;color:#fff;padding-bottom:60px;background:#111215;overflow:hidden}#tns-header #tns-header-search .search-dropdown .content-column{padding-top:120px;max-width:960px;-webkit-transition:all 333ms;-moz-transition:all 333ms;-o-transition:all 333ms;-ms-transition:all 333ms;transition:all 333ms}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-form{position:fixed;margin:0 0 0 -10px;max-width:900px;width:100%;left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-o-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);z-index:99;top:62px;background-color:#111215;padding:30px 0 0;display:none}@media (max-width:1200px){#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-form{padding:12px 12px 0 30px;top:60px}}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-form .search-form{padding-top:10px}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-form .search-form .search-input{display:block;width:100%;height:40px;color:#fff;line-height:40px;padding-left:15px;font-size:17px;font-weight:500;border:1px solid #01aff4;border-right:none}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-form .search-form .search-submit{height:40px;color:#01aff4;font-size:15px;text-transform:uppercase;border-radius:0;border:1px solid #01aff4;background:transparent}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-form .search-form .search-submit:hover{color:#ff3287}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-form.active-search{display:block}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results{position:relative;margin:21px 0 0 0;height:100vh;padding:30px 0 300px 0;overflow-x:hidden}@media (max-width:1023.98px){#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results{margin:0}}@media (max-width:767.98px){#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results{position:absolute;padding-right:30px}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results .col-75{min-width:100%;max-width:100%}}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results .search-results-item-link{display:block;color:#01aff4;margin-bottom:40px}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results .search-results-item-link:hover{color:#ff3287}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results .search-results-item-link .search-results-item-thumbnail-col{min-width:100px;max-width:100px;display:none}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results .search-results-item-link .search-results-item-thumbnail-col img{display:block;height:50px;width:auto}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results .search-results-item-link .search-results-item-title{font-size:17px;font-weight:600}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results .search-results-item-link .search-results-item-byline{color:#eaeff3;font-size:14px;opacity:.7;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";filter:alpha(opacity=70)}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results .search-results-item-link .search-results-item-excerpt{color:#fff;font-size:15px}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results .search-results-more-button{display:none;max-width:150px;font-size:14px;font-weight:500;text-transform:uppercase;border:1px solid #01aff4;background:transparent}#tns-header #tns-header-search .search-dropdown .content-column #tns-header-search-results .search-results-more-button:hover{border:1px solid #ff3287;color:#ff3287}#tns-header #tns-header-mobile-nav{position:absolute;top:0;left:0;width:100%;height:auto;z-index:5}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown{height:60px;color:#fff;background:#111215;overflow:hidden}@media (max-width:768px){#tns-header #tns-header-mobile-nav .mobile-nav-dropdown{overflow-y:auto}}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column{padding-top:150px;-webkit-transition:all 333ms;-moz-transition:all 333ms;-o-transition:all 333ms;-ms-transition:all 333ms;transition:all 333ms}@media (max-width:1023px){#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column{padding-top:100px}}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-col{margin-bottom:60px}@media (max-width:1023px){#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-col{min-width:33.333%;max-width:33.333%}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-col:nth-child(4){-webkit-box-ordinal-group:1;-moz-box-ordinal-group:1;-o-box-ordinal-group:1;-ms-flex-order:1;-webkit-order:1;order:1}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-col:nth-child(1){-webkit-box-ordinal-group:2;-moz-box-ordinal-group:2;-o-box-ordinal-group:2;-ms-flex-order:2;-webkit-order:2;order:2}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-col:nth-child(2){-webkit-box-ordinal-group:3;-moz-box-ordinal-group:3;-o-box-ordinal-group:3;-ms-flex-order:3;-webkit-order:3;order:3}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-col:nth-child(3){-webkit-box-ordinal-group:4;-moz-box-ordinal-group:4;-o-box-ordinal-group:4;-ms-flex-order:4;-webkit-order:4;order:4}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-col:nth-child(5){-webkit-box-ordinal-group:5;-moz-box-ordinal-group:5;-o-box-ordinal-group:5;-ms-flex-order:5;-webkit-order:5;order:5}}@media (max-width:768px){#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-col{min-width:50%;max-width:50%}}@media (max-width:599px){#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-col{min-width:100%;max-width:100%}}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-header{font-size:12px;font-weight:600;margin-bottom:20px}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-menu a{display:block;color:#fff;font-size:14px;text-decoration:none;margin-bottom:10px}#tns-header #tns-header-mobile-nav .mobile-nav-dropdown .content-column .mobile-nav-row .mobile-nav-menu a:hover{color:#ff3287}#tns-header #tns-header-nav-channels{position:absolute;top:0;left:0;width:100%;height:115px;background:#fff;border-bottom:1px solid #d2d4d8;-webkit-transition:all 333ms;-moz-transition:all 333ms;-o-transition:all 333ms;-ms-transition:all 333ms;transition:all 333ms;z-index:4}@media (max-width:1023px){#tns-header #tns-header-nav-channels{height:60px}}@media (max-width:767px){#tns-header #tns-header-nav-channels{display:none}}#tns-header #tns-header-nav-channels .channels-nav{position:absolute;left:0;bottom:0;width:100%;height:35px;line-height:35px}#tns-header #tns-header-nav-channels .channels-nav-block{width:100%;max-width:1200px;margin:0 auto 0 auto;text-align:center}#tns-header #tns-header-nav-channels .channels-nav-block a,#tns-header #tns-header-nav-channels display inline-block{color:#0e1013;font-size:14px;font-weight:600;letter-spacing:1.2px;margin:0 7px 0 7px;text-decoration:none}#tns-header #tns-header-nav-channels .channels-nav-block a:hover{color:#01aff4}#tns-header .header-fixed.collapsed #tns-header-nav-channels{height:60px}#tns-header #tns-header-nav-channels-dropdown{position:absolute;top:0;left:0;width:100%;z-index:3;-webkit-box-shadow:5px 10px #888;box-shadow:5px 10px #888}#tns-header #tns-header-nav-topics{position:absolute;top:0;left:0;width:100%;height:150px;background:#fff;border-bottom:1px solid #e9eaeb;-webkit-transition:all 333ms;-moz-transition:all 333ms;-o-transition:all 333ms;-ms-transition:all 333ms;transition:all 333ms;z-index:2}@media (max-width:1023px){#tns-header #tns-header-nav-topics{height:60px}}@media (max-width:767px){#tns-header #tns-header-nav-topics{display:none}}#tns-header #tns-header-nav-topics .topics-nav{position:absolute;left:0;bottom:0;width:100%;height:35px;line-height:35px}#tns-header #tns-header-nav-topics .topics-nav-block{width:100%;max-width:1200px;margin:0 auto 0 auto;text-align:center}#tns-header #tns-header-nav-topics .topics-nav-block a{display:inline-block;font-size:13px;font-weight:500;letter-spacing:1.6px;color:#3c3c3c;margin:0 7px 0 7px;text-decoration:none;-webkit-transition:all 99ms;-moz-transition:all 99ms;-o-transition:all 99ms;-ms-transition:all 99ms;transition:all 99ms}#tns-header #tns-header-nav-topics .topics-nav-block a:hover{color:#ff3287}#tns-header #tns-header-nav-topics .topics-nav-block a.active{color:#ff3287}#tns-header .header-fixed.collapsed #tns-header-nav-topics{height:60px}#tns-header #tns-header-nav-topics-dropdown{position:absolute;top:150px;left:0;width:100%;height:auto;z-index:1}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown{width:100%;height:0;overflow:hidden}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .content{width:100%;max-width:720px;padding:40px 30px 0 30px;margin:0 auto 0 auto;display:none;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .content a{display:block;width:100%;height:30px;line-height:30px;padding-left:10px;border-radius:5px;color:#fff;font-size:12px;margin-bottom:1px;text-decoration:none;-webkit-transition:all 133ms;-moz-transition:all 133ms;-o-transition:all 133ms;-ms-transition:all 133ms;transition:all 133ms}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .content a:hover{opacity:1;-ms-filter:none;filter:none;background:rgba(255,255,255,0.072)}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .col-topics{padding-right:20px}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .col-topics ul{list-style-type:none;padding:0;margin:0}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .col-topics a{font-weight:600;text-transform:uppercase;opacity:.63;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=63)";filter:alpha(opacity=63)}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .col-topics a.active{opacity:1;-ms-filter:none;filter:none;background:rgba(255,255,255,0.072)}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .col-latest-stories a{height:auto;font-size:14px;font-weight:500;line-height:133%;padding-left:0;opacity:.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";filter:alpha(opacity=90);-webkit-transition:all 99ms;-moz-transition:all 99ms;-o-transition:all 99ms;-ms-transition:all 99ms;transition:all 99ms}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .col-latest-stories a:hover{background:rgba(255,255,255,0)}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .topic-latest-stories{display:none;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .topics-latest-story{margin-bottom:20px}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .topics-latest-story .byline{color:#fff;font-size:11px;opacity:.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";filter:alpha(opacity=50)}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .topics-latest-story .byline a{display:inline;font-size:11px;margin:none;padding:none;-webkit-transition:all 121ms;-moz-transition:all 121ms;-o-transition:all 121ms;-ms-transition:all 121ms;transition:all 121ms}#tns-header #tns-header-nav-topics-dropdown .nav-topics-dropdown .topics-latest-story .byline a:hover{opacity:1;-ms-filter:none;filter:none}.ad-container.native-top{position:relative;width:100%;min-height:70px}#tns-footer{display:block;width:100%;padding:50px 0 150px 0;background:#1e2329}#tns-footer .content-column{min-height:auto}#tns-footer #tns-footer-logo .footer-logo .logo{max-width:214px;display:block;height:auto;max-width:115px;width:100%}@media (max-width:639.98px){#tns-footer #tns-footer-logo .footer-logo .logo{margin-bottom:30px}}#tns-footer #tns-footer-nav-menus{color:#fff}#tns-footer #tns-footer-nav-menus .footer-nav-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}#tns-footer #tns-footer-nav-menus .footer-nav-row .footer-nav-col{margin-bottom:50px;padding-right:15px}@media (max-width:1023px){#tns-footer #tns-footer-nav-menus .footer-nav-row .footer-nav-col{min-width:33.333%;max-width:33.333%}}@media (max-width:768px){#tns-footer #tns-footer-nav-menus .footer-nav-row .footer-nav-col{min-width:50%;max-width:50%}}@media (max-width:599px){#tns-footer #tns-footer-nav-menus .footer-nav-row .footer-nav-col{min-width:100%;max-width:100%}}#tns-footer #tns-footer-nav-menus .footer-nav-row .footer-nav-header{font-size:13px;font-weight:600;margin-bottom:20px}#tns-footer #tns-footer-nav-menus .footer-nav-row .footer-nav-menu a{display:block;color:#fff;font-size:13px;font-weight:400px;line-height:1.2;text-decoration:none;margin-bottom:5px}@media (max-width:1023px){#tns-footer #tns-footer-nav-menus .footer-nav-row .footer-nav-menu a{font-size:17px}}#tns-footer #tns-footer-nav-menus .footer-nav-row .footer-nav-menu a:hover{color:#ff3287}#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-link{display:block;color:#fff;line-height:20px}#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-link:hover{color:#fff}#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-link:hover .footer-nav-header{color:#ff3287}#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-link svg{vertical-align:middle;width:20px;height:auto;margin-right:5px}#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-copy,#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-copy p{font-size:13px;line-height:1.2}@media (max-width:1023px){#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-copy,#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-copy p{font-size:17px}}#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-page-link{display:block;color:#fff;font-size:13px;line-height:1.2;margin-bottom:7px}@media (max-width:1023px){#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-page-link{font-size:17px}}#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-page-link svg{height:8px;width:auto}#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-page-link svg path{fill:#fff}#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-page-link:hover{color:#ff3287}#tns-footer #tns-footer-nav-menus .footer-nav-row .roadmap-page-link:hover svg path{fill:#ff3287}#tns-footer #tns-footer-legal{width:100%}#tns-footer #tns-footer-legal .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}@media (max-width:899px){#tns-footer #tns-footer-legal .row{-webkit-box-direction:reverse;-moz-box-direction:reverse;-o-box-direction:reverse;-webkit-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}@media (max-width:899px){#tns-footer #tns-footer-legal .row .col-75,#tns-footer #tns-footer-legal .row .col-25{min-width:100%;max-width:100%}}#tns-footer #tns-footer-legal .copyright{font-size:14px;color:#a5a9b0;letter-spacing:.2px;line-height:133%;font-weight:300;margin-bottom:5px}@media (max-width:768px){#tns-footer #tns-footer-legal .copyright{margin-bottom:15px}}#tns-footer #tns-footer-legal .terms{width:100%}#tns-footer #tns-footer-legal .terms a{color:#a5a9b0;font-size:14px;letter-spacing:.2px;line-height:133%;font-weight:300;margin-right:10px;text-decoration:none}#tns-footer #tns-footer-legal .terms a:hover,#tns-footer #tns-footer-legal .terms a:focus,#tns-footer #tns-footer-legal .terms a:active,#tns-footer #tns-footer-legal .terms a:focus:active{color:#ff3287}@media (max-width:768px){#tns-footer #tns-footer-legal .terms a{font-size:16px;margin-bottom:5px;display:block}}#tns-footer #tns-footer-legal .footer-nav-header{color:#fff;font-size:13px;font-weight:600}#tns-footer #tns-footer-legal .social-links{margin-left:-7px}@media (max-width:899px){#tns-footer #tns-footer-legal .social-links{margin-bottom:50px}}#tns-footer #tns-footer-legal .social-links .follow-icon{width:30px;height:30px;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;vertical-align:middle}#tns-footer #tns-footer-legal .social-links .follow-icon svg{height:19px}#tns-footer #tns-footer-legal .social-links .follow-icon .fill path{fill:rgba(255,255,255,0.63);stroke-width:0}#tns-footer #tns-footer-legal .social-links .follow-icon .stroke path{fill:rgba(255,255,255,0.63);fill:none}#tns-footer #tns-footer-legal .social-links .follow-icon:hover .fill path{fill:#01aff4}#tns-footer #tns-footer-legal .social-links .follow-icon:hover .stroke path{stroke:#01aff4}#tns-footer #tns-footer-legal .social-links .follow-icon-mastadon:hover .fill path{fill:#5e54ea}#tns-footer #tns-footer-legal .social-links .follow-icon-mastadon:hover .stroke path{stroke:#5e54ea}#tns-footer #tns-footer-legal .social-links .follow-icon-twitter:hover .fill path{fill:#1c9bf0}#tns-footer #tns-footer-legal .social-links .follow-icon-twitter:hover .stroke path{stroke:#1c9bf0}#tns-footer #tns-footer-legal .social-links .follow-icon-hackernews:hover .fill path{fill:#fe6600}#tns-footer #tns-footer-legal .social-links .follow-icon-hackernews:hover .stroke path{stroke:#fe6600}#tns-footer #tns-footer-legal .social-links .follow-icon-linkedin:hover .fill path{fill:#0a66c2}#tns-footer #tns-footer-legal .social-links .follow-icon-linkedin:hover .stroke path{stroke:#0a66c2}#tns-footer #tns-footer-legal .social-links .follow-icon-reddit:hover .fill path{fill:#ff4500}#tns-footer #tns-footer-legal .social-links .follow-icon-reddit:hover .stroke path{stroke:#ff4500}#tns-footer #tns-footer-legal .social-links .follow-icon-facebook:hover .fill path{fill:#3c5998}#tns-footer #tns-footer-legal .social-links .follow-icon-facebook:hover .stroke path{stroke:#3c5998}#tns-footer #tns-footer-legal .social-links .follow-icon-instagram:hover .fill path{fill:#66b6fa}#tns-footer #tns-footer-legal .social-links .follow-icon-instagram:hover .stroke path{stroke:#66b6fa}#tns-footer #tns-footer-legal .social-links .follow-icon-youtube{vertical-align:top}#tns-footer #tns-footer-legal .social-links .follow-icon-youtube svg{height:27px}#tns-footer #tns-footer-legal .social-links .follow-icon-youtube:hover .fill path{fill:#f10001}#tns-footer #tns-footer-legal .social-links .follow-icon-youtube:hover .stroke path{stroke:#f10001}#tns-footer-bar{position:fixed;display:block;left:0;right:0;bottom:-150px;width:100%;color:#fff;background:#18191d;z-index:1000}#tns-footer-bar .social-heading{font-size:12px;font-weight:700}#tns-footer-bar .social-links{margin-left:-7px}#tns-footer-bar .social-links .follow-icon svg{height:22px}#tns-footer-bar .social-links .follow-icon .fill path{fill:rgba(255,255,255,0.63);stroke-width:0}#tns-footer-bar .social-links .follow-icon .stroke path{stroke:rgba(255,255,255,0.63);fill:none}#tns-footer-bar .social-links .follow-icon-mastadon svg{height:26px}#tns-footer-bar .social-links .follow-icon-mastadon:hover .fill path{fill:#5e54ea}#tns-footer-bar .social-links .follow-icon-mastadon:hover .stroke path{stroke:#5e54ea}#tns-footer-bar .social-links .follow-icon-twitter{margin-left:-5px;height:16px}#tns-footer-bar .social-links .follow-icon-twitter:hover .fill path{fill:#1c9bf0}#tns-footer-bar .social-links .follow-icon-twitter:hover .stroke path{stroke:#1c9bf0}#tns-footer-bar .social-links .follow-icon-hackernews:hover .fill path{fill:#fe6600}#tns-footer-bar .social-links .follow-icon-hackernews:hover .stroke path{stroke:#fe6600}#tns-footer-bar .social-links .follow-icon-linkedin:hover .fill path{fill:#0a66c2}#tns-footer-bar .social-links .follow-icon-linkedin:hover .stroke path{stroke:#0a66c2}@media (max-width:499px){#tns-footer-bar .social-links .follow-icon-instagram{display:none}}#tns-footer-bar .social-links .follow-icon-instagram:hover .fill path{fill:#66b6fa}#tns-footer-bar .social-links .follow-icon-instagram:hover .stroke path{stroke:#66b6fa}#tns-footer-bar .social-links .follow-icon-reddit:hover .fill path{fill:#ff4500}#tns-footer-bar .social-links .follow-icon-reddit:hover .stroke path{stroke:#ff4500}#tns-footer-bar .social-links .follow-icon-facebook:hover .fill path{fill:#3c5998}#tns-footer-bar .social-links .follow-icon-facebook:hover .stroke path{stroke:#3c5998}@media (max-width:389px){#tns-footer-bar .social-links .follow-icon-facebook{display:none}}#tns-footer-bar .social-links .follow-icon-youtube{vertical-align:top}#tns-footer-bar .social-links .follow-icon-youtube svg{height:27px}#tns-footer-bar .social-links .follow-icon-youtube:hover .fill path{fill:#f10001}#tns-footer-bar .social-links .follow-icon-youtube:hover .stroke path{stroke:#f10001}#tns-footer-bar .content-subscribe{position:absolute;top:0;right:0;width:100%;max-width:200px;padding-right:10px;min-height:100%}@media (max-width:569px){#tns-footer-bar .content-subscribe{max-width:110px}}#tns-footer-bar .content-subscribe .subscribe-heading{padding-top:10px;font-size:12px;font-weight:700}#tns-maintenance{position:relative}#tns-404{min-height:calc(100vh - 150px);padding:100px 0 70px}#tns-404 .content-column{max-width:830px}#tns-404 .heading{font-size:36px;font-weight:900;margin-bottom:20px}#tns-404 .sub-heading{margin-bottom:30px}#tns-404 .sub-heading img{display:inline;width:21px;height:auto;vertical-align:top}#tns-404 .help-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}#tns-404 .help-row .help-col{padding-right:15px}@media (max-width:599px){#tns-404 .help-row .help-col{min-width:100%;max-width:100%;margin-bottom:30px}}#tns-404 .help-row .help-col .help-heading{font-weight:700;margin-bottom:5px}#tns-403{min-height:calc(100vh - 150px);padding:100px 0 70px}#tns-403 .content-column{max-width:830px}#tns-403 .heading{font-size:36px;font-weight:900;margin-bottom:20px}#tns-403 .sub-heading{margin-bottom:30px}#tns-403 .sub-heading img{display:inline;width:21px;height:auto;vertical-align:top}#tns-403 .help-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}#tns-403 .help-row .help-col{padding-right:15px}@media (max-width:599px){#tns-403 .help-row .help-col{min-width:100%;max-width:100%;margin-bottom:30px}}#tns-403 .help-row .help-col .help-heading{font-weight:700;margin-bottom:5px}#tns-about{padding-top:50px;padding-bottom:50px}@media (max-width:767px){#tns-about{padding-top:30px}}#tns-about #tns-about-content{position:relative}#tns-about #tns-about-content .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-about #tns-about-content .col-50{padding:0 20px 0 0}@media (max-width:1023.98px){#tns-about #tns-about-content .col-50{min-width:75%;max-width:75%}}@media (max-width:767.98px){#tns-about #tns-about-content .col-50{padding:0;min-width:100%;max-width:100%}}@media (max-width:1023.98px){#tns-about #tns-about-content .col-25:first-child{min-width:100%;max-width:100%;-webkit-box-ordinal-group:-1;-moz-box-ordinal-group:-1;-o-box-ordinal-group:-1;-ms-flex-order:-1;-webkit-order:-1;order:-1}}@media (max-width:767.98px){#tns-about #tns-about-content .col-25{padding:0;min-width:100%;max-width:100%;-webkit-box-ordinal-group:-1;-moz-box-ordinal-group:-1;-o-box-ordinal-group:-1;-ms-flex-order:-1;-webkit-order:-1;order:-1}}#tns-about #tns-about-content #tns-about-left-sidebar{position:relative}@media (min-width:992px){#tns-about #tns-about-content #tns-about-left-sidebar{padding-right:20px}}#tns-about #tns-about-content #tns-about-left-sidebar .main-title{font-size:38px;font-weight:normal;width:100%;line-height:1.2;color:#01aff4;margin-bottom:20px}@media (max-width:1199.98px){#tns-about #tns-about-content #tns-about-left-sidebar .main-title{font-size:32px}}@media (max-width:991.98px){#tns-about #tns-about-content #tns-about-left-sidebar .main-title{font-size:28px}}@media (max-width:767.98px){#tns-about #tns-about-content #tns-about-left-sidebar .main-title{font-size:26px}}#tns-about #tns-about-content #tns-about-main-content{position:relative}#tns-about #tns-about-content #tns-about-main-content .main-title{font-size:22px;font-weight:normal;width:100%;line-height:1.35;color:#3c3c3c;margin-bottom:25px;letter-spacing:0}#tns-about #tns-about-content #tns-about-main-content .section-heading{font-size:22px;font-weight:normal;width:100%;line-height:1.35;color:#3c3c3c;margin-bottom:25px;letter-spacing:0;padding:0;margin-bottom:0;border:0;text-transform:none}#tns-about #tns-about-content #tns-about-main-content .description{font-size:14px;font-weight:normal;width:100%;line-height:1.35;color:#3c3c3c;margin-bottom:20px;letter-spacing:0}#tns-about #tns-about-content #tns-about-main-content .description h1,#tns-about #tns-about-content #tns-about-main-content .description h2,#tns-about #tns-about-content #tns-about-main-content .description h3,#tns-about #tns-about-content #tns-about-main-content .description h4,#tns-about #tns-about-content #tns-about-main-content .description h5,#tns-about #tns-about-content #tns-about-main-content .description h6{font-weight:normal;color:#3c3c3c}#tns-about #tns-about-content #tns-about-main-content .description h1:not(:first-child),#tns-about #tns-about-content #tns-about-main-content .description h2:not(:first-child),#tns-about #tns-about-content #tns-about-main-content .description h3:not(:first-child),#tns-about #tns-about-content #tns-about-main-content .description h4:not(:first-child),#tns-about #tns-about-content #tns-about-main-content .description h5:not(:first-child),#tns-about #tns-about-content #tns-about-main-content .description h6:not(:first-child){border-top:1px solid rgba(60,60,60,0.5);margin-top:0;margin-bottom:20px;padding-top:20px}#tns-about #tns-about-content #tns-about-main-content .description p,#tns-about #tns-about-content #tns-about-main-content .description li{font-size:14px;font-weight:normal;width:100%;line-height:1.35;color:#3c3c3c;margin-bottom:20px;letter-spacing:0;display:inline-block}#tns-about #tns-about-content #tns-about-main-content .description p a,#tns-about #tns-about-content #tns-about-main-content .description li a{color:#01aff4;font-size:16px;word-break:break-word;width:100%}#tns-about #tns-about-content #tns-about-main-content .description p a:first-letter,#tns-about #tns-about-content #tns-about-main-content .description li a:first-letter{text-transform:capitalize}#tns-about #tns-about-content #tns-about-main-content .description li{margin:0 0 0 5px}#tns-about #tns-about-content #tns-about-right-sidebar{position:relative;padding-left:20px}@media (max-width:1023.98px){#tns-about #tns-about-content #tns-about-right-sidebar{margin:10px 0 20px;padding:0}}#tns-about #tns-about-content #tns-about-right-sidebar .sidebar-wrap{display:inline-block;border:1px solid #01aff4;padding:20px 15px;width:100%}#tns-about #tns-about-content #tns-about-right-sidebar .sidebar-wrap .description{display:inline-block;margin:0;width:100%;font-size:14px;font-weight:normal;color:#3c3c3c;line-height:1.3}#tns-about #tns-about-content #tns-about-right-sidebar .sidebar-wrap .description h1,#tns-about #tns-about-content #tns-about-right-sidebar .sidebar-wrap .description h2,#tns-about #tns-about-content #tns-about-right-sidebar .sidebar-wrap .description h3,#tns-about #tns-about-content #tns-about-right-sidebar .sidebar-wrap .description h4,#tns-about #tns-about-content #tns-about-right-sidebar .sidebar-wrap .description h5,#tns-about #tns-about-content #tns-about-right-sidebar .sidebar-wrap .description h6{color:#3c3c3c;font-size:14px;line-height:1.3;margin-top:0}#tns-about #tns-about-content #tns-about-right-sidebar .sidebar-wrap .description p{width:100%;display:inline-block;font-size:14px;color:#3c3c3c;line-height:1.33;margin-bottom:15px}#tns-about #tns-about-content #tns-about-right-sidebar .sidebar-wrap .description a{font-size:14px;color:#3c3c3c;line-height:1.33}#tns-about #tns-about-content #tns-about-right-sidebar .sidebar-wrap .description a:hover{color:#01aff4}#tns-about #tns-about-content #tns-about-right-sidebar .social-share{width:100%;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-about #tns-about-content #tns-about-right-sidebar .social-share .social-share-wrap{width:100%;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;margin:15px 0;-webkit-box-align:start;-moz-box-align:start;-o-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;-webkit-box-pack:start;-moz-box-pack:start;-o-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}#tns-about #tns-about-content #tns-about-right-sidebar .social-share .social-share-wrap .link{width:30px;height:30px;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:start;-moz-box-pack:start;-o-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;margin-right:5px}#tns-about #tns-about-content #tns-about-right-sidebar .social-share .social-share-wrap .link svg{height:17px;width:19px}#tns-about #tns-about-content #tns-about-right-sidebar .social-share .social-share-wrap .link svg.stroke{fill:none;stroke:#3c3c3c}#tns-about #tns-about-content #tns-about-right-sidebar .social-share .social-share-wrap .link svg.fill{stroke:none;fill:#3c3c3c}#tns-about #tns-about-content #tns-about-right-sidebar .social-share .social-share-wrap .link:hover .stroke{stroke:#01aff4}#tns-about #tns-about-content #tns-about-right-sidebar .social-share .social-share-wrap .link:hover .fill{fill:#01aff4}#tns-about #tns-about-content #tns-about-our-founders-team{position:relative;padding:30px 0;border-top:1px solid rgba(60,60,60,0.5);border-bottom:1px solid rgba(60,60,60,0.5)}#tns-about #tns-about-content #tns-about-our-founders-team .content +.content{border-top:1px solid rgba(60,60,60,0.5);padding-top:30px;margin-top:40px}#tns-about #tns-about-content #tns-about-our-founders-team .section-heading{font-size:22px;font-weight:normal;width:100%;line-height:1.35;color:#3c3c3c;margin-bottom:25px;letter-spacing:0;padding:0;margin-bottom:0;border:0;text-transform:none}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block{width:calc(100% / 2 - 10px);display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;margin-top:30px}@media (max-width:767.98px){#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block{width:100%;margin-top:20px}}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block:nth-child(even){margin-left:20px}@media (max-width:767.98px){#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block:nth-child(even){margin-left:0}}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-media{width:80px;height:80px}@media (max-width:767.98px){#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-media{width:75px;height:75px}}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-media .default-image,#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-media img{aspect-ratio:1/1;display:block;object-fit:cover}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-content{width:calc(100% - 80px);padding-left:15px}@media (max-width:767.98px){#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-content{width:calc(100% - 75px)}}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-name,#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-designation{font-size:14px;display:block;line-height:1.33;width:100%;font-weight:bold;letter-spacing:0;color:#3c3c3c}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-name a,#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-designation a{font-size:14px;display:inline-block;line-height:1.33;width:100%;font-weight:bold;vertical-align:middle;letter-spacing:0;color:#3c3c3c}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-name a:hover,#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-designation a:hover{color:#01aff4}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-designation{font-weight:normal;text-transform:none}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-social-link{width:100%;margin:5px 0 0;display:inline-block;vertical-align:top}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-social-link .link{width:25px;height:25px;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:start;-moz-box-pack:start;-o-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:start;justify-content:start;margin-right:2px}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-social-link .link svg{width:18px;height:18px;position:relative;top:2px}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-social-link .link svg.stroke{fill:none;stroke:#3c3c3c}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-social-link .link svg.fill{stroke:none;fill:#3c3c3c}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-social-link .link.twitter svg{width:15px;height:15px;position:static}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-social-link .link:hover .stroke{stroke:#01aff4}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-social-link .link:hover .fill{fill:#01aff4}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-stories-link{display:inline-block;vertical-align:top}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-stories-link a{font-size:14px;color:#3c3c3c;display:inline-block;padding:3px 0;line-height:1.3;margin:0;vertical-align:middle;letter-spacing:0}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-stories-link a span{text-transform:capitalize}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-stories-link a svg{position:relative;top:2px;height:12px;fill:#3c3c3c}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-stories-link a:hover{color:#01aff4}#tns-about #tns-about-content #tns-about-our-founders-team .outer-wrapper .block .block-member-stories-link a:hover svg{fill:#01aff4}#tns-about #tns-about-content #tns-about-founding-sponsors{position:relative;padding:30px 0 0}#tns-about #tns-about-content #tns-about-founding-sponsors .heading{font-size:22px;font-weight:normal;width:100%;line-height:1.35;color:#3c3c3c;margin-bottom:15px;letter-spacing:0}#tns-about #tns-about-content #tns-about-founding-sponsors .heading h1,#tns-about #tns-about-content #tns-about-founding-sponsors .heading h2,#tns-about #tns-about-content #tns-about-founding-sponsors .heading h3,#tns-about #tns-about-content #tns-about-founding-sponsors .heading h4,#tns-about #tns-about-content #tns-about-founding-sponsors .heading h5,#tns-about #tns-about-content #tns-about-founding-sponsors .heading h6{margin:0 0 15px;font-weight:normal;font-size:22px;width:100%;line-height:1.35}#tns-about #tns-about-content #tns-about-founding-sponsors .heading p{font-size:16px;color:#3c3c3c;display:inline-block;width:100%;margin-bottom:5px}#tns-about #tns-about-content #tns-about-founding-sponsors .sponsors-logos-list{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;list-style:none;margin:0;padding:15px 0 0;-webkit-box-pack:justify;-moz-box-pack:justify;-o-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}@media (max-width:767.98px){#tns-about #tns-about-content #tns-about-founding-sponsors .sponsors-logos-list{padding:0}}#tns-about #tns-about-content #tns-about-founding-sponsors .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 3 - 20px);width:100%;margin:0;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;min-height:45px;margin-bottom:45px}#tns-about #tns-about-content #tns-about-founding-sponsors .sponsors-logos-list .sponsor-logo .default-image,#tns-about #tns-about-content #tns-about-founding-sponsors .sponsors-logos-list .sponsor-logo img{max-height:45px}@media (max-width:1199.98px){#tns-about #tns-about-content #tns-about-founding-sponsors .sponsors-logos-list .sponsor-logo{margin-bottom:20px}}@media (max-width:767.98px){#tns-about #tns-about-content #tns-about-founding-sponsors .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 3 - 10px);margin:10px 0}}#tns-category .content-column{margin-top:50px;margin-bottom:50px}@media (max-width:767px){#tns-category .content-column{margin-top:30px;margin-bottom:30px}}#tns-category .category-story-card-link{display:block;padding-bottom:10px;margin-bottom:20px;border-bottom:1px solid #c2c2c2}#tns-category .category-story-card-link:last-child{border-bottom:none}#tns-category .category-story-card-link:hover .headline{color:#01aff4}#tns-category .category-story-card-link .col-thumb img{display:block;width:100%;height:auto}#tns-category .category-story-card-link .col-headline{color:#515151;padding-left:15px}#tns-category .category-story-card-link .col-headline .post-title{padding:0;margin-top:-3px;font-size:18px;font-weight:500;text-decoration:none}#tns-category .category-story-card-link .col-headline .excerpt{margin-top:7px;color:#3c3c3c;font-size:14px;line-height:1.2}#tns-category .category-story-card-link:hover .post-title{color:#01aff4}#tns-category .category-footer-spacer{margin-bottom:50px}@media (max-width:767px){#tns-category .category-footer-spacer{margin-bottom:30px}}#tns-category #tns-category-heading{position:relative;margin-bottom:50px}#tns-category #tns-category-heading .title h1{line-height:1.12}@media (max-width:767px){#tns-category #tns-category-heading{margin-bottom:30px}}@media (max-width:1023px){#tns-category #tns-category-heading .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}#tns-category #tns-category-heading .row .title{min-width:100%;max-width:100%}#tns-category #tns-category-heading .row .definition{min-width:80%;max-width:80%}#tns-category #tns-category-heading .row .empty{min-width:20%;max-width:20%}}@media (max-width:1023px){#tns-category #tns-category-heading .row .definition{min-width:90%;max-width:90%}#tns-category #tns-category-heading .row .empty{min-width:10%;max-width:10%}}#tns-category #tns-category-frame{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex}@media (max-width:899px){#tns-category #tns-category-frame .nav{display:none}#tns-category #tns-category-frame .content{min-width:65%;max-width:65%}#tns-category #tns-category-frame .sidebar{min-width:35%;max-width:35%}}@media (max-width:767px){#tns-category #tns-category-frame .nav{display:none}#tns-category #tns-category-frame .content{min-width:100%;max-width:100%}#tns-category #tns-category-frame .sidebar{display:none}}#tns-category #tns-category-frame #tns-category-frame-nav{position:sticky;top:110px;padding-right:40px}#tns-category #tns-category-frame #tns-category-frame-nav .heading-text{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}#tns-category #tns-category-frame #tns-category-frame-nav .category-nav-option{display:block;color:#000}#tns-category #tns-category-frame #tns-category-frame-nav .category-nav-option:hover{color:#ff3287}#tns-category #tns-category-frame #tns-category-frame-nav .category-nav-option.active{color:#ff3287}#tns-category #tns-category-frame #tns-category-frame-content{position:relative}#tns-category #tns-category-frame #tns-category-frame-content .category-content-block{margin-bottom:40px}#tns-category #tns-category-frame #tns-category-frame-content .category-story-card{margin-top:10px;padding-bottom:10px;border-bottom:1px solid #c2c2c2}#tns-category #tns-category-frame #tns-category-frame-content .category-story-card:first-child{margin-top:0}#tns-category #tns-category-frame #tns-category-frame-content .category-story-card:last-child{border-bottom:none}#tns-category #tns-category-frame #tns-category-frame-content .category-story-card .col-thumb{min-width:100px;max-width:100px}@media (max-width:767px){#tns-category #tns-category-frame #tns-category-frame-content .category-story-card .col-thumb{min-width:70px;max-width:70px}}#tns-category #tns-category-frame #tns-category-frame-content .category-story-card .col-thumb .thumb{width:100px;height:50px;background:#f6f8fa}@media (max-width:767px){#tns-category #tns-category-frame #tns-category-frame-content .category-story-card .col-thumb .thumb{width:70px;height:35px}}#tns-category #tns-category-frame #tns-category-frame-content .category-story-card .col-headline .headline{padding-left:10px;font-size:16px;font-weight:500}@media (max-width:767px){#tns-category #tns-category-frame #tns-category-frame-content .category-story-card .col-headline .headline{font-size:15px}}#tns-category #tns-category-frame #tns-category-frame-content #tns-category-frame-content-block-essential-reading{position:relative}#tns-category #tns-category-frame #tns-category-frame-content #tns-category-frame-content-block-overview{position:relative}#tns-category #tns-category-frame #tns-category-frame-content #tns-category-frame-content-block-overview .overview-block{position:relative;width:100%;height:250px;margin-bottom:15px;overflow:hidden}#tns-category #tns-category-frame #tns-category-frame-content #tns-category-frame-content-block-overview .overview-block .fade{position:absolute;left:0;right:0;bottom:0;width:100%;height:90px;background:#fff;background:-webkit-linear-gradient(270deg, rgba(255,255,255,0) 0%, #fff 100%);background:-moz-linear-gradient(270deg, rgba(255,255,255,0) 0%, #fff 100%);background:-o-linear-gradient(270deg, rgba(255,255,255,0) 0%, #fff 100%);background:-ms-linear-gradient(270deg, rgba(255,255,255,0) 0%, #fff 100%);background:linear-gradient(180deg, rgba(255,255,255,0) 0%, #fff 100%);z-index:2}#tns-category #tns-category-frame #tns-category-frame-content #tns-category-frame-content-block-getting-started{position:relative}#tns-category #tns-category-frame #tns-category-frame-content #tns-category-frame-content-block-tutorials{position:relative}#tns-category #tns-category-frame #tns-category-frame-content #tns-category-frame-content-block-faq{position:relative}#tns-category #tns-category-frame #tns-category-frame-content #tns-category-frame-content-block-faq .question{font-weight:700}#tns-category #tns-category-frame #tns-category-frame-sidebar{position:sticky;top:110px;padding-left:40px}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-sponsors{position:relative;margin-bottom:30px}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-sponsors .sponsor-logo{display:block}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-sponsors .sponsor-logo:hover .copy{color:#ff3287}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-sponsors .sponsor-logo:hover .copy svg path{fill:#ff3287}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-sponsors .sponsor-logo .logo-frame{width:100%;max-height:120px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding:10px;background:#eaeff3;margin-bottom:10px}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-sponsors .sponsor-logo .logo-frame .logo-img{aspect-ratio:1.86/1;object-fit:contain;max-width:80%;max-height:70%}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-sponsors .sponsor-logo .copy{color:#515151;font-size:14px;line-height:1.33}@media (max-width:767px){#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-sponsors .sponsor-logo .copy{font-size:17px}}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-sponsors .sponsor-logo .copy svg{height:8px;vertical-align:baseline}@media (max-width:767px){#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-sponsors .sponsor-logo .copy svg{height:10px}}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-sponsors .sponsor-logo .copy svg path{fill:#515151}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-share{position:relative;margin-bottom:30px}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-share .section-heading{margin-bottom:10px}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-promo{position:relative}#tns-category #tns-category-frame #tns-category-frame-sidebar #tns-category-frame-sidebar-trending-stories{position:relative}#tns-category #tns-category-stories-archive{position:relative}#tns-category #tns-category-stories-archive .section-heading{margin-bottom:26px}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row-wrap > .row:last-child:after{display:none}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row{position:relative;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0 -15px}@media (max-width:1199.98px){#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25{min-width:33.333%;max-width:33.333%}}@media (max-width:1023.98px){#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25{min-width:50%;max-width:50%}}@media (max-width:767.98px){#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row{-webkit-box-pack:justify;-moz-box-pack:justify;-o-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25{min-width:100%;max-width:100%}}@media (max-width:639.98px){#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row{-webkit-box-pack:start;-moz-box-pack:start;-o-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25{padding:0 15px}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25:nth-child(4n+4){border-right:none}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25 .story-card{display:block;margin-bottom:30px;cursor:pointer}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25 .story-card figure{object-position:top}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25 .story-card figure img{display:block;margin-bottom:12px;width:100%;aspect-ratio:1.86/1;object-fit:cover}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25 .story-card:hover .post-title{color:#01aff4}@media (max-width:767.98px){#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25 .story-card{border-bottom:1px solid #c2c2c2;margin-bottom:0;padding:7px 0 12px}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25 .story-card .latest-post-media{width:76px;height:76px;aspect-ratio:1/1;display:inline-block;vertical-align:middle;padding-top:4px}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25 .story-card .latest-post-media img{width:100%;aspect-ratio:1/1;object-fit:cover;object-position:top;display:inline-block;vertical-align:middle}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25 .story-card .latest-post-content{display:inline-block;width:calc(100% - 81px);padding-left:12px;vertical-align:top}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25 .story-card .latest-post-content .post-title{display:block;color:#3c3c3c;text-decoration:none;margin-bottom:5px}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25 .story-card .latest-post-content .sponsored-badge{margin:7px 0 0}#tns-category #tns-category-stories-archive .more-stories-stories .more-stories-row .col-25:last-child .story-card{border:none}}#tns-category #tns-category-stories-archive .load-more-stories-link{text-decoration:none}#tns-category #tns-category-stories-archive .load-more-stories-link svg{width:12px;vertical-align:middle;fill:#ff3287}#tns-category #tns-category-stories-archive .load-more-stories-link:hover svg{fill:#01aff4}@media (max-width:767.98px){#tns-category #tns-category-stories-archive .load-more-stories-link{font-size:14px}}#tns-category #tns-category-pagination{position:relative;text-align:center}#tns-category #tns-category-pagination .navigation.pagination .screen-reader-text{display:none}#tns-category .tns-category-trending-stories{position:fixed;bottom:50px;left:0;right:0;-webkit-box-shadow:0 0 5px #a5a9b0;box-shadow:0 0 5px #a5a9b0;z-index:3;display:none}@media (max-width:768px){#tns-category .tns-category-trending-stories{display:block}}#tns-category .tns-category-trending-stories .tns-category-trending-stories-close{position:absolute;top:15px;right:15px;z-index:2;cursor:pointer}#tns-category .tns-category-trending-stories .tns-category-trending-stories-close svg{height:14px}#tns-category .tns-category-trending-stories .tns-category-trending-stories-close svg path{fill:#8da6c0}#tns-category .tns-category-trending-stories .tns-category-trending-stories-close:hover svg path{fill:#ff3287}#tns-contributions{position:relative;padding-top:50px;padding-bottom:50px}@media (max-width:767px){#tns-contributions{padding-top:30px;padding-bottom:30px}}#tns-contributions #tns-contributions-content{position:relative}#tns-contributions #tns-contributions-content .content-column{min-height:unset}#tns-contributions #tns-contributions-content .content-column .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}@media (max-width:991.98px){#tns-contributions #tns-contributions-content .content-column .row .col-25,#tns-contributions #tns-contributions-content .content-column .row .col-50{min-width:100%;max-width:100%}}#tns-contributions #tns-contributions-content #tns-contributions-left-sidebar{position:relative}@media (min-width:992px){#tns-contributions #tns-contributions-content #tns-contributions-left-sidebar{padding-right:20px}}#tns-contributions #tns-contributions-content #tns-contributions-left-sidebar .main-title{font-size:38px;font-weight:normal;width:100%;line-height:1.2;color:#01aff4;margin-bottom:20px}#tns-contributions #tns-contributions-content #tns-contributions-main-content{position:relative;scroll-behavior:smooth}@media (min-width:992px){#tns-contributions #tns-contributions-content #tns-contributions-main-content{padding-right:15px;padding-left:15px}}#tns-contributions #tns-contributions-content #tns-contributions-main-content .main-media-content{width:100%;margin-bottom:30px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .main-media-content .default-image{display:block;width:100%;height:auto}#tns-contributions #tns-contributions-content #tns-contributions-main-content .main-media-content .image-disclosure,#tns-contributions #tns-contributions-content #tns-contributions-main-content .main-media-content .image-disclosure .attribution{color:#a5a9b0;font-size:12px;line-height:1.33}#tns-contributions #tns-contributions-content #tns-contributions-main-content .main-media-content .image-disclosure a,#tns-contributions #tns-contributions-content #tns-contributions-main-content .main-media-content .image-disclosure .attribution a{color:#01aff4;text-decoration:none}#tns-contributions #tns-contributions-content #tns-contributions-main-content .main-media-content .image-disclosure a:hover,#tns-contributions #tns-contributions-content #tns-contributions-main-content .main-media-content .image-disclosure .attribution a:hover{color:#ff3287}#tns-contributions #tns-contributions-content #tns-contributions-main-content .main-media-content .image-disclosure{padding-top:7px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .contributions-anchor-nav{background:#f6f8fa;color:#515151;padding:20px 24px;border-radius:0;margin-bottom:24px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .contributions-anchor-nav .nav-heading{font-size:15px;font-weight:700;line-height:1.4;color:#3c3c3c;margin-bottom:12px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .contributions-anchor-nav .nav-links{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:8px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .contributions-anchor-nav .nav-links .anchor-link{display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;gap:8px;font-size:15px;font-weight:600;color:#01aff4;text-decoration:none;-webkit-transition:color 0.2s ease;-moz-transition:color 0.2s ease;-o-transition:color 0.2s ease;-ms-transition:color 0.2s ease;transition:color 0.2s ease}#tns-contributions #tns-contributions-content #tns-contributions-main-content .contributions-anchor-nav .nav-links .anchor-link span{display:inline}#tns-contributions #tns-contributions-content #tns-contributions-main-content .contributions-anchor-nav .nav-links .anchor-link svg{height:12px;width:12px;fill:currentColor}#tns-contributions #tns-contributions-content #tns-contributions-main-content .contributions-anchor-nav .nav-links .anchor-link:hover,#tns-contributions #tns-contributions-content #tns-contributions-main-content .contributions-anchor-nav .nav-links .anchor-link:focus{color:#ff3287;text-decoration:none;outline:none}#tns-contributions #tns-contributions-content #tns-contributions-main-content .nav-keyline{border-top:1px solid #c2c2c2;margin:0 0 24px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .main-body{margin-top:24px;scroll-margin-top:120px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .brand-body{margin-top:40px;scroll-margin-top:120px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .brand-body .brand-intro{font-size:17px;line-height:1.45;color:#3c3c3c;margin-bottom:20px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .brand-body .brand-details .brand-keyline{border-top:1px solid #c2c2c2;margin:20px 0 30px;height:1px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .brand-body .brand-details .brand-cta{margin-top:20px;margin-bottom:30px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .brand-body .brand-details h3{font-size:18px;font-weight:700;margin-bottom:12px;color:#3c3c3c}#tns-contributions #tns-contributions-content #tns-contributions-main-content .brand-body .brand-details p{font-size:16px;line-height:1.5;color:#515151;margin-bottom:16px}#tns-contributions #tns-contributions-content #tns-contributions-main-content .main-title{font-size:22px;font-weight:normal;width:100%;line-height:1.35;color:#3c3c3c;margin-bottom:25px;letter-spacing:0}#tns-contributions #tns-contributions-content #tns-contributions-main-content .description{font-size:14px;font-weight:normal;width:100%;line-height:1.35;color:#3c3c3c;margin-bottom:20px;letter-spacing:0}#tns-contributions #tns-contributions-content #tns-contributions-main-content .description p{width:100%;font-size:17px;line-height:1.45;letter-spacing:.3px;margin-bottom:15px}#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar{position:relative}@media (min-width:992px){#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar{padding-left:20px}}@media (max-width:991.98px){#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar{margin-top:25px}}#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar .sidebar-wrap{display:inline-block;border:1px solid #01aff4;padding:20px}#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar .sidebar-wrap .description{display:inline-block;margin:0;width:100%;font-size:14px;font-weight:normal;color:#3c3c3c;line-height:1.3}#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar .sidebar-wrap .description .title{font-size:17px;font-weight:600;letter-spacing:.3;margin-bottom:15px}#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar .sidebar-wrap .description p{width:100%;display:inline-block;font-size:15px;color:#3c3c3c;line-height:1.33;margin-bottom:15px}#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar .sidebar-wrap .become-sponsor-action{width:100%;text-align:left}#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar .sidebar-wrap .become-sponsor-action .link{display:inline-block;color:#01aff4;font-size:14px;font-weight:500;line-height:1.3;text-decoration:none}#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar .sidebar-wrap .become-sponsor-action .link svg{display:inline-block;height:10px;width:auto;fill:#01aff4}#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar .sidebar-wrap .become-sponsor-action .link:hover{color:#ff3287}#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar .sidebar-wrap .become-sponsor-action .link:hover svg{fill:#ff3287}#tns-contributions #tns-contributions-content #tns-contributions-right-sidebar .sidebar-wrap .note{width:100%;font-size:15px;line-height:1.33;margin-bottom:10px}#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor{position:relative;border-top:2px solid #ff3287;margin-top:50px;padding:30px 0 40px}@media (max-width:1024.98px){#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor{margin-top:30px;padding:30px 0}}@media (max-width:767.98px){#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor{margin-top:25px;padding:25px 0}}#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .content{max-width:940px}#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-subtitle{font-size:16px;color:#ff3287;font-weight:bold;text-align:center;line-height:1.3;width:100%;margin:0 auto 30px}@media (max-width:1023.98px){#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-subtitle{margin-bottom:25px}}@media (max-width:767.98px){#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-subtitle{font-size:14px}}#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-title{font-size:36px;color:#ff3287;font-weight:600;text-align:center;line-height:1.3;width:100%;margin:0 auto 40px}@media (max-width:1023.98px){#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-title{font-size:32px;margin-bottom:30px}}@media (max-width:767.98px){#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-title{font-size:28px}}@media (max-width:575.98px){#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-title{font-size:26px}}#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-action{width:100%;text-align:center}#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-action .link{font-size:16px;color:#ff3287;font-weight:bold;text-align:center;line-height:1.45;padding:8px 10px;text-decoration:none;letter-spacing:0;display:inline-block}@media (max-width:767.98px){#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-action .link{font-size:14px}}#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-action .link svg{display:inline-block;height:10px;width:auto;fill:#ff3287}#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-action .link:hover{color:#01aff4}#tns-contributions #tns-contributions-content #tns-contributions-become-sponsor .become-sponsor-action .link:hover svg{fill:#01aff4}#tns-ebooks{position:relative;margin-bottom:50px}#tns-ebooks #tns-ebooks-cover{position:relative;padding-top:50px;margin-bottom:50px}@media (max-width:1023px){#tns-ebooks #tns-ebooks-cover{padding-top:30px}}#tns-ebooks #tns-ebooks-cover .featured-column{padding-right:30px}@media (max-width:1023px){#tns-ebooks #tns-ebooks-cover .featured-column{min-width:100%;padding-right:0}}@media (max-width:1023px){#tns-ebooks #tns-ebooks-cover .sidebar-column{display:none}}#tns-ebooks #tns-ebooks-cover .section-heading{color:#fff;border-top:1px solid #fff;opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook{position:relative}#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}@media (max-width:639px){#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .cover{min-width:100%;max-width:100%;margin-bottom:30px}}@media (max-width:499px){#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .cover{margin-bottom:20px}}@media (max-width:639px){#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .cover .cover-mobile-column{min-width:33.333%;max-width:33.333%}}#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .cover .cover-mobile-column .coming-soon-banner{position:absolute;top:-3px;right:-3px;width:80px;height:auto;z-index:2}#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .cover .cover-mobile-column img{display:block;width:100%;height:auto;margin:0 auto 0 auto}#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .cover .title-mobile-column{padding-left:20px;display:none}@media (max-width:639px){#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .cover .title-mobile-column{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex}}#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .cover .title-mobile-column .title-mobile{color:#fff;font-size:24px;font-weight:500;line-height:1.2;margin-bottom:10px}@media (max-width:499px){#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .cover .title-mobile-column .title-mobile{font-size:18px;font-weight:600}}#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .details{padding-left:30px}@media (max-width:639px){#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .details{min-width:100%;max-width:100%;padding-left:0}}#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .details .title{color:#fff;font-size:33px;font-weight:500;line-height:1.2;margin-bottom:10px}@media (max-width:639px){#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .details .title{font-size:24px;display:none}}@media (max-width:639px){#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .details .title{font-size:22px;font-weight:600}}#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .details .description{color:#fff;font-size:17px;font-weight:500;line-height:1.45;margin-bottom:30px}@media (max-width:499px){#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .details .description{font-size:15px}}#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .details .featured-ebook-download-button{max-width:75%;color:#ff3287;line-height:40px;background:#fff}#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .details .featured-ebook-download-button:hover{color:#fff;background:#ff3287}@media (max-width:599px){#tns-ebooks #tns-ebooks-cover #tns-ebooks-featured-ebook .featured-ebook-row .details .featured-ebook-download-button{max-width:100%}}#tns-ebooks #tns-ebooks-cover #tns-ebooks-cover-sidebar{position:relative}#tns-ebooks #tns-ebooks-cover #tns-ebooks-cover-sidebar .related-ebooks-list{position:relative;width:100%}#tns-ebooks #tns-ebooks-cover #tns-ebooks-cover-sidebar .related-ebooks-list a{display:block;width:100%;color:#fff;text-decoration:none}#tns-ebooks #tns-ebooks-cover #tns-ebooks-cover-sidebar .related-ebooks-list a:hover{color:#ff3287}#tns-ebooks #tns-ebooks-cover #tns-ebooks-cover-sidebar .related-ebooks-list .related-ebook{margin-bottom:20px}#tns-ebooks #tns-ebooks-cover #tns-ebooks-cover-sidebar .related-ebooks-list .related-ebook .related-ebook-cover img{display:block;width:100%;height:auto}#tns-ebooks #tns-ebooks-cover #tns-ebooks-cover-sidebar .related-ebooks-list .related-ebook .related-ebook-title{padding-left:10px;margin-top:-3px}#tns-ebooks #tns-ebooks-sponsors{position:relative;padding-top:30px;margin-bottom:30px}@media (max-width:767.98px){#tns-ebooks #tns-ebooks-sponsors{padding-top:25px;padding-bottom:15px}}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-content{position:relative}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-content .sponsors-title{width:100%;font-size:18px;font-weight:600;line-height:1.35;text-align:center;margin-bottom:20px}@media (max-width:1023.98px){#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-content .sponsors-title{font-size:20px}}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-logos{position:relative;padding:0 10% 0 10%}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-logos .sponsors-logos-list{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;list-style:none;margin:0;-webkit-box-pack:justify;-moz-box-pack:justify;-o-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 6 - 20px);width:100%;margin:0;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;display:none;margin-bottom:30px}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-logos .sponsors-logos-list .sponsor-logo .default-image,#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-logos .sponsors-logos-list .sponsor-logo img{max-height:45px}@media (max-width:1023.98px){#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 2 - 20px);width:100%}}@media (max-width:767.98px){#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 3 - 20px);margin:25px 0}}@media (max-width:479.98px){#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 2 - 20px)}}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-cta{position:relative;padding-top:20px}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-cta .cta{width:100%;text-align:center}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-cta .cta .cta-link{color:#515151;font-size:15px;text-decoration:none}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-cta .cta .cta-link svg{height:10px;width:auto;fill:#515151}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-cta .cta .cta-link:hover{color:#ff3287}#tns-ebooks #tns-ebooks-sponsors #tns-ebooks-sponsors-cta .cta .cta-link:hover svg{fill:#ff3287}#tns-ebooks #tns-ebooks-list{position:relative}@media (max-width:767px){#tns-ebooks #tns-ebooks-list .ebooks-list-series{display:none}}@media (max-width:767px){#tns-ebooks #tns-ebooks-list .ebooks-list-books{min-width:100%}}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-series{position:sticky;top:100px;padding-right:30px}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-series .ebooks-series-nav .ebooks-series-nav-option{display:block;color:#3c3c3c;font-size:20px;line-height:1.3;text-decoration:none;margin-bottom:3px}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-series .ebooks-series-nav .ebooks-series-nav-option:hover{color:#ff3287}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-series .ebooks-series-nav .ebooks-series-nav-option.active{color:#ff3287}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books{position:relative}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block{position:relative}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .title{border:0;text-transform:none;font-size:28px;margin:0 0 58px;letter-spacing:0;padding:0}@media (max-width:1023.98px){#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .title{font-size:18px;margin:0 0 22px}}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block{margin-bottom:60px;cursor:pointer}@media (max-width:1023.98px){#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block{margin-bottom:30px}}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block:hover .ebook-title{color:#01aff4 !important}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block:hover .ebooks-download-link{color:#01aff4}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block:hover .ebooks-download-link svg{fill:#01aff4 !important}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .left-column{padding-right:30px}@media (max-width:539px){#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .left-column{min-width:120px;padding-right:20px}}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .left-column .coming-soon-banner{position:absolute;top:-2px;right:28px;width:60px;height:auto;z-index:2;border:none}@media (max-width:539px){#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .left-column .coming-soon-banner{right:18px}}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .left-column img{display:block;width:100%;height:auto;border:1px solid #a5a9b0}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .right-column{padding-right:30px}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .right-column .ebook-title{color:#3c3c3c;font-size:28px;font-weight:600;line-height:1.2;margin-bottom:5px}@media (max-width:1023.98px){#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .right-column .ebook-title{font-size:18px}}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .right-column p{font-size:17px;line-height:1.45;margin-bottom:20px}@media (max-width:539px){#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .right-column p{font-size:15px}}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .right-column li{font-size:17px;line-height:1.45;margin-bottom:10px}@media (max-width:539px){#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .right-column li{font-size:15px}}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .right-column a{font-size:17px}@media (max-width:539px){#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .right-column a{font-size:15px}}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .right-column .ebooks-download-link svg{height:12px;fill:#ff3287}#tns-ebooks #tns-ebooks-list #tns-ebooks-list-books .ebook-series-block .ebook-block .right-column .ebooks-download-link:hover svg{fill:#01aff4}#tns-ebooks #tns-digest-newsletter{position:relative}#tns-ebooks-book{position:relative;padding-top:70px}@media (max-width:1023px){#tns-ebooks-book{padding-top:50px}}@media (max-width:767px){#tns-ebooks-book{padding-top:30px}}#tns-ebooks-book #tns-ebooks-book-details{position:relative}#tns-ebooks-book #tns-ebooks-book-details .content-column.details{max-width:830px}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .series-title{color:#3c3c3c;font-size:14px;line-height:1.33;font-weight:700;text-transform:uppercase;margin-bottom:20px}#tns-ebooks-book #tns-ebooks-book-details .content-column.details h1{line-height:1.2;margin-bottom:30px}@media (max-width:767px){#tns-ebooks-book #tns-ebooks-book-details .content-column.details h1{margin-bottom:15px}}@media (max-width:499px){#tns-ebooks-book #tns-ebooks-book-details .content-column.details h1{font-size:30px}}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .sub-header-mobile{margin-bottom:30px;display:none}@media (max-width:767px){#tns-ebooks-book #tns-ebooks-book-details .content-column.details .sub-header-mobile{display:block}}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details{padding:60px 90px 60px 90px;margin-bottom:30px}@media (max-width:599px){#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details{padding:30px}}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details .download-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;color:#fff;font-size:17px;font-weight:500}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details .download-row .cover{position:relative;padding-right:30px}@media (max-width:767px){#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details .download-row .cover{min-width:100%;max-width:100%;padding-right:0}}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details .download-row .cover .coming-soon-banner{position:absolute;top:-2px;right:28px;width:60px;height:auto;z-index:2}@media (max-width:767px){#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details .download-row .cover .coming-soon-banner{right:-2px}}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details .download-row .cover .cover-image{display:block;width:100%;height:auto;margin:0 auto 0 auto}@media (max-width:767px){#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details .download-row .download-form{min-width:100%;max-width:100%;padding-right:0;padding-top:30px}}@media (max-width:767px){#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details .download-row .download-form .sub-header-copy{display:none}}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details .download-row .download-form .sub-header-copy p{font-size:16px;margin-bottom:15px}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details .download-row .download-form .newsletter-copy p{font-size:16px;margin-bottom:20px}@media (max-width:539px){#tns-ebooks-book #tns-ebooks-book-details .content-column.details .ebook-details .download-row .download-form .newsletter-copy p{font-size:15px}}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .body-copy-row{margin-bottom:50px}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .body-copy-row li{font-size:17px;font-weight:500;line-height:1.45}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .body-copy-row .body-copy{padding-right:30px}@media (max-width:599px){#tns-ebooks-book #tns-ebooks-book-details .content-column.details .body-copy-row .body-copy{min-width:100%;max-width:100%;font-size:17px;font-weight:500;line-height:1.45;padding-right:0}}@media (max-width:599px){#tns-ebooks-book #tns-ebooks-book-details .content-column.details .body-copy-row .sidebar{display:none}}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .body-copy-row .sidebar .sidebar-series-nav-item{display:block;color:#3c3c3c;font-size:17px;font-weight:500;margin-bottom:5px}#tns-ebooks-book #tns-ebooks-book-details .content-column.details .body-copy-row .sidebar .sidebar-series-nav-item:hover{color:#ff3287}#tns-ebooks-book #tns-ebooks-book-form{position:relative}#tns-ebooks-book #tns-ebooks-book-form .ebook-download-input{color:#fff;font-weight:600;border:2px solid #fff}#tns-ebooks-book #tns-ebooks-book-form .ebook-download-input.error{border:2px solid #ff3287}#tns-ebooks-book #tns-ebooks-book-form .ebook-download-input::placeholder{color:#fff;font-weight:600;opacity:.7;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";filter:alpha(opacity=70)}#tns-ebooks-book #tns-ebooks-book-form .ebook-download-button{color:#ff3287;background:#fff;margin-bottom:15px}#tns-ebooks-book #tns-ebooks-book-form .ebook-download-button:hover{color:#fff;background:#ff3287}#tns-ebooks-book #tns-ebooks-book-form .legal{font-size:11px;line-height:1.33;opacity:.7;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";filter:alpha(opacity=70)}#tns-ebooks-book #tns-ebooks-book-form .legal a{color:#fff;font-size:11px;font-weight:600}#tns-ebooks-book #tns-ebooks-book-form .legal a:hover{color:#fff;text-decoration:underline}#tns-ebooks-book #tns-ebooks-book-series-nav{position:relative;margin-bottom:30px}#tns-ebooks-book #tns-ebooks-book-series-nav .series-ebooks{width:100%;height:auto;overflow-y:hidden;overflow-x:auto;white-space:nowrap}#tns-ebooks-book #tns-ebooks-book-series-nav .ebook-series-title{font-size:14px;font-weight:600;text-transform:uppercase;margin-bottom:10px}#tns-ebooks-book #tns-ebooks-book-series-nav .series-nav-book{display:inline-block;margin-right:10px;cursor:pointer}#tns-ebooks-book #tns-ebooks-book-series-nav .series-nav-book .border{position:absolute;top:0;left:0;right:0;bottom:0;border:2px solid transparent;z-index:1}#tns-ebooks-book #tns-ebooks-book-series-nav .series-nav-book img{display:block;width:60px;height:auto;border:1px solid #a5a9b0}@media (max-width:767px){#tns-ebooks-book #tns-ebooks-book-series-nav .series-nav-book img{width:90px}}#tns-ebooks-book #tns-ebooks-book-series-nav .series-nav-book.active .border{border:2px solid #01aff4}#tns-ebooks-book #tns-ebooks-book-sponsors{position:relative;padding-top:50px;padding-bottom:50px;background:#f6f8fa}#tns-ebooks-book #tns-ebooks-book-sponsors .content-column{max-width:830px}#tns-ebooks-book #tns-ebooks-book-sponsors .ebooks-sponsors-heading{font-size:15px;font-weight:600;text-align:center;margin-bottom:15px}#tns-ebooks-book #tns-ebooks-book-sponsors .ebooks-sponsors-row{text-align:center;margin-bottom:30px}#tns-ebooks-book #tns-ebooks-book-sponsors .ebooks-sponsors-row:last-child{margin-bottom:0}#tns-ebooks-book #tns-ebooks-book-sponsors .ebooks-sponsors-row a{display:inline-block;margin-left:12px;margin-right:12px;margin-bottom:15px}@media (max-width:699px){#tns-ebooks-book #tns-ebooks-book-sponsors .ebooks-sponsors-row a{margin-bottom:20px}}#tns-ebooks-book #tns-ebooks-book-sponsors .ebooks-sponsors-row a img{display:block;width:auto;max-height:33px}#tns-ebooks-thank-you{padding-top:70px;padding-bottom:50px}@media (max-width:1279.98px){#tns-ebooks-thank-you{padding-top:50px}}@media (max-width:767.98px){#tns-ebooks-thank-you{padding-top:30px;padding-bottom:30px}}#tns-ebooks-thank-you #tns-ebooks-thank-you-thank-you{position:relative}#tns-ebooks-thank-you #tns-ebooks-thank-you-thank-you .thank-you-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}#tns-ebooks-thank-you #tns-ebooks-thank-you-thank-you .thank-you-row .thank-you-col{padding-right:30px;margin-bottom:30px}@media (max-width:767px){#tns-ebooks-thank-you #tns-ebooks-thank-you-thank-you .thank-you-row .thank-you-col{min-width:100%;max-width:100%;padding-right:0}}#tns-ebooks-thank-you #tns-ebooks-thank-you-thank-you .thank-you-row .thank-you-col .thank-you-heading{color:#01aff4;font-size:20px;line-height:1.2;padding-right:20px}#tns-ebooks-thank-you #tns-ebooks-thank-you-thank-you .thank-you-row .more-series-col{position:relative}@media (max-width:767px){#tns-ebooks-thank-you #tns-ebooks-thank-you-thank-you .thank-you-row .more-series-col{min-width:100%;max-width:100%}}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav{position:relative;margin-bottom:30px}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-ebooks{width:100%;height:auto;overflow-y:hidden;overflow-x:auto;white-space:nowrap}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .ebook-series-title{font-size:14px;font-weight:600;text-transform:uppercase;margin-bottom:10px}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book{display:inline-block;margin-right:20px;text-align:center;cursor:pointer}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book:hover .series-nav-download-link{color:#01aff4}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book:hover .series-nav-download-link svg g,#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book:hover .series-nav-download-link svg line{stroke:#01aff4}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book:hover .series-nav-download-link svg path{fill:#01aff4;stroke:#01aff4}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book .coming-soon-banner{position:absolute;top:-2px;right:-2px;width:60px;height:auto;z-index:2;border:none}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book .border{position:absolute;top:0;left:0;right:0;bottom:0;border:2px solid transparent;z-index:1}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book img{display:block;width:120px;height:auto;border:1px solid #a5a9b0;margin-bottom:7px}@media (max-width:767px){#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book img{width:120px}}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book .series-nav-download-link{color:#ff3287;font-size:17px;font-weight:500;padding-right:3px}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book .series-nav-download-link svg{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);height:15px;width:15px;vertical-align:-2px}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book .series-nav-download-link svg g,#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book .series-nav-download-link svg line{stroke:#ff3287}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book .series-nav-download-link svg path{fill:#ff3287;stroke:#ff3287}#tns-ebooks-thank-you #tns-ebooks-thank-you-series-nav .series-nav-book.active .border{border:2px solid #01aff4}#tns-ebooks-thank-you #tns-ebooks-thank-you-list{position:relative}@media (max-width:767px){#tns-ebooks-thank-you #tns-ebooks-thank-you-list .ebooks-list-series{display:none}}@media (max-width:767px){#tns-ebooks-thank-you #tns-ebooks-thank-you-list .ebooks-list-books{min-width:100%}}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-series{position:sticky;top:100px;padding-right:30px}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-series .ebooks-series-nav .ebooks-series-nav-option{display:block;color:#3c3c3c;font-size:20px;line-height:1.3;text-decoration:none;margin-bottom:3px}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-series .ebooks-series-nav .ebooks-series-nav-option:hover{color:#ff3287}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-series .ebooks-series-nav .ebooks-series-nav-option.active{color:#ff3287}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books{position:relative}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block{position:relative}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .title{border:0;text-transform:none;font-size:28px;margin:0 0 58px;letter-spacing:0;padding:0}@media (max-width:1023.98px){#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .title{font-size:18px;margin:0 0 22px}}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block{margin-bottom:60px;cursor:pointer}@media (max-width:1023.98px){#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block{margin-bottom:30px}}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block:hover .ebook-title{color:#01aff4 !important}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block:hover .ebooks-download-link{color:#01aff4}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block:hover .ebooks-download-link svg g,#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block:hover .ebooks-download-link svg line{stroke:#01aff4}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block:hover .ebooks-download-link svg path{fill:#01aff4;stroke:#01aff4}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .left-column{padding-right:30px}@media (max-width:539px){#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .left-column{min-width:120px;padding-right:20px}}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .left-column .coming-soon-banner{position:absolute;top:-2px;right:28px;width:60px;height:auto;z-index:2;border:none}@media (max-width:539px){#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .left-column .coming-soon-banner{right:18px}}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .left-column img{display:block;width:100%;height:auto;border:1px solid #a5a9b0}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .right-column{padding-right:30px}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .right-column .ebook-title{color:#3c3c3c;font-size:28px;font-weight:600;line-height:1.2;margin-bottom:5px}@media (max-width:1023.98px){#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .right-column .ebook-title{font-size:18px}}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .right-column p{font-size:17px;line-height:1.45;margin-bottom:20px}@media (max-width:539px){#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .right-column p{font-size:15px}}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .right-column li{font-size:17px;line-height:1.45;margin-bottom:10px}@media (max-width:539px){#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .right-column li{font-size:15px}}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .right-column a{font-size:17px}@media (max-width:539px){#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .right-column a{font-size:15px}}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .right-column .ebooks-download-link svg{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);height:15px;width:15px;fill:#ff3287;vertical-align:-2px}#tns-ebooks-thank-you #tns-ebooks-thank-you-list #tns-ebooks-thank-you-list-books .ebook-series-block .ebook-block .right-column .ebooks-download-link:hover svg{fill:#01aff4}#tns-ebooks-thank-you #tns-ebooks-thank-you-newsletter{position:relative}#tns-event .content-column{margin-top:50px;margin-bottom:50px}@media (max-width:767px){#tns-event .content-column{margin-top:30px;margin-bottom:30px}}#tns-event .event-story-card-link{display:block;padding-bottom:10px;margin-bottom:20px;border-bottom:1px solid #c2c2c2}#tns-event .event-story-card-link:last-child{border-bottom:none}#tns-event .event-story-card-link:hover .headline{color:#01aff4}#tns-event .event-story-card-link .col-thumb img{display:block;width:100%;height:auto}#tns-event .event-story-card-link .col-headline{color:#515151;padding-left:15px}#tns-event .event-story-card-link .col-headline .post-title{padding:0;margin-top:-3px;font-size:18px;font-weight:500;text-decoration:none}#tns-event .event-story-card-link .col-headline .excerpt{margin-top:7px;color:#3c3c3c;font-size:14px;line-height:1.2}#tns-event .event-story-card-link:hover .post-title{color:#01aff4}#tns-event .event-footer-spacer{margin-bottom:50px}@media (max-width:767px){#tns-event .event-footer-spacer{margin-bottom:30px}}#tns-event #tns-event-heading{position:relative;margin-bottom:50px}#tns-event #tns-event-heading .title h1{line-height:1.12;font-weight:700}@media (max-width:767px){#tns-event #tns-event-heading{margin-bottom:30px}}@media (max-width:1023px){#tns-event #tns-event-heading .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}#tns-event #tns-event-heading .row .title{min-width:100%;max-width:100%}#tns-event #tns-event-heading .row .definition{min-width:80%;max-width:80%}#tns-event #tns-event-heading .row .empty{min-width:20%;max-width:20%}}@media (max-width:1023px){#tns-event #tns-event-heading .row .definition{min-width:90%;max-width:90%}#tns-event #tns-event-heading .row .empty{min-width:10%;max-width:10%}}#tns-event #tns-event-frame{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex}@media (max-width:899px){#tns-event #tns-event-frame .nav{display:none}#tns-event #tns-event-frame .content{min-width:65%;max-width:65%}#tns-event #tns-event-frame .sidebar{min-width:35%;max-width:35%}}@media (max-width:767px){#tns-event #tns-event-frame .nav{display:none}#tns-event #tns-event-frame .content{min-width:100%;max-width:100%}#tns-event #tns-event-frame .sidebar{display:none}}#tns-event #tns-event-frame #tns-event-frame-nav{position:sticky;top:110px;padding-right:40px}#tns-event #tns-event-frame #tns-event-frame-nav .heading-text{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}#tns-event #tns-event-frame #tns-event-frame-nav .event-nav-option{display:block;color:#000}#tns-event #tns-event-frame #tns-event-frame-nav .event-nav-option:hover{color:#ff3287}#tns-event #tns-event-frame #tns-event-frame-nav .event-nav-option.active{color:#ff3287}#tns-event #tns-event-frame #tns-event-frame-content{position:relative}#tns-event #tns-event-frame #tns-event-frame-content .event-content-block{margin-bottom:40px}#tns-event #tns-event-frame #tns-event-frame-content .event-story-card{margin-top:10px;padding-bottom:10px;border-bottom:1px solid #c2c2c2}#tns-event #tns-event-frame #tns-event-frame-content .event-story-card:first-child{margin-top:0}#tns-event #tns-event-frame #tns-event-frame-content .event-story-card:last-child{border-bottom:none}#tns-event #tns-event-frame #tns-event-frame-content .event-story-card .col-thumb{min-width:100px;max-width:100px}@media (max-width:767px){#tns-event #tns-event-frame #tns-event-frame-content .event-story-card .col-thumb{min-width:70px;max-width:70px}}#tns-event #tns-event-frame #tns-event-frame-content .event-story-card .col-thumb .thumb{width:100px;height:50px;background:#f6f8fa}@media (max-width:767px){#tns-event #tns-event-frame #tns-event-frame-content .event-story-card .col-thumb .thumb{width:70px;height:35px}}#tns-event #tns-event-frame #tns-event-frame-content .event-story-card .col-headline .headline{padding-left:10px;font-size:16px;font-weight:500}@media (max-width:767px){#tns-event #tns-event-frame #tns-event-frame-content .event-story-card .col-headline .headline{font-size:15px}}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-frame-content-block-featured-programming{position:relative}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-frame-content-block-featured-programming .section-heading{text-transform:uppercase}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-frame-content-block-highlights{position:relative}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-frame-content-block-highlights .section-heading{text-transform:uppercase}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-frame-content-block-related-stories{position:relative}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-frame-content-block-related-stories .section-heading{text-transform:uppercase}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-frame-content-block-related-stories .post-excerpt{margin-bottom:7px}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-frame-content-block-spotlight{position:relative}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-frame-content-block-spotlight .section-heading{text-transform:uppercase}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-frame-content-block-spotlight .post-excerpt{margin-bottom:7px}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-information{position:relative}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-information .register-button{background:#ff3287;display:block;text-align:center;color:#fff;font-weight:500;line-height:35px;font-size:16px;margin:20px auto 20px;padding:1px 6px;letter-spacing:1px;border-radius:5px;text-decoration:none}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-information .register-button:hover{background:#01aff4}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-information img{width:100%;height:auto}#tns-event #tns-event-frame #tns-event-frame-content #tns-event-information .description{margin:20px 0 0 0}#tns-event #tns-event-frame #tns-event-frame-sidebar{position:sticky;top:110px;padding-left:40px}#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-sponsors{position:relative;margin-bottom:30px}#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-sponsors .sponsor-logo{display:block}#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-sponsors .sponsor-logo:hover .copy{color:#ff3287}#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-sponsors .sponsor-logo:hover .copy svg path{fill:#ff3287}#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-sponsors .sponsor-logo .logo-frame{width:100%;max-height:120px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding:10px;background:#eaeff3;margin-bottom:10px}#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-sponsors .sponsor-logo .logo-frame .logo-img{aspect-ratio:1.86/1;object-fit:contain;max-width:80%;max-height:70%}#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-sponsors .sponsor-logo .copy{color:#515151;font-size:14px;line-height:1.33}@media (max-width:767px){#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-sponsors .sponsor-logo .copy{font-size:17px}}#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-sponsors .sponsor-logo .copy svg{height:8px;vertical-align:baseline}@media (max-width:767px){#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-sponsors .sponsor-logo .copy svg{height:10px}}#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-sponsors .sponsor-logo .copy svg path{fill:#515151}#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-subscribe{position:relative}#tns-event #tns-event-frame #tns-event-frame-sidebar #tns-event-frame-sidebar-subscribe .description p{font-weight:normal;font-size:14px}#tns-events{position:relative}#tns-events #tns-events-cover{position:relative;padding-top:50px;margin-bottom:50px}@media (max-width:767px){#tns-events #tns-events-cover{padding-top:30px}}#tns-events #tns-events-cover .featured-column{padding-right:20px}@media (max-width:767px){#tns-events #tns-events-cover .featured-column{min-width:100%;padding-right:0}}@media (max-width:767px){#tns-events #tns-events-cover .sidebar-column{display:none}}#tns-events #tns-events-cover #tns-events-featured-event{position:relative}#tns-events #tns-events-cover #tns-events-featured-event .section-heading{color:#fff;border-top:1px solid #fff;opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}#tns-events #tns-events-cover #tns-events-featured-event .wrap-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}@media (max-width:767.98px){#tns-events #tns-events-cover #tns-events-featured-event .wrap-row >.col-50{max-width:100%;min-width:100%;padding:0}}#tns-events #tns-events-cover #tns-events-featured-event .wrap-row >.col-50:first-child{padding-right:15px}@media (max-width:767.98px){#tns-events #tns-events-cover #tns-events-featured-event .wrap-row >.col-50:first-child{padding:0}}#tns-events #tns-events-cover #tns-events-featured-event .wrap-row >.col-50:last-child{padding-left:15px}@media (max-width:767.98px){#tns-events #tns-events-cover #tns-events-featured-event .wrap-row >.col-50:last-child{padding:0}}#tns-events #tns-events-cover #tns-events-featured-event .wrap-row .desktop-hide{margin-bottom:15px}@media (min-width:768px){#tns-events #tns-events-cover #tns-events-featured-event .wrap-row .desktop-hide{display:none}}@media (max-width:767.98px){#tns-events #tns-events-cover #tns-events-featured-event .wrap-row .mobile-hide{display:none}}#tns-events #tns-events-cover #tns-events-featured-event .heading{display:block;color:#fff;font-size:14px;line-height:1.33;font-weight:700;text-transform:uppercase;margin-bottom:20px}#tns-events #tns-events-cover #tns-events-featured-event .image{display:block;width:100%;height:auto}@media (max-width:767px){#tns-events #tns-events-cover #tns-events-featured-event .image{margin-bottom:30px}}#tns-events #tns-events-cover #tns-events-featured-event .title{width:100%;color:#fff;font-size:36px;font-weight:600;line-height:1.12;margin-bottom:12px;text-transform:capitalize}@media (max-width:1023px){#tns-events #tns-events-cover #tns-events-featured-event .title{font-size:27px}}@media (max-width:767px){#tns-events #tns-events-cover #tns-events-featured-event .title{font-size:24px}}#tns-events #tns-events-cover #tns-events-featured-event .event-meta{width:100%;margin-bottom:30px}#tns-events #tns-events-cover #tns-events-featured-event .event-meta .date,#tns-events #tns-events-cover #tns-events-featured-event .event-meta .location{color:#fff;font-size:18px;line-height:1.35;text-transform:uppercase;margin-right:10px}@media (max-width:991.98px){#tns-events #tns-events-cover #tns-events-featured-event .event-meta .date,#tns-events #tns-events-cover #tns-events-featured-event .event-meta .location{font-size:16px}}@media (max-width:991.98px){#tns-events #tns-events-cover #tns-events-featured-event .event-meta{font-size:28px}}#tns-events #tns-events-cover #tns-events-featured-event .description{width:100%;color:#fff}#tns-events #tns-events-cover #tns-events-featured-event .description p,#tns-events #tns-events-cover #tns-events-featured-event .description a{color:#fff;font-size:20px;line-height:1.33}#tns-events #tns-events-cover #tns-events-featured-event .description a:hover{color:#ff3287}#tns-events #tns-events-cover #tns-events-featured-event .register-button{position:relative;display:block;width:100%;height:40px;color:#ff3287;font-size:18px;font-weight:500;line-height:40px;text-align:center;border:none;border-radius:5px;background-color:#fff;cursor:pointer}#tns-events #tns-events-cover #tns-events-featured-event .register-button:hover{color:#fff;background-color:#ff3287}#tns-events #tns-events-cover #tns-events-cover-sidebar{position:relative}#tns-events #tns-events-cover #tns-events-cover-sidebar .section-heading{color:#fff;border-top:1px solid #fff;opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}#tns-events #tns-events-cover #tns-events-upcoming-events{position:relative;padding-bottom:50px}#tns-events #tns-events-cover #tns-events-upcoming-events.hide{display:none}#tns-events #tns-events-cover #tns-events-upcoming-events .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card{position:relative;display:block;width:100%;height:auto;padding-top:15px;padding-bottom:15px;cursor:pointer}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card:not(:nth-last-child(-n+2)){border-bottom:1px solid #a5a9b0}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card .col-33{padding-right:15px}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card .col-66{padding-left:15px}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-row{position:relative;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;margin-left:auto;margin-right:auto;text-decoration:none}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-row:hover{text-decoration:none}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-row:hover .events-card-content .event-title{color:#01aff4}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-row:hover .events-card-content .event-register-cta{color:#01aff4}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-row:hover .events-card-content .event-register-cta svg path{fill:#01aff4}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-poster{position:relative}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-poster img{width:100%;height:auto}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;width:100%;vertical-align:middle}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-title{width:100%;-webkit-align-self:flex-end;align-self:flex-end;-ms-flex-item-align:end;color:#3c3c3c;font-size:27px;line-height:1.2;letter-spacing:0;text-decoration:none;margin-bottom:5px}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-title:hover{color:#01aff4}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-meta{width:100%;line-height:80%;margin-bottom:20px}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-meta .date,#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-meta .location{display:inline-block;width:100%;color:#3c3c3c;font-size:14px;font-weight:bold;line-height:1.33;text-transform:uppercase}@media (max-width:1023px){#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-meta .date,#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-meta .location{font-size:12px}}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-meta .location{font-weight:normal}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-description{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-description p,#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-description a{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-description a{color:#ff3287;text-decoration:none}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-description a:hover{color:#01aff4;text-decoration:none}@media (max-width:991.98px){#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-description{font-size:13px}}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-register-cta{font-size:16px;font-weight:500}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-register-cta svg{height:10px;vertical-align:baseline}#tns-events #tns-events-cover #tns-events-upcoming-events .events-card-content .event-register-cta svg path{fill:#ff3287}#tns-events #tns-events-cover #tns-events-upcoming-events .no-data{padding:0 15px}#tns-events .content-column{min-height:unset}#tns-events .content-column >.row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-events .content-column >.row >.col-75{padding-right:15px}@media (max-width:991.98px){#tns-events .content-column >.row >.col-75{max-width:100%;min-width:100%;padding-right:0}}#tns-events .content-column >.row >.col-25{padding-left:15px}@media (max-width:991.98px){#tns-events .content-column >.row >.col-25{max-width:100%;min-width:100%;padding-left:0}}#tns-events .events-list{margin-bottom:60px}#tns-events .events-list #tns-events-upcoming-events{position:relative;padding-bottom:50px}#tns-events .events-list #tns-events-upcoming-events.hide{display:none}#tns-events .events-list #tns-events-upcoming-events .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-events .events-list #tns-events-upcoming-events .events-card{position:relative;display:block;width:100%;height:auto;padding-top:15px;padding-bottom:15px;cursor:pointer}#tns-events .events-list #tns-events-upcoming-events .events-card:not(:nth-last-child(-n+2)){border-bottom:1px solid #a5a9b0}#tns-events .events-list #tns-events-upcoming-events .events-card .col-33{padding-right:15px}#tns-events .events-list #tns-events-upcoming-events .events-card .col-66{padding-left:15px}#tns-events .events-list #tns-events-upcoming-events .events-card-row{position:relative;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;margin-left:auto;margin-right:auto;text-decoration:none}#tns-events .events-list #tns-events-upcoming-events .events-card-row:hover{text-decoration:none}#tns-events .events-list #tns-events-upcoming-events .events-card-row:hover .events-card-content .event-title{color:#01aff4}#tns-events .events-list #tns-events-upcoming-events .events-card-row:hover .events-card-content .event-register-cta{color:#01aff4}#tns-events .events-list #tns-events-upcoming-events .events-card-row:hover .events-card-content .event-register-cta svg path{fill:#01aff4}#tns-events .events-list #tns-events-upcoming-events .events-card-poster{position:relative}#tns-events .events-list #tns-events-upcoming-events .events-card-poster img{width:100%;height:auto}#tns-events .events-list #tns-events-upcoming-events .events-card-content{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;width:100%;vertical-align:middle}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-title{width:100%;-webkit-align-self:flex-end;align-self:flex-end;-ms-flex-item-align:end;color:#3c3c3c;font-size:27px;line-height:1.2;letter-spacing:0;text-decoration:none;margin-bottom:5px}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-title:hover{color:#01aff4}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-meta{width:100%;line-height:80%;margin-bottom:20px}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-meta .date,#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-meta .location{display:inline-block;width:100%;color:#3c3c3c;font-size:14px;font-weight:bold;line-height:1.33;text-transform:uppercase}@media (max-width:1023px){#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-meta .date,#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-meta .location{font-size:12px}}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-meta .location{font-weight:normal}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-description{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-description p,#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-description a{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-description a{color:#ff3287;text-decoration:none}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-description a:hover{color:#01aff4;text-decoration:none}@media (max-width:991.98px){#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-description{font-size:13px}}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-register-cta{font-size:16px;font-weight:500}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-register-cta svg{height:10px;vertical-align:baseline}#tns-events .events-list #tns-events-upcoming-events .events-card-content .event-register-cta svg path{fill:#ff3287}#tns-events .events-list #tns-events-upcoming-events .no-data{padding:0 15px}#tns-events .events-list #tns-events-past-events{position:relative;padding-bottom:50px}#tns-events .events-list #tns-events-past-events.hide{display:none}#tns-events .events-list #tns-events-past-events .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-events .events-list #tns-events-past-events .events-card{position:relative;display:block;width:100%;height:auto;padding-top:15px;padding-bottom:15px}#tns-events .events-list #tns-events-past-events .events-card:not(:nth-last-child(-n+2)){border-bottom:1px solid #a5a9b0}#tns-events .events-list #tns-events-past-events .events-card .col-33{padding-right:15px}@media (max-width:499px){#tns-events .events-list #tns-events-past-events .events-card .col-33{min-width:100%;max-width:100%;padding-right:0}}#tns-events .events-list #tns-events-past-events .events-card .col-66{padding-left:15px}@media (max-width:499px){#tns-events .events-list #tns-events-past-events .events-card .col-66{min-width:100%;max-width:100%;padding-left:0}}#tns-events .events-list #tns-events-past-events .events-card-row{position:relative;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;margin-left:auto;margin-right:auto;text-decoration:none}#tns-events .events-list #tns-events-past-events .events-card-poster{position:relative}#tns-events .events-list #tns-events-past-events .events-card-poster img{width:100%;height:auto}@media (max-width:499px){#tns-events .events-list #tns-events-past-events .events-card-poster img{margin-bottom:20px}}#tns-events .events-list #tns-events-past-events .events-card-content{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;width:100%;vertical-align:middle}#tns-events .events-list #tns-events-past-events .events-card-content .event-title{width:100%;-webkit-align-self:flex-end;align-self:flex-end;-ms-flex-item-align:end;color:#3c3c3c;font-size:27px;line-height:1.2;letter-spacing:0;text-decoration:none;margin-bottom:5px}#tns-events .events-list #tns-events-past-events .events-card-content .event-meta{width:100%;line-height:80%;margin-bottom:20px}#tns-events .events-list #tns-events-past-events .events-card-content .event-meta .date,#tns-events .events-list #tns-events-past-events .events-card-content .event-meta .location{display:inline-block;width:100%;color:#3c3c3c;font-size:14px;font-weight:bold;line-height:1.33;text-transform:uppercase}@media (max-width:1023px){#tns-events .events-list #tns-events-past-events .events-card-content .event-meta .date,#tns-events .events-list #tns-events-past-events .events-card-content .event-meta .location{font-size:12px}}#tns-events .events-list #tns-events-past-events .events-card-content .event-meta .location{font-weight:normal}#tns-events .events-list #tns-events-past-events .events-card-content .event-description{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-events .events-list #tns-events-past-events .events-card-content .event-description p,#tns-events .events-list #tns-events-past-events .events-card-content .event-description a{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-events .events-list #tns-events-past-events .events-card-content .event-description a{color:#ff3287;text-decoration:none}@media (max-width:991.98px){#tns-events .events-list #tns-events-past-events .events-card-content .event-description{font-size:13px}}#tns-events .events-list #tns-events-past-events .events-card-content .event-register-cta{font-size:16px;font-weight:500}@media (max-width:499px){#tns-events .events-list #tns-events-past-events .events-card-content .event-register-cta{margin-bottom:30px}}#tns-events .events-list #tns-events-past-events .events-card-content .event-register-cta svg{height:10px;vertical-align:baseline}#tns-events .events-list #tns-events-past-events .events-card-content .event-register-cta svg path{fill:#ff3287}#tns-events .events-list #tns-events-past-events .no-data{padding:0 15px}#tns-events .events-list #tns-events-sidebar{position:sticky;top:0}#tns-events .events-list #tns-events-sidebar #tns-newsletter-shortcode,#tns-events .events-list #tns-events-sidebar input[type="email"],#tns-events .events-list #tns-events-sidebar input[type="text"]{border-color:#01aff4}#tns-events .events-list #tns-events-sidebar input[type="submit"],#tns-events .events-list #tns-events-sidebar button,#tns-events .events-list #tns-events-sidebar .tns-button{background:#01aff4}#tns-events .events-list #tns-events-sidebar input[type="submit"]:hover,#tns-events .events-list #tns-events-sidebar button:hover,#tns-events .events-list #tns-events-sidebar .tns-button:hover{background:#ff3287}#tns-webinar .content-column{margin-top:50px;margin-bottom:50px}@media (max-width:767px){#tns-webinar .content-column{margin-top:30px;margin-bottom:30px}}#tns-webinar .webinar-story-card-link{display:block;padding-bottom:10px;margin-bottom:20px;border-bottom:1px solid #c2c2c2}#tns-webinar .webinar-story-card-link:last-child{border-bottom:none}#tns-webinar .webinar-story-card-link:hover .headline{color:#01aff4}#tns-webinar .webinar-story-card-link .col-thumb img{display:block;width:100%;height:auto}#tns-webinar .webinar-story-card-link .col-headline{color:#515151;padding-left:15px}#tns-webinar .webinar-story-card-link .col-headline .post-title{padding:0;margin-top:-3px;font-size:18px;font-weight:500;text-decoration:none}#tns-webinar .webinar-story-card-link .col-headline .excerpt{margin-top:7px;color:#3c3c3c;font-size:14px;line-height:1.2}#tns-webinar .webinar-story-card-link:hover .post-title{color:#01aff4}#tns-webinar .webinar-footer-spacer{margin-bottom:50px}@media (max-width:767px){#tns-webinar .webinar-footer-spacer{margin-bottom:30px}}#tns-webinar #tns-webinar-heading{position:relative;margin-bottom:50px}#tns-webinar #tns-webinar-heading .title h1{line-height:1.12;font-weight:700}@media (max-width:767px){#tns-webinar #tns-webinar-heading{margin-bottom:30px}}@media (max-width:1023px){#tns-webinar #tns-webinar-heading .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}#tns-webinar #tns-webinar-heading .row .title{min-width:100%;max-width:100%}#tns-webinar #tns-webinar-heading .row .definition{min-width:80%;max-width:80%}#tns-webinar #tns-webinar-heading .row .empty{min-width:20%;max-width:20%}}@media (max-width:1023px){#tns-webinar #tns-webinar-heading .row .definition{min-width:90%;max-width:90%}#tns-webinar #tns-webinar-heading .row .empty{min-width:10%;max-width:10%}}#tns-webinar #tns-webinar-frame{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex}@media (max-width:899px){#tns-webinar #tns-webinar-frame .webinar-nav{display:none}#tns-webinar #tns-webinar-frame .webinar-content{min-width:65%;max-width:65%}#tns-webinar #tns-webinar-frame .webinar-sidebar{min-width:35%;max-width:35%}}@media (max-width:767px){#tns-webinar #tns-webinar-frame .webinar-nav{display:none}#tns-webinar #tns-webinar-frame .webinar-content{min-width:100%;max-width:100%}#tns-webinar #tns-webinar-frame .webinar-sidebar{display:none}}#tns-webinar #tns-webinar-frame #tns-webinar-frame-nav{position:sticky;top:110px;padding-right:40px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-nav .heading-text{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}#tns-webinar #tns-webinar-frame #tns-webinar-frame-nav .webinar-nav-option{display:block;color:#000}#tns-webinar #tns-webinar-frame #tns-webinar-frame-nav .webinar-nav-option:hover{color:#ff3287}#tns-webinar #tns-webinar-frame #tns-webinar-frame-nav .webinar-nav-option.active{color:#ff3287}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content{position:relative}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content .webinar-content-block{margin-bottom:40px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content .webinar-story-card{margin-top:10px;padding-bottom:10px;border-bottom:1px solid #c2c2c2}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content .webinar-story-card:first-child{margin-top:0}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content .webinar-story-card:last-child{border-bottom:none}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content .webinar-story-card .col-thumb{min-width:100px;max-width:100px}@media (max-width:767px){#tns-webinar #tns-webinar-frame #tns-webinar-frame-content .webinar-story-card .col-thumb{min-width:70px;max-width:70px}}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content .webinar-story-card .col-thumb .thumb{width:100px;height:50px;background:#f6f8fa}@media (max-width:767px){#tns-webinar #tns-webinar-frame #tns-webinar-frame-content .webinar-story-card .col-thumb .thumb{width:70px;height:35px}}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content .webinar-story-card .col-headline .headline{padding-left:10px;font-size:16px;font-weight:500}@media (max-width:767px){#tns-webinar #tns-webinar-frame #tns-webinar-frame-content .webinar-story-card .col-headline .headline{font-size:15px}}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-information{position:relative}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-information .register-button{display:block;background:#ff3287;display:block;text-align:center;color:#fff;font-weight:500;line-height:35px;font-size:16px;margin:20px auto 20px;padding:1px 6px;letter-spacing:1px;border-radius:5px;text-decoration:none}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-information .register-button:hover{background:#01aff4}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-information img{width:100%;height:auto}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-information .description{margin:20px 0 0 0}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-information .form-embed-container{display:block;margin-bottom:30px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-container{padding:20px;background:#dae9f2}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-inner{padding:20px;background:#fff;border-radius:5px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-container[hidden],#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-webinar-form[hidden],#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-success[hidden],#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-video[hidden]{display:none !important}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-profile-fields[hidden],#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-job-more-fields[hidden],#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-state-field[hidden]{display:none !important}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-webinar-name{font-weight:700;font-size:16px;margin-bottom:5px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-webinar-time{font-size:14px;margin-bottom:20px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-webinar-time svg{vertical-align:middle}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-questions p{margin:0 0 8px 0;font-size:14px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-questions p .airmeet-required{color:#f00}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-questions select{display:block;width:100%;padding:10px 28px 10px 10px;border:1px solid #ff3287;margin-bottom:20px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAGCAYAAAD68A/GAAAAJElEQVR4nGNgYGD4z0AY/Mdg4FOETzFOA9Al8DrrPzGKcJoEAJCsCvaQZB9yAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:right 12px center}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-register[disabled]{opacity:.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";filter:alpha(opacity=50);cursor:not-allowed;pointer-events:none}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-disclaimer{margin-top:20px;font-size:12px;line-height:1.5em;color:#a5a9b0}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-success{background:#eafaf2;color:#22b573;text-align:center;padding:20px 15px 15px 15px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-success p{margin:10px 0 0 0}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-video{width:100%;aspect-ratio:16/9}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-airmeet .airmeet-video iframe{width:100%;height:100%;display:block}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-highlights{position:relative}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-highlights .section-heading{text-transform:uppercase}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-featured-programming{position:relative}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-featured-programming .section-heading{text-transform:uppercase}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-spotlight{position:relative}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-spotlight .section-heading{text-transform:uppercase}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-spotlight .post-excerpt{margin-bottom:7px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-related-stories{position:relative}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-related-stories .section-heading{text-transform:uppercase}#tns-webinar #tns-webinar-frame #tns-webinar-frame-content #tns-webinar-frame-content-block-related-stories .post-excerpt{margin-bottom:7px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar{position:sticky;top:110px;padding-left:40px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-sponsors{position:relative;margin-bottom:30px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-sponsors .sponsor-logo{display:block}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-sponsors .sponsor-logo:hover .copy{color:#ff3287}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-sponsors .sponsor-logo:hover .copy svg path{fill:#ff3287}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-sponsors .sponsor-logo .logo-frame{width:100%;max-height:120px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding:10px;background:#eaeff3;margin-bottom:10px}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-sponsors .sponsor-logo .logo-frame .logo-img{aspect-ratio:1.86/1;object-fit:contain;max-width:80%;max-height:70%}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-sponsors .sponsor-logo .copy{color:#515151;font-size:14px;line-height:1.33}@media (max-width:767px){#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-sponsors .sponsor-logo .copy{font-size:17px}}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-sponsors .sponsor-logo .copy svg{height:8px;vertical-align:baseline}@media (max-width:767px){#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-sponsors .sponsor-logo .copy svg{height:10px}}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-sponsors .sponsor-logo .copy svg path{fill:#515151}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-subscribe{position:relative}#tns-webinar #tns-webinar-frame #tns-webinar-frame-sidebar #tns-webinar-frame-sidebar-subscribe .description p{font-weight:normal;font-size:14px}#tns-webinars{position:relative}#tns-webinars #tns-webinars-cover{position:relative;padding-top:50px;margin-bottom:50px}@media (max-width:767px){#tns-webinars #tns-webinars-cover{padding-top:30px}}#tns-webinars #tns-webinars-cover .featured-column{padding-right:20px}@media (max-width:767px){#tns-webinars #tns-webinars-cover .featured-column{min-width:100%;padding-right:0}}@media (max-width:767px){#tns-webinars #tns-webinars-cover .sidebar-column{display:none}}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar{position:relative}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .section-heading{color:#fff;border-top:1px solid #fff;opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .wrap-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}@media (max-width:767.98px){#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .wrap-row >.col-50{max-width:100%;min-width:100%;padding:0}}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .wrap-row >.col-50:first-child{padding-right:15px}@media (max-width:767.98px){#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .wrap-row >.col-50:first-child{padding:0}}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .wrap-row >.col-50:last-child{padding-left:15px}@media (max-width:767.98px){#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .wrap-row >.col-50:last-child{padding:0}}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .wrap-row .desktop-hide{margin-bottom:15px}@media (min-width:768px){#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .wrap-row .desktop-hide{display:none}}@media (max-width:767.98px){#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .wrap-row .mobile-hide{display:none}}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .heading{display:block;color:#fff;font-size:14px;line-height:1.33;font-weight:700;text-transform:uppercase;margin-bottom:20px}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .image{display:block;width:100%;height:auto}@media (max-width:767px){#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .image{margin-bottom:30px}}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .title{width:100%;color:#fff;font-size:36px;font-weight:600;line-height:1.12;margin-bottom:12px;text-transform:capitalize}@media (max-width:1023px){#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .title{font-size:27px}}@media (max-width:767px){#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .title{font-size:24px}}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .webinar-meta{width:100%;margin-bottom:30px}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .webinar-meta .date,#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .webinar-meta .location{color:#fff;font-size:18px;line-height:1.35;text-transform:uppercase;margin-right:10px}@media (max-width:991.98px){#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .webinar-meta .date,#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .webinar-meta .location{font-size:16px}}@media (max-width:991.98px){#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .webinar-meta{font-size:28px}}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .description{width:100%;color:#fff}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .description p,#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .description a{color:#fff;font-size:20px;line-height:1.33}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .description a:hover{color:#ff3287}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .more-info-button{position:relative;display:block;width:100%;height:40px;color:#ff3287;font-size:18px;font-weight:500;line-height:40px;text-align:center;border:none;border-radius:5px;background-color:#fff;cursor:pointer}#tns-webinars #tns-webinars-cover #tns-webinars-featured-webinar .more-info-button:hover{color:#fff;background-color:#ff3287}#tns-webinars #tns-webinars-cover #tns-webinars-cover-sidebar{position:relative}#tns-webinars #tns-webinars-cover #tns-webinars-cover-sidebar .section-heading{color:#fff;border-top:1px solid #fff;opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars{position:relative;padding-bottom:50px}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars.hide{display:none}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card{position:relative;display:block;width:100%;height:auto;padding-top:15px;padding-bottom:15px;cursor:pointer}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card:not(:nth-last-child(-n+2)){border-bottom:1px solid #a5a9b0}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card .col-33{padding-right:15px}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card .col-66{padding-left:15px}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-row{position:relative;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;margin-left:auto;margin-right:auto;text-decoration:none}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-row:hover{text-decoration:none}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-row:hover .webinars-card-content .webinar-title{color:#01aff4}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-row:hover .webinars-card-content .webinar-register-cta{color:#01aff4}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-row:hover .webinars-card-content .webinar-register-cta svg path{fill:#01aff4}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-poster{position:relative}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-poster img{width:100%;height:auto}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;width:100%;vertical-align:middle}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-title{width:100%;-webkit-align-self:flex-end;align-self:flex-end;-ms-flex-item-align:end;color:#3c3c3c;font-size:27px;line-height:1.2;letter-spacing:0;text-decoration:none;margin-bottom:5px}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-title:hover{color:#01aff4}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta{width:100%;line-height:80%;margin-bottom:20px}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta .date,#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta .location{display:inline-block;width:100%;color:#3c3c3c;font-size:14px;font-weight:bold;line-height:1.33;text-transform:uppercase}@media (max-width:1023px){#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta .date,#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta .location{font-size:12px}}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta .location{font-weight:normal}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description p,#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description a{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description a{color:#ff3287;text-decoration:none}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description a:hover{color:#01aff4;text-decoration:none}@media (max-width:991.98px){#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description{font-size:13px}}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-register-cta{font-size:16px;font-weight:500}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-register-cta svg{height:10px;vertical-align:baseline}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .webinars-card-content .webinar-register-cta svg path{fill:#ff3287}#tns-webinars #tns-webinars-cover #tns-webinars-upcoming-webinars .no-data{padding:0 15px}#tns-webinars .content-column{min-height:unset}#tns-webinars .content-column >.row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-webinars .content-column >.row >.col-75{padding-right:15px}@media (max-width:991.98px){#tns-webinars .content-column >.row >.col-75{max-width:100%;min-width:100%;padding-right:0}}#tns-webinars .content-column >.row >.col-25{padding-left:15px}@media (max-width:991.98px){#tns-webinars .content-column >.row >.col-25{max-width:100%;min-width:100%;padding-left:0}}#tns-webinars .webinars-list{margin-bottom:60px}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars{position:relative;padding-bottom:50px}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars.hide{display:none}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card{position:relative;display:block;width:100%;height:auto;padding-top:15px;padding-bottom:15px;cursor:pointer}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card:not(:nth-last-child(-n+2)){border-bottom:1px solid #a5a9b0}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card .col-33{padding-right:15px}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card .col-66{padding-left:15px}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-row{position:relative;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;margin-left:auto;margin-right:auto;text-decoration:none}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-row:hover{text-decoration:none}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-row:hover .webinars-card-content .webinar-title{color:#01aff4}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-row:hover .webinars-card-content .webinar-register-cta{color:#01aff4}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-row:hover .webinars-card-content .webinar-register-cta svg path{fill:#01aff4}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-poster{position:relative}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-poster img{width:100%;height:auto}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;width:100%;vertical-align:middle}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-title{width:100%;-webkit-align-self:flex-end;align-self:flex-end;-ms-flex-item-align:end;color:#3c3c3c;font-size:27px;line-height:1.2;letter-spacing:0;text-decoration:none;margin-bottom:5px}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-title:hover{color:#01aff4}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta{width:100%;line-height:80%;margin-bottom:20px}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta .date,#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta .location{display:inline-block;width:100%;color:#3c3c3c;font-size:14px;font-weight:bold;line-height:1.33;text-transform:uppercase}@media (max-width:1023px){#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta .date,#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta .location{font-size:12px}}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-meta .location{font-weight:normal}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description p,#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description a{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description a{color:#ff3287;text-decoration:none}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description a:hover{color:#01aff4;text-decoration:none}@media (max-width:991.98px){#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-description{font-size:13px}}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-register-cta{font-size:16px;font-weight:500}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-register-cta svg{height:10px;vertical-align:baseline}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .webinars-card-content .webinar-register-cta svg path{fill:#ff3287}#tns-webinars .webinars-list #tns-webinars-upcoming-webinars .no-data{padding:0 15px}#tns-webinars .webinars-list #tns-webinars-past-webinars{position:relative;padding-bottom:50px}#tns-webinars .webinars-list #tns-webinars-past-webinars.hide{display:none}#tns-webinars .webinars-list #tns-webinars-past-webinars .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card{position:relative;display:block;width:100%;height:auto;padding-top:15px;padding-bottom:15px}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card:not(:nth-last-child(-n+2)){border-bottom:1px solid #a5a9b0}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card .col-33{padding-right:15px}@media (max-width:499px){#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card .col-33{min-width:100%;max-width:100%;padding-right:0}}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card .col-66{padding-left:15px}@media (max-width:499px){#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card .col-66{min-width:100%;max-width:100%;padding-left:0}}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-row{position:relative;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;margin-left:auto;margin-right:auto;text-decoration:none}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-poster{position:relative}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-poster img{width:100%;height:auto}@media (max-width:499px){#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-poster img{margin-bottom:20px}}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;width:100%;vertical-align:middle}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-title{width:100%;-webkit-align-self:flex-end;align-self:flex-end;-ms-flex-item-align:end;color:#3c3c3c;font-size:27px;line-height:1.2;letter-spacing:0;text-decoration:none;margin-bottom:5px}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-meta{width:100%;line-height:80%;margin-bottom:20px}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-meta .date,#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-meta .location{display:inline-block;width:100%;color:#3c3c3c;font-size:14px;font-weight:bold;line-height:1.33;text-transform:uppercase}@media (max-width:1023px){#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-meta .date,#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-meta .location{font-size:12px}}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-meta .location{font-weight:normal}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-description{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-description p,#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-description a{font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.35;letter-spacing:0}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-description a{color:#ff3287;text-decoration:none}@media (max-width:991.98px){#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-description{font-size:13px}}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-register-cta{font-size:16px;font-weight:500}@media (max-width:499px){#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-register-cta{margin-bottom:30px}}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-register-cta svg{height:10px;vertical-align:baseline}#tns-webinars .webinars-list #tns-webinars-past-webinars .webinars-card-content .webinar-register-cta svg path{fill:#ff3287}#tns-webinars .webinars-list #tns-webinars-past-webinars .no-data{padding:0 15px}#tns-webinars .webinars-list #tns-webinars-sidebar{position:sticky;top:0}#tns-webinars .webinars-list #tns-webinars-sidebar .tns-newsletter-shortcode .title{font-size:30px;color:#01aff4}#tns-webinars .webinars-list #tns-webinars-sidebar .tns-newsletter-shortcode,#tns-webinars .webinars-list #tns-webinars-sidebar input[type="email"],#tns-webinars .webinars-list #tns-webinars-sidebar input[type="text"]{border-color:#01aff4}#tns-webinars .webinars-list #tns-webinars-sidebar input[type="submit"],#tns-webinars .webinars-list #tns-webinars-sidebar button,#tns-webinars .webinars-list #tns-webinars-sidebar .tns-button{background:#01aff4}#tns-webinars .webinars-list #tns-webinars-sidebar input[type="submit"]:hover,#tns-webinars .webinars-list #tns-webinars-sidebar button:hover,#tns-webinars .webinars-list #tns-webinars-sidebar .tns-button:hover{background:#ff3287}#tns-webinars .webinars-list #tns-webinars-sidebar .webinars-sales-cta{padding-top:30px}#tns-webinars .webinars-list #tns-webinars-sidebar .webinars-sales-cta a{color:#515151;font-size:15px}#tns-webinars .webinars-list #tns-webinars-sidebar .webinars-sales-cta a:hover{color:#ff3287}#tns-frontpage{position:relative}#tns-frontpage #tns-frontpage-promo{display:relative;margin-bottom:30px}#tns-frontpage #tns-frontpage-page-one{position:relative}#tns-frontpage #tns-frontpage-page-one .content-column{padding-top:30px}@media (max-width:1279.98px){#tns-frontpage #tns-frontpage-page-one .content-column{padding-left:30px;padding-right:30px}}@media (max-width:767.98px){#tns-frontpage #tns-frontpage-page-one .content-column{padding-top:30px}}#tns-frontpage #tns-frontpage-page-one .content-column > .cover-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;margin-bottom:20px}#tns-frontpage #tns-frontpage-page-one .page-one-left-col{padding-right:20px}@media (max-width:999px){#tns-frontpage #tns-frontpage-page-one .page-one-left-col{min-width:100%;max-width:100%;padding-right:0}}#tns-frontpage #tns-frontpage-page-one .page-one-right-col{padding-left:20px;position:relative}@media (max-width:999px){#tns-frontpage #tns-frontpage-page-one .page-one-right-col{min-width:100%;max-width:100%;padding-left:0;padding-top:30px}}#tns-frontpage #tns-frontpage-page-one .page-one-right-col:before{position:absolute;content:'';left:0;top:0;height:100%;width:1px;background:transparent}@media (max-width:999px){#tns-frontpage #tns-frontpage-page-one .page-one-right-col:before{display:none}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured{position:relative}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;margin-bottom:20px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead > .content{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}@media (max-width:575.98px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead > .content .blocks{min-width:100%;max-width:100%;margin-bottom:20px}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content{position:relative}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;text-decoration:none;cursor:pointer}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block:hover .lead-details-block .post-title,#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block:focus .lead-details-block .post-title{color:#01aff4}@media (max-width:959.98px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-media-block{display:none}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-media-block .lead-media{width:100%}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-media-block .lead-media .thumbnail-image{width:100%;height:auto}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-details-block{padding-left:20px}@media (max-width:959.98px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-details-block{min-width:100%;max-width:100%;padding-left:0}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-details-block .post-categories{padding-top:0;margin-bottom:7px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-details-block .post-title{display:inline-block;width:100%;color:#3c3c3c;font-size:30px;line-height:110%;margin-top:-5px;margin-bottom:10px;text-decoration:none;-webkit-transition:color 99ms;-moz-transition:color 99ms;-o-transition:color 99ms;-ms-transition:color 99ms;transition:color 99ms}@media (max-width:1199px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-details-block .post-title{font-size:34px;margin-bottom:20px}}@media (max-width:1023px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-details-block .post-title{font-size:28px;margin-bottom:15px}}@media (max-width:767px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-details-block .post-title{font-size:36px;margin-bottom:15px}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-details-block .post-excerpt{color:#3c3c3c;margin-bottom:10px}@media (max-width:1023.98px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-lead #tns-frontpage-featured-lead-content .featured-lead-post-block .lead-details-block .post-excerpt{font-size:18px}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured{position:relative}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured .more-featured-content{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block{position:relative;display:block;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;gap:20px 40px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block{position:relative;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;-webkit-box-align:start;-moz-box-align:start;-o-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;padding-right:20px;margin:20px 0;cursor:pointer}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block a{display:block}@media (max-width:575.98px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block{min-width:100%;max-width:100%;padding:0}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block:nth-child(even){padding-right:0;padding-left:20px}@media (max-width:575.98px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block:nth-child(even){padding-left:0}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block:nth-child(even):before{position:absolute;content:'';height:100%;width:1px;background:#c2c2c2;top:0;left:0}@media (max-width:575.98px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block:nth-child(even):before{display:none}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block::after{position:absolute;content:'';height:1px;width:100%;background:#c2c2c2;top:-20px;left:0}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block:nth-child(even)::after{left:-40px;width:calc(100% + 40px)}@media (max-width:575.98px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block:nth-child(even)::after{left:0;width:100%}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block .content{text-decoration:none}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block .content:hover .post-title{color:#01aff4;-webkit-transition:color 99ms;-moz-transition:color 99ms;-o-transition:color 99ms;-ms-transition:color 99ms;transition:color 99ms}@media (max-width:1199.98){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block .content:hover .post-title{color:#3c3c3c}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block .block-media{display:inline-block;width:100%;aspect-ratio:11/5;background:#a5a9b0;margin-bottom:10px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block .block-media .thumbnail-image{object-fit:cover;object-position:top;max-width:100%;aspect-ratio:11/5;display:block;width:100%}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block .block-content .post-title{display:inline-block;width:100%;color:#3c3c3c;font-size:20px;line-height:1.2;margin-bottom:7px;text-decoration:none}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-featured #tns-frontpage-featured-more-featured #tns-frontpage-featured-more-featured-block .more-featured-row .featured-post-block.ad-container{min-height:250px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-social{position:relative;margin-bottom:30px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-social .copy{font-size:15px;margin-bottom:12px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest{position:relative}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-header{position:relative}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content{position:relative}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}@media (max-width:999px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row{-webkit-box-pack:justify;-moz-box-pack:justify;-o-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}}@media (max-width:639.98px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row{-webkit-box-pack:start;-moz-box-pack:start;-o-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap{display:inline-block;padding:0;margin:0;width:100%;height:auto;padding-top:7px;padding-bottom:12px;border-top:1px solid #c2c2c2}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap:first-child{padding-top:0;border-top:1px solid transparent}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap .latest-post-block{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;-webkit-box-align:start;-moz-box-align:start;-o-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;cursor:pointer}@media (max-width:999px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap .latest-post-block{min-width:calc(50% - 10px);max-width:calc(50% - 10px)}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap .latest-post-block:nth-child(2){padding-top:0;border-top:1px solid transparent}}@media (max-width:639.98px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap .latest-post-block{min-width:100%;max-width:100%}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap .latest-post-block:nth-child(2){padding-top:12px;border-top:1px solid #c2c2c2}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap .latest-post-block > .content{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;text-decoration:none}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap .latest-post-block > .content:hover .post-title{color:#01aff4;-webkit-transition:color 99ms;-moz-transition:color 99ms;-o-transition:color 99ms;-ms-transition:color 99ms;transition:color 99ms}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap .latest-post-media{width:76px;aspect-ratio:1/1;display:inline-block;vertical-align:middle;padding-top:4px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap .latest-post-media .thumbnail-image{width:100%;aspect-ratio:1/1;object-fit:cover;object-position:top;display:inline-block;vertical-align:middle}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap .latest-post-content{display:inline-block;width:calc(100% - 76px);padding-left:12px;vertical-align:middle}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-latest #tns-frontpage-page-one-latest-content .latest-posts-row .latest-post-link-wrap.ad-container{min-height:100px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-trending{position:relative;min-height:300px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-page-one-trending ol .trending-story-link{font-size:17px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors{position:relative;padding-top:50px;padding-bottom:50px;background:#f6f8fa}@media (max-width:539px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors{padding-top:30px;padding-bottom:30px}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-content{position:relative;max-width:900px;margin:0 auto 0 auto;text-align:center}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-content .sponsors-title{display:inline-block;width:100%;color:#8da6c0;font-size:16px;font-weight:600;line-height:1.35;text-align:center;margin-bottom:30px}@media (max-width:1023px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-content .sponsors-title{font-size:16px}}@media (max-width:599px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-content .sponsors-title{font-size:15px}}@media (max-width:499px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-content .sponsors-title{font-size:14px;padding-left:15%;padding-right:15%}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-logos{position:relative;max-width:900px;padding-left:30px;padding-right:30px;margin:0 auto 0 auto}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-pack:justify;-moz-box-pack:justify;-o-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;margin-bottom:30px}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list .sponsor-logo{display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;max-width:calc(100% / 5 - 40px);width:100%;margin:0}@media (max-width:639px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 4 - 30px)}}@media (max-width:539px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 3 - 20px)}}@media (max-width:639px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list .sponsor-logo:nth-child(5){display:none}}@media (max-width:539px){#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list .sponsor-logo:nth-child(4){display:none}}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-cta{position:relative}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-cta .cta{width:100%;text-align:center}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-cta .cta .cta-link{color:#b3c4d5;font-size:14px;font-weight:500;text-decoration:none}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-cta .cta .cta-link svg{height:10px;width:auto;fill:#b3c4d5}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-cta .cta .cta-link:hover{color:#ff3287}#tns-frontpage #tns-frontpage-page-one #tns-frontpage-sponsors #tns-frontpage-sponsors-cta .cta .cta-link:hover svg{fill:#ff3287}#tns-frontpage #tns-frontpage-trending-stories{position:relative;background:#f6f8fa}#tns-frontpage #tns-frontpage-streaming{position:relative;min-height:350px}#tns-frontpage #tns-frontpage-streaming .content-column{min-height:unset}#tns-frontpage #tns-frontpage-sponsors{position:relative;padding-top:50px;padding-bottom:50px;background:#f6f8fa}@media (max-width:539px){#tns-frontpage #tns-frontpage-sponsors{padding-top:30px;padding-bottom:30px}}#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-content{position:relative;max-width:900px;margin:0 auto 0 auto;text-align:center}#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-content .sponsors-title{display:inline-block;width:100%;color:#8da6c0;font-size:16px;font-weight:600;line-height:1.35;text-align:center;margin-bottom:30px}@media (max-width:1023px){#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-content .sponsors-title{font-size:16px}}@media (max-width:599px){#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-content .sponsors-title{font-size:15px}}@media (max-width:499px){#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-content .sponsors-title{font-size:14px;padding-left:15%;padding-right:15%}}#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-logos{position:relative;max-width:900px;padding-left:30px;padding-right:30px;margin:0 auto 0 auto}#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-pack:justify;-moz-box-pack:justify;-o-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;margin-bottom:30px}#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list .sponsor-logo{display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;max-width:calc(100% / 5 - 40px);width:100%;margin:0}@media (max-width:639px){#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 4 - 30px)}}@media (max-width:539px){#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 3 - 20px)}}@media (max-width:639px){#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list .sponsor-logo:nth-child(5){display:none}}@media (max-width:539px){#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-logos .sponsors-logos-list .sponsor-logo:nth-child(4){display:none}}#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-cta{position:relative}#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-cta .cta{width:100%;text-align:center}#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-cta .cta .cta-link{color:#b3c4d5;font-size:14px;font-weight:500;text-decoration:none}#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-cta .cta .cta-link svg{height:10px;width:auto;fill:#b3c4d5}#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-cta .cta .cta-link:hover{color:#ff3287}#tns-frontpage #tns-frontpage-sponsors #tns-frontpage-sponsors-cta .cta .cta-link:hover svg{fill:#ff3287}#tns-frontpage #tns-frontpage-page-two{position:relative;padding-top:69px;padding-bottom:30px}@media (max-width:1279.98px){#tns-frontpage #tns-frontpage-page-two{padding-top:50px;padding-bottom:60px}}@media (max-width:767.98px){#tns-frontpage #tns-frontpage-page-two{padding-top:30px;padding-bottom:40px}}@media (max-width:1279.98px){#tns-frontpage #tns-frontpage-page-two .content-column{padding-left:30px;padding-right:30px}}#tns-frontpage #tns-frontpage-page-two .cover-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-frontpage #tns-frontpage-page-two .page-two-left-col{padding-right:20px}@media (max-width:767.98px){#tns-frontpage #tns-frontpage-page-two .page-two-left-col{min-width:100%;max-width:100%;padding-right:0}}#tns-frontpage #tns-frontpage-page-two .page-two-right-col{padding-left:20px;position:relative}@media (max-width:767.98px){#tns-frontpage #tns-frontpage-page-two .page-two-right-col{min-width:100%;max-width:100%;padding-left:0;padding-top:30px}}#tns-frontpage #tns-frontpage-page-two .page-two-right-col:before{position:absolute;content:'';left:0;top:0;height:100%;width:1px;background:#3c3c3c;background:transparent}@media (max-width:767.98px){#tns-frontpage #tns-frontpage-page-two .page-two-right-col:before{display:none}}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts{position:relative}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-heading{position:relative}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-heading .section-heading{margin-bottom:3px}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;gap:0 40px}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concepts-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;position:relative;-webkit-box-align:start;-moz-box-align:start;-o-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;padding-top:17px;padding-bottom:16px;padding-right:20px;margin-bottom:10px}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept .title{font-size:12px;font-weight:900;margin-bottom:10px;text-transform:uppercase}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept .title:hover{color:#ff3287}@media (max-width:767px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept .title{font-weight:700}}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept a{display:block;color:#3c3c3c;font-size:15px;-webkit-transition:color 99ms;-moz-transition:color 99ms;-o-transition:color 99ms;-ms-transition:color 99ms;transition:color 99ms;margin-bottom:14px}@media (max-width:767px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept a{font-size:17px;margin-bottom:18px}}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept a:hover{color:#01aff4}@media (max-width:999px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept{min-width:100%;max-width:100%;padding-right:0;margin-bottom:0}}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept:nth-child(even){padding-right:0;padding-left:20px}@media (max-width:999px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept:nth-child(even){padding-left:0}}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept:after{position:absolute;content:'';height:1px;width:calc(100% - 20px);background:#c2c2c2;bottom:0;left:0}@media (max-width:1023.98px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept:after{bottom:5px}}@media (max-width:575.98px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept:after{width:100%}}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept:nth-child(even)::after{width:calc(100% - 20px);left:20px}@media (max-width:999px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept:nth-child(even)::after{width:100%;left:0}}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept:nth-last-child(-n+2):after{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}@media (max-width:999px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept:nth-last-child(-n+3):after{opacity:1;-ms-filter:none;filter:none}}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-key-concepts #tns-frontpage-page-two-key-concepts-content .key-concept:last-child:after{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories{position:relative}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-header{position:relative}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content{position:relative}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content > .more-stories-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}@media (max-width:999px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content > .more-stories-row{-webkit-box-pack:justify;-moz-box-pack:justify;-o-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}}@media (max-width:639.98px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content > .more-stories-row{-webkit-box-pack:start;-moz-box-pack:start;-o-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap{display:inline-block;padding:0;margin:0;width:100%;height:auto;padding-top:7px;padding-bottom:12px;border-top:1px solid #c2c2c2}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap:first-child{padding-top:0;border-top:1px solid transparent}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap .more-stories-post-block{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:start;-moz-box-align:start;-o-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;cursor:pointer}@media (max-width:767px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap .more-stories-post-block{max-width:calc(50% - 10px);min-width:calc(50% - 10px)}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap .more-stories-post-block:nth-child(2){padding-top:0;border-top:1px solid transparent}}@media (max-width:639.98px){#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap .more-stories-post-block{max-width:100%;min-width:100%}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap .more-stories-post-block:nth-child(2){padding-top:12px;border-top:1px solid #c2c2c2}}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap .more-stories-post-block > .content{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;text-decoration:none}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap .more-stories-post-block > .content:hover .post-title{color:#01aff4;-webkit-transition:color 99ms;-moz-transition:color 99ms;-o-transition:color 99ms;-ms-transition:color 99ms;transition:color 99ms}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap .more-stories-post-media{width:76px;aspect-ratio:1/1;display:inline-block;vertical-align:middle;padding-top:4px}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap .more-stories-post-media .thumbnail-image{width:100%;aspect-ratio:1/1;object-fit:cover;object-position:top;display:inline-block;vertical-align:middle}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap .more-stories-post-content{display:inline-block;width:calc(100% - 76px);padding-left:12px;vertical-align:middle}#tns-frontpage #tns-frontpage-page-two #tns-frontpage-page-two-more-stories #tns-frontpage-page-two-more-stories-content .more-stories-link-wrap.ad-container{min-height:100px}#tns-frontpage #tns-frontpage-pagination{position:relative;padding:30px;text-align:center}#tns-frontpage #tns-frontpage-events{position:relative;min-height:350px}#tns-frontpage #tns-frontpage-newsletter{position:relative}#tns-frontpage #tns-frontpage-newsletter .content-column{min-height:unset}#tns-frontpage #tns-frontpage-ebooks{position:relative;margin-bottom:25px}#tns-frontpage #tns-frontpage-ebooks .content-column{min-height:unset}#tns-frontpage #tns-frontpage-disclosure{position:relative;padding-top:60px;padding-bottom:60px}@media (max-width:1023.98px){#tns-frontpage #tns-frontpage-disclosure{padding-top:50px;padding-bottom:50px}}@media (max-width:767.98px){#tns-frontpage #tns-frontpage-disclosure{padding-top:30px;padding-bottom:30px}}#tns-frontpage #tns-frontpage-disclosure .content{max-width:800px;margin-left:auto;margin-right:auto}@media (max-width:991.98px){#tns-frontpage #tns-frontpage-disclosure .content{padding-left:30px;padding-right:30px}}#tns-frontpage #tns-frontpage-disclosure .content .disclosure{color:#515151;font-size:12px;font-style:italic;text-align:left;line-height:133%;margin-bottom:20px}#tns-frontpage #tns-frontpage-archive{position:relative;margin-top:50px}@media (max-width:767px){#tns-frontpage #tns-frontpage-archive{margin-top:30px}}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row-wrap > .row:last-child:after{display:none}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row{position:relative;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0 -15px;padding-bottom:40px}@media (max-width:1199.98px){#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25{min-width:33.333%;max-width:33.333%}}@media (max-width:1023.98px){#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25{min-width:50%;max-width:50%}}@media (max-width:767.98px){#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row{-webkit-box-pack:justify;-moz-box-pack:justify;-o-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25{min-width:100%;max-width:100%}}@media (max-width:639.98px){#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row{-webkit-box-pack:start;-moz-box-pack:start;-o-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25{padding:0 15px}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25:nth-child(4n+4){border-right:none}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25 .archive-story-card{margin-bottom:30px;cursor:pointer}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25 .archive-story-card figure{object-position:top}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25 .archive-story-card figure img{display:block;margin-bottom:12px;width:100%;aspect-ratio:1.86/1;object-fit:cover}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25 .archive-story-card:hover .post-title{color:#01aff4}@media (max-width:767.98px){#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25 .archive-story-card{border-bottom:1px solid #c2c2c2;margin-bottom:0;padding:7px 0 12px}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25 .archive-story-card .latest-post-media{width:76px;height:76px;aspect-ratio:1/1;display:inline-block;vertical-align:middle;padding-top:4px}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25 .archive-story-card .latest-post-media img{width:100%;aspect-ratio:1/1;object-fit:cover;object-position:top;display:inline-block;vertical-align:middle}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25 .archive-story-card .latest-post-content{display:inline-block;width:calc(100% - 81px);padding-left:12px;vertical-align:top}#tns-frontpage #tns-frontpage-archive .archive-stories .archive-stories-row .col-25:last-child .story-card{border:none}}#tns-frontpage #tns-frontpage-archive-pagination{position:relative;padding:30px;text-align:center}.legal-page-content{max-width:830px;padding-top:50px;padding-bottom:50px}@media (max-width:767px){.legal-page-content{padding-top:30px;padding-bottom:30px}}.legal-page-content h1{font-size:36px;font-weight:normal;line-height:1.33;color:#3c3c3c}@media (max-width:767.98px){.legal-page-content h1{font-size:28px}}.legal-page-content .description{position:relative}.legal-page-content .description h2,.legal-page-content .description h3,.legal-page-content .description h4,.legal-page-content .description h5,.legal-page-content .description h6{line-height:1.3;font-weight:normal;color:#3c3c3c}.legal-page-content .description p,.legal-page-content .description li{color:#3c3c3c;font-weight:normal;line-height:1.4;font-size:16px}@media (max-width:767.98px){.legal-page-content .description p,.legal-page-content .description li{font-size:14px}}@media (max-width:830px){.legal-page-content .description table,.legal-page-content .description thead,.legal-page-content .description tbody,.legal-page-content .description th,.legal-page-content .description td,.legal-page-content .description tr{display:block}}@media (max-width:830px){.legal-page-content .description thead tr{position:absolute !important;top:-9999px !important;left:-9999px !important;z-index:-9999 !important}}@media (max-width:830px){.legal-page-content .description td{border:none !important;border-bottom:1px solid #d7d7d7 !important;width:100% !important}}@media (max-width:830px){.legal-page-content .description td:before{content:attr(data-label);font-weight:bold;height:100%;width:40%;padding-right:10px}}#tns-newsletter{position:relative;padding-top:30px}@media (max-width:1279.98px){#tns-newsletter{padding-top:30px}}@media (max-width:767.98px){#tns-newsletter{padding-top:30px}}@media (min-width:1200px) and (max-width:1260px){#tns-newsletter .content-column{padding:0 30px}}#tns-newsletter #tns-newsletter-promo{position:relative;margin-bottom:50px}#tns-newsletter #tns-newstack-update{position:relative}#tns-newsletter #tns-newstack-update .title{color:#3c3c3c;font-size:18px;font-weight:600;margin-bottom:30px}#tns-newsletter #tns-newstack-update .newstack-update{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:start;-moz-box-align:start;-o-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;-webkit-box-pack:justify;-moz-box-pack:justify;-o-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}@media (max-width:767.98px){#tns-newsletter #tns-newstack-update .newstack-update{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}}#tns-newsletter #tns-newstack-update .newstack-left{width:100%;max-width:500px}@media (max-width:767.98px){#tns-newsletter #tns-newstack-update .newstack-left{max-width:100%;padding-bottom:30px}}#tns-newsletter #tns-newstack-update .newstack-left .left-title{color:#3c3c3c;font-size:42px;font-weight:bold;line-height:1.2}@media (max-width:767.98px){#tns-newsletter #tns-newstack-update .newstack-left .left-title{font-size:30px}}@media (max-width:539px){#tns-newsletter #tns-newstack-update .newstack-left .left-title{padding-right:0}}#tns-newsletter #tns-newstack-update .newstack-right{max-width:510px;width:100%}@media (max-width:1023.98px){#tns-newsletter #tns-newstack-update .newstack-right{max-width:280px}}@media (max-width:767.98px){#tns-newsletter #tns-newstack-update .newstack-right{max-width:100%}}#tns-newsletter #tns-newstack-update .newstack-right .subtitle{font-size:28px;color:#3c3c3c;line-height:1.3;margin:0 0 70px}@media (max-width:1023.98px){#tns-newsletter #tns-newstack-update .newstack-right .subtitle{font-size:16px;margin:0 0 20px}}@media (max-width:767.98px){#tns-newsletter #tns-newstack-update .newstack-right .subtitle{margin:0 0 30px}}#tns-newsletter #tns-newstack-update .newstack-right .newsletter-form-inputs{max-width:100%}#tns-newsletter #tns-past-newsletters{position:relative;padding-bottom:100px}@media (max-width:1024.98px){#tns-newsletter #tns-past-newsletters{padding-bottom:70px}}@media (max-width:767.98px){#tns-newsletter #tns-past-newsletters{padding-bottom:50px}}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-block{display:block;padding:20px;padding-left:0;text-decoration:none;border-bottom:1px solid #a5a9b0}@media (max-width:767.98px){#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-block{padding-left:0}}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-block:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-block .title{color:#3c3c3c;font-size:28px;line-height:1.3;margin-bottom:3px}@media (max-width:767px){#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-block .title{font-size:18px;margin-bottom:0}}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-block .dateline{display:block;color:#3c3c3c;text-transform:uppercase}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-block .dateline .issue{display:inline-block;width:auto;color:#515151;font-size:14px;font-weight:500}@media (max-width:767px){#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-block .dateline .issue{font-size:12px}}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-block .dateline .date{display:inline-block;width:auto;color:#a5a9b0;font-size:14px;font-weight:500;margin-left:10px}@media (max-width:767px){#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-block .dateline .date{font-size:12px}}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-block:hover .title{color:#01aff4}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-archive-link{margin-top:30px;padding:10px 0;font-size:16px;text-decoration:none;display:inline-block;font-weight:600}@media (max-width:1023.98px){#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-archive-link{font-size:14px}}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-archive-link svg{fill:#ff3287;height:14px;display:inline-block;margin-left:6px;position:relative;top:2px}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-archive-link:hover{color:#01aff4}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-archive-link:hover svg{fill:#01aff4}#tns-newsletter #tns-past-newsletters .past-newsletters .newsletter-load-more{margin-top:20px}#tns-newsletter #tns-featured-newsletter{position:relative}#tns-newsletter #tns-featured-newsletter .featured-newsletter{display:block;position:relative;width:100%;height:auto;padding:40px;margin-top:60px;margin-bottom:60px;border:1px solid #01aff4}@media (max-width:699px){#tns-newsletter #tns-featured-newsletter .featured-newsletter{padding:30px}}@media (max-width:499px){#tns-newsletter #tns-featured-newsletter .featured-newsletter{padding:20px}}#tns-newsletter #tns-featured-newsletter .featured-newsletter:hover{border:1px solid #ff3287}#tns-newsletter #tns-featured-newsletter .featured-newsletter:hover .title{color:#ff3287}#tns-newsletter #tns-featured-newsletter .issue{color:#01aff4;text-transform:uppercase;font-size:18px;font-weight:600;display:inline-block;width:100%;margin:0 0 60px;line-height:1;vertical-align:top}@media (max-width:1023.98px){#tns-newsletter #tns-featured-newsletter .issue{font-size:16px;margin:0 0 20px}}@media (max-width:767.98px){#tns-newsletter #tns-featured-newsletter .issue{font-size:14px}}#tns-newsletter #tns-featured-newsletter .title{display:block;width:100%;color:#3c3c3c;font-size:46px;font-weight:600;line-height:1.2}@media (max-width:1023.98px){#tns-newsletter #tns-featured-newsletter .title{font-size:32px}}@media (max-width:767.98px){#tns-newsletter #tns-featured-newsletter .title{font-size:30px}}@media (max-width:699px){#tns-newsletter #tns-featured-newsletter .title{font-size:24px}}@media (max-width:499px){#tns-newsletter #tns-featured-newsletter .title{font-size:20px}}@media (max-width:399px){#tns-newsletter #tns-featured-newsletter .title{font-size:18px}}#tns-newsletter #tns-featured-newsletter .dateline{position:relative;color:#a5a9b0;font-size:14px;font-weight:500;line-height:1.3;letter-spacing:1.2px;vertical-align:middle;text-transform:uppercase}#tns-podcasts{position:relative;margin-bottom:50px}#tns-podcasts #tns-podcasts-cover{position:relative;padding-top:50px;padding-bottom:50px}@media (max-width:767px){#tns-podcasts #tns-podcasts-cover{padding-top:30px;padding-bottom:30px}}#tns-podcasts #tns-podcasts-cover .featured-column{padding-right:30px}@media (max-width:767px){#tns-podcasts #tns-podcasts-cover .featured-column{min-width:100%;max-width:100%;padding-right:0}}@media (max-width:767px){#tns-podcasts #tns-podcasts-cover .sidebar-column{display:none}}#tns-podcasts #tns-podcasts-cover .section-heading{color:#fff;border-top:1px solid #fff;opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast{position:relative}@media (max-width:499px){#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-podcast-image-column{display:none}}#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-podcast-image-column .featured-podcast-image{display:block;width:100%;height:auto;border:1px solid #fff}@media (max-width:499px){#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-episode-details-column{min-width:100%;max-width:100%}}#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-episode-details-column .featured-episode-details{display:block;height:auto;color:#fff;padding-left:20px}@media (max-width:499px){#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-episode-details-column .featured-episode-details{padding-left:0}}#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-episode-details-column .featured-episode-details .episode-title{display:block;color:#fff;font-size:27px;font-weight:500;line-height:1.2;margin-bottom:10px}@media (max-width:767px){#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-episode-details-column .featured-episode-details .episode-title{font-size:24px;margin-bottom:30px}}@media (max-width:767px){#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-episode-details-column .featured-episode-details .episode-description{display:none}}#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-episode-details-column .featured-episode-details .listen-now-button{display:inline-block;background-color:#fff;text-decoration:none;border-radius:24px;padding:12px 25px;font-size:18px;color:#01aff4;font-weight:500;-webkit-transition:all 99ms;-moz-transition:all 99ms;-o-transition:all 99ms;-ms-transition:all 99ms;transition:all 99ms}#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-episode-details-column .featured-episode-details .listen-now-button svg{height:14px;width:20px;fill:#01aff4;-webkit-transition:all 99ms;-moz-transition:all 99ms;-o-transition:all 99ms;-ms-transition:all 99ms;transition:all 99ms}#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-episode-details-column .featured-episode-details .listen-now-button .play-icon{margin-right:10px;-webkit-transition:all 99ms;-moz-transition:all 99ms;-o-transition:all 99ms;-ms-transition:all 99ms;transition:all 99ms}#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-episode-details-column .featured-episode-details .listen-now-button:hover{background-color:#ff3287;color:#fff}#tns-podcasts #tns-podcasts-cover #tns-podcasts-featured-podcast .featured-episode-details-column .featured-episode-details .listen-now-button:hover svg{fill:#fff}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar{position:relative}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video{padding:0 0 23px;margin:0 0 23px;border-bottom:1px solid #c2c2c2;text-decoration:none;display:block}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video:last-child{border-bottom:0;padding:0;margin:0}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video .image{position:relative;margin-bottom:10px;border:2px solid transparent}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video .image .play-icon{position:absolute;left:50%;top:50%;color:#fff;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);font-size:30px;z-index:1}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video .image .play-icon svg{fill:#fff;width:35px}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video .image img{display:block;width:100%;height:auto}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video .content{position:relative}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video .content .title{color:#fff;font-size:18px;line-height:1.28}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video .content .dateline{display:block;color:#fff;font-size:12px;font-weight:500;letter-spacing:1.2px;text-transform:uppercase}@media (max-width:1023.98px){#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video .content .dateline{font-size:10px}}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video:hover .image{border:2px solid #fff}#tns-podcasts #tns-podcasts-cover #tns-podcasts-cover-sidebar .featured-video:hover .content .title{color:#fff;-webkit-transition:all 99ms ease-in-out;-moz-transition:all 99ms ease-in-out;-o-transition:all 99ms ease-in-out;-ms-transition:all 99ms ease-in-out;transition:all 99ms ease-in-out}#tns-podcasts #tns-podcasts-subscribe{position:relative}#tns-podcasts #tns-episodes{position:relative;padding:0 0 53px}@media (max-width:767.98px){#tns-podcasts #tns-episodes{left:-30px;width:calc(100% + 60px);padding:0 0 30px}}#tns-podcasts #tns-episodes .row{margin:0 -21px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-pack:justify;-moz-box-pack:justify;-o-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}@media (max-width:1023.98px){#tns-podcasts #tns-episodes .row{margin:0 -16px}}@media (max-width:767.98px){#tns-podcasts #tns-episodes .row{margin:0;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}}#tns-podcasts #tns-episodes .row .col-66{padding:0 20px}@media (max-width:1023.98px){#tns-podcasts #tns-episodes .row .col-66{padding:0 16px;width:calc(100% - 279px);min-width:inherit}}@media (max-width:767.98px){#tns-podcasts #tns-episodes .row .col-66{padding:0;width:100%;min-width:fit-content}}#tns-podcasts #tns-episodes .row .col-33{padding:0 20px}@media (max-width:1023.98px){#tns-podcasts #tns-episodes .row .col-33{padding:0 16px;max-width:312px;width:100%;min-width:inherit}}@media (max-width:767.98px){#tns-podcasts #tns-episodes .row .col-33{padding:0;max-width:100%}}#tns-podcasts #tns-episodes .tns-makers{position:relative}@media (max-width:767.98px){#tns-podcasts #tns-episodes .tns-makers{padding:0 30px 30px}}#tns-podcasts #tns-episodes .tns-makers .makers-title{margin-bottom:30px}#tns-podcasts #tns-episodes .tns-makers .makers-main{margin-bottom:30px}#tns-podcasts #tns-episodes .tns-makers .more-podcasts-link{text-decoration:none;display:inline-block;color:#ff3287;text-transform:capitalize;cursor:pointer}@media (max-width:1023.98px){#tns-podcasts #tns-episodes .tns-makers .more-podcasts-link{margin:20px 0 0;font-size:14px}}@media (max-width:767.98px){#tns-podcasts #tns-episodes .tns-makers .more-podcasts-link{margin:30px 0 0}}#tns-podcasts #tns-episodes .tns-makers .more-podcasts-link svg{fill:#ff3287;display:inline-block;height:12px}#tns-podcasts #tns-episodes .tns-makers .more-podcasts-link:hover{color:#01aff4;-webkit-transition:all 99ms ease-in-out;-moz-transition:all 99ms ease-in-out;-o-transition:all 99ms ease-in-out;-ms-transition:all 99ms ease-in-out;transition:all 99ms ease-in-out}#tns-podcasts #tns-episodes .tns-makers .more-podcasts-link:hover svg{fill:#01aff4}#tns-podcasts #tns-episodes .tns-makers .podcast-episode{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:start;-moz-box-align:start;-o-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;text-decoration:none;padding-bottom:23px;margin-bottom:23px;border-bottom:1px solid #c2c2c2}#tns-podcasts #tns-episodes .tns-makers .podcast-episode:last-child{border-bottom:0;padding:0;margin:0}#tns-podcasts #tns-episodes .tns-makers .podcast-episode .icon{position:relative;width:80px;height:80px;border-radius:100%;background:transparent -webkit-linear-gradient(283deg, #e74886 0%, #f78b5a 69%, #e74886 100%) 0% 0% no-repeat padding-box;background:transparent -moz-linear-gradient(283deg, #e74886 0%, #f78b5a 69%, #e74886 100%) 0% 0% no-repeat padding-box;background:transparent -o-linear-gradient(283deg, #e74886 0%, #f78b5a 69%, #e74886 100%) 0% 0% no-repeat padding-box;background:transparent -ms-linear-gradient(283deg, #e74886 0%, #f78b5a 69%, #e74886 100%) 0% 0% no-repeat padding-box;background:transparent linear-gradient(167deg, #e74886 0%, #f78b5a 69%, #e74886 100%) 0% 0% no-repeat padding-box}@media (max-width:1023.98px){#tns-podcasts #tns-episodes .tns-makers .podcast-episode .icon{height:60px;width:60px}}#tns-podcasts #tns-episodes .tns-makers .podcast-episode .icon .play-icon{position:absolute;top:50%;left:50%;-webkit-transform:translate(-10px,-25px);-moz-transform:translate(-10px,-25px);-o-transform:translate(-10px,-25px);-ms-transform:translate(-10px,-25px);transform:translate(-10px,-25px)}@media (max-width:1023.98px){#tns-podcasts #tns-episodes .tns-makers .podcast-episode .icon .play-icon{-webkit-transform:translate(-8px,-25px);-moz-transform:translate(-8px,-25px);-o-transform:translate(-8px,-25px);-ms-transform:translate(-8px,-25px);transform:translate(-8px,-25px)}}#tns-podcasts #tns-episodes .tns-makers .podcast-episode .icon .play-icon svg{width:30px;fill:#fff}@media (max-width:1023.98px){#tns-podcasts #tns-episodes .tns-makers .podcast-episode .icon .play-icon svg{width:25px}}#tns-podcasts #tns-episodes .tns-makers .podcast-episode .content{width:calc(100% - 100px);padding-left:42px}@media (max-width:1023.98px){#tns-podcasts #tns-episodes .tns-makers .podcast-episode .content{width:calc(100% - 63px);padding-left:25px}}#tns-podcasts #tns-episodes .tns-makers .podcast-episode .content .episode-title{color:#3c3c3c;font-size:20px;line-height:1.28}#tns-podcasts #tns-episodes .tns-makers .podcast-episode .content .episode-dateline{display:block;color:#a5a9b0;font-size:12px;font-weight:500;letter-spacing:1.2px;text-transform:uppercase;margin-bottom:7px}@media (max-width:1023.98px){#tns-podcasts #tns-episodes .tns-makers .podcast-episode .content .episode-dateline{font-size:10px}}#tns-podcasts #tns-episodes .tns-makers .podcast-episode .content p{color:#3c3c3c;font-size:16px;line-height:1.33;margin-bottom:15px}#tns-podcasts #tns-episodes .tns-makers .podcast-episode:hover .content .episode-title{color:#01aff4;-webkit-transition:all 99ms;-moz-transition:all 99ms;-o-transition:all 99ms;-ms-transition:all 99ms;transition:all 99ms}#tns-podcasts #tns-episodes .tns-videos{position:relative}@media (max-width:767.98px){#tns-podcasts #tns-episodes .tns-videos{padding:0 30px}}#tns-podcasts #tns-episodes .tns-videos .videos-title{margin-bottom:30px}@media (max-width:767.98px){#tns-podcasts #tns-episodes .tns-videos .videos-title{padding-right:30px}}#tns-podcasts #tns-episodes .tns-videos .videos-main-block{position:relative}#tns-podcasts #tns-episodes .tns-videos .videos-main{position:relative;margin-bottom:30px}#tns-podcasts #tns-episodes .tns-videos .videos-single{padding:0 0 23px;margin:0 0 23px;border-bottom:1px solid #c2c2c2;text-decoration:none;display:block}#tns-podcasts #tns-episodes .tns-videos .videos-single:last-child{border-bottom:0;padding:0;margin:0}#tns-podcasts #tns-episodes .tns-videos .videos-single .image{position:relative;margin-bottom:10px}#tns-podcasts #tns-episodes .tns-videos .videos-single .image .play-icon{position:absolute;left:50%;top:50%;color:#fff;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);font-size:30px;z-index:1}#tns-podcasts #tns-episodes .tns-videos .videos-single .image .play-icon svg{fill:#fff;width:35px}#tns-podcasts #tns-episodes .tns-videos .videos-single .image img{display:block;width:100%;height:auto}#tns-podcasts #tns-episodes .tns-videos .videos-single .image .eyebrow{position:absolute;right:16px;top:16px;height:50px;width:50px;background-color:#fff;border-radius:100%;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;font-size:12px;color:#ff3287;font-weight:600;text-transform:uppercase;letter-spacing:1.2px}#tns-podcasts #tns-episodes .tns-videos .videos-single .content{position:relative}#tns-podcasts #tns-episodes .tns-videos .videos-single .content .video-title{color:#3c3c3c;font-size:18px;line-height:1.28}#tns-podcasts #tns-episodes .tns-videos .videos-single .content .video-dateline{display:block;color:#a5a9b0;font-size:12px;font-weight:500;letter-spacing:1.2px;text-transform:uppercase}@media (max-width:1023.98px){#tns-podcasts #tns-episodes .tns-videos .videos-single .content .video-dateline{font-size:10px}}#tns-podcasts #tns-episodes .tns-videos .videos-single:hover .content .video-title{color:#01aff4;-webkit-transition:all 99ms ease-in-out;-moz-transition:all 99ms ease-in-out;-o-transition:all 99ms ease-in-out;-ms-transition:all 99ms ease-in-out;transition:all 99ms ease-in-out}#tns-podcasts #tns-episodes .tns-videos .tns-videos-slider{padding-right:90px}@media (min-width:767.98px){#tns-podcasts #tns-episodes .tns-videos .tns-videos-slider{display:none}}#tns-podcasts #tns-episodes .tns-videos .more-videos-link{text-decoration:none;display:inline-block;color:#ff3287;text-transform:capitalize}@media (max-width:1023.98px){#tns-podcasts #tns-episodes .tns-videos .more-videos-link{margin:30px 0 0;font-size:14px}}@media (max-width:767.98px){#tns-podcasts #tns-episodes .tns-videos .more-videos-link{margin:20px 0 0}}#tns-podcasts #tns-episodes .tns-videos .more-videos-link svg{fill:#ff3287;display:inline-block;height:12px}#tns-podcasts #tns-episodes .tns-videos .more-videos-link:hover{color:#01aff4;-webkit-transition:all 99ms ease-in-out;-moz-transition:all 99ms ease-in-out;-o-transition:all 99ms ease-in-out;-ms-transition:all 99ms ease-in-out;transition:all 99ms ease-in-out}#tns-podcasts #tns-episodes .tns-videos .more-videos-link:hover svg{fill:#01aff4}#tns-podcasts #tns-podcasts-sponsor-spotlight{position:relative}#tns-podcasts #tns-podcasts-events{position:relative}#tns-podcasts #tns-podcasts-newsletter{position:relative}#tns-rss-feeds{position:relative;padding-top:50px;padding-bottom:50px}@media (max-width:767px){#tns-rss-feeds{padding-top:30px;padding-bottom:30px}}#tns-rss-feeds .content-column{max-width:830px}#tns-post{position:relative;padding-top:50px;padding-bottom:60px}#tns-post .content-column-post-body{min-height:unset;max-width:930px}#tns-post .content-column-post-body #tns-post-headline{position:relative}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-breadcrumb{position:relative;margin-bottom:20px}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-breadcrumb .breadcrumb{width:100%;color:#a5a9b0;font-size:13px;font-weight:600;letter-spacing:.03px;text-transform:uppercase}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-breadcrumb .breadcrumb a{vertical-align:baseline;text-decoration:none;color:#a5a9b0}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-breadcrumb .breadcrumb a:hover{color:#01aff4}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-title{position:relative}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-title .title{display:block;width:100%;color:#3c3c3c;font-size:45px;font-weight:500;line-height:1.07;letter-spacing:.7px;margin-bottom:15px}@media (max-width:1023.98px){#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-title .title{font-size:40px}}@media (max-width:767.98px){#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-title .title{font-size:30px}}@media (max-width:399.98px){#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-title .title{font-size:27px}}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-title .post-excerpt{color:#515151;padding-right:10%;margin-bottom:10px}@media (max-width:767.98px){#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-title .post-excerpt{padding-right:0}}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-byline{position:relative;padding-right:10%;margin-bottom:30px}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-byline .date{width:100%;color:#515151;font-size:13px;font-weight:500;letter-spacing:.03px}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-byline .author{width:100%;color:#515151;font-size:13px;font-weight:500;letter-spacing:.03px;margin:0;padding:0}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-byline .author a{vertical-align:baseline;text-decoration:none;color:#01aff4}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-byline .author a:hover{color:#ff3287}#tns-post .content-column-post-body #tns-post-headline #tns-post-headline-byline .sponsor-badge{font-size:12px;color:#ff3287;display:inline-block;width:100%;vertical-align:middle;text-align:left;text-transform:uppercase;font-weight:normal;margin:0;padding:0;letter-spacing:.2px}#tns-post .content-column-post-body #tns-post-key-media{position:relative;margin-bottom:30px}#tns-post .content-column-post-body #tns-post-key-media .content-column{min-height:unset}#tns-post .content-column-post-body #tns-post-key-media img{display:block;width:100%;height:auto}#tns-post .content-column-post-body #tns-post-key-media .image-disclosure,#tns-post .content-column-post-body #tns-post-key-media .image-disclosure .attribution{color:#a5a9b0;font-size:12px;line-height:1.33}#tns-post .content-column-post-body #tns-post-key-media .image-disclosure a,#tns-post .content-column-post-body #tns-post-key-media .image-disclosure .attribution a{color:#01aff4;text-decoration:none}#tns-post .content-column-post-body #tns-post-key-media .image-disclosure a:hover,#tns-post .content-column-post-body #tns-post-key-media .image-disclosure .attribution a:hover{color:#ff3287}#tns-post .content-column-post-body #tns-post-key-media .image-disclosure{padding-top:7px}#tns-post .content-column-post-body #tns-post-body{position:relative}#tns-post .content-column-post-body #tns-post-body .copy-column{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;min-width:0%}#tns-post .content-column-post-body #tns-post-body .sidebar-column{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:0 0 315px;-ms-flex:0 0 315px;flex:0 0 315px}@media (max-width:767px){#tns-post .content-column-post-body #tns-post-body .sidebar-column{display:none}}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content{position:relative;padding-right:15px;padding-bottom:20px}@media (max-width:767.98px){#tns-post .content-column-post-body #tns-post-body #tns-post-body-content{padding-right:0}}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .editors-note{color:#515151;font-size:14px;font-style:italic;margin-bottom:30px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .sponsored-post-disclosure{display:none}@media (max-width:767px){#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .sponsored-post-disclosure{display:block}}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content h1{margin-bottom:20px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content img.alignnone,#tns-post .content-column-post-body #tns-post-body #tns-post-body-content img.aligncenter{width:100%;height:auto}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignnone,#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.aligncenter{display:block;width:100%;padding:0;margin:0}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignnone img,#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.aligncenter img{display:block;width:100%;height:auto}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption-text{padding-top:5px;font-size:12px;font-style:italic}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignleft{float:left;min-width:0;margin-right:10px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignleft img{display:block;width:auto}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignleft .wp-caption-text{margin-bottom:0}@media (max-width:499px){#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignleft{min-width:100%;float:none;margin-left:0;margin-right:0}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignleft img{width:100%;height:auto}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignleft .wp-caption-text{margin-bottom:30px}}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignright{float:right;min-width:0;margin-left:10px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignright img{display:block;width:auto}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignright .wp-caption-text{margin-bottom:0}@media (max-width:499px){#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignright{min-width:100%;float:none;margin-left:0;margin-right:0}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignright img{width:100%;height:auto}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .wp-caption.alignright .wp-caption-text{margin-bottom:30px}}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .infoBlock{display:none}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-logo-slug svg{display:block;width:21px;height:auto;margin-bottom:30px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .ad-container--inline{margin-bottom:10px;border-bottom:1px solid #c2c2c2;border-top:1px solid #c2c2c2;padding:10px 0;text-align:center}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .ad-container--inline div{height:195px !important}@media (min-width:768px){#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .ad-container--inline{display:none}}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content iframe{width:100%;aspect-ratio:16/9;display:inline-block}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .media-direct-link{display:block;font-size:15px;font-weight:500;margin:0}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .media-direct-link a{color:#01aff4}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .media-direct-link a:hover{color:#ff3287}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .podcast-embed-subscription-links{position:relative;color:#515151;font-size:13px;margin:0;margin-bottom:30px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .podcast-embed-subscription-links a{color:#01aff4;font-size:13px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .podcast-embed-subscription-links a:hover{color:#ff3287}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:1px;width:100%;padding:15px;background:#f6f8fa;cursor:pointer}@media (max-width:499px){#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block{padding:15px}}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block:hover .copy .heading{color:#ff3287}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block:hover .button button{background:#ff3287}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block .copy{padding-right:20px;color:#515151}@media (max-width:499px){#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block .copy{min-width:100%;max-width:100%;padding-right:0}}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block .copy .heading{font-size:11px;font-weight:800;color:#8da6c0}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block .copy .cta{font-size:14px;line-height:1.33}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block .button{padding-top:25px}@media (max-width:499px){#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block .button{min-width:100%;max-width:100%;padding-top:15px}}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block .button .youtube-subscribe-button{font-size:13px;font-weight:800;line-height:27px;height:30px;background:#01aff4}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block .button .youtube-subscribe-button svg{display:inline-block;height:12px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .youtube-subscribe-block .button .youtube-subscribe-button svg path{fill:#fff}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author{position:relative;border-top:1px solid #a5a9b0;padding-top:30px;margin-bottom:20px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author .author-more-link{display:block;color:#3c3c3c}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author .author-more-link .author-profile-photo-column{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:60px;max-width:60px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author .author-more-link .author-profile-photo-column img{display:block;width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:30px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author .author-more-link .post-author-bio-column{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;padding-left:20px;font-size:13px;color:#3c3c3c;display:inline-block;line-height:135%}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author .author-more-link .post-author-bio-column .post-author-bio-wrap{position:relative}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author .author-more-link .post-author-bio-column .post-author-bio-wrap .post-author-bio{position:relative}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author .author-more-link .post-author-bio-column .author-more-cta{color:#3c3c3c;margin-top:20px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author .author-more-link .post-author-bio-column .author-more-cta svg{height:8px;width:auto;fill:#3c3c3c}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author .author-more-link:hover{color:#3c3c3c}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author .author-more-link:hover .post-author-bio-column .author-more-cta{color:#ff3287}#tns-post .content-column-post-body #tns-post-body #tns-post-body-content .tns-post-body-content-author .author-more-link:hover .post-author-bio-column .author-more-cta svg{fill:#ff3287}#tns-post .content-column-post-body #tns-post-body #tns-post-body-sidebar{position:sticky;top:110px;padding-left:15px;padding-bottom:45px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-sidebar #div-gpt-ad-native-sidebar-1{min-height:250px;margin-bottom:20px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-sidebar .tns-post-body-sidebar-trending-stories{position:relative}#tns-post .content-column-post-body #tns-post-body #tns-post-body-sidebar #tns-post-body-sidebar-related-stories{position:relative}#tns-post .content-column-post-body #tns-post-body #tns-post-body-sidebar #tns-post-body-sidebar-related-stories .section-heading{font-size:13px;font-weight:700;margin-bottom:15px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-sidebar #tns-post-body-content{position:relative}#tns-post .content-column-post-body #tns-post-body #tns-post-body-sidebar #tns-post-body-sidebar-share{position:relative;margin-bottom:30px}#tns-post .content-column-post-body #tns-post-body #tns-post-body-sidebar #tns-post-body-sidebar-share .section-heading{font-size:13px;font-weight:700;margin-bottom:10px}#tns-post .content-column-mobile-footer{display:none}@media (max-width:767px){#tns-post .content-column-mobile-footer{display:block}}#tns-post .content-column-mobile-footer .mobile-share{margin-bottom:40px}#tns-post .content-column-mobile-footer .mobile-share .section-heading{margin-bottom:15px}#tns-post .content-column-mobile-footer .mobile-share .share-media-icon{margin-right:15px}#tns-post .content-column-mobile-footer .mobile-share .share-media-icon svg{height:25px}#tns-post .content-column-mobile-footer .mobile-related-stories .related-story{font-size:17px;font-weight:500}#tns-post .content-column-post-footer #tns-post-newsletter{position:relative}.tns-sponsored-post-disclosure{position:relative}.tns-sponsored-post-disclosure .sponsor-disclosure{color:#a5a9b0;font-size:12px;line-height:1.2;margin-bottom:10px}.tns-sponsored-post-disclosure .sponsor-disclosure a{color:#01aff4;text-decoration:none}.tns-sponsored-post-disclosure .sponsor-disclosure a:hover{color:#ff3287}.tns-sponsored-post-disclosure .sponsor-disclosure:last-child{margin-bottom:20px}.tns-sponsor-mention-disclosure{position:relative}.tns-sponsor-mention-disclosure .sponsor-disclosure{color:#a5a9b0;font-size:12px;line-height:1.2;margin-bottom:10px}.tns-sponsor-mention-disclosure .sponsor-disclosure a{color:#01aff4;text-decoration:none}.tns-sponsor-mention-disclosure .sponsor-disclosure a:hover{color:#ff3287}.tns-insight-portcos-disclosure{position:relative}@media (max-width:1023px){.tns-insight-portcos-disclosure{padding-bottom:30px}}.tns-insight-portcos-disclosure .content{max-width:870px;margin-left:auto;margin-right:auto}.tns-insight-portcos-disclosure .content .sponsor-disclosure{margin-bottom:7px}.tns-insight-portcos-disclosure .content .disclosure{color:#a5a9b0;font-size:12px;text-align:left;line-height:133%;margin-bottom:7px}.tns-insight-portcos-disclosure .content .disclosure:last-child{margin-bottom:0}#tns-popover{position:fixed;display:block;right:30px;bottom:90px;max-width:330px;background:#eef6fc;-webkit-box-shadow:5px 5px 10px rgba(30,35,41,0.21);box-shadow:5px 5px 10px rgba(30,35,41,0.21);z-index:1001}#tns-popover .close{position:absolute;top:5px;right:5px;z-index:2;cursor:pointer}#tns-popover .close svg{height:14px}#tns-popover .close svg path{fill:#8da6c0}#tns-popover .close:hover svg path{fill:#ff3287}#tns-popover .sponsor-popover-link .content{text-align:left;line-height:1.2;letter-spacing:0}#tns-popover .sponsor-popover-link .content .logo{display:block;max-height:33px;margin-bottom:10px}#tns-popover .sponsor-popover-link .content .copy-col{padding:15px;padding-top:10px;padding-right:40px;padding-bottom:10px}#tns-popover .sponsor-popover-link .content .headline{color:#0e1013;font-size:15px;font-weight:800}#tns-popover .sponsor-popover-link .content .copy{color:#0e1013;font-size:15px}#tns-popover .sponsor-popover-link:hover .headline{color:#ff3287}#tns-popover .sponsor-popover-link:hover .copy{color:#ff3287}#tns-sponsor .some-class-here{position:relative}#tns-sponsors{position:relative;padding-top:50px;padding-bottom:50px}@media (max-width:767px){#tns-sponsors{padding-top:30px}}#tns-sponsors .content-column{min-height:unset}#tns-sponsors .content-column >.row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-sponsors .content-column .col-75{padding-right:15px}@media (max-width:991.98px){#tns-sponsors .content-column .col-75{min-width:100%;max-width:100%;padding:0}}#tns-sponsors .content-column .col-25{padding-left:15px}@media (max-width:991.98px){#tns-sponsors .content-column .col-25{min-width:100%;max-width:100%;padding:0}}#tns-sponsors #tns-sponsors-grid .sponsors-grid-wrap{position:relative;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;margin:0 -14px}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card{width:calc(100% / 3);margin-bottom:40px;padding:0 14px}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-grid .sponsors-grid-card{width:calc(100% / 2);margin-bottom:30px}}@media (max-width:575.98px){#tns-sponsors #tns-sponsors-grid .sponsors-grid-card{width:100%}}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-logo{width:100%;aspect-ratio:1.86/1;background:#eaeff3;margin-bottom:15px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding:10px}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-logo{margin-bottom:10px}}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-logo .logo-img{aspect-ratio:1.86/1;object-fit:contain;max-width:70%}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content{width:100%}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-title{width:100%;font-size:26px;color:#3c3c3c;font-weight:normal;line-height:1.35;text-transform:capitalize;margin:0 0 15px 0;display:inline-block;text-decoration:none}@media (max-width:1024.98px){#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-title{font-size:22px}}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-title{margin-bottom:10px;font-size:20px}}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-title:hover{color:#01aff4}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-description{width:100%;color:#3c3c3c;font-size:16px;line-height:1.3;font-weight:normal}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-description{font-size:14px}}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-description p,#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-description a{width:100%;font-size:16px;color:#3c3c3c;font-weight:normal;line-height:1.3;margin-bottom:15px}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-description p,#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-description a{font-size:14px}}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-description a{color:#ff3287;margin-bottom:0;text-decoration:none}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-content .sponsors-grid-card-description a:hover{color:#01aff4;text-decoration:none}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-action{width:100%}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-action .anchor-link{font-size:16px;color:#ff3287;font-weight:bold;line-height:100%;display:inline-block;text-decoration:none;padding:8px 8px 8px 0}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-action .anchor-link{font-size:14px}}#tns-sponsors #tns-sponsors-grid .sponsors-grid-card .sponsors-grid-card-action .anchor-link:hover{color:#01aff4}#tns-sponsors #tns-sponsors-sponsorship-cta{position:relative;border-top:2px solid #ff3287;margin-top:60px;padding:40px 0 60px}@media (max-width:1024.98px){#tns-sponsors #tns-sponsors-sponsorship-cta{margin-top:40px;padding:30px 0 50px}}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-sponsorship-cta{margin-top:30px;padding:30px 0}}#tns-sponsors #tns-sponsors-sponsorship-cta .content{max-width:940px}#tns-sponsors #tns-sponsors-sponsorship-cta .subtitle{font-size:18px;color:#ff3287;font-weight:bold;text-align:center;line-height:1.3;width:100%;margin:0 auto 40px}@media (max-width:1023.98px){#tns-sponsors #tns-sponsors-sponsorship-cta .subtitle{margin-bottom:30px}}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-sponsorship-cta .subtitle{font-size:16px}}#tns-sponsors #tns-sponsors-sponsorship-cta .title{font-size:42px;color:#ff3287;font-weight:600;text-align:center;line-height:1.3;width:100%;margin:0 auto 50px}@media (max-width:1023.98px){#tns-sponsors #tns-sponsors-sponsorship-cta .title{font-size:36px;margin-bottom:35px}}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-sponsorship-cta .title{font-size:32px}}@media (max-width:575.98px){#tns-sponsors #tns-sponsors-sponsorship-cta .title{font-size:28px}}#tns-sponsors #tns-sponsors-sponsorship-cta .action{width:100%;text-align:center}#tns-sponsors #tns-sponsors-sponsorship-cta .action .link{font-size:18px;color:#ff3287;font-weight:bold;text-align:center;line-height:1.3;padding:8px 10px;text-decoration:none;letter-spacing:0}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-sponsorship-cta .action .link{font-size:16px}}#tns-sponsors #tns-sponsors-sponsorship-cta .action .link:hover{color:#01aff4}#tns-sponsors #tns-sponsors-sponsorship-cta .action .link:hover svg{fill:#01aff4}#tns-sponsors #tns-sponsors-sponsorship-cta .action .link svg{display:inline-block;height:12px;fill:#ff3287}#tns-sponsors #tns-sponsors-founding-sponsors{position:relative;padding-top:30px;border-top:1px solid #a5a9b0}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-founding-sponsors{padding-top:25px;padding-bottom:15px}}#tns-sponsors #tns-sponsors-founding-sponsors .cover-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-founding-sponsors .blocks{min-width:100%;max-width:100%}}#tns-sponsors #tns-sponsors-founding-sponsors .link-action{margin-top:15px;width:100%}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-founding-sponsors .link-action{margin-top:10px;text-align:center}}#tns-sponsors #tns-sponsors-founding-sponsors .link-action .anchored-link{display:inline-block;text-decoration:none;color:#ff3287;position:relative;font-size:16px;font-weight:bold;padding:8px 8px 8px 0}#tns-sponsors #tns-sponsors-founding-sponsors .link-action .anchored-link span{color:#3c3c3c;font-weight:normal}@media (max-width:1199.98px){#tns-sponsors #tns-sponsors-founding-sponsors .link-action .anchored-link{font-size:15px}}@media (max-width:1023.98px){#tns-sponsors #tns-sponsors-founding-sponsors .link-action .anchored-link{font-size:14px}}#tns-sponsors #tns-sponsors-founding-sponsors .link-action .anchored-link:hover{color:#01aff4}#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-content{position:relative}#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-content .title{font-size:24px;line-height:1.35;display:inline-block;width:100%;margin-bottom:10px}@media (max-width:1023.98px){#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-content .title{font-size:20px}}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-content .title{font-size:18px;text-align:center}}#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-logos{position:relative}#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-logos .sponsors-logos-list{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;list-style:none;margin:0;padding:0 0 0 20px;-webkit-box-pack:justify;-moz-box-pack:justify;-o-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-logos .sponsors-logos-list{padding-left:0}}#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 3 - 20px);width:100%;margin:0;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;min-height:45px;margin-bottom:45px}#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-logos .sponsors-logos-list .sponsor-logo .default-image,#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-logos .sponsors-logos-list .sponsor-logo img{max-height:45px}@media (max-width:1199.98px){#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-logos .sponsors-logos-list .sponsor-logo{margin-bottom:30px}}@media (max-width:1023.98px){#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 2 - 20px);width:100%}}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 3 - 20px);margin:25px 0}}@media (max-width:479.98px){#tns-sponsors #tns-sponsors-founding-sponsors #tns-sponsors-founding-sponsors-logos .sponsors-logos-list .sponsor-logo{max-width:calc(100% / 2 - 20px)}}#tns-sponsors #tns-sponsors-sidebar{border-top:2px solid #01aff4;padding-top:35px;position:sticky;top:30px}@media (max-width:991.98px){#tns-sponsors #tns-sponsors-sidebar{margin-top:30px}}#tns-sponsors #tns-sponsors-sidebar .subtitle{text-transform:uppercase;display:block;font-size:16px;letter-spacing:1.8px;font-weight:600;color:#01aff4;margin:0 0 30px;text-align:center}@media (max-width:1023.98px){#tns-sponsors #tns-sponsors-sidebar .subtitle{font-size:14px}}@media (max-width:767.98px){#tns-sponsors #tns-sponsors-sidebar .subtitle{margin:0 0 20px}}#tns-sponsors #tns-sponsors-sidebar .title{font-size:28px;color:#01aff4;font-weight:600;text-align:center;line-height:1.3;max-width:990px;width:100%;margin:0 auto 40px}@media (max-width:1023.98px){#tns-sponsors #tns-sponsors-sidebar .title{font-size:22px;margin:0 auto 25px}}#tns-sponsors #tns-sponsors-sidebar .action-button{width:100%;text-align:center}#tns-sponsors #tns-sponsors-sidebar .action-button .blue-button{display:inline-block;padding:12px 30px;background:#01aff4;border-radius:30px;color:#fff;font-size:16px;font-weight:bold;text-decoration:none;line-height:100%}#tns-sponsors #tns-sponsors-sidebar .action-button .blue-button:hover{background:#ff3287}#tns-sponsorship{position:relative;padding-top:50px;padding-bottom:50px}@media (max-width:767px){#tns-sponsorship{padding-top:30px;padding-bottom:30px}}#tns-sponsorship #tns-sponsorship-content{position:relative}#tns-sponsorship #tns-sponsorship-content .content-column{min-height:unset}#tns-sponsorship #tns-sponsorship-content .content-column .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}@media (max-width:991.98px){#tns-sponsorship #tns-sponsorship-content .content-column .row .col-25{max-width:100%;min-width:100%}}@media (max-width:991.98px){#tns-sponsorship #tns-sponsorship-content .content-column .row .col-50{max-width:100%;min-width:100%}}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-become-sponsor{position:relative}@media (min-width:992px){#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-become-sponsor{padding-right:20px}}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-become-sponsor .bas-main-title{font-size:36px;font-weight:normal;width:100%;line-height:1;color:#01aff4;margin-bottom:20px;letter-spacing:0}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-become-sponsor .bas-subtitle{font-size:20px;font-weight:normal;width:100%;line-height:1.35;color:#01aff4;margin-bottom:20px;letter-spacing:0}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form{position:relative}@media (min-width:992px){#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form{padding-right:15px;padding-left:15px}}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .main-title{width:100%;color:#3c3c3c;font-size:20px;line-height:1.33;letter-spacing:0;margin-bottom:15px}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .description{width:100%;color:#3c3c3c;font-size:15px;letter-spacing:0;line-height:1.45}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .description ul{margin-bottom:0}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form{width:100%;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form legend{font-size:22px;font-weight:normal;width:100%;line-height:1.35;color:#01aff4;padding:45px 0;margin:0;letter-spacing:0}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .form-row{width:100%;margin-bottom:30px;display:inline-block;vertical-align:middle}@media (max-width:767.98px){#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .form-row{margin-bottom:20px}}@media (min-width:768px){#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .form-row.half-width:not(.full-width){width:calc(100% / 2 - 15px)}}@media (min-width:768px){#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .form-row.half-width:not(.full-width):nth-child(even){margin-left:30px}}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .form-input{border:1px solid #01aff4;margin-bottom:0}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .form-textarea{border:1px solid #01aff4}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .form-checkbox{font-size:14px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;color:#3c3c3c;cursor:pointer}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .form-checkbox input[type="checkbox"],#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .form-checkbox input[type="radio"]{width:20px;height:20px;border:1px solid #01aff4;margin:3px 10px 0 0;cursor:pointer}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .form-checkbox span{font-size:14px;color:#3c3c3c;letter-spacing:.2px;font-weight:bold;width:calc(100% - 30px);display:inline-block}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .error{color:#ff3287;background:rgba(255,50,135,0.12);border:1px solid #ff3287}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .error::placeholder{color:#ff3287}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .sponsorship-submit-button{min-width:200px;color:#fff;text-transform:capitalize;background:#01aff4;border-radius:5px}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .sponsorship-submit-button:hover,#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .sponsorship-submit-button:focus{background:#ff3287}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-form .sponsorship-form fieldset .sponsorship-submit-button:disabled{background:#58a2bf}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar{position:relative}@media (min-width:992px){#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar{padding-left:20px}}@media (max-width:991.98px){#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar{margin-top:25px}}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;-webkit-box-align:start;-moz-box-align:start;-o-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .media-content{width:80px;margin-right:15px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;aspect-ratio:1/1;border-radius:40px;overflow:hidden}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .media-content .default-image{aspect-ratio:1/1;width:100%;object-fit:cover}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content{width:calc(100% - 95px)}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .title,#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .department,#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .designation,#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .description{font-size:12px;color:#3c3c3c;width:100%;line-height:1.3;font-weight:normal;letter-spacing:0}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .title,#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .description{font-weight:bold}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .social-share{width:100%;margin:5px 0;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:start;-moz-box-align:start;-o-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;-webkit-box-pack:start;-moz-box-pack:start;-o-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .social-share .link{width:30px;height:30px;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .social-share .link svg{width:19px}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .social-share .link svg.stroke{fill:none;stroke:#3c3c3c}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .social-share .link svg.fill{stroke:none;fill:#3c3c3c}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .social-share .link:hover .stroke{stroke:#01aff4}#tns-sponsorship #tns-sponsorship-content #tns-sponsorship-sidebar .content .detail-content .social-share .link:hover .fill{fill:#01aff4}#tns-sponsorship #tns-sponsorship-case-studies{position:relative;padding-top:40px;padding-bottom:0}#tns-sponsorship #tns-sponsorship-case-studies .tns-sponsorship-case-study-swiper{margin:0 -15px}#tns-sponsorship #tns-sponsorship-case-studies .tns-sponsorship-case-study-swiper .swiper-slide{padding:0 15px}#tns-sponsorship #tns-sponsorship-case-studies .content-column{min-height:unset}#tns-sponsorship #tns-sponsorship-case-studies .case-study-card{display:inline-block;width:100%;text-decoration:none}#tns-sponsorship #tns-sponsorship-case-studies .case-study-card:hover .case-study-cta{color:#ff3287}#tns-sponsorship #tns-sponsorship-case-studies .case-study-card:hover .case-study-cta svg{fill:#ff3287}#tns-sponsorship #tns-sponsorship-case-studies .case-study-heading{font-size:17px;font-weight:normal;line-height:1.35;text-transform:uppercase;width:100%;color:#01aff4;text-align:center;display:inline-block;letter-spacing:.5px;display:none}#tns-sponsorship #tns-sponsorship-case-studies .case-study-logo{position:relative;display:block;width:100%;height:150px;background:#eaeff3;margin-bottom:10px}#tns-sponsorship #tns-sponsorship-case-studies .case-study-logo img{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);max-width:75%}#tns-sponsorship #tns-sponsorship-case-studies .case-study-testimonial{width:100%;color:#3c3c3c;font-size:15px;line-height:1.33;text-align:left;padding-right:10px;margin-bottom:15px}#tns-sponsorship #tns-sponsorship-case-studies .case-study-testimonial-author,#tns-sponsorship #tns-sponsorship-case-studies .case-study-testimonial-organization{display:block;color:#0e1013;font-size:14px;text-align:left}#tns-sponsorship #tns-sponsorship-case-studies .case-study-testimonial-author{font-weight:600}#tns-sponsorship #tns-sponsorship-case-studies .case-study-testimonial-organization{margin-bottom:20px}#tns-sponsorship #tns-sponsorship-case-studies .case-study-cta{font-size:13px;color:#01aff4}#tns-sponsorship #tns-sponsorship-case-studies .case-study-cta svg{height:9px;fill:#01aff4;vertical-align:baseline}#tns-sponsorship #tns-sponsorship-disclaimer{position:relative}#tns-sponsorship #tns-sponsorship-disclaimer .content-column{min-height:unset;border-top:1px solid #a5a9b0}#tns-sponsorship #tns-sponsorship-disclaimer .content-column .description{font-size:9px;color:#3c3c3c;width:100%;display:inline-block;line-height:1.3;letter-spacing:0;padding-top:20px}#tns-sponsorship-case-study{position:relative;padding:70px 0 70px 0}@media (max-width:1023px){#tns-sponsorship-case-study{padding:50px 0 50px 0}}#tns-sponsorship-case-study .content-column{max-width:630px}#tns-sponsorship-case-study .content-column h1{margin-bottom:30px}#tns-sponsorship-case-study .content-column img{display:block;width:100%;height:auto}#tns-tag .some-class-here{position:relative}#tns-videos .some-class-here{position:relative}#tns-author{position:relative;padding-top:50px;padding-bottom:50px}@media (max-width:575.98px){#tns-author{padding-top:30px;padding-bottom:30px}}#tns-author #tns-author-profile{position:relative;padding-bottom:50px}@media (max-width:767.98px){#tns-author #tns-author-profile{padding-bottom:40px}}@media (max-width:575.98px){#tns-author #tns-author-profile{padding-bottom:10px}}#tns-author #tns-author-profile .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#tns-author #tns-author-profile .row .author-image-column{padding-right:15px}@media (max-width:767.98px){#tns-author #tns-author-profile .row .author-image-column{min-width:100%;max-width:100%;padding-right:0;margin-bottom:20px}}#tns-author #tns-author-profile .row .author-image-column .author-media .author-image{margin-bottom:30px}#tns-author #tns-author-profile .row .author-image-column .author-media .author-profile-image{display:block;width:100%;height:auto}#tns-author #tns-author-profile .row .author-bio-column{padding-left:15px;padding-right:15px}@media (max-width:767.98px){#tns-author #tns-author-profile .row .author-bio-column{padding-left:0;min-width:100%;max-width:100%}}#tns-author #tns-author-profile .row .author-bio-column.no-profile-photo{padding-left:0}#tns-author #tns-author-profile .row .author-bio-column .author-title{margin-top:-6px;width:100%;color:#3c3c3c;font-size:24px;line-height:1.33;text-transform:capitalize;margin-bottom:7px}@media (max-width:767px){#tns-author #tns-author-profile .row .author-bio-column .author-title{font-size:36px}}#tns-author #tns-author-profile .row .author-bio-column .author-description{width:100%}#tns-author #tns-author-profile .row .author-social-column{padding-top:30px;padding-left:15px}@media (max-width:767.98px){#tns-author #tns-author-profile .row .author-social-column{min-width:100%;max-width:100%;padding-top:0;padding-left:0;padding-bottom:30px}}#tns-author #tns-author-profile .row .author-social-column .social-share{display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:start;-moz-box-align:start;-o-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;-webkit-box-pack:start;-moz-box-pack:start;-o-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;width:100%}#tns-author #tns-author-profile .row .author-social-column .social-share .social-icon{display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;width:30px;height:30px;margin-right:5px}#tns-author #tns-author-profile .row .author-social-column .social-share .social-icon svg{width:19px;height:auto}#tns-author #tns-author-profile .row .author-social-column .social-share .social-icon svg.stroke{fill:none;stroke:#3c3c3c}#tns-author #tns-author-profile .row .author-social-column .social-share .social-icon svg.fill{stroke:none;fill:#3c3c3c}#tns-author #tns-author-profile .row .author-social-column .social-share .social-icon:hover .stroke{stroke:#01aff4}#tns-author #tns-author-profile .row .author-social-column .social-share .social-icon:hover .fill{fill:#01aff4}#tns-author #tns-author-profile .row .author-social-column .social-share .social-icon-twitter svg{margin-top:-1px;width:17px}#tns-author #tns-author-profile .row .author-social-column .social-share .social-icon-linkedin{margin-top:-1px}#tns-author #tns-author-profile .row .author-social-column .social-share .social-icon-linkedin svg{width:16px;height:auto}#tns-author #tns-author-stories{position:relative;padding-bottom:50px}#tns-author #tns-author-stories .content-column{min-height:unset;padding:0}#tns-author #tns-author-stories .content-column .author-stories-wrap{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;margin:0 -15px;padding:0 15px}#tns-author #tns-author-stories .content-column .story-wrap{width:calc(100% / 4);display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex}@media (max-width:991.98px){#tns-author #tns-author-stories .content-column .story-wrap{width:calc(100% / 2)}}@media (max-width:767.98px){#tns-author #tns-author-stories .content-column .story-wrap{border-bottom:1px solid #c2c2c2}#tns-author #tns-author-stories .content-column .story-wrap:last-child{border:none}}@media (max-width:575.98px){#tns-author #tns-author-stories .content-column .story-wrap{width:100%}}#tns-author #tns-author-stories .content-column .story-wrap .story-post-block{display:block;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;position:relative;-webkit-box-align:start;-moz-box-align:start;-o-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;padding:0 15px;margin:15px 0;cursor:pointer;width:100%}@media (max-width:767.98px){#tns-author #tns-author-stories .content-column .story-wrap .story-post-block{padding:0 10px}}@media (max-width:575.98px){#tns-author #tns-author-stories .content-column .story-wrap .story-post-block{padding:7px 0;margin:0}}#tns-author #tns-author-stories .content-column .story-wrap .story-post-block .content{text-decoration:none;position:relative;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;width:100%}#tns-author #tns-author-stories .content-column .story-wrap .story-post-block .content:hover .post-title{color:#01aff4;-webkit-transition:color 99ms;-moz-transition:color 99ms;-o-transition:color 99ms;-ms-transition:color 99ms;transition:color 99ms}#tns-author #tns-author-stories .content-column .story-wrap .story-post-block .block-media{display:inline-block;width:100%;aspect-ratio:1.86/1}@media (max-width:575.98px){#tns-author #tns-author-stories .content-column .story-wrap .story-post-block .block-media{width:76px;aspect-ratio:1/1}}#tns-author #tns-author-stories .content-column .story-wrap .story-post-block .block-media .thumbnail-image{display:block;width:100%;max-width:100%;aspect-ratio:1.86/1;object-fit:cover;object-position:top;margin-bottom:12px}@media (max-width:575.98px){#tns-author #tns-author-stories .content-column .story-wrap .story-post-block .block-media .thumbnail-image{width:100px;aspect-ratio:1/1}}#tns-author #tns-author-stories .content-column .story-wrap .story-post-block .block-content{width:100%}@media (max-width:575.98px){#tns-author #tns-author-stories .content-column .story-wrap .story-post-block .block-content{width:calc(100% - 76px);padding-left:12px}}#tns-author #tns-author-stories .content-column .story-wrap:nth-child(4n+1) .story-post-block{padding-left:0}@media (min-width:992px){#tns-author #tns-author-stories .content-column .story-wrap:nth-child(4n) .story-post-block{padding-right:0;border-right:0}}@media (max-width:991.98px){#tns-author #tns-author-stories .content-column .story-wrap:nth-child(2n) .story-post-block{padding-right:0;border-right:0}}#tns-author #tns-author-stories .load-more-stories-link{text-decoration:none}#tns-author #tns-author-stories .load-more-stories-link svg{width:12px;vertical-align:middle;fill:#ff3287}#tns-author #tns-author-stories .load-more-stories-link:hover svg{fill:#01aff4}@media (max-width:767.98px){#tns-author #tns-author-stories .load-more-stories-link{font-size:14px}}#tns-author #tns-author-pagination{position:relative;text-align:center}#tns-author #tns-author-pagination .navigation.pagination .screen-reader-text{display:none}#tns-sitemap{padding:50px 0 50px 0}#tns-sitemap .content-column{max-width:900px}#tns-sitemap .heading{font-size:36px;font-weight:900;margin-bottom:20px}#tns-sitemap .sitemap-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:50px}#tns-sitemap .sitemap-row .sitemap-section{padding-right:20px;margin-bottom:30px}#tns-sitemap .sitemap-row .sitemap-section a{display:block}#tns-sitemap #tns-sitemap-chrono{position:relative}#tns-sitemap #tns-sitemap-chrono .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}@media (max-width:767px){#tns-sitemap #tns-sitemap-chrono .col-25{min-width:100%;max-width:100%}}#tns-sitemap #tns-sitemap-month{position:relative}#tns-sitemap #tns-sitemap-topics{position:relative}#tns-sitemap #tns-sitemap-topics .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}@media (max-width:767px){#tns-sitemap #tns-sitemap-topics .col-33{min-width:100%;max-width:100%}}#tns-sitemap #tns-sitemap-index{position:relative}#tns-sitemap #tns-sitemap-index .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}@media (max-width:767px){#tns-sitemap #tns-sitemap-index .col-33{min-width:100%;max-width:100%}}.tns-psa{width:100%}.tns-psa .psa-block{position:relative;display:block;width:100%;max-width:1199px;min-height:60px;margin:0 auto 30px auto;padding:20px 20px 20px 20px;color:#515151;font-size:14px;line-height:1.33;background:#f6f8fa;border:1px solid #8da6c0;border:1px solid #c2cfdd;cursor:pointer}@media (max-width:767px){.tns-psa .psa-block{padding:20px 20px 20px 20px}}.tns-psa .psa-block:hover .psa-cta{color:#ff3287}.tns-psa .psa-block:hover .psa-cta svg{color:#ff3287}.tns-psa .psa-block:hover .psa-cta svg path{fill:#ff3287}.tns-psa .psa-block .icon-col{max-width:75px;min-width:75px;padding-right:15px}.tns-psa .psa-block .icon-col svg{width:100%;height:auto}.tns-psa .psa-block .copy-col{min-width:auto;max-width:auto}.tns-psa .psa-block .tns-psa-hide{position:absolute;top:5px;right:5px;cursor:pointer;z-index:2;opacity:.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";filter:alpha(opacity=50)}.tns-psa .psa-block .tns-psa-hide svg{height:10px}.tns-psa .psa-block .tns-psa-hide svg path{fill:#8da6c0}.tns-psa .psa-block .tns-psa-hide:hover{color:#ff3287}.tns-psa .psa-block .tns-psa-hide:hover svg path{fill:#ff3287}.tns-psa .psa-block .section-heading{padding-top:0;border-top:none;color:#8da6c0;margin-bottom:5px}.tns-psa .psa-block .psa-body{position:relative;max-width:350px;margin-bottom:10px}.tns-psa .psa-block .psa-cta{color:#515151;font-size:12px}.tns-psa .psa-block .psa-cta svg{margin-left:5px;color:#515151;height:8px;width:auto}.tns-psa .psa-block .psa-cta svg path{fill:#515151}#tns-post .tns-psa{margin-bottom:33px}#tns-key-concepts .content-column{margin-top:50px;margin-bottom:50px}@media (max-width:767px){#tns-key-concepts .content-column{margin-top:30px;margin-bottom:30px}}#tns-key-concepts #tns-key-concepts-heading{position:relative;margin-bottom:50px}@media (max-width:767px){#tns-key-concepts #tns-key-concepts-heading{margin-bottom:30px}}#tns-key-concepts #tns-key-concepts-heading .description{max-width:45%}#tns-key-concepts #tns-key-concepts-frame{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-nav{position:sticky;top:110px;padding-right:40px}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-nav .heading-text{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-nav .key-concepts-nav-option{display:block;color:#000}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-nav .key-concepts-nav-option:hover{color:#ff3287}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-nav .key-concepts-nav-option.active{color:#ff3287}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content{position:relative}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content .key-concepts-content-block{margin-bottom:40px}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content .key-concepts-story-card{margin-top:10px;padding-bottom:10px;border-bottom:1px solid #c2c2c2}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content .key-concepts-story-card:first-child{margin-top:0}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content .key-concepts-story-card:last-child{border-bottom:none}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content .key-concepts-story-card .col-thumb{min-width:100px;max-width:100px}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content .key-concepts-story-card .col-thumb .thumb{width:100px;height:50px;background:#f6f8fa}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content .key-concepts-story-card .col-headline .headline{padding-left:10px;font-size:16px;font-weight:500}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-trending-stories{position:relative}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-essential-reading{position:relative}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-essential-reading .key-concepts-essential-reading-link{display:block;padding-bottom:10px;margin-bottom:20px;border-bottom:1px solid #c2c2c2}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-essential-reading .key-concepts-essential-reading-link:last-child{border-bottom:none}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-essential-reading .key-concepts-essential-reading-link:hover .headline{color:#01aff4}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-essential-reading .key-concepts-essential-reading-link .col-thumb img{display:block;width:100%;height:auto}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-essential-reading .key-concepts-essential-reading-link .col-headline{color:#515151;padding-left:15px}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-essential-reading .key-concepts-essential-reading-link .col-headline .headline{padding:0;font-size:18px;line-height:1.33}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-essential-reading .key-concepts-essential-reading-link .col-headline .byline{color:#a5a9b0;font-size:12px;margin-top:-2px;margin-bottom:3px}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-essential-reading .key-concepts-essential-reading-link .col-headline .excerpt{color:#515151;font-size:14px;font-weight:600;line-height:1.27;opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-origins{position:relative}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-overview{position:relative}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-getting-started{position:relative}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-content #tns-key-concepts-frame-content-block-tutorials{position:relative}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar{position:sticky;top:110px;padding-left:40px}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-sponsor-logo{position:relative;margin-bottom:30px}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-sponsor-logo .sponsor-logo{display:block}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-sponsor-logo .sponsor-logo:hover .copy{color:#ff3287}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-sponsor-logo .sponsor-logo:hover .copy svg path{fill:#ff3287}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-sponsor-logo .sponsor-logo .logo-frame{width:100%;max-height:120px;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding:10px;background:#eaeff3;margin-bottom:10px}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-sponsor-logo .sponsor-logo .logo-frame .logo-img{aspect-ratio:1.86/1;object-fit:contain;max-width:80%;max-height:70%}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-sponsor-logo .sponsor-logo .copy{color:#515151;font-size:14px;line-height:1.33}@media (max-width:767px){#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-sponsor-logo .sponsor-logo .copy{font-size:17px}}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-sponsor-logo .sponsor-logo .copy svg{height:8px;vertical-align:baseline}@media (max-width:767px){#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-sponsor-logo .sponsor-logo .copy svg{height:10px}}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-sponsor-logo .sponsor-logo .copy svg path{fill:#515151}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-share{position:relative;margin-bottom:30px}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-share .section-heading{margin-bottom:10px}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-trending-stories{position:relative}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-trending-stories .stories a{color:#3c3c3c;font-size:14px;font-weight:600;line-height:1.27}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-trending-stories .stories a:hover{color:#01aff4}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-trending-stories .stories ol{margin-left:27px}#tns-key-concepts #tns-key-concepts-frame #tns-key-concepts-frame-sidebar #tns-key-concepts-frame-sidebar-trending-stories .stories ol li{color:#3c3c3c;font-size:14px;font-weight:600;line-height:1.27}#tns-search{display:block}#tns-search .content-column-search{max-width:900px}#tns-search .section-heading{border-top:0}#tns-search .search-item{display:block;margin-bottom:30px}#tns-search .search-item .search-item-title{font-size:17px;font-weight:600;color:#01aff4}#tns-search .search-item .search-item-excerpt{font-size:15px;font-weight:500;color:#3c3c3c}#tns-search .search-item .search-item-byline{font-size:14px;font-weight:500;color:#a5a9b0}#tns-search .search-item:hover .search-item-title{color:#ff3287}#tns-search #tns-search-form{display:block;border-bottom:1px solid #a5a9b0}#tns-search #tns-search-form .search-form{padding-top:30px}#tns-search #tns-search-form .search-form .search-input{display:block;width:100%;height:40px;color:#000;line-height:40px;padding-left:15px;font-size:17px;font-weight:500;border:1px solid #515151;border-right:none}#tns-search #tns-search-form .search-form .search-input:focus{border:1px solid #01aff4;border-right:none}#tns-search #tns-search-form .search-form .search-submit{height:40px;color:#000;font-size:15px;text-transform:uppercase;border-radius:0;border:1px solid #515151;background:transparent}#tns-search #tns-search-form .search-form .search-submit:hover{color:#ff3287}#tns-search #tns-search-overview{height:0;overflow:hidden;background:#f6f8fa}#tns-search #tns-search-overview .content-column-search{padding-top:30px;padding-bottom:40px}#tns-search #tns-search-overview .content-column-search .search-overview-loading-layout{display:none}#tns-search #tns-search-overview .content-column-search .search-overview-loading-layout .search-overview-loading{width:100%;text-align:center}#tns-search #tns-search-overview .content-column-search .search-overview-loading-layout .search-overview-loading .button-spinner{border:2px solid rgba(1,175,244,0.33);border-top:2px solid #01aff4}#tns-search #tns-search-overview .content-column-search .search-overview-loading-layout .search-overview-loading .stackie-loading{font-size:14px;font-weight:500;color:#a5a9b0}@media (max-width:600px){#tns-search #tns-search-overview .content-column-search .search-overview-layout{-webkit-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}}@media (max-width:600px){#tns-search #tns-search-overview .content-column-search .search-overview-layout .search-overview-answer-col{min-width:100%;max-width:100%}}#tns-search #tns-search-overview .content-column-search .search-overview-layout .search-overview-answer-col .search-overview{font-size:17px;font-weight:500;padding-right:30px;min-height:90px}@media (max-width:600px){#tns-search #tns-search-overview .content-column-search .search-overview-layout .search-overview-answer-col .search-overview p{font-size:16px;padding-right:0}}@media (max-width:600px){#tns-search #tns-search-overview .content-column-search .search-overview-layout .search-overview-references-col{min-width:100%;max-width:100%}}#tns-search #tns-search-overview .content-column-search .search-overview-layout .search-overview-references-col .section-heading-references{padding-top:0;font-size:12px;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}#tns-search #tns-search-overview .content-column-search .search-overview-layout .search-overview-references-col .search-overview-references .search-overview-reference-item{display:block;color:#01aff4;font-size:14px;font-weight:700;line-height:1.33;margin-bottom:20px}#tns-search #tns-search-overview .content-column-search .search-overview-layout .search-overview-references-col .search-overview-references .search-overview-reference-item:hover{color:#ff3287}#tns-search #tns-search-overview .search-overview-more{position:absolute;left:0;right:0;bottom:0;width:100%;height:50px;line-height:100%;text-align:center;background:#f6f8fa;background:-webkit-linear-gradient(270deg, rgba(246,248,250,0) 0%, #f6f8fa 100%);background:-moz-linear-gradient(270deg, rgba(246,248,250,0) 0%, #f6f8fa 100%);background:-o-linear-gradient(270deg, rgba(246,248,250,0) 0%, #f6f8fa 100%);background:-ms-linear-gradient(270deg, rgba(246,248,250,0) 0%, #f6f8fa 100%);background:linear-gradient(180deg, rgba(246,248,250,0) 0%, #f6f8fa 100%);z-index:2}#tns-search #tns-search-overview .search-overview-more .search-overview-show-more{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);padding-left:20px;padding-right:20px;height:30px;line-height:30px;border-radius:15px;color:#fff;font-size:12px;font-weight:700;background:#01aff4;cursor:pointer;display:none}#tns-search #tns-search-overview .search-overview-more .search-overview-show-more:hover{background:#ff3287}#tns-search .search-disclaimer{padding-top:30px;padding-bottom:30px;color:#a5a9b0;font-size:11px;font-weight:400;line-height:120%;background:#f6f8fa;display:none}#tns-search #tns-search-results{display:none;padding-top:30px;padding-bottom:100px}@media (max-width:600px){#tns-search #tns-search-results .search-results-layout{-webkit-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}}@media (max-width:600px){#tns-search #tns-search-results .search-results-layout .search-results-col{min-width:100%;max-width:100%}}@media (max-width:600px){#tns-search #tns-search-results .search-results-layout .search-sidebar-col{min-width:100%;max-width:100%}}#tns-search #tns-search-results .search-results-layout .search-results{padding-right:0}#tns-search #tns-search-results .search-results-layout .search-results .search-item{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}#tns-search #tns-search-results .search-results-layout .search-results .search-item .search-byline{color:#515151}#tns-search #tns-search-results .search-results-layout .search-results-more .search-results-more-button{display:none;font-size:14px;font-weight:500;text-transform:uppercase;background:#ff3287}#tns-search #tns-search-results .search-results-layout .search-results-more .search-results-more-button:hover{background:#01aff4}#tns-search #tns-search-results .search-results-layout .search-results-more .search-results-more-button:disabled{background:#58a2bf !important}#tns-search #tns-search-trending{display:block;margin-top:30px;padding-bottom:100px}#tns-search #tns-search-trending .search-trending{padding-right:30px}.tns-newsletter-shortcode{padding:34px 0 32px;border-top:3px solid #ff3287;border-bottom:3px solid #ff3287;margin:50px 0 0}.tns-newsletter-shortcode .title{width:100%;max-width:990px;color:#ff3287;font-size:46px;font-weight:600;text-align:center;line-height:1.33;margin:0 auto 50px}@media (max-width:599px){.tns-newsletter-shortcode .title{font-size:36px;max-width:400px;margin:0 auto 60px}}@media (max-width:499px){.tns-newsletter-shortcode .title{font-size:27px}}.tns-newsletter-shortcode .title span{text-transform:uppercase;display:block;font-size:18px;letter-spacing:1.8px;font-weight:600;margin:0 0 25px}@media (max-width:767.98px){.tns-newsletter-shortcode .title span{margin:0 0 20px}}#tns-events-sidebar .tns-newsletter-shortcode{margin-top:0;border-top:3px solid #01aff4;border-bottom:3px solid #01aff4}#tns-events-sidebar .tns-newsletter-shortcode .title{font-size:30px;margin-bottom:60px;color:#01aff4}#tns-events-sidebar .tns-newsletter-shortcode .title span{font-size:14px;color:#01aff4}#tns-events-sidebar .tns-newsletter-shortcode .newsletter-form{padding:0}#tns-events-sidebar .tns-newsletter-shortcode .newsletter-form .tns-newsletter-form-email{border-bottom-color:#01aff4}#tns-events-sidebar .tns-newsletter-shortcode .newsletter-form .tns-newsletter-form-submit{background:#01aff4}#tns-events-sidebar .tns-newsletter-shortcode .newsletter-form .tns-newsletter-form-submit:hover{background:#ff3287}.newsletter-form{position:relative;width:100%}.newsletter-form .newsletter-form-inputs{width:100%;max-width:450px;margin:0 auto 0 auto}.newsletter-form .newsletter-form-inputs .tns-newsletter-form-email{width:100%;font-size:16px;letter-spacing:0;text-transform:none}.newsletter-form .newsletter-form-inputs .tns-newsletter-form-submit{font-size:16px;letter-spacing:1px;margin:20px auto 20px}.newsletter-form .newsletter-form-privacy{display:block;max-width:450px;color:#a5a9b0;font-size:10px;font-weight:400;line-height:1.2;margin:20px auto 9px auto}.newsletter-form .tns-newsletter-form-email.error{color:#ff3287;background:rgba(255,50,135,0.12)}.newsletter-form .tns-newsletter-form-email.error::placeholder{color:#ff3287}#shortcode-tns-streaming{position:relative;min-height:350px}#shortcode-tns-streaming .content{padding:45px 0}#shortcode-tns-streaming .content-column{min-height:unset}#shortcode-tns-streaming #shortcode-tns-streaming-header{position:relative}#shortcode-tns-streaming #shortcode-tns-streaming-header .content-column{margin:0 auto}#shortcode-tns-streaming #shortcode-tns-streaming-header .streaming-title{color:#fff;font-size:18px;font-weight:600;padding-bottom:26px}@media (max-width:1279px){#shortcode-tns-streaming #shortcode-tns-streaming-header .streaming-title{margin:0}}#shortcode-tns-streaming #shortcode-tns-streaming-content{position:relative}@media (max-width:767.98px){#shortcode-tns-streaming #shortcode-tns-streaming-content .content-column{padding:0 30px}}#shortcode-tns-streaming #shortcode-tns-streaming-content .swiper-slide{height:auto}#shortcode-tns-streaming #shortcode-tns-streaming-content .swiper-slide:not(.swiper-slide-active,#shortcode-tns-streaming #shortcode-tns-streaming-content .swiper-slide .swiper-slide-duplicate.swiper-slide-duplicate-active):before{position:absolute;content:'';width:1px;height:100%;background:transparent;left:0;top:0}#shortcode-tns-streaming #shortcode-tns-streaming-content .swiper-slide.swiper-slide-duplicate.swiper-slide-duplicate-active:before{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card{position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;max-width:100%;min-width:100%;margin-left:auto;margin-right:auto;text-decoration:none}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card:hover{text-decoration:none}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card:hover .streaming-card-poster:before{border-color:#fff}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card-media{position:relative;width:100%;height:auto;display:inline-block;margin-bottom:20px}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card-media .live-badge{position:absolute;z-index:0;top:15px;right:12px;width:45px;height:45px;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;background:#fff;border-radius:50%;color:#ff3287;font-size:12px;font-weight:normal;text-transform:uppercase}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card-media .play-btn{position:absolute;top:50%;left:50%;width:40px;height:40px;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#fff;cursor:pointer;z-index:1;margin-top:-16px}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card-media .play-btn svg{width:100%;heigth:100%}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card-media .play-btn svg path{fill:#fff}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card-media .streaming-card-poster{width:100%;position:relative}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card-media .streaming-card-poster:before{position:absolute;content:'';left:0;top:0;width:calc(100% - 8px);height:calc(100% - 8px);border:4px solid transparent;z-index:1}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card-media .streaming-card-poster .thumbnail-image{width:100%;height:100%;aspect-ratio:16/9;object-fit:cover}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card-content{position:relative;width:100%;display:inline-block;vertical-align:middle}#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card-content .card-title{color:#fff;font-size:18px;line-height:1.33}@media (max-width:1199.98px){#shortcode-tns-streaming #shortcode-tns-streaming-content .streaming-card-content .card-title{font-size:16px}}#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-prev,#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-next{position:absolute;top:20%;color:#fff;right:-50px;cursor:pointer;z-index:2;width:30px;height:30px;text-align:left}#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-prev [class^="icon-"]:before,#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-next [class^="icon-"]:before,#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-prev [class*=" icon-"]:before,#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-next [class*=" icon-"]:before{margin:0}@media (max-width:1279px){#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-prev,#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-next{display:none}}#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-prev{right:auto;left:-60px;text-align:right}#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-prev path{fill:#fff}@media (max-width:1279px){#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-prev{left:0}}#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper-button-next path{fill:#fff}#shortcode-tns-streaming #shortcode-tns-streaming-content .swiper-pagination{bottom:0}#shortcode-tns-streaming #shortcode-tns-streaming-content .swiper-pagination span{background-color:#fff}#shortcode-tns-streaming #shortcode-tns-streaming-content .tns-streaming-swiper{padding-bottom:30px;width:100%}#shortcode-tns-events{position:relative;margin-top:40px;z-index:0}#shortcode-tns-events .content{padding:45px 0}#shortcode-tns-events .content-column{min-height:unset}#shortcode-tns-events #shortcode-tns-events-header{position:relative}#shortcode-tns-events #shortcode-tns-events-header .content-column{margin:0 auto}#shortcode-tns-events #shortcode-tns-events-header .events-title{color:#fff;font-size:18px;font-weight:600;padding-bottom:26px}#shortcode-tns-events #shortcode-tns-events-content{position:relative}#shortcode-tns-events #shortcode-tns-events-content .swiper-slide{height:auto}#shortcode-tns-events #shortcode-tns-events-content .swiper-slide:not(.swiper-slide-active):before{position:absolute;content:'';width:1px;height:100%;background:transparent;left:0;top:0}#shortcode-tns-events #shortcode-tns-events-content .swiper-slide.swiper-slide-next + .swiper-slide + .swiper-slide + .swiper-slide:before{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}#shortcode-tns-events #shortcode-tns-events-content .events-card{max-width:100%;min-width:100%;position:relative;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap;margin-left:auto;margin-right:auto;text-decoration:none}#shortcode-tns-events #shortcode-tns-events-content .events-card:hover{text-decoration:none}#shortcode-tns-events #shortcode-tns-events-content .events-card:hover .events-card-content .card-title{color:#fff}#shortcode-tns-events #shortcode-tns-events-content .events-card:hover .events-card-poster:before{border-color:#fff}#shortcode-tns-events #shortcode-tns-events-content .events-card-media{position:relative;width:100%;display:inline-block;vertical-align:middle;margin-bottom:12px}#shortcode-tns-events #shortcode-tns-events-content .events-card-media .live-badge{position:absolute;z-index:0;top:15px;right:12px;width:45px;height:45px;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;background:#fff;border-radius:50%;color:#ff3287;font-size:12px;font-weight:normal;text-transform:uppercase}#shortcode-tns-events #shortcode-tns-events-content .events-card-media .play-btn{position:absolute;z-index:2;font-size:35px;color:#fff;background:transparent;border:0;padding:0;margin:0;width:40px;height:40px;margin:auto;left:0;right:0;top:0;bottom:0;cursor:pointer}#shortcode-tns-events #shortcode-tns-events-content .events-card-media .events-card-poster{position:relative;width:100%}#shortcode-tns-events #shortcode-tns-events-content .events-card-media .events-card-poster:before{position:absolute;content:'';left:0;top:0;width:calc(100% - 8px);height:calc(100% - 8px);border:4px solid transparent;z-index:1}#shortcode-tns-events #shortcode-tns-events-content .events-card-media .events-card-poster .default-image,#shortcode-tns-events #shortcode-tns-events-content .events-card-media .events-card-poster img{aspect-ratio:1/1;width:100%;object-fit:cover;height:100%}#shortcode-tns-events #shortcode-tns-events-content .events-card-content{position:relative;width:100%;display:inline-block;vertical-align:middle;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-flow:wrap;-ms-flex-flow:wrap;flex-flow:wrap}#shortcode-tns-events #shortcode-tns-events-content .events-card-content .card-title{color:#fff;font-size:18px;line-height:1.33;-webkit-align-self:flex-end;align-self:flex-end;-ms-flex-item-align:end;margin-bottom:10px;width:100%}#shortcode-tns-events #shortcode-tns-events-content .events-card-content .event-meta{margin-bottom:10px;width:100%;line-height:80%}#shortcode-tns-events #shortcode-tns-events-content .events-card-content .event-meta .date,#shortcode-tns-events #shortcode-tns-events-content .events-card-content .event-meta .location{font-size:12px;color:#fff;font-weight:bold;text-transform:uppercase;width:100%;display:inline-block;line-height:1.35}#shortcode-tns-events #shortcode-tns-events-content .events-card-content .event-meta .location{font-weight:normal}#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-prev,#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-next{position:absolute;top:30%;font-size:30px;color:#fff;right:-60px;cursor:pointer;z-index:2;width:40px;height:32px;text-align:left}#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-prev [class^="icon-"]:before,#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-next [class^="icon-"]:before,#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-prev [class*=" icon-"]:before,#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-next [class*=" icon-"]:before{margin:0}@media (max-width:1279px){#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-prev,#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-next{display:none}}#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-prev{right:auto;left:-60px;text-align:right}#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-prev path{fill:#fff}@media (max-width:1279px){#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-prev{left:0}}#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper-button-next path{fill:#fff}#shortcode-tns-events #shortcode-tns-events-content .swiper-pagination-events{bottom:0}#shortcode-tns-events #shortcode-tns-events-content .swiper-pagination-events span{background-color:#fff}#shortcode-tns-events #shortcode-tns-events-content .tns-events-swiper{padding-bottom:30px;width:100%}.tns-related-stories{padding-bottom:20px}.tns-related-stories .related-story-link{display:block;color:#515151;font-size:14px;font-weight:600;line-height:1.27;text-decoration:none;margin-bottom:20px}.tns-related-stories .related-story-link:hover{color:#01aff4}@media (max-width:767px){.tns-related-stories .related-story-link{font-size:17px}}.tns-trending-stories-block{padding-bottom:20px}.tns-trending-stories-block ol{padding-left:0;margin-left:23px}.tns-trending-stories-block ol li:nth-child(1)::marker{color:#fe3488}.tns-trending-stories-block ol li:nth-child(2)::marker{color:#ed4492}.tns-trending-stories-block ol li:nth-child(3)::marker{color:#d558a1}.tns-trending-stories-block ol li:nth-child(4)::marker{color:#c165ad}.tns-trending-stories-block ol li:nth-child(5)::marker{color:#ad72b9}.tns-trending-stories-block ol .trending-story-link{display:block;color:#515151;font-size:14px;font-weight:600;line-height:1.27;text-decoration:none;margin-bottom:20px}.tns-trending-stories-block ol .trending-story-link:hover{color:#01aff4}@media (max-width:767px){.tns-trending-stories-block ol .trending-story-link{font-size:17px}}.tns-trending-stories-block.sidebar,.tns-trending-stories-block.bottom{position:relative}.tns-trending-stories-block.sidebar .section-heading,.tns-trending-stories-block.bottom .section-heading{font-size:13px}.tns-trending-stories-block.sidebar .tns-trending-stories-list li::marker,.tns-trending-stories-block.bottom .tns-trending-stories-list li::marker{font-size:14px}.tns-trending-stories-block.inline,.tns-trending-stories-block.category-popover{padding:30px;padding-right:75px;background:#f6f8fa;margin-bottom:20px}@media (max-width:1023px){.tns-trending-stories-block.inline,.tns-trending-stories-block.category-popover{padding-right:50px}}.tns-trending-stories-block.inline .section-heading,.tns-trending-stories-block.category-popover .section-heading{color:#8da6c0;font-size:13px;font-weight:700;margin-bottom:20px;border:0}.tns-trending-stories-block.inline .tns-trending-stories-list,.tns-trending-stories-block.category-popover .tns-trending-stories-list{padding-bottom:0}.tns-trending-stories-block.inline .tns-trending-stories-list ol,.tns-trending-stories-block.category-popover .tns-trending-stories-list ol{margin-bottom:10px}.tns-trending-stories-block.inline .tns-trending-stories-list li::marker,.tns-trending-stories-block.category-popover .tns-trending-stories-list li::marker{color:#b4c5d6;font-size:15px}@media (max-width:767px){.tns-trending-stories-block.inline .tns-trending-stories-list li::marker,.tns-trending-stories-block.category-popover .tns-trending-stories-list li::marker{font-size:17px}}.tns-trending-stories-block.inline .tns-trending-stories-list li:nth-child(1)::marker,.tns-trending-stories-block.category-popover .tns-trending-stories-list li:nth-child(1)::marker{color:#fe3488}.tns-trending-stories-block.inline .tns-trending-stories-list li:nth-child(2)::marker,.tns-trending-stories-block.category-popover .tns-trending-stories-list li:nth-child(2)::marker{color:#ed4492}.tns-trending-stories-block.inline .tns-trending-stories-list li:nth-child(3)::marker,.tns-trending-stories-block.category-popover .tns-trending-stories-list li:nth-child(3)::marker{color:#d558a1}.tns-trending-stories-block.inline .tns-trending-stories-list li:nth-child(4)::marker,.tns-trending-stories-block.category-popover .tns-trending-stories-list li:nth-child(4)::marker{color:#c165ad}.tns-trending-stories-block.inline .tns-trending-stories-list li:nth-child(5)::marker,.tns-trending-stories-block.category-popover .tns-trending-stories-list li:nth-child(5)::marker{color:#ad72b9}.tns-trending-stories-block.inline .tns-trending-stories-list li a,.tns-trending-stories-block.category-popover .tns-trending-stories-list li a{color:#019ddb;font-size:15px;line-height:1.2;margin-bottom:15px}.tns-trending-stories-block.inline .tns-trending-stories-list li a:hover,.tns-trending-stories-block.category-popover .tns-trending-stories-list li a:hover{color:#ff3287}@media (max-width:767px){.tns-trending-stories-block.inline .tns-trending-stories-list li a,.tns-trending-stories-block.category-popover .tns-trending-stories-list li a{font-size:17px}}.tns-trending-stories-block.inline .tns-trending-stories-list li:last-child,.tns-trending-stories-block.category-popover .tns-trending-stories-list li:last-child{margin-bottom:0}.tns-trending-stories-block.inline .tns-trending-stories-list li:last-child a,.tns-trending-stories-block.category-popover .tns-trending-stories-list li:last-child a{margin-bottom:0}.tns-trending-stories-by-category{position:relative;width:100%;min-height:300px;padding:30px;padding-left:0;padding-right:0}.tns-trending-stories-by-category .heading{color:#3c3c3c;font-size:13px;font-weight:700;margin-bottom:20px}.tns-trending-stories-by-category .categories{padding-right:20px;overflow-y:hidden;overflow-x:auto}.tns-trending-stories-by-category .categories .category-stories{padding-right:20px}@media (max-width:767px){.tns-trending-stories-by-category .categories .category-stories{min-width:275px;max-width:275px}}.tns-trending-stories-by-category .categories .category-stories .tns-trending-stories-block .section-heading{border:0;color:#8da6c0;font-size:13px;font-weight:700}.tns-trending-stories-by-category .categories .category-stories .tns-trending-stories-list{padding-bottom:0}.tns-trending-stories-by-category .categories .category-stories .tns-trending-stories-list ol{margin-bottom:10px}.tns-trending-stories-by-category .categories .category-stories .tns-trending-stories-list li::marker{color:#b4c5d6;font-size:15px}@media (max-width:767px){.tns-trending-stories-by-category .categories .category-stories .tns-trending-stories-list li::marker{font-size:17px}}.tns-trending-stories-by-category .categories .category-stories .tns-trending-stories-list li a{color:#019ddb;font-size:15px;line-height:1.2;margin-bottom:15px}.tns-trending-stories-by-category .categories .category-stories .tns-trending-stories-list li a:hover{color:#ff3287}@media (max-width:767px){.tns-trending-stories-by-category .categories .category-stories .tns-trending-stories-list li a{font-size:17px}}.tns-trending-stories-by-category .categories .category-stories .tns-trending-stories-list li:last-child{margin-bottom:0}.tns-trending-stories-by-category .categories .category-stories .tns-trending-stories-list li:last-child a{margin-bottom:0}.tns-podcast-subscribe{margin-top:60px;margin-bottom:60px}@media (max-width:767px){.tns-podcast-subscribe{margin-top:30px;margin-bottom:30px}}.tns-podcast-subscribe .subscribe-title{font-size:17px;font-weight:500;text-align:center;margin-bottom:20px}@media (max-width:767px){.tns-podcast-subscribe .subscribe-title{font-size:16px}}@media (max-width:614px){.tns-podcast-subscribe .subscribe-title{font-size:15px}}@media (max-width:539px){.tns-podcast-subscribe .subscribe-title{font-size:13px}}.tns-podcast-subscribe .subscribe-links{width:100%;text-align:center;vertical-align:middle}.tns-podcast-subscribe .subscribe-links a{display:inline-block;margin-left:20px;margin-right:20px}@media (max-width:767px){.tns-podcast-subscribe .subscribe-links a{margin-left:15px;margin-right:15px}}@media (max-width:539px){.tns-podcast-subscribe .subscribe-links a{margin-left:10px;margin-right:10px}}.tns-podcast-subscribe .subscribe-links a img{max-height:30px}@media (max-width:767px){.tns-podcast-subscribe .subscribe-links a img{max-height:25px}}@media (max-width:539px){.tns-podcast-subscribe .subscribe-links a img{max-height:22px}}@media (max-width:399px){.tns-podcast-subscribe .subscribe-links a img{max-height:20px}}@media (max-width:599px){.tns-podcast-subscribe .subscribe-links .subscribe-link-simplecast{display:none}}.key-concept-block{position:relative}.key-concept-block .title{font-size:14px;font-weight:700;margin-bottom:10px;text-transform:uppercase}.key-concept-block a{display:block;color:#3c3c3c;font-size:15px;text-decoration:none;margin-bottom:16px}.key-concept-block a:hover{color:#01aff4}.tns-sponsor-note{display:none}.tns-sponsor-note.injected{display:block}.tns-sponsor-note{position:relative;padding:20px;padding-top:30px;padding-left:30px;padding-right:30px;margin-top:35px;margin-bottom:30px;background:#f6f8fa}@media (max-width:499px){.tns-sponsor-note{padding:30px}}.tns-sponsor-note .sponsor-note-content-wrapper{padding-right:12%}@media (max-width:767px){.tns-sponsor-note .sponsor-note-content-wrapper{font-size:15px}}.tns-sponsor-note .sponsor-note-content-wrapper svg{height:8px;vertical-align:baseline}@media (max-width:767px){.tns-sponsor-note .sponsor-note-content-wrapper svg{height:10px}}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile{position:relative;cursor:pointer}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile .section-heading{font-size:13px}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile .sponsor-note-logo{margin-bottom:20px}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile .sponsor-note-logo a{display:block}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile .sponsor-note-logo img{display:inline-block;width:auto;height:auto;max-height:35px;max-width:100%}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile .sponsor-note-content,.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile .sponsor-note-cta{color:#515151;font-size:14px;line-height:1.33}@media (max-width:767px){.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile .sponsor-note-content,.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile .sponsor-note-cta{font-size:17px}}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile .sponsor-note-content{margin-bottom:10px}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile .sponsor-note-cta{font-size:12px}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile:hover .sponsor-note-cta{color:#ff3287}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-profile:hover .sponsor-note-cta svg path{fill:#ff3287}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-rss{position:relative;margin-top:30px}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-rss .sponsor-note-rss-heading{color:#515151;font-size:11px;font-weight:700;margin-bottom:7px;text-transform:uppercase}@media (max-width:767px){.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-rss .sponsor-note-rss-heading{font-size:12px}}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-rss .sponsor-note-rss-items{position:relative}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-rss .sponsor-note-rss-items .sponsor-rss-link{display:block;color:#019ddb !important;font-size:14px;font-weight:600;line-height:1.33;margin-bottom:12px}@media (max-width:767px){.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-rss .sponsor-note-rss-items .sponsor-rss-link{font-size:17px}}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-rss .sponsor-note-rss-items .sponsor-rss-link:hover{color:#ff3287 !important}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-rss .sponsor-note-rss-items .sponsors-rss-byline{color:#a5a9b0;font-size:11px}@media (max-width:767px){.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-rss .sponsor-note-rss-items .sponsors-rss-byline{font-size:12px}}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-custom-links{position:relative;margin-top:30px}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-custom-links .sponsor-note-custom-links-heading{color:#515151;font-size:11px;font-weight:700;margin-bottom:7px;text-transform:uppercase}@media (max-width:767px){.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-custom-links .sponsor-note-custom-links-heading{font-size:12px}}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-custom-links .sponsor-note-custom-links-items{position:relative}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-custom-links .sponsor-custom-link{display:block;color:#019ddb !important;font-size:14px;font-weight:600;line-height:1.33;margin-bottom:12px}@media (max-width:767px){.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-custom-links .sponsor-custom-link{font-size:17px}}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-custom-links .sponsor-custom-link:hover{color:#ff3287 !important}.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-custom-links .sponsor-custom-byline{color:#a5a9b0;font-size:11px}@media (max-width:767px){.tns-sponsor-note .sponsor-note-content-wrapper .sponsor-note-custom-links .sponsor-custom-byline{font-size:12px}}.tns-sponsor-note .sponsor-note-lead-form{position:relative;margin-top:30px;padding:20px;background:#05aef4;background:-webkit-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:-moz-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:-o-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:-ms-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:linear-gradient(145deg, #05aef4 0%, #4bc8fa 100%);border-radius:3px}.tns-sponsor-note .sponsor-note-lead-form .sponsor-note-lead-form-text{color:#fff;font-size:11px;font-weight:700;margin-bottom:7px;text-transform:uppercase;text-align:left}@media (max-width:767px){.tns-sponsor-note .sponsor-note-lead-form .sponsor-note-lead-form-text{font-size:12px}}.tns-sponsor-note .sponsor-note-lead-form-input-wrapper{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:0;height:90px}.tns-sponsor-note .sponsor-note-lead-form-input-wrapper .sponsor-note-lead-form-input{width:100%;padding:12px 15px;margin:0;margin-bottom:10px;border:none;border-radius:1px;font-size:15px;font-weight:500;background:rgba(255,255,255,0.33);border:1px solid rgba(255,255,255,0.5);color:#fff;outline:none}.tns-sponsor-note .sponsor-note-lead-form-input-wrapper .sponsor-note-lead-form-input:focus{border:1px solid #fff}.tns-sponsor-note .sponsor-note-lead-form-input-wrapper .sponsor-note-lead-form-input::placeholder{color:#fff}.tns-sponsor-note .sponsor-note-lead-form-input-wrapper .sponsor-note-lead-form-submit{width:100%;padding:12px 20px;margin:0;background:rgba(255,255,255,0.2);border:none;border-radius:5px;color:#fff;font-size:14px;font-weight:600;cursor:pointer;-webkit-transition:all 0.3s ease;-moz-transition:all 0.3s ease;-o-transition:all 0.3s ease;-ms-transition:all 0.3s ease;transition:all 0.3s ease;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}@media (max-width:767px){.tns-sponsor-note .sponsor-note-lead-form-input-wrapper .sponsor-note-lead-form-submit{font-size:17px}}.tns-sponsor-note .sponsor-note-lead-form-input-wrapper .sponsor-note-lead-form-submit:hover{background:rgba(255,255,255,0.33)}.tns-sponsor-note .sponsor-note-lead-form-status{display:none;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);height:90px;font-size:16px;color:#fff}.tns-contributor-note{display:none}.tns-contributor-note.injected{display:block}.tns-contributor-note{position:relative;padding:20px;padding-top:30px;padding-left:30px;padding-right:30px;margin-top:35px;margin-bottom:30px;background:#f6f8fa}@media (max-width:499px){.tns-contributor-note{padding:30px}}.tns-contributor-note .contributor-note-content-wrapper{padding-right:12%}@media (max-width:767px){.tns-contributor-note .contributor-note-content-wrapper{font-size:15px}}.tns-contributor-note .contributor-note-content-wrapper svg{height:8px;vertical-align:baseline}@media (max-width:767px){.tns-contributor-note .contributor-note-content-wrapper svg{height:10px}}.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile{position:relative;cursor:pointer}.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile .contributor-note-logo{margin-bottom:20px}.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile .contributor-note-logo a{display:block}.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile .contributor-note-logo img{display:inline-block;width:auto;height:35px;max-height:35px}.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile .contributor-note-content,.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile .contributor-note-cta{color:#515151;font-size:14px;line-height:1.33}@media (max-width:767px){.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile .contributor-note-content,.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile .contributor-note-cta{font-size:17px}}.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile .contributor-note-content{margin-bottom:10px}.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile .contributor-note-cta{font-size:12px}.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile:hover .contributor-note-cta{color:#ff3287}.tns-contributor-note .contributor-note-content-wrapper .contributor-note-profile:hover .contributor-note-cta svg path{fill:#ff3287}.tns-contributor-note.no-content .contributor-note-logo{margin-bottom:0}.tns-contributor-note.no-content .contributor-note-lead-form{margin-top:10px}.tns-contributor-note.no-content:not(:has(.contributor-note-content-wrapper)){padding-top:20px}.tns-contributor-note.no-content:not(:has(.contributor-note-content-wrapper)) .contributor-note-lead-form{margin-top:0}.tns-contributor-note .contributor-note-lead-form{position:relative;margin-top:30px;padding:20px;background:#05aef4;background:-webkit-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:-moz-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:-o-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:-ms-linear-gradient(305deg, #05aef4 0%, #4bc8fa 100%);background:linear-gradient(145deg, #05aef4 0%, #4bc8fa 100%);border-radius:3px}.tns-contributor-note .contributor-note-lead-form .contributor-note-lead-form-text{color:#fff;font-size:11px;font-weight:700;margin-bottom:7px;text-transform:uppercase;text-align:left}@media (max-width:767px){.tns-contributor-note .contributor-note-lead-form .contributor-note-lead-form-text{font-size:12px}}.tns-contributor-note .contributor-note-lead-form-input-wrapper{display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-orient:vertical;-moz-box-orient:vertical;-o-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:0;height:90px}.tns-contributor-note .contributor-note-lead-form-input-wrapper .contributor-note-lead-form-input{width:100%;padding:12px 15px;margin:0;margin-bottom:10px;border:none;border-radius:1px;font-size:15px;font-weight:500;background:rgba(255,255,255,0.33);border:1px solid rgba(255,255,255,0.5);color:#fff;outline:none}.tns-contributor-note .contributor-note-lead-form-input-wrapper .contributor-note-lead-form-input:focus{border:1px solid #fff}.tns-contributor-note .contributor-note-lead-form-input-wrapper .contributor-note-lead-form-input::placeholder{color:#fff}.tns-contributor-note .contributor-note-lead-form-input-wrapper .contributor-note-lead-form-submit{width:100%;padding:12px 20px;margin:0;background:rgba(255,255,255,0.2);border:none;border-radius:5px;color:#fff;font-size:14px;font-weight:600;cursor:pointer;-webkit-transition:all 0.3s ease;-moz-transition:all 0.3s ease;-o-transition:all 0.3s ease;-ms-transition:all 0.3s ease;transition:all 0.3s ease;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}@media (max-width:767px){.tns-contributor-note .contributor-note-lead-form-input-wrapper .contributor-note-lead-form-submit{font-size:17px}}.tns-contributor-note .contributor-note-lead-form-input-wrapper .contributor-note-lead-form-submit:hover{background:rgba(255,255,255,0.33)}.tns-contributor-note .contributor-note-lead-form-status{display:none;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);height:90px;font-size:16px;color:#fff}.tns-sponsors-rss{position:relative;padding:30px;padding-right:0;padding-bottom:40px;margin-top:35px;margin-bottom:60px;background:#f6f8fa}.tns-sponsors-rss .tns-sponsors-rss-block{max-width:800px;margin:0 auto 0 auto}.tns-sponsors-rss .section-heading{color:#8da6c0;font-size:13px;font-weight:700;margin-bottom:40px;border-top:none}.tns-sponsors-rss .sponsors-rss-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}@media (max-width:767.98px){.tns-sponsors-rss .sponsors-rss-column{min-width:100%;max-width:100%;padding-right:25%;margin-bottom:40px}.tns-sponsors-rss .sponsors-rss-column:last-child{margin-bottom:0}}@media (max-width:399.98px){.tns-sponsors-rss .sponsors-rss-column{padding-right:10%}}.tns-sponsors-rss .sponsors-rss-block-logo{display:block;height:33px;width:auto;max-width:125px;margin-bottom:20px}@media (max-width:767.98px){.tns-sponsors-rss .sponsors-rss-block-logo{margin-bottom:15px}}.tns-sponsors-rss .sponsors-rss-block-single-row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}@media (max-width:767px){.tns-sponsors-rss .sponsors-rss-block-single-row .sponsors-rss-block-single-col{min-width:100%;max-width:100%;padding-right:25%}}@media (max-width:599px){.tns-sponsors-rss .sponsors-rss-block-single-row .sponsors-rss-block-single-col{padding-right:10%}}@media (max-width:767px){.tns-sponsors-rss .sponsors-rss-block-single-row .sponsors-rss-block-single-col:first-child{margin-bottom:40px}}.tns-sponsors-rss .sponsors-rss-block-single-profile p{position:relative;color:#515151;font-size:15px;line-height:1.33;padding-right:30px}@media (max-width:767px){.tns-sponsors-rss .sponsors-rss-block-single-profile p{font-size:17px}}.tns-sponsors-rss .sponsors-rss-block-profile-cta{color:#515151;font-size:13px}@media (max-width:767px){.tns-sponsors-rss .sponsors-rss-block-profile-cta{font-size:15px}}.tns-sponsors-rss .sponsors-rss-block-profile-cta svg{height:10px;fill:#515151}.tns-sponsors-rss .sponsors-rss-block-profile-cta:hover{color:#ff3287}.tns-sponsors-rss .sponsors-rss-block-profile-cta:hover svg{fill:#ff3287}.tns-sponsors-rss .sponsors-rss-block-profile-link{display:block}.tns-sponsors-rss .sponsors-rss-block-profile-link:hover .sponsors-rss-block-profile-cta{color:#ff3287}.tns-sponsors-rss .sponsors-rss-block-profile-link:hover .sponsors-rss-block-profile-cta svg{fill:#ff3287}.tns-sponsors-rss .sponsors-rss-items{margin-bottom:40px;padding-right:30px}@media (max-width:767px){.tns-sponsors-rss .sponsors-rss-items{padding-right:10%}}.tns-sponsors-rss .sponsors-rss-items:last-child{margin-bottom:0}.tns-sponsors-rss .sponsors-rss-link{display:block;color:#019ddb !important;font-size:14px;line-height:1.45;font-weight:600;text-decoration:none;margin-bottom:20px}@media (max-width:767px){.tns-sponsors-rss .sponsors-rss-link{font-size:18px;margin-bottom:20px}}.tns-sponsors-rss .sponsors-rss-link:last-child{margin-bottom:0}.tns-sponsors-rss .sponsors-rss-link .sponsors-rss-byline{color:#a5a9b0;font-size:12px}.tns-sponsors-rss .sponsors-rss-link:hover{color:#ff3287 !important}.tns-share{position:relative}.tns-share .share-media{position:relative}.tns-share .share-media .share-media-icon{width:30px;height:30px;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin-right:4px}.tns-share .share-media .share-media-icon svg{height:19px}.tns-share .share-media .share-media-icon-twitter .fill path{fill:#1c9bf0}.tns-share .share-media .share-media-icon-twitter .stroke path{stroke:#1c9bf0}.tns-share .share-media .share-media-icon-twitter:hover{opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}.tns-share .share-media .share-media-icon-hackernews .fill path{fill:#fe6600}.tns-share .share-media .share-media-icon-hackernews .stroke path{stroke:#fe6600}.tns-share .share-media .share-media-icon-hackernews:hover{opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}.tns-share .share-media .share-media-icon-linkedin .fill path{fill:#0a66c2}.tns-share .share-media .share-media-icon-linkedin .stroke path{stroke:#0a66c2}.tns-share .share-media .share-media-icon-linkedin:hover{opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}.tns-share .share-media .share-media-icon-reddit .fill path{fill:#ff4500}.tns-share .share-media .share-media-icon-reddit .stroke path{stroke:#ff4500}.tns-share .share-media .share-media-icon-reddit:hover{opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}.tns-share .share-media .share-media-icon-facebook .fill path{fill:#3c5998}.tns-share .share-media .share-media-icon-facebook .stroke path{stroke:#3c5998}.tns-share .share-media .share-media-icon-facebook:hover{opacity:.75;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";filter:alpha(opacity=75)}.tns-promo-daily{display:relative;margin-top:30px}@media (max-width:767px){.tns-promo-daily .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.tns-promo-daily .row .col{min-width:100%;max-width:100%}}.tns-promo-daily .banner{padding:30px;width:100%;color:#fff;background:#01aff4;background:-webkit-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:-moz-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:-o-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:-ms-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:linear-gradient(145deg, #01aff4 0%, #ff3287 100%)}.tns-promo-daily .banner .heading{font-size:12px;font-weight:700}.tns-promo-daily .banner .title{font-size:46px;font-weight:800;line-height:.9}@media (max-width:767px){.tns-promo-daily .banner .title{margin-bottom:10px}}.tns-promo-daily .banner .copy{font-size:15px}@media (max-width:767px){.tns-promo-daily .banner .copy{margin-bottom:10px}}.tns-promo-daily .banner .subscribe-col{padding-left:30px}@media (max-width:767px){.tns-promo-daily .banner .subscribe-col{padding-left:0}}.tns-promo-daily .banner .subscribe-col .tns-promo-daily-email-input{margin-top:3px;color:#fff;border:1px solid rgba(255,255,255,0.63);margin-bottom:10px;-webkit-transition:all 99ms;-moz-transition:all 99ms;-o-transition:all 99ms;-ms-transition:all 99ms;transition:all 99ms}.tns-promo-daily .banner .subscribe-col .tns-promo-daily-email-input::placeholder{font-size:16px;color:#fff;opacity:.63;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=63)";filter:alpha(opacity=63)}.tns-promo-daily .banner .subscribe-col .tns-promo-daily-email-input:hover{border:1px solid #fff}.tns-promo-daily .banner .subscribe-col .tns-promo-daily-email-input:focus{border:1px solid #fff}.tns-promo-daily .banner .subscribe-col .tns-promo-daily-subscribe-button{color:#fff;background:rgba(255,255,255,0.33);-webkit-transition:all 99ms;-moz-transition:all 99ms;-o-transition:all 99ms;-ms-transition:all 99ms;transition:all 99ms}.tns-promo-daily .banner .subscribe-col .tns-promo-daily-subscribe-button:hover{color:#ff3287;background:#fff}#tns-post .tns-promo-daily{margin-bottom:30px}#tns-promo-voxpop{display:relative;margin-top:30px;overflow:hidden}@media (max-width:767px){#tns-promo-voxpop .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}#tns-promo-voxpop .row .col{min-width:100%;max-width:100%}}#tns-promo-voxpop .banner{width:100%;color:#fff;background:#01aff4;background:-webkit-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:-moz-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:-o-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:-ms-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:linear-gradient(145deg, #01aff4 0%, #ff3287 100%)}#tns-promo-voxpop .banner .col-title{padding:30px}@media (max-width:767px){#tns-promo-voxpop .banner .col-title{padding:20px;padding-bottom:0}}#tns-promo-voxpop .banner .col-title .heading{font-size:14px;font-weight:700;letter-spacing:-1}#tns-promo-voxpop .banner .col-title .title{font-size:14px;font-weight:800}#tns-promo-voxpop .banner .col-title .brief{font-size:12px;line-height:1.2;opacity:.63;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=63)";filter:alpha(opacity=63);padding-right:10px}@media (max-width:767px){#tns-promo-voxpop .banner .col-title .brief{font-size:15px;padding-right:30px}}#tns-promo-voxpop .banner .col-copy{position:relative;font-size:15px;min-height:200px;overflow:hidden}@media (max-width:767px){#tns-promo-voxpop .banner .col-copy{margin-bottom:10px;min-height:220px}}#tns-promo-voxpop .banner .col-copy .vp-fade{position:absolute;left:10px;right:10px;bottom:0;height:50px;background:#808080;background:#fff;background:-webkit-linear-gradient(90deg, rgba(255,255,255,0.8) 0%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(90deg, rgba(255,255,255,0.8) 0%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(90deg, rgba(255,255,255,0.8) 0%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(90deg, rgba(255,255,255,0.8) 0%, rgba(255,255,255,0) 100%);background:linear-gradient(0deg, rgba(255,255,255,0.8) 0%, rgba(255,255,255,0) 100%);z-index:2}@media (max-width:767px){#tns-promo-voxpop .banner .col-copy .vp-fade{left:20px;right:20px}}#tns-promo-voxpop .banner .col-copy .vp-graphic{position:absolute;top:20px;left:10px;right:10px;bottom:0;padding:20px;border-radius:5px 5px 0 0;background:#fff;background:rgba(255,255,255,0.93);background:#fff;background:-webkit-linear-gradient(270deg, #fff 73%, rgba(255,255,255,0.512) 100%);background:-moz-linear-gradient(270deg, #fff 73%, rgba(255,255,255,0.512) 100%);background:-o-linear-gradient(270deg, #fff 73%, rgba(255,255,255,0.512) 100%);background:-ms-linear-gradient(270deg, #fff 73%, rgba(255,255,255,0.512) 100%);background:linear-gradient(180deg, #fff 73%, rgba(255,255,255,0.512) 100%);-webkit-box-shadow:0 0 10px rgba(0,0,0,0.21);box-shadow:0 0 10px rgba(0,0,0,0.21);overflow:hidden}@media (max-width:767px){#tns-promo-voxpop .banner .col-copy .vp-graphic{left:20px;right:20px}}#tns-promo-voxpop .banner .col-copy .vp-graphic .question{color:#0e1013;font-size:16px;font-weight:600;line-height:1.18;margin-bottom:12px}@media (max-width:767px){#tns-promo-voxpop .banner .col-copy .vp-graphic .question{font-size:15px}}#tns-promo-voxpop .banner .col-copy .vp-graphic .context{color:#a5a9b0;font-weight:400;padding-right:50px;opacity:.81;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=81)";filter:alpha(opacity=81);display:none}@media (max-width:767px){#tns-promo-voxpop .banner .col-copy .vp-graphic .context{font-size:14px;margin-bottom:20px;padding-right:0}}#tns-promo-voxpop .banner .col-copy .vp-graphic .answers .answer{display:block;padding:12px;padding-right:20px;font-size:13px;font-weight:500;line-height:1.27;border-radius:5px;color:#004978;background:#e8f6ff;border:2px solid #d9f0ff;margin-bottom:4px;-webkit-transition:all 121ms;-moz-transition:all 121ms;-o-transition:all 121ms;-ms-transition:all 121ms;transition:all 121ms}@media (max-width:767px){#tns-promo-voxpop .banner .col-copy .vp-graphic .answers .answer{font-size:12px;padding-right:10px}}#tns-promo-voxpop .banner .col-cta{padding:30px}@media (max-width:767px){#tns-promo-voxpop .banner .col-cta{padding:20px;padding-top:0}}#tns-promo-voxpop .banner .col-cta .tns-promo-voxpop-launch-button{color:#fff;font-size:15px;font-weight:700;background:rgba(255,255,255,0.33);-webkit-transition:all 99ms;-moz-transition:all 99ms;-o-transition:all 99ms;-ms-transition:all 99ms;transition:all 99ms;margin-bottom:7px}#tns-promo-voxpop .banner .col-cta .tns-promo-voxpop-launch-button:hover{color:#01aff4;background:#fff}#tns-promo-voxpop .banner .col-cta .nudge{font-size:12px;opacity:.72;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=72)";filter:alpha(opacity=72);text-align:center}#tns-post #tns-promo-voxpop{margin-bottom:30px}#tns-promo-survey{display:relative;margin-top:30px;overflow:hidden}@media (max-width:767px){#tns-promo-survey .row{-webkit-box-lines:multiple;-moz-box-lines:multiple;-o-box-lines:multiple;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}#tns-promo-survey .row .col{min-width:100%;max-width:100%}}#tns-promo-survey .banner{width:100%;color:#fff;background:#01aff4;background:-webkit-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:-moz-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:-o-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:-ms-linear-gradient(305deg, #01aff4 0%, #ff3287 100%);background:linear-gradient(145deg, #01aff4 0%, #ff3287 100%)}#tns-promo-survey .banner .col-icon .survey-promo-icon{display:block;width:100%;max-height:100px;-webkit-transform:translate(0%,25%);-moz-transform:translate(0%,25%);-o-transform:translate(0%,25%);-ms-transform:translate(0%,25%);transform:translate(0%,25%)}#tns-promo-survey .banner .col-icon .survey-promo-icon path{fill:#fff}#tns-promo-survey .banner .col-copy{position:relative;padding-top:35px;padding-right:50px;font-size:15px;min-height:150px;overflow:hidden}@media (max-width:767px){#tns-promo-survey .banner .col-copy{margin-bottom:10px;padding-top:50px;padding-left:20px;padding-right:20px}}#tns-promo-survey .banner .col-copy .title{font-size:13px;font-weight:800}#tns-promo-survey .banner .col-copy .brief{line-height:1.2}#tns-promo-survey .banner .col-cta{padding:30px;padding-top:55px}@media (max-width:767px){#tns-promo-survey .banner .col-cta{padding:20px;padding-top:0}}#tns-promo-survey .banner .col-cta .tns-promo-survey-launch-button{color:#fff;font-size:15px;font-weight:700;background:rgba(255,255,255,0.33);-webkit-transition:all 99ms;-moz-transition:all 99ms;-o-transition:all 99ms;-ms-transition:all 99ms;transition:all 99ms;margin-bottom:7px}#tns-promo-survey .banner .col-cta .tns-promo-survey-launch-button:hover{color:#01aff4;background:#fff}#tns-promo-survey .banner .col-cta .nudge{padding-left:20px;padding-right:20px;font-size:12px;line-height:1.3;opacity:.72;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=72)";filter:alpha(opacity=72);text-align:center}#tns-post #tns-promo-survey{margin-bottom:30px}.tns-follow-links{position:relative}.tns-follow-links .follow-links{position:relative}.tns-follow-links .follow-links .follow-icon{width:30px;height:30px;display:-webkit-inline-box;display:-moz-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-box;display:inline-flex;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;vertical-align:middle;margin-right:4px}.tns-follow-links .follow-links .follow-icon svg{height:19px}.tns-follow-links .follow-links .follow-icon .fill path{fill:#3c3c3c;stroke-width:0}.tns-follow-links .follow-links .follow-icon .stroke path{stroke:#3c3c3c;fill:none}.tns-follow-links .follow-links .follow-icon:hover .fill path{fill:#01aff4}.tns-follow-links .follow-links .follow-icon:hover .stroke path{stroke:#01aff4}.tns-follow-links .follow-links .follow-icon-mastadon:hover .fill path{fill:#5e54ea}.tns-follow-links .follow-links .follow-icon-mastadon:hover .stroke path{stroke:#5e54ea}.tns-follow-links .follow-links .follow-icon-bluesky:hover .fill path{fill:#0185ff}.tns-follow-links .follow-links .follow-icon-bluesky:hover .stroke path{stroke:#0185ff}.tns-follow-links .follow-links .follow-icon-threads:hover svg{fill:#fff}.tns-follow-links .follow-links .follow-icon-threads:hover .fill path{fill:#fff}.tns-follow-links .follow-links .follow-icon-threads:hover .stroke path{stroke:#fff}.tns-follow-links .follow-links .follow-icon-twitter:hover .fill path{fill:#1c9bf0}.tns-follow-links .follow-links .follow-icon-twitter:hover .stroke path{stroke:#1c9bf0}.tns-follow-links .follow-links .follow-icon-hackernews:hover .fill path{fill:#fe6600}.tns-follow-links .follow-links .follow-icon-hackernews:hover .stroke path{stroke:#fe6600}.tns-follow-links .follow-links .follow-icon-linkedin:hover .fill path{fill:#0a66c2}.tns-follow-links .follow-links .follow-icon-linkedin:hover .stroke path{stroke:#0a66c2}.tns-follow-links .follow-links .follow-icon-reddit:hover .fill path{fill:#ff4500}.tns-follow-links .follow-links .follow-icon-reddit:hover .stroke path{stroke:#ff4500}.tns-follow-links .follow-links .follow-icon-facebook:hover .fill path{fill:#3c5998}.tns-follow-links .follow-links .follow-icon-facebook:hover .stroke path{stroke:#3c5998}.tns-follow-links .follow-links .follow-icon-instagram:hover .fill path{fill:#66b6fa}.tns-follow-links .follow-links .follow-icon-instagram:hover .stroke path{stroke:#66b6fa}.tns-follow-links .follow-links .follow-icon-spotify:hover svg{fill:#1cd760}.tns-follow-links .follow-links .follow-icon-spotify:hover .fill path{fill:#1cd760}.tns-follow-links .follow-links .follow-icon-spotify:hover .stroke path{stroke:#1cd760}.tns-follow-links .follow-links .follow-icon-youtube{vertical-align:top}.tns-follow-links .follow-links .follow-icon-youtube svg{height:27px}.tns-follow-links .follow-links .follow-icon-youtube:hover .fill path{fill:#f10001}.tns-follow-links .follow-links .follow-icon-youtube:hover .stroke path{stroke:#f10001}.tns-poll{position:relative;height:auto;border-top:1px solid #dcdcdc;margin-bottom:20px}.tns-poll .questions{margin-bottom:15px}.tns-poll .questions .page{position:realtive}.tns-poll .questions .page .question .col{font-size:17px;font-weight:500;line-height:1.33;padding:15px;padding-left:0;padding-bottom:5px}.tns-poll .questions .page .context{padding:15px;padding-top:0;padding-left:0;padding-bottom:20px;font-size:14px;line-height:1.27;color:#a3a7ae}.tns-poll .questions .page .answers .option{display:block;padding:15px;padding-left:24px;padding-right:72px;font-size:14px;font-weight:500;line-height:1.27;border-radius:5px;color:#004978;background:#e8f6ff;border:2px solid #d9f0ff;margin-bottom:4px;cursor:pointer;-webkit-transition:all 121ms;-moz-transition:all 121ms;-o-transition:all 121ms;-ms-transition:all 121ms;transition:all 121ms}@media (max-width:767px){.tns-poll .questions .page .answers .option{font-size:16px;padding-right:50px}}.tns-poll .questions .page .answers .option.active{color:#226727;border:2px solid #cdeecf;background:#d8f2da}.tns-poll .questions .page .answers .option .option-checkmark{position:absolute;top:15px;left:7px;color:#039cff;z-index:3;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-webkit-transition:opacity 121ms;-moz-transition:opacity 121ms;-o-transition:opacity 121ms;-ms-transition:opacity 121ms;transition:opacity 121ms}.tns-poll .questions .page .answers .option .option-percentage{position:absolute;top:50%;right:15px;-webkit-transform:translate(0%,-50%);-moz-transform:translate(0%,-50%);-o-transform:translate(0%,-50%);-ms-transform:translate(0%,-50%);transform:translate(0%,-50%);color:#039cff;z-index:3;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}.tns-poll .questions .page .answers .option .option-text{z-index:2}.tns-poll .questions .page .answers .option .option-results{position:absolute;top:0;left:0;bottom:0;width:0%;background:#c4e8ff;z-index:1}.tns-poll .questions .page .answers .option.active .option-percentage{color:#39ab42}.tns-poll .questions .page .answers .option.active .option-results{background:#bde9c1}.tns-poll .questions .page .answers .option.selected .option-checkmark{color:#039cff;opacity:1;-ms-filter:none;filter:none}.tns-poll .questions .page .answers .option.active.selected .option-checkmark{color:#39ab42;opacity:1;-ms-filter:none;filter:none}@media (hover:hover){.tns-poll .questions .page .answers .option:hover{color:#226727;border:2px solid #cdeecf;background:#d8f2da}.tns-poll .questions .page .answers .option:hover .option-checkmark{color:#39ab42;opacity:1;-ms-filter:none;filter:none}}.tns-poll .post-roll{height:0;overflow:hidden;border-top:1px solid #dcdcdc}.tns-poll .post-roll .post-roll-block{display:block}.tns-poll .post-roll .post-roll-block .newsletter-form{padding-top:15px;padding-bottom:20px}.tns-poll .post-roll .post-roll-block .newsletter-form .cta{font-size:14px;margin-bottom:7px}.tns-poll .post-roll .post-roll-block .newsletter-form input{margin:0}.tns-poll .post-roll .post-roll-block .newsletter-form input.error{color:#ff3287;background:rgba(255,50,135,0.12)}.tns-poll .post-roll .post-roll-block .newsletter-form button{border-radius:0;margin:0}.tns-poll .post-roll.open{border-bottom:1px solid #dcdcdc}.tns-poll a.poll-sponsor{position:relative;margin-top:20px;padding:15px;padding-top:45px;min-height:75px;color:#0e1013;font-size:14px;line-height:1.2;background:#f6f8fa;cursor:pointer}.tns-poll a.poll-sponsor .disclosure{position:absolute;top:15px;left:15px;color:#8da6c0;font-size:10px;font-weight:500}.tns-poll a.poll-sponsor .logo img{position:absolute;top:5px;left:0;max-width:85%}.tns-poll a.poll-sponsor .copy p{font-size:14px;margin-bottom:10px}.tns-poll a.poll-sponsor .cta{font-size:12px}@media (max-width:767px){.tns-poll a.poll-sponsor .cta{font-size:15px}}.tns-poll a.poll-sponsor .cta svg{height:8px;vertical-align:baseline}@media (max-width:767px){.tns-poll a.poll-sponsor .cta svg{height:10px}}.tns-poll a.poll-sponsor:hover .cta{color:#ff3287}.tns-poll a.poll-sponsor:hover .cta svg path{fill:#ff3287}.tns-poll.done .questions .page .answers .option{cursor:default;-webkit-transition:all 333ms;-moz-transition:all 333ms;-o-transition:all 333ms;-ms-transition:all 333ms;transition:all 333ms}.tns-poll.done .questions .page .answers .option:hover{color:#004978;background:#e8f6ff;border:2px solid #d9f0ff}.tns-poll.done .questions .page .answers .option:hover .option-checkmark{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0)}.tns-poll.done .questions .page .answers .option.active:hover{color:#226727;background:#d8f2da;border:2px solid #cdeecf}.tns-poll.done .questions .page .answers .option.selected:hover .option-checkmark{opacity:1;-ms-filter:none;filter:none}#tns-subscribe{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.9);z-index:10000;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);display:none}#tns-subscribe .modal{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:100%;max-width:500px;height:100%;max-height:370px;border-radius:5px;background:#fff;overflow:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);display:none}@media (max-width:500px){#tns-subscribe .modal{max-width:calc(100% - 20px)}}#tns-subscribe .modal .header{position:absolute;top:0;left:0;right:0;height:40px;border-bottom:1px solid #c2c2c2}#tns-subscribe .modal .header .title{position:absolute;left:15px;top:50%;-webkit-transform:translate(0%,-50%);-moz-transform:translate(0%,-50%);-o-transform:translate(0%,-50%);-ms-transform:translate(0%,-50%);transform:translate(0%,-50%);height:40px;line-height:40px;color:#3c3c3c;font-size:13px;font-weight:800}#tns-subscribe .modal .header .close{position:absolute;top:11px;right:14px;width:12px;cursor:pointer;z-index:2}#tns-subscribe .modal .header .close svg{width:100%;height:auto;fill:#515151}#tns-subscribe .modal .header .close:hover svg{fill:#ff3287}#tns-subscribe .modal .content{position:absolute;top:40px;left:0;right:0;bottom:0;overflow-x:hidden;overflow-y:auto}#tns-subscribe .modal .content .swiper{height:100%}#tns-subscribe .modal .content .swiper .swiper-wrapper{height:100%}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide{height:100%;padding:15px;overflow-x:hidden;overflow-y:auto}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .heading{font-size:20px;font-weight:700;margin-bottom:10px}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .heading-2{font-size:16px;font-weight:700;margin-bottom:10px}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .copy{font-size:15px;font-weight:400;margin-bottom:20px}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .follow-paragraph{margin-bottom:5px}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links{margin-left:-6px;margin-bottom:30px}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-mastadon .fill path{fill:#5e54ea}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-mastadon .stroke path{stroke:#5e54ea}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-linkedin .fill path{fill:#0a66c2}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-linkedin .stroke path{stroke:#0a66c2}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-twitter .fill path{fill:#1c9bf0}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-twitter .stroke path{stroke:#1c9bf0}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-facebook .fill path{fill:#3c5998}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-facebook .stroke path{stroke:#3c5998}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-instagram .fill path{fill:#66b6fa}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-instagram .stroke path{stroke:#66b6fa}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-youtube .fill path{fill:#f10001}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon-youtube .stroke path{stroke:#f10001}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .tns-follow-links .follow-icon:hover{opacity:75%;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=7500%)";filter:alpha(opacity=7500%)}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form{position:relative}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-button:disabled{background:#831844;cursor:default}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .form-field-email{display:block}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .form-field-resubscribe{display:none}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .form-field-info{color:#c2c2c2;font-size:10px;text-align:right}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .form-field-info.error{color:#ff3287}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form label{display:block;font-size:12px;font-weight:800;line-height:125%;margin-bottom:7px}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form input{border:1px solid #a5a9b0}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form input:focus{border:1px solid #000}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form input.error{border:1px solid #ff3287}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-form-privacy{display:block;max-width:450px;color:#a5a9b0;font-size:10px;font-weight:400;line-height:1.2;margin:20px auto 9px auto}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form select{width:100%;height:40px;font-size:15px;padding-left:15px;border:1px solid #a5a9b0;margin-bottom:20px}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form select:focus{border:1px solid #000}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form select.error{border:1px solid #ff3287}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-input-select-arrow{position:absolute;right:15px;top:31px;cursor:pointer;z-index:2}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-input-select-arrow svg{width:10px;height:auto;fill:#a5a9b0}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-input-select-arrow:hover svg{fill:#ff3287}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-job-level-other,#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-job-role-other,#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-organization-description-other,#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-industry-other{display:none}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-input-other-clear{position:absolute;right:15px;bottom:10px;cursor:pointer;z-index:2;display:none}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-input-other-clear svg{width:10px;height:auto;fill:#a5a9b0}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .subscribe-input-other-clear:hover svg{fill:#ff3287}#tns-subscribe .modal .content .swiper .swiper-wrapper .swiper-slide .form .form-field-zipcode{display:none}#tns-subscribe .modal .footer{position:absolute;left:0;right:0;bottom:-60px;height:60px;border-top:1px solid #c2c2c2}#tns-subscribe .modal .footer .page-indicator{color:#a5a9b0;font-size:12px;line-height:60px;text-align:center}#tns-subscribe .modal .footer .swiper-button-col{padding-top:10px}#tns-subscribe .modal .footer .swiper-button-col .swiper-button{color:#fff;font-size:12px;font-weight:800;height:40px;line-height:40px;text-align:center;padding-left:10px;padding-right:10px;background:#000;border-radius:5px;cursor:pointer}#tns-subscribe .modal .footer .swiper-button-col:first-child{padding-left:15px}#tns-subscribe .modal .footer .swiper-button-col:last-child{padding-right:15px}.tns-cta-sponsored-content{display:block;width:100%;margin-top:35px;margin-bottom:30px;padding:24px 32px;background:#f6f8fa;color:#515151;text-align:center;text-decoration:none;-webkit-transition:color 0.2s ease;-moz-transition:color 0.2s ease;-o-transition:color 0.2s ease;-ms-transition:color 0.2s ease;transition:color 0.2s ease}.tns-cta-sponsored-content .center-copy{display:inline-block;width:100%;text-align:center;font-size:16px;line-height:1.3;color:inherit}.tns-cta-sponsored-content .center-copy .cta-text{display:inline;color:inherit}.tns-cta-sponsored-content .center-copy strong{color:inherit;font-weight:700}.tns-cta-sponsored-content:hover{color:#01aff4;text-decoration:none}#tns-ebooks-cover .tns-cta-sponsored-content,#tns-webinars-cover .tns-cta-sponsored-content,#tns-newstack-update .tns-cta-sponsored-content,#tns-events-cover .tns-cta-sponsored-content{position:relative;left:50%;width:100vw;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-o-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}@import "./assets/css/crayon.min.css";
@import "./assets/css/crayon-github-gist.css";
</style>
<meta name="x-tns-post-date" content="2023-08-28 08:36:55"><meta name="x-tns-categories" content="&lt;a href=&quot;https://thenewstack.io/operations/&quot; alt=&quot;View all posts in Operations&quot;&gt;Operations&lt;/a&gt;"><meta name="x-tns-category-names" content="Operations"><meta name="x-tns-authors" content="&lt;a href=&quot;https://thenewstack.io/author/cynthiadunlop/&quot; title=&quot;Posts by Cynthia Dunlop&quot; class=&quot;author url fn&quot; rel=&quot;author&quot;&gt;Cynthia Dunlop&lt;/a&gt;"><meta name="x-tns-thumbnail" content="https://cdn.thenewstack.io/media/2023/08/86f461ae-data-center-.jpg"><meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
<script id="cookie-law-info-gcm-var-js">
var _ckyGcm = {"status":true,"default_settings":[{"analytics":"granted","advertisement":"granted","functional":"granted","necessary":"granted","ad_user_data":"granted","ad_personalization":"granted","regions":"All"}],"wait_for_update":2000,"url_passthrough":false,"ads_data_redaction":false}</script>
<script id="cookie-law-info-gcm-js" type="text/javascript" src="https://thenewstack.io/wp-content/plugins/cookie-law-info/lite/frontend/js/gcm.min.js"></script> <script id="cookieyes" type="text/javascript" src="https://cdn-cookieyes.com/client_data/bc916c1eddf6141a1f389fabdcc0e5d5/script.js"></script>
<!-- This site is optimized with the Yoast SEO Premium plugin v28.3 (Yoast SEO v28.3) - https://yoast.com/product/yoast-seo-premium-wordpress/ -->
<title>If P99 Latency Is BS, What&#039;s the Alternative? - The New Stack</title>
<meta name="description" content="So what’s the problem with P99s? And if they truly are BS, what should we look at instead?" />
<link rel="canonical" href="https://thenewstack.io/if-p99-latency-is-bs-whats-the-alternative/" />
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="article" />
<meta property="og:title" content="If P99 Latency Is BS, What&#039;s the Alternative?" />
<meta property="og:description" content="So what’s the problem with P99s? And if they truly are BS, what should we look at instead?" />
<meta property="og:url" content="https://thenewstack.io/if-p99-latency-is-bs-whats-the-alternative/" />
<meta property="og:site_name" content="The New Stack" />
<meta property="article:publisher" content="https://www.facebook.com/thenewstack" />
<meta property="article:published_time" content="2023-08-28T15:36:55+00:00" />
<meta property="article:modified_time" content="2023-11-01T18:16:20+00:00" />
<meta property="og:image" content="https://cdn.thenewstack.io/media/2023/08/86f461ae-data-center-.jpg" />
<meta property="og:image:width" content="1920" />
<meta property="og:image:height" content="1080" />
<meta property="og:image:type" content="image/jpeg" />
<meta name="author" content="Cynthia Dunlop" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:creator" content="@thenewstack" />
<meta name="twitter:site" content="@thenewstack" />
<meta name="twitter:label1" content="Written by" />
<meta name="twitter:data1" content="Cynthia Dunlop" />
<meta name="twitter:label2" content="Est. reading time" />
<meta name="twitter:data2" content="9 minutes" />
<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/thenewstack.io\/if-p99-latency-is-bs-whats-the-alternative\/#article","isPartOf":{"@id":"https:\/\/thenewstack.io\/if-p99-latency-is-bs-whats-the-alternative\/"},"author":[{"@id":"https:\/\/thenewstack.io\/#\/schema\/person\/51d3d5a780368db88b74ad32930dac3f"}],"headline":"If P99 Latency Is BS, What&#8217;s the Alternative?","datePublished":"2023-08-28T15:36:55+00:00","dateModified":"2023-11-01T18:16:20+00:00","mainEntityOfPage":{"@id":"https:\/\/thenewstack.io\/if-p99-latency-is-bs-whats-the-alternative\/"},"wordCount":1860,"publisher":{"@id":"https:\/\/thenewstack.io\/#organization"},"image":{"@id":"https:\/\/thenewstack.io\/if-p99-latency-is-bs-whats-the-alternative\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.thenewstack.io\/media\/2023\/08\/86f461ae-data-center-.jpg","keywords":["scylladb","post-contributed"],"articleSection":["Operations"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/thenewstack.io\/if-p99-latency-is-bs-whats-the-alternative\/","url":"https:\/\/thenewstack.io\/if-p99-latency-is-bs-whats-the-alternative\/","name":"If P99 Latency Is BS, What's the Alternative? - The New Stack","isPartOf":{"@id":"https:\/\/thenewstack.io\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thenewstack.io\/if-p99-latency-is-bs-whats-the-alternative\/#primaryimage"},"image":{"@id":"https:\/\/thenewstack.io\/if-p99-latency-is-bs-whats-the-alternative\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.thenewstack.io\/media\/2023\/08\/86f461ae-data-center-.jpg","datePublished":"2023-08-28T15:36:55+00:00","dateModified":"2023-11-01T18:16:20+00:00","description":"So what’s the problem with P99s? And if they truly are BS, what should we look at instead?","breadcrumb":{"@id":"https:\/\/thenewstack.io\/if-p99-latency-is-bs-whats-the-alternative\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thenewstack.io\/if-p99-latency-is-bs-whats-the-alternative\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/thenewstack.io\/if-p99-latency-is-bs-whats-the-alternative\/#primaryimage","url":"https:\/\/cdn.thenewstack.io\/media\/2023\/08\/86f461ae-data-center-.jpg","contentUrl":"https:\/\/cdn.thenewstack.io\/media\/2023\/08\/86f461ae-data-center-.jpg","width":1920,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/thenewstack.io\/if-p99-latency-is-bs-whats-the-alternative\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thenewstack.io\/"},{"@type":"ListItem","position":2,"name":"If P99 Latency Is BS, What&#8217;s the Alternative?"}]},{"@type":"WebSite","@id":"https:\/\/thenewstack.io\/#website","url":"https:\/\/thenewstack.io\/","name":"The New Stack","description":"","publisher":{"@id":"https:\/\/thenewstack.io\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thenewstack.io\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/thenewstack.io\/#organization","name":"The New Stack","url":"https:\/\/thenewstack.io\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/thenewstack.io\/#\/schema\/logo\/image\/","url":"https:\/\/cdn.thenewstack.io\/media\/2021\/11\/a9fbec84-the-new-stack-logo-rgb-screen.png","contentUrl":"https:\/\/cdn.thenewstack.io\/media\/2021\/11\/a9fbec84-the-new-stack-logo-rgb-screen.png","width":1032,"height":128,"caption":"The New Stack"},"image":{"@id":"https:\/\/thenewstack.io\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/thenewstack","https:\/\/x.com\/thenewstack"]},{"@type":"Person","@id":"https:\/\/thenewstack.io\/#\/schema\/person\/51d3d5a780368db88b74ad32930dac3f","name":"Cynthia Dunlop","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/thenewstack.io\/wp-content\/uploads\/2020\/01\/14adf317-cynthiadunlop-96x96.jpegd0e4089e93e73579a6832204401ea3be","url":"https:\/\/thenewstack.io\/wp-content\/uploads\/2020\/01\/14adf317-cynthiadunlop-96x96.jpeg","contentUrl":"https:\/\/thenewstack.io\/wp-content\/uploads\/2020\/01\/14adf317-cynthiadunlop-96x96.jpeg","caption":"Cynthia Dunlop"},"description":"Cynthia Dunlop has been writing about software development and testing for much longer than she cares to admit. She's currently senior director of content strategy at ScyllaDB.","sameAs":["https:\/\/www.linkedin.com\/in\/cynthiadunlop\/"],"url":"https:\/\/thenewstack.io\/author\/cynthiadunlop\/"}]}</script>
<!-- / Yoast SEO Premium plugin. -->
<link rel='dns-prefetch' href='//www.googletagmanager.com' />
<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://thenewstack.io/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fthenewstack.io%2Fif-p99-latency-is-bs-whats-the-alternative%2F" />
<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://thenewstack.io/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fthenewstack.io%2Fif-p99-latency-is-bs-whats-the-alternative%2F&#038;format=xml" />
<style id='wp-img-auto-sizes-contain-inline-css' type='text/css'>
img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
</style>
<link rel="https://api.w.org/" href="https://thenewstack.io/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://thenewstack.io/wp-json/wp/v2/posts/22716714" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://thenewstack.io/xmlrpc.php?rsd" />
<meta name="generator" content="WordPress 6.9.7" />
<link rel='shortlink' href='https://thenewstack.io/?p=22716714' />
<meta name="generator" content="Site Kit by Google 1.185.0" /> <script>
const adSettings = {"post_id":22716714,"category":["operations"],"tag":["sponsor-scylladb","sponsored-post-contributed"],"author":["Cynthia Dunlop"],"sponsored":"yes","page_number":1,"page_type":"post","environment":"production"};
const AdManager = {
init: function() {
window.googletag = window.googletag || {};
googletag.cmd = googletag.cmd || [];
this.load();
},
sanitize: function (value = '') {
return String(value)
.trim()
// Remove characters forbidden at https://support.google.com/admanager/answer/10020177.
.replace(/'|\\|'|=|!|#|\*|~|;|\^|\(|\)|<|>|\[|\]|,|&/g, '')
// Extra spaces aren't forbidden, but rarely desired.
.replace(/\s+/, ' ')
// The + sign is also forbidden, but is being replaced with 'and' instead.
.replace('+', 'and')
// Maximum length of 40 for values.
.substring(0, 40);
},
sanitizeTargetingValue: function (value = '') {
if (Array.isArray(value)) {
return value.map(this.sanitize);
} else {
return this.sanitize(value);
}
},
load: function() {
const slots = {
'rootAdUnit' : '/22873384501/tns/',
'homepage' : [
// {
// 'adSlot': 'div-gpt-ad-native-inline-1',
// 'adUnit': 'native_inline_1',
// 'position': 'inline_1',
// },
// {
// 'adSlot': 'div-gpt-ad-native-inline-2',
// 'adUnit': 'native_inline_2',
// 'position': 'inline_2',
// },
// {
// 'adSlot': 'div-gpt-ad-native-sidebar-1',
// 'adUnit': 'native_sidebar_1',
// 'position': 'sidebar_1',
// },
// {
// 'adSlot': 'div-gpt-ad-native-sidebar-2',
// 'adUnit': 'native_sidebar_2',
// 'position': 'sidebar_2',
// },
// {
// 'adSlot': 'div-gpt-ad-native-sidebar-3',
// 'adUnit': 'native_sidebar_3',
// 'position': 'sidebar_3',
// },
// {
// 'adSlot': 'div-gpt-ad-native-sidebar-4',
// 'adUnit': 'native_sidebar_4',
// 'position': 'sidebar_4',
// },
// {
// 'adSlot': 'div-gpt-ad-native-sidebar-5',
// 'adUnit': 'native_sidebar_5',
// 'position': 'sidebar_5',
// },
// {
// 'adSlot': 'div-gpt-ad-native-sidebar-6',
// 'adUnit': 'native_sidebar_6',
// 'position': 'sidebar_6',
// },
// {
// 'adSlot': 'div-gpt-ad-native-sidebar-7',
// 'adUnit': 'native_sidebar_7',
// 'position': 'sidebar_7',
// },
// {
// 'adSlot': 'div-gpt-ad-native-sidebar-8',
// 'adUnit': 'native_sidebar_8',
// 'position': 'sidebar_8',
// },
// {
// 'adSlot': 'div-gpt-ad-native-sidebar-9',
// 'adUnit': 'native_sidebar_9',
// 'position': 'sidebar_9',
// },
// {
// 'adSlot': 'div-gpt-ad-native-sidebar-10',
// 'adUnit': 'native_sidebar_10',
// 'position': 'sidebar_10',
// },
],
'post': [
{
'adSlot': 'div-gpt-ad-native-sidebar-1',
'adUnit': 'native_sidebar_1',
'position': 'sidebar_1',
'sizes': ['fluid', [300, 250], [300, 600]],
},
]
};
googletag.cmd.push(() => {
// Configure all ad slots on the page to be expanded by default, but
// collapse slots that are unable to be filled with an ad.
googletag.pubads().collapseEmptyDivs();
googletag
.defineSlot('/22873384501/tns/native_top', ['fluid'], 'div-gpt-ad-native-top')
.setTargeting('position ', 'top')
.addService(googletag.pubads());
googletag
.defineSlot('/22873384501/tns/native_bottom', ['fluid'], 'div-gpt-ad-native-bottom')
.setTargeting('position ', 'bottom')
.addService(googletag.pubads());
// Define ad slots.
if (1 === parseInt(adSettings.page_number)) {
if (typeof slots[adSettings['page_type']] !== 'undefined') {
for (let slot of slots[adSettings['page_type']]) {
googletag
.defineSlot(slots.rootAdUnit + slot.adUnit, slot.sizes || ['fluid'], slot.adSlot)
.setTargeting('position ', slot.position)
.addService(googletag.pubads());
}
}
} else if (adSettings.page_type === 'homepage' || adSettings.page_type === 'post') {
for (let i = 1; i <= 20; i++) {
googletag
.defineSlot('/22873384501/tns/native_inline_'+i, ['fluid'], 'div-gpt-ad-native-inline-'+i)
.setTargeting('position', 'inline_'+i)
.addService(googletag.pubads());
}
}
// Set targeting for all ad slots on the page.
for (let key in adSettings) {
if (adSettings.hasOwnProperty(key)) {
googletag.pubads().setTargeting(key, this.sanitizeTargetingValue( adSettings[key] ));
}
}
googletag.pubads().addEventListener('slotRenderEnded', function (e) {
if (!e.isEmpty) {
return;
}
const slotId = e.slot.getSlotElementId();
if (slotId.includes('inline')) {
// Remove inline ad containers on the homepage from the DOM
// to prevent the nth-selector styling from being thrown off
// by the hidden ad container.
const slot = document.getElementById(slotId);
if (!slot) {
return;
}
slot.parentNode.removeChild(slot);
}
// The page layout shuffling on desktop article is causing the
// ad code to have trouble creating the empty iframe, so the
// ad slot is not getting collapsed. After a small delay,
// manually collapse the slot.
setTimeout(() => {
const adContainer = document.getElementById(slotId);
if (adContainer) {
adContainer.style.display = 'none';
}
}, 1800)
});
googletag.pubads().addEventListener('slotOnload', (event) => {
// - Native ads have a small chance of having the iframe within
// them set to have a height of 0.
// - After the ad signals that it has loaded, check whether its
// iframe's height is very small.
// - If it is, assume an error has happened and change the height
// to be the same as the container.
const slot = event.slot;
if (!slot) return;
setTimeout(() => {
const id = slot.getSlotElementId();
const container = document.getElementById(id);
if (!container) return;
let iframe = container.querySelector('iframe');
if (!iframe) return;
let iframeHeight = iframe.offsetHeight;
// Pick 10 instead of 0 just in case a border or something
// similar has made the iframe register as having a few
// pixels.
if (iframeHeight > 10) return;
else {
window.dataLayer.push({
'event' : 'gam_ad_unit_blank',
'context' : id
});
}
// Determine the height reserved by the ad container due to
// the page's styling, minus the vertical padding.
const containerStyle = getComputedStyle(container);
let reservedSpace = parseFloat(containerStyle.height) - parseFloat(containerStyle.paddingTop) - parseFloat(containerStyle.paddingBottom);
if (reservedSpace < 1) return;
iframe.style.height = reservedSpace + 'px';
iframe.style.minWidth = "100%";
}, 1200)
});
// Set targeting params from BlueConic (if any).
this.blueConicGAMConnection();
// Enable SRA and services.
googletag.pubads().enableSingleRequest();
googletag.pubads().enableLazyLoad();
googletag.enableServices();
// If BC callback happens later, update targeting params.
this.setupBlueConicGAMCallback();
});
},
/**
* Instantly connect BlueConic-supplied values to the GAM page-level targeting.
*/
blueConicGAMConnection() {
if (typeof Storage !== 'undefined') {
const targetingParamStr = localStorage.getItem('bcDFPTargetingParams');
if (targetingParamStr) {
const targetingParameters = JSON.parse(targetingParamStr); // set page-level targeting parameters.
targetingParameters.forEach((param) => {
window.googletag.pubads().setTargeting(param.key, param.value);
});
}
}
},
/**
* Listen for BlueConic DFP callback and update GAM targeting params.
*/
setupBlueConicGAMCallback() {
window.bcDFPCallback = function(params) {
if (!params || params.length === 0) return; // ignore empty callback
params.forEach(param => {
window.googletag.pubads().setTargeting(param.key, param.value);
});
};
},
};
window.AdManager = AdManager;
AdManager.init();
(function () {
let nativeAds = [];
/**
* Determine the current breakpoint.
*
* The native ad will set a CSS class on the ad's body tag based on the
* breakpoint returned here. If you return "large" then the class
* "breakpoint-large" will be set on the native ad.
*
* @returns string The name of the current breakpoint.
*/
function getBreakpoint() {
const width = window.innerWidth || document.body.clientWidth;
// Customize these breakpoints to match your site. They can be anything
// you want, so long as you style the native ad matching the classname
// `breakpoint-${thisReturnValue}`.
if (width >= 1400) {
return 'x-large';
} else if (width >= 1024) {
return 'large';
} else if (width >= 768) {
return 'medium';
} else {
return 'small';
}
}
/**
* Tell an iframe the current breakpoint using postMessage.
*
* @param {object} iframe An iframe's window object.
*/
function sendSize(iframe) {
const msg = `breakpoint:${getBreakpoint()}`;
iframe.postMessage(msg, '*');
}
/**
* Send the current breakpoint size to all native ads that have loaded.
*/
function notifyAllNativeAds() {
if (!nativeAds || nativeAds.length === 0) {
return;
}
nativeAds.forEach((nativeAd) => {
sendSize(nativeAd);
});
}
/**
* Initialize the necessary event listeners.
*/
function init() {
// The Native Ad has loaded. Immediately tell it the current breakpoint,
// and store it in an array so we can communicate it later if the browser
// resizes.
window.addEventListener(
'message',
function (e) {
if (e.data === 'initdfp') {
sendSize(e.source);
nativeAds.push(e.source);
}
}
);
// Send an updated breakpoint to all native ads that have previously
// loaded on the page.
window.addEventListener(
'resize',
notifyAllNativeAds,
{
passive: true,
}
);
}
init();
})();
</script>
<link rel="icon" href="https://cdn.thenewstack.io/media/2026/03/b2fc1b22-cropped-89b6d319-download-32x32.png" sizes="32x32" />
<link rel="icon" href="https://cdn.thenewstack.io/media/2026/03/b2fc1b22-cropped-89b6d319-download-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://cdn.thenewstack.io/media/2026/03/b2fc1b22-cropped-89b6d319-download-180x180.png" />
<meta name="msapplication-TileImage" content="https://cdn.thenewstack.io/media/2026/03/b2fc1b22-cropped-89b6d319-download-270x270.png" />
<script>
/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0;
}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}}),function(){var a;l.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,e;return c=d.getElementsByTagName("body")[0],c&&c.style?(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(d.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(e),a):void 0}}();var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),V=["Top","Right","Bottom","Left"],W=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function X(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&U.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var Y=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)Y(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/<tbody/i;function ia(a){Z.test(a.type)&&(a.defaultChecked=a.checked)}function ja(a,b,c,d,e){for(var f,g,h,i,j,k,m,o=a.length,p=ca(b),q=[],r=0;o>r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?"<table>"!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ma.test(f)?this.mouseHooks:la.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=g.srcElement||d),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,h.filter?h.filter(a,g):a},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button,h=b.fromElement;return null==a.pageX&&null!=b.clientX&&(e=a.target.ownerDocument||d,f=e.documentElement,c=e.body,a.pageX=b.clientX+(f&&f.scrollLeft||c&&c.scrollLeft||0)-(f&&f.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(f&&f.scrollTop||c&&c.scrollTop||0)-(f&&f.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&h&&(a.relatedTarget=h===a.target?b.toElement:h),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ra()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ra()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b),d.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=d.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)}:function(a,b,c){var d="on"+b;a.detachEvent&&("undefined"==typeof a[d]&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?pa:qa):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:qa,isPropagationStopped:qa,isImmediatePropagationStopped:qa,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=pa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=pa,a&&!this.isSimulated&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=pa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||n.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submit||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?n.prop(b,"form"):void 0;c&&!n._data(c,"submit")&&(n.event.add(c,"submit._submit",function(a){a._submitBubble=!0}),n._data(c,"submit",!0))})},postDispatch:function(a){a._submitBubble&&(delete a._submitBubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.change||(n.event.special.change={setup:function(){return ka.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._justChanged=!0)}),n.event.add(this,"click._change",function(a){this._justChanged&&!a.isTrigger&&(this._justChanged=!1),n.event.simulate("change",this,a)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;ka.test(b.nodeName)&&!n._data(b,"change")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a)}),n._data(b,"change",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!ka.test(this.nodeName)}}),l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d){return sa(this,a,b,c,d)},one:function(a,b,c,d){return sa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=qa),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ta=/ jQuery\d+="(?:null|\d+)"/g,ua=new RegExp("<(?:"+ba+")[\\s/>]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/<script|<style|<link/i,xa=/checked\s*(?:[^=]|=\s*.checked.)/i,ya=/^true\/(.*)/,za=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ja[0].contentWindow||Ja[0].contentDocument).document,b.write(),b.close(),c=La(a,b),Ja.detach()),Ka[a]=c),c}var Na=/^margin/,Oa=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Pa=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Qa=d.documentElement;!function(){var b,c,e,f,g,h,i=d.createElement("div"),j=d.createElement("div");if(j.style){j.style.cssText="float:left;opacity:.5",l.opacity="0.5"===j.style.opacity,l.cssFloat=!!j.style.cssFloat,j.style.backgroundClip="content-box",j.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===j.style.backgroundClip,i=d.createElement("div"),i.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",j.innerHTML="",i.appendChild(j),l.boxSizing=""===j.style.boxSizing||""===j.style.MozBoxSizing||""===j.style.WebkitBoxSizing,n.extend(l,{reliableHiddenOffsets:function(){return null==b&&k(),f},boxSizingReliable:function(){return null==b&&k(),e},pixelMarginRight:function(){return null==b&&k(),c},pixelPosition:function(){return null==b&&k(),b},reliableMarginRight:function(){return null==b&&k(),g},reliableMarginLeft:function(){return null==b&&k(),h}});function k(){var k,l,m=d.documentElement;m.appendChild(i),j.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",b=e=h=!1,c=g=!0,a.getComputedStyle&&(l=a.getComputedStyle(j),b="1%"!==(l||{}).top,h="2px"===(l||{}).marginLeft,e="4px"===(l||{width:"4px"}).width,j.style.marginRight="50%",c="4px"===(l||{marginRight:"4px"}).marginRight,k=j.appendChild(d.createElement("div")),k.style.cssText=j.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",k.style.marginRight=k.style.width="0",j.style.width="1px",g=!parseFloat((a.getComputedStyle(k)||{}).marginRight),j.removeChild(k)),j.style.display="none",f=0===j.getClientRects().length,f&&(j.style.display="",j.innerHTML="<table><tr><td></td><td>t</td></tr></table>",j.childNodes[0].style.borderCollapse="separate",k=j.getElementsByTagName("td"),k[0].style.cssText="margin:0;border:0;padding:0;display:none",f=0===k[0].offsetHeight,f&&(k[0].style.display="",k[1].style.display="none",f=0===k[0].offsetHeight)),m.removeChild(i)}}}();var Ra,Sa,Ta=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ra=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Oa.test(g)&&Na.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0===g?g:g+""}):Qa.currentStyle&&(Ra=function(a){return a.currentStyle},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Oa.test(g)&&!Ta.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Ua(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Va=/alpha\([^)]*\)/i,Wa=/opacity\s*=\s*([^)]*)/i,Xa=/^(none|table(?!-c[ea]).+)/,Ya=new RegExp("^("+T+")(.*)$","i"),Za={position:"absolute",visibility:"hidden",display:"block"},$a={letterSpacing:"0",fontWeight:"400"},_a=["Webkit","O","Moz","ms"],ab=d.createElement("div").style;function bb(a){if(a in ab)return a;var b=a.charAt(0).toUpperCase()+a.slice(1),c=_a.length;while(c--)if(a=_a[c]+b,a in ab)return a}function cb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&W(d)&&(f[g]=n._data(d,"olddisplay",Ma(d.nodeName)))):(e=W(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function db(a,b,c){var d=Ya.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function eb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+V[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+V[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+V[f]+"Width",!0,e))):(g+=n.css(a,"padding"+V[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+V[f]+"Width",!0,e)));return g}function fb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ra(a),g=l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Sa(a,b,f),(0>e||null==e)&&(e=a.style[b]),Oa.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+eb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Sa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=U.exec(c))&&e[1]&&(c=X(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Sa(a,b,d)),"normal"===f&&b in $a&&(f=$a[b]),""===c||c?(e=parseFloat(f),c===!0||isFinite(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Xa.test(n.css(a,"display"))&&0===a.offsetWidth?Pa(a,Za,function(){return fb(a,b,d)}):fb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ra(a);return db(a,c,d?eb(a,b,d,l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Wa.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Va,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Va.test(f)?f.replace(Va,e):f+" "+e)}}),n.cssHooks.marginRight=Ua(l.reliableMarginRight,function(a,b){return b?Pa(a,{display:"inline-block"},Sa,[a,"marginRight"]):void 0}),n.cssHooks.marginLeft=Ua(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Sa(a,"marginLeft"))||(n.contains(a.ownerDocument,a)?a.getBoundingClientRect().left-Pa(a,{
marginLeft:0},function(){return a.getBoundingClientRect().left}):0))+"px":void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+V[d]+b]=f[d]||f[d-2]||f[0];return e}},Na.test(a)||(n.cssHooks[a+b].set=db)}),n.fn.extend({css:function(a,b){return Y(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ra(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return cb(this,!0)},hide:function(){return cb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){W(this)?n(this).show():n(this).hide()})}});function gb(a,b,c,d,e){return new gb.prototype.init(a,b,c,d,e)}n.Tween=gb,gb.prototype={constructor:gb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=gb.propHooks[this.prop];return a&&a.get?a.get(this):gb.propHooks._default.get(this)},run:function(a){var b,c=gb.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):gb.propHooks._default.set(this),this}},gb.prototype.init.prototype=gb.prototype,gb.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},gb.propHooks.scrollTop=gb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=gb.prototype.init,n.fx.step={};var hb,ib,jb=/^(?:toggle|show|hide)$/,kb=/queueHooks$/;function lb(){return a.setTimeout(function(){hb=void 0}),hb=n.now()}function mb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=V[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function nb(a,b,c){for(var d,e=(qb.tweeners[b]||[]).concat(qb.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ob(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&W(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k="none"===j?n._data(a,"olddisplay")||Ma(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==Ma(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],jb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(o))"inline"===("none"===j?Ma(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=nb(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function pb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function qb(a,b,c){var d,e,f=0,g=qb.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=hb||lb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:hb||lb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(pb(k,j.opts.specialEasing);g>f;f++)if(d=qb.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,nb,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(qb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return X(c.elem,a,U.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],qb.tweeners[c]=qb.tweeners[c]||[],qb.tweeners[c].unshift(b)},prefilters:[ob],prefilter:function(a,b){b?qb.prefilters.unshift(a):qb.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(W).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=qb(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&kb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(mb(b,!0),a,d,e)}}),n.each({slideDown:mb("show"),slideUp:mb("hide"),slideToggle:mb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(hb=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),hb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ib||(ib=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(ib),ib=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a,b=d.createElement("input"),c=d.createElement("div"),e=d.createElement("select"),f=e.appendChild(d.createElement("option"));c=d.createElement("div"),c.setAttribute("className","t"),c.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],b.setAttribute("type","checkbox"),c.appendChild(b),a=c.getElementsByTagName("a")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==c.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=f.selected,l.enctype=!!d.createElement("form").enctype,e.disabled=!0,l.optDisabled=!f.disabled,b=d.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value}();var rb=/\r/g,sb=/[\x20\t\r\n\f]+/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a)).replace(sb," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>-1)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var tb,ub,vb=n.expr.attrHandle,wb=/^(?:checked|selected)$/i,xb=l.getSetAttribute,yb=l.input;n.fn.extend({attr:function(a,b){return Y(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ub:tb)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?yb&&xb||!wb.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(xb?c:d)}}),ub={set:function(a,b,c){return b===!1?n.removeAttr(a,c):yb&&xb||!wb.test(c)?a.setAttribute(!xb&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=vb[b]||n.find.attr;yb&&xb||!wb.test(b)?vb[b]=function(a,b,d){var e,f;return d||(f=vb[b],vb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,vb[b]=f),e}:vb[b]=function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),yb&&xb||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):tb&&tb.set(a,b,c)}}),xb||(tb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},vb.id=vb.name=vb.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:tb.set},n.attrHooks.contenteditable={set:function(a,b,c){tb.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var zb=/^(?:input|select|textarea|button|object)$/i,Ab=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return Y(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):zb.test(a.nodeName)||Ab.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var Bb=/[\t\r\n\f]/g;function Cb(a){return n.attr(a,"class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,Cb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,Cb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,Cb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=Cb(this),b&&n._data(this,"__className__",b),n.attr(this,"class",b||a===!1?"":n._data(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+Cb(c)+" ").replace(Bb," ").indexOf(b)>-1)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Db=a.location,Eb=n.now(),Fb=/\?/,Gb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(Gb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new a.DOMParser,c=d.parseFromString(b,"text/xml")):(c=new a.ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var Hb=/#.*$/,Ib=/([?&])_=[^&]*/,Jb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Kb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Lb=/^(?:GET|HEAD)$/,Mb=/^\/\//,Nb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ob={},Pb={},Qb="*/".concat("*"),Rb=Db.href,Sb=Nb.exec(Rb.toLowerCase())||[];function Tb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Ub(a,b,c,d){var e={},f=a===Pb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Vb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Wb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Xb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Rb,type:"GET",isLocal:Kb.test(Sb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Qb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Vb(Vb(a,n.ajaxSettings),b):Vb(n.ajaxSettings,a)},ajaxPrefilter:Tb(Ob),ajaxTransport:Tb(Pb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var d,e,f,g,h,i,j,k,l=n.ajaxSetup({},c),m=l.context||l,o=l.context&&(m.nodeType||m.jquery)?n(m):n.event,p=n.Deferred(),q=n.Callbacks("once memory"),r=l.statusCode||{},s={},t={},u=0,v="canceled",w={readyState:0,getResponseHeader:function(a){var b;if(2===u){if(!k){k={};while(b=Jb.exec(g))k[b[1].toLowerCase()]=b[2]}b=k[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===u?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return u||(a=t[c]=t[c]||a,s[a]=b),this},overrideMimeType:function(a){return u||(l.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>u)for(b in a)r[b]=[r[b],a[b]];else w.always(a[w.status]);return this},abort:function(a){var b=a||v;return j&&j.abort(b),y(0,b),this}};if(p.promise(w).complete=q.add,w.success=w.done,w.error=w.fail,l.url=((b||l.url||Rb)+"").replace(Hb,"").replace(Mb,Sb[1]+"//"),l.type=c.method||c.type||l.method||l.type,l.dataTypes=n.trim(l.dataType||"*").toLowerCase().match(G)||[""],null==l.crossDomain&&(d=Nb.exec(l.url.toLowerCase()),l.crossDomain=!(!d||d[1]===Sb[1]&&d[2]===Sb[2]&&(d[3]||("http:"===d[1]?"80":"443"))===(Sb[3]||("http:"===Sb[1]?"80":"443")))),l.data&&l.processData&&"string"!=typeof l.data&&(l.data=n.param(l.data,l.traditional)),Ub(Ob,l,c,w),2===u)return w;i=n.event&&l.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),l.type=l.type.toUpperCase(),l.hasContent=!Lb.test(l.type),f=l.url,l.hasContent||(l.data&&(f=l.url+=(Fb.test(f)?"&":"?")+l.data,delete l.data),l.cache===!1&&(l.url=Ib.test(f)?f.replace(Ib,"$1_="+Eb++):f+(Fb.test(f)?"&":"?")+"_="+Eb++)),l.ifModified&&(n.lastModified[f]&&w.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&w.setRequestHeader("If-None-Match",n.etag[f])),(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&w.setRequestHeader("Content-Type",l.contentType),w.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+("*"!==l.dataTypes[0]?", "+Qb+"; q=0.01":""):l.accepts["*"]);for(e in l.headers)w.setRequestHeader(e,l.headers[e]);if(l.beforeSend&&(l.beforeSend.call(m,w,l)===!1||2===u))return w.abort();v="abort";for(e in{success:1,error:1,complete:1})w[e](l[e]);if(j=Ub(Pb,l,c,w)){if(w.readyState=1,i&&o.trigger("ajaxSend",[w,l]),2===u)return w;l.async&&l.timeout>0&&(h=a.setTimeout(function(){w.abort("timeout")},l.timeout));try{u=1,j.send(s,y)}catch(x){if(!(2>u))throw x;y(-1,x)}}else y(-1,"No Transport");function y(b,c,d,e){var k,s,t,v,x,y=c;2!==u&&(u=2,h&&a.clearTimeout(h),j=void 0,g=e||"",w.readyState=b>0?4:0,k=b>=200&&300>b||304===b,d&&(v=Wb(l,w,d)),v=Xb(l,v,w,k),k?(l.ifModified&&(x=w.getResponseHeader("Last-Modified"),x&&(n.lastModified[f]=x),x=w.getResponseHeader("etag"),x&&(n.etag[f]=x)),204===b||"HEAD"===l.type?y="nocontent":304===b?y="notmodified":(y=v.state,s=v.data,t=v.error,k=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),w.status=b,w.statusText=(c||y)+"",k?p.resolveWith(m,[s,y,w]):p.rejectWith(m,[w,y,t]),w.statusCode(r),r=void 0,i&&o.trigger(k?"ajaxSuccess":"ajaxError",[w,l,k?s:t]),q.fireWith(m,[w,y]),i&&(o.trigger("ajaxComplete",[w,l]),--n.active||n.event.trigger("ajaxStop")))}return w},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}});function Yb(a){return a.style&&a.style.display||n.css(a,"display")}function Zb(a){if(!n.contains(a.ownerDocument||d,a))return!0;while(a&&1===a.nodeType){if("none"===Yb(a)||"hidden"===a.type)return!0;a=a.parentNode}return!1}n.expr.filters.hidden=function(a){return l.reliableHiddenOffsets()?a.offsetWidth<=0&&a.offsetHeight<=0&&!a.getClientRects().length:Zb(a)},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var $b=/%20/g,_b=/\[\]$/,ac=/\r?\n/g,bc=/^(?:submit|button|image|reset|file)$/i,cc=/^(?:input|select|textarea|keygen)/i;function dc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||_b.test(a)?d(a,e):dc(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)dc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)dc(c,a[c],b,e);return d.join("&").replace($b,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&cc.test(this.nodeName)&&!bc.test(a)&&(this.checked||!Z.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(ac,"\r\n")}}):{name:b.name,value:c.replace(ac,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return this.isLocal?ic():d.documentMode>8?hc():/^(get|post|head|put|delete|options)$/i.test(this.type)&&hc()||ic()}:hc;var ec=0,fc={},gc=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in fc)fc[a](void 0,!0)}),l.cors=!!gc&&"withCredentials"in gc,gc=l.ajax=!!gc,gc&&n.ajaxTransport(function(b){if(!b.crossDomain||l.cors){var c;return{send:function(d,e){var f,g=b.xhr(),h=++ec;if(g.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(f in b.xhrFields)g[f]=b.xhrFields[f];b.mimeType&&g.overrideMimeType&&g.overrideMimeType(b.mimeType),b.crossDomain||d["X-Requested-With"]||(d["X-Requested-With"]="XMLHttpRequest");for(f in d)void 0!==d[f]&&g.setRequestHeader(f,d[f]+"");g.send(b.hasContent&&b.data||null),c=function(a,d){var f,i,j;if(c&&(d||4===g.readyState))if(delete fc[h],c=void 0,g.onreadystatechange=n.noop,d)4!==g.readyState&&g.abort();else{j={},f=g.status,"string"==typeof g.responseText&&(j.text=g.responseText);try{i=g.statusText}catch(k){i=""}f||!b.isLocal||b.crossDomain?1223===f&&(f=204):f=j.text?200:404}j&&e(f,i,j,g.getAllResponseHeaders())},b.async?4===g.readyState?a.setTimeout(c):g.onreadystatechange=fc[h]=c:c()},abort:function(){c&&c(void 0,!0)}}}});function hc(){try{return new a.XMLHttpRequest}catch(b){}}function ic(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=d.head||n("head")[0]||d.documentElement;return{send:function(e,f){b=d.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||f(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var jc=[],kc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=jc.pop()||n.expando+"_"+Eb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(kc.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&kc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(kc,"$1"+e):b.jsonp!==!1&&(b.url+=(Fb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,jc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ja([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var lc=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&lc)return lc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h,a.length)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function mc(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?("undefined"!=typeof e.getBoundingClientRect&&(d=e.getBoundingClientRect()),c=mc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Qa})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return Y(this,function(a,d,e){var f=mc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ua(l.pixelPosition,function(a,c){return c?(c=Sa(a,b),Oa.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({
padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return Y(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var nc=a.jQuery,oc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=oc),b&&a.jQuery===n&&(a.jQuery=nc),n},b||(a.jQuery=a.$=n),n});
</script>
<script>
(function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(e.async={})})(this,function(e){"use strict";function t(e,...t){return(...n)=>e(...t,...n)}function n(e){return function(...t){var n=t.pop();return e.call(this,t,n)}}function i(e){setTimeout(e,0)}function a(e){return(t,...n)=>e(()=>t(...n))}function r(e){return d(e)?function(...t){const n=t.pop(),i=e.apply(this,t);return s(i,n)}:n(function(t,n){var i;try{i=e.apply(this,t)}catch(t){return n(t)}return i&&"function"==typeof i.then?s(i,n):void n(null,i)})}function s(e,t){return e.then(e=>{l(t,null,e)},e=>{l(t,e&&e.message?e:new Error(e))})}function l(e,t,n){try{e(t,n)}catch(e){ve(t=>{throw t},e)}}function d(e){return"AsyncFunction"===e[Symbol.toStringTag]}function c(e){return"AsyncGenerator"===e[Symbol.toStringTag]}function u(e){return"function"==typeof e[Symbol.asyncIterator]}function o(e){if("function"!=typeof e)throw new Error("expected a function");return d(e)?r(e):e}function f(e){return function(t,...i){var a=n(function(n,i){var a=this;return e(t,(e,t)=>{o(e).apply(a,n.concat(t))},i)});return i.length?a.apply(this,i):a}}function p(e,t,n,i){t=t||[];var a=[],r=0,s=o(n);return e(t,(e,t,n)=>{var i=r++;s(e,(e,t)=>{a[i]=t,n(e)})},e=>{i(e,a)})}function h(e){return e&&"number"==typeof e.length&&0<=e.length&&0==e.length%1}function y(e){function t(...t){if(null!==e){var n=e;e=null,n.apply(this,t)}}return Object.assign(t,e),t}function m(e){return e[Symbol.iterator]&&e[Symbol.iterator]()}function g(e){var t=-1,n=e.length;return function(){return++t<n?{value:e[t],key:t}:null}}function k(e){var t=-1;return function(){var n=e.next();return n.done?null:(t++,{value:n.value,key:t})}}function S(e){var t=e?Object.keys(e):[],n=-1,a=t.length;return function(){var i=t[++n];return n<a?{value:e[i],key:i}:null}}function v(e){if(h(e))return g(e);var t=m(e);return t?k(t):S(e)}function L(e){return function(...t){if(null===e)throw new Error("Callback was already called.");var n=e;e=null,n.apply(this,t)}}function x(e,t,n,i){function a(){u>=t||c||l||(c=!0,e.next().then(({value:e,done:t})=>{if(!(d||l))return c=!1,t?(l=!0,void(0>=u&&i(null))):void(u++,n(e,o,r),o++,a())}).catch(s))}function r(e,t){return u-=1,d?void 0:e?s(e):!1===e?(l=!0,void(d=!0)):t===Le||l&&0>=u?(l=!0,i(null)):void a()}function s(e){d||(c=!1,l=!0,i(e))}let l=!1,d=!1,c=!1,u=0,o=0;a()}function E(e,t=e.length){function n(...n){return"function"==typeof n[t-1]?e.apply(this,n):new Promise((i,a)=>{n[t-1]=(e,...t)=>e?a(e):void i(1<t.length?t:t[0]),e.apply(this,n)})}if(!t)throw new Error("arity is undefined");return Object.defineProperty(n,"name",{value:`awaitable(${e.name})`}),n}function O(e,t,n){function i(e,t){!1===e&&(l=!0);!0===l||(e?n(e):(++r===s||t===Le)&&n(null))}n=y(n);var a=0,r=0,{length:s}=e,l=!1;for(0===s&&n(null);a<s;a++)t(e[a],a,L(i))}function b(e,t,n){return Ee(e,1/0,t,n)}function _(){function e(e,...i){return e?n(e):void t(1<i.length?i:i[0])}let t,n;return e[Be]=new Promise((e,i)=>{t=e,n=i}),e}function j(e,t,n){function i(e,t){g.push(()=>l(e,t))}function a(){if(!p){if(0===g.length&&0===f)return n(null,u);for(;g.length&&f<t;){var e=g.shift();e()}}}function r(e,t){var n=m[e];n||(n=m[e]=[]),n.push(t)}function s(e){var t=m[e]||[];t.forEach(e=>e()),a()}function l(e,t){if(!h){var i=L((t,...i)=>{if(f--,!1===t)return void(p=!0);if(2>i.length&&([i]=i),t){var a={};if(Object.keys(u).forEach(e=>{a[e]=u[e]}),a[e]=i,h=!0,m=Object.create(null),p)return;n(t,a)}else u[e]=i,s(e)});f++;var a=o(t[t.length-1]);1<t.length?a(u,i):a(i)}}function d(t){var n=[];return Object.keys(e).forEach(i=>{const a=e[i];Array.isArray(a)&&0<=a.indexOf(t)&&n.push(i)}),n}"number"!=typeof t&&(n=t,t=null),n=y(n||_());var c=Object.keys(e).length;if(!c)return n(null);t||(t=c);var u={},f=0,p=!1,h=!1,m=Object.create(null),g=[],k=[],S={};return Object.keys(e).forEach(t=>{var n=e[t];if(!Array.isArray(n))return i(t,[n]),void k.push(t);var a=n.slice(0,n.length-1),s=a.length;return 0===s?(i(t,n),void k.push(t)):void(S[t]=s,a.forEach(l=>{if(!e[l])throw new Error("async.auto task `"+t+"` has a non-existent dependency `"+l+"` in "+a.join(", "));r(l,()=>{s--,0===s&&i(t,n)})}))}),function(){for(var e,t=0;k.length;)e=k.pop(),t++,d(e).forEach(e=>{0==--S[e]&&k.push(e)});if(t!==c)throw new Error("async.auto cannot execute tasks due to a recursive dependency")}(),a(),n[Be]}function I(e){const t=e.toString().replace(Pe,"");let n=t.match(Me);if(n||(n=t.match(Fe)),!n)throw new Error("could not parse args in autoInject\nSource:\n"+t);let[,i]=n;return i.replace(/\s/g,"").split(Te).map(e=>e.replace(we,"").trim())}function A(e,t){var n={};return Object.keys(e).forEach(t=>{function i(e,t){var n=a.map(t=>e[t]);n.push(t),o(r)(...n)}var a,r=e[t],s=d(r),l=!s&&1===r.length||s&&0===r.length;if(Array.isArray(r))a=[...r],r=a.pop(),n[t]=a.concat(0<a.length?i:r);else if(l)n[t]=r;else{if(a=I(r),0===r.length&&!s&&0===a.length)throw new Error("autoInject task functions require explicit parameters.");s||a.pop(),n[t]=a.concat(i)}}),j(n,t)}function B(e,t){e.length=1,e.head=e.tail=t}function M(e,t,n){function i(e,t,n){if(null!=n&&"function"!=typeof n)throw new Error("task callback must be a function");if(f.started=!0,Array.isArray(e)||(e=[e]),0===e.length&&f.idle())return ve(()=>f.drain());for(var a,r=0,s=e.length;r<s;r++)a={data:e[r],callback:n||Re},t?f._tasks.unshift(a):f._tasks.push(a);c||(c=!0,ve(()=>{c=!1,f.process()}))}function a(e){return function(t,...n){s-=1;for(var a=0,r=e.length;a<r;a++){var l=e[a],c=d.indexOf(l);0===c?d.shift():0<c&&d.splice(c,1),l.callback(t,...n),null!=t&&f.error(t,l.data)}s<=f.concurrency-f.buffer&&f.unsaturated(),f.idle()&&f.drain(),f.process()}}if(null==t)t=1;else if(0===t)throw new RangeError("Concurrency must not be zero");var r=o(e),s=0,d=[],c=!1,u=!1,f={_tasks:new ze,*[Symbol.iterator](){yield*f._tasks[Symbol.iterator]()},concurrency:t,payload:n,saturated:Re,unsaturated:Re,buffer:t/4,empty:Re,drain:Re,error:Re,started:!1,paused:!1,push(e,t){i(e,!1,t)},kill(){f.drain=Re,f._tasks.empty()},unshift(e,t){i(e,!0,t)},remove(e){f._tasks.remove(e)},process(){if(!u){for(u=!0;!f.paused&&s<f.concurrency&&f._tasks.length;){var e=[],t=[],n=f._tasks.length;f.payload&&(n=Math.min(n,f.payload));for(var c,o=0;o<n;o++)c=f._tasks.shift(),e.push(c),d.push(c),t.push(c.data);s+=1,0===f._tasks.length&&f.empty(),s===f.concurrency&&f.saturated();var p=L(a(e));r(t,p)}u=!1}},length(){return f._tasks.length},running(){return s},workersList(){return d},idle(){return 0===f._tasks.length+s},pause(){f.paused=!0},resume(){!1===f.paused||(f.paused=!1,ve(f.process))}};return f}function F(e,t){return M(e,1,t)}function T(e,t,n){return M(e,t,n)}function w(...e){var t=e.map(o);return function(...e){var n=this,i=e[e.length-1];return"function"==typeof i?e.pop():i=_(),Ve(t,e,(e,t,i)=>{t.apply(n,e.concat((e,...t)=>{i(e,t)}))},(e,t)=>i(e,...t)),i[Be]}}function P(...e){return w(...e.reverse())}function z(...e){return function(...t){var n=t.pop();return n(null,...e)}}function R(e,t){return(n,i,a,r)=>{var s,l=!1;const d=o(a);n(i,(n,i,a)=>{d(n,(i,r)=>i?a(i):e(r)&&!s?(l=!0,s=t(!0,n),a(null,Le)):void a())},e=>e?r(e):void r(null,l?s:t(!1)))}}function Y(e){return(t,...n)=>o(t)(...n,(t,...n)=>{"object"==typeof console&&(t?console.error&&console.error(t):console[e]&&n.forEach(t=>console[e](t)))})}function V(e,t,n){const i=o(t);return Ke(e,(...e)=>{const t=e.pop();i(...e,(e,n)=>t(e,!n))},n)}function q(e){return(t,n,i)=>e(t,i)}function C(e){return d(e)?e:function(...t){var n=t.pop(),i=!0;t.push((...e)=>{i?ve(()=>n(...e)):n(...e)}),e.apply(this,t),i=!1}}function Q(e,t,n,a){var r=Array(t.length);e(t,(e,t,i)=>{n(e,(e,n)=>{r[t]=!!n,i(e)})},e=>{if(e)return a(e);for(var n=[],s=0;s<t.length;s++)r[s]&&n.push(t[s]);a(null,n)})}function N(e,t,n,i){var a=[];e(t,(e,t,i)=>{n(e,(n,r)=>n?i(n):void(r&&a.push({index:t,value:e}),i()))},e=>e?i(e):void i(null,a.sort((e,t)=>e.index-t.index).map(e=>e.value)))}function D(e,t,n,i){var a=h(t)?Q:N;return a(e,t,o(n),i)}function U(e,t,n){return rt(e,1/0,t,n)}function W(e,t,n){return rt(e,1,t,n)}function G(e,t,n){return lt(e,1/0,t,n)}function K(e,t,n){return lt(e,1,t,n)}function X(e,t=e=>e){var a=Object.create(null),r=Object.create(null),i=o(e),s=n((e,n)=>{var s=t(...e);s in a?ve(()=>n(null,...a[s])):s in r?r[s].push(n):(r[s]=[n],i(...e,(e,...t)=>{e||(a[s]=t);var n=r[s];delete r[s];for(var d=0,c=n.length;d<c;d++)n[d](e,...t)}))});return s.memo=a,s.unmemoized=e,s}function H(e,t){return ct(Oe,e,t)}function Z(e,t,n){return ct(xe(t),e,n)}function $(e,t){var n=o(e);return M((e,t)=>{n(e[0],t)},t,1)}function J(e,t){var n=$(e,t);return n.push=function(e,t=0,a=()=>{}){if("function"!=typeof a)throw new Error("task callback must be a function");if(n.started=!0,Array.isArray(e)||(e=[e]),0===e.length)return ve(()=>n.drain());for(var r=n._tasks.head;r&&t>=r.priority;)r=r.next;for(var s,d=0,c=e.length;d<c;d++)s={data:e[d],priority:t,callback:a},r?n._tasks.insertBefore(r,s):n._tasks.push(s);ve(n.process)},delete n.unshift,n}function ee(e,t,n,i){var a=[...e].reverse();return Ve(a,t,n,i)}function te(e){var t=o(e);return n(function(e,n){return e.push((e,...t)=>{if(e)return n(null,{error:e});var i=t;1>=t.length&&([i]=t),n(null,{value:i})}),t.apply(this,e)})}function ne(e){var t;return Array.isArray(e)?t=e.map(te):(t={},Object.keys(e).forEach(n=>{t[n]=te.call(this,e[n])})),t}function ie(e,t,n,i){const a=o(n);return D(e,t,(e,t)=>{a(e,(e,n)=>{t(e,!n)})},i)}function ae(e){return function(){return e}}function re(e,t,n){function i(){r((e,...t)=>{!1===e||(e&&s++<a.times&&("function"!=typeof a.errorFilter||a.errorFilter(e))?setTimeout(i,a.intervalFunc(s)):n(e,...t))})}var a={times:ht,intervalFunc:ae(yt)};if(3>arguments.length&&"function"==typeof e?(n=t||_(),t=e):(se(a,e),n=n||_()),"function"!=typeof t)throw new Error("Invalid arguments for async.retry");var r=o(t),s=1;return i(),n[Be]}function se(e,n){if("object"==typeof n)e.times=+n.times||ht,e.intervalFunc="function"==typeof n.interval?n.interval:ae(+n.interval||yt),e.errorFilter=n.errorFilter;else if("number"==typeof n||"string"==typeof n)e.times=+n||ht;else throw new Error("Invalid arguments for async.retry")}function le(e,t){t||(t=e,e=null);let i=e&&e.arity||t.length;d(t)&&(i+=1);var a=o(t);return n((t,n)=>{function r(e){a(...t,e)}return(t.length<i-1||null==n)&&(t.push(n),n=_()),e?re(e,r,n):re(r,n),n[Be]})}function de(e,t){return ct(je,e,t)}function ce(e,t,i){var a=o(e);return n((n,r)=>{var s,l=!1;n.push((...e)=>{l||(r(...e),clearTimeout(s))}),s=setTimeout(function(){var t=e.name||"anonymous",n=new Error("Callback function \""+t+"\" timed out.");n.code="ETIMEDOUT",i&&(n.info=i),l=!0,r(n)},t),a(...n)})}function ue(e){for(var t=Array(e);e--;)t[e]=e;return t}function oe(e,t,n,i){var a=o(n);return qe(ue(e),t,a,i)}function fe(e,t,n){return oe(e,1/0,t,n)}function pe(e,t,n){return oe(e,1,t,n)}function he(e,t,n,i){3>=arguments.length&&"function"==typeof t&&(i=n,n=t,t=Array.isArray(e)?[]:{}),i=y(i||_());var a=o(n);return Oe(e,(e,n,i)=>{a(t,e,n,i)},e=>i(e,t)),i[Be]}function ye(e){return(...t)=>(e.unmemoized||e)(...t)}function me(e,t,n){const i=o(e);return Lt(e=>i((t,n)=>e(t,!n)),t,n)}var ge,ke="function"==typeof setImmediate&&setImmediate,Se="object"==typeof process&&"function"==typeof process.nextTick;ge=ke?setImmediate:Se?process.nextTick:i;var ve=a(ge);const Le={};var xe=e=>(t,n,i)=>{function a(e,t){if(!d)if(o-=1,e)l=!0,i(e);else if(!1===e)l=!0,d=!0;else{if(t===Le||l&&0>=o)return l=!0,i(null);f||r()}}function r(){for(f=!0;o<e&&!l;){var t=s();if(null===t)return l=!0,void(0>=o&&i(null));o+=1,n(t.value,t.key,L(a))}f=!1}if(i=y(i),0>=e)throw new RangeError("concurrency limit cannot be less than 1");if(!t)return i(null);if(c(t))return x(t,e,n,i);if(u(t))return x(t[Symbol.asyncIterator](),e,n,i);var s=v(t),l=!1,d=!1,o=0,f=!1;r()},Ee=E(function(e,t,n,i){return xe(t)(e,o(n),i)},4),Oe=E(function(e,t,n){var i=h(e)?O:b;return i(e,o(t),n)},3),be=E(function(e,t,n){return p(Oe,e,t,n)},3),_e=f(be),je=E(function(e,t,n){return Ee(e,1,t,n)},3),Ie=E(function(e,t,n){return p(je,e,t,n)},3),Ae=f(Ie);const Be=Symbol("promiseCallback");var Me=/^(?:async\s+)?(?:function)?\s*[^(]*\(\s*([^)]+)\s*\)(?:\s*{)/m,Fe=/^(?:async\s+)?\(?\s*([^)^=]+)\s*\)?(?:\s*=>)/m,Te=/,/,we=/(=.+)?(\s*)$/,Pe=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;class ze{constructor(){this.head=this.tail=null,this.length=0}removeLink(e){return e.prev?e.prev.next=e.next:this.head=e.next,e.next?e.next.prev=e.prev:this.tail=e.prev,e.prev=e.next=null,this.length-=1,e}empty(){for(;this.head;)this.shift();return this}insertAfter(e,t){t.prev=e,t.next=e.next,e.next?e.next.prev=t:this.tail=t,e.next=t,this.length+=1}insertBefore(e,t){t.prev=e.prev,t.next=e,e.prev?e.prev.next=t:this.head=t,e.prev=t,this.length+=1}unshift(e){this.head?this.insertBefore(this.head,e):B(this,e)}push(e){this.tail?this.insertAfter(this.tail,e):B(this,e)}shift(){return this.head&&this.removeLink(this.head)}pop(){return this.tail&&this.removeLink(this.tail)}toArray(){return[...this]}*[Symbol.iterator](){for(var e=this.head;e;)yield e.data,e=e.next}remove(e){for(var t=this.head;t;){var{next:n}=t;e(t)&&this.removeLink(t),t=n}return this}}const Re=()=>{};var Ye,Ve=E(function(e,t,n,i){i=y(i);var a=o(n);return je(e,(e,n,i)=>{a(t,e,(e,n)=>{t=n,i(e)})},e=>i(e,t))},4),qe=E(function(e,t,n,i){return p(xe(t),e,n,i)},4),Ce=E(function(e,t,n,a){var i=o(n);return qe(e,t,(e,t)=>{i(e,(e,...n)=>e?t(e):t(null,n))},(e,t)=>{for(var n=[],r=0;r<t.length;r++)t[r]&&(n=n.concat(...t[r]));return a(e,n)})},4),Qe=E(function(e,t,n){return Ce(e,1/0,t,n)},3),Ne=E(function(e,t,n){return Ce(e,1,t,n)},3),De=E(function(e,t,n){return R(e=>e,(e,t)=>t)(Oe,e,t,n)},3),Ue=E(function(e,t,n,i){return R(e=>e,(e,t)=>t)(xe(t),e,n,i)},4),We=E(function(e,t,n){return R(e=>e,(e,t)=>t)(xe(1),e,t,n)},3),Ge=Y("dir"),Ke=E(function(e,t,n){function i(e,...t){return e?n(e):void(!1===e||(r=t,l(...t,a)))}function a(e,t){return e?n(e):!1===e?void 0:t?void s(i):n(null,...r)}n=L(n);var r,s=o(e),l=o(t);return a(null,!0)},3),Xe=E(function(e,t,n){return Oe(e,q(o(t)),n)},3),He=E(function(e,t,n,i){return xe(t)(e,q(o(n)),i)},4),Ze=E(function(e,t,n){return He(e,1,t,n)},3),$e=E(function(e,t,n){return R(e=>!e,e=>!e)(Oe,e,t,n)},3),Je=E(function(e,t,n,i){return R(e=>!e,e=>!e)(xe(t),e,n,i)},4),et=E(function(e,t,n){return R(e=>!e,e=>!e)(je,e,t,n)},3),tt=E(function(e,t,n){return D(Oe,e,t,n)},3),nt=E(function(e,t,n,i){return D(xe(t),e,n,i)},4),it=E(function(e,t,n){return D(je,e,t,n)},3),at=E(function(e,t){function n(e){return e?i(e):void(!1===e||a(n))}var i=L(t),a=o(C(e));return n()},2),rt=E(function(e,t,n,a){var i=o(n);return qe(e,t,(e,t)=>{i(e,(n,i)=>n?t(n):t(null,{key:i,val:e}))},(e,t)=>{for(var n={},{hasOwnProperty:r}=Object.prototype,s=0;s<t.length;s++)if(t[s]){var{key:l}=t[s],{val:d}=t[s];r.call(n,l)?n[l].push(d):n[l]=[d]}return a(e,n)})},4),st=Y("log"),lt=E(function(e,t,n,i){i=y(i);var a={},r=o(n);return xe(t)(e,(e,t,n)=>{r(e,t,(e,i)=>e?n(e):void(a[t]=i,n()))},e=>i(e,a))},4);Ye=Se?process.nextTick:ke?setImmediate:i;var dt=a(Ye),ct=E((e,t,n)=>{var i=h(t)?[]:{};e(t,(e,t,n)=>{o(e)((e,...a)=>{2>a.length&&([a]=a),i[t]=a,n(e)})},e=>n(e,i))},3),ut=E(function(e,t){if(t=y(t),!Array.isArray(e))return t(new TypeError("First argument to race must be an array of functions"));if(!e.length)return t();for(var n=0,a=e.length;n<a;n++)o(e[n])(t)},2),ot=E(function(e,t,n){return ie(Oe,e,t,n)},3),ft=E(function(e,t,n,i){return ie(xe(t),e,n,i)},4),pt=E(function(e,t,n){return ie(je,e,t,n)},3);const ht=5,yt=0;var mt=E(function(e,t,n){return R(Boolean,e=>e)(Oe,e,t,n)},3),gt=E(function(e,t,n,i){return R(Boolean,e=>e)(xe(t),e,n,i)},4),kt=E(function(e,t,n){return R(Boolean,e=>e)(je,e,t,n)},3),St=E(function(e,t,n){function i(e,t){var n=e.criteria,i=t.criteria;return n<i?-1:n>i?1:0}var a=o(t);return be(e,(e,t)=>{a(e,(n,i)=>n?t(n):void t(null,{value:e,criteria:i}))},(e,t)=>e?n(e):void n(null,t.sort(i).map(e=>e.value)))},3),vt=E(function(e,t){var n,i=null;return Ze(e,(e,t)=>{o(e)((e,...a)=>{2>a.length?[n]=a:n=a,i=e,t(e?null:{})})},()=>t(i,n))}),Lt=E(function(e,t,n){function i(e,...t){if(e)return n(e);r=t;!1===e||l(a)}function a(e,t){return e?n(e):!1===e?void 0:t?void s(i):n(null,...r)}n=L(n);var r,s=o(t),l=o(e);return l(a)},3),xt=E(function(e,t){function n(t){var n=o(e[a++]);n(...t,L(i))}function i(i,...r){return!1===i?void 0:i||a===e.length?t(i,...r):void n(r)}if(t=y(t),!Array.isArray(e))return t(new Error("First argument to waterfall must be an array of functions"));if(!e.length)return t();var a=0;n([])});e.default={apply:t,applyEach:_e,applyEachSeries:Ae,asyncify:r,auto:j,autoInject:A,cargo:F,cargoQueue:T,compose:P,concat:Qe,concatLimit:Ce,concatSeries:Ne,constant:z,detect:De,detectLimit:Ue,detectSeries:We,dir:Ge,doUntil:V,doWhilst:Ke,each:Xe,eachLimit:He,eachOf:Oe,eachOfLimit:Ee,eachOfSeries:je,eachSeries:Ze,ensureAsync:C,every:$e,everyLimit:Je,everySeries:et,filter:tt,filterLimit:nt,filterSeries:it,forever:at,groupBy:U,groupByLimit:rt,groupBySeries:W,log:st,map:be,mapLimit:qe,mapSeries:Ie,mapValues:G,mapValuesLimit:lt,mapValuesSeries:K,memoize:X,nextTick:dt,parallel:H,parallelLimit:Z,priorityQueue:J,queue:$,race:ut,reduce:Ve,reduceRight:ee,reflect:te,reflectAll:ne,reject:ot,rejectLimit:ft,rejectSeries:pt,retry:re,retryable:le,seq:w,series:de,setImmediate:ve,some:mt,someLimit:gt,someSeries:kt,sortBy:St,timeout:ce,times:fe,timesLimit:oe,timesSeries:pe,transform:he,tryEach:vt,unmemoize:ye,until:me,waterfall:xt,whilst:Lt,all:$e,allLimit:Je,allSeries:et,any:mt,anyLimit:gt,anySeries:kt,find:De,findLimit:Ue,findSeries:We,forEach:Xe,forEachSeries:Ze,forEachLimit:He,forEachOf:Oe,forEachOfSeries:je,forEachOfLimit:Ee,inject:Ve,foldl:Ve,foldr:ee,select:tt,selectLimit:nt,selectSeries:it,wrapSync:r,during:Lt,doDuring:Ke},e.apply=t,e.applyEach=_e,e.applyEachSeries=Ae,e.asyncify=r,e.auto=j,e.autoInject=A,e.cargo=F,e.cargoQueue=T,e.compose=P,e.concat=Qe,e.concatLimit=Ce,e.concatSeries=Ne,e.constant=z,e.detect=De,e.detectLimit=Ue,e.detectSeries=We,e.dir=Ge,e.doUntil=V,e.doWhilst=Ke,e.each=Xe,e.eachLimit=He,e.eachOf=Oe,e.eachOfLimit=Ee,e.eachOfSeries=je,e.eachSeries=Ze,e.ensureAsync=C,e.every=$e,e.everyLimit=Je,e.everySeries=et,e.filter=tt,e.filterLimit=nt,e.filterSeries=it,e.forever=at,e.groupBy=U,e.groupByLimit=rt,e.groupBySeries=W,e.log=st,e.map=be,e.mapLimit=qe,e.mapSeries=Ie,e.mapValues=G,e.mapValuesLimit=lt,e.mapValuesSeries=K,e.memoize=X,e.nextTick=dt,e.parallel=H,e.parallelLimit=Z,e.priorityQueue=J,e.queue=$,e.race=ut,e.reduce=Ve,e.reduceRight=ee,e.reflect=te,e.reflectAll=ne,e.reject=ot,e.rejectLimit=ft,e.rejectSeries=pt,e.retry=re,e.retryable=le,e.seq=w,e.series=de,e.setImmediate=ve,e.some=mt,e.someLimit=gt,e.someSeries=kt,e.sortBy=St,e.timeout=ce,e.times=fe,e.timesLimit=oe,e.timesSeries=pe,e.transform=he,e.tryEach=vt,e.unmemoize=ye,e.until=me,e.waterfall=xt,e.whilst=Lt,e.all=$e,e.allLimit=Je,e.allSeries=et,e.any=mt,e.anyLimit=gt,e.anySeries=kt,e.find=De,e.findLimit=Ue,e.findSeries=We,e.forEach=Xe,e.forEachSeries=Ze,e.forEachLimit=He,e.forEachOf=Oe,e.forEachOfSeries=je,e.forEachOfLimit=Ee,e.inject=Ve,e.foldl=Ve,e.foldr=ee,e.select=tt,e.selectLimit=nt,e.selectSeries=it,e.wrapSync=r,e.during=Lt,e.doDuring=Ke,Object.defineProperty(e,"__esModule",{value:!0})});
</script>
<script>
;(function(global,factory){typeof exports==='object'&&typeof module!=='undefined'?module.exports=factory():typeof define==='function'&&define.amd?define(factory):global.moment=factory()}(this,(function(){'use strict';var hookCallback;function hooks(){return hookCallback.apply(null,arguments);}
function setHookCallback(callback){hookCallback=callback;}
function isArray(input){return input instanceof Array||Object.prototype.toString.call(input)==='[object Array]';}
function isObject(input){return input!=null&&Object.prototype.toString.call(input)==='[object Object]';}
function isObjectEmpty(obj){if(Object.getOwnPropertyNames){return(Object.getOwnPropertyNames(obj).length===0);}else{var k;for(k in obj){if(obj.hasOwnProperty(k)){return false;}}
return true;}}
function isUndefined(input){return input===void 0;}
function isNumber(input){return typeof input==='number'||Object.prototype.toString.call(input)==='[object Number]';}
function isDate(input){return input instanceof Date||Object.prototype.toString.call(input)==='[object Date]';}
function map(arr,fn){var res=[],i;for(i=0;i<arr.length;++i){res.push(fn(arr[i],i));}
return res;}
function hasOwnProp(a,b){return Object.prototype.hasOwnProperty.call(a,b);}
function extend(a,b){for(var i in b){if(hasOwnProp(b,i)){a[i]=b[i];}}
if(hasOwnProp(b,'toString')){a.toString=b.toString;}
if(hasOwnProp(b,'valueOf')){a.valueOf=b.valueOf;}
return a;}
function createUTC(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,true).utc();}
function defaultParsingFlags(){return{empty:false,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:false,invalidMonth:null,invalidFormat:false,userInvalidated:false,iso:false,parsedDateParts:[],meridiem:null,rfc2822:false,weekdayMismatch:false};}
function getParsingFlags(m){if(m._pf==null){m._pf=defaultParsingFlags();}
return m._pf;}
var some;if(Array.prototype.some){some=Array.prototype.some;}else{some=function(fun){var t=Object(this);var len=t.length>>>0;for(var i=0;i<len;i++){if(i in t&&fun.call(this,t[i],i,t)){return true;}}
return false;};}
function isValid(m){if(m._isValid==null){var flags=getParsingFlags(m);var parsedParts=some.call(flags.parsedDateParts,function(i){return i!=null;});var isNowValid=!isNaN(m._d.getTime())&&flags.overflow<0&&!flags.empty&&!flags.invalidMonth&&!flags.invalidWeekday&&!flags.weekdayMismatch&&!flags.nullInput&&!flags.invalidFormat&&!flags.userInvalidated&&(!flags.meridiem||(flags.meridiem&&parsedParts));if(m._strict){isNowValid=isNowValid&&flags.charsLeftOver===0&&flags.unusedTokens.length===0&&flags.bigHour===undefined;}
if(Object.isFrozen==null||!Object.isFrozen(m)){m._isValid=isNowValid;}
else{return isNowValid;}}
return m._isValid;}
function createInvalid(flags){var m=createUTC(NaN);if(flags!=null){extend(getParsingFlags(m),flags);}
else{getParsingFlags(m).userInvalidated=true;}
return m;}
var momentProperties=hooks.momentProperties=[];function copyConfig(to,from){var i,prop,val;if(!isUndefined(from._isAMomentObject)){to._isAMomentObject=from._isAMomentObject;}
if(!isUndefined(from._i)){to._i=from._i;}
if(!isUndefined(from._f)){to._f=from._f;}
if(!isUndefined(from._l)){to._l=from._l;}
if(!isUndefined(from._strict)){to._strict=from._strict;}
if(!isUndefined(from._tzm)){to._tzm=from._tzm;}
if(!isUndefined(from._isUTC)){to._isUTC=from._isUTC;}
if(!isUndefined(from._offset)){to._offset=from._offset;}
if(!isUndefined(from._pf)){to._pf=getParsingFlags(from);}
if(!isUndefined(from._locale)){to._locale=from._locale;}
if(momentProperties.length>0){for(i=0;i<momentProperties.length;i++){prop=momentProperties[i];val=from[prop];if(!isUndefined(val)){to[prop]=val;}}}
return to;}
var updateInProgress=false;function Moment(config){copyConfig(this,config);this._d=new Date(config._d!=null?config._d.getTime():NaN);if(!this.isValid()){this._d=new Date(NaN);}
if(updateInProgress===false){updateInProgress=true;hooks.updateOffset(this);updateInProgress=false;}}
function isMoment(obj){return obj instanceof Moment||(obj!=null&&obj._isAMomentObject!=null);}
function absFloor(number){if(number<0){return Math.ceil(number)||0;}else{return Math.floor(number);}}
function toInt(argumentForCoercion){var coercedNumber=+argumentForCoercion,value=0;if(coercedNumber!==0&&isFinite(coercedNumber)){value=absFloor(coercedNumber);}
return value;}
function compareArrays(array1,array2,dontConvert){var len=Math.min(array1.length,array2.length),lengthDiff=Math.abs(array1.length-array2.length),diffs=0,i;for(i=0;i<len;i++){if((dontConvert&&array1[i]!==array2[i])||(!dontConvert&&toInt(array1[i])!==toInt(array2[i]))){diffs++;}}
return diffs+lengthDiff;}
function warn(msg){if(hooks.suppressDeprecationWarnings===false&&(typeof console!=='undefined')&&console.warn){console.warn('Deprecation warning: '+msg);}}
function deprecate(msg,fn){var firstTime=true;return extend(function(){if(hooks.deprecationHandler!=null){hooks.deprecationHandler(null,msg);}
if(firstTime){var args=[];var arg;for(var i=0;i<arguments.length;i++){arg='';if(typeof arguments[i]==='object'){arg+='\n['+i+'] ';for(var key in arguments[0]){arg+=key+': '+arguments[0][key]+', ';}
arg=arg.slice(0,-2);}else{arg=arguments[i];}
args.push(arg);}
warn(msg+'\nArguments: '+Array.prototype.slice.call(args).join('')+'\n'+(new Error()).stack);firstTime=false;}
return fn.apply(this,arguments);},fn);}
var deprecations={};function deprecateSimple(name,msg){if(hooks.deprecationHandler!=null){hooks.deprecationHandler(name,msg);}
if(!deprecations[name]){warn(msg);deprecations[name]=true;}}
hooks.suppressDeprecationWarnings=false;hooks.deprecationHandler=null;function isFunction(input){return input instanceof Function||Object.prototype.toString.call(input)==='[object Function]';}
function set(config){var prop,i;for(i in config){prop=config[i];if(isFunction(prop)){this[i]=prop;}else{this['_'+i]=prop;}}
this._config=config;this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+
'|'+(/\d{1,2}/).source);}
function mergeConfigs(parentConfig,childConfig){var res=extend({},parentConfig),prop;for(prop in childConfig){if(hasOwnProp(childConfig,prop)){if(isObject(parentConfig[prop])&&isObject(childConfig[prop])){res[prop]={};extend(res[prop],parentConfig[prop]);extend(res[prop],childConfig[prop]);}else if(childConfig[prop]!=null){res[prop]=childConfig[prop];}else{delete res[prop];}}}
for(prop in parentConfig){if(hasOwnProp(parentConfig,prop)&&!hasOwnProp(childConfig,prop)&&isObject(parentConfig[prop])){res[prop]=extend({},res[prop]);}}
return res;}
function Locale(config){if(config!=null){this.set(config);}}
var keys;if(Object.keys){keys=Object.keys;}else{keys=function(obj){var i,res=[];for(i in obj){if(hasOwnProp(obj,i)){res.push(i);}}
return res;};}
var defaultCalendar={sameDay:'[Today at] LT',nextDay:'[Tomorrow at] LT',nextWeek:'dddd [at] LT',lastDay:'[Yesterday at] LT',lastWeek:'[Last] dddd [at] LT',sameElse:'L'};function calendar(key,mom,now){var output=this._calendar[key]||this._calendar['sameElse'];return isFunction(output)?output.call(mom,now):output;}
var defaultLongDateFormat={LTS:'h:mm:ss A',LT:'h:mm A',L:'MM/DD/YYYY',LL:'MMMM D, YYYY',LLL:'MMMM D, YYYY h:mm A',LLLL:'dddd, MMMM D, YYYY h:mm A'};function longDateFormat(key){var format=this._longDateFormat[key],formatUpper=this._longDateFormat[key.toUpperCase()];if(format||!formatUpper){return format;}
this._longDateFormat[key]=formatUpper.replace(/MMMM|MM|DD|dddd/g,function(val){return val.slice(1);});return this._longDateFormat[key];}
var defaultInvalidDate='Invalid date';function invalidDate(){return this._invalidDate;}
var defaultOrdinal='%d';var defaultDayOfMonthOrdinalParse=/\d{1,2}/;function ordinal(number){return this._ordinal.replace('%d',number);}
var defaultRelativeTime={future:'in %s',past:'%s ago',s:'a few seconds',ss:'%d seconds',m:'a minute',mm:'%d minutes',h:'an hour',hh:'%d hours',d:'a day',dd:'%d days',M:'a month',MM:'%d months',y:'a year',yy:'%d years'};function relativeTime(number,withoutSuffix,string,isFuture){var output=this._relativeTime[string];return(isFunction(output))?output(number,withoutSuffix,string,isFuture):output.replace(/%d/i,number);}
function pastFuture(diff,output){var format=this._relativeTime[diff>0?'future':'past'];return isFunction(format)?format(output):format.replace(/%s/i,output);}
var aliases={};function addUnitAlias(unit,shorthand){var lowerCase=unit.toLowerCase();aliases[lowerCase]=aliases[lowerCase+'s']=aliases[shorthand]=unit;}
function normalizeUnits(units){return typeof units==='string'?aliases[units]||aliases[units.toLowerCase()]:undefined;}
function normalizeObjectUnits(inputObject){var normalizedInput={},normalizedProp,prop;for(prop in inputObject){if(hasOwnProp(inputObject,prop)){normalizedProp=normalizeUnits(prop);if(normalizedProp){normalizedInput[normalizedProp]=inputObject[prop];}}}
return normalizedInput;}
var priorities={};function addUnitPriority(unit,priority){priorities[unit]=priority;}
function getPrioritizedUnits(unitsObj){var units=[];for(var u in unitsObj){units.push({unit:u,priority:priorities[u]});}
units.sort(function(a,b){return a.priority-b.priority;});return units;}
function zeroFill(number,targetLength,forceSign){var absNumber=''+Math.abs(number),zerosToFill=targetLength-absNumber.length,sign=number>=0;return(sign?(forceSign?'+':''):'-')+
Math.pow(10,Math.max(0,zerosToFill)).toString().substr(1)+absNumber;}
var formattingTokens=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;var localFormattingTokens=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;var formatFunctions={};var formatTokenFunctions={};function addFormatToken(token,padded,ordinal,callback){var func=callback;if(typeof callback==='string'){func=function(){return this[callback]();};}
if(token){formatTokenFunctions[token]=func;}
if(padded){formatTokenFunctions[padded[0]]=function(){return zeroFill(func.apply(this,arguments),padded[1],padded[2]);};}
if(ordinal){formatTokenFunctions[ordinal]=function(){return this.localeData().ordinal(func.apply(this,arguments),token);};}}
function removeFormattingTokens(input){if(input.match(/\[[\s\S]/)){return input.replace(/^\[|\]$/g,'');}
return input.replace(/\\/g,'');}
function makeFormatFunction(format){var array=format.match(formattingTokens),i,length;for(i=0,length=array.length;i<length;i++){if(formatTokenFunctions[array[i]]){array[i]=formatTokenFunctions[array[i]];}else{array[i]=removeFormattingTokens(array[i]);}}
return function(mom){var output='',i;for(i=0;i<length;i++){output+=isFunction(array[i])?array[i].call(mom,format):array[i];}
return output;};}
function formatMoment(m,format){if(!m.isValid()){return m.localeData().invalidDate();}
format=expandFormat(format,m.localeData());formatFunctions[format]=formatFunctions[format]||makeFormatFunction(format);return formatFunctions[format](m);}
function expandFormat(format,locale){var i=5;function replaceLongDateFormatTokens(input){return locale.longDateFormat(input)||input;}
localFormattingTokens.lastIndex=0;while(i>=0&&localFormattingTokens.test(format)){format=format.replace(localFormattingTokens,replaceLongDateFormatTokens);localFormattingTokens.lastIndex=0;i-=1;}
return format;}
var match1=/\d/;var match2=/\d\d/;var match3=/\d{3}/;var match4=/\d{4}/;var match6=/[+-]?\d{6}/;var match1to2=/\d\d?/;var match3to4=/\d\d\d\d?/;var match5to6=/\d\d\d\d\d\d?/;var match1to3=/\d{1,3}/;var match1to4=/\d{1,4}/;var match1to6=/[+-]?\d{1,6}/;var matchUnsigned=/\d+/;var matchSigned=/[+-]?\d+/;var matchOffset=/Z|[+-]\d\d:?\d\d/gi;var matchShortOffset=/Z|[+-]\d\d(?::?\d\d)?/gi;var matchTimestamp=/[+-]?\d+(\.\d{1,3})?/;var matchWord=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;var regexes={};function addRegexToken(token,regex,strictRegex){regexes[token]=isFunction(regex)?regex:function(isStrict,localeData){return(isStrict&&strictRegex)?strictRegex:regex;};}
function getParseRegexForToken(token,config){if(!hasOwnProp(regexes,token)){return new RegExp(unescapeFormat(token));}
return regexes[token](config._strict,config._locale);}
function unescapeFormat(s){return regexEscape(s.replace('\\','').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(matched,p1,p2,p3,p4){return p1||p2||p3||p4;}));}
function regexEscape(s){return s.replace(/[-\/\\^$*+?.()|[\]{}]/g,'\\$&');}
var tokens={};function addParseToken(token,callback){var i,func=callback;if(typeof token==='string'){token=[token];}
if(isNumber(callback)){func=function(input,array){array[callback]=toInt(input);};}
for(i=0;i<token.length;i++){tokens[token[i]]=func;}}
function addWeekParseToken(token,callback){addParseToken(token,function(input,array,config,token){config._w=config._w||{};callback(input,config._w,config,token);});}
function addTimeToArrayFromToken(token,input,config){if(input!=null&&hasOwnProp(tokens,token)){tokens[token](input,config._a,config,token);}}
var YEAR=0;var MONTH=1;var DATE=2;var HOUR=3;var MINUTE=4;var SECOND=5;var MILLISECOND=6;var WEEK=7;var WEEKDAY=8;addFormatToken('Y',0,0,function(){var y=this.year();return y<=9999?''+y:'+'+y;});addFormatToken(0,['YY',2],0,function(){return this.year()%100;});addFormatToken(0,['YYYY',4],0,'year');addFormatToken(0,['YYYYY',5],0,'year');addFormatToken(0,['YYYYYY',6,true],0,'year');addUnitAlias('year','y');addUnitPriority('year',1);addRegexToken('Y',matchSigned);addRegexToken('YY',match1to2,match2);addRegexToken('YYYY',match1to4,match4);addRegexToken('YYYYY',match1to6,match6);addRegexToken('YYYYYY',match1to6,match6);addParseToken(['YYYYY','YYYYYY'],YEAR);addParseToken('YYYY',function(input,array){array[YEAR]=input.length===2?hooks.parseTwoDigitYear(input):toInt(input);});addParseToken('YY',function(input,array){array[YEAR]=hooks.parseTwoDigitYear(input);});addParseToken('Y',function(input,array){array[YEAR]=parseInt(input,10);});function daysInYear(year){return isLeapYear(year)?366:365;}
function isLeapYear(year){return(year%4===0&&year%100!==0)||year%400===0;}
hooks.parseTwoDigitYear=function(input){return toInt(input)+(toInt(input)>68?1900:2000);};var getSetYear=makeGetSet('FullYear',true);function getIsLeapYear(){return isLeapYear(this.year());}
function makeGetSet(unit,keepTime){return function(value){if(value!=null){set$1(this,unit,value);hooks.updateOffset(this,keepTime);return this;}else{return get(this,unit);}};}
function get(mom,unit){return mom.isValid()?mom._d['get'+(mom._isUTC?'UTC':'')+unit]():NaN;}
function set$1(mom,unit,value){if(mom.isValid()&&!isNaN(value)){if(unit==='FullYear'&&isLeapYear(mom.year())&&mom.month()===1&&mom.date()===29){mom._d['set'+(mom._isUTC?'UTC':'')+unit](value,mom.month(),daysInMonth(value,mom.month()));}
else{mom._d['set'+(mom._isUTC?'UTC':'')+unit](value);}}}
function stringGet(units){units=normalizeUnits(units);if(isFunction(this[units])){return this[units]();}
return this;}
function stringSet(units,value){if(typeof units==='object'){units=normalizeObjectUnits(units);var prioritized=getPrioritizedUnits(units);for(var i=0;i<prioritized.length;i++){this[prioritized[i].unit](units[prioritized[i].unit]);}}else{units=normalizeUnits(units);if(isFunction(this[units])){return this[units](value);}}
return this;}
function mod(n,x){return((n%x)+x)%x;}
var indexOf;if(Array.prototype.indexOf){indexOf=Array.prototype.indexOf;}else{indexOf=function(o){var i;for(i=0;i<this.length;++i){if(this[i]===o){return i;}}
return-1;};}
function daysInMonth(year,month){if(isNaN(year)||isNaN(month)){return NaN;}
var modMonth=mod(month,12);year+=(month-modMonth)/12;return modMonth===1?(isLeapYear(year)?29:28):(31-modMonth%7%2);}
addFormatToken('M',['MM',2],'Mo',function(){return this.month()+1;});addFormatToken('MMM',0,0,function(format){return this.localeData().monthsShort(this,format);});addFormatToken('MMMM',0,0,function(format){return this.localeData().months(this,format);});addUnitAlias('month','M');addUnitPriority('month',8);addRegexToken('M',match1to2);addRegexToken('MM',match1to2,match2);addRegexToken('MMM',function(isStrict,locale){return locale.monthsShortRegex(isStrict);});addRegexToken('MMMM',function(isStrict,locale){return locale.monthsRegex(isStrict);});addParseToken(['M','MM'],function(input,array){array[MONTH]=toInt(input)-1;});addParseToken(['MMM','MMMM'],function(input,array,config,token){var month=config._locale.monthsParse(input,token,config._strict);if(month!=null){array[MONTH]=month;}else{getParsingFlags(config).invalidMonth=input;}});var MONTHS_IN_FORMAT=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/;var defaultLocaleMonths='January_February_March_April_May_June_July_August_September_October_November_December'.split('_');function localeMonths(m,format){if(!m){return isArray(this._months)?this._months:this._months['standalone'];}
return isArray(this._months)?this._months[m.month()]:this._months[(this._months.isFormat||MONTHS_IN_FORMAT).test(format)?'format':'standalone'][m.month()];}
var defaultLocaleMonthsShort='Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');function localeMonthsShort(m,format){if(!m){return isArray(this._monthsShort)?this._monthsShort:this._monthsShort['standalone'];}
return isArray(this._monthsShort)?this._monthsShort[m.month()]:this._monthsShort[MONTHS_IN_FORMAT.test(format)?'format':'standalone'][m.month()];}
function handleStrictParse(monthName,format,strict){var i,ii,mom,llc=monthName.toLocaleLowerCase();if(!this._monthsParse){this._monthsParse=[];this._longMonthsParse=[];this._shortMonthsParse=[];for(i=0;i<12;++i){mom=createUTC([2000,i]);this._shortMonthsParse[i]=this.monthsShort(mom,'').toLocaleLowerCase();this._longMonthsParse[i]=this.months(mom,'').toLocaleLowerCase();}}
if(strict){if(format==='MMM'){ii=indexOf.call(this._shortMonthsParse,llc);return ii!==-1?ii:null;}else{ii=indexOf.call(this._longMonthsParse,llc);return ii!==-1?ii:null;}}else{if(format==='MMM'){ii=indexOf.call(this._shortMonthsParse,llc);if(ii!==-1){return ii;}
ii=indexOf.call(this._longMonthsParse,llc);return ii!==-1?ii:null;}else{ii=indexOf.call(this._longMonthsParse,llc);if(ii!==-1){return ii;}
ii=indexOf.call(this._shortMonthsParse,llc);return ii!==-1?ii:null;}}}
function localeMonthsParse(monthName,format,strict){var i,mom,regex;if(this._monthsParseExact){return handleStrictParse.call(this,monthName,format,strict);}
if(!this._monthsParse){this._monthsParse=[];this._longMonthsParse=[];this._shortMonthsParse=[];}
for(i=0;i<12;i++){mom=createUTC([2000,i]);if(strict&&!this._longMonthsParse[i]){this._longMonthsParse[i]=new RegExp('^'+this.months(mom,'').replace('.','')+'$','i');this._shortMonthsParse[i]=new RegExp('^'+this.monthsShort(mom,'').replace('.','')+'$','i');}
if(!strict&&!this._monthsParse[i]){regex='^'+this.months(mom,'')+'|^'+this.monthsShort(mom,'');this._monthsParse[i]=new RegExp(regex.replace('.',''),'i');}
if(strict&&format==='MMMM'&&this._longMonthsParse[i].test(monthName)){return i;}else if(strict&&format==='MMM'&&this._shortMonthsParse[i].test(monthName)){return i;}else if(!strict&&this._monthsParse[i].test(monthName)){return i;}}}
function setMonth(mom,value){var dayOfMonth;if(!mom.isValid()){return mom;}
if(typeof value==='string'){if(/^\d+$/.test(value)){value=toInt(value);}else{value=mom.localeData().monthsParse(value);if(!isNumber(value)){return mom;}}}
dayOfMonth=Math.min(mom.date(),daysInMonth(mom.year(),value));mom._d['set'+(mom._isUTC?'UTC':'')+'Month'](value,dayOfMonth);return mom;}
function getSetMonth(value){if(value!=null){setMonth(this,value);hooks.updateOffset(this,true);return this;}else{return get(this,'Month');}}
function getDaysInMonth(){return daysInMonth(this.year(),this.month());}
var defaultMonthsShortRegex=matchWord;function monthsShortRegex(isStrict){if(this._monthsParseExact){if(!hasOwnProp(this,'_monthsRegex')){computeMonthsParse.call(this);}
if(isStrict){return this._monthsShortStrictRegex;}else{return this._monthsShortRegex;}}else{if(!hasOwnProp(this,'_monthsShortRegex')){this._monthsShortRegex=defaultMonthsShortRegex;}
return this._monthsShortStrictRegex&&isStrict?this._monthsShortStrictRegex:this._monthsShortRegex;}}
var defaultMonthsRegex=matchWord;function monthsRegex(isStrict){if(this._monthsParseExact){if(!hasOwnProp(this,'_monthsRegex')){computeMonthsParse.call(this);}
if(isStrict){return this._monthsStrictRegex;}else{return this._monthsRegex;}}else{if(!hasOwnProp(this,'_monthsRegex')){this._monthsRegex=defaultMonthsRegex;}
return this._monthsStrictRegex&&isStrict?this._monthsStrictRegex:this._monthsRegex;}}
function computeMonthsParse(){function cmpLenRev(a,b){return b.length-a.length;}
var shortPieces=[],longPieces=[],mixedPieces=[],i,mom;for(i=0;i<12;i++){mom=createUTC([2000,i]);shortPieces.push(this.monthsShort(mom,''));longPieces.push(this.months(mom,''));mixedPieces.push(this.months(mom,''));mixedPieces.push(this.monthsShort(mom,''));}
shortPieces.sort(cmpLenRev);longPieces.sort(cmpLenRev);mixedPieces.sort(cmpLenRev);for(i=0;i<12;i++){shortPieces[i]=regexEscape(shortPieces[i]);longPieces[i]=regexEscape(longPieces[i]);}
for(i=0;i<24;i++){mixedPieces[i]=regexEscape(mixedPieces[i]);}
this._monthsRegex=new RegExp('^('+mixedPieces.join('|')+')','i');this._monthsShortRegex=this._monthsRegex;this._monthsStrictRegex=new RegExp('^('+longPieces.join('|')+')','i');this._monthsShortStrictRegex=new RegExp('^('+shortPieces.join('|')+')','i');}
function createDate(y,m,d,h,M,s,ms){var date;if(y<100&&y>=0){date=new Date(y+400,m,d,h,M,s,ms);if(isFinite(date.getFullYear())){date.setFullYear(y);}}else{date=new Date(y,m,d,h,M,s,ms);}
return date;}
function createUTCDate(y){var date;if(y<100&&y>=0){var args=Array.prototype.slice.call(arguments);args[0]=y+400;date=new Date(Date.UTC.apply(null,args));if(isFinite(date.getUTCFullYear())){date.setUTCFullYear(y);}}else{date=new Date(Date.UTC.apply(null,arguments));}
return date;}
function firstWeekOffset(year,dow,doy){var
fwd=7+dow-doy,fwdlw=(7+createUTCDate(year,0,fwd).getUTCDay()-dow)%7;return-fwdlw+fwd-1;}
function dayOfYearFromWeeks(year,week,weekday,dow,doy){var localWeekday=(7+weekday-dow)%7,weekOffset=firstWeekOffset(year,dow,doy),dayOfYear=1+7*(week-1)+localWeekday+weekOffset,resYear,resDayOfYear;if(dayOfYear<=0){resYear=year-1;resDayOfYear=daysInYear(resYear)+dayOfYear;}else if(dayOfYear>daysInYear(year)){resYear=year+1;resDayOfYear=dayOfYear-daysInYear(year);}else{resYear=year;resDayOfYear=dayOfYear;}
return{year:resYear,dayOfYear:resDayOfYear};}
function weekOfYear(mom,dow,doy){var weekOffset=firstWeekOffset(mom.year(),dow,doy),week=Math.floor((mom.dayOfYear()-weekOffset-1)/7)+1,resWeek,resYear;if(week<1){resYear=mom.year()-1;resWeek=week+weeksInYear(resYear,dow,doy);}else if(week>weeksInYear(mom.year(),dow,doy)){resWeek=week-weeksInYear(mom.year(),dow,doy);resYear=mom.year()+1;}else{resYear=mom.year();resWeek=week;}
return{week:resWeek,year:resYear};}
function weeksInYear(year,dow,doy){var weekOffset=firstWeekOffset(year,dow,doy),weekOffsetNext=firstWeekOffset(year+1,dow,doy);return(daysInYear(year)-weekOffset+weekOffsetNext)/7;}
addFormatToken('w',['ww',2],'wo','week');addFormatToken('W',['WW',2],'Wo','isoWeek');addUnitAlias('week','w');addUnitAlias('isoWeek','W');addUnitPriority('week',5);addUnitPriority('isoWeek',5);addRegexToken('w',match1to2);addRegexToken('ww',match1to2,match2);addRegexToken('W',match1to2);addRegexToken('WW',match1to2,match2);addWeekParseToken(['w','ww','W','WW'],function(input,week,config,token){week[token.substr(0,1)]=toInt(input);});function localeWeek(mom){return weekOfYear(mom,this._week.dow,this._week.doy).week;}
var defaultLocaleWeek={dow:0,doy:6};function localeFirstDayOfWeek(){return this._week.dow;}
function localeFirstDayOfYear(){return this._week.doy;}
function getSetWeek(input){var week=this.localeData().week(this);return input==null?week:this.add((input-week)*7,'d');}
function getSetISOWeek(input){var week=weekOfYear(this,1,4).week;return input==null?week:this.add((input-week)*7,'d');}
addFormatToken('d',0,'do','day');addFormatToken('dd',0,0,function(format){return this.localeData().weekdaysMin(this,format);});addFormatToken('ddd',0,0,function(format){return this.localeData().weekdaysShort(this,format);});addFormatToken('dddd',0,0,function(format){return this.localeData().weekdays(this,format);});addFormatToken('e',0,0,'weekday');addFormatToken('E',0,0,'isoWeekday');addUnitAlias('day','d');addUnitAlias('weekday','e');addUnitAlias('isoWeekday','E');addUnitPriority('day',11);addUnitPriority('weekday',11);addUnitPriority('isoWeekday',11);addRegexToken('d',match1to2);addRegexToken('e',match1to2);addRegexToken('E',match1to2);addRegexToken('dd',function(isStrict,locale){return locale.weekdaysMinRegex(isStrict);});addRegexToken('ddd',function(isStrict,locale){return locale.weekdaysShortRegex(isStrict);});addRegexToken('dddd',function(isStrict,locale){return locale.weekdaysRegex(isStrict);});addWeekParseToken(['dd','ddd','dddd'],function(input,week,config,token){var weekday=config._locale.weekdaysParse(input,token,config._strict);if(weekday!=null){week.d=weekday;}else{getParsingFlags(config).invalidWeekday=input;}});addWeekParseToken(['d','e','E'],function(input,week,config,token){week[token]=toInt(input);});function parseWeekday(input,locale){if(typeof input!=='string'){return input;}
if(!isNaN(input)){return parseInt(input,10);}
input=locale.weekdaysParse(input);if(typeof input==='number'){return input;}
return null;}
function parseIsoWeekday(input,locale){if(typeof input==='string'){return locale.weekdaysParse(input)%7||7;}
return isNaN(input)?null:input;}
function shiftWeekdays(ws,n){return ws.slice(n,7).concat(ws.slice(0,n));}
var defaultLocaleWeekdays='Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');function localeWeekdays(m,format){var weekdays=isArray(this._weekdays)?this._weekdays:this._weekdays[(m&&m!==true&&this._weekdays.isFormat.test(format))?'format':'standalone'];return(m===true)?shiftWeekdays(weekdays,this._week.dow):(m)?weekdays[m.day()]:weekdays;}
var defaultLocaleWeekdaysShort='Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');function localeWeekdaysShort(m){return(m===true)?shiftWeekdays(this._weekdaysShort,this._week.dow):(m)?this._weekdaysShort[m.day()]:this._weekdaysShort;}
var defaultLocaleWeekdaysMin='Su_Mo_Tu_We_Th_Fr_Sa'.split('_');function localeWeekdaysMin(m){return(m===true)?shiftWeekdays(this._weekdaysMin,this._week.dow):(m)?this._weekdaysMin[m.day()]:this._weekdaysMin;}
function handleStrictParse$1(weekdayName,format,strict){var i,ii,mom,llc=weekdayName.toLocaleLowerCase();if(!this._weekdaysParse){this._weekdaysParse=[];this._shortWeekdaysParse=[];this._minWeekdaysParse=[];for(i=0;i<7;++i){mom=createUTC([2000,1]).day(i);this._minWeekdaysParse[i]=this.weekdaysMin(mom,'').toLocaleLowerCase();this._shortWeekdaysParse[i]=this.weekdaysShort(mom,'').toLocaleLowerCase();this._weekdaysParse[i]=this.weekdays(mom,'').toLocaleLowerCase();}}
if(strict){if(format==='dddd'){ii=indexOf.call(this._weekdaysParse,llc);return ii!==-1?ii:null;}else if(format==='ddd'){ii=indexOf.call(this._shortWeekdaysParse,llc);return ii!==-1?ii:null;}else{ii=indexOf.call(this._minWeekdaysParse,llc);return ii!==-1?ii:null;}}else{if(format==='dddd'){ii=indexOf.call(this._weekdaysParse,llc);if(ii!==-1){return ii;}
ii=indexOf.call(this._shortWeekdaysParse,llc);if(ii!==-1){return ii;}
ii=indexOf.call(this._minWeekdaysParse,llc);return ii!==-1?ii:null;}else if(format==='ddd'){ii=indexOf.call(this._shortWeekdaysParse,llc);if(ii!==-1){return ii;}
ii=indexOf.call(this._weekdaysParse,llc);if(ii!==-1){return ii;}
ii=indexOf.call(this._minWeekdaysParse,llc);return ii!==-1?ii:null;}else{ii=indexOf.call(this._minWeekdaysParse,llc);if(ii!==-1){return ii;}
ii=indexOf.call(this._weekdaysParse,llc);if(ii!==-1){return ii;}
ii=indexOf.call(this._shortWeekdaysParse,llc);return ii!==-1?ii:null;}}}
function localeWeekdaysParse(weekdayName,format,strict){var i,mom,regex;if(this._weekdaysParseExact){return handleStrictParse$1.call(this,weekdayName,format,strict);}
if(!this._weekdaysParse){this._weekdaysParse=[];this._minWeekdaysParse=[];this._shortWeekdaysParse=[];this._fullWeekdaysParse=[];}
for(i=0;i<7;i++){mom=createUTC([2000,1]).day(i);if(strict&&!this._fullWeekdaysParse[i]){this._fullWeekdaysParse[i]=new RegExp('^'+this.weekdays(mom,'').replace('.','\\.?')+'$','i');this._shortWeekdaysParse[i]=new RegExp('^'+this.weekdaysShort(mom,'').replace('.','\\.?')+'$','i');this._minWeekdaysParse[i]=new RegExp('^'+this.weekdaysMin(mom,'').replace('.','\\.?')+'$','i');}
if(!this._weekdaysParse[i]){regex='^'+this.weekdays(mom,'')+'|^'+this.weekdaysShort(mom,'')+'|^'+this.weekdaysMin(mom,'');this._weekdaysParse[i]=new RegExp(regex.replace('.',''),'i');}
if(strict&&format==='dddd'&&this._fullWeekdaysParse[i].test(weekdayName)){return i;}else if(strict&&format==='ddd'&&this._shortWeekdaysParse[i].test(weekdayName)){return i;}else if(strict&&format==='dd'&&this._minWeekdaysParse[i].test(weekdayName)){return i;}else if(!strict&&this._weekdaysParse[i].test(weekdayName)){return i;}}}
function getSetDayOfWeek(input){if(!this.isValid()){return input!=null?this:NaN;}
var day=this._isUTC?this._d.getUTCDay():this._d.getDay();if(input!=null){input=parseWeekday(input,this.localeData());return this.add(input-day,'d');}else{return day;}}
function getSetLocaleDayOfWeek(input){if(!this.isValid()){return input!=null?this:NaN;}
var weekday=(this.day()+7-this.localeData()._week.dow)%7;return input==null?weekday:this.add(input-weekday,'d');}
function getSetISODayOfWeek(input){if(!this.isValid()){return input!=null?this:NaN;}
if(input!=null){var weekday=parseIsoWeekday(input,this.localeData());return this.day(this.day()%7?weekday:weekday-7);}else{return this.day()||7;}}
var defaultWeekdaysRegex=matchWord;function weekdaysRegex(isStrict){if(this._weekdaysParseExact){if(!hasOwnProp(this,'_weekdaysRegex')){computeWeekdaysParse.call(this);}
if(isStrict){return this._weekdaysStrictRegex;}else{return this._weekdaysRegex;}}else{if(!hasOwnProp(this,'_weekdaysRegex')){this._weekdaysRegex=defaultWeekdaysRegex;}
return this._weekdaysStrictRegex&&isStrict?this._weekdaysStrictRegex:this._weekdaysRegex;}}
var defaultWeekdaysShortRegex=matchWord;function weekdaysShortRegex(isStrict){if(this._weekdaysParseExact){if(!hasOwnProp(this,'_weekdaysRegex')){computeWeekdaysParse.call(this);}
if(isStrict){return this._weekdaysShortStrictRegex;}else{return this._weekdaysShortRegex;}}else{if(!hasOwnProp(this,'_weekdaysShortRegex')){this._weekdaysShortRegex=defaultWeekdaysShortRegex;}
return this._weekdaysShortStrictRegex&&isStrict?this._weekdaysShortStrictRegex:this._weekdaysShortRegex;}}
var defaultWeekdaysMinRegex=matchWord;function weekdaysMinRegex(isStrict){if(this._weekdaysParseExact){if(!hasOwnProp(this,'_weekdaysRegex')){computeWeekdaysParse.call(this);}
if(isStrict){return this._weekdaysMinStrictRegex;}else{return this._weekdaysMinRegex;}}else{if(!hasOwnProp(this,'_weekdaysMinRegex')){this._weekdaysMinRegex=defaultWeekdaysMinRegex;}
return this._weekdaysMinStrictRegex&&isStrict?this._weekdaysMinStrictRegex:this._weekdaysMinRegex;}}
function computeWeekdaysParse(){function cmpLenRev(a,b){return b.length-a.length;}
var minPieces=[],shortPieces=[],longPieces=[],mixedPieces=[],i,mom,minp,shortp,longp;for(i=0;i<7;i++){mom=createUTC([2000,1]).day(i);minp=this.weekdaysMin(mom,'');shortp=this.weekdaysShort(mom,'');longp=this.weekdays(mom,'');minPieces.push(minp);shortPieces.push(shortp);longPieces.push(longp);mixedPieces.push(minp);mixedPieces.push(shortp);mixedPieces.push(longp);}
minPieces.sort(cmpLenRev);shortPieces.sort(cmpLenRev);longPieces.sort(cmpLenRev);mixedPieces.sort(cmpLenRev);for(i=0;i<7;i++){shortPieces[i]=regexEscape(shortPieces[i]);longPieces[i]=regexEscape(longPieces[i]);mixedPieces[i]=regexEscape(mixedPieces[i]);}
this._weekdaysRegex=new RegExp('^('+mixedPieces.join('|')+')','i');this._weekdaysShortRegex=this._weekdaysRegex;this._weekdaysMinRegex=this._weekdaysRegex;this._weekdaysStrictRegex=new RegExp('^('+longPieces.join('|')+')','i');this._weekdaysShortStrictRegex=new RegExp('^('+shortPieces.join('|')+')','i');this._weekdaysMinStrictRegex=new RegExp('^('+minPieces.join('|')+')','i');}
function hFormat(){return this.hours()%12||12;}
function kFormat(){return this.hours()||24;}
addFormatToken('H',['HH',2],0,'hour');addFormatToken('h',['hh',2],0,hFormat);addFormatToken('k',['kk',2],0,kFormat);addFormatToken('hmm',0,0,function(){return ''+hFormat.apply(this)+zeroFill(this.minutes(),2);});addFormatToken('hmmss',0,0,function(){return ''+hFormat.apply(this)+zeroFill(this.minutes(),2)+
zeroFill(this.seconds(),2);});addFormatToken('Hmm',0,0,function(){return ''+this.hours()+zeroFill(this.minutes(),2);});addFormatToken('Hmmss',0,0,function(){return ''+this.hours()+zeroFill(this.minutes(),2)+
zeroFill(this.seconds(),2);});function meridiem(token,lowercase){addFormatToken(token,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),lowercase);});}
meridiem('a',true);meridiem('A',false);addUnitAlias('hour','h');addUnitPriority('hour',13);function matchMeridiem(isStrict,locale){return locale._meridiemParse;}
addRegexToken('a',matchMeridiem);addRegexToken('A',matchMeridiem);addRegexToken('H',match1to2);addRegexToken('h',match1to2);addRegexToken('k',match1to2);addRegexToken('HH',match1to2,match2);addRegexToken('hh',match1to2,match2);addRegexToken('kk',match1to2,match2);addRegexToken('hmm',match3to4);addRegexToken('hmmss',match5to6);addRegexToken('Hmm',match3to4);addRegexToken('Hmmss',match5to6);addParseToken(['H','HH'],HOUR);addParseToken(['k','kk'],function(input,array,config){var kInput=toInt(input);array[HOUR]=kInput===24?0:kInput;});addParseToken(['a','A'],function(input,array,config){config._isPm=config._locale.isPM(input);config._meridiem=input;});addParseToken(['h','hh'],function(input,array,config){array[HOUR]=toInt(input);getParsingFlags(config).bigHour=true;});addParseToken('hmm',function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos));array[MINUTE]=toInt(input.substr(pos));getParsingFlags(config).bigHour=true;});addParseToken('hmmss',function(input,array,config){var pos1=input.length-4;var pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1));array[MINUTE]=toInt(input.substr(pos1,2));array[SECOND]=toInt(input.substr(pos2));getParsingFlags(config).bigHour=true;});addParseToken('Hmm',function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos));array[MINUTE]=toInt(input.substr(pos));});addParseToken('Hmmss',function(input,array,config){var pos1=input.length-4;var pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1));array[MINUTE]=toInt(input.substr(pos1,2));array[SECOND]=toInt(input.substr(pos2));});function localeIsPM(input){return((input+'').toLowerCase().charAt(0)==='p');}
var defaultLocaleMeridiemParse=/[ap]\.?m?\.?/i;function localeMeridiem(hours,minutes,isLower){if(hours>11){return isLower?'pm':'PM';}else{return isLower?'am':'AM';}}
var getSetHour=makeGetSet('Hours',true);var baseConfig={calendar:defaultCalendar,longDateFormat:defaultLongDateFormat,invalidDate:defaultInvalidDate,ordinal:defaultOrdinal,dayOfMonthOrdinalParse:defaultDayOfMonthOrdinalParse,relativeTime:defaultRelativeTime,months:defaultLocaleMonths,monthsShort:defaultLocaleMonthsShort,week:defaultLocaleWeek,weekdays:defaultLocaleWeekdays,weekdaysMin:defaultLocaleWeekdaysMin,weekdaysShort:defaultLocaleWeekdaysShort,meridiemParse:defaultLocaleMeridiemParse};var locales={};var localeFamilies={};var globalLocale;function normalizeLocale(key){return key?key.toLowerCase().replace('_','-'):key;}
function chooseLocale(names){var i=0,j,next,locale,split;while(i<names.length){split=normalizeLocale(names[i]).split('-');j=split.length;next=normalizeLocale(names[i+1]);next=next?next.split('-'):null;while(j>0){locale=loadLocale(split.slice(0,j).join('-'));if(locale){return locale;}
if(next&&next.length>=j&&compareArrays(split,next,true)>=j-1){break;}
j--;}
i++;}
return globalLocale;}
function loadLocale(name){var oldLocale=null;if(!locales[name]&&(typeof module!=='undefined')&&module&&module.exports){try{oldLocale=globalLocale._abbr;var aliasedRequire=require;aliasedRequire('./locale/'+name);getSetGlobalLocale(oldLocale);}catch(e){}}
return locales[name];}
function getSetGlobalLocale(key,values){var data;if(key){if(isUndefined(values)){data=getLocale(key);}
else{data=defineLocale(key,values);}
if(data){globalLocale=data;}
else{if((typeof console!=='undefined')&&console.warn){console.warn('Locale '+key+' not found. Did you forget to load it?');}}}
return globalLocale._abbr;}
function defineLocale(name,config){if(config!==null){var locale,parentConfig=baseConfig;config.abbr=name;if(locales[name]!=null){deprecateSimple('defineLocaleOverride','use moment.updateLocale(localeName, config) to change '+
'an existing locale. moment.defineLocale(localeName, '+
'config) should only be used for creating a new locale '+
'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');parentConfig=locales[name]._config;}else if(config.parentLocale!=null){if(locales[config.parentLocale]!=null){parentConfig=locales[config.parentLocale]._config;}else{locale=loadLocale(config.parentLocale);if(locale!=null){parentConfig=locale._config;}else{if(!localeFamilies[config.parentLocale]){localeFamilies[config.parentLocale]=[];}
localeFamilies[config.parentLocale].push({name:name,config:config});return null;}}}
locales[name]=new Locale(mergeConfigs(parentConfig,config));if(localeFamilies[name]){localeFamilies[name].forEach(function(x){defineLocale(x.name,x.config);});}
getSetGlobalLocale(name);return locales[name];}else{delete locales[name];return null;}}
function updateLocale(name,config){if(config!=null){var locale,tmpLocale,parentConfig=baseConfig;tmpLocale=loadLocale(name);if(tmpLocale!=null){parentConfig=tmpLocale._config;}
config=mergeConfigs(parentConfig,config);locale=new Locale(config);locale.parentLocale=locales[name];locales[name]=locale;getSetGlobalLocale(name);}else{if(locales[name]!=null){if(locales[name].parentLocale!=null){locales[name]=locales[name].parentLocale;}else if(locales[name]!=null){delete locales[name];}}}
return locales[name];}
function getLocale(key){var locale;if(key&&key._locale&&key._locale._abbr){key=key._locale._abbr;}
if(!key){return globalLocale;}
if(!isArray(key)){locale=loadLocale(key);if(locale){return locale;}
key=[key];}
return chooseLocale(key);}
function listLocales(){return keys(locales);}
function checkOverflow(m){var overflow;var a=m._a;if(a&&getParsingFlags(m).overflow===-2){overflow=a[MONTH]<0||a[MONTH]>11?MONTH:a[DATE]<1||a[DATE]>daysInMonth(a[YEAR],a[MONTH])?DATE:a[HOUR]<0||a[HOUR]>24||(a[HOUR]===24&&(a[MINUTE]!==0||a[SECOND]!==0||a[MILLISECOND]!==0))?HOUR:a[MINUTE]<0||a[MINUTE]>59?MINUTE:a[SECOND]<0||a[SECOND]>59?SECOND:a[MILLISECOND]<0||a[MILLISECOND]>999?MILLISECOND:-1;if(getParsingFlags(m)._overflowDayOfYear&&(overflow<YEAR||overflow>DATE)){overflow=DATE;}
if(getParsingFlags(m)._overflowWeeks&&overflow===-1){overflow=WEEK;}
if(getParsingFlags(m)._overflowWeekday&&overflow===-1){overflow=WEEKDAY;}
getParsingFlags(m).overflow=overflow;}
return m;}
function defaults(a,b,c){if(a!=null){return a;}
if(b!=null){return b;}
return c;}
function currentDateArray(config){var nowValue=new Date(hooks.now());if(config._useUTC){return[nowValue.getUTCFullYear(),nowValue.getUTCMonth(),nowValue.getUTCDate()];}
return[nowValue.getFullYear(),nowValue.getMonth(),nowValue.getDate()];}
function configFromArray(config){var i,date,input=[],currentDate,expectedWeekday,yearToUse;if(config._d){return;}
currentDate=currentDateArray(config);if(config._w&&config._a[DATE]==null&&config._a[MONTH]==null){dayOfYearFromWeekInfo(config);}
if(config._dayOfYear!=null){yearToUse=defaults(config._a[YEAR],currentDate[YEAR]);if(config._dayOfYear>daysInYear(yearToUse)||config._dayOfYear===0){getParsingFlags(config)._overflowDayOfYear=true;}
date=createUTCDate(yearToUse,0,config._dayOfYear);config._a[MONTH]=date.getUTCMonth();config._a[DATE]=date.getUTCDate();}
for(i=0;i<3&&config._a[i]==null;++i){config._a[i]=input[i]=currentDate[i];}
for(;i<7;i++){config._a[i]=input[i]=(config._a[i]==null)?(i===2?1:0):config._a[i];}
if(config._a[HOUR]===24&&config._a[MINUTE]===0&&config._a[SECOND]===0&&config._a[MILLISECOND]===0){config._nextDay=true;config._a[HOUR]=0;}
config._d=(config._useUTC?createUTCDate:createDate).apply(null,input);expectedWeekday=config._useUTC?config._d.getUTCDay():config._d.getDay();if(config._tzm!=null){config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm);}
if(config._nextDay){config._a[HOUR]=24;}
if(config._w&&typeof config._w.d!=='undefined'&&config._w.d!==expectedWeekday){getParsingFlags(config).weekdayMismatch=true;}}
function dayOfYearFromWeekInfo(config){var w,weekYear,week,weekday,dow,doy,temp,weekdayOverflow;w=config._w;if(w.GG!=null||w.W!=null||w.E!=null){dow=1;doy=4;weekYear=defaults(w.GG,config._a[YEAR],weekOfYear(createLocal(),1,4).year);week=defaults(w.W,1);weekday=defaults(w.E,1);if(weekday<1||weekday>7){weekdayOverflow=true;}}else{dow=config._locale._week.dow;doy=config._locale._week.doy;var curWeek=weekOfYear(createLocal(),dow,doy);weekYear=defaults(w.gg,config._a[YEAR],curWeek.year);week=defaults(w.w,curWeek.week);if(w.d!=null){weekday=w.d;if(weekday<0||weekday>6){weekdayOverflow=true;}}else if(w.e!=null){weekday=w.e+dow;if(w.e<0||w.e>6){weekdayOverflow=true;}}else{weekday=dow;}}
if(week<1||week>weeksInYear(weekYear,dow,doy)){getParsingFlags(config)._overflowWeeks=true;}else if(weekdayOverflow!=null){getParsingFlags(config)._overflowWeekday=true;}else{temp=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy);config._a[YEAR]=temp.year;config._dayOfYear=temp.dayOfYear;}}
var extendedIsoRegex=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/;var basicIsoRegex=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/;var tzRegex=/Z|[+-]\d\d(?::?\d\d)?/;var isoDates=[['YYYYYY-MM-DD',/[+-]\d{6}-\d\d-\d\d/],['YYYY-MM-DD',/\d{4}-\d\d-\d\d/],['GGGG-[W]WW-E',/\d{4}-W\d\d-\d/],['GGGG-[W]WW',/\d{4}-W\d\d/,false],['YYYY-DDD',/\d{4}-\d{3}/],['YYYY-MM',/\d{4}-\d\d/,false],['YYYYYYMMDD',/[+-]\d{10}/],['YYYYMMDD',/\d{8}/],['GGGG[W]WWE',/\d{4}W\d{3}/],['GGGG[W]WW',/\d{4}W\d{2}/,false],['YYYYDDD',/\d{7}/]];var isoTimes=[['HH:mm:ss.SSSS',/\d\d:\d\d:\d\d\.\d+/],['HH:mm:ss,SSSS',/\d\d:\d\d:\d\d,\d+/],['HH:mm:ss',/\d\d:\d\d:\d\d/],['HH:mm',/\d\d:\d\d/],['HHmmss.SSSS',/\d\d\d\d\d\d\.\d+/],['HHmmss,SSSS',/\d\d\d\d\d\d,\d+/],['HHmmss',/\d\d\d\d\d\d/],['HHmm',/\d\d\d\d/],['HH',/\d\d/]];var aspNetJsonRegex=/^\/?Date\((\-?\d+)/i;function configFromISO(config){var i,l,string=config._i,match=extendedIsoRegex.exec(string)||basicIsoRegex.exec(string),allowTime,dateFormat,timeFormat,tzFormat;if(match){getParsingFlags(config).iso=true;for(i=0,l=isoDates.length;i<l;i++){if(isoDates[i][1].exec(match[1])){dateFormat=isoDates[i][0];allowTime=isoDates[i][2]!==false;break;}}
if(dateFormat==null){config._isValid=false;return;}
if(match[3]){for(i=0,l=isoTimes.length;i<l;i++){if(isoTimes[i][1].exec(match[3])){timeFormat=(match[2]||' ')+isoTimes[i][0];break;}}
if(timeFormat==null){config._isValid=false;return;}}
if(!allowTime&&timeFormat!=null){config._isValid=false;return;}
if(match[4]){if(tzRegex.exec(match[4])){tzFormat='Z';}else{config._isValid=false;return;}}
config._f=dateFormat+(timeFormat||'')+(tzFormat||'');configFromStringAndFormat(config);}else{config._isValid=false;}}
var rfc2822=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function extractFromRFC2822Strings(yearStr,monthStr,dayStr,hourStr,minuteStr,secondStr){var result=[untruncateYear(yearStr),defaultLocaleMonthsShort.indexOf(monthStr),parseInt(dayStr,10),parseInt(hourStr,10),parseInt(minuteStr,10)];if(secondStr){result.push(parseInt(secondStr,10));}
return result;}
function untruncateYear(yearStr){var year=parseInt(yearStr,10);if(year<=49){return 2000+year;}else if(year<=999){return 1900+year;}
return year;}
function preprocessRFC2822(s){return s.replace(/\([^)]*\)|[\n\t]/g,' ').replace(/(\s\s+)/g,' ').replace(/^\s\s*/,'').replace(/\s\s*$/,'');}
function checkWeekday(weekdayStr,parsedInput,config){if(weekdayStr){var weekdayProvided=defaultLocaleWeekdaysShort.indexOf(weekdayStr),weekdayActual=new Date(parsedInput[0],parsedInput[1],parsedInput[2]).getDay();if(weekdayProvided!==weekdayActual){getParsingFlags(config).weekdayMismatch=true;config._isValid=false;return false;}}
return true;}
var obsOffsets={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function calculateOffset(obsOffset,militaryOffset,numOffset){if(obsOffset){return obsOffsets[obsOffset];}else if(militaryOffset){return 0;}else{var hm=parseInt(numOffset,10);var m=hm%100,h=(hm-m)/100;return h*60+m;}}
function configFromRFC2822(config){var match=rfc2822.exec(preprocessRFC2822(config._i));if(match){var parsedArray=extractFromRFC2822Strings(match[4],match[3],match[2],match[5],match[6],match[7]);if(!checkWeekday(match[1],parsedArray,config)){return;}
config._a=parsedArray;config._tzm=calculateOffset(match[8],match[9],match[10]);config._d=createUTCDate.apply(null,config._a);config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm);getParsingFlags(config).rfc2822=true;}else{config._isValid=false;}}
function configFromString(config){var matched=aspNetJsonRegex.exec(config._i);if(matched!==null){config._d=new Date(+matched[1]);return;}
configFromISO(config);if(config._isValid===false){delete config._isValid;}else{return;}
configFromRFC2822(config);if(config._isValid===false){delete config._isValid;}else{return;}
hooks.createFromInputFallback(config);}
hooks.createFromInputFallback=deprecate('value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), '+
'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are '+
'discouraged and will be removed in an upcoming major release. Please refer to '+
'http://momentjs.com/guides/#/warnings/js-date/ for more info.',function(config){config._d=new Date(config._i+(config._useUTC?' UTC':''));});hooks.ISO_8601=function(){};hooks.RFC_2822=function(){};function configFromStringAndFormat(config){if(config._f===hooks.ISO_8601){configFromISO(config);return;}
if(config._f===hooks.RFC_2822){configFromRFC2822(config);return;}
config._a=[];getParsingFlags(config).empty=true;var string=''+config._i,i,parsedInput,tokens,token,skipped,stringLength=string.length,totalParsedInputLength=0;tokens=expandFormat(config._f,config._locale).match(formattingTokens)||[];for(i=0;i<tokens.length;i++){token=tokens[i];parsedInput=(string.match(getParseRegexForToken(token,config))||[])[0];if(parsedInput){skipped=string.substr(0,string.indexOf(parsedInput));if(skipped.length>0){getParsingFlags(config).unusedInput.push(skipped);}
string=string.slice(string.indexOf(parsedInput)+parsedInput.length);totalParsedInputLength+=parsedInput.length;}
if(formatTokenFunctions[token]){if(parsedInput){getParsingFlags(config).empty=false;}
else{getParsingFlags(config).unusedTokens.push(token);}
addTimeToArrayFromToken(token,parsedInput,config);}
else if(config._strict&&!parsedInput){getParsingFlags(config).unusedTokens.push(token);}}
getParsingFlags(config).charsLeftOver=stringLength-totalParsedInputLength;if(string.length>0){getParsingFlags(config).unusedInput.push(string);}
if(config._a[HOUR]<=12&&getParsingFlags(config).bigHour===true&&config._a[HOUR]>0){getParsingFlags(config).bigHour=undefined;}
getParsingFlags(config).parsedDateParts=config._a.slice(0);getParsingFlags(config).meridiem=config._meridiem;config._a[HOUR]=meridiemFixWrap(config._locale,config._a[HOUR],config._meridiem);configFromArray(config);checkOverflow(config);}
function meridiemFixWrap(locale,hour,meridiem){var isPm;if(meridiem==null){return hour;}
if(locale.meridiemHour!=null){return locale.meridiemHour(hour,meridiem);}else if(locale.isPM!=null){isPm=locale.isPM(meridiem);if(isPm&&hour<12){hour+=12;}
if(!isPm&&hour===12){hour=0;}
return hour;}else{return hour;}}
function configFromStringAndArray(config){var tempConfig,bestMoment,scoreToBeat,i,currentScore;if(config._f.length===0){getParsingFlags(config).invalidFormat=true;config._d=new Date(NaN);return;}
for(i=0;i<config._f.length;i++){currentScore=0;tempConfig=copyConfig({},config);if(config._useUTC!=null){tempConfig._useUTC=config._useUTC;}
tempConfig._f=config._f[i];configFromStringAndFormat(tempConfig);if(!isValid(tempConfig)){continue;}
currentScore+=getParsingFlags(tempConfig).charsLeftOver;currentScore+=getParsingFlags(tempConfig).unusedTokens.length*10;getParsingFlags(tempConfig).score=currentScore;if(scoreToBeat==null||currentScore<scoreToBeat){scoreToBeat=currentScore;bestMoment=tempConfig;}}
extend(config,bestMoment||tempConfig);}
function configFromObject(config){if(config._d){return;}
var i=normalizeObjectUnits(config._i);config._a=map([i.year,i.month,i.day||i.date,i.hour,i.minute,i.second,i.millisecond],function(obj){return obj&&parseInt(obj,10);});configFromArray(config);}
function createFromConfig(config){var res=new Moment(checkOverflow(prepareConfig(config)));if(res._nextDay){res.add(1,'d');res._nextDay=undefined;}
return res;}
function prepareConfig(config){var input=config._i,format=config._f;config._locale=config._locale||getLocale(config._l);if(input===null||(format===undefined&&input==='')){return createInvalid({nullInput:true});}
if(typeof input==='string'){config._i=input=config._locale.preparse(input);}
if(isMoment(input)){return new Moment(checkOverflow(input));}else if(isDate(input)){config._d=input;}else if(isArray(format)){configFromStringAndArray(config);}else if(format){configFromStringAndFormat(config);}else{configFromInput(config);}
if(!isValid(config)){config._d=null;}
return config;}
function configFromInput(config){var input=config._i;if(isUndefined(input)){config._d=new Date(hooks.now());}else if(isDate(input)){config._d=new Date(input.valueOf());}else if(typeof input==='string'){configFromString(config);}else if(isArray(input)){config._a=map(input.slice(0),function(obj){return parseInt(obj,10);});configFromArray(config);}else if(isObject(input)){configFromObject(config);}else if(isNumber(input)){config._d=new Date(input);}else{hooks.createFromInputFallback(config);}}
function createLocalOrUTC(input,format,locale,strict,isUTC){var c={};if(locale===true||locale===false){strict=locale;locale=undefined;}
if((isObject(input)&&isObjectEmpty(input))||(isArray(input)&&input.length===0)){input=undefined;}
c._isAMomentObject=true;c._useUTC=c._isUTC=isUTC;c._l=locale;c._i=input;c._f=format;c._strict=strict;return createFromConfig(c);}
function createLocal(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,false);}
var prototypeMin=deprecate('moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',function(){var other=createLocal.apply(null,arguments);if(this.isValid()&&other.isValid()){return other<this?this:other;}else{return createInvalid();}});var prototypeMax=deprecate('moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',function(){var other=createLocal.apply(null,arguments);if(this.isValid()&&other.isValid()){return other>this?this:other;}else{return createInvalid();}});function pickBy(fn,moments){var res,i;if(moments.length===1&&isArray(moments[0])){moments=moments[0];}
if(!moments.length){return createLocal();}
res=moments[0];for(i=1;i<moments.length;++i){if(!moments[i].isValid()||moments[i][fn](res)){res=moments[i];}}
return res;}
function min(){var args=[].slice.call(arguments,0);return pickBy('isBefore',args);}
function max(){var args=[].slice.call(arguments,0);return pickBy('isAfter',args);}
var now=function(){return Date.now?Date.now():+(new Date());};var ordering=['year','quarter','month','week','day','hour','minute','second','millisecond'];function isDurationValid(m){for(var key in m){if(!(indexOf.call(ordering,key)!==-1&&(m[key]==null||!isNaN(m[key])))){return false;}}
var unitHasDecimal=false;for(var i=0;i<ordering.length;++i){if(m[ordering[i]]){if(unitHasDecimal){return false;}
if(parseFloat(m[ordering[i]])!==toInt(m[ordering[i]])){unitHasDecimal=true;}}}
return true;}
function isValid$1(){return this._isValid;}
function createInvalid$1(){return createDuration(NaN);}
function Duration(duration){var normalizedInput=normalizeObjectUnits(duration),years=normalizedInput.year||0,quarters=normalizedInput.quarter||0,months=normalizedInput.month||0,weeks=normalizedInput.week||normalizedInput.isoWeek||0,days=normalizedInput.day||0,hours=normalizedInput.hour||0,minutes=normalizedInput.minute||0,seconds=normalizedInput.second||0,milliseconds=normalizedInput.millisecond||0;this._isValid=isDurationValid(normalizedInput);this._milliseconds=+milliseconds+
seconds*1e3+
minutes*6e4+
hours*1000*60*60;this._days=+days+
weeks*7;this._months=+months+
quarters*3+
years*12;this._data={};this._locale=getLocale();this._bubble();}
function isDuration(obj){return obj instanceof Duration;}
function absRound(number){if(number<0){return Math.round(-1*number)*-1;}else{return Math.round(number);}}
function offset(token,separator){addFormatToken(token,0,0,function(){var offset=this.utcOffset();var sign='+';if(offset<0){offset=-offset;sign='-';}
return sign+zeroFill(~~(offset/60),2)+separator+zeroFill(~~(offset)%60,2);});}
offset('Z',':');offset('ZZ','');addRegexToken('Z',matchShortOffset);addRegexToken('ZZ',matchShortOffset);addParseToken(['Z','ZZ'],function(input,array,config){config._useUTC=true;config._tzm=offsetFromString(matchShortOffset,input);});var chunkOffset=/([\+\-]|\d\d)/gi;function offsetFromString(matcher,string){var matches=(string||'').match(matcher);if(matches===null){return null;}
var chunk=matches[matches.length-1]||[];var parts=(chunk+'').match(chunkOffset)||['-',0,0];var minutes=+(parts[1]*60)+toInt(parts[2]);return minutes===0?0:parts[0]==='+'?minutes:-minutes;}
function cloneWithOffset(input,model){var res,diff;if(model._isUTC){res=model.clone();diff=(isMoment(input)||isDate(input)?input.valueOf():createLocal(input).valueOf())-res.valueOf();res._d.setTime(res._d.valueOf()+diff);hooks.updateOffset(res,false);return res;}else{return createLocal(input).local();}}
function getDateOffset(m){return-Math.round(m._d.getTimezoneOffset()/15)*15;}
hooks.updateOffset=function(){};function getSetOffset(input,keepLocalTime,keepMinutes){var offset=this._offset||0,localAdjust;if(!this.isValid()){return input!=null?this:NaN;}
if(input!=null){if(typeof input==='string'){input=offsetFromString(matchShortOffset,input);if(input===null){return this;}}else if(Math.abs(input)<16&&!keepMinutes){input=input*60;}
if(!this._isUTC&&keepLocalTime){localAdjust=getDateOffset(this);}
this._offset=input;this._isUTC=true;if(localAdjust!=null){this.add(localAdjust,'m');}
if(offset!==input){if(!keepLocalTime||this._changeInProgress){addSubtract(this,createDuration(input-offset,'m'),1,false);}else if(!this._changeInProgress){this._changeInProgress=true;hooks.updateOffset(this,true);this._changeInProgress=null;}}
return this;}else{return this._isUTC?offset:getDateOffset(this);}}
function getSetZone(input,keepLocalTime){if(input!=null){if(typeof input!=='string'){input=-input;}
this.utcOffset(input,keepLocalTime);return this;}else{return-this.utcOffset();}}
function setOffsetToUTC(keepLocalTime){return this.utcOffset(0,keepLocalTime);}
function setOffsetToLocal(keepLocalTime){if(this._isUTC){this.utcOffset(0,keepLocalTime);this._isUTC=false;if(keepLocalTime){this.subtract(getDateOffset(this),'m');}}
return this;}
function setOffsetToParsedOffset(){if(this._tzm!=null){this.utcOffset(this._tzm,false,true);}else if(typeof this._i==='string'){var tZone=offsetFromString(matchOffset,this._i);if(tZone!=null){this.utcOffset(tZone);}
else{this.utcOffset(0,true);}}
return this;}
function hasAlignedHourOffset(input){if(!this.isValid()){return false;}
input=input?createLocal(input).utcOffset():0;return(this.utcOffset()-input)%60===0;}
function isDaylightSavingTime(){return(this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset());}
function isDaylightSavingTimeShifted(){if(!isUndefined(this._isDSTShifted)){return this._isDSTShifted;}
var c={};copyConfig(c,this);c=prepareConfig(c);if(c._a){var other=c._isUTC?createUTC(c._a):createLocal(c._a);this._isDSTShifted=this.isValid()&&compareArrays(c._a,other.toArray())>0;}else{this._isDSTShifted=false;}
return this._isDSTShifted;}
function isLocal(){return this.isValid()?!this._isUTC:false;}
function isUtcOffset(){return this.isValid()?this._isUTC:false;}
function isUtc(){return this.isValid()?this._isUTC&&this._offset===0:false;}
var aspNetRegex=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/;var isoRegex=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function createDuration(input,key){var duration=input,match=null,sign,ret,diffRes;if(isDuration(input)){duration={ms:input._milliseconds,d:input._days,M:input._months};}else if(isNumber(input)){duration={};if(key){duration[key]=input;}else{duration.milliseconds=input;}}else if(!!(match=aspNetRegex.exec(input))){sign=(match[1]==='-')?-1:1;duration={y:0,d:toInt(match[DATE])*sign,h:toInt(match[HOUR])*sign,m:toInt(match[MINUTE])*sign,s:toInt(match[SECOND])*sign,ms:toInt(absRound(match[MILLISECOND]*1000))*sign};}else if(!!(match=isoRegex.exec(input))){sign=(match[1]==='-')?-1:1;duration={y:parseIso(match[2],sign),M:parseIso(match[3],sign),w:parseIso(match[4],sign),d:parseIso(match[5],sign),h:parseIso(match[6],sign),m:parseIso(match[7],sign),s:parseIso(match[8],sign)};}else if(duration==null){duration={};}else if(typeof duration==='object'&&('from'in duration||'to'in duration)){diffRes=momentsDifference(createLocal(duration.from),createLocal(duration.to));duration={};duration.ms=diffRes.milliseconds;duration.M=diffRes.months;}
ret=new Duration(duration);if(isDuration(input)&&hasOwnProp(input,'_locale')){ret._locale=input._locale;}
return ret;}
createDuration.fn=Duration.prototype;createDuration.invalid=createInvalid$1;function parseIso(inp,sign){var res=inp&&parseFloat(inp.replace(',','.'));return(isNaN(res)?0:res)*sign;}
function positiveMomentsDifference(base,other){var res={};res.months=other.month()-base.month()+
(other.year()-base.year())*12;if(base.clone().add(res.months,'M').isAfter(other)){--res.months;}
res.milliseconds=+other-+(base.clone().add(res.months,'M'));return res;}
function momentsDifference(base,other){var res;if(!(base.isValid()&&other.isValid())){return{milliseconds:0,months:0};}
other=cloneWithOffset(other,base);if(base.isBefore(other)){res=positiveMomentsDifference(base,other);}else{res=positiveMomentsDifference(other,base);res.milliseconds=-res.milliseconds;res.months=-res.months;}
return res;}
function createAdder(direction,name){return function(val,period){var dur,tmp;if(period!==null&&!isNaN(+period)){deprecateSimple(name,'moment().'+name+'(period, number) is deprecated. Please use moment().'+name+'(number, period). '+
'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');tmp=val;val=period;period=tmp;}
val=typeof val==='string'?+val:val;dur=createDuration(val,period);addSubtract(this,dur,direction);return this;};}
function addSubtract(mom,duration,isAdding,updateOffset){var milliseconds=duration._milliseconds,days=absRound(duration._days),months=absRound(duration._months);if(!mom.isValid()){return;}
updateOffset=updateOffset==null?true:updateOffset;if(months){setMonth(mom,get(mom,'Month')+months*isAdding);}
if(days){set$1(mom,'Date',get(mom,'Date')+days*isAdding);}
if(milliseconds){mom._d.setTime(mom._d.valueOf()+milliseconds*isAdding);}
if(updateOffset){hooks.updateOffset(mom,days||months);}}
var add=createAdder(1,'add');var subtract=createAdder(-1,'subtract');function getCalendarFormat(myMoment,now){var diff=myMoment.diff(now,'days',true);return diff<-6?'sameElse':diff<-1?'lastWeek':diff<0?'lastDay':diff<1?'sameDay':diff<2?'nextDay':diff<7?'nextWeek':'sameElse';}
function calendar$1(time,formats){var now=time||createLocal(),sod=cloneWithOffset(now,this).startOf('day'),format=hooks.calendarFormat(this,sod)||'sameElse';var output=formats&&(isFunction(formats[format])?formats[format].call(this,now):formats[format]);return this.format(output||this.localeData().calendar(format,this,createLocal(now)));}
function clone(){return new Moment(this);}
function isAfter(input,units){var localInput=isMoment(input)?input:createLocal(input);if(!(this.isValid()&&localInput.isValid())){return false;}
units=normalizeUnits(units)||'millisecond';if(units==='millisecond'){return this.valueOf()>localInput.valueOf();}else{return localInput.valueOf()<this.clone().startOf(units).valueOf();}}
function isBefore(input,units){var localInput=isMoment(input)?input:createLocal(input);if(!(this.isValid()&&localInput.isValid())){return false;}
units=normalizeUnits(units)||'millisecond';if(units==='millisecond'){return this.valueOf()<localInput.valueOf();}else{return this.clone().endOf(units).valueOf()<localInput.valueOf();}}
function isBetween(from,to,units,inclusivity){var localFrom=isMoment(from)?from:createLocal(from),localTo=isMoment(to)?to:createLocal(to);if(!(this.isValid()&&localFrom.isValid()&&localTo.isValid())){return false;}
inclusivity=inclusivity||'()';return(inclusivity[0]==='('?this.isAfter(localFrom,units):!this.isBefore(localFrom,units))&&(inclusivity[1]===')'?this.isBefore(localTo,units):!this.isAfter(localTo,units));}
function isSame(input,units){var localInput=isMoment(input)?input:createLocal(input),inputMs;if(!(this.isValid()&&localInput.isValid())){return false;}
units=normalizeUnits(units)||'millisecond';if(units==='millisecond'){return this.valueOf()===localInput.valueOf();}else{inputMs=localInput.valueOf();return this.clone().startOf(units).valueOf()<=inputMs&&inputMs<=this.clone().endOf(units).valueOf();}}
function isSameOrAfter(input,units){return this.isSame(input,units)||this.isAfter(input,units);}
function isSameOrBefore(input,units){return this.isSame(input,units)||this.isBefore(input,units);}
function diff(input,units,asFloat){var that,zoneDelta,output;if(!this.isValid()){return NaN;}
that=cloneWithOffset(input,this);if(!that.isValid()){return NaN;}
zoneDelta=(that.utcOffset()-this.utcOffset())*6e4;units=normalizeUnits(units);switch(units){case 'year':output=monthDiff(this,that)/12;break;case 'month':output=monthDiff(this,that);break;case 'quarter':output=monthDiff(this,that)/3;break;case 'second':output=(this-that)/1e3;break;case 'minute':output=(this-that)/6e4;break;case 'hour':output=(this-that)/36e5;break;case 'day':output=(this-that-zoneDelta)/864e5;break;case 'week':output=(this-that-zoneDelta)/6048e5;break;default:output=this-that;}
return asFloat?output:absFloor(output);}
function monthDiff(a,b){var wholeMonthDiff=((b.year()-a.year())*12)+(b.month()-a.month()),anchor=a.clone().add(wholeMonthDiff,'months'),anchor2,adjust;if(b-anchor<0){anchor2=a.clone().add(wholeMonthDiff-1,'months');adjust=(b-anchor)/(anchor-anchor2);}else{anchor2=a.clone().add(wholeMonthDiff+1,'months');adjust=(b-anchor)/(anchor2-anchor);}
return-(wholeMonthDiff+adjust)||0;}
hooks.defaultFormat='YYYY-MM-DDTHH:mm:ssZ';hooks.defaultFormatUtc='YYYY-MM-DDTHH:mm:ss[Z]';function toString(){return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');}
function toISOString(keepOffset){if(!this.isValid()){return null;}
var utc=keepOffset!==true;var m=utc?this.clone().utc():this;if(m.year()<0||m.year()>9999){return formatMoment(m,utc?'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]':'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');}
if(isFunction(Date.prototype.toISOString)){if(utc){return this.toDate().toISOString();}else{return new Date(this.valueOf()+this.utcOffset()*60*1000).toISOString().replace('Z',formatMoment(m,'Z'));}}
return formatMoment(m,utc?'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]':'YYYY-MM-DD[T]HH:mm:ss.SSSZ');}
function inspect(){if(!this.isValid()){return 'moment.invalid(/* '+this._i+' */)';}
var func='moment';var zone='';if(!this.isLocal()){func=this.utcOffset()===0?'moment.utc':'moment.parseZone';zone='Z';}
var prefix='['+func+'("]';var year=(0<=this.year()&&this.year()<=9999)?'YYYY':'YYYYYY';var datetime='-MM-DD[T]HH:mm:ss.SSS';var suffix=zone+'[")]';return this.format(prefix+year+datetime+suffix);}
function format(inputString){if(!inputString){inputString=this.isUtc()?hooks.defaultFormatUtc:hooks.defaultFormat;}
var output=formatMoment(this,inputString);return this.localeData().postformat(output);}
function from(time,withoutSuffix){if(this.isValid()&&((isMoment(time)&&time.isValid())||createLocal(time).isValid())){return createDuration({to:this,from:time}).locale(this.locale()).humanize(!withoutSuffix);}else{return this.localeData().invalidDate();}}
function fromNow(withoutSuffix){return this.from(createLocal(),withoutSuffix);}
function to(time,withoutSuffix){if(this.isValid()&&((isMoment(time)&&time.isValid())||createLocal(time).isValid())){return createDuration({from:this,to:time}).locale(this.locale()).humanize(!withoutSuffix);}else{return this.localeData().invalidDate();}}
function toNow(withoutSuffix){return this.to(createLocal(),withoutSuffix);}
function locale(key){var newLocaleData;if(key===undefined){return this._locale._abbr;}else{newLocaleData=getLocale(key);if(newLocaleData!=null){this._locale=newLocaleData;}
return this;}}
var lang=deprecate('moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',function(key){if(key===undefined){return this.localeData();}else{return this.locale(key);}});function localeData(){return this._locale;}
var MS_PER_SECOND=1000;var MS_PER_MINUTE=60*MS_PER_SECOND;var MS_PER_HOUR=60*MS_PER_MINUTE;var MS_PER_400_YEARS=(365*400+97)*24*MS_PER_HOUR;function mod$1(dividend,divisor){return(dividend%divisor+divisor)%divisor;}
function localStartOfDate(y,m,d){if(y<100&&y>=0){return new Date(y+400,m,d)-MS_PER_400_YEARS;}else{return new Date(y,m,d).valueOf();}}
function utcStartOfDate(y,m,d){if(y<100&&y>=0){return Date.UTC(y+400,m,d)-MS_PER_400_YEARS;}else{return Date.UTC(y,m,d);}}
function startOf(units){var time;units=normalizeUnits(units);if(units===undefined||units==='millisecond'||!this.isValid()){return this;}
var startOfDate=this._isUTC?utcStartOfDate:localStartOfDate;switch(units){case 'year':time=startOfDate(this.year(),0,1);break;case 'quarter':time=startOfDate(this.year(),this.month()-this.month()%3,1);break;case 'month':time=startOfDate(this.year(),this.month(),1);break;case 'week':time=startOfDate(this.year(),this.month(),this.date()-this.weekday());break;case 'isoWeek':time=startOfDate(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case 'day':case 'date':time=startOfDate(this.year(),this.month(),this.date());break;case 'hour':time=this._d.valueOf();time-=mod$1(time+(this._isUTC?0:this.utcOffset()*MS_PER_MINUTE),MS_PER_HOUR);break;case 'minute':time=this._d.valueOf();time-=mod$1(time,MS_PER_MINUTE);break;case 'second':time=this._d.valueOf();time-=mod$1(time,MS_PER_SECOND);break;}
this._d.setTime(time);hooks.updateOffset(this,true);return this;}
function endOf(units){var time;units=normalizeUnits(units);if(units===undefined||units==='millisecond'||!this.isValid()){return this;}
var startOfDate=this._isUTC?utcStartOfDate:localStartOfDate;switch(units){case 'year':time=startOfDate(this.year()+1,0,1)-1;break;case 'quarter':time=startOfDate(this.year(),this.month()-this.month()%3+3,1)-1;break;case 'month':time=startOfDate(this.year(),this.month()+1,1)-1;break;case 'week':time=startOfDate(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case 'isoWeek':time=startOfDate(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case 'day':case 'date':time=startOfDate(this.year(),this.month(),this.date()+1)-1;break;case 'hour':time=this._d.valueOf();time+=MS_PER_HOUR-mod$1(time+(this._isUTC?0:this.utcOffset()*MS_PER_MINUTE),MS_PER_HOUR)-1;break;case 'minute':time=this._d.valueOf();time+=MS_PER_MINUTE-mod$1(time,MS_PER_MINUTE)-1;break;case 'second':time=this._d.valueOf();time+=MS_PER_SECOND-mod$1(time,MS_PER_SECOND)-1;break;}
this._d.setTime(time);hooks.updateOffset(this,true);return this;}
function valueOf(){return this._d.valueOf()-((this._offset||0)*60000);}
function unix(){return Math.floor(this.valueOf()/1000);}
function toDate(){return new Date(this.valueOf());}
function toArray(){var m=this;return[m.year(),m.month(),m.date(),m.hour(),m.minute(),m.second(),m.millisecond()];}
function toObject(){var m=this;return{years:m.year(),months:m.month(),date:m.date(),hours:m.hours(),minutes:m.minutes(),seconds:m.seconds(),milliseconds:m.milliseconds()};}
function toJSON(){return this.isValid()?this.toISOString():null;}
function isValid$2(){return isValid(this);}
function parsingFlags(){return extend({},getParsingFlags(this));}
function invalidAt(){return getParsingFlags(this).overflow;}
function creationData(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict};}
addFormatToken(0,['gg',2],0,function(){return this.weekYear()%100;});addFormatToken(0,['GG',2],0,function(){return this.isoWeekYear()%100;});function addWeekYearFormatToken(token,getter){addFormatToken(0,[token,token.length],0,getter);}
addWeekYearFormatToken('gggg','weekYear');addWeekYearFormatToken('ggggg','weekYear');addWeekYearFormatToken('GGGG','isoWeekYear');addWeekYearFormatToken('GGGGG','isoWeekYear');addUnitAlias('weekYear','gg');addUnitAlias('isoWeekYear','GG');addUnitPriority('weekYear',1);addUnitPriority('isoWeekYear',1);addRegexToken('G',matchSigned);addRegexToken('g',matchSigned);addRegexToken('GG',match1to2,match2);addRegexToken('gg',match1to2,match2);addRegexToken('GGGG',match1to4,match4);addRegexToken('gggg',match1to4,match4);addRegexToken('GGGGG',match1to6,match6);addRegexToken('ggggg',match1to6,match6);addWeekParseToken(['gggg','ggggg','GGGG','GGGGG'],function(input,week,config,token){week[token.substr(0,2)]=toInt(input);});addWeekParseToken(['gg','GG'],function(input,week,config,token){week[token]=hooks.parseTwoDigitYear(input);});function getSetWeekYear(input){return getSetWeekYearHelper.call(this,input,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy);}
function getSetISOWeekYear(input){return getSetWeekYearHelper.call(this,input,this.isoWeek(),this.isoWeekday(),1,4);}
function getISOWeeksInYear(){return weeksInYear(this.year(),1,4);}
function getWeeksInYear(){var weekInfo=this.localeData()._week;return weeksInYear(this.year(),weekInfo.dow,weekInfo.doy);}
function getSetWeekYearHelper(input,week,weekday,dow,doy){var weeksTarget;if(input==null){return weekOfYear(this,dow,doy).year;}else{weeksTarget=weeksInYear(input,dow,doy);if(week>weeksTarget){week=weeksTarget;}
return setWeekAll.call(this,input,week,weekday,dow,doy);}}
function setWeekAll(weekYear,week,weekday,dow,doy){var dayOfYearData=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy),date=createUTCDate(dayOfYearData.year,0,dayOfYearData.dayOfYear);this.year(date.getUTCFullYear());this.month(date.getUTCMonth());this.date(date.getUTCDate());return this;}
addFormatToken('Q',0,'Qo','quarter');addUnitAlias('quarter','Q');addUnitPriority('quarter',7);addRegexToken('Q',match1);addParseToken('Q',function(input,array){array[MONTH]=(toInt(input)-1)*3;});function getSetQuarter(input){return input==null?Math.ceil((this.month()+1)/3):this.month((input-1)*3+this.month()%3);}
addFormatToken('D',['DD',2],'Do','date');addUnitAlias('date','D');addUnitPriority('date',9);addRegexToken('D',match1to2);addRegexToken('DD',match1to2,match2);addRegexToken('Do',function(isStrict,locale){return isStrict?(locale._dayOfMonthOrdinalParse||locale._ordinalParse):locale._dayOfMonthOrdinalParseLenient;});addParseToken(['D','DD'],DATE);addParseToken('Do',function(input,array){array[DATE]=toInt(input.match(match1to2)[0]);});var getSetDayOfMonth=makeGetSet('Date',true);addFormatToken('DDD',['DDDD',3],'DDDo','dayOfYear');addUnitAlias('dayOfYear','DDD');addUnitPriority('dayOfYear',4);addRegexToken('DDD',match1to3);addRegexToken('DDDD',match3);addParseToken(['DDD','DDDD'],function(input,array,config){config._dayOfYear=toInt(input);});function getSetDayOfYear(input){var dayOfYear=Math.round((this.clone().startOf('day')-this.clone().startOf('year'))/864e5)+1;return input==null?dayOfYear:this.add((input-dayOfYear),'d');}
addFormatToken('m',['mm',2],0,'minute');addUnitAlias('minute','m');addUnitPriority('minute',14);addRegexToken('m',match1to2);addRegexToken('mm',match1to2,match2);addParseToken(['m','mm'],MINUTE);var getSetMinute=makeGetSet('Minutes',false);addFormatToken('s',['ss',2],0,'second');addUnitAlias('second','s');addUnitPriority('second',15);addRegexToken('s',match1to2);addRegexToken('ss',match1to2,match2);addParseToken(['s','ss'],SECOND);var getSetSecond=makeGetSet('Seconds',false);addFormatToken('S',0,0,function(){return~~(this.millisecond()/100);});addFormatToken(0,['SS',2],0,function(){return~~(this.millisecond()/10);});addFormatToken(0,['SSS',3],0,'millisecond');addFormatToken(0,['SSSS',4],0,function(){return this.millisecond()*10;});addFormatToken(0,['SSSSS',5],0,function(){return this.millisecond()*100;});addFormatToken(0,['SSSSSS',6],0,function(){return this.millisecond()*1000;});addFormatToken(0,['SSSSSSS',7],0,function(){return this.millisecond()*10000;});addFormatToken(0,['SSSSSSSS',8],0,function(){return this.millisecond()*100000;});addFormatToken(0,['SSSSSSSSS',9],0,function(){return this.millisecond()*1000000;});addUnitAlias('millisecond','ms');addUnitPriority('millisecond',16);addRegexToken('S',match1to3,match1);addRegexToken('SS',match1to3,match2);addRegexToken('SSS',match1to3,match3);var token;for(token='SSSS';token.length<=9;token+='S'){addRegexToken(token,matchUnsigned);}
function parseMs(input,array){array[MILLISECOND]=toInt(('0.'+input)*1000);}
for(token='S';token.length<=9;token+='S'){addParseToken(token,parseMs);}
var getSetMillisecond=makeGetSet('Milliseconds',false);addFormatToken('z',0,0,'zoneAbbr');addFormatToken('zz',0,0,'zoneName');function getZoneAbbr(){return this._isUTC?'UTC':'';}
function getZoneName(){return this._isUTC?'Coordinated Universal Time':'';}
var proto=Moment.prototype;proto.add=add;proto.calendar=calendar$1;proto.clone=clone;proto.diff=diff;proto.endOf=endOf;proto.format=format;proto.from=from;proto.fromNow=fromNow;proto.to=to;proto.toNow=toNow;proto.get=stringGet;proto.invalidAt=invalidAt;proto.isAfter=isAfter;proto.isBefore=isBefore;proto.isBetween=isBetween;proto.isSame=isSame;proto.isSameOrAfter=isSameOrAfter;proto.isSameOrBefore=isSameOrBefore;proto.isValid=isValid$2;proto.lang=lang;proto.locale=locale;proto.localeData=localeData;proto.max=prototypeMax;proto.min=prototypeMin;proto.parsingFlags=parsingFlags;proto.set=stringSet;proto.startOf=startOf;proto.subtract=subtract;proto.toArray=toArray;proto.toObject=toObject;proto.toDate=toDate;proto.toISOString=toISOString;proto.inspect=inspect;proto.toJSON=toJSON;proto.toString=toString;proto.unix=unix;proto.valueOf=valueOf;proto.creationData=creationData;proto.year=getSetYear;proto.isLeapYear=getIsLeapYear;proto.weekYear=getSetWeekYear;proto.isoWeekYear=getSetISOWeekYear;proto.quarter=proto.quarters=getSetQuarter;proto.month=getSetMonth;proto.daysInMonth=getDaysInMonth;proto.week=proto.weeks=getSetWeek;proto.isoWeek=proto.isoWeeks=getSetISOWeek;proto.weeksInYear=getWeeksInYear;proto.isoWeeksInYear=getISOWeeksInYear;proto.date=getSetDayOfMonth;proto.day=proto.days=getSetDayOfWeek;proto.weekday=getSetLocaleDayOfWeek;proto.isoWeekday=getSetISODayOfWeek;proto.dayOfYear=getSetDayOfYear;proto.hour=proto.hours=getSetHour;proto.minute=proto.minutes=getSetMinute;proto.second=proto.seconds=getSetSecond;proto.millisecond=proto.milliseconds=getSetMillisecond;proto.utcOffset=getSetOffset;proto.utc=setOffsetToUTC;proto.local=setOffsetToLocal;proto.parseZone=setOffsetToParsedOffset;proto.hasAlignedHourOffset=hasAlignedHourOffset;proto.isDST=isDaylightSavingTime;proto.isLocal=isLocal;proto.isUtcOffset=isUtcOffset;proto.isUtc=isUtc;proto.isUTC=isUtc;proto.zoneAbbr=getZoneAbbr;proto.zoneName=getZoneName;proto.dates=deprecate('dates accessor is deprecated. Use date instead.',getSetDayOfMonth);proto.months=deprecate('months accessor is deprecated. Use month instead',getSetMonth);proto.years=deprecate('years accessor is deprecated. Use year instead',getSetYear);proto.zone=deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',getSetZone);proto.isDSTShifted=deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',isDaylightSavingTimeShifted);function createUnix(input){return createLocal(input*1000);}
function createInZone(){return createLocal.apply(null,arguments).parseZone();}
function preParsePostFormat(string){return string;}
var proto$1=Locale.prototype;proto$1.calendar=calendar;proto$1.longDateFormat=longDateFormat;proto$1.invalidDate=invalidDate;proto$1.ordinal=ordinal;proto$1.preparse=preParsePostFormat;proto$1.postformat=preParsePostFormat;proto$1.relativeTime=relativeTime;proto$1.pastFuture=pastFuture;proto$1.set=set;proto$1.months=localeMonths;proto$1.monthsShort=localeMonthsShort;proto$1.monthsParse=localeMonthsParse;proto$1.monthsRegex=monthsRegex;proto$1.monthsShortRegex=monthsShortRegex;proto$1.week=localeWeek;proto$1.firstDayOfYear=localeFirstDayOfYear;proto$1.firstDayOfWeek=localeFirstDayOfWeek;proto$1.weekdays=localeWeekdays;proto$1.weekdaysMin=localeWeekdaysMin;proto$1.weekdaysShort=localeWeekdaysShort;proto$1.weekdaysParse=localeWeekdaysParse;proto$1.weekdaysRegex=weekdaysRegex;proto$1.weekdaysShortRegex=weekdaysShortRegex;proto$1.weekdaysMinRegex=weekdaysMinRegex;proto$1.isPM=localeIsPM;proto$1.meridiem=localeMeridiem;function get$1(format,index,field,setter){var locale=getLocale();var utc=createUTC().set(setter,index);return locale[field](utc,format);}
function listMonthsImpl(format,index,field){if(isNumber(format)){index=format;format=undefined;}
format=format||'';if(index!=null){return get$1(format,index,field,'month');}
var i;var out=[];for(i=0;i<12;i++){out[i]=get$1(format,i,field,'month');}
return out;}
function listWeekdaysImpl(localeSorted,format,index,field){if(typeof localeSorted==='boolean'){if(isNumber(format)){index=format;format=undefined;}
format=format||'';}else{format=localeSorted;index=format;localeSorted=false;if(isNumber(format)){index=format;format=undefined;}
format=format||'';}
var locale=getLocale(),shift=localeSorted?locale._week.dow:0;if(index!=null){return get$1(format,(index+shift)%7,field,'day');}
var i;var out=[];for(i=0;i<7;i++){out[i]=get$1(format,(i+shift)%7,field,'day');}
return out;}
function listMonths(format,index){return listMonthsImpl(format,index,'months');}
function listMonthsShort(format,index){return listMonthsImpl(format,index,'monthsShort');}
function listWeekdays(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,'weekdays');}
function listWeekdaysShort(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,'weekdaysShort');}
function listWeekdaysMin(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,'weekdaysMin');}
getSetGlobalLocale('en',{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(number){var b=number%10,output=(toInt(number%100/10)===1)?'th':(b===1)?'st':(b===2)?'nd':(b===3)?'rd':'th';return number+output;}});hooks.lang=deprecate('moment.lang is deprecated. Use moment.locale instead.',getSetGlobalLocale);hooks.langData=deprecate('moment.langData is deprecated. Use moment.localeData instead.',getLocale);var mathAbs=Math.abs;function abs(){var data=this._data;this._milliseconds=mathAbs(this._milliseconds);this._days=mathAbs(this._days);this._months=mathAbs(this._months);data.milliseconds=mathAbs(data.milliseconds);data.seconds=mathAbs(data.seconds);data.minutes=mathAbs(data.minutes);data.hours=mathAbs(data.hours);data.months=mathAbs(data.months);data.years=mathAbs(data.years);return this;}
function addSubtract$1(duration,input,value,direction){var other=createDuration(input,value);duration._milliseconds+=direction*other._milliseconds;duration._days+=direction*other._days;duration._months+=direction*other._months;return duration._bubble();}
function add$1(input,value){return addSubtract$1(this,input,value,1);}
function subtract$1(input,value){return addSubtract$1(this,input,value,-1);}
function absCeil(number){if(number<0){return Math.floor(number);}else{return Math.ceil(number);}}
function bubble(){var milliseconds=this._milliseconds;var days=this._days;var months=this._months;var data=this._data;var seconds,minutes,hours,years,monthsFromDays;if(!((milliseconds>=0&&days>=0&&months>=0)||(milliseconds<=0&&days<=0&&months<=0))){milliseconds+=absCeil(monthsToDays(months)+days)*864e5;days=0;months=0;}
data.milliseconds=milliseconds%1000;seconds=absFloor(milliseconds/1000);data.seconds=seconds%60;minutes=absFloor(seconds/60);data.minutes=minutes%60;hours=absFloor(minutes/60);data.hours=hours%24;days+=absFloor(hours/24);monthsFromDays=absFloor(daysToMonths(days));months+=monthsFromDays;days-=absCeil(monthsToDays(monthsFromDays));years=absFloor(months/12);months%=12;data.days=days;data.months=months;data.years=years;return this;}
function daysToMonths(days){return days*4800/146097;}
function monthsToDays(months){return months*146097/4800;}
function as(units){if(!this.isValid()){return NaN;}
var days;var months;var milliseconds=this._milliseconds;units=normalizeUnits(units);if(units==='month'||units==='quarter'||units==='year'){days=this._days+milliseconds/864e5;months=this._months+daysToMonths(days);switch(units){case 'month':return months;case 'quarter':return months/3;case 'year':return months/12;}}else{days=this._days+Math.round(monthsToDays(this._months));switch(units){case 'week':return days/7+milliseconds/6048e5;case 'day':return days+milliseconds/864e5;case 'hour':return days*24+milliseconds/36e5;case 'minute':return days*1440+milliseconds/6e4;case 'second':return days*86400+milliseconds/1000;case 'millisecond':return Math.floor(days*864e5)+milliseconds;default:throw new Error('Unknown unit '+units);}}}
function valueOf$1(){if(!this.isValid()){return NaN;}
return(this._milliseconds+
this._days*864e5+
(this._months%12)*2592e6+
toInt(this._months/12)*31536e6);}
function makeAs(alias){return function(){return this.as(alias);};}
var asMilliseconds=makeAs('ms');var asSeconds=makeAs('s');var asMinutes=makeAs('m');var asHours=makeAs('h');var asDays=makeAs('d');var asWeeks=makeAs('w');var asMonths=makeAs('M');var asQuarters=makeAs('Q');var asYears=makeAs('y');function clone$1(){return createDuration(this);}
function get$2(units){units=normalizeUnits(units);return this.isValid()?this[units+'s']():NaN;}
function makeGetter(name){return function(){return this.isValid()?this._data[name]:NaN;};}
var milliseconds=makeGetter('milliseconds');var seconds=makeGetter('seconds');var minutes=makeGetter('minutes');var hours=makeGetter('hours');var days=makeGetter('days');var months=makeGetter('months');var years=makeGetter('years');function weeks(){return absFloor(this.days()/7);}
var round=Math.round;var thresholds={ss:44,s:45,m:45,h:22,d:26,M:11};function substituteTimeAgo(string,number,withoutSuffix,isFuture,locale){return locale.relativeTime(number||1,!!withoutSuffix,string,isFuture);}
function relativeTime$1(posNegDuration,withoutSuffix,locale){var duration=createDuration(posNegDuration).abs();var seconds=round(duration.as('s'));var minutes=round(duration.as('m'));var hours=round(duration.as('h'));var days=round(duration.as('d'));var months=round(duration.as('M'));var years=round(duration.as('y'));var a=seconds<=thresholds.ss&&['s',seconds]||seconds<thresholds.s&&['ss',seconds]||minutes<=1&&['m']||minutes<thresholds.m&&['mm',minutes]||hours<=1&&['h']||hours<thresholds.h&&['hh',hours]||days<=1&&['d']||days<thresholds.d&&['dd',days]||months<=1&&['M']||months<thresholds.M&&['MM',months]||years<=1&&['y']||['yy',years];a[2]=withoutSuffix;a[3]=+posNegDuration>0;a[4]=locale;return substituteTimeAgo.apply(null,a);}
function getSetRelativeTimeRounding(roundingFunction){if(roundingFunction===undefined){return round;}
if(typeof(roundingFunction)==='function'){round=roundingFunction;return true;}
return false;}
function getSetRelativeTimeThreshold(threshold,limit){if(thresholds[threshold]===undefined){return false;}
if(limit===undefined){return thresholds[threshold];}
thresholds[threshold]=limit;if(threshold==='s'){thresholds.ss=limit-1;}
return true;}
function humanize(withSuffix){if(!this.isValid()){return this.localeData().invalidDate();}
var locale=this.localeData();var output=relativeTime$1(this,!withSuffix,locale);if(withSuffix){output=locale.pastFuture(+this,output);}
return locale.postformat(output);}
var abs$1=Math.abs;function sign(x){return((x>0)-(x<0))||+x;}
function toISOString$1(){if(!this.isValid()){return this.localeData().invalidDate();}
var seconds=abs$1(this._milliseconds)/1000;var days=abs$1(this._days);var months=abs$1(this._months);var minutes,hours,years;minutes=absFloor(seconds/60);hours=absFloor(minutes/60);seconds%=60;minutes%=60;years=absFloor(months/12);months%=12;var Y=years;var M=months;var D=days;var h=hours;var m=minutes;var s=seconds?seconds.toFixed(3).replace(/\.?0+$/,''):'';var total=this.asSeconds();if(!total){return 'P0D';}
var totalSign=total<0?'-':'';var ymSign=sign(this._months)!==sign(total)?'-':'';var daysSign=sign(this._days)!==sign(total)?'-':'';var hmsSign=sign(this._milliseconds)!==sign(total)?'-':'';return totalSign+'P'+
(Y?ymSign+Y+'Y':'')+
(M?ymSign+M+'M':'')+
(D?daysSign+D+'D':'')+
((h||m||s)?'T':'')+
(h?hmsSign+h+'H':'')+
(m?hmsSign+m+'M':'')+
(s?hmsSign+s+'S':'');}
var proto$2=Duration.prototype;proto$2.isValid=isValid$1;proto$2.abs=abs;proto$2.add=add$1;proto$2.subtract=subtract$1;proto$2.as=as;proto$2.asMilliseconds=asMilliseconds;proto$2.asSeconds=asSeconds;proto$2.asMinutes=asMinutes;proto$2.asHours=asHours;proto$2.asDays=asDays;proto$2.asWeeks=asWeeks;proto$2.asMonths=asMonths;proto$2.asQuarters=asQuarters;proto$2.asYears=asYears;proto$2.valueOf=valueOf$1;proto$2._bubble=bubble;proto$2.clone=clone$1;proto$2.get=get$2;proto$2.milliseconds=milliseconds;proto$2.seconds=seconds;proto$2.minutes=minutes;proto$2.hours=hours;proto$2.days=days;proto$2.weeks=weeks;proto$2.months=months;proto$2.years=years;proto$2.humanize=humanize;proto$2.toISOString=toISOString$1;proto$2.toString=toISOString$1;proto$2.toJSON=toISOString$1;proto$2.locale=locale;proto$2.localeData=localeData;proto$2.toIsoString=deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',toISOString$1);proto$2.lang=lang;addFormatToken('X',0,0,'unix');addFormatToken('x',0,0,'valueOf');addRegexToken('x',matchSigned);addRegexToken('X',matchTimestamp);addParseToken('X',function(input,array,config){config._d=new Date(parseFloat(input,10)*1000);});addParseToken('x',function(input,array,config){config._d=new Date(toInt(input));});hooks.version='2.24.0';setHookCallback(createLocal);hooks.fn=proto;hooks.min=min;hooks.max=max;hooks.now=now;hooks.utc=createUTC;hooks.unix=createUnix;hooks.months=listMonths;hooks.isDate=isDate;hooks.locale=getSetGlobalLocale;hooks.invalid=createInvalid;hooks.duration=createDuration;hooks.isMoment=isMoment;hooks.weekdays=listWeekdays;hooks.parseZone=createInZone;hooks.localeData=getLocale;hooks.isDuration=isDuration;hooks.monthsShort=listMonthsShort;hooks.weekdaysMin=listWeekdaysMin;hooks.defineLocale=defineLocale;hooks.updateLocale=updateLocale;hooks.locales=listLocales;hooks.weekdaysShort=listWeekdaysShort;hooks.normalizeUnits=normalizeUnits;hooks.relativeTimeRounding=getSetRelativeTimeRounding;hooks.relativeTimeThreshold=getSetRelativeTimeThreshold;hooks.calendarFormat=getCalendarFormat;hooks.prototype=proto;hooks.HTML5_FMT={DATETIME_LOCAL:'YYYY-MM-DDTHH:mm',DATETIME_LOCAL_SECONDS:'YYYY-MM-DDTHH:mm:ss',DATETIME_LOCAL_MS:'YYYY-MM-DDTHH:mm:ss.SSS',DATE:'YYYY-MM-DD',TIME:'HH:mm',TIME_SECONDS:'HH:mm:ss',TIME_MS:'HH:mm:ss.SSS',WEEK:'GGGG-[W]WW',MONTH:'YYYY-MM'};return hooks;})));
</script>
<script>
/*!
* Copyright (c) 2015 Chris O'Hara <cohara87@gmail.com>
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
!function(t,e){"undefined"!=typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&"object"==typeof define.amd?define(e):this[t]=e()}("validator",function(t){"use strict";function e(t,e){t=t||{};for(var r in e)"undefined"==typeof t[r]&&(t[r]=e[r]);return t}function r(t){var e="(\\"+t.symbol.replace(/\./g,"\\.")+")"+(t.require_symbol?"":"?"),r="-?",n="[1-9]\\d*",i="[1-9]\\d{0,2}(\\"+t.thousands_separator+"\\d{3})*",o=["0",n,i],u="("+o.join("|")+")?",s="(\\"+t.decimal_separator+"\\d{2})?",a=u+s;return t.allow_negatives&&!t.parens_for_negatives&&(t.negative_sign_after_digits?a+=r:t.negative_sign_before_digits&&(a=r+a)),t.allow_negative_sign_placeholder?a="( (?!\\-))?"+a:t.allow_space_after_symbol?a=" ?"+a:t.allow_space_after_digits&&(a+="( (?!$))?"),t.symbol_after_digits?a+=e:a=e+a,t.allow_negatives&&(t.parens_for_negatives?a="(\\("+a+"\\)|"+a+")":t.negative_sign_before_digits||t.negative_sign_after_digits||(a=r+a)),new RegExp("^(?!-? )(?=.*\\d)"+a+"$")}t={version:"4.0.5"};var n=/^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~]+$/i,i=/^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f]))*$/i,o=/^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+$/i,u=/^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*$/i,s=/^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~\.\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~\.\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF\s]*<(.+)>$/i,a=/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,l=/^[A-Z]{2}[0-9A-Z]{9}[0-9]$/,f=/^(?:[0-9]{9}X|[0-9]{10})$/,c=/^(?:[0-9]{13})$/,p=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/,g=/^[0-9A-F]{1,4}$/i,F={3:/^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,4:/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,5:/^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,all:/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i},d=/^[A-Z]+$/i,_=/^[0-9A-Z]+$/i,x=/^[-+]?[0-9]+$/,h=/^(?:[-+]?(?:0|[1-9][0-9]*))$/,v=/^(?:[-+]?(?:[0-9]+))?(?:\.[0-9]*)?(?:[eE][\+\-]?(?:[0-9]+))?$/,A=/^[0-9A-F]+$/i,m=/^[-+]?([0-9]+|\.[0-9]+|[0-9]+\.[0-9]+)$/,$=/^#?([0-9A-F]{3}|[0-9A-F]{6})$/i,w=/^[\x00-\x7F]+$/,b=/[^\x00-\x7F]/,D=/[^\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/,y=/[\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/,E=/[\uD800-\uDBFF][\uDC00-\uDFFF]/,I=/^(?:[A-Z0-9+\/]{4})*(?:[A-Z0-9+\/]{2}==|[A-Z0-9+\/]{3}=|[A-Z0-9+\/]{4})$/i,O={"zh-CN":/^(\+?0?86\-?)?1[345789]\d{9}$/,"en-ZA":/^(\+?27|0)\d{9}$/,"en-AU":/^(\+?61|0)4\d{8}$/,"en-HK":/^(\+?852\-?)?[569]\d{3}\-?\d{4}$/,"fr-FR":/^(\+?33|0)[67]\d{8}$/,"pt-PT":/^(\+351)?9[1236]\d{7}$/,"el-GR":/^(\+30)?((2\d{9})|(69\d{8}))$/,"en-GB":/^(\+?44|0)7\d{9}$/,"en-US":/^(\+?1)?[2-9]\d{2}[2-9](?!11)\d{6}$/,"en-ZM":/^(\+26)?09[567]\d{7}$/,"ru-RU":/^(\+?7|8)?9\d{9}$/},C=/^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24\:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/;t.extend=function(e,r){t[e]=function(){var e=Array.prototype.slice.call(arguments);return e[0]=t.toString(e[0]),r.apply(t,e)}},t.init=function(){for(var e in t)"function"==typeof t[e]&&"toString"!==e&&"toDate"!==e&&"extend"!==e&&"init"!==e&&t.extend(e,t[e])},t.toString=function(t){return"object"==typeof t&&null!==t&&t.toString?t=t.toString():null===t||"undefined"==typeof t||isNaN(t)&&!t.length?t="":"string"!=typeof t&&(t+=""),t},t.toDate=function(t){return"[object Date]"===Object.prototype.toString.call(t)?t:(t=Date.parse(t),isNaN(t)?null:new Date(t))},t.toFloat=function(t){return parseFloat(t)},t.toInt=function(t,e){return parseInt(t,e||10)},t.toBoolean=function(t,e){return e?"1"===t||"true"===t:"0"!==t&&"false"!==t&&""!==t},t.equals=function(e,r){return e===t.toString(r)},t.contains=function(e,r){return e.indexOf(t.toString(r))>=0},t.matches=function(t,e,r){return"[object RegExp]"!==Object.prototype.toString.call(e)&&(e=new RegExp(e,r)),e.test(t)};var S={allow_display_name:!1,allow_utf8_local_part:!0,require_tld:!0};t.isEmail=function(r,a){if(a=e(a,S),a.allow_display_name){var l=r.match(s);l&&(r=l[1])}var f=r.split("@"),c=f.pop(),p=f.join("@"),g=c.toLowerCase();if(("gmail.com"===g||"googlemail.com"===g)&&(p=p.replace(/\./g,"").toLowerCase()),!t.isByteLength(p,0,64)||!t.isByteLength(c,0,256))return!1;if(!t.isFQDN(c,{require_tld:a.require_tld}))return!1;if('"'===p[0])return p=p.slice(1,p.length-1),a.allow_utf8_local_part?u.test(p):i.test(p);for(var F=a.allow_utf8_local_part?o:n,d=p.split("."),_=0;_<d.length;_++)if(!F.test(d[_]))return!1;return!0};var N={protocols:["http","https","ftp"],require_tld:!0,require_protocol:!1,require_valid_protocol:!0,allow_underscores:!1,allow_trailing_dot:!1,allow_protocol_relative_urls:!1};t.isURL=function(r,n){if(!r||r.length>=2083||/\s/.test(r))return!1;if(0===r.indexOf("mailto:"))return!1;n=e(n,N);var i,o,u,s,a,l,f;if(f=r.split("://"),f.length>1){if(i=f.shift(),n.require_valid_protocol&&-1===n.protocols.indexOf(i))return!1}else{if(n.require_protocol)return!1;n.allow_protocol_relative_urls&&"//"===r.substr(0,2)&&(f[0]=r.substr(2))}return r=f.join("://"),f=r.split("#"),r=f.shift(),f=r.split("?"),r=f.shift(),f=r.split("/"),r=f.shift(),f=r.split("@"),f.length>1&&(o=f.shift(),o.indexOf(":")>=0&&o.split(":").length>2)?!1:(s=f.join("@"),f=s.split(":"),u=f.shift(),f.length&&(l=f.join(":"),a=parseInt(l,10),!/^[0-9]+$/.test(l)||0>=a||a>65535)?!1:t.isIP(u)||t.isFQDN(u,n)||"localhost"===u?n.host_whitelist&&-1===n.host_whitelist.indexOf(u)?!1:n.host_blacklist&&-1!==n.host_blacklist.indexOf(u)?!1:!0:!1)},t.isIP=function(e,r){if(r=t.toString(r),!r)return t.isIP(e,4)||t.isIP(e,6);if("4"===r){if(!p.test(e))return!1;var n=e.split(".").sort(function(t,e){return t-e});return n[3]<=255}if("6"===r){var i=e.split(":"),o=!1,u=t.isIP(i[i.length-1],4),s=u?7:8;if(i.length>s)return!1;if("::"===e)return!0;"::"===e.substr(0,2)?(i.shift(),i.shift(),o=!0):"::"===e.substr(e.length-2)&&(i.pop(),i.pop(),o=!0);for(var a=0;a<i.length;++a)if(""===i[a]&&a>0&&a<i.length-1){if(o)return!1;o=!0}else if(u&&a==i.length-1);else if(!g.test(i[a]))return!1;return o?i.length>=1:i.length===s}return!1};var B={require_tld:!0,allow_underscores:!1,allow_trailing_dot:!1};t.isFQDN=function(t,r){r=e(r,B),r.allow_trailing_dot&&"."===t[t.length-1]&&(t=t.substring(0,t.length-1));var n=t.split(".");if(r.require_tld){var i=n.pop();if(!n.length||!/^([a-z\u00a1-\uffff]{2,}|xn[a-z0-9-]{2,})$/i.test(i))return!1}for(var o,u=0;u<n.length;u++){if(o=n[u],r.allow_underscores){if(o.indexOf("__")>=0)return!1;o=o.replace(/_/g,"")}if(!/^[a-z\u00a1-\uffff0-9-]+$/i.test(o))return!1;if(/[\uff01-\uff5e]/.test(o))return!1;if("-"===o[0]||"-"===o[o.length-1]||o.indexOf("---")>=0)return!1}return!0},t.isBoolean=function(t){return["true","false","1","0"].indexOf(t)>=0},t.isAlpha=function(t){return d.test(t)},t.isAlphanumeric=function(t){return _.test(t)},t.isNumeric=function(t){return x.test(t)},t.isDecimal=function(t){return""!==t&&m.test(t)},t.isHexadecimal=function(t){return A.test(t)},t.isHexColor=function(t){return $.test(t)},t.isLowercase=function(t){return t===t.toLowerCase()},t.isUppercase=function(t){return t===t.toUpperCase()},t.isInt=function(t,e){return e=e||{},h.test(t)&&(!e.hasOwnProperty("min")||t>=e.min)&&(!e.hasOwnProperty("max")||t<=e.max)},t.isFloat=function(t,e){return e=e||{},""!==t&&v.test(t)&&(!e.hasOwnProperty("min")||t>=e.min)&&(!e.hasOwnProperty("max")||t<=e.max)},t.isDivisibleBy=function(e,r){return t.toFloat(e)%t.toInt(r)===0},t.isNull=function(t){return 0===t.length},t.isLength=function(t,e,r){var n=t.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g)||[],i=t.length-n.length;return i>=e&&("undefined"==typeof r||r>=i)},t.isByteLength=function(t,e,r){var n=encodeURI(t).split(/%..|./).length-1;return n>=e&&("undefined"==typeof r||r>=n)},t.isUUID=function(t,e){var r=F[e?e:"all"];return r&&r.test(t)},t.isDate=function(t){return!isNaN(Date.parse(t))},t.isAfter=function(e,r){var n=t.toDate(r||new Date),i=t.toDate(e);return!!(i&&n&&i>n)},t.isBefore=function(e,r){var n=t.toDate(r||new Date),i=t.toDate(e);return i&&n&&n>i},t.isIn=function(e,r){var n;if("[object Array]"===Object.prototype.toString.call(r)){var i=[];for(n in r)i[n]=t.toString(r[n]);return i.indexOf(e)>=0}return"object"==typeof r?r.hasOwnProperty(e):r&&"function"==typeof r.indexOf?r.indexOf(e)>=0:!1},t.isCreditCard=function(t){var e=t.replace(/[^0-9]+/g,"");if(!a.test(e))return!1;for(var r,n,i,o=0,u=e.length-1;u>=0;u--)r=e.substring(u,u+1),n=parseInt(r,10),i?(n*=2,o+=n>=10?n%10+1:n):o+=n,i=!i;return!!(o%10===0?e:!1)},t.isISIN=function(t){if(!l.test(t))return!1;for(var e,r,n=t.replace(/[A-Z]/g,function(t){return parseInt(t,36)}),i=0,o=!0,u=n.length-2;u>=0;u--)e=n.substring(u,u+1),r=parseInt(e,10),o?(r*=2,i+=r>=10?r+1:r):i+=r,o=!o;return parseInt(t.substr(t.length-1),10)===(1e4-i)%10},t.isISBN=function(e,r){if(r=t.toString(r),!r)return t.isISBN(e,10)||t.isISBN(e,13);var n,i=e.replace(/[\s-]+/g,""),o=0;if("10"===r){if(!f.test(i))return!1;for(n=0;9>n;n++)o+=(n+1)*i.charAt(n);if(o+="X"===i.charAt(9)?100:10*i.charAt(9),o%11===0)return!!i}else if("13"===r){if(!c.test(i))return!1;var u=[1,3];for(n=0;12>n;n++)o+=u[n%2]*i.charAt(n);if(i.charAt(12)-(10-o%10)%10===0)return!!i}return!1},t.isMobilePhone=function(t,e){return e in O?O[e].test(t):!1};var j={symbol:"$",require_symbol:!1,allow_space_after_symbol:!1,symbol_after_digits:!1,allow_negatives:!0,parens_for_negatives:!1,negative_sign_before_digits:!1,negative_sign_after_digits:!1,allow_negative_sign_placeholder:!1,thousands_separator:",",decimal_separator:".",allow_space_after_digits:!1};t.isCurrency=function(t,n){return n=e(n,j),r(n).test(t)},t.isJSON=function(t){try{var e=JSON.parse(t);return!!e&&"object"==typeof e}catch(r){}return!1},t.isMultibyte=function(t){return b.test(t)},t.isAscii=function(t){return w.test(t)},t.isFullWidth=function(t){return D.test(t)},t.isHalfWidth=function(t){return y.test(t)},t.isVariableWidth=function(t){return D.test(t)&&y.test(t)},t.isSurrogatePair=function(t){return E.test(t)},t.isBase64=function(t){return I.test(t)},t.isMongoId=function(e){return t.isHexadecimal(e)&&24===e.length},t.isISO8601=function(t){return C.test(t)},t.ltrim=function(t,e){var r=e?new RegExp("^["+e+"]+","g"):/^\s+/g;return t.replace(r,"")},t.rtrim=function(t,e){var r=e?new RegExp("["+e+"]+$","g"):/\s+$/g;return t.replace(r,"")},t.trim=function(t,e){var r=e?new RegExp("^["+e+"]+|["+e+"]+$","g"):/^\s+|\s+$/g;return t.replace(r,"")},t.escape=function(t){return t.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\//g,"&#x2F;").replace(/\`/g,"&#96;")},t.stripLow=function(e,r){var n=r?"\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F\\x7F":"\\x00-\\x1F\\x7F";return t.blacklist(e,n)},t.whitelist=function(t,e){return t.replace(new RegExp("[^"+e+"]+","g"),"")},t.blacklist=function(t,e){return t.replace(new RegExp("["+e+"]+","g"),"")};var q={lowercase:!0};return t.normalizeEmail=function(r,n){if(n=e(n,q),!t.isEmail(r))return!1;var i=r.split("@",2);if(i[1]=i[1].toLowerCase(),"gmail.com"===i[1]||"googlemail.com"===i[1]){if(i[0]=i[0].toLowerCase().replace(/\./g,""),"+"===i[0][0])return!1;i[0]=i[0].split("+")[0],i[1]="gmail.com"}else n.lowercase&&(i[0]=i[0].toLowerCase());return i.join("@")},t.init(),t});
</script>
<script>
!function(t,e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e(require("jquery")):e(t.jQuery)}(this,function(t){function e(t){if(t in p.style)return t;for(var e=["Moz","Webkit","O","ms"],n=t.charAt(0).toUpperCase()+t.substr(1),i=0;i<e.length;++i){var r=e[i]+n;if(r in p.style)return r}}function n(){return p.style[d.transform]="",p.style[d.transform]="rotateY(90deg)",""!==p.style[d.transform]}function i(t){return"string"==typeof t&&this.parse(t),this}function r(t,e,n){e===!0?t.queue(n):e?t.queue(e,n):t.each(function(){n.call(this)})}function s(e){var n=[];return t.each(e,function(e){e=t.camelCase(e),e=t.transit.propertyMap[e]||t.cssProps[e]||e,e=u(e),d[e]&&(e=u(d[e])),-1===t.inArray(e,n)&&n.push(e)}),n}function a(e,n,i,r){var a=s(e);t.cssEase[i]&&(i=t.cssEase[i]);var o=""+f(n)+" "+i;parseInt(r,10)>0&&(o+=" "+f(r));var u=[];return t.each(a,function(t,e){u.push(e+" "+o)}),u.join(", ")}function o(e,n){n||(t.cssNumber[e]=!0),t.transit.propertyMap[e]=d.transform,t.cssHooks[e]={get:function(n){var i=t(n).css("transit:transform");return i.get(e)},set:function(n,i){var r=t(n).css("transit:transform");r.setFromString(e,i),t(n).css({"transit:transform":r})}}}function u(t){return t.replace(/([A-Z])/g,function(t){return"-"+t.toLowerCase()})}function c(t,e){return"string"!=typeof t||t.match(/^[\-0-9\.]+$/)?""+t+e:t}function f(e){var n=e;return"string"!=typeof n||n.match(/^[\-0-9\.]+/)||(n=t.fx.speeds[n]||t.fx.speeds._default),c(n,"ms")}t.transit={version:"0.9.12",propertyMap:{marginLeft:"margin",marginRight:"margin",marginBottom:"margin",marginTop:"margin",paddingLeft:"padding",paddingRight:"padding",paddingBottom:"padding",paddingTop:"padding"},enabled:!0,useTransitionEnd:!1};var p=document.createElement("div"),d={},l=navigator.userAgent.toLowerCase().indexOf("chrome")>-1;d.transition=e("transition"),d.transitionDelay=e("transitionDelay"),d.transform=e("transform"),d.transformOrigin=e("transformOrigin"),d.filter=e("Filter"),d.transform3d=n();var h={transition:"transitionend",MozTransition:"transitionend",OTransition:"oTransitionEnd",WebkitTransition:"webkitTransitionEnd",msTransition:"MSTransitionEnd"},b=d.transitionEnd=h[d.transition]||null;for(var y in d)d.hasOwnProperty(y)&&"undefined"==typeof t.support[y]&&(t.support[y]=d[y]);return p=null,t.cssEase={_default:"ease","in":"ease-in",out:"ease-out","in-out":"ease-in-out",snap:"cubic-bezier(0,1,.5,1)",easeInCubic:"cubic-bezier(.550,.055,.675,.190)",easeOutCubic:"cubic-bezier(.215,.61,.355,1)",easeInOutCubic:"cubic-bezier(.645,.045,.355,1)",easeInCirc:"cubic-bezier(.6,.04,.98,.335)",easeOutCirc:"cubic-bezier(.075,.82,.165,1)",easeInOutCirc:"cubic-bezier(.785,.135,.15,.86)",easeInExpo:"cubic-bezier(.95,.05,.795,.035)",easeOutExpo:"cubic-bezier(.19,1,.22,1)",easeInOutExpo:"cubic-bezier(1,0,0,1)",easeInQuad:"cubic-bezier(.55,.085,.68,.53)",easeOutQuad:"cubic-bezier(.25,.46,.45,.94)",easeInOutQuad:"cubic-bezier(.455,.03,.515,.955)",easeInQuart:"cubic-bezier(.895,.03,.685,.22)",easeOutQuart:"cubic-bezier(.165,.84,.44,1)",easeInOutQuart:"cubic-bezier(.77,0,.175,1)",easeInQuint:"cubic-bezier(.755,.05,.855,.06)",easeOutQuint:"cubic-bezier(.23,1,.32,1)",easeInOutQuint:"cubic-bezier(.86,0,.07,1)",easeInSine:"cubic-bezier(.47,0,.745,.715)",easeOutSine:"cubic-bezier(.39,.575,.565,1)",easeInOutSine:"cubic-bezier(.445,.05,.55,.95)",easeInBack:"cubic-bezier(.6,-.28,.735,.045)",easeOutBack:"cubic-bezier(.175, .885,.32,1.275)",easeInOutBack:"cubic-bezier(.68,-.55,.265,1.55)"},t.cssHooks["transit:transform"]={get:function(e){return t(e).data("transform")||new i},set:function(e,n){var r=n;r instanceof i||(r=new i(r)),e.style[d.transform]="WebkitTransform"!==d.transform||l?r.toString():r.toString(!0),t(e).data("transform",r)}},t.cssHooks.transform={set:t.cssHooks["transit:transform"].set},t.cssHooks.filter={get:function(t){return t.style[d.filter]},set:function(t,e){t.style[d.filter]=e}},t.fn.jquery<"1.8"&&(t.cssHooks.transformOrigin={get:function(t){return t.style[d.transformOrigin]},set:function(t,e){t.style[d.transformOrigin]=e}},t.cssHooks.transition={get:function(t){return t.style[d.transition]},set:function(t,e){t.style[d.transition]=e}}),o("scale"),o("scaleX"),o("scaleY"),o("translate"),o("rotate"),o("rotateX"),o("rotateY"),o("rotate3d"),o("perspective"),o("skewX"),o("skewY"),o("x",!0),o("y",!0),i.prototype={setFromString:function(t,e){var n="string"==typeof e?e.split(","):e.constructor===Array?e:[e];n.unshift(t),i.prototype.set.apply(this,n)},set:function(t){var e=Array.prototype.slice.apply(arguments,[1]);this.setter[t]?this.setter[t].apply(this,e):this[t]=e.join(",")},get:function(t){return this.getter[t]?this.getter[t].apply(this):this[t]||0},setter:{rotate:function(t){this.rotate=c(t,"deg")},rotateX:function(t){this.rotateX=c(t,"deg")},rotateY:function(t){this.rotateY=c(t,"deg")},scale:function(t,e){void 0===e&&(e=t),this.scale=t+","+e},skewX:function(t){this.skewX=c(t,"deg")},skewY:function(t){this.skewY=c(t,"deg")},perspective:function(t){this.perspective=c(t,"px")},x:function(t){this.set("translate",t,null)},y:function(t){this.set("translate",null,t)},translate:function(t,e){void 0===this._translateX&&(this._translateX=0),void 0===this._translateY&&(this._translateY=0),null!==t&&void 0!==t&&(this._translateX=c(t,"px")),null!==e&&void 0!==e&&(this._translateY=c(e,"px")),this.translate=this._translateX+","+this._translateY}},getter:{x:function(){return this._translateX||0},y:function(){return this._translateY||0},scale:function(){var t=(this.scale||"1,1").split(",");return t[0]&&(t[0]=parseFloat(t[0])),t[1]&&(t[1]=parseFloat(t[1])),t[0]===t[1]?t[0]:t},rotate3d:function(){for(var t=(this.rotate3d||"0,0,0,0deg").split(","),e=0;3>=e;++e)t[e]&&(t[e]=parseFloat(t[e]));return t[3]&&(t[3]=c(t[3],"deg")),t}},parse:function(t){var e=this;t.replace(/([a-zA-Z0-9]+)\((.*?)\)/g,function(t,n,i){e.setFromString(n,i)})},toString:function(t){var e=[];for(var n in this)if(this.hasOwnProperty(n)){if(!d.transform3d&&("rotateX"===n||"rotateY"===n||"perspective"===n||"transformOrigin"===n))continue;"_"!==n[0]&&e.push(t&&"scale"===n?n+"3d("+this[n]+",1)":t&&"translate"===n?n+"3d("+this[n]+",0)":n+"("+this[n]+")")}return e.join(" ")}},t.fn.transition=t.fn.transit=function(e,n,i,s){var o=this,u=0,c=!0,p=t.extend(!0,{},e);"function"==typeof n&&(s=n,n=void 0),"object"==typeof n&&(i=n.easing,u=n.delay||0,c="undefined"==typeof n.queue?!0:n.queue,s=n.complete,n=n.duration),"function"==typeof i&&(s=i,i=void 0),"undefined"!=typeof p.easing&&(i=p.easing,delete p.easing),"undefined"!=typeof p.duration&&(n=p.duration,delete p.duration),"undefined"!=typeof p.complete&&(s=p.complete,delete p.complete),"undefined"!=typeof p.queue&&(c=p.queue,delete p.queue),"undefined"!=typeof p.delay&&(u=p.delay,delete p.delay),"undefined"==typeof n&&(n=t.fx.speeds._default),"undefined"==typeof i&&(i=t.cssEase._default),n=f(n);var l=a(p,n,i,u),h=t.transit.enabled&&d.transition,y=h?parseInt(n,10)+parseInt(u,10):0;if(0===y){var g=function(t){o.css(p),s&&s.apply(o),t&&t()};return r(o,c,g),o}var m={},v=function(e){var n=!1,i=function(){n&&o.unbind(b,i),y>0&&o.each(function(){this.style[d.transition]=m[this]||null}),"function"==typeof s&&s.apply(o),"function"==typeof e&&e()};y>0&&b&&t.transit.useTransitionEnd?(n=!0,o.bind(b,i)):window.setTimeout(i,y),o.each(function(){y>0&&(this.style[d.transition]=l),t(this).css(p)})},z=function(t){this.offsetWidth,v(t)};return r(o,c,z),this},t.transit.getTransitionValue=a,t});
</script>
<script>
Date.prototype.getMonthName=function(){var month_names=['January','February','March','April','May','June','July','August','September','October','November','December'];return month_names[this.getMonth()];}
Date.prototype.getMonthAbbr=function(){var month_abbrs=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];return month_abbrs[this.getMonth()];}
Date.prototype.getDayFull=function(){var days_full=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];return days_full[this.getDay()];};Date.prototype.getDayAbbr=function(){var days_abbr=['Sun','Mon','Tue','Wed','Thur','Fri','Sat'];return days_abbr[this.getDay()];};Date.prototype.getDayOfYear=function(){var onejan=new Date(this.getFullYear(),0,1);return Math.ceil((this-onejan)/86400000);};Date.prototype.getDaySuffix=function(){var d=this.getDate();var sfx=["th","st","nd","rd"];var val=d%100;return(sfx[(val-20)%10]||sfx[val]||sfx[0]);};Date.prototype.getWeekOfYear=function(){var onejan=new Date(this.getFullYear(),0,1);return Math.ceil((((this-onejan)/86400000)+onejan.getDay()+1)/7);}
Date.prototype.isLeapYear=function(){var yr=this.getFullYear();if((parseInt(yr)%4)==0){if(parseInt(yr)%100==0){if(parseInt(yr)%400!=0){return false;}
if(parseInt(yr)%400==0){return true;}}
if(parseInt(yr)%100!=0){return true;}}
if((parseInt(yr)%4)!=0){return false;}};Date.prototype.getMonthDayCount=function(){var month_day_counts=[31,this.isLeapYear()?29:28,31,30,31,30,31,31,30,31,30,31];return month_day_counts[this.getMonth()];}
Date.prototype.format=function(dateFormat){dateFormat=dateFormat.split("");var date=this.getDate(),month=this.getMonth(),hours=this.getHours(),minutes=this.getMinutes(),seconds=this.getSeconds();var date_props={d:date<10?'0'+date:date,D:this.getDayAbbr(),j:this.getDate(),l:this.getDayFull(),S:this.getDaySuffix(),w:this.getDay(),z:this.getDayOfYear(),W:this.getWeekOfYear(),F:this.getMonthName(),m:month<10?'0'+(month+1):month+1,M:this.getMonthAbbr(),n:month+1,t:this.getMonthDayCount(),L:this.isLeapYear()?'1':'0',Y:this.getFullYear(),y:this.getFullYear()+''.substring(2,4),a:hours>12?'pm':'am',A:hours>12?'PM':'AM',g:hours%12>0?hours%12:12,G:hours>0?hours:"12",h:hours%12>0?hours%12:12,H:hours,i:minutes<10?'0'+minutes:minutes,s:seconds<10?'0'+seconds:seconds};var date_string="";for(var i=0;i<dateFormat.length;i++){var f=dateFormat[i];if(f.match(/[a-zA-Z]/g)){date_string+=date_props[f]?date_props[f]:'';}else{date_string+=f;}}
return date_string;};
</script>
<script id="swiper-js-inline-embed">
/**
* Swiper 8.2.4
* Most modern mobile touch slider and framework with hardware accelerated transitions
* https://swiperjs.com
*
* Copyright 2014-2022 Vladimir Kharlampidi
*
* Released under the MIT License
*
* Released on: June 13, 2022
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Swiper=t()}(this,(function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,a){void 0===s&&(s={}),void 0===a&&(a={}),Object.keys(a).forEach((i=>{void 0===s[i]?s[i]=a[i]:e(a[i])&&e(s[i])&&Object.keys(a[i]).length>0&&t(s[i],a[i])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function a(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const i={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function r(){const e="undefined"!=typeof window?window:{};return t(e,i),e}class n extends Array{constructor(e){"number"==typeof e?super(e):(super(...e||[]),function(e){const t=e.__proto__;Object.defineProperty(e,"__proto__",{get:()=>t,set(e){t.__proto__=e}})}(this))}}function l(e){void 0===e&&(e=[]);const t=[];return e.forEach((e=>{Array.isArray(e)?t.push(...l(e)):t.push(e)})),t}function o(e,t){return Array.prototype.filter.call(e,t)}function d(e,t){const s=r(),i=a();let l=[];if(!t&&e instanceof n)return e;if(!e)return new n(l);if("string"==typeof e){const s=e.trim();if(s.indexOf("<")>=0&&s.indexOf(">")>=0){let e="div";0===s.indexOf("<li")&&(e="ul"),0===s.indexOf("<tr")&&(e="tbody"),0!==s.indexOf("<td")&&0!==s.indexOf("<th")||(e="tr"),0===s.indexOf("<tbody")&&(e="table"),0===s.indexOf("<option")&&(e="select");const t=i.createElement(e);t.innerHTML=s;for(let e=0;e<t.childNodes.length;e+=1)l.push(t.childNodes[e])}else l=function(e,t){if("string"!=typeof e)return[e];const s=[],a=t.querySelectorAll(e);for(let e=0;e<a.length;e+=1)s.push(a[e]);return s}(e.trim(),t||i)}else if(e.nodeType||e===s||e===i)l.push(e);else if(Array.isArray(e)){if(e instanceof n)return e;l=e}return new n(function(e){const t=[];for(let s=0;s<e.length;s+=1)-1===t.indexOf(e[s])&&t.push(e[s]);return t}(l))}d.fn=n.prototype;const c={addClass:function(){for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];const a=l(t.map((e=>e.split(" "))));return this.forEach((e=>{e.classList.add(...a)})),this},removeClass:function(){for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];const a=l(t.map((e=>e.split(" "))));return this.forEach((e=>{e.classList.remove(...a)})),this},hasClass:function(){for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];const a=l(t.map((e=>e.split(" "))));return o(this,(e=>a.filter((t=>e.classList.contains(t))).length>0)).length>0},toggleClass:function(){for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];const a=l(t.map((e=>e.split(" "))));this.forEach((e=>{a.forEach((t=>{e.classList.toggle(t)}))}))},attr:function(e,t){if(1===arguments.length&&"string"==typeof e)return this[0]?this[0].getAttribute(e):void 0;for(let s=0;s<this.length;s+=1)if(2===arguments.length)this[s].setAttribute(e,t);else for(const t in e)this[s][t]=e[t],this[s].setAttribute(t,e[t]);return this},removeAttr:function(e){for(let t=0;t<this.length;t+=1)this[t].removeAttribute(e);return this},transform:function(e){for(let t=0;t<this.length;t+=1)this[t].style.transform=e;return this},transition:function(e){for(let t=0;t<this.length;t+=1)this[t].style.transitionDuration="string"!=typeof e?`${e}ms`:e;return this},on:function(){for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];let[a,i,r,n]=t;function l(e){const t=e.target;if(!t)return;const s=e.target.dom7EventData||[];if(s.indexOf(e)<0&&s.unshift(e),d(t).is(i))r.apply(t,s);else{const e=d(t).parents();for(let t=0;t<e.length;t+=1)d(e[t]).is(i)&&r.apply(e[t],s)}}function o(e){const t=e&&e.target&&e.target.dom7EventData||[];t.indexOf(e)<0&&t.unshift(e),r.apply(this,t)}"function"==typeof t[1]&&([a,r,n]=t,i=void 0),n||(n=!1);const c=a.split(" ");let p;for(let e=0;e<this.length;e+=1){const t=this[e];if(i)for(p=0;p<c.length;p+=1){const e=c[p];t.dom7LiveListeners||(t.dom7LiveListeners={}),t.dom7LiveListeners[e]||(t.dom7LiveListeners[e]=[]),t.dom7LiveListeners[e].push({listener:r,proxyListener:l}),t.addEventListener(e,l,n)}else for(p=0;p<c.length;p+=1){const e=c[p];t.dom7Listeners||(t.dom7Listeners={}),t.dom7Listeners[e]||(t.dom7Listeners[e]=[]),t.dom7Listeners[e].push({listener:r,proxyListener:o}),t.addEventListener(e,o,n)}}return this},off:function(){for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];let[a,i,r,n]=t;"function"==typeof t[1]&&([a,r,n]=t,i=void 0),n||(n=!1);const l=a.split(" ");for(let e=0;e<l.length;e+=1){const t=l[e];for(let e=0;e<this.length;e+=1){const s=this[e];let a;if(!i&&s.dom7Listeners?a=s.dom7Listeners[t]:i&&s.dom7LiveListeners&&(a=s.dom7LiveListeners[t]),a&&a.length)for(let e=a.length-1;e>=0;e-=1){const i=a[e];r&&i.listener===r||r&&i.listener&&i.listener.dom7proxy&&i.listener.dom7proxy===r?(s.removeEventListener(t,i.proxyListener,n),a.splice(e,1)):r||(s.removeEventListener(t,i.proxyListener,n),a.splice(e,1))}}}return this},trigger:function(){const e=r();for(var t=arguments.length,s=new Array(t),a=0;a<t;a++)s[a]=arguments[a];const i=s[0].split(" "),n=s[1];for(let t=0;t<i.length;t+=1){const a=i[t];for(let t=0;t<this.length;t+=1){const i=this[t];if(e.CustomEvent){const t=new e.CustomEvent(a,{detail:n,bubbles:!0,cancelable:!0});i.dom7EventData=s.filter(((e,t)=>t>0)),i.dispatchEvent(t),i.dom7EventData=[],delete i.dom7EventData}}}return this},transitionEnd:function(e){const t=this;return e&&t.on("transitionend",(function s(a){a.target===this&&(e.call(this,a),t.off("transitionend",s))})),this},outerWidth:function(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetWidth+parseFloat(e.getPropertyValue("margin-right"))+parseFloat(e.getPropertyValue("margin-left"))}return this[0].offsetWidth}return null},outerHeight:function(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetHeight+parseFloat(e.getPropertyValue("margin-top"))+parseFloat(e.getPropertyValue("margin-bottom"))}return this[0].offsetHeight}return null},styles:function(){const e=r();return this[0]?e.getComputedStyle(this[0],null):{}},offset:function(){if(this.length>0){const e=r(),t=a(),s=this[0],i=s.getBoundingClientRect(),n=t.body,l=s.clientTop||n.clientTop||0,o=s.clientLeft||n.clientLeft||0,d=s===e?e.scrollY:s.scrollTop,c=s===e?e.scrollX:s.scrollLeft;return{top:i.top+d-l,left:i.left+c-o}}return null},css:function(e,t){const s=r();let a;if(1===arguments.length){if("string"!=typeof e){for(a=0;a<this.length;a+=1)for(const t in e)this[a].style[t]=e[t];return this}if(this[0])return s.getComputedStyle(this[0],null).getPropertyValue(e)}if(2===arguments.length&&"string"==typeof e){for(a=0;a<this.length;a+=1)this[a].style[e]=t;return this}return this},each:function(e){return e?(this.forEach(((t,s)=>{e.apply(t,[t,s])})),this):this},html:function(e){if(void 0===e)return this[0]?this[0].innerHTML:null;for(let t=0;t<this.length;t+=1)this[t].innerHTML=e;return this},text:function(e){if(void 0===e)return this[0]?this[0].textContent.trim():null;for(let t=0;t<this.length;t+=1)this[t].textContent=e;return this},is:function(e){const t=r(),s=a(),i=this[0];let l,o;if(!i||void 0===e)return!1;if("string"==typeof e){if(i.matches)return i.matches(e);if(i.webkitMatchesSelector)return i.webkitMatchesSelector(e);if(i.msMatchesSelector)return i.msMatchesSelector(e);for(l=d(e),o=0;o<l.length;o+=1)if(l[o]===i)return!0;return!1}if(e===s)return i===s;if(e===t)return i===t;if(e.nodeType||e instanceof n){for(l=e.nodeType?[e]:e,o=0;o<l.length;o+=1)if(l[o]===i)return!0;return!1}return!1},index:function(){let e,t=this[0];if(t){for(e=0;null!==(t=t.previousSibling);)1===t.nodeType&&(e+=1);return e}},eq:function(e){if(void 0===e)return this;const t=this.length;if(e>t-1)return d([]);if(e<0){const s=t+e;return d(s<0?[]:[this[s]])}return d([this[e]])},append:function(){let e;const t=a();for(let s=0;s<arguments.length;s+=1){e=s<0||arguments.length<=s?void 0:arguments[s];for(let s=0;s<this.length;s+=1)if("string"==typeof e){const a=t.createElement("div");for(a.innerHTML=e;a.firstChild;)this[s].appendChild(a.firstChild)}else if(e instanceof n)for(let t=0;t<e.length;t+=1)this[s].appendChild(e[t]);else this[s].appendChild(e)}return this},prepend:function(e){const t=a();let s,i;for(s=0;s<this.length;s+=1)if("string"==typeof e){const a=t.createElement("div");for(a.innerHTML=e,i=a.childNodes.length-1;i>=0;i-=1)this[s].insertBefore(a.childNodes[i],this[s].childNodes[0])}else if(e instanceof n)for(i=0;i<e.length;i+=1)this[s].insertBefore(e[i],this[s].childNodes[0]);else this[s].insertBefore(e,this[s].childNodes[0]);return this},next:function(e){return this.length>0?e?this[0].nextElementSibling&&d(this[0].nextElementSibling).is(e)?d([this[0].nextElementSibling]):d([]):this[0].nextElementSibling?d([this[0].nextElementSibling]):d([]):d([])},nextAll:function(e){const t=[];let s=this[0];if(!s)return d([]);for(;s.nextElementSibling;){const a=s.nextElementSibling;e?d(a).is(e)&&t.push(a):t.push(a),s=a}return d(t)},prev:function(e){if(this.length>0){const t=this[0];return e?t.previousElementSibling&&d(t.previousElementSibling).is(e)?d([t.previousElementSibling]):d([]):t.previousElementSibling?d([t.previousElementSibling]):d([])}return d([])},prevAll:function(e){const t=[];let s=this[0];if(!s)return d([]);for(;s.previousElementSibling;){const a=s.previousElementSibling;e?d(a).is(e)&&t.push(a):t.push(a),s=a}return d(t)},parent:function(e){const t=[];for(let s=0;s<this.length;s+=1)null!==this[s].parentNode&&(e?d(this[s].parentNode).is(e)&&t.push(this[s].parentNode):t.push(this[s].parentNode));return d(t)},parents:function(e){const t=[];for(let s=0;s<this.length;s+=1){let a=this[s].parentNode;for(;a;)e?d(a).is(e)&&t.push(a):t.push(a),a=a.parentNode}return d(t)},closest:function(e){let t=this;return void 0===e?d([]):(t.is(e)||(t=t.parents(e).eq(0)),t)},find:function(e){const t=[];for(let s=0;s<this.length;s+=1){const a=this[s].querySelectorAll(e);for(let e=0;e<a.length;e+=1)t.push(a[e])}return d(t)},children:function(e){const t=[];for(let s=0;s<this.length;s+=1){const a=this[s].children;for(let s=0;s<a.length;s+=1)e&&!d(a[s]).is(e)||t.push(a[s])}return d(t)},filter:function(e){return d(o(this,e))},remove:function(){for(let e=0;e<this.length;e+=1)this[e].parentNode&&this[e].parentNode.removeChild(this[e]);return this}};function p(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function u(){return Date.now()}function h(e,t){void 0===t&&(t="x");const s=r();let a,i,n;const l=function(e){const t=r();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(i=l.transform||l.webkitTransform,i.split(",").length>6&&(i=i.split(", ").map((e=>e.replace(",","."))).join(", ")),n=new s.WebKitCSSMatrix("none"===i?"":i)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),a=n.toString().split(",")),"x"===t&&(i=s.WebKitCSSMatrix?n.m41:16===a.length?parseFloat(a[12]):parseFloat(a[4])),"y"===t&&(i=s.WebKitCSSMatrix?n.m42:16===a.length?parseFloat(a[13]):parseFloat(a[5])),i||0}function m(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function f(e){return"undefined"!=typeof window&&void 0!==window.HTMLElement?e instanceof HTMLElement:e&&(1===e.nodeType||11===e.nodeType)}function g(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let s=1;s<arguments.length;s+=1){const a=s<0||arguments.length<=s?void 0:arguments[s];if(null!=a&&!f(a)){const s=Object.keys(Object(a)).filter((e=>t.indexOf(e)<0));for(let t=0,i=s.length;t<i;t+=1){const i=s[t],r=Object.getOwnPropertyDescriptor(a,i);void 0!==r&&r.enumerable&&(m(e[i])&&m(a[i])?a[i].__swiper__?e[i]=a[i]:g(e[i],a[i]):!m(e[i])&&m(a[i])?(e[i]={},a[i].__swiper__?e[i]=a[i]:g(e[i],a[i])):e[i]=a[i])}}}return e}function v(e,t,s){e.style.setProperty(t,s)}function w(e){let{swiper:t,targetPosition:s,side:a}=e;const i=r(),n=-t.translate;let l,o=null;const d=t.params.speed;t.wrapperEl.style.scrollSnapType="none",i.cancelAnimationFrame(t.cssModeFrameID);const c=s>n?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{l=(new Date).getTime(),null===o&&(o=l);const e=Math.max(Math.min((l-o)/d,1),0),r=.5-Math.cos(e*Math.PI)/2;let c=n+r*(s-n);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[a]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[a]:c})})),void i.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=i.requestAnimationFrame(u)};u()}let b,x,y;function E(){return b||(b=function(){const e=r(),t=a();return{smoothScroll:t.documentElement&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch),passiveListener:function(){let t=!1;try{const s=Object.defineProperty({},"passive",{get(){t=!0}});e.addEventListener("testPassiveListener",null,s)}catch(e){}return t}(),gestures:"ongesturestart"in e}}()),b}function C(e){return void 0===e&&(e={}),x||(x=function(e){let{userAgent:t}=void 0===e?{}:e;const s=E(),a=r(),i=a.navigator.platform,n=t||a.navigator.userAgent,l={ios:!1,android:!1},o=a.screen.width,d=a.screen.height,c=n.match(/(Android);?[\s\/]+([\d.]+)?/);let p=n.match(/(iPad).*OS\s([\d_]+)/);const u=n.match(/(iPod)(.*OS\s([\d_]+))?/),h=!p&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),m="Win32"===i;let f="MacIntel"===i;return!p&&f&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${d}`)>=0&&(p=n.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),f=!1),c&&!m&&(l.os="android",l.android=!0),(p||h||u)&&(l.os="ios",l.ios=!0),l}(e)),x}function T(){return y||(y=function(){const e=r();return{isSafari:function(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}(),isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}()),y}Object.keys(c).forEach((e=>{Object.defineProperty(d.fn,e,{value:c[e],writable:!0})}));var $={on(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;const i=s?"unshift":"push";return e.split(" ").forEach((e=>{a.eventsListeners[e]||(a.eventsListeners[e]=[]),a.eventsListeners[e][i](t)})),a},once(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;function i(){a.off(e,i),i.__emitterProxy&&delete i.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n<s;n++)r[n]=arguments[n];t.apply(a,r)}return i.__emitterProxy=t,a.on(e,i,s)},onAny(e,t){const s=this;if(!s.eventsListeners||s.destroyed)return s;if("function"!=typeof e)return s;const a=t?"unshift":"push";return s.eventsAnyListeners.indexOf(e)<0&&s.eventsAnyListeners[a](e),s},offAny(e){const t=this;if(!t.eventsListeners||t.destroyed)return t;if(!t.eventsAnyListeners)return t;const s=t.eventsAnyListeners.indexOf(e);return s>=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((a,i)=>{(a===t||a.__emitterProxy&&a.__emitterProxy===t)&&s.eventsListeners[e].splice(i,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,a;for(var i=arguments.length,r=new Array(i),n=0;n<i;n++)r[n]=arguments[n];"string"==typeof r[0]||Array.isArray(r[0])?(t=r[0],s=r.slice(1,r.length),a=e):(t=r[0].events,s=r[0].data,a=r[0].context||e),s.unshift(a);return(Array.isArray(t)?t:t.split(" ")).forEach((t=>{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(a,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(a,s)}))})),e}};var S={updateSize:function(){const e=this;let t,s;const a=e.$el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:a[0].clientWidth,s=void 0!==e.params.height&&null!==e.params.height?e.params.height:a[0].clientHeight,0===t&&e.isHorizontal()||0===s&&e.isVertical()||(t=t-parseInt(a.css("padding-left")||0,10)-parseInt(a.css("padding-right")||0,10),s=s-parseInt(a.css("padding-top")||0,10)-parseInt(a.css("padding-bottom")||0,10),Number.isNaN(t)&&(t=0),Number.isNaN(s)&&(s=0),Object.assign(e,{width:t,height:s,size:e.isHorizontal()?t:s}))},updateSlides:function(){const e=this;function t(t){return e.isHorizontal()?t:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[t]}function s(e,s){return parseFloat(e.getPropertyValue(t(s))||0)}const a=e.params,{$wrapperEl:i,size:r,rtlTranslate:n,wrongRTL:l}=e,o=e.virtual&&a.virtual.enabled,d=o?e.virtual.slides.length:e.slides.length,c=i.children(`.${e.params.slideClass}`),p=o?e.virtual.slides.length:c.length;let u=[];const h=[],m=[];let f=a.slidesOffsetBefore;"function"==typeof f&&(f=a.slidesOffsetBefore.call(e));let g=a.slidesOffsetAfter;"function"==typeof g&&(g=a.slidesOffsetAfter.call(e));const w=e.snapGrid.length,b=e.slidesGrid.length;let x=a.spaceBetween,y=-f,E=0,C=0;if(void 0===r)return;"string"==typeof x&&x.indexOf("%")>=0&&(x=parseFloat(x.replace("%",""))/100*r),e.virtualSize=-x,n?c.css({marginLeft:"",marginBottom:"",marginTop:""}):c.css({marginRight:"",marginBottom:"",marginTop:""}),a.centeredSlides&&a.cssMode&&(v(e.wrapperEl,"--swiper-centered-offset-before",""),v(e.wrapperEl,"--swiper-centered-offset-after",""));const T=a.grid&&a.grid.rows>1&&e.grid;let $;T&&e.grid.initSlides(p);const S="auto"===a.slidesPerView&&a.breakpoints&&Object.keys(a.breakpoints).filter((e=>void 0!==a.breakpoints[e].slidesPerView)).length>0;for(let i=0;i<p;i+=1){$=0;const n=c.eq(i);if(T&&e.grid.updateSlide(i,n,p,t),"none"!==n.css("display")){if("auto"===a.slidesPerView){S&&(c[i].style[t("width")]="");const r=getComputedStyle(n[0]),l=n[0].style.transform,o=n[0].style.webkitTransform;if(l&&(n[0].style.transform="none"),o&&(n[0].style.webkitTransform="none"),a.roundLengths)$=e.isHorizontal()?n.outerWidth(!0):n.outerHeight(!0);else{const e=s(r,"width"),t=s(r,"padding-left"),a=s(r,"padding-right"),i=s(r,"margin-left"),l=s(r,"margin-right"),o=r.getPropertyValue("box-sizing");if(o&&"border-box"===o)$=e+i+l;else{const{clientWidth:s,offsetWidth:r}=n[0];$=e+t+a+i+l+(r-s)}}l&&(n[0].style.transform=l),o&&(n[0].style.webkitTransform=o),a.roundLengths&&($=Math.floor($))}else $=(r-(a.slidesPerView-1)*x)/a.slidesPerView,a.roundLengths&&($=Math.floor($)),c[i]&&(c[i].style[t("width")]=`${$}px`);c[i]&&(c[i].swiperSlideSize=$),m.push($),a.centeredSlides?(y=y+$/2+E/2+x,0===E&&0!==i&&(y=y-r/2-x),0===i&&(y=y-r/2-x),Math.abs(y)<.001&&(y=0),a.roundLengths&&(y=Math.floor(y)),C%a.slidesPerGroup==0&&u.push(y),h.push(y)):(a.roundLengths&&(y=Math.floor(y)),(C-Math.min(e.params.slidesPerGroupSkip,C))%e.params.slidesPerGroup==0&&u.push(y),h.push(y),y=y+$+x),e.virtualSize+=$+x,E=$,C+=1}}if(e.virtualSize=Math.max(e.virtualSize,r)+g,n&&l&&("slide"===a.effect||"coverflow"===a.effect)&&i.css({width:`${e.virtualSize+a.spaceBetween}px`}),a.setWrapperSize&&i.css({[t("width")]:`${e.virtualSize+a.spaceBetween}px`}),T&&e.grid.updateWrapperSize($,u,t),!a.centeredSlides){const t=[];for(let s=0;s<u.length;s+=1){let i=u[s];a.roundLengths&&(i=Math.floor(i)),u[s]<=e.virtualSize-r&&t.push(i)}u=t,Math.floor(e.virtualSize-r)-Math.floor(u[u.length-1])>1&&u.push(e.virtualSize-r)}if(0===u.length&&(u=[0]),0!==a.spaceBetween){const s=e.isHorizontal()&&n?"marginLeft":t("marginRight");c.filter(((e,t)=>!a.cssMode||t!==c.length-1)).css({[s]:`${x}px`})}if(a.centeredSlides&&a.centeredSlidesBounds){let e=0;m.forEach((t=>{e+=t+(a.spaceBetween?a.spaceBetween:0)})),e-=a.spaceBetween;const t=e-r;u=u.map((e=>e<0?-f:e>t?t+g:e))}if(a.centerInsufficientSlides){let e=0;if(m.forEach((t=>{e+=t+(a.spaceBetween?a.spaceBetween:0)})),e-=a.spaceBetween,e<r){const t=(r-e)/2;u.forEach(((e,s)=>{u[s]=e-t})),h.forEach(((e,s)=>{h[s]=e+t}))}}if(Object.assign(e,{slides:c,snapGrid:u,slidesGrid:h,slidesSizesGrid:m}),a.centeredSlides&&a.cssMode&&!a.centeredSlidesBounds){v(e.wrapperEl,"--swiper-centered-offset-before",-u[0]+"px"),v(e.wrapperEl,"--swiper-centered-offset-after",e.size/2-m[m.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(p!==d&&e.emit("slidesLengthChange"),u.length!==w&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==b&&e.emit("slidesGridLengthChange"),a.watchSlidesProgress&&e.updateSlidesOffset(),!(o||a.cssMode||"slide"!==a.effect&&"fade"!==a.effect)){const t=`${a.containerModifierClass}backface-hidden`,s=e.$el.hasClass(t);p<=a.maxBackfaceHiddenSlides?s||e.$el.addClass(t):s&&e.$el.removeClass(t)}},updateAutoHeight:function(e){const t=this,s=[],a=t.virtual&&t.params.virtual.enabled;let i,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>a?t.slides.filter((t=>parseInt(t.getAttribute("data-swiper-slide-index"),10)===e))[0]:t.slides.eq(e)[0];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||d([])).each((e=>{s.push(e)}));else for(i=0;i<Math.ceil(t.params.slidesPerView);i+=1){const e=t.activeIndex+i;if(e>t.slides.length&&!a)break;s.push(n(e))}else s.push(n(t.activeIndex));for(i=0;i<s.length;i+=1)if(void 0!==s[i]){const e=s[i].offsetHeight;r=e>r?e:r}(r||0===r)&&t.$wrapperEl.css("height",`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides;for(let s=0;s<t.length;s+=1)t[s].swiperSlideOffset=e.isHorizontal()?t[s].offsetLeft:t[s].offsetTop},updateSlidesProgress:function(e){void 0===e&&(e=this&&this.translate||0);const t=this,s=t.params,{slides:a,rtlTranslate:i,snapGrid:r}=t;if(0===a.length)return;void 0===a[0].swiperSlideOffset&&t.updateSlidesOffset();let n=-e;i&&(n=e),a.removeClass(s.slideVisibleClass),t.visibleSlidesIndexes=[],t.visibleSlides=[];for(let e=0;e<a.length;e+=1){const l=a[e];let o=l.swiperSlideOffset;s.cssMode&&s.centeredSlides&&(o-=a[0].swiperSlideOffset);const d=(n+(s.centeredSlides?t.minTranslate():0)-o)/(l.swiperSlideSize+s.spaceBetween),c=(n-r[0]+(s.centeredSlides?t.minTranslate():0)-o)/(l.swiperSlideSize+s.spaceBetween),p=-(n-o),u=p+t.slidesSizesGrid[e];(p>=0&&p<t.size-1||u>1&&u<=t.size||p<=0&&u>=t.size)&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e),a.eq(e).addClass(s.slideVisibleClass)),l.progress=i?-d:d,l.originalProgress=i?-c:c}t.visibleSlides=d(t.visibleSlides)},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,a=t.maxTranslate()-t.minTranslate();let{progress:i,isBeginning:r,isEnd:n}=t;const l=r,o=n;0===a?(i=0,r=!0,n=!0):(i=(e-t.minTranslate())/a,r=i<=0,n=i>=1),Object.assign(t,{progress:i,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!l&&t.emit("reachBeginning toEdge"),n&&!o&&t.emit("reachEnd toEdge"),(l&&!r||o&&!n)&&t.emit("fromEdge"),t.emit("progress",i)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,$wrapperEl:a,activeIndex:i,realIndex:r}=e,n=e.virtual&&s.virtual.enabled;let l;t.removeClass(`${s.slideActiveClass} ${s.slideNextClass} ${s.slidePrevClass} ${s.slideDuplicateActiveClass} ${s.slideDuplicateNextClass} ${s.slideDuplicatePrevClass}`),l=n?e.$wrapperEl.find(`.${s.slideClass}[data-swiper-slide-index="${i}"]`):t.eq(i),l.addClass(s.slideActiveClass),s.loop&&(l.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${r}"]`).addClass(s.slideDuplicateActiveClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${r}"]`).addClass(s.slideDuplicateActiveClass));let o=l.nextAll(`.${s.slideClass}`).eq(0).addClass(s.slideNextClass);s.loop&&0===o.length&&(o=t.eq(0),o.addClass(s.slideNextClass));let d=l.prevAll(`.${s.slideClass}`).eq(0).addClass(s.slidePrevClass);s.loop&&0===d.length&&(d=t.eq(-1),d.addClass(s.slidePrevClass)),s.loop&&(o.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass),d.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass)),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{slidesGrid:a,snapGrid:i,params:r,activeIndex:n,realIndex:l,snapIndex:o}=t;let d,c=e;if(void 0===c){for(let e=0;e<a.length;e+=1)void 0!==a[e+1]?s>=a[e]&&s<a[e+1]-(a[e+1]-a[e])/2?c=e:s>=a[e]&&s<a[e+1]&&(c=e+1):s>=a[e]&&(c=e);r.normalizeSlideIndex&&(c<0||void 0===c)&&(c=0)}if(i.indexOf(s)>=0)d=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,c);d=e+Math.floor((c-e)/r.slidesPerGroup)}if(d>=i.length&&(d=i.length-1),c===n)return void(d!==o&&(t.snapIndex=d,t.emit("snapIndexChange")));const p=parseInt(t.slides.eq(c).attr("data-swiper-slide-index")||c,10);Object.assign(t,{snapIndex:d,realIndex:p,previousIndex:n,activeIndex:c}),t.emit("activeIndexChange"),t.emit("snapIndexChange"),l!==p&&t.emit("realIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&t.emit("slideChange")},updateClickedSlide:function(e){const t=this,s=t.params,a=d(e).closest(`.${s.slideClass}`)[0];let i,r=!1;if(a)for(let e=0;e<t.slides.length;e+=1)if(t.slides[e]===a){r=!0,i=e;break}if(!a||!r)return t.clickedSlide=void 0,void(t.clickedIndex=void 0);t.clickedSlide=a,t.virtual&&t.params.virtual.enabled?t.clickedIndex=parseInt(d(a).attr("data-swiper-slide-index"),10):t.clickedIndex=i,s.slideToClickedSlide&&void 0!==t.clickedIndex&&t.clickedIndex!==t.activeIndex&&t.slideToClickedSlide()}};var M={getTranslate:function(e){void 0===e&&(e=this.isHorizontal()?"x":"y");const{params:t,rtlTranslate:s,translate:a,$wrapperEl:i}=this;if(t.virtualTranslate)return s?-a:a;if(t.cssMode)return a;let r=h(i[0],e);return s&&(r=-r),r||0},setTranslate:function(e,t){const s=this,{rtlTranslate:a,params:i,$wrapperEl:r,wrapperEl:n,progress:l}=s;let o,d=0,c=0;s.isHorizontal()?d=a?-e:e:c=e,i.roundLengths&&(d=Math.floor(d),c=Math.floor(c)),i.cssMode?n[s.isHorizontal()?"scrollLeft":"scrollTop"]=s.isHorizontal()?-d:-c:i.virtualTranslate||r.transform(`translate3d(${d}px, ${c}px, 0px)`),s.previousTranslate=s.translate,s.translate=s.isHorizontal()?d:c;const p=s.maxTranslate()-s.minTranslate();o=0===p?0:(e-s.minTranslate())/p,o!==l&&s.updateProgress(e),s.emit("setTranslate",s.translate,t)},minTranslate:function(){return-this.snapGrid[0]},maxTranslate:function(){return-this.snapGrid[this.snapGrid.length-1]},translateTo:function(e,t,s,a,i){void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),void 0===a&&(a=!0);const r=this,{params:n,wrapperEl:l}=r;if(r.animating&&n.preventInteractionOnTransition)return!1;const o=r.minTranslate(),d=r.maxTranslate();let c;if(c=a&&e>o?o:a&&e<d?d:e,r.updateProgress(c),n.cssMode){const e=r.isHorizontal();if(0===t)l[e?"scrollLeft":"scrollTop"]=-c;else{if(!r.support.smoothScroll)return w({swiper:r,targetPosition:-c,side:e?"left":"top"}),!0;l.scrollTo({[e?"left":"top"]:-c,behavior:"smooth"})}return!0}return 0===t?(r.setTransition(0),r.setTranslate(c),s&&(r.emit("beforeTransitionStart",t,i),r.emit("transitionEnd"))):(r.setTransition(t),r.setTranslate(c),s&&(r.emit("beforeTransitionStart",t,i),r.emit("transitionStart")),r.animating||(r.animating=!0,r.onTranslateToWrapperTransitionEnd||(r.onTranslateToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.$wrapperEl[0].removeEventListener("transitionend",r.onTranslateToWrapperTransitionEnd),r.$wrapperEl[0].removeEventListener("webkitTransitionEnd",r.onTranslateToWrapperTransitionEnd),r.onTranslateToWrapperTransitionEnd=null,delete r.onTranslateToWrapperTransitionEnd,s&&r.emit("transitionEnd"))}),r.$wrapperEl[0].addEventListener("transitionend",r.onTranslateToWrapperTransitionEnd),r.$wrapperEl[0].addEventListener("webkitTransitionEnd",r.onTranslateToWrapperTransitionEnd))),!0}};function P(e){let{swiper:t,runCallbacks:s,direction:a,step:i}=e;const{activeIndex:r,previousIndex:n}=t;let l=a;if(l||(l=r>n?"next":r<n?"prev":"reset"),t.emit(`transition${i}`),s&&r!==n){if("reset"===l)return void t.emit(`slideResetTransition${i}`);t.emit(`slideChangeTransition${i}`),"next"===l?t.emit(`slideNextTransition${i}`):t.emit(`slidePrevTransition${i}`)}}var k={slideTo:function(e,t,s,a,i){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"number"!=typeof e&&"string"!=typeof e)throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof e}] given.`);if("string"==typeof e){const t=parseInt(e,10);if(!isFinite(t))throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${e}] given.`);e=t}const r=this;let n=e;n<0&&(n=0);const{params:l,snapGrid:o,slidesGrid:d,previousIndex:c,activeIndex:p,rtlTranslate:u,wrapperEl:h,enabled:m}=r;if(r.animating&&l.preventInteractionOnTransition||!m&&!a&&!i)return!1;const f=Math.min(r.params.slidesPerGroupSkip,n);let g=f+Math.floor((n-f)/r.params.slidesPerGroup);g>=o.length&&(g=o.length-1),(p||l.initialSlide||0)===(c||0)&&s&&r.emit("beforeSlideChangeStart");const v=-o[g];if(r.updateProgress(v),l.normalizeSlideIndex)for(let e=0;e<d.length;e+=1){const t=-Math.floor(100*v),s=Math.floor(100*d[e]),a=Math.floor(100*d[e+1]);void 0!==d[e+1]?t>=s&&t<a-(a-s)/2?n=e:t>=s&&t<a&&(n=e+1):t>=s&&(n=e)}if(r.initialized&&n!==p){if(!r.allowSlideNext&&v<r.translate&&v<r.minTranslate())return!1;if(!r.allowSlidePrev&&v>r.translate&&v>r.maxTranslate()&&(p||0)!==n)return!1}let b;if(b=n>p?"next":n<p?"prev":"reset",u&&-v===r.translate||!u&&v===r.translate)return r.updateActiveIndex(n),l.autoHeight&&r.updateAutoHeight(),r.updateSlidesClasses(),"slide"!==l.effect&&r.setTranslate(v),"reset"!==b&&(r.transitionStart(s,b),r.transitionEnd(s,b)),!1;if(l.cssMode){const e=r.isHorizontal(),s=u?v:-v;if(0===t){const t=r.virtual&&r.params.virtual.enabled;t&&(r.wrapperEl.style.scrollSnapType="none",r._immediateVirtual=!0),h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{r.wrapperEl.style.scrollSnapType="",r._swiperImmediateVirtual=!1}))}else{if(!r.support.smoothScroll)return w({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return r.setTransition(t),r.setTranslate(v),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,a),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.$wrapperEl[0].removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.$wrapperEl[0].removeEventListener("webkitTransitionEnd",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.$wrapperEl[0].addEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.$wrapperEl[0].addEventListener("webkitTransitionEnd",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,a){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){const t=parseInt(e,10);if(!isFinite(t))throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${e}] given.`);e=t}const i=this;let r=e;return i.params.loop&&(r+=i.loopedSlides),i.slideTo(r,t,s,a)},slideNext:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const a=this,{animating:i,enabled:r,params:n}=a;if(!r)return a;let l=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(l=Math.max(a.slidesPerViewDynamic("current",!0),1));const o=a.activeIndex<n.slidesPerGroupSkip?1:l;if(n.loop){if(i&&n.loopPreventsSlide)return!1;a.loopFix(),a._clientLeft=a.$wrapperEl[0].clientLeft}return n.rewind&&a.isEnd?a.slideTo(0,e,t,s):a.slideTo(a.activeIndex+o,e,t,s)},slidePrev:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const a=this,{params:i,animating:r,snapGrid:n,slidesGrid:l,rtlTranslate:o,enabled:d}=a;if(!d)return a;if(i.loop){if(r&&i.loopPreventsSlide)return!1;a.loopFix(),a._clientLeft=a.$wrapperEl[0].clientLeft}function c(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const p=c(o?a.translate:-a.translate),u=n.map((e=>c(e)));let h=n[u.indexOf(p)-1];if(void 0===h&&i.cssMode){let e;n.forEach(((t,s)=>{p>=t&&(e=s)})),void 0!==e&&(h=n[e>0?e-1:e])}let m=0;if(void 0!==h&&(m=l.indexOf(h),m<0&&(m=a.activeIndex-1),"auto"===i.slidesPerView&&1===i.slidesPerGroup&&i.slidesPerGroupAuto&&(m=m-a.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),i.rewind&&a.isBeginning){const i=a.params.virtual&&a.params.virtual.enabled&&a.virtual?a.virtual.slides.length-1:a.slides.length-1;return a.slideTo(i,e,t,s)}return a.slideTo(m,e,t,s)},slideReset:function(e,t,s){return void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),this.slideTo(this.activeIndex,e,t,s)},slideToClosest:function(e,t,s,a){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===a&&(a=.5);const i=this;let r=i.activeIndex;const n=Math.min(i.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/i.params.slidesPerGroup),o=i.rtlTranslate?i.translate:-i.translate;if(o>=i.snapGrid[l]){const e=i.snapGrid[l];o-e>(i.snapGrid[l+1]-e)*a&&(r+=i.params.slidesPerGroup)}else{const e=i.snapGrid[l-1];o-e<=(i.snapGrid[l]-e)*a&&(r-=i.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,i.slidesGrid.length-1),i.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this,{params:t,$wrapperEl:s}=e,a="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let i,r=e.clickedIndex;if(t.loop){if(e.animating)return;i=parseInt(d(e.clickedSlide).attr("data-swiper-slide-index"),10),t.centeredSlides?r<e.loopedSlides-a/2||r>e.slides.length-e.loopedSlides+a/2?(e.loopFix(),r=s.children(`.${t.slideClass}[data-swiper-slide-index="${i}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),p((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-a?(e.loopFix(),r=s.children(`.${t.slideClass}[data-swiper-slide-index="${i}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),p((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}};var z={loopCreate:function(){const e=this,t=a(),{params:s,$wrapperEl:i}=e,r=i.children().length>0?d(i.children()[0].parentNode):i;r.children(`.${s.slideClass}.${s.slideDuplicateClass}`).remove();let n=r.children(`.${s.slideClass}`);if(s.loopFillGroupWithBlank){const e=s.slidesPerGroup-n.length%s.slidesPerGroup;if(e!==s.slidesPerGroup){for(let a=0;a<e;a+=1){const e=d(t.createElement("div")).addClass(`${s.slideClass} ${s.slideBlankClass}`);r.append(e)}n=r.children(`.${s.slideClass}`)}}"auto"!==s.slidesPerView||s.loopedSlides||(s.loopedSlides=n.length),e.loopedSlides=Math.ceil(parseFloat(s.loopedSlides||s.slidesPerView,10)),e.loopedSlides+=s.loopAdditionalSlides,e.loopedSlides>n.length&&(e.loopedSlides=n.length);const l=[],o=[];n.each(((t,s)=>{const a=d(t);s<e.loopedSlides&&o.push(t),s<n.length&&s>=n.length-e.loopedSlides&&l.push(t),a.attr("data-swiper-slide-index",s)}));for(let e=0;e<o.length;e+=1)r.append(d(o[e].cloneNode(!0)).addClass(s.slideDuplicateClass));for(let e=l.length-1;e>=0;e-=1)r.prepend(d(l[e].cloneNode(!0)).addClass(s.slideDuplicateClass))},loopFix:function(){const e=this;e.emit("beforeLoopFix");const{activeIndex:t,slides:s,loopedSlides:a,allowSlidePrev:i,allowSlideNext:r,snapGrid:n,rtlTranslate:l}=e;let o;e.allowSlidePrev=!0,e.allowSlideNext=!0;const d=-n[t]-e.getTranslate();if(t<a){o=s.length-3*a+t,o+=a;e.slideTo(o,0,!1,!0)&&0!==d&&e.setTranslate((l?-e.translate:e.translate)-d)}else if(t>=s.length-a){o=-s.length+t+a,o+=a;e.slideTo(o,0,!1,!0)&&0!==d&&e.setTranslate((l?-e.translate:e.translate)-d)}e.allowSlidePrev=i,e.allowSlideNext=r,e.emit("loopFix")},loopDestroy:function(){const{$wrapperEl:e,params:t,slides:s}=this;e.children(`.${t.slideClass}.${t.slideDuplicateClass},.${t.slideClass}.${t.slideBlankClass}`).remove(),s.removeAttr("data-swiper-slide-index")}};function L(e){const t=this,s=a(),i=r(),n=t.touchEventsData,{params:l,touches:o,enabled:c}=t;if(!c)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=e;p.originalEvent&&(p=p.originalEvent);let h=d(p.target);if("wrapper"===l.touchEventsTarget&&!h.closest(t.wrapperEl).length)return;if(n.isTouchEvent="touchstart"===p.type,!n.isTouchEvent&&"which"in p&&3===p.which)return;if(!n.isTouchEvent&&"button"in p&&p.button>0)return;if(n.isTouched&&n.isMoved)return;!!l.noSwipingClass&&""!==l.noSwipingClass&&p.target&&p.target.shadowRoot&&e.path&&e.path[0]&&(h=d(e.path[0]));const m=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,f=!(!p.target||!p.target.shadowRoot);if(l.noSwiping&&(f?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===a()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(e);return i||s.getRootNode?i||t(s.getRootNode().host):null}(t)}(m,h[0]):h.closest(m)[0]))return void(t.allowClick=!0);if(l.swipeHandler&&!h.closest(l.swipeHandler)[0])return;o.currentX="touchstart"===p.type?p.targetTouches[0].pageX:p.pageX,o.currentY="touchstart"===p.type?p.targetTouches[0].pageY:p.pageY;const g=o.currentX,v=o.currentY,w=l.edgeSwipeDetection||l.iOSEdgeSwipeDetection,b=l.edgeSwipeThreshold||l.iOSEdgeSwipeThreshold;if(w&&(g<=b||g>=i.innerWidth-b)){if("prevent"!==w)return;e.preventDefault()}if(Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),o.startX=g,o.startY=v,n.touchStartTime=u(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(n.allowThresholdMove=!1),"touchstart"!==p.type){let e=!0;h.is(n.focusableElements)&&(e=!1,"SELECT"===h[0].nodeName&&(n.isTouched=!1)),s.activeElement&&d(s.activeElement).is(n.focusableElements)&&s.activeElement!==h[0]&&s.activeElement.blur();const a=e&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!a||h[0].isContentEditable||p.preventDefault()}t.params.freeMode&&t.params.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",p)}function O(e){const t=a(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:l,enabled:o}=s;if(!o)return;let c=e;if(c.originalEvent&&(c=c.originalEvent),!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",c));if(i.isTouchEvent&&"touchmove"!==c.type)return;const p="touchmove"===c.type&&c.targetTouches&&(c.targetTouches[0]||c.changedTouches[0]),h="touchmove"===c.type?p.pageX:c.pageX,m="touchmove"===c.type?p.pageY:c.pageY;if(c.preventedByNestedSwiper)return n.startX=h,void(n.startY=m);if(!s.allowTouchMove)return d(c.target).is(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:h,startY:m,currentX:h,currentY:m}),i.touchStartTime=u()));if(i.isTouchEvent&&r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(m<n.startY&&s.translate<=s.maxTranslate()||m>n.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(h<n.startX&&s.translate<=s.maxTranslate()||h>n.startX&&s.translate>=s.minTranslate())return;if(i.isTouchEvent&&t.activeElement&&c.target===t.activeElement&&d(c.target).is(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);if(i.allowTouchCallbacks&&s.emit("touchMove",c),c.targetTouches&&c.targetTouches.length>1)return;n.currentX=h,n.currentY=m;const f=n.currentX-n.startX,g=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(f**2+g**2)<s.params.threshold)return;if(void 0===i.isScrolling){let e;s.isHorizontal()&&n.currentY===n.startY||s.isVertical()&&n.currentX===n.startX?i.isScrolling=!1:f*f+g*g>=25&&(e=180*Math.atan2(Math.abs(g),Math.abs(f))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",c),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&c.cancelable&&c.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&c.stopPropagation(),i.isMoved||(r.loop&&!r.cssMode&&s.loopFix(),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating&&s.$wrapperEl.trigger("webkitTransitionEnd transitionend"),i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",c)),s.emit("sliderMove",c),i.isMoved=!0;let v=s.isHorizontal()?f:g;n.diff=v,v*=r.touchRatio,l&&(v=-v),s.swipeDirection=v>0?"prev":"next",i.currentTranslate=v+i.startTranslate;let w=!0,b=r.resistanceRatio;if(r.touchReleaseOnEdges&&(b=0),v>0&&i.currentTranslate>s.minTranslate()?(w=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+v)**b)):v<0&&i.currentTranslate<s.maxTranslate()&&(w=!1,r.resistance&&(i.currentTranslate=s.maxTranslate()+1-(s.maxTranslate()-i.startTranslate-v)**b)),w&&(c.preventedByNestedSwiper=!0),!s.allowSlideNext&&"next"===s.swipeDirection&&i.currentTranslate<i.startTranslate&&(i.currentTranslate=i.startTranslate),!s.allowSlidePrev&&"prev"===s.swipeDirection&&i.currentTranslate>i.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(v)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),s.params.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function I(e){const t=this,s=t.touchEventsData,{params:a,touches:i,rtlTranslate:r,slidesGrid:n,enabled:l}=t;if(!l)return;let o=e;if(o.originalEvent&&(o=o.originalEvent),s.allowTouchCallbacks&&t.emit("touchEnd",o),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&a.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);a.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const d=u(),c=d-s.touchStartTime;if(t.allowClick){const e=o.path||o.composedPath&&o.composedPath();t.updateClickedSlide(e&&e[0]||o.target),t.emit("tap click",o),c<300&&d-s.lastClickTime<300&&t.emit("doubleTap doubleClick",o)}if(s.lastClickTime=u(),p((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===i.diff||s.currentTranslate===s.startTranslate)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=a.followFinger?r?t.translate:-t.translate:-s.currentTranslate,a.cssMode)return;if(t.params.freeMode&&a.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});let m=0,f=t.slidesSizesGrid[0];for(let e=0;e<n.length;e+=e<a.slidesPerGroupSkip?1:a.slidesPerGroup){const t=e<a.slidesPerGroupSkip-1?1:a.slidesPerGroup;void 0!==n[e+t]?h>=n[e]&&h<n[e+t]&&(m=e,f=n[e+t]-n[e]):h>=n[e]&&(m=e,f=n[n.length-1]-n[n.length-2])}let g=null,v=null;a.rewind&&(t.isBeginning?v=t.params.virtual&&t.params.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(g=0));const w=(h-n[m])/f,b=m<a.slidesPerGroupSkip-1?1:a.slidesPerGroup;if(c>a.longSwipesMs){if(!a.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(w>=a.longSwipesRatio?t.slideTo(a.rewind&&t.isEnd?g:m+b):t.slideTo(m)),"prev"===t.swipeDirection&&(w>1-a.longSwipesRatio?t.slideTo(m+b):null!==v&&w<0&&Math.abs(w)>a.longSwipesRatio?t.slideTo(v):t.slideTo(m))}else{if(!a.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(o.target===t.navigation.nextEl||o.target===t.navigation.prevEl)?o.target===t.navigation.nextEl?t.slideTo(m+b):t.slideTo(m):("next"===t.swipeDirection&&t.slideTo(null!==g?g:m+b),"prev"===t.swipeDirection&&t.slideTo(null!==v?v:m))}}function A(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:a,allowSlidePrev:i,snapGrid:r}=e;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses(),("auto"===t.slidesPerView||t.slidesPerView>1)&&e.isEnd&&!e.isBeginning&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.run(),e.allowSlidePrev=i,e.allowSlideNext=a,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function D(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function G(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:a}=e;if(!a)return;let i;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();i=0===r?0:(e.translate-e.minTranslate())/r,i!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}let N=!1;function B(){}const H=(e,t)=>{const s=a(),{params:i,touchEvents:r,el:n,wrapperEl:l,device:o,support:d}=e,c=!!i.nested,p="on"===t?"addEventListener":"removeEventListener",u=t;if(d.touch){const t=!("touchstart"!==r.start||!d.passiveListener||!i.passiveListeners)&&{passive:!0,capture:!1};n[p](r.start,e.onTouchStart,t),n[p](r.move,e.onTouchMove,d.passiveListener?{passive:!1,capture:c}:c),n[p](r.end,e.onTouchEnd,t),r.cancel&&n[p](r.cancel,e.onTouchEnd,t)}else n[p](r.start,e.onTouchStart,!1),s[p](r.move,e.onTouchMove,c),s[p](r.end,e.onTouchEnd,!1);(i.preventClicks||i.preventClicksPropagation)&&n[p]("click",e.onClick,!0),i.cssMode&&l[p]("scroll",e.onScroll),i.updateOnWindowResize?e[u](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",A,!0):e[u]("observerUpdate",A,!0)};var X={attachEvents:function(){const e=this,t=a(),{params:s,support:i}=e;e.onTouchStart=L.bind(e),e.onTouchMove=O.bind(e),e.onTouchEnd=I.bind(e),s.cssMode&&(e.onScroll=G.bind(e)),e.onClick=D.bind(e),i.touch&&!N&&(t.addEventListener("touchstart",B),N=!0),H(e,"on")},detachEvents:function(){H(this,"off")}};const Y=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var R={addClasses:function(){const e=this,{classNames:t,params:s,rtl:a,$el:i,device:r,support:n}=e,l=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((a=>{e[a]&&s.push(t+a)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"pointer-events":!n.touch},{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:a},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...l),i.addClass([...t].join(" ")),e.emitContainerClasses()},removeClasses:function(){const{$el:e,classNames:t}=this;e.removeClass(t.join(" ")),this.emitContainerClasses()}};var W={init:!0,direction:"horizontal",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:0,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,loopFillGroupWithBlank:!1,loopPreventsSlide:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-invisible-blank",slideActiveClass:"swiper-slide-active",slideDuplicateActiveClass:"swiper-slide-duplicate-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slideDuplicateNextClass:"swiper-slide-duplicate-next",slidePrevClass:"swiper-slide-prev",slideDuplicatePrevClass:"swiper-slide-duplicate-prev",wrapperClass:"swiper-wrapper",runCallbacksOnInit:!0,_emitClasses:!1};function j(e,t){return function(s){void 0===s&&(s={});const a=Object.keys(s)[0],i=s[a];"object"==typeof i&&null!==i?(["navigation","pagination","scrollbar"].indexOf(a)>=0&&!0===e[a]&&(e[a]={auto:!0}),a in e&&"enabled"in i?(!0===e[a]&&(e[a]={enabled:!0}),"object"!=typeof e[a]||"enabled"in e[a]||(e[a].enabled=!0),e[a]||(e[a]={enabled:!1}),g(t,s)):g(t,s)):g(t,s)}}const _={eventsEmitter:$,update:S,translate:M,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||s.$wrapperEl.transition(e),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;a.cssMode||(a.autoHeight&&s.updateAutoHeight(),P({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;s.animating=!1,a.cssMode||(s.setTransition(0),P({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:k,loop:z,grabCursor:{setGrabCursor:function(e){const t=this;if(t.support.touch||!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;s.style.cursor="move",s.style.cursor=e?"grabbing":"grab"},unsetGrabCursor:function(){const e=this;e.support.touch||e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="")}},events:X,breakpoints:{setBreakpoint:function(){const e=this,{activeIndex:t,initialized:s,loopedSlides:a=0,params:i,$el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const l=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!l||e.currentBreakpoint===l)return;const o=(l in n?n[l]:void 0)||e.originalParams,d=Y(e,i),c=Y(e,o),p=i.enabled;d&&!c?(r.removeClass(`${i.containerModifierClass}grid ${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!d&&c&&(r.addClass(`${i.containerModifierClass}grid`),(o.grid.fill&&"column"===o.grid.fill||!o.grid.fill&&"column"===i.grid.fill)&&r.addClass(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{const s=i[t]&&i[t].enabled,a=o[t]&&o[t].enabled;s&&!a&&e[t].disable(),!s&&a&&e[t].enable()}));const u=o.direction&&o.direction!==i.direction,h=i.loop&&(o.slidesPerView!==i.slidesPerView||u);u&&s&&e.changeDirection(),g(e.params,o);const m=e.params.enabled;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),p&&!m?e.disable():!p&&m&&e.enable(),e.currentBreakpoint=l,e.emit("_beforeBreakpoint",o),h&&s&&(e.loopDestroy(),e.loopCreate(),e.updateSlides(),e.slideTo(t-a+e.loopedSlides,0,!1)),e.emit("breakpoint",o)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let a=!1;const i=r(),n="window"===t?i.innerHeight:s.clientHeight,l=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));l.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;e<l.length;e+=1){const{point:r,value:n}=l[e];"window"===t?i.matchMedia(`(min-width: ${n}px)`).matches&&(a=r):n<=s.clientWidth&&(a=r)}return a||"max"}},checkOverflow:{checkOverflow:function(){const e=this,{isLocked:t,params:s}=e,{slidesOffsetBefore:a}=s;if(a){const t=e.slides.length-1,s=e.slidesGrid[t]+e.slidesSizesGrid[t]+2*a;e.isLocked=e.size>s}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:R,images:{loadImage:function(e,t,s,a,i,n){const l=r();let o;function c(){n&&n()}d(e).parent("picture")[0]||e.complete&&i?c():t?(o=new l.Image,o.onload=c,o.onerror=c,a&&(o.sizes=a),s&&(o.srcset=s),t&&(o.src=t)):c()},preloadImages:function(){const e=this;function t(){null!=e&&e&&!e.destroyed&&(void 0!==e.imagesLoaded&&(e.imagesLoaded+=1),e.imagesLoaded===e.imagesToLoad.length&&(e.params.updateOnImagesReady&&e.update(),e.emit("imagesReady")))}e.imagesToLoad=e.$el.find("img");for(let s=0;s<e.imagesToLoad.length;s+=1){const a=e.imagesToLoad[s];e.loadImage(a,a.currentSrc||a.getAttribute("src"),a.srcset||a.getAttribute("srcset"),a.sizes||a.getAttribute("sizes"),!0,t)}}}},q={};class V{constructor(){let e,t;for(var s=arguments.length,a=new Array(s),i=0;i<s;i++)a[i]=arguments[i];if(1===a.length&&a[0].constructor&&"Object"===Object.prototype.toString.call(a[0]).slice(8,-1)?t=a[0]:[e,t]=a,t||(t={}),t=g({},t),e&&!t.el&&(t.el=e),t.el&&d(t.el).length>1){const e=[];return d(t.el).each((s=>{const a=g({},t,{el:s});e.push(new V(a))})),e}const r=this;r.__swiper__=!0,r.support=E(),r.device=C({userAgent:t.userAgent}),r.browser=T(),r.eventsListeners={},r.eventsAnyListeners=[],r.modules=[...r.__modules__],t.modules&&Array.isArray(t.modules)&&r.modules.push(...t.modules);const n={};r.modules.forEach((e=>{e({swiper:r,extendParams:j(t,n),on:r.on.bind(r),once:r.once.bind(r),off:r.off.bind(r),emit:r.emit.bind(r)})}));const l=g({},W,n);return r.params=g({},l,q,t),r.originalParams=g({},r.params),r.passedParams=g({},t),r.params&&r.params.on&&Object.keys(r.params.on).forEach((e=>{r.on(e,r.params.on[e])})),r.params&&r.params.onAny&&r.onAny(r.params.onAny),r.$=d,Object.assign(r,{enabled:r.params.enabled,el:e,classNames:[],slides:d(),slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===r.params.direction,isVertical:()=>"vertical"===r.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,allowSlideNext:r.params.allowSlideNext,allowSlidePrev:r.params.allowSlidePrev,touchEvents:function(){const e=["touchstart","touchmove","touchend","touchcancel"],t=["pointerdown","pointermove","pointerup"];return r.touchEventsTouch={start:e[0],move:e[1],end:e[2],cancel:e[3]},r.touchEventsDesktop={start:t[0],move:t[1],end:t[2]},r.support.touch||!r.params.simulateTouch?r.touchEventsTouch:r.touchEventsDesktop}(),touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:r.params.focusableElements,lastClickTime:u(),clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,isTouchEvent:void 0,startMoving:void 0},allowClick:!0,allowTouchMove:r.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),r.emit("_swiper"),r.params.init&&r.init(),r}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const a=s.minTranslate(),i=(s.maxTranslate()-a)*e+a;s.translateTo(i,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.each((s=>{const a=e.getSlideClasses(s);t.push({slideEl:s,classNames:a}),e.emit("_slideClass",s,a)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:a,slidesGrid:i,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if(s.centeredSlides){let e,t=a[l].swiperSlideSize;for(let s=l+1;s<a.length;s+=1)a[s]&&!e&&(t+=a[s].swiperSlideSize,o+=1,t>n&&(e=!0));for(let s=l-1;s>=0;s-=1)a[s]&&!e&&(t+=a[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e<a.length;e+=1){(t?i[e]+r[e]-i[l]<n:i[e]-i[l]<n)&&(o+=1)}else for(let e=l-1;e>=0;e-=1){i[l]-i[e]<n&&(o+=1)}return o}update(){const e=this;if(!e||e.destroyed)return;const{snapGrid:t,params:s}=e;function a(){const t=e.rtlTranslate?-1*e.translate:e.translate,s=Math.min(Math.max(t,e.maxTranslate()),e.minTranslate());e.setTranslate(s),e.updateActiveIndex(),e.updateSlidesClasses()}let i;s.breakpoints&&e.setBreakpoint(),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),e.params.freeMode&&e.params.freeMode.enabled?(a(),e.params.autoHeight&&e.updateAutoHeight()):(i=("auto"===e.params.slidesPerView||e.params.slidesPerView>1)&&e.isEnd&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),i||a()),s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,a=s.params.direction;return e||(e="horizontal"===a?"vertical":"horizontal"),e===a||"horizontal"!==e&&"vertical"!==e||(s.$el.removeClass(`${s.params.containerModifierClass}${a}`).addClass(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.each((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}mount(e){const t=this;if(t.mounted)return!0;const s=d(e||t.params.el);if(!(e=s[0]))return!1;e.swiper=t;const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(e&&e.shadowRoot&&e.shadowRoot.querySelector){const t=d(e.shadowRoot.querySelector(i()));return t.children=e=>s.children(e),t}return s.children?s.children(i()):d(s).children(i())})();if(0===r.length&&t.params.createElements){const e=a().createElement("div");r=d(e),e.className=t.params.wrapperClass,s.append(e),s.children(`.${t.params.slideClass}`).each((e=>{r.append(e)}))}return Object.assign(t,{$el:s,el:e,$wrapperEl:r,wrapperEl:r[0],mounted:!0,rtl:"rtl"===e.dir.toLowerCase()||"rtl"===s.css("direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===e.dir.toLowerCase()||"rtl"===s.css("direction")),wrongRTL:"-webkit-box"===r.css("display")}),!0}init(e){const t=this;if(t.initialized)return t;return!1===t.mount(e)||(t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.params.loop&&t.loopCreate(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.preloadImages&&t.preloadImages(),t.params.loop?t.slideTo(t.params.initialSlide+t.loopedSlides,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.attachEvents(),t.initialized=!0,t.emit("init"),t.emit("afterInit")),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:a,$el:i,$wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),a.loop&&s.loopDestroy(),t&&(s.removeClasses(),i.removeAttr("style"),r.removeAttr("style"),n&&n.length&&n.removeClass([a.slideVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index")),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.$el[0].swiper=null,function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){g(q,e)}static get extendedDefaults(){return q}static get defaults(){return W}static installModule(e){V.prototype.__modules__||(V.prototype.__modules__=[]);const t=V.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>V.installModule(e))),V):(V.installModule(e),V)}}function F(e,t,s,i){const r=a();return e.params.createElements&&Object.keys(i).forEach((a=>{if(!s[a]&&!0===s.auto){let n=e.$el.children(`.${i[a]}`)[0];n||(n=r.createElement("div"),n.className=i[a],e.$el.append(n)),s[a]=n,t[a]=n}})),s}function U(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!\/])/g,"\\$1").replace(/ /g,".")}`}function K(e){const t=this,{$wrapperEl:s,params:a}=t;if(a.loop&&t.loopDestroy(),"object"==typeof e&&"length"in e)for(let t=0;t<e.length;t+=1)e[t]&&s.append(e[t]);else s.append(e);a.loop&&t.loopCreate(),a.observer||t.update()}function Z(e){const t=this,{params:s,$wrapperEl:a,activeIndex:i}=t;s.loop&&t.loopDestroy();let r=i+1;if("object"==typeof e&&"length"in e){for(let t=0;t<e.length;t+=1)e[t]&&a.prepend(e[t]);r=i+e.length}else a.prepend(e);s.loop&&t.loopCreate(),s.observer||t.update(),t.slideTo(r,0,!1)}function Q(e,t){const s=this,{$wrapperEl:a,params:i,activeIndex:r}=s;let n=r;i.loop&&(n-=s.loopedSlides,s.loopDestroy(),s.slides=a.children(`.${i.slideClass}`));const l=s.slides.length;if(e<=0)return void s.prependSlide(t);if(e>=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides.eq(t);e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;e<t.length;e+=1)t[e]&&a.append(t[e]);o=n>e?n+t.length:n}else a.append(t);for(let e=0;e<d.length;e+=1)a.append(d[e]);i.loop&&s.loopCreate(),i.observer||s.update(),i.loop?s.slideTo(o+s.loopedSlides,0,!1):s.slideTo(o,0,!1)}function J(e){const t=this,{params:s,$wrapperEl:a,activeIndex:i}=t;let r=i;s.loop&&(r-=t.loopedSlides,t.loopDestroy(),t.slides=a.children(`.${s.slideClass}`));let n,l=r;if("object"==typeof e&&"length"in e){for(let s=0;s<e.length;s+=1)n=e[s],t.slides[n]&&t.slides.eq(n).remove(),n<l&&(l-=1);l=Math.max(l,0)}else n=e,t.slides[n]&&t.slides.eq(n).remove(),n<l&&(l-=1),l=Math.max(l,0);s.loop&&t.loopCreate(),s.observer||t.update(),s.loop?t.slideTo(l+t.loopedSlides,0,!1):t.slideTo(l,0,!1)}function ee(){const e=this,t=[];for(let s=0;s<e.slides.length;s+=1)t.push(s);e.removeSlide(t)}function te(e){const{effect:t,swiper:s,on:a,setTranslate:i,setTransition:r,overwriteParams:n,perspective:l,recreateShadows:o,getEffectParams:d}=e;let c;a("beforeInit",(()=>{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)})),a("setTranslate",(()=>{s.params.effect===t&&i()})),a("setTransition",((e,a)=>{s.params.effect===t&&r(a)})),a("transitionEnd",(()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.each((e=>{s.$(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").remove()})),o()}})),a("virtualUpdate",(()=>{s.params.effect===t&&(s.slides.length||(c=!0),requestAnimationFrame((()=>{c&&s.slides&&s.slides.length&&(i(),c=!1)})))}))}function se(e,t){return e.transformEl?t.find(e.transformEl).css({"backface-visibility":"hidden","-webkit-backface-visibility":"hidden"}):t}function ae(e){let{swiper:t,duration:s,transformEl:a,allSlides:i}=e;const{slides:r,activeIndex:n,$wrapperEl:l}=t;if(t.params.virtualTranslate&&0!==s){let e,s=!1;e=i?a?r.find(a):r:a?r.eq(n).find(a):r.eq(n),e.transitionEnd((()=>{if(s)return;if(!t||t.destroyed)return;s=!0,t.animating=!1;const e=["webkitTransitionEnd","transitionend"];for(let t=0;t<e.length;t+=1)l.trigger(e[t])}))}}function ie(e,t,s){const a="swiper-slide-shadow"+(s?`-${s}`:""),i=e.transformEl?t.find(e.transformEl):t;let r=i.children(`.${a}`);return r.length||(r=d(`<div class="swiper-slide-shadow${s?`-${s}`:""}"></div>`),i.append(r)),r}Object.keys(_).forEach((e=>{Object.keys(_[e]).forEach((t=>{V.prototype[t]=_[e][t]}))})),V.use([function(e){let{swiper:t,on:s,emit:a}=e;const i=r();let n=null,l=null;const o=()=>{t&&!t.destroyed&&t.initialized&&(a("beforeResize"),a("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&a("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==i.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{l=i.requestAnimationFrame((()=>{const{width:s,height:a}=t;let i=s,r=a;e.forEach((e=>{let{contentBoxSize:s,contentRect:a,target:n}=e;n&&n!==t.el||(i=a?a.width:(s[0]||s).inlineSize,r=a?a.height:(s[0]||s).blockSize)})),i===s&&r===a||o()}))})),n.observe(t.el)):(i.addEventListener("resize",o),i.addEventListener("orientationchange",d))})),s("destroy",(()=>{l&&i.cancelAnimationFrame(l),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),i.removeEventListener("resize",o),i.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=[],l=r(),o=function(e,t){void 0===t&&(t={});const s=new(l.MutationObserver||l.WebkitMutationObserver)((e=>{if(1===e.length)return void i("observerUpdate",e[0]);const t=function(){i("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(t):l.setTimeout(t,0)}));s.observe(e,{attributes:void 0===t.attributes||t.attributes,childList:void 0===t.childList||t.childList,characterData:void 0===t.characterData||t.characterData}),n.push(s)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),a("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=t.$el.parents();for(let t=0;t<e.length;t+=1)o(e[t])}o(t.$el[0],{childList:t.params.observeSlideChildren}),o(t.$wrapperEl[0],{attributes:!1})}})),a("destroy",(()=>{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}]);const re=[function(e){let t,{swiper:s,extendParams:a,on:i,emit:r}=e;function n(e,t){const a=s.params.virtual;if(a.cache&&s.virtual.cache[t])return s.virtual.cache[t];const i=a.renderSlide?d(a.renderSlide.call(s,e,t)):d(`<div class="${s.params.slideClass}" data-swiper-slide-index="${t}">${e}</div>`);return i.attr("data-swiper-slide-index")||i.attr("data-swiper-slide-index",t),a.cache&&(s.virtual.cache[t]=i),i}function l(e){const{slidesPerView:t,slidesPerGroup:a,centeredSlides:i}=s.params,{addSlidesBefore:l,addSlidesAfter:o}=s.params.virtual,{from:d,to:c,slides:p,slidesGrid:u,offset:h}=s.virtual;s.params.cssMode||s.updateActiveIndex();const m=s.activeIndex||0;let f,g,v;f=s.rtlTranslate?"right":s.isHorizontal()?"left":"top",i?(g=Math.floor(t/2)+a+o,v=Math.floor(t/2)+a+l):(g=t+(a-1)+o,v=a+l);const w=Math.max((m||0)-v,0),b=Math.min((m||0)+g,p.length-1),x=(s.slidesGrid[w]||0)-(s.slidesGrid[0]||0);function y(){s.updateSlides(),s.updateProgress(),s.updateSlidesClasses(),s.lazy&&s.params.lazy.enabled&&s.lazy.load(),r("virtualUpdate")}if(Object.assign(s.virtual,{from:w,to:b,offset:x,slidesGrid:s.slidesGrid}),d===w&&c===b&&!e)return s.slidesGrid!==u&&x!==h&&s.slides.css(f,`${x}px`),s.updateProgress(),void r("virtualUpdate");if(s.params.virtual.renderExternal)return s.params.virtual.renderExternal.call(s,{offset:x,from:w,to:b,slides:function(){const e=[];for(let t=w;t<=b;t+=1)e.push(p[t]);return e}()}),void(s.params.virtual.renderExternalUpdate?y():r("virtualUpdate"));const E=[],C=[];if(e)s.$wrapperEl.find(`.${s.params.slideClass}`).remove();else for(let e=d;e<=c;e+=1)(e<w||e>b)&&s.$wrapperEl.find(`.${s.params.slideClass}[data-swiper-slide-index="${e}"]`).remove();for(let t=0;t<p.length;t+=1)t>=w&&t<=b&&(void 0===c||e?C.push(t):(t>c&&C.push(t),t<d&&E.push(t)));C.forEach((e=>{s.$wrapperEl.append(n(p[e],e))})),E.sort(((e,t)=>t-e)).forEach((e=>{s.$wrapperEl.prepend(n(p[e],e))})),s.$wrapperEl.children(".swiper-slide").css(f,`${x}px`),y()}a({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}}),s.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]},i("beforeInit",(()=>{s.params.virtual.enabled&&(s.virtual.slides=s.params.virtual.slides,s.classNames.push(`${s.params.containerModifierClass}virtual`),s.params.watchSlidesProgress=!0,s.originalParams.watchSlidesProgress=!0,s.params.initialSlide||l())})),i("setTranslate",(()=>{s.params.virtual.enabled&&(s.params.cssMode&&!s._immediateVirtual?(clearTimeout(t),t=setTimeout((()=>{l()}),100)):l())})),i("init update resize",(()=>{s.params.virtual.enabled&&s.params.cssMode&&v(s.wrapperEl,"--swiper-virtual-size",`${s.virtualSize}px`)})),Object.assign(s.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let t=0;t<e.length;t+=1)e[t]&&s.virtual.slides.push(e[t]);else s.virtual.slides.push(e);l(!0)},prependSlide:function(e){const t=s.activeIndex;let a=t+1,i=1;if(Array.isArray(e)){for(let t=0;t<e.length;t+=1)e[t]&&s.virtual.slides.unshift(e[t]);a=t+e.length,i=e.length}else s.virtual.slides.unshift(e);if(s.params.virtual.cache){const e=s.virtual.cache,t={};Object.keys(e).forEach((s=>{const a=e[s],r=a.attr("data-swiper-slide-index");r&&a.attr("data-swiper-slide-index",parseInt(r,10)+i),t[parseInt(s,10)+i]=a})),s.virtual.cache=t}l(!0),s.slideTo(a,0)},removeSlide:function(e){if(null==e)return;let t=s.activeIndex;if(Array.isArray(e))for(let a=e.length-1;a>=0;a-=1)s.virtual.slides.splice(e[a],1),s.params.virtual.cache&&delete s.virtual.cache[e[a]],e[a]<t&&(t-=1),t=Math.max(t,0);else s.virtual.slides.splice(e,1),s.params.virtual.cache&&delete s.virtual.cache[e],e<t&&(t-=1),t=Math.max(t,0);l(!0),s.slideTo(t,0)},removeAllSlides:function(){s.virtual.slides=[],s.params.virtual.cache&&(s.virtual.cache={}),l(!0),s.slideTo(0,0)},update:l})},function(e){let{swiper:t,extendParams:s,on:i,emit:n}=e;const l=a(),o=r();function c(e){if(!t.enabled)return;const{rtlTranslate:s}=t;let a=e;a.originalEvent&&(a=a.originalEvent);const i=a.keyCode||a.charCode,r=t.params.keyboard.pageUpDown,d=r&&33===i,c=r&&34===i,p=37===i,u=39===i,h=38===i,m=40===i;if(!t.allowSlideNext&&(t.isHorizontal()&&u||t.isVertical()&&m||c))return!1;if(!t.allowSlidePrev&&(t.isHorizontal()&&p||t.isVertical()&&h||d))return!1;if(!(a.shiftKey||a.altKey||a.ctrlKey||a.metaKey||l.activeElement&&l.activeElement.nodeName&&("input"===l.activeElement.nodeName.toLowerCase()||"textarea"===l.activeElement.nodeName.toLowerCase()))){if(t.params.keyboard.onlyInViewport&&(d||c||p||u||h||m)){let e=!1;if(t.$el.parents(`.${t.params.slideClass}`).length>0&&0===t.$el.parents(`.${t.params.slideActiveClass}`).length)return;const a=t.$el,i=a[0].clientWidth,r=a[0].clientHeight,n=o.innerWidth,l=o.innerHeight,d=t.$el.offset();s&&(d.left-=t.$el[0].scrollLeft);const c=[[d.left,d.top],[d.left+i,d.top],[d.left,d.top+r],[d.left+i,d.top+r]];for(let t=0;t<c.length;t+=1){const s=c[t];if(s[0]>=0&&s[0]<=n&&s[1]>=0&&s[1]<=l){if(0===s[0]&&0===s[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||c||p||u)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((c||u)&&!s||(d||p)&&s)&&t.slideNext(),((d||p)&&!s||(c||u)&&s)&&t.slidePrev()):((d||c||h||m)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(c||m)&&t.slideNext(),(d||h)&&t.slidePrev()),n("keyPress",i)}}function p(){t.keyboard.enabled||(d(l).on("keydown",c),t.keyboard.enabled=!0)}function u(){t.keyboard.enabled&&(d(l).off("keydown",c),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},s({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),i("init",(()=>{t.params.keyboard.enabled&&p()})),i("destroy",(()=>{t.keyboard.enabled&&u()})),Object.assign(t.keyboard,{enable:p,disable:u})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();let l;s({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null}}),t.mousewheel={enabled:!1};let o,c=u();const h=[];function m(){t.enabled&&(t.mouseEntered=!0)}function f(){t.enabled&&(t.mouseEntered=!1)}function g(e){return!(t.params.mousewheel.thresholdDelta&&e.delta<t.params.mousewheel.thresholdDelta)&&(!(t.params.mousewheel.thresholdTime&&u()-c<t.params.mousewheel.thresholdTime)&&(e.delta>=6&&u()-c<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),i("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),i("scroll",e.raw)),c=(new n.Date).getTime(),!1)))}function v(e){let s=e,a=!0;if(!t.enabled)return;const r=t.params.mousewheel;t.params.cssMode&&s.preventDefault();let n=t.$el;if("container"!==t.params.mousewheel.eventsTarget&&(n=d(t.params.mousewheel.eventsTarget)),!t.mouseEntered&&!n[0].contains(s.target)&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let c=0;const m=t.rtlTranslate?-1:1,f=function(e){let t=0,s=0,a=0,i=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),a=10*t,i=10*s,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(a=e.deltaX),e.shiftKey&&!a&&(a=i,i=0),(a||i)&&e.deltaMode&&(1===e.deltaMode?(a*=40,i*=40):(a*=800,i*=800)),a&&!t&&(t=a<1?-1:1),i&&!s&&(s=i<1?-1:1),{spinX:t,spinY:s,pixelX:a,pixelY:i}}(s);if(r.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(f.pixelX)>Math.abs(f.pixelY)))return!0;c=-f.pixelX*m}else{if(!(Math.abs(f.pixelY)>Math.abs(f.pixelX)))return!0;c=-f.pixelY}else c=Math.abs(f.pixelX)>Math.abs(f.pixelY)?-f.pixelX*m:-f.pixelY;if(0===c)return!0;r.invert&&(c=-c);let v=t.getTranslate()+c*r.sensitivity;if(v>=t.minTranslate()&&(v=t.minTranslate()),v<=t.maxTranslate()&&(v=t.maxTranslate()),a=!!t.params.loop||!(v===t.minTranslate()||v===t.maxTranslate()),a&&t.params.nested&&s.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:u(),delta:Math.abs(c),direction:Math.sign(c)},a=o&&e.time<o.time+500&&e.delta<=o.delta&&e.direction===o.direction;if(!a){o=void 0,t.params.loop&&t.loopFix();let n=t.getTranslate()+c*r.sensitivity;const d=t.isBeginning,u=t.isEnd;if(n>=t.minTranslate()&&(n=t.minTranslate()),n<=t.maxTranslate()&&(n=t.maxTranslate()),t.setTransition(0),t.setTranslate(n),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!d&&t.isBeginning||!u&&t.isEnd)&&t.updateSlidesClasses(),t.params.freeMode.sticky){clearTimeout(l),l=void 0,h.length>=15&&h.shift();const s=h.length?h[h.length-1]:void 0,a=h[0];if(h.push(e),s&&(e.delta>s.delta||e.direction!==s.direction))h.splice(0);else if(h.length>=15&&e.time-a.time<500&&a.delta-e.delta>=1&&e.delta<=6){const s=c>0?.8:.2;o=e,h.splice(0),l=p((()=>{t.slideToClosest(t.params.speed,!0,void 0,s)}),0)}l||(l=p((()=>{o=e,h.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(a||i("scroll",s),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),n===t.minTranslate()||n===t.maxTranslate())return!0}}else{const s={time:u(),delta:Math.abs(c),direction:Math.sign(c),raw:e};h.length>=2&&h.shift();const a=h.length?h[h.length-1]:void 0;if(h.push(s),a?(s.direction!==a.direction||s.delta>a.delta||s.time>a.time+150)&&g(s):g(s),function(e){const s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function w(e){let s=t.$el;"container"!==t.params.mousewheel.eventsTarget&&(s=d(t.params.mousewheel.eventsTarget)),s[e]("mouseenter",m),s[e]("mouseleave",f),s[e]("wheel",v)}function b(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",v),!0):!t.mousewheel.enabled&&(w("on"),t.mousewheel.enabled=!0,!0)}function x(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,v),!0):!!t.mousewheel.enabled&&(w("off"),t.mousewheel.enabled=!1,!0)}a("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&x(),t.params.mousewheel.enabled&&b()})),a("destroy",(()=>{t.params.cssMode&&b(),t.mousewheel.enabled&&x()})),Object.assign(t.mousewheel,{enable:b,disable:x})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;function r(e){let s;return e&&(s=d(e),t.params.uniqueNavElements&&"string"==typeof e&&s.length>1&&1===t.$el.find(e).length&&(s=t.$el.find(e))),s}function n(e,s){const a=t.params.navigation;e&&e.length>0&&(e[s?"addClass":"removeClass"](a.disabledClass),e[0]&&"BUTTON"===e[0].tagName&&(e[0].disabled=s),t.params.watchOverflow&&t.enabled&&e[t.isLocked?"addClass":"removeClass"](a.lockClass))}function l(){if(t.params.loop)return;const{$nextEl:e,$prevEl:s}=t.navigation;n(s,t.isBeginning&&!t.params.rewind),n(e,t.isEnd&&!t.params.rewind)}function o(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&t.slidePrev()}function c(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&t.slideNext()}function p(){const e=t.params.navigation;if(t.params.navigation=F(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;const s=r(e.nextEl),a=r(e.prevEl);s&&s.length>0&&s.on("click",c),a&&a.length>0&&a.on("click",o),Object.assign(t.navigation,{$nextEl:s,nextEl:s&&s[0],$prevEl:a,prevEl:a&&a[0]}),t.enabled||(s&&s.addClass(e.lockClass),a&&a.addClass(e.lockClass))}function u(){const{$nextEl:e,$prevEl:s}=t.navigation;e&&e.length&&(e.off("click",c),e.removeClass(t.params.navigation.disabledClass)),s&&s.length&&(s.off("click",o),s.removeClass(t.params.navigation.disabledClass))}s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,$nextEl:null,prevEl:null,$prevEl:null},a("init",(()=>{!1===t.params.navigation.enabled?h():(p(),l())})),a("toEdge fromEdge lock unlock",(()=>{l()})),a("destroy",(()=>{u()})),a("enable disable",(()=>{const{$nextEl:e,$prevEl:s}=t.navigation;e&&e[t.enabled?"removeClass":"addClass"](t.params.navigation.lockClass),s&&s[t.enabled?"removeClass":"addClass"](t.params.navigation.lockClass)})),a("click",((e,s)=>{const{$nextEl:a,$prevEl:r}=t.navigation,n=s.target;if(t.params.navigation.hideOnClick&&!d(n).is(r)&&!d(n).is(a)){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===n||t.pagination.el.contains(n)))return;let e;a?e=a.hasClass(t.params.navigation.hiddenClass):r&&(e=r.hasClass(t.params.navigation.hiddenClass)),i(!0===e?"navigationShow":"navigationHide"),a&&a.toggleClass(t.params.navigation.hiddenClass),r&&r.toggleClass(t.params.navigation.hiddenClass)}}));const h=()=>{t.$el.addClass(t.params.navigation.navigationDisabledClass),u()};Object.assign(t.navigation,{enable:()=>{t.$el.removeClass(t.params.navigation.navigationDisabledClass),p(),l()},disable:h,update:l,init:p,destroy:u})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,$el:null,bullets:[]};let l=0;function o(){return!t.params.pagination.el||!t.pagination.el||!t.pagination.$el||0===t.pagination.$el.length}function c(e,s){const{bulletActiveClass:a}=t.params.pagination;e[s]().addClass(`${a}-${s}`)[s]().addClass(`${a}-${s}-${s}`)}function p(){const e=t.rtl,s=t.params.pagination;if(o())return;const a=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,r=t.pagination.$el;let p;const u=t.params.loop?Math.ceil((a-2*t.loopedSlides)/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(p=Math.ceil((t.activeIndex-t.loopedSlides)/t.params.slidesPerGroup),p>a-1-2*t.loopedSlides&&(p-=a-2*t.loopedSlides),p>u-1&&(p-=u),p<0&&"bullets"!==t.params.paginationType&&(p=u+p)):p=void 0!==t.snapIndex?t.snapIndex:t.activeIndex||0,"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const a=t.pagination.bullets;let i,o,u;if(s.dynamicBullets&&(n=a.eq(0)[t.isHorizontal()?"outerWidth":"outerHeight"](!0),r.css(t.isHorizontal()?"width":"height",n*(s.dynamicMainBullets+4)+"px"),s.dynamicMainBullets>1&&void 0!==t.previousIndex&&(l+=p-(t.previousIndex-t.loopedSlides||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),i=Math.max(p-l,0),o=i+(Math.min(a.length,s.dynamicMainBullets)-1),u=(o+i)/2),a.removeClass(["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`)).join(" ")),r.length>1)a.each((e=>{const t=d(e),a=t.index();a===p&&t.addClass(s.bulletActiveClass),s.dynamicBullets&&(a>=i&&a<=o&&t.addClass(`${s.bulletActiveClass}-main`),a===i&&c(t,"prev"),a===o&&c(t,"next"))}));else{const e=a.eq(p),r=e.index();if(e.addClass(s.bulletActiveClass),s.dynamicBullets){const e=a.eq(i),n=a.eq(o);for(let e=i;e<=o;e+=1)a.eq(e).addClass(`${s.bulletActiveClass}-main`);if(t.params.loop)if(r>=a.length){for(let e=s.dynamicMainBullets;e>=0;e-=1)a.eq(a.length-e).addClass(`${s.bulletActiveClass}-main`);a.eq(a.length-s.dynamicMainBullets-1).addClass(`${s.bulletActiveClass}-prev`)}else c(e,"prev"),c(n,"next");else c(e,"prev"),c(n,"next")}}if(s.dynamicBullets){const i=Math.min(a.length,s.dynamicMainBullets+4),r=(n*i-n)/2-u*n,l=e?"right":"left";a.css(t.isHorizontal()?l:"top",`${r}px`)}}if("fraction"===s.type&&(r.find(U(s.currentClass)).text(s.formatFractionCurrent(p+1)),r.find(U(s.totalClass)).text(s.formatFractionTotal(u))),"progressbar"===s.type){let e;e=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const a=(p+1)/u;let i=1,n=1;"horizontal"===e?i=a:n=a,r.find(U(s.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${i}) scaleY(${n})`).transition(t.params.speed)}"custom"===s.type&&s.renderCustom?(r.html(s.renderCustom(t,p+1,u)),i("paginationRender",r[0])):i("paginationUpdate",r[0]),t.params.watchOverflow&&t.enabled&&r[t.isLocked?"addClass":"removeClass"](s.lockClass)}function u(){const e=t.params.pagination;if(o())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,a=t.pagination.$el;let r="";if("bullets"===e.type){let i=t.params.loop?Math.ceil((s-2*t.loopedSlides)/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&!t.params.loop&&i>s&&(i=s);for(let s=0;s<i;s+=1)e.renderBullet?r+=e.renderBullet.call(t,s,e.bulletClass):r+=`<${e.bulletElement} class="${e.bulletClass}"></${e.bulletElement}>`;a.html(r),t.pagination.bullets=a.find(U(e.bulletClass))}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):`<span class="${e.currentClass}"></span> / <span class="${e.totalClass}"></span>`,a.html(r)),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):`<span class="${e.progressbarFillClass}"></span>`,a.html(r)),"custom"!==e.type&&i("paginationRender",t.pagination.$el[0])}function h(){t.params.pagination=F(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s=d(e.el);0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&s.length>1&&(s=t.$el.find(e.el),s.length>1&&(s=s.filter((e=>d(e).parents(".swiper")[0]===t.el)))),"bullets"===e.type&&e.clickable&&s.addClass(e.clickableClass),s.addClass(e.modifierClass+e.type),s.addClass(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.addClass(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.addClass(e.progressbarOppositeClass),e.clickable&&s.on("click",U(e.bulletClass),(function(e){e.preventDefault();let s=d(this).index()*t.params.slidesPerGroup;t.params.loop&&(s+=t.loopedSlides),t.slideTo(s)})),Object.assign(t.pagination,{$el:s,el:s[0]}),t.enabled||s.addClass(e.lockClass))}function m(){const e=t.params.pagination;if(o())return;const s=t.pagination.$el;s.removeClass(e.hiddenClass),s.removeClass(e.modifierClass+e.type),s.removeClass(t.isHorizontal()?e.horizontalClass:e.verticalClass),t.pagination.bullets&&t.pagination.bullets.removeClass&&t.pagination.bullets.removeClass(e.bulletActiveClass),e.clickable&&s.off("click",U(e.bulletClass))}a("init",(()=>{!1===t.params.pagination.enabled?f():(h(),u(),p())})),a("activeIndexChange",(()=>{(t.params.loop||void 0===t.snapIndex)&&p()})),a("snapIndexChange",(()=>{t.params.loop||p()})),a("slidesLengthChange",(()=>{t.params.loop&&(u(),p())})),a("snapGridLengthChange",(()=>{t.params.loop||(u(),p())})),a("destroy",(()=>{m()})),a("enable disable",(()=>{const{$el:e}=t.pagination;e&&e[t.enabled?"removeClass":"addClass"](t.params.pagination.lockClass)})),a("lock unlock",(()=>{p()})),a("click",((e,s)=>{const a=s.target,{$el:r}=t.pagination;if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r.length>0&&!d(a).hasClass(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&a===t.navigation.nextEl||t.navigation.prevEl&&a===t.navigation.prevEl))return;const e=r.hasClass(t.params.pagination.hiddenClass);i(!0===e?"paginationShow":"paginationHide"),r.toggleClass(t.params.pagination.hiddenClass)}}));const f=()=>{t.$el.addClass(t.params.pagination.paginationDisabledClass),t.pagination.$el&&t.pagination.$el.addClass(t.params.pagination.paginationDisabledClass),m()};Object.assign(t.pagination,{enable:()=>{t.$el.removeClass(t.params.pagination.paginationDisabledClass),t.pagination.$el&&t.pagination.$el.removeClass(t.params.pagination.paginationDisabledClass),h(),u(),p()},disable:f,render:u,update:p,init:h,destroy:m})},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const n=a();let l,o,c,u,h=!1,m=null,f=null;function g(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e,rtlTranslate:s,progress:a}=t,{$dragEl:i,$el:r}=e,n=t.params.scrollbar;let l=o,d=(c-o)*a;s?(d=-d,d>0?(l=o-d,d=0):-d+o>c&&(l=c+d)):d<0?(l=o+d,d=0):d+o>c&&(l=c-d),t.isHorizontal()?(i.transform(`translate3d(${d}px, 0, 0)`),i[0].style.width=`${l}px`):(i.transform(`translate3d(0px, ${d}px, 0)`),i[0].style.height=`${l}px`),n.hide&&(clearTimeout(m),r[0].style.opacity=1,m=setTimeout((()=>{r[0].style.opacity=0,r.transition(400)}),1e3))}function v(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e}=t,{$dragEl:s,$el:a}=e;s[0].style.width="",s[0].style.height="",c=t.isHorizontal()?a[0].offsetWidth:a[0].offsetHeight,u=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),o="auto"===t.params.scrollbar.dragSize?c*u:parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?s[0].style.width=`${o}px`:s[0].style.height=`${o}px`,a[0].style.display=u>=1?"none":"",t.params.scrollbar.hide&&(a[0].style.opacity=0),t.params.watchOverflow&&t.enabled&&e.$el[t.isLocked?"addClass":"removeClass"](t.params.scrollbar.lockClass)}function w(e){return t.isHorizontal()?"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientX:e.clientX:"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientY:e.clientY}function b(e){const{scrollbar:s,rtlTranslate:a}=t,{$el:i}=s;let r;r=(w(e)-i.offset()[t.isHorizontal()?"left":"top"]-(null!==l?l:o/2))/(c-o),r=Math.max(Math.min(r,1),0),a&&(r=1-r);const n=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*r;t.updateProgress(n),t.setTranslate(n),t.updateActiveIndex(),t.updateSlidesClasses()}function x(e){const s=t.params.scrollbar,{scrollbar:a,$wrapperEl:i}=t,{$el:n,$dragEl:o}=a;h=!0,l=e.target===o[0]||e.target===o?w(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),i.transition(100),o.transition(100),b(e),clearTimeout(f),n.transition(0),s.hide&&n.css("opacity",1),t.params.cssMode&&t.$wrapperEl.css("scroll-snap-type","none"),r("scrollbarDragStart",e)}function y(e){const{scrollbar:s,$wrapperEl:a}=t,{$el:i,$dragEl:n}=s;h&&(e.preventDefault?e.preventDefault():e.returnValue=!1,b(e),a.transition(0),i.transition(0),n.transition(0),r("scrollbarDragMove",e))}function E(e){const s=t.params.scrollbar,{scrollbar:a,$wrapperEl:i}=t,{$el:n}=a;h&&(h=!1,t.params.cssMode&&(t.$wrapperEl.css("scroll-snap-type",""),i.transition("")),s.hide&&(clearTimeout(f),f=p((()=>{n.css("opacity",0),n.transition(400)}),1e3)),r("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())}function C(e){const{scrollbar:s,touchEventsTouch:a,touchEventsDesktop:i,params:r,support:l}=t,o=s.$el;if(!o)return;const d=o[0],c=!(!l.passiveListener||!r.passiveListeners)&&{passive:!1,capture:!1},p=!(!l.passiveListener||!r.passiveListeners)&&{passive:!0,capture:!1};if(!d)return;const u="on"===e?"addEventListener":"removeEventListener";l.touch?(d[u](a.start,x,c),d[u](a.move,y,c),d[u](a.end,E,p)):(d[u](i.start,x,c),n[u](i.move,y,c),n[u](i.end,E,p))}function T(){const{scrollbar:e,$el:s}=t;t.params.scrollbar=F(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const a=t.params.scrollbar;if(!a.el)return;let i=d(a.el);t.params.uniqueNavElements&&"string"==typeof a.el&&i.length>1&&1===s.find(a.el).length&&(i=s.find(a.el)),i.addClass(t.isHorizontal()?a.horizontalClass:a.verticalClass);let r=i.find(`.${t.params.scrollbar.dragClass}`);0===r.length&&(r=d(`<div class="${t.params.scrollbar.dragClass}"></div>`),i.append(r)),Object.assign(e,{$el:i,el:i[0],$dragEl:r,dragEl:r[0]}),a.draggable&&t.params.scrollbar.el&&t.scrollbar.el&&C("on"),i&&i[t.enabled?"removeClass":"addClass"](t.params.scrollbar.lockClass)}function $(){const e=t.params.scrollbar,s=t.scrollbar.$el;s&&s.removeClass(t.isHorizontal()?e.horizontalClass:e.verticalClass),t.params.scrollbar.el&&t.scrollbar.el&&C("off")}s({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null,$el:null,$dragEl:null},i("init",(()=>{!1===t.params.scrollbar.enabled?S():(T(),v(),g())})),i("update resize observerUpdate lock unlock",(()=>{v()})),i("setTranslate",(()=>{g()})),i("setTransition",((e,s)=>{!function(e){t.params.scrollbar.el&&t.scrollbar.el&&t.scrollbar.$dragEl.transition(e)}(s)})),i("enable disable",(()=>{const{$el:e}=t.scrollbar;e&&e[t.enabled?"removeClass":"addClass"](t.params.scrollbar.lockClass)})),i("destroy",(()=>{$()}));const S=()=>{t.$el.addClass(t.params.scrollbar.scrollbarDisabledClass),t.scrollbar.$el&&t.scrollbar.$el.addClass(t.params.scrollbar.scrollbarDisabledClass),$()};Object.assign(t.scrollbar,{enable:()=>{t.$el.removeClass(t.params.scrollbar.scrollbarDisabledClass),t.scrollbar.$el&&t.scrollbar.$el.removeClass(t.params.scrollbar.scrollbarDisabledClass),T(),v(),g()},disable:S,updateSize:v,setTranslate:g,init:T,destroy:$})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({parallax:{enabled:!1}});const i=(e,s)=>{const{rtl:a}=t,i=d(e),r=a?-1:1,n=i.attr("data-swiper-parallax")||"0";let l=i.attr("data-swiper-parallax-x"),o=i.attr("data-swiper-parallax-y");const c=i.attr("data-swiper-parallax-scale"),p=i.attr("data-swiper-parallax-opacity");if(l||o?(l=l||"0",o=o||"0"):t.isHorizontal()?(l=n,o="0"):(o=n,l="0"),l=l.indexOf("%")>=0?parseInt(l,10)*s*r+"%":l*s*r+"px",o=o.indexOf("%")>=0?parseInt(o,10)*s+"%":o*s+"px",null!=p){const e=p-(p-1)*(1-Math.abs(s));i[0].style.opacity=e}if(null==c)i.transform(`translate3d(${l}, ${o}, 0px)`);else{const e=c-(c-1)*(1-Math.abs(s));i.transform(`translate3d(${l}, ${o}, 0px) scale(${e})`)}},r=()=>{const{$el:e,slides:s,progress:a,snapGrid:r}=t;e.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((e=>{i(e,a)})),s.each(((e,s)=>{let n=e.progress;t.params.slidesPerGroup>1&&"auto"!==t.params.slidesPerView&&(n+=Math.ceil(s/2)-a*(r.length-1)),n=Math.min(Math.max(n,-1),1),d(e).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((e=>{i(e,n)}))}))};a("beforeInit",(()=>{t.params.parallax.enabled&&(t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0)})),a("init",(()=>{t.params.parallax.enabled&&r()})),a("setTranslate",(()=>{t.params.parallax.enabled&&r()})),a("setTransition",((e,s)=>{t.params.parallax.enabled&&function(e){void 0===e&&(e=t.params.speed);const{$el:s}=t;s.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((t=>{const s=d(t);let a=parseInt(s.attr("data-swiper-parallax-duration"),10)||e;0===e&&(a=0),s.transition(a)}))}(s)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();s({zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let l,o,c,p=1,u=!1;const m={$slideEl:void 0,slideWidth:void 0,slideHeight:void 0,$imageEl:void 0,$imageWrapEl:void 0,maxRatio:3},f={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},g={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let v=1;function w(e){if(e.targetTouches.length<2)return 1;const t=e.targetTouches[0].pageX,s=e.targetTouches[0].pageY,a=e.targetTouches[1].pageX,i=e.targetTouches[1].pageY;return Math.sqrt((a-t)**2+(i-s)**2)}function b(e){const s=t.support,a=t.params.zoom;if(o=!1,c=!1,!s.gestures){if("touchstart"!==e.type||"touchstart"===e.type&&e.targetTouches.length<2)return;o=!0,m.scaleStart=w(e)}m.$slideEl&&m.$slideEl.length||(m.$slideEl=d(e.target).closest(`.${t.params.slideClass}`),0===m.$slideEl.length&&(m.$slideEl=t.slides.eq(t.activeIndex)),m.$imageEl=m.$slideEl.find(`.${a.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),m.$imageWrapEl=m.$imageEl.parent(`.${a.containerClass}`),m.maxRatio=m.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,0!==m.$imageWrapEl.length)?(m.$imageEl&&m.$imageEl.transition(0),u=!0):m.$imageEl=void 0}function x(e){const s=t.support,a=t.params.zoom,i=t.zoom;if(!s.gestures){if("touchmove"!==e.type||"touchmove"===e.type&&e.targetTouches.length<2)return;c=!0,m.scaleMove=w(e)}m.$imageEl&&0!==m.$imageEl.length?(s.gestures?i.scale=e.scale*p:i.scale=m.scaleMove/m.scaleStart*p,i.scale>m.maxRatio&&(i.scale=m.maxRatio-1+(i.scale-m.maxRatio+1)**.5),i.scale<a.minRatio&&(i.scale=a.minRatio+1-(a.minRatio-i.scale+1)**.5),m.$imageEl.transform(`translate3d(0,0,0) scale(${i.scale})`)):"gesturechange"===e.type&&b(e)}function y(e){const s=t.device,a=t.support,i=t.params.zoom,r=t.zoom;if(!a.gestures){if(!o||!c)return;if("touchend"!==e.type||"touchend"===e.type&&e.changedTouches.length<2&&!s.android)return;o=!1,c=!1}m.$imageEl&&0!==m.$imageEl.length&&(r.scale=Math.max(Math.min(r.scale,m.maxRatio),i.minRatio),m.$imageEl.transition(t.params.speed).transform(`translate3d(0,0,0) scale(${r.scale})`),p=r.scale,u=!1,1===r.scale&&(m.$slideEl=void 0))}function E(e){const s=t.zoom;if(!m.$imageEl||0===m.$imageEl.length)return;if(t.allowClick=!1,!f.isTouched||!m.$slideEl)return;f.isMoved||(f.width=m.$imageEl[0].offsetWidth,f.height=m.$imageEl[0].offsetHeight,f.startX=h(m.$imageWrapEl[0],"x")||0,f.startY=h(m.$imageWrapEl[0],"y")||0,m.slideWidth=m.$slideEl[0].offsetWidth,m.slideHeight=m.$slideEl[0].offsetHeight,m.$imageWrapEl.transition(0));const a=f.width*s.scale,i=f.height*s.scale;if(!(a<m.slideWidth&&i<m.slideHeight)){if(f.minX=Math.min(m.slideWidth/2-a/2,0),f.maxX=-f.minX,f.minY=Math.min(m.slideHeight/2-i/2,0),f.maxY=-f.minY,f.touchesCurrent.x="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,f.touchesCurrent.y="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY,!f.isMoved&&!u){if(t.isHorizontal()&&(Math.floor(f.minX)===Math.floor(f.startX)&&f.touchesCurrent.x<f.touchesStart.x||Math.floor(f.maxX)===Math.floor(f.startX)&&f.touchesCurrent.x>f.touchesStart.x))return void(f.isTouched=!1);if(!t.isHorizontal()&&(Math.floor(f.minY)===Math.floor(f.startY)&&f.touchesCurrent.y<f.touchesStart.y||Math.floor(f.maxY)===Math.floor(f.startY)&&f.touchesCurrent.y>f.touchesStart.y))return void(f.isTouched=!1)}e.cancelable&&e.preventDefault(),e.stopPropagation(),f.isMoved=!0,f.currentX=f.touchesCurrent.x-f.touchesStart.x+f.startX,f.currentY=f.touchesCurrent.y-f.touchesStart.y+f.startY,f.currentX<f.minX&&(f.currentX=f.minX+1-(f.minX-f.currentX+1)**.8),f.currentX>f.maxX&&(f.currentX=f.maxX-1+(f.currentX-f.maxX+1)**.8),f.currentY<f.minY&&(f.currentY=f.minY+1-(f.minY-f.currentY+1)**.8),f.currentY>f.maxY&&(f.currentY=f.maxY-1+(f.currentY-f.maxY+1)**.8),g.prevPositionX||(g.prevPositionX=f.touchesCurrent.x),g.prevPositionY||(g.prevPositionY=f.touchesCurrent.y),g.prevTime||(g.prevTime=Date.now()),g.x=(f.touchesCurrent.x-g.prevPositionX)/(Date.now()-g.prevTime)/2,g.y=(f.touchesCurrent.y-g.prevPositionY)/(Date.now()-g.prevTime)/2,Math.abs(f.touchesCurrent.x-g.prevPositionX)<2&&(g.x=0),Math.abs(f.touchesCurrent.y-g.prevPositionY)<2&&(g.y=0),g.prevPositionX=f.touchesCurrent.x,g.prevPositionY=f.touchesCurrent.y,g.prevTime=Date.now(),m.$imageWrapEl.transform(`translate3d(${f.currentX}px, ${f.currentY}px,0)`)}}function C(){const e=t.zoom;m.$slideEl&&t.previousIndex!==t.activeIndex&&(m.$imageEl&&m.$imageEl.transform("translate3d(0,0,0) scale(1)"),m.$imageWrapEl&&m.$imageWrapEl.transform("translate3d(0,0,0)"),e.scale=1,p=1,m.$slideEl=void 0,m.$imageEl=void 0,m.$imageWrapEl=void 0)}function T(e){const s=t.zoom,a=t.params.zoom;if(m.$slideEl||(e&&e.target&&(m.$slideEl=d(e.target).closest(`.${t.params.slideClass}`)),m.$slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.$slideEl=t.$wrapperEl.children(`.${t.params.slideActiveClass}`):m.$slideEl=t.slides.eq(t.activeIndex)),m.$imageEl=m.$slideEl.find(`.${a.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),m.$imageWrapEl=m.$imageEl.parent(`.${a.containerClass}`)),!m.$imageEl||0===m.$imageEl.length||!m.$imageWrapEl||0===m.$imageWrapEl.length)return;let i,r,l,o,c,u,h,g,v,w,b,x,y,E,C,T,$,S;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),m.$slideEl.addClass(`${a.zoomedSlideClass}`),void 0===f.touchesStart.x&&e?(i="touchend"===e.type?e.changedTouches[0].pageX:e.pageX,r="touchend"===e.type?e.changedTouches[0].pageY:e.pageY):(i=f.touchesStart.x,r=f.touchesStart.y),s.scale=m.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,p=m.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,e?($=m.$slideEl[0].offsetWidth,S=m.$slideEl[0].offsetHeight,l=m.$slideEl.offset().left+n.scrollX,o=m.$slideEl.offset().top+n.scrollY,c=l+$/2-i,u=o+S/2-r,v=m.$imageEl[0].offsetWidth,w=m.$imageEl[0].offsetHeight,b=v*s.scale,x=w*s.scale,y=Math.min($/2-b/2,0),E=Math.min(S/2-x/2,0),C=-y,T=-E,h=c*s.scale,g=u*s.scale,h<y&&(h=y),h>C&&(h=C),g<E&&(g=E),g>T&&(g=T)):(h=0,g=0),m.$imageWrapEl.transition(300).transform(`translate3d(${h}px, ${g}px,0)`),m.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${s.scale})`)}function $(){const e=t.zoom,s=t.params.zoom;m.$slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.$slideEl=t.$wrapperEl.children(`.${t.params.slideActiveClass}`):m.$slideEl=t.slides.eq(t.activeIndex),m.$imageEl=m.$slideEl.find(`.${s.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),m.$imageWrapEl=m.$imageEl.parent(`.${s.containerClass}`)),m.$imageEl&&0!==m.$imageEl.length&&m.$imageWrapEl&&0!==m.$imageWrapEl.length&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,p=1,m.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"),m.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)"),m.$slideEl.removeClass(`${s.zoomedSlideClass}`),m.$slideEl=void 0)}function S(e){const s=t.zoom;s.scale&&1!==s.scale?$():T(e)}function M(){const e=t.support;return{passiveListener:!("touchstart"!==t.touchEvents.start||!e.passiveListener||!t.params.passiveListeners)&&{passive:!0,capture:!1},activeListenerWithCapture:!e.passiveListener||{passive:!1,capture:!0}}}function P(){return`.${t.params.slideClass}`}function k(e){const{passiveListener:s}=M(),a=P();t.$wrapperEl[e]("gesturestart",a,b,s),t.$wrapperEl[e]("gesturechange",a,x,s),t.$wrapperEl[e]("gestureend",a,y,s)}function z(){l||(l=!0,k("on"))}function L(){l&&(l=!1,k("off"))}function O(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const s=t.support,{passiveListener:a,activeListenerWithCapture:i}=M(),r=P();s.gestures?(t.$wrapperEl.on(t.touchEvents.start,z,a),t.$wrapperEl.on(t.touchEvents.end,L,a)):"touchstart"===t.touchEvents.start&&(t.$wrapperEl.on(t.touchEvents.start,r,b,a),t.$wrapperEl.on(t.touchEvents.move,r,x,i),t.$wrapperEl.on(t.touchEvents.end,r,y,a),t.touchEvents.cancel&&t.$wrapperEl.on(t.touchEvents.cancel,r,y,a)),t.$wrapperEl.on(t.touchEvents.move,`.${t.params.zoom.containerClass}`,E,i)}function I(){const e=t.zoom;if(!e.enabled)return;const s=t.support;e.enabled=!1;const{passiveListener:a,activeListenerWithCapture:i}=M(),r=P();s.gestures?(t.$wrapperEl.off(t.touchEvents.start,z,a),t.$wrapperEl.off(t.touchEvents.end,L,a)):"touchstart"===t.touchEvents.start&&(t.$wrapperEl.off(t.touchEvents.start,r,b,a),t.$wrapperEl.off(t.touchEvents.move,r,x,i),t.$wrapperEl.off(t.touchEvents.end,r,y,a),t.touchEvents.cancel&&t.$wrapperEl.off(t.touchEvents.cancel,r,y,a)),t.$wrapperEl.off(t.touchEvents.move,`.${t.params.zoom.containerClass}`,E,i)}Object.defineProperty(t.zoom,"scale",{get:()=>v,set(e){if(v!==e){const t=m.$imageEl?m.$imageEl[0]:void 0,s=m.$slideEl?m.$slideEl[0]:void 0;i("zoomChange",e,t,s)}v=e}}),a("init",(()=>{t.params.zoom.enabled&&O()})),a("destroy",(()=>{I()})),a("touchStart",((e,s)=>{t.zoom.enabled&&function(e){const s=t.device;m.$imageEl&&0!==m.$imageEl.length&&(f.isTouched||(s.android&&e.cancelable&&e.preventDefault(),f.isTouched=!0,f.touchesStart.x="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,f.touchesStart.y="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY))}(s)})),a("touchEnd",((e,s)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!m.$imageEl||0===m.$imageEl.length)return;if(!f.isTouched||!f.isMoved)return f.isTouched=!1,void(f.isMoved=!1);f.isTouched=!1,f.isMoved=!1;let s=300,a=300;const i=g.x*s,r=f.currentX+i,n=g.y*a,l=f.currentY+n;0!==g.x&&(s=Math.abs((r-f.currentX)/g.x)),0!==g.y&&(a=Math.abs((l-f.currentY)/g.y));const o=Math.max(s,a);f.currentX=r,f.currentY=l;const d=f.width*e.scale,c=f.height*e.scale;f.minX=Math.min(m.slideWidth/2-d/2,0),f.maxX=-f.minX,f.minY=Math.min(m.slideHeight/2-c/2,0),f.maxY=-f.minY,f.currentX=Math.max(Math.min(f.currentX,f.maxX),f.minX),f.currentY=Math.max(Math.min(f.currentY,f.maxY),f.minY),m.$imageWrapEl.transition(o).transform(`translate3d(${f.currentX}px, ${f.currentY}px,0)`)}()})),a("doubleTap",((e,s)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&S(s)})),a("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&C()})),a("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&C()})),Object.assign(t.zoom,{enable:O,disable:I,in:T,out:$,toggle:S})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;s({lazy:{checkInView:!1,enabled:!1,loadPrevNext:!1,loadPrevNextAmount:1,loadOnTransitionStart:!1,scrollingElement:"",elementClass:"swiper-lazy",loadingClass:"swiper-lazy-loading",loadedClass:"swiper-lazy-loaded",preloaderClass:"swiper-lazy-preloader"}}),t.lazy={};let n=!1,l=!1;function o(e,s){void 0===s&&(s=!0);const a=t.params.lazy;if(void 0===e)return;if(0===t.slides.length)return;const r=t.virtual&&t.params.virtual.enabled?t.$wrapperEl.children(`.${t.params.slideClass}[data-swiper-slide-index="${e}"]`):t.slides.eq(e),n=r.find(`.${a.elementClass}:not(.${a.loadedClass}):not(.${a.loadingClass})`);!r.hasClass(a.elementClass)||r.hasClass(a.loadedClass)||r.hasClass(a.loadingClass)||n.push(r[0]),0!==n.length&&n.each((e=>{const n=d(e);n.addClass(a.loadingClass);const l=n.attr("data-background"),c=n.attr("data-src"),p=n.attr("data-srcset"),u=n.attr("data-sizes"),h=n.parent("picture");t.loadImage(n[0],c||l,p,u,!1,(()=>{if(null!=t&&t&&(!t||t.params)&&!t.destroyed){if(l?(n.css("background-image",`url("${l}")`),n.removeAttr("data-background")):(p&&(n.attr("srcset",p),n.removeAttr("data-srcset")),u&&(n.attr("sizes",u),n.removeAttr("data-sizes")),h.length&&h.children("source").each((e=>{const t=d(e);t.attr("data-srcset")&&(t.attr("srcset",t.attr("data-srcset")),t.removeAttr("data-srcset"))})),c&&(n.attr("src",c),n.removeAttr("data-src"))),n.addClass(a.loadedClass).removeClass(a.loadingClass),r.find(`.${a.preloaderClass}`).remove(),t.params.loop&&s){const e=r.attr("data-swiper-slide-index");if(r.hasClass(t.params.slideDuplicateClass)){o(t.$wrapperEl.children(`[data-swiper-slide-index="${e}"]:not(.${t.params.slideDuplicateClass})`).index(),!1)}else{o(t.$wrapperEl.children(`.${t.params.slideDuplicateClass}[data-swiper-slide-index="${e}"]`).index(),!1)}}i("lazyImageReady",r[0],n[0]),t.params.autoHeight&&t.updateAutoHeight()}})),i("lazyImageLoad",r[0],n[0])}))}function c(){const{$wrapperEl:e,params:s,slides:a,activeIndex:i}=t,r=t.virtual&&s.virtual.enabled,n=s.lazy;let c=s.slidesPerView;function p(t){if(r){if(e.children(`.${s.slideClass}[data-swiper-slide-index="${t}"]`).length)return!0}else if(a[t])return!0;return!1}function u(e){return r?d(e).attr("data-swiper-slide-index"):d(e).index()}if("auto"===c&&(c=0),l||(l=!0),t.params.watchSlidesProgress)e.children(`.${s.slideVisibleClass}`).each((e=>{o(r?d(e).attr("data-swiper-slide-index"):d(e).index())}));else if(c>1)for(let e=i;e<i+c;e+=1)p(e)&&o(e);else o(i);if(n.loadPrevNext)if(c>1||n.loadPrevNextAmount&&n.loadPrevNextAmount>1){const e=n.loadPrevNextAmount,t=Math.ceil(c),s=Math.min(i+t+Math.max(e,t),a.length),r=Math.max(i-Math.max(t,e),0);for(let e=i+t;e<s;e+=1)p(e)&&o(e);for(let e=r;e<i;e+=1)p(e)&&o(e)}else{const t=e.children(`.${s.slideNextClass}`);t.length>0&&o(u(t));const a=e.children(`.${s.slidePrevClass}`);a.length>0&&o(u(a))}}function p(){const e=r();if(!t||t.destroyed)return;const s=t.params.lazy.scrollingElement?d(t.params.lazy.scrollingElement):d(e),a=s[0]===e,i=a?e.innerWidth:s[0].offsetWidth,l=a?e.innerHeight:s[0].offsetHeight,o=t.$el.offset(),{rtlTranslate:u}=t;let h=!1;u&&(o.left-=t.$el[0].scrollLeft);const m=[[o.left,o.top],[o.left+t.width,o.top],[o.left,o.top+t.height],[o.left+t.width,o.top+t.height]];for(let e=0;e<m.length;e+=1){const t=m[e];if(t[0]>=0&&t[0]<=i&&t[1]>=0&&t[1]<=l){if(0===t[0]&&0===t[1])continue;h=!0}}const f=!("touchstart"!==t.touchEvents.start||!t.support.passiveListener||!t.params.passiveListeners)&&{passive:!0,capture:!1};h?(c(),s.off("scroll",p,f)):n||(n=!0,s.on("scroll",p,f))}a("beforeInit",(()=>{t.params.lazy.enabled&&t.params.preloadImages&&(t.params.preloadImages=!1)})),a("init",(()=>{t.params.lazy.enabled&&(t.params.lazy.checkInView?p():c())})),a("scroll",(()=>{t.params.freeMode&&t.params.freeMode.enabled&&!t.params.freeMode.sticky&&c()})),a("scrollbarDragMove resize _freeModeNoMomentumRelease",(()=>{t.params.lazy.enabled&&(t.params.lazy.checkInView?p():c())})),a("transitionStart",(()=>{t.params.lazy.enabled&&(t.params.lazy.loadOnTransitionStart||!t.params.lazy.loadOnTransitionStart&&!l)&&(t.params.lazy.checkInView?p():c())})),a("transitionEnd",(()=>{t.params.lazy.enabled&&!t.params.lazy.loadOnTransitionStart&&(t.params.lazy.checkInView?p():c())})),a("slideChange",(()=>{const{lazy:e,cssMode:s,watchSlidesProgress:a,touchReleaseOnEdges:i,resistanceRatio:r}=t.params;e.enabled&&(s||a&&(i||0===r))&&c()})),a("destroy",(()=>{t.$el&&t.$el.find(`.${t.params.lazy.loadingClass}`).removeClass(t.params.lazy.loadingClass)})),Object.assign(t.lazy,{load:c,loadInSlide:o})},function(e){let{swiper:t,extendParams:s,on:a}=e;function i(e,t){const s=function(){let e,t,s;return(a,i)=>{for(t=-1,e=a.length;e-t>1;)s=e+t>>1,a[s]<=i?t=s:e=s;return e}}();let a,i;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(i=s(this.x,e),a=i-1,(e-this.x[a])*(this.y[i]-this.y[a])/(this.x[i]-this.x[a])+this.y[a]):0},this}function r(){t.controller.control&&t.controller.spline&&(t.controller.spline=void 0,delete t.controller.spline)}s({controller:{control:void 0,inverse:!1,by:"slide"}}),t.controller={control:void 0},a("beforeInit",(()=>{t.controller.control=t.params.controller.control})),a("update",(()=>{r()})),a("resize",(()=>{r()})),a("observerUpdate",(()=>{r()})),a("setTranslate",((e,s,a)=>{t.controller.control&&t.controller.setTranslate(s,a)})),a("setTransition",((e,s,a)=>{t.controller.control&&t.controller.setTransition(s,a)})),Object.assign(t.controller,{setTranslate:function(e,s){const a=t.controller.control;let r,n;const l=t.constructor;function o(e){const s=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(!function(e){t.controller.spline||(t.controller.spline=t.params.loop?new i(t.slidesGrid,e.slidesGrid):new i(t.snapGrid,e.snapGrid))}(e),n=-t.controller.spline.interpolate(-s)),n&&"container"!==t.params.controller.by||(r=(e.maxTranslate()-e.minTranslate())/(t.maxTranslate()-t.minTranslate()),n=(s-t.minTranslate())*r+e.minTranslate()),t.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,t),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(a))for(let e=0;e<a.length;e+=1)a[e]!==s&&a[e]instanceof l&&o(a[e]);else a instanceof l&&s!==a&&o(a)},setTransition:function(e,s){const a=t.constructor,i=t.controller.control;let r;function n(s){s.setTransition(e,t),0!==e&&(s.transitionStart(),s.params.autoHeight&&p((()=>{s.updateAutoHeight()})),s.$wrapperEl.transitionEnd((()=>{i&&(s.params.loop&&"slide"===t.params.controller.by&&s.loopFix(),s.transitionEnd())})))}if(Array.isArray(i))for(r=0;r<i.length;r+=1)i[r]!==s&&i[r]instanceof a&&n(i[r]);else i instanceof a&&s!==i&&n(i)}})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({a11y:{enabled:!0,notificationClass:"swiper-notification",prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide",paginationBulletMessage:"Go to slide {{index}}",slideLabelMessage:"{{index}} / {{slidesLength}}",containerMessage:null,containerRoleDescriptionMessage:null,itemRoleDescriptionMessage:null,slideRole:"group",id:null}});let i=null;function r(e){const t=i;0!==t.length&&(t.html(""),t.html(e))}function n(e){e.attr("tabIndex","0")}function l(e){e.attr("tabIndex","-1")}function o(e,t){e.attr("role",t)}function c(e,t){e.attr("aria-roledescription",t)}function p(e,t){e.attr("aria-label",t)}function u(e){e.attr("aria-disabled",!0)}function h(e){e.attr("aria-disabled",!1)}function m(e){if(13!==e.keyCode&&32!==e.keyCode)return;const s=t.params.a11y,a=d(e.target);t.navigation&&t.navigation.$nextEl&&a.is(t.navigation.$nextEl)&&(t.isEnd&&!t.params.loop||t.slideNext(),t.isEnd?r(s.lastSlideMessage):r(s.nextSlideMessage)),t.navigation&&t.navigation.$prevEl&&a.is(t.navigation.$prevEl)&&(t.isBeginning&&!t.params.loop||t.slidePrev(),t.isBeginning?r(s.firstSlideMessage):r(s.prevSlideMessage)),t.pagination&&a.is(U(t.params.pagination.bulletClass))&&a[0].click()}function f(){return t.pagination&&t.pagination.bullets&&t.pagination.bullets.length}function g(){return f()&&t.params.pagination.clickable}const v=(e,t,s)=>{n(e),"BUTTON"!==e[0].tagName&&(o(e,"button"),e.on("keydown",m)),p(e,s),function(e,t){e.attr("aria-controls",t)}(e,t)},w=e=>{const s=e.target.closest(`.${t.params.slideClass}`);if(!s||!t.slides.includes(s))return;const a=t.slides.indexOf(s)===t.activeIndex,i=t.params.watchSlidesProgress&&t.visibleSlides&&t.visibleSlides.includes(s);a||i||t.slideTo(t.slides.indexOf(s),0)},b=()=>{const e=t.params.a11y;e.itemRoleDescriptionMessage&&c(d(t.slides),e.itemRoleDescriptionMessage),o(d(t.slides),e.slideRole);const s=t.params.loop?t.slides.filter((e=>!e.classList.contains(t.params.slideDuplicateClass))).length:t.slides.length;e.slideLabelMessage&&t.slides.each(((a,i)=>{const r=d(a),n=t.params.loop?parseInt(r.attr("data-swiper-slide-index"),10):i;p(r,e.slideLabelMessage.replace(/\{\{index\}\}/,n+1).replace(/\{\{slidesLength\}\}/,s))}))},x=()=>{const e=t.params.a11y;t.$el.append(i);const s=t.$el;e.containerRoleDescriptionMessage&&c(s,e.containerRoleDescriptionMessage),e.containerMessage&&p(s,e.containerMessage);const a=t.$wrapperEl,r=e.id||a.attr("id")||`swiper-wrapper-${n=16,void 0===n&&(n=16),"x".repeat(n).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var n;const l=t.params.autoplay&&t.params.autoplay.enabled?"off":"polite";var o;let d,u;o=r,a.attr("id",o),function(e,t){e.attr("aria-live",t)}(a,l),b(),t.navigation&&t.navigation.$nextEl&&(d=t.navigation.$nextEl),t.navigation&&t.navigation.$prevEl&&(u=t.navigation.$prevEl),d&&d.length&&v(d,r,e.nextSlideMessage),u&&u.length&&v(u,r,e.prevSlideMessage),g()&&t.pagination.$el.on("keydown",U(t.params.pagination.bulletClass),m),t.$el.on("focus",w,!0)};a("beforeInit",(()=>{i=d(`<span class="${t.params.a11y.notificationClass}" aria-live="assertive" aria-atomic="true"></span>`)})),a("afterInit",(()=>{t.params.a11y.enabled&&x()})),a("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{t.params.a11y.enabled&&b()})),a("fromEdge toEdge afterInit lock unlock",(()=>{t.params.a11y.enabled&&function(){if(t.params.loop||t.params.rewind||!t.navigation)return;const{$nextEl:e,$prevEl:s}=t.navigation;s&&s.length>0&&(t.isBeginning?(u(s),l(s)):(h(s),n(s))),e&&e.length>0&&(t.isEnd?(u(e),l(e)):(h(e),n(e)))}()})),a("paginationUpdate",(()=>{t.params.a11y.enabled&&function(){const e=t.params.a11y;f()&&t.pagination.bullets.each((s=>{const a=d(s);t.params.pagination.clickable&&(n(a),t.params.pagination.renderBullet||(o(a,"button"),p(a,e.paginationBulletMessage.replace(/\{\{index\}\}/,a.index()+1)))),a.is(`.${t.params.pagination.bulletActiveClass}`)?a.attr("aria-current","true"):a.removeAttr("aria-current")}))}()})),a("destroy",(()=>{t.params.a11y.enabled&&function(){let e,s;i&&i.length>0&&i.remove(),t.navigation&&t.navigation.$nextEl&&(e=t.navigation.$nextEl),t.navigation&&t.navigation.$prevEl&&(s=t.navigation.$prevEl),e&&e.off("keydown",m),s&&s.off("keydown",m),g()&&t.pagination.$el.off("keydown",U(t.params.pagination.bulletClass),m),t.$el.off("focus",w,!0)}()}))},function(e){let{swiper:t,extendParams:s,on:a}=e;s({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let i=!1,n={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=r();let s;s=e?new URL(e):t.location;const a=s.pathname.slice(1).split("/").filter((e=>""!==e)),i=a.length;return{key:a[i-2],value:a[i-1]}},d=(e,s)=>{const a=r();if(!i||!t.params.history.enabled)return;let n;n=t.params.url?new URL(t.params.url):a.location;const o=t.slides.eq(s);let d=l(o.attr("data-history"));if(t.params.history.root.length>0){let s=t.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),d=`${s}/${e}/${d}`}else n.pathname.includes(e)||(d=`${e}/${d}`);t.params.history.keepQuery&&(d+=n.search);const c=a.history.state;c&&c.value===d||(t.params.history.replaceState?a.history.replaceState({value:d},null,d):a.history.pushState({value:d},null,d))},c=(e,s,a)=>{if(s)for(let i=0,r=t.slides.length;i<r;i+=1){const r=t.slides.eq(i);if(l(r.attr("data-history"))===s&&!r.hasClass(t.params.slideDuplicateClass)){const s=r.index();t.slideTo(s,e,a)}}else t.slideTo(0,e,a)},p=()=>{n=o(t.params.url),c(t.params.speed,n.value,!1)};a("init",(()=>{t.params.history.enabled&&(()=>{const e=r();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);i=!0,n=o(t.params.url),(n.key||n.value)&&(c(0,n.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",p))}})()})),a("destroy",(()=>{t.params.history.enabled&&(()=>{const e=r();t.params.history.replaceState||e.removeEventListener("popstate",p)})()})),a("transitionEnd _freeModeNoMomentumRelease",(()=>{i&&d(t.params.history.key,t.activeIndex)})),a("slideChange",(()=>{i&&t.params.cssMode&&d(t.params.history.key,t.activeIndex)}))},function(e){let{swiper:t,extendParams:s,emit:i,on:n}=e,l=!1;const o=a(),c=r();s({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1}});const p=()=>{i("hashChange");const e=o.location.hash.replace("#","");if(e!==t.slides.eq(t.activeIndex).attr("data-hash")){const s=t.$wrapperEl.children(`.${t.params.slideClass}[data-hash="${e}"]`).index();if(void 0===s)return;t.slideTo(s)}},u=()=>{if(l&&t.params.hashNavigation.enabled)if(t.params.hashNavigation.replaceState&&c.history&&c.history.replaceState)c.history.replaceState(null,null,`#${t.slides.eq(t.activeIndex).attr("data-hash")}`||""),i("hashSet");else{const e=t.slides.eq(t.activeIndex),s=e.attr("data-hash")||e.attr("data-history");o.location.hash=s||"",i("hashSet")}};n("init",(()=>{t.params.hashNavigation.enabled&&(()=>{if(!t.params.hashNavigation.enabled||t.params.history&&t.params.history.enabled)return;l=!0;const e=o.location.hash.replace("#","");if(e){const s=0;for(let a=0,i=t.slides.length;a<i;a+=1){const i=t.slides.eq(a);if((i.attr("data-hash")||i.attr("data-history"))===e&&!i.hasClass(t.params.slideDuplicateClass)){const e=i.index();t.slideTo(e,s,t.params.runCallbacksOnInit,!0)}}}t.params.hashNavigation.watchState&&d(c).on("hashchange",p)})()})),n("destroy",(()=>{t.params.hashNavigation.enabled&&t.params.hashNavigation.watchState&&d(c).off("hashchange",p)})),n("transitionEnd _freeModeNoMomentumRelease",(()=>{l&&u()})),n("slideChange",(()=>{l&&t.params.cssMode&&u()}))},function(e){let t,{swiper:s,extendParams:i,on:r,emit:n}=e;function l(){const e=s.slides.eq(s.activeIndex);let a=s.params.autoplay.delay;e.attr("data-swiper-autoplay")&&(a=e.attr("data-swiper-autoplay")||s.params.autoplay.delay),clearTimeout(t),t=p((()=>{let e;s.params.autoplay.reverseDirection?s.params.loop?(s.loopFix(),e=s.slidePrev(s.params.speed,!0,!0),n("autoplay")):s.isBeginning?s.params.autoplay.stopOnLastSlide?d():(e=s.slideTo(s.slides.length-1,s.params.speed,!0,!0),n("autoplay")):(e=s.slidePrev(s.params.speed,!0,!0),n("autoplay")):s.params.loop?(s.loopFix(),e=s.slideNext(s.params.speed,!0,!0),n("autoplay")):s.isEnd?s.params.autoplay.stopOnLastSlide?d():(e=s.slideTo(0,s.params.speed,!0,!0),n("autoplay")):(e=s.slideNext(s.params.speed,!0,!0),n("autoplay")),(s.params.cssMode&&s.autoplay.running||!1===e)&&l()}),a)}function o(){return void 0===t&&(!s.autoplay.running&&(s.autoplay.running=!0,n("autoplayStart"),l(),!0))}function d(){return!!s.autoplay.running&&(void 0!==t&&(t&&(clearTimeout(t),t=void 0),s.autoplay.running=!1,n("autoplayStop"),!0))}function c(e){s.autoplay.running&&(s.autoplay.paused||(t&&clearTimeout(t),s.autoplay.paused=!0,0!==e&&s.params.autoplay.waitForTransition?["transitionend","webkitTransitionEnd"].forEach((e=>{s.$wrapperEl[0].addEventListener(e,h)})):(s.autoplay.paused=!1,l())))}function u(){const e=a();"hidden"===e.visibilityState&&s.autoplay.running&&c(),"visible"===e.visibilityState&&s.autoplay.paused&&(l(),s.autoplay.paused=!1)}function h(e){s&&!s.destroyed&&s.$wrapperEl&&e.target===s.$wrapperEl[0]&&(["transitionend","webkitTransitionEnd"].forEach((e=>{s.$wrapperEl[0].removeEventListener(e,h)})),s.autoplay.paused=!1,s.autoplay.running?l():d())}function m(){s.params.autoplay.disableOnInteraction?d():(n("autoplayPause"),c()),["transitionend","webkitTransitionEnd"].forEach((e=>{s.$wrapperEl[0].removeEventListener(e,h)}))}function f(){s.params.autoplay.disableOnInteraction||(s.autoplay.paused=!1,n("autoplayResume"),l())}s.autoplay={running:!1,paused:!1},i({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!0,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}}),r("init",(()=>{if(s.params.autoplay.enabled){o();a().addEventListener("visibilitychange",u),s.params.autoplay.pauseOnMouseEnter&&(s.$el.on("mouseenter",m),s.$el.on("mouseleave",f))}})),r("beforeTransitionStart",((e,t,a)=>{s.autoplay.running&&(a||!s.params.autoplay.disableOnInteraction?s.autoplay.pause(t):d())})),r("sliderFirstMove",(()=>{s.autoplay.running&&(s.params.autoplay.disableOnInteraction?d():c())})),r("touchEnd",(()=>{s.params.cssMode&&s.autoplay.paused&&!s.params.autoplay.disableOnInteraction&&l()})),r("destroy",(()=>{s.$el.off("mouseenter",m),s.$el.off("mouseleave",f),s.autoplay.running&&d();a().removeEventListener("visibilitychange",u)})),Object.assign(s.autoplay,{pause:c,run:l,start:o,stop:d})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let i=!1,r=!1;function n(){const e=t.thumbs.swiper;if(!e||e.destroyed)return;const s=e.clickedIndex,a=e.clickedSlide;if(a&&d(a).hasClass(t.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let i;if(i=e.params.loop?parseInt(d(e.clickedSlide).attr("data-swiper-slide-index"),10):s,t.params.loop){let e=t.activeIndex;t.slides.eq(e).hasClass(t.params.slideDuplicateClass)&&(t.loopFix(),t._clientLeft=t.$wrapperEl[0].clientLeft,e=t.activeIndex);const s=t.slides.eq(e).prevAll(`[data-swiper-slide-index="${i}"]`).eq(0).index(),a=t.slides.eq(e).nextAll(`[data-swiper-slide-index="${i}"]`).eq(0).index();i=void 0===s?a:void 0===a?s:a-e<e-s?a:s}t.slideTo(i)}function l(){const{thumbs:e}=t.params;if(i)return!1;i=!0;const s=t.constructor;if(e.swiper instanceof s)t.thumbs.swiper=e.swiper,Object.assign(t.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(t.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1});else if(m(e.swiper)){const a=Object.assign({},e.swiper);Object.assign(a,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper=new s(a),r=!0}return t.thumbs.swiper.$el.addClass(t.params.thumbs.thumbsContainerClass),t.thumbs.swiper.on("tap",n),!0}function o(e){const s=t.thumbs.swiper;if(!s||s.destroyed)return;const a="auto"===s.params.slidesPerView?s.slidesPerViewDynamic():s.params.slidesPerView,i=t.params.thumbs.autoScrollOffset,r=i&&!s.params.loop;if(t.realIndex!==s.realIndex||r){let n,l,o=s.activeIndex;if(s.params.loop){s.slides.eq(o).hasClass(s.params.slideDuplicateClass)&&(s.loopFix(),s._clientLeft=s.$wrapperEl[0].clientLeft,o=s.activeIndex);const e=s.slides.eq(o).prevAll(`[data-swiper-slide-index="${t.realIndex}"]`).eq(0).index(),a=s.slides.eq(o).nextAll(`[data-swiper-slide-index="${t.realIndex}"]`).eq(0).index();n=void 0===e?a:void 0===a?e:a-o==o-e?s.params.slidesPerGroup>1?a:o:a-o<o-e?a:e,l=t.activeIndex>t.previousIndex?"next":"prev"}else n=t.realIndex,l=n>t.previousIndex?"next":"prev";r&&(n+="next"===l?i:-1*i),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(n)<0&&(s.params.centeredSlides?n=n>o?n-Math.floor(a/2)+1:n+Math.floor(a/2)-1:n>o&&s.params.slidesPerGroup,s.slideTo(n,e?0:void 0))}let n=1;const l=t.params.thumbs.slideThumbActiveClass;if(t.params.slidesPerView>1&&!t.params.centeredSlides&&(n=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(n=1),n=Math.floor(n),s.slides.removeClass(l),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e<n;e+=1)s.$wrapperEl.children(`[data-swiper-slide-index="${t.realIndex+e}"]`).addClass(l);else for(let e=0;e<n;e+=1)s.slides.eq(t.realIndex+e).addClass(l)}t.thumbs={swiper:null},a("beforeInit",(()=>{const{thumbs:e}=t.params;e&&e.swiper&&(l(),o(!0))})),a("slideChange update resize observerUpdate",(()=>{o()})),a("setTransition",((e,s)=>{const a=t.thumbs.swiper;a&&!a.destroyed&&a.setTransition(s)})),a("beforeDestroy",(()=>{const e=t.thumbs.swiper;e&&!e.destroyed&&r&&e.destroy()})),Object.assign(t.thumbs,{init:l,update:o})},function(e){let{swiper:t,extendParams:s,emit:a,once:i}=e;s({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){const{touchEventsData:e,touches:s}=t;0===e.velocities.length&&e.velocities.push({position:s[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:s[t.isHorizontal()?"currentX":"currentY"],time:u()})},onTouchEnd:function(e){let{currentPos:s}=e;const{params:r,$wrapperEl:n,rtlTranslate:l,snapGrid:o,touchEventsData:d}=t,c=u()-d.touchStartTime;if(s<-t.minTranslate())t.slideTo(t.activeIndex);else if(s>-t.maxTranslate())t.slides.length<o.length?t.slideTo(o.length-1):t.slideTo(t.slides.length-1);else{if(r.freeMode.momentum){if(d.velocities.length>1){const e=d.velocities.pop(),s=d.velocities.pop(),a=e.position-s.position,i=e.time-s.time;t.velocity=a/i,t.velocity/=2,Math.abs(t.velocity)<r.freeMode.minimumVelocity&&(t.velocity=0),(i>150||u()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeMode.momentumVelocityRatio,d.velocities.length=0;let e=1e3*r.freeMode.momentumRatio;const s=t.velocity*e;let c=t.translate+s;l&&(c=-c);let p,h=!1;const m=20*Math.abs(t.velocity)*r.freeMode.momentumBounceRatio;let f;if(c<t.maxTranslate())r.freeMode.momentumBounce?(c+t.maxTranslate()<-m&&(c=t.maxTranslate()-m),p=t.maxTranslate(),h=!0,d.allowMomentumBounce=!0):c=t.maxTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(c>t.minTranslate())r.freeMode.momentumBounce?(c-t.minTranslate()>m&&(c=t.minTranslate()+m),p=t.minTranslate(),h=!0,d.allowMomentumBounce=!0):c=t.minTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(r.freeMode.sticky){let e;for(let t=0;t<o.length;t+=1)if(o[t]>-c){e=t;break}c=Math.abs(o[e]-c)<Math.abs(o[e-1]-c)||"next"===t.swipeDirection?o[e]:o[e-1],c=-c}if(f&&i("transitionEnd",(()=>{t.loopFix()})),0!==t.velocity){if(e=l?Math.abs((-c-t.translate)/t.velocity):Math.abs((c-t.translate)/t.velocity),r.freeMode.sticky){const s=Math.abs((l?-c:c)-t.translate),a=t.slidesSizesGrid[t.activeIndex];e=s<a?r.speed:s<2*a?1.5*r.speed:2.5*r.speed}}else if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode.momentumBounce&&h?(t.updateProgress(p),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating=!0,n.transitionEnd((()=>{t&&!t.destroyed&&d.allowMomentumBounce&&(a("momentumBounce"),t.setTransition(r.speed),setTimeout((()=>{t.setTranslate(p),n.transitionEnd((()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(a("_freeModeNoMomentumRelease"),t.updateProgress(c),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,n.transitionEnd((()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(c),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode&&a("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||c>=r.longSwipesMs)&&(t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})},function(e){let t,s,a,{swiper:i,extendParams:r}=e;r({grid:{rows:1,fill:"column"}}),i.grid={initSlides:e=>{const{slidesPerView:r}=i.params,{rows:n,fill:l}=i.params.grid;s=t/n,a=Math.floor(e/n),t=Math.floor(e/n)===e/n?e:Math.ceil(e/n)*n,"auto"!==r&&"row"===l&&(t=Math.max(t,r*n))},updateSlide:(e,r,n,l)=>{const{slidesPerGroup:o,spaceBetween:d}=i.params,{rows:c,fill:p}=i.params.grid;let u,h,m;if("row"===p&&o>1){const s=Math.floor(e/(o*c)),a=e-c*o*s,i=0===s?o:Math.min(Math.ceil((n-s*c*o)/c),o);m=Math.floor(a/i),h=a-m*i+s*o,u=h+m*t/c,r.css({"-webkit-order":u,order:u})}else"column"===p?(h=Math.floor(e/c),m=e-h*c,(h>a||h===a&&m===c-1)&&(m+=1,m>=c&&(m=0,h+=1))):(m=Math.floor(e/s),h=e-m*s);r.css(l("margin-top"),0!==m?d&&`${d}px`:"")},updateWrapperSize:(e,s,a)=>{const{spaceBetween:r,centeredSlides:n,roundLengths:l}=i.params,{rows:o}=i.params.grid;if(i.virtualSize=(e+r)*t,i.virtualSize=Math.ceil(i.virtualSize/o)-r,i.$wrapperEl.css({[a("width")]:`${i.virtualSize+r}px`}),n){s.splice(0,s.length);const e=[];for(let t=0;t<s.length;t+=1){let a=s[t];l&&(a=Math.floor(a)),s[t]<i.virtualSize+s[0]&&e.push(a)}s.push(...e)}}}},function(e){let{swiper:t}=e;Object.assign(t,{appendSlide:K.bind(t),prependSlide:Z.bind(t),addSlide:Q.bind(t),removeSlide:J.bind(t),removeAllSlides:ee.bind(t)})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({fadeEffect:{crossFade:!1,transformEl:null}}),te({effect:"fade",swiper:t,on:a,setTranslate:()=>{const{slides:e}=t,s=t.params.fadeEffect;for(let a=0;a<e.length;a+=1){const e=t.slides.eq(a);let i=-e[0].swiperSlideOffset;t.params.virtualTranslate||(i-=t.translate);let r=0;t.isHorizontal()||(r=i,i=0);const n=t.params.fadeEffect.crossFade?Math.max(1-Math.abs(e[0].progress),0):1+Math.min(Math.max(e[0].progress,-1),0);se(s,e).css({opacity:n}).transform(`translate3d(${i}px, ${r}px, 0px)`)}},setTransition:e=>{const{transformEl:s}=t.params.fadeEffect;(s?t.slides.find(s):t.slides).transition(e),ae({swiper:t,duration:e,transformEl:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const i=(e,t,s)=>{let a=s?e.find(".swiper-slide-shadow-left"):e.find(".swiper-slide-shadow-top"),i=s?e.find(".swiper-slide-shadow-right"):e.find(".swiper-slide-shadow-bottom");0===a.length&&(a=d(`<div class="swiper-slide-shadow-${s?"left":"top"}"></div>`),e.append(a)),0===i.length&&(i=d(`<div class="swiper-slide-shadow-${s?"right":"bottom"}"></div>`),e.append(i)),a.length&&(a[0].style.opacity=Math.max(-t,0)),i.length&&(i[0].style.opacity=Math.max(t,0))};te({effect:"cube",swiper:t,on:a,setTranslate:()=>{const{$el:e,$wrapperEl:s,slides:a,width:r,height:n,rtlTranslate:l,size:o,browser:c}=t,p=t.params.cubeEffect,u=t.isHorizontal(),h=t.virtual&&t.params.virtual.enabled;let m,f=0;p.shadow&&(u?(m=s.find(".swiper-cube-shadow"),0===m.length&&(m=d('<div class="swiper-cube-shadow"></div>'),s.append(m)),m.css({height:`${r}px`})):(m=e.find(".swiper-cube-shadow"),0===m.length&&(m=d('<div class="swiper-cube-shadow"></div>'),e.append(m))));for(let e=0;e<a.length;e+=1){const t=a.eq(e);let s=e;h&&(s=parseInt(t.attr("data-swiper-slide-index"),10));let r=90*s,n=Math.floor(r/360);l&&(r=-r,n=Math.floor(-r/360));const d=Math.max(Math.min(t[0].progress,1),-1);let c=0,m=0,g=0;s%4==0?(c=4*-n*o,g=0):(s-1)%4==0?(c=0,g=4*-n*o):(s-2)%4==0?(c=o+4*n*o,g=o):(s-3)%4==0&&(c=-o,g=3*o+4*o*n),l&&(c=-c),u||(m=c,c=0);const v=`rotateX(${u?0:-r}deg) rotateY(${u?r:0}deg) translate3d(${c}px, ${m}px, ${g}px)`;d<=1&&d>-1&&(f=90*s+90*d,l&&(f=90*-s-90*d)),t.transform(v),p.slideShadows&&i(t,d,u)}if(s.css({"-webkit-transform-origin":`50% 50% -${o/2}px`,"transform-origin":`50% 50% -${o/2}px`}),p.shadow)if(u)m.transform(`translate3d(0px, ${r/2+p.shadowOffset}px, ${-r/2}px) rotateX(90deg) rotateZ(0deg) scale(${p.shadowScale})`);else{const e=Math.abs(f)-90*Math.floor(Math.abs(f)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=p.shadowScale,a=p.shadowScale/t,i=p.shadowOffset;m.transform(`scale3d(${s}, 1, ${a}) translate3d(0px, ${n/2+i}px, ${-n/2/a}px) rotateX(-90deg)`)}const g=c.isSafari||c.isWebView?-o/2:0;s.transform(`translate3d(0px,0,${g}px) rotateX(${t.isHorizontal()?0:f}deg) rotateY(${t.isHorizontal()?-f:0}deg)`),s[0].style.setProperty("--swiper-cube-translate-z",`${g}px`)},setTransition:e=>{const{$el:s,slides:a}=t;a.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),t.params.cubeEffect.shadow&&!t.isHorizontal()&&s.find(".swiper-cube-shadow").transition(e)},recreateShadows:()=>{const e=t.isHorizontal();t.slides.each((t=>{const s=Math.max(Math.min(t.progress,1),-1);i(d(t),s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0,transformEl:null}});const i=(e,s,a)=>{let i=t.isHorizontal()?e.find(".swiper-slide-shadow-left"):e.find(".swiper-slide-shadow-top"),r=t.isHorizontal()?e.find(".swiper-slide-shadow-right"):e.find(".swiper-slide-shadow-bottom");0===i.length&&(i=ie(a,e,t.isHorizontal()?"left":"top")),0===r.length&&(r=ie(a,e,t.isHorizontal()?"right":"bottom")),i.length&&(i[0].style.opacity=Math.max(-s,0)),r.length&&(r[0].style.opacity=Math.max(s,0))};te({effect:"flip",swiper:t,on:a,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,a=t.params.flipEffect;for(let r=0;r<e.length;r+=1){const n=e.eq(r);let l=n[0].progress;t.params.flipEffect.limitRotation&&(l=Math.max(Math.min(n[0].progress,1),-1));const o=n[0].swiperSlideOffset;let d=-180*l,c=0,p=t.params.cssMode?-o-t.translate:-o,u=0;t.isHorizontal()?s&&(d=-d):(u=p,p=0,c=-d,d=0),n[0].style.zIndex=-Math.abs(Math.round(l))+e.length,a.slideShadows&&i(n,l,a);const h=`translate3d(${p}px, ${u}px, 0px) rotateX(${c}deg) rotateY(${d}deg)`;se(a,n).transform(h)}},setTransition:e=>{const{transformEl:s}=t.params.flipEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),ae({swiper:t,duration:e,transformEl:s})},recreateShadows:()=>{const e=t.params.flipEffect;t.slides.each((s=>{const a=d(s);let r=a[0].progress;t.params.flipEffect.limitRotation&&(r=Math.max(Math.min(s.progress,1),-1)),i(a,r,e)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0,transformEl:null}}),te({effect:"coverflow",swiper:t,on:a,setTranslate:()=>{const{width:e,height:s,slides:a,slidesSizesGrid:i}=t,r=t.params.coverflowEffect,n=t.isHorizontal(),l=t.translate,o=n?e/2-l:s/2-l,d=n?r.rotate:-r.rotate,c=r.depth;for(let e=0,t=a.length;e<t;e+=1){const t=a.eq(e),s=i[e],l=(o-t[0].swiperSlideOffset-s/2)/s,p="function"==typeof r.modifier?r.modifier(l):l*r.modifier;let u=n?d*p:0,h=n?0:d*p,m=-c*Math.abs(p),f=r.stretch;"string"==typeof f&&-1!==f.indexOf("%")&&(f=parseFloat(r.stretch)/100*s);let g=n?0:f*p,v=n?f*p:0,w=1-(1-r.scale)*Math.abs(p);Math.abs(v)<.001&&(v=0),Math.abs(g)<.001&&(g=0),Math.abs(m)<.001&&(m=0),Math.abs(u)<.001&&(u=0),Math.abs(h)<.001&&(h=0),Math.abs(w)<.001&&(w=0);const b=`translate3d(${v}px,${g}px,${m}px) rotateX(${h}deg) rotateY(${u}deg) scale(${w})`;if(se(r,t).transform(b),t[0].style.zIndex=1-Math.abs(Math.round(p)),r.slideShadows){let e=n?t.find(".swiper-slide-shadow-left"):t.find(".swiper-slide-shadow-top"),s=n?t.find(".swiper-slide-shadow-right"):t.find(".swiper-slide-shadow-bottom");0===e.length&&(e=ie(r,t,n?"left":"top")),0===s.length&&(s=ie(r,t,n?"right":"bottom")),e.length&&(e[0].style.opacity=p>0?p:0),s.length&&(s[0].style.opacity=-p>0?-p:0)}}},setTransition:e=>{const{transformEl:s}=t.params.coverflowEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e)},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({creativeEffect:{transformEl:null,limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const i=e=>"string"==typeof e?e:`${e}px`;te({effect:"creative",swiper:t,on:a,setTranslate:()=>{const{slides:e,$wrapperEl:s,slidesSizesGrid:a}=t,r=t.params.creativeEffect,{progressMultiplier:n}=r,l=t.params.centeredSlides;if(l){const e=a[0]/2-t.params.slidesOffsetBefore||0;s.transform(`translateX(calc(50% - ${e}px))`)}for(let s=0;s<e.length;s+=1){const a=e.eq(s),o=a[0].progress,d=Math.min(Math.max(a[0].progress,-r.limitProgress),r.limitProgress);let c=d;l||(c=Math.min(Math.max(a[0].originalProgress,-r.limitProgress),r.limitProgress));const p=a[0].swiperSlideOffset,u=[t.params.cssMode?-p-t.translate:-p,0,0],h=[0,0,0];let m=!1;t.isHorizontal()||(u[1]=u[0],u[0]=0);let f={translate:[0,0,0],rotate:[0,0,0],scale:1,opacity:1};d<0?(f=r.next,m=!0):d>0&&(f=r.prev,m=!0),u.forEach(((e,t)=>{u[t]=`calc(${e}px + (${i(f.translate[t])} * ${Math.abs(d*n)}))`})),h.forEach(((e,t)=>{h[t]=f.rotate[t]*Math.abs(d*n)})),a[0].style.zIndex=-Math.abs(Math.round(o))+e.length;const g=u.join(", "),v=`rotateX(${h[0]}deg) rotateY(${h[1]}deg) rotateZ(${h[2]}deg)`,w=c<0?`scale(${1+(1-f.scale)*c*n})`:`scale(${1-(1-f.scale)*c*n})`,b=c<0?1+(1-f.opacity)*c*n:1-(1-f.opacity)*c*n,x=`translate3d(${g}) ${v} ${w}`;if(m&&f.shadow||!m){let e=a.children(".swiper-slide-shadow");if(0===e.length&&f.shadow&&(e=ie(r,a)),e.length){const t=r.shadowPerProgress?d*(1/r.limitProgress):d;e[0].style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const y=se(r,a);y.transform(x).css({opacity:b}),f.origin&&y.css("transform-origin",f.origin)}},setTransition:e=>{const{transformEl:s}=t.params.creativeEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow").transition(e),ae({swiper:t,duration:e,transformEl:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cardsEffect:{slideShadows:!0,transformEl:null,rotate:!0}}),te({effect:"cards",swiper:t,on:a,setTranslate:()=>{const{slides:e,activeIndex:s}=t,a=t.params.cardsEffect,{startTranslate:i,isTouched:r}=t.touchEventsData,n=t.translate;for(let l=0;l<e.length;l+=1){const o=e.eq(l),d=o[0].progress,c=Math.min(Math.max(d,-4),4);let p=o[0].swiperSlideOffset;t.params.centeredSlides&&!t.params.cssMode&&t.$wrapperEl.transform(`translateX(${t.minTranslate()}px)`),t.params.centeredSlides&&t.params.cssMode&&(p-=e[0].swiperSlideOffset);let u=t.params.cssMode?-p-t.translate:-p,h=0;const m=-100*Math.abs(c);let f=1,g=-2*c,v=8-.75*Math.abs(c);const w=t.virtual&&t.params.virtual.enabled?t.virtual.from+l:l,b=(w===s||w===s-1)&&c>0&&c<1&&(r||t.params.cssMode)&&n<i,x=(w===s||w===s+1)&&c<0&&c>-1&&(r||t.params.cssMode)&&n>i;if(b||x){const e=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;g+=-28*c*e,f+=-.5*e,v+=96*e,h=-25*e*Math.abs(c)+"%"}if(u=c<0?`calc(${u}px + (${v*Math.abs(c)}%))`:c>0?`calc(${u}px + (-${v*Math.abs(c)}%))`:`${u}px`,!t.isHorizontal()){const e=h;h=u,u=e}const y=c<0?""+(1+(1-f)*c):""+(1-(1-f)*c),E=`\n translate3d(${u}, ${h}, ${m}px)\n rotateZ(${a.rotate?g:0}deg)\n scale(${y})\n `;if(a.slideShadows){let e=o.find(".swiper-slide-shadow");0===e.length&&(e=ie(a,o)),e.length&&(e[0].style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}o[0].style.zIndex=-Math.abs(Math.round(d))+e.length;se(a,o).transform(E)}},setTransition:e=>{const{transformEl:s}=t.params.cardsEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow").transition(e),ae({swiper:t,duration:e,transformEl:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}];return V.use(re),V}));
</script>
<style id="swiper-js-css">
/**
* Swiper 8.2.4
* Most modern mobile touch slider and framework with hardware accelerated transitions
* https://swiperjs.com
*
* Copyright 2014-2022 Vladimir Kharlampidi
*
* Released under the MIT License
*
* Released on: June 13, 2022
*/
@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;box-sizing:content-box}.swiper-android .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-pointer-events{touch-action:pan-y}.swiper-pointer-events.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d,.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide,.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-horizontal.swiper-css-mode>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-vertical.swiper-css-mode>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:10px;right:auto}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:10px;left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:50%;background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:10px;top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-progressbar{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:4px;height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-next+.swiper-slide,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}
</style>
<script>
$(document).ready(function() {
var utm_overrides = {};
utm_overrides.utm_source = '';
utm_overrides.utm_medium = '';
utm_overrides.utm_content = '';
utm_overrides.utm_campaign = '';
window.appendUTM = function(url, utm_content, UTMnone) {
if (UTMnone) {
return url;
}
if (url.includes('mailto:')) {
return url;
}
url = new URL(url);
var hasUTM_source = url.searchParams.has('utm_source');
var hasUTM_medium = url.searchParams.has('utm_medium');
var hasUTM_content = url.searchParams.has('utm_content');
var hasUTM_campaign = url.searchParams.has('utm_campaign');
if (hasUTM_source && hasUTM_medium && hasUTM_content && hasUTM_campaign) {
return url.href;
}
var newURL = '';
newURL = url.origin;
newURL += url.pathname;
if (url.search) {
newURL += url.search;
}
if (!hasUTM_source) {
var source = 'the+new+stack';
if (utm_overrides.utm_source) {
source = utm_overrides.utm_source;
}
if (newURL.includes('?')) {
newURL += '&utm_source=' + source;
} else {
newURL += '?utm_source=' + source;
}
}
if (!hasUTM_medium) {
var medium = 'referral';
if (utm_overrides.utm_medium) {
medium = utm_overrides.utm_medium;
}
if (newURL.includes('?')) {
newURL += '&utm_medium=' + medium;
} else {
newURL += '?utm_medium=' + medium;
}
}
if (!hasUTM_content && utm_content) {
var content = utm_content;
if (utm_overrides.utm_content) {
content = utm_overrides.utm_content;
}
if (newURL.includes('?')) {
newURL += '&utm_content=' + content;
} else {
newURL += '?utm_content=' + content;
}
}
if (!hasUTM_campaign) {
var campaign = 'tns+platform';
if (utm_overrides.utm_campaign) {
campaign = utm_overrides.utm_campaign;
}
if (newURL.includes('?')) {
newURL += '&utm_campaign=' + campaign
} else {
newURL += '?utm_campaign=' + campaign
}
}
if (url.hash) {
newURL += url.hash;
}
return newURL;
}
});
</script>
<link rel="icon" type="image/png" href="https://thenewstack.io/favicon-96x96.png?v=20260605" sizes="96x96" />
<link rel="icon" type="image/svg+xml" href="https://thenewstack.io/favicon.svg?v=20260605" />
<link rel="shortcut icon" href="https://thenewstack.io/favicon.ico?v=20260605" />
<link rel="apple-touch-icon" sizes="180x180" href="https://thenewstack.io/apple-touch-icon.png?v=20260605" />
<meta name="apple-mobile-web-app-title" content="TNS" />
<link rel="manifest" href="https://thenewstack.io/site.webmanifest?v=20260605" />
<!-- Google Ad Manager -->
<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
<!-- Cloudflare Turnstile -->
<!-- <script defer src="https://challenges.cloudflare.com/turnstile/v0/api.js?onload=onloadTurnstileCallback"></script> -->
<script defer src="https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit"></script>
<!-- RSS Feed Meta -->
<link rel="alternate" type="application/rss+xml" href="https://thenewstack.io/blog/feed/">
<!-- PhotoSwipe -->
<script>
/*!
* PhotoSwipe 5.4.2 - https://photoswipe.com
* (c) 2023 Dmytro Semenov
*/
!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(t="undefined"!=typeof globalThis?globalThis:t||self).PhotoSwipe=i()}(this,(function(){"use strict";function t(t,i,s){const h=document.createElement(i);return t&&(h.className=t),s&&s.appendChild(h),h}function i(t,i){return t.x=i.x,t.y=i.y,void 0!==i.id&&(t.id=i.id),t}function s(t){t.x=Math.round(t.x),t.y=Math.round(t.y)}function h(t,i){const s=Math.abs(t.x-i.x),h=Math.abs(t.y-i.y);return Math.sqrt(s*s+h*h)}function e(t,i){return t.x===i.x&&t.y===i.y}function n(t,i,s){return Math.min(Math.max(t,i),s)}function o(t,i,s){let h=`translate3d(${t}px,${i||0}px,0)`;return void 0!==s&&(h+=` scale3d(${s},${s},1)`),h}function r(t,i,s,h){t.style.transform=o(i,s,h)}function a(t,i,s,h){t.style.transition=i?`${i} ${s}ms ${h||"cubic-bezier(.4,0,.22,1)"}`:"none"}function l(t,i,s){t.style.width="number"==typeof i?`${i}px`:i,t.style.height="number"==typeof s?`${s}px`:s}const c="idle",d="loading",u="loaded",p="error";function m(){return!(!navigator.vendor||!navigator.vendor.match(/apple/i))}let v=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>{v=!0}}))}catch(t){}class f{constructor(){this.t=[]}add(t,i,s,h){this.i(t,i,s,h)}remove(t,i,s,h){this.i(t,i,s,h,!0)}removeAll(){this.t.forEach((t=>{this.i(t.target,t.type,t.listener,t.passive,!0,!0)})),this.t=[]}i(t,i,s,h,e,n){if(!t)return;const o=e?"removeEventListener":"addEventListener";i.split(" ").forEach((i=>{if(i){n||(e?this.t=this.t.filter((h=>h.type!==i||h.listener!==s||h.target!==t)):this.t.push({target:t,type:i,listener:s,passive:h}));const r=!!v&&{passive:h||!1};t[o](i,s,r)}}))}}function w(t,i){if(t.getViewportSizeFn){const s=t.getViewportSizeFn(t,i);if(s)return s}return{x:document.documentElement.clientWidth,y:window.innerHeight}}function g(t,i,s,h,e){let n=0;if(i.paddingFn)n=i.paddingFn(s,h,e)[t];else if(i.padding)n=i.padding[t];else{const s="padding"+t[0].toUpperCase()+t.slice(1);i[s]&&(n=i[s])}return Number(n)||0}function y(t,i,s,h){return{x:i.x-g("left",t,i,s,h)-g("right",t,i,s,h),y:i.y-g("top",t,i,s,h)-g("bottom",t,i,s,h)}}class _{constructor(t){this.slide=t,this.currZoomLevel=1,this.center={x:0,y:0},this.max={x:0,y:0},this.min={x:0,y:0}}update(t){this.currZoomLevel=t,this.slide.width?(this.o("x"),this.o("y"),this.slide.pswp.dispatch("calcBounds",{slide:this.slide})):this.reset()}o(t){const{pswp:i}=this.slide,s=this.slide["x"===t?"width":"height"]*this.currZoomLevel,h=g("x"===t?"left":"top",i.options,i.viewportSize,this.slide.data,this.slide.index),e=this.slide.panAreaSize[t];this.center[t]=Math.round((e-s)/2)+h,this.max[t]=s>e?Math.round(e-s)+h:this.center[t],this.min[t]=s>e?h:this.center[t]}reset(){this.center.x=0,this.center.y=0,this.max.x=0,this.max.y=0,this.min.x=0,this.min.y=0}correctPan(t,i){return n(i,this.max[t],this.min[t])}}class x{constructor(t,i,s,h){this.pswp=h,this.options=t,this.itemData=i,this.index=s,this.panAreaSize=null,this.elementSize=null,this.fit=1,this.fill=1,this.vFill=1,this.initial=1,this.secondary=1,this.max=1,this.min=1}update(t,i,s){const h={x:t,y:i};this.elementSize=h,this.panAreaSize=s;const e=s.x/h.x,n=s.y/h.y;this.fit=Math.min(1,e<n?e:n),this.fill=Math.min(1,e>n?e:n),this.vFill=Math.min(1,n),this.initial=this.l(),this.secondary=this.u(),this.max=Math.max(this.initial,this.secondary,this.p()),this.min=Math.min(this.fit,this.initial,this.secondary),this.pswp&&this.pswp.dispatch("zoomLevelsUpdate",{zoomLevels:this,slideData:this.itemData})}m(t){const i=t+"ZoomLevel",s=this.options[i];if(s)return"function"==typeof s?s(this):"fill"===s?this.fill:"fit"===s?this.fit:Number(s)}u(){let t=this.m("secondary");return t||(t=Math.min(1,3*this.fit),this.elementSize&&t*this.elementSize.x>4e3&&(t=4e3/this.elementSize.x),t)}l(){return this.m("initial")||this.fit}p(){return this.m("max")||Math.max(1,4*this.fit)}}class b{constructor(i,s,h){this.data=i,this.index=s,this.pswp=h,this.isActive=s===h.currIndex,this.currentResolution=0,this.panAreaSize={x:0,y:0},this.pan={x:0,y:0},this.isFirstSlide=this.isActive&&!h.opener.isOpen,this.zoomLevels=new x(h.options,i,s,h),this.pswp.dispatch("gettingData",{slide:this,data:this.data,index:s}),this.content=this.pswp.contentLoader.getContentBySlide(this),this.container=t("pswp__zoom-wrap","div"),this.holderElement=null,this.currZoomLevel=1,this.width=this.content.width,this.height=this.content.height,this.heavyAppended=!1,this.bounds=new _(this),this.prevDisplayedWidth=-1,this.prevDisplayedHeight=-1,this.pswp.dispatch("slideInit",{slide:this})}setIsActive(t){t&&!this.isActive?this.activate():!t&&this.isActive&&this.deactivate()}append(t){this.holderElement=t,this.container.style.transformOrigin="0 0",this.data&&(this.calculateSize(),this.load(),this.updateContentSize(),this.appendHeavy(),this.holderElement.appendChild(this.container),this.zoomAndPanToInitial(),this.pswp.dispatch("firstZoomPan",{slide:this}),this.applyCurrentZoomPan(),this.pswp.dispatch("afterSetContent",{slide:this}),this.isActive&&this.activate())}load(){this.content.load(!1),this.pswp.dispatch("slideLoad",{slide:this})}appendHeavy(){const{pswp:t}=this;!this.heavyAppended&&t.opener.isOpen&&!t.mainScroll.isShifted()&&(this.isActive,1)&&(this.pswp.dispatch("appendHeavy",{slide:this}).defaultPrevented||(this.heavyAppended=!0,this.content.append(),this.pswp.dispatch("appendHeavyContent",{slide:this})))}activate(){this.isActive=!0,this.appendHeavy(),this.content.activate(),this.pswp.dispatch("slideActivate",{slide:this})}deactivate(){this.isActive=!1,this.content.deactivate(),this.currZoomLevel!==this.zoomLevels.initial&&this.calculateSize(),this.currentResolution=0,this.zoomAndPanToInitial(),this.applyCurrentZoomPan(),this.updateContentSize(),this.pswp.dispatch("slideDeactivate",{slide:this})}destroy(){this.content.hasSlide=!1,this.content.remove(),this.container.remove(),this.pswp.dispatch("slideDestroy",{slide:this})}resize(){this.currZoomLevel!==this.zoomLevels.initial&&this.isActive?(this.calculateSize(),this.bounds.update(this.currZoomLevel),this.panTo(this.pan.x,this.pan.y)):(this.calculateSize(),this.currentResolution=0,this.zoomAndPanToInitial(),this.applyCurrentZoomPan(),this.updateContentSize())}updateContentSize(t){const i=this.currentResolution||this.zoomLevels.initial;if(!i)return;const s=Math.round(this.width*i)||this.pswp.viewportSize.x,h=Math.round(this.height*i)||this.pswp.viewportSize.y;(this.sizeChanged(s,h)||t)&&this.content.setDisplayedSize(s,h)}sizeChanged(t,i){return(t!==this.prevDisplayedWidth||i!==this.prevDisplayedHeight)&&(this.prevDisplayedWidth=t,this.prevDisplayedHeight=i,!0)}getPlaceholderElement(){var t;return null===(t=this.content.placeholder)||void 0===t?void 0:t.element}zoomTo(t,i,h,e){const{pswp:o}=this;if(!this.isZoomable()||o.mainScroll.isShifted())return;o.dispatch("beforeZoomTo",{destZoomLevel:t,centerPoint:i,transitionDuration:h}),o.animations.stopAllPan();const r=this.currZoomLevel;e||(t=n(t,this.zoomLevels.min,this.zoomLevels.max)),this.setZoomLevel(t),this.pan.x=this.calculateZoomToPanOffset("x",i,r),this.pan.y=this.calculateZoomToPanOffset("y",i,r),s(this.pan);const a=()=>{this.v(t),this.applyCurrentZoomPan()};h?o.animations.startTransition({isPan:!0,name:"zoomTo",target:this.container,transform:this.getCurrentTransform(),onComplete:a,duration:h,easing:o.options.easing}):a()}toggleZoom(t){this.zoomTo(this.currZoomLevel===this.zoomLevels.initial?this.zoomLevels.secondary:this.zoomLevels.initial,t,this.pswp.options.zoomAnimationDuration)}setZoomLevel(t){this.currZoomLevel=t,this.bounds.update(this.currZoomLevel)}calculateZoomToPanOffset(t,i,s){if(0===this.bounds.max[t]-this.bounds.min[t])return this.bounds.center[t];i||(i=this.pswp.getViewportCenterPoint()),s||(s=this.zoomLevels.initial);const h=this.currZoomLevel/s;return this.bounds.correctPan(t,(this.pan[t]-i[t])*h+i[t])}panTo(t,i){this.pan.x=this.bounds.correctPan("x",t),this.pan.y=this.bounds.correctPan("y",i),this.applyCurrentZoomPan()}isPannable(){return Boolean(this.width)&&this.currZoomLevel>this.zoomLevels.fit}isZoomable(){return Boolean(this.width)&&this.content.isZoomable()}applyCurrentZoomPan(){this.g(this.pan.x,this.pan.y,this.currZoomLevel),this===this.pswp.currSlide&&this.pswp.dispatch("zoomPanUpdate",{slide:this})}zoomAndPanToInitial(){this.currZoomLevel=this.zoomLevels.initial,this.bounds.update(this.currZoomLevel),i(this.pan,this.bounds.center),this.pswp.dispatch("initialZoomPan",{slide:this})}g(t,i,s){s/=this.currentResolution||this.zoomLevels.initial,r(this.container,t,i,s)}calculateSize(){const{pswp:t}=this;i(this.panAreaSize,y(t.options,t.viewportSize,this.data,this.index)),this.zoomLevels.update(this.width,this.height,this.panAreaSize),t.dispatch("calcSlideSize",{slide:this})}getCurrentTransform(){const t=this.currZoomLevel/(this.currentResolution||this.zoomLevels.initial);return o(this.pan.x,this.pan.y,t)}v(t){t!==this.currentResolution&&(this.currentResolution=t,this.updateContentSize(),this.pswp.dispatch("resolutionChanged"))}}class S{constructor(t){this.gestures=t,this.pswp=t.pswp,this.startPan={x:0,y:0}}start(){this.pswp.currSlide&&i(this.startPan,this.pswp.currSlide.pan),this.pswp.animations.stopAll()}change(){const{p1:t,prevP1:i,dragAxis:h}=this.gestures,{currSlide:e}=this.pswp;if("y"===h&&this.pswp.options.closeOnVerticalDrag&&e&&e.currZoomLevel<=e.zoomLevels.fit&&!this.gestures.isMultitouch){const s=e.pan.y+(t.y-i.y);if(!this.pswp.dispatch("verticalDrag",{panY:s}).defaultPrevented){this._("y",s,.6);const t=1-Math.abs(this.S(e.pan.y));this.pswp.applyBgOpacity(t),e.applyCurrentZoomPan()}}else{this.M("x")||(this.M("y"),e&&(s(e.pan),e.applyCurrentZoomPan()))}}end(){const{velocity:t}=this.gestures,{mainScroll:i,currSlide:s}=this.pswp;let h=0;if(this.pswp.animations.stopAll(),i.isShifted()){const s=(i.x-i.getCurrSlideX())/this.pswp.viewportSize.x;t.x<-.5&&s<0||t.x<.1&&s<-.5?(h=1,t.x=Math.min(t.x,0)):(t.x>.5&&s>0||t.x>-.1&&s>.5)&&(h=-1,t.x=Math.max(t.x,0)),i.moveIndexBy(h,!0,t.x)}s&&s.currZoomLevel>s.zoomLevels.max||this.gestures.isMultitouch?this.gestures.zoomLevels.correctZoomPan(!0):(this.P("x"),this.P("y"))}P(t){const{velocity:i}=this.gestures,{currSlide:s}=this.pswp;if(!s)return;const{pan:h,bounds:e}=s,o=h[t],r=this.pswp.bgOpacity<1&&"y"===t,a=o+function(t,i){return t*i/(1-i)}(i[t],.995);if(r){const t=this.S(o),i=this.S(a);if(t<0&&i<-.4||t>0&&i>.4)return void this.pswp.close()}const l=e.correctPan(t,a);if(o===l)return;const c=l===a?1:.82,d=this.pswp.bgOpacity,u=l-o;this.pswp.animations.startSpring({name:"panGesture"+t,isPan:!0,start:o,end:l,velocity:i[t],dampingRatio:c,onUpdate:i=>{if(r&&this.pswp.bgOpacity<1){const t=1-(l-i)/u;this.pswp.applyBgOpacity(n(d+(1-d)*t,0,1))}h[t]=Math.floor(i),s.applyCurrentZoomPan()}})}M(t){const{p1:i,dragAxis:s,prevP1:h,isMultitouch:e}=this.gestures,{currSlide:n,mainScroll:o}=this.pswp,r=i[t]-h[t],a=o.x+r;if(!r||!n)return!1;if("x"===t&&!n.isPannable()&&!e)return o.moveTo(a,!0),!0;const{bounds:l}=n,c=n.pan[t]+r;if(this.pswp.options.allowPanToNext&&"x"===s&&"x"===t&&!e){const i=o.getCurrSlideX(),s=o.x-i,h=r>0,e=!h;if(c>l.min[t]&&h){if(l.min[t]<=this.startPan[t])return o.moveTo(a,!0),!0;this._(t,c)}else if(c<l.max[t]&&e){if(this.startPan[t]<=l.max[t])return o.moveTo(a,!0),!0;this._(t,c)}else if(0!==s){if(s>0)return o.moveTo(Math.max(a,i),!0),!0;if(s<0)return o.moveTo(Math.min(a,i),!0),!0}else this._(t,c)}else"y"===t&&(o.isShifted()||l.min.y===l.max.y)||this._(t,c);return!1}S(t){var i,s;return(t-(null!==(i=null===(s=this.pswp.currSlide)||void 0===s?void 0:s.bounds.center.y)&&void 0!==i?i:0))/(this.pswp.viewportSize.y/3)}_(t,i,s){const{currSlide:h}=this.pswp;if(!h)return;const{pan:e,bounds:n}=h;if(n.correctPan(t,i)!==i||s){const h=Math.round(i-e[t]);e[t]+=h*(s||.35)}else e[t]=i}}function z(t,i,s){return t.x=(i.x+s.x)/2,t.y=(i.y+s.y)/2,t}class M{constructor(t){this.gestures=t,this.C={x:0,y:0},this.T={x:0,y:0},this.A={x:0,y:0},this.D=!1,this.I=1}start(){const{currSlide:t}=this.gestures.pswp;t&&(this.I=t.currZoomLevel,i(this.C,t.pan)),this.gestures.pswp.animations.stopAllPan(),this.D=!1}change(){const{p1:t,startP1:i,p2:s,startP2:e,pswp:n}=this.gestures,{currSlide:o}=n;if(!o)return;const r=o.zoomLevels.min,a=o.zoomLevels.max;if(!o.isZoomable()||n.mainScroll.isShifted())return;z(this.T,i,e),z(this.A,t,s);let l=1/h(i,e)*h(t,s)*this.I;if(l>o.zoomLevels.initial+o.zoomLevels.initial/15&&(this.D=!0),l<r)if(n.options.pinchToClose&&!this.D&&this.I<=o.zoomLevels.initial){const t=1-(r-l)/(r/1.2);n.dispatch("pinchClose",{bgOpacity:t}).defaultPrevented||n.applyBgOpacity(t)}else l=r-.15*(r-l);else l>a&&(l=a+.05*(l-a));o.pan.x=this.L("x",l),o.pan.y=this.L("y",l),o.setZoomLevel(l),o.applyCurrentZoomPan()}end(){const{pswp:t}=this.gestures,{currSlide:i}=t;(!i||i.currZoomLevel<i.zoomLevels.initial)&&!this.D&&t.options.pinchToClose?t.close():this.correctZoomPan()}L(t,i){const s=i/this.I;return this.A[t]-(this.T[t]-this.C[t])*s}correctZoomPan(t){const{pswp:s}=this.gestures,{currSlide:h}=s;if(null==h||!h.isZoomable())return;0===this.A.x&&(t=!0);const o=h.currZoomLevel;let r,a=!0;o<h.zoomLevels.initial?r=h.zoomLevels.initial:o>h.zoomLevels.max?r=h.zoomLevels.max:(a=!1,r=o);const l=s.bgOpacity,c=s.bgOpacity<1,d=i({x:0,y:0},h.pan);let u=i({x:0,y:0},d);t&&(this.A.x=0,this.A.y=0,this.T.x=0,this.T.y=0,this.I=o,i(this.C,d)),a&&(u={x:this.L("x",r),y:this.L("y",r)}),h.setZoomLevel(r),u={x:h.bounds.correctPan("x",u.x),y:h.bounds.correctPan("y",u.y)},h.setZoomLevel(o);const p=!e(u,d);if(!p&&!a&&!c)return h.v(r),void h.applyCurrentZoomPan();s.animations.stopAllPan(),s.animations.startSpring({isPan:!0,start:0,end:1e3,velocity:0,dampingRatio:1,naturalFrequency:40,onUpdate:t=>{if(t/=1e3,p||a){if(p&&(h.pan.x=d.x+(u.x-d.x)*t,h.pan.y=d.y+(u.y-d.y)*t),a){const i=o+(r-o)*t;h.setZoomLevel(i)}h.applyCurrentZoomPan()}c&&s.bgOpacity<1&&s.applyBgOpacity(n(l+(1-l)*t,0,1))},onComplete:()=>{h.v(r),h.applyCurrentZoomPan()}})}}function P(t){return!!t.target.closest(".pswp__container")}class C{constructor(t){this.gestures=t}click(t,i){const s=i.target.classList,h=s.contains("pswp__img"),e=s.contains("pswp__item")||s.contains("pswp__zoom-wrap");h?this.k("imageClick",t,i):e&&this.k("bgClick",t,i)}tap(t,i){P(i)&&this.k("tap",t,i)}doubleTap(t,i){P(i)&&this.k("doubleTap",t,i)}k(t,i,s){var h;const{pswp:e}=this.gestures,{currSlide:n}=e,o=t+"Action",r=e.options[o];if(!e.dispatch(o,{point:i,originalEvent:s}).defaultPrevented)if("function"!=typeof r)switch(r){case"close":case"next":e[r]();break;case"zoom":null==n||n.toggleZoom(i);break;case"zoom-or-close":null!=n&&n.isZoomable()&&n.zoomLevels.secondary!==n.zoomLevels.initial?n.toggleZoom(i):e.options.clickToCloseNonZoomable&&e.close();break;case"toggle-controls":null===(h=this.gestures.pswp.element)||void 0===h||h.classList.toggle("pswp--ui-visible")}else r.call(e,i,s)}}class T{constructor(t){this.pswp=t,this.dragAxis=null,this.p1={x:0,y:0},this.p2={x:0,y:0},this.prevP1={x:0,y:0},this.prevP2={x:0,y:0},this.startP1={x:0,y:0},this.startP2={x:0,y:0},this.velocity={x:0,y:0},this.Z={x:0,y:0},this.B={x:0,y:0},this.F=0,this.O=[],this.R="ontouchstart"in window,this.N=!!window.PointerEvent,this.supportsTouch=this.R||this.N&&navigator.maxTouchPoints>1,this.F=0,this.U=0,this.V=!1,this.isMultitouch=!1,this.isDragging=!1,this.isZooming=!1,this.raf=null,this.G=null,this.supportsTouch||(t.options.allowPanToNext=!1),this.drag=new S(this),this.zoomLevels=new M(this),this.tapHandler=new C(this),t.on("bindEvents",(()=>{t.events.add(t.scrollWrap,"click",this.$.bind(this)),this.N?this.q("pointer","down","up","cancel"):this.R?(this.q("touch","start","end","cancel"),t.scrollWrap&&(t.scrollWrap.ontouchmove=()=>{},t.scrollWrap.ontouchend=()=>{})):this.q("mouse","down","up")}))}q(t,i,s,h){const{pswp:e}=this,{events:n}=e,o=h?t+h:"";n.add(e.scrollWrap,t+i,this.onPointerDown.bind(this)),n.add(window,t+"move",this.onPointerMove.bind(this)),n.add(window,t+s,this.onPointerUp.bind(this)),o&&n.add(e.scrollWrap,o,this.onPointerUp.bind(this))}onPointerDown(t){const s="mousedown"===t.type||"mouse"===t.pointerType;if(s&&t.button>0)return;const{pswp:h}=this;h.opener.isOpen?h.dispatch("pointerDown",{originalEvent:t}).defaultPrevented||(s&&(h.mouseDetected(),this.H(t,"down")),h.animations.stopAll(),this.K(t,"down"),1===this.F&&(this.dragAxis=null,i(this.startP1,this.p1)),this.F>1?(this.W(),this.isMultitouch=!0):this.isMultitouch=!1):t.preventDefault()}onPointerMove(t){this.H(t,"move"),this.F&&(this.K(t,"move"),this.pswp.dispatch("pointerMove",{originalEvent:t}).defaultPrevented||(1!==this.F||this.isDragging?this.F>1&&!this.isZooming&&(this.j(),this.isZooming=!0,this.X(),this.zoomLevels.start(),this.Y(),this.J()):(this.dragAxis||this.tt(),this.dragAxis&&!this.isDragging&&(this.isZooming&&(this.isZooming=!1,this.zoomLevels.end()),this.isDragging=!0,this.W(),this.X(),this.U=Date.now(),this.V=!1,i(this.B,this.p1),this.velocity.x=0,this.velocity.y=0,this.drag.start(),this.Y(),this.J()))))}j(){this.isDragging&&(this.isDragging=!1,this.V||this.it(!0),this.drag.end(),this.dragAxis=null)}onPointerUp(t){this.F&&(this.K(t,"up"),this.pswp.dispatch("pointerUp",{originalEvent:t}).defaultPrevented||(0===this.F&&(this.Y(),this.isDragging?this.j():this.isZooming||this.isMultitouch||this.st(t)),this.F<2&&this.isZooming&&(this.isZooming=!1,this.zoomLevels.end(),1===this.F&&(this.dragAxis=null,this.X()))))}J(){(this.isDragging||this.isZooming)&&(this.it(),this.isDragging?e(this.p1,this.prevP1)||this.drag.change():e(this.p1,this.prevP1)&&e(this.p2,this.prevP2)||this.zoomLevels.change(),this.ht(),this.raf=requestAnimationFrame(this.J.bind(this)))}it(t){const s=Date.now(),h=s-this.U;h<50&&!t||(this.velocity.x=this.et("x",h),this.velocity.y=this.et("y",h),this.U=s,i(this.B,this.p1),this.V=!0)}st(t){const{mainScroll:s}=this.pswp;if(s.isShifted())return void s.moveIndexBy(0,!0);if(t.type.indexOf("cancel")>0)return;if("mouseup"===t.type||"mouse"===t.pointerType)return void this.tapHandler.click(this.startP1,t);const e=this.pswp.options.doubleTapAction?300:0;this.G?(this.W(),h(this.Z,this.startP1)<25&&this.tapHandler.doubleTap(this.startP1,t)):(i(this.Z,this.startP1),this.G=setTimeout((()=>{this.tapHandler.tap(this.startP1,t),this.W()}),e))}W(){this.G&&(clearTimeout(this.G),this.G=null)}et(t,i){const s=this.p1[t]-this.B[t];return Math.abs(s)>1&&i>5?s/i:0}Y(){this.raf&&(cancelAnimationFrame(this.raf),this.raf=null)}H(t,i){this.pswp.applyFilters("preventPointerEvent",!0,t,i)&&t.preventDefault()}K(t,s){if(this.N){const h=t,e=this.O.findIndex((t=>t.id===h.pointerId));"up"===s&&e>-1?this.O.splice(e,1):"down"===s&&-1===e?this.O.push(this.nt(h,{x:0,y:0})):e>-1&&this.nt(h,this.O[e]),this.F=this.O.length,this.F>0&&i(this.p1,this.O[0]),this.F>1&&i(this.p2,this.O[1])}else{const i=t;this.F=0,i.type.indexOf("touch")>-1?i.touches&&i.touches.length>0&&(this.nt(i.touches[0],this.p1),this.F++,i.touches.length>1&&(this.nt(i.touches[1],this.p2),this.F++)):(this.nt(t,this.p1),"up"===s?this.F=0:this.F++)}}ht(){i(this.prevP1,this.p1),i(this.prevP2,this.p2)}X(){i(this.startP1,this.p1),i(this.startP2,this.p2),this.ht()}tt(){if(this.pswp.mainScroll.isShifted())this.dragAxis="x";else{const t=Math.abs(this.p1.x-this.startP1.x)-Math.abs(this.p1.y-this.startP1.y);if(0!==t){const i=t>0?"x":"y";Math.abs(this.p1[i]-this.startP1[i])>=10&&(this.dragAxis=i)}}}nt(t,i){return i.x=t.pageX-this.pswp.offset.x,i.y=t.pageY-this.pswp.offset.y,"pointerId"in t?i.id=t.pointerId:void 0!==t.identifier&&(i.id=t.identifier),i}$(t){this.pswp.mainScroll.isShifted()&&(t.preventDefault(),t.stopPropagation())}}class A{constructor(t){this.pswp=t,this.x=0,this.slideWidth=0,this.ot=0,this.rt=0,this.lt=-1,this.itemHolders=[]}resize(t){const{pswp:i}=this,s=Math.round(i.viewportSize.x+i.viewportSize.x*i.options.spacing),h=s!==this.slideWidth;h&&(this.slideWidth=s,this.moveTo(this.getCurrSlideX())),this.itemHolders.forEach(((i,s)=>{h&&r(i.el,(s+this.lt)*this.slideWidth),t&&i.slide&&i.slide.resize()}))}resetPosition(){this.ot=0,this.rt=0,this.slideWidth=0,this.lt=-1}appendHolders(){this.itemHolders=[];for(let i=0;i<3;i++){const s=t("pswp__item","div",this.pswp.container);s.setAttribute("role","group"),s.setAttribute("aria-roledescription","slide"),s.setAttribute("aria-hidden","true"),s.style.display=1===i?"block":"none",this.itemHolders.push({el:s})}}canBeSwiped(){return this.pswp.getNumItems()>1}moveIndexBy(t,i,s){const{pswp:h}=this;let e=h.potentialIndex+t;const n=h.getNumItems();if(h.canLoop()){e=h.getLoopedIndex(e);const i=(t+n)%n;t=i<=n/2?i:i-n}else e<0?e=0:e>=n&&(e=n-1),t=e-h.potentialIndex;h.potentialIndex=e,this.ot-=t,h.animations.stopMainScroll();const o=this.getCurrSlideX();if(i){h.animations.startSpring({isMainScroll:!0,start:this.x,end:o,velocity:s||0,naturalFrequency:30,dampingRatio:1,onUpdate:t=>{this.moveTo(t)},onComplete:()=>{this.updateCurrItem(),h.appendHeavy()}});let t=h.potentialIndex-h.currIndex;if(h.canLoop()){const i=(t+n)%n;t=i<=n/2?i:i-n}Math.abs(t)>1&&this.updateCurrItem()}else this.moveTo(o),this.updateCurrItem();return Boolean(t)}getCurrSlideX(){return this.slideWidth*this.ot}isShifted(){return this.x!==this.getCurrSlideX()}updateCurrItem(){var t;const{pswp:i}=this,s=this.rt-this.ot;if(!s)return;this.rt=this.ot,i.currIndex=i.potentialIndex;let h,e=Math.abs(s);e>=3&&(this.lt+=s+(s>0?-3:3),e=3);for(let t=0;t<e;t++)s>0?(h=this.itemHolders.shift(),h&&(this.itemHolders[2]=h,this.lt++,r(h.el,(this.lt+2)*this.slideWidth),i.setContent(h,i.currIndex-e+t+2))):(h=this.itemHolders.pop(),h&&(this.itemHolders.unshift(h),this.lt--,r(h.el,this.lt*this.slideWidth),i.setContent(h,i.currIndex+e-t-2)));Math.abs(this.lt)>50&&!this.isShifted()&&(this.resetPosition(),this.resize()),i.animations.stopAllPan(),this.itemHolders.forEach(((t,i)=>{t.slide&&t.slide.setIsActive(1===i)})),i.currSlide=null===(t=this.itemHolders[1])||void 0===t?void 0:t.slide,i.contentLoader.updateLazy(s),i.currSlide&&i.currSlide.applyCurrentZoomPan(),i.dispatch("change")}moveTo(t,i){if(!this.pswp.canLoop()&&i){let i=(this.slideWidth*this.ot-t)/this.slideWidth;i+=this.pswp.currIndex;const s=Math.round(t-this.x);(i<0&&s>0||i>=this.pswp.getNumItems()-1&&s<0)&&(t=this.x+.35*s)}this.x=t,this.pswp.container&&r(this.pswp.container,t),this.pswp.dispatch("moveMainScroll",{x:t,dragging:null!=i&&i})}}const D={Escape:27,z:90,ArrowLeft:37,ArrowUp:38,ArrowRight:39,ArrowDown:40,Tab:9},I=(t,i)=>i?t:D[t];class E{constructor(t){this.pswp=t,this.ct=!1,t.on("bindEvents",(()=>{t.options.trapFocus&&(t.options.initialPointerPos||this.dt(),t.events.add(document,"focusin",this.ut.bind(this))),t.events.add(document,"keydown",this.vt.bind(this))}));const i=document.activeElement;t.on("destroy",(()=>{t.options.returnFocus&&i&&this.ct&&i.focus()}))}dt(){!this.ct&&this.pswp.element&&(this.pswp.element.focus(),this.ct=!0)}vt(t){const{pswp:i}=this;if(i.dispatch("keydown",{originalEvent:t}).defaultPrevented)return;if(function(t){return"button"in t&&1===t.button||t.ctrlKey||t.metaKey||t.altKey||t.shiftKey}(t))return;let s,h,e=!1;const n="key"in t;switch(n?t.key:t.keyCode){case I("Escape",n):i.options.escKey&&(s="close");break;case I("z",n):s="toggleZoom";break;case I("ArrowLeft",n):h="x";break;case I("ArrowUp",n):h="y";break;case I("ArrowRight",n):h="x",e=!0;break;case I("ArrowDown",n):e=!0,h="y";break;case I("Tab",n):this.dt()}if(h){t.preventDefault();const{currSlide:n}=i;i.options.arrowKeys&&"x"===h&&i.getNumItems()>1?s=e?"next":"prev":n&&n.currZoomLevel>n.zoomLevels.fit&&(n.pan[h]+=e?-80:80,n.panTo(n.pan.x,n.pan.y))}s&&(t.preventDefault(),i[s]())}ut(t){const{template:i}=this.pswp;i&&document!==t.target&&i!==t.target&&!i.contains(t.target)&&i.focus()}}const L="cubic-bezier(.4,0,.22,1)";class k{constructor(t){var i;this.props=t;const{target:s,onComplete:h,transform:e,onFinish:n=(()=>{}),duration:o=333,easing:r=L}=t;this.onFinish=n;const l=e?"transform":"opacity",c=null!==(i=t[l])&&void 0!==i?i:"";this.ft=s,this.wt=h,this.gt=!1,this.yt=this.yt.bind(this),this._t=setTimeout((()=>{a(s,l,o,r),this._t=setTimeout((()=>{s.addEventListener("transitionend",this.yt,!1),s.addEventListener("transitioncancel",this.yt,!1),this._t=setTimeout((()=>{this.xt()}),o+500),s.style[l]=c}),30)}),0)}yt(t){t.target===this.ft&&this.xt()}xt(){this.gt||(this.gt=!0,this.onFinish(),this.wt&&this.wt())}destroy(){this._t&&clearTimeout(this._t),a(this.ft),this.ft.removeEventListener("transitionend",this.yt,!1),this.ft.removeEventListener("transitioncancel",this.yt,!1),this.gt||this.xt()}}class Z{constructor(t,i,s){this.velocity=1e3*t,this.bt=i||.75,this.St=s||12,this.zt=this.St,this.bt<1&&(this.zt*=Math.sqrt(1-this.bt*this.bt))}easeFrame(t,i){let s,h=0;i/=1e3;const e=Math.E**(-this.bt*this.St*i);if(1===this.bt)s=this.velocity+this.St*t,h=(t+s*i)*e,this.velocity=h*-this.St+s*e;else if(this.bt<1){s=1/this.zt*(this.bt*this.St*t+this.velocity);const n=Math.cos(this.zt*i),o=Math.sin(this.zt*i);h=e*(t*n+s*o),this.velocity=h*-this.St*this.bt+e*(-this.zt*t*o+this.zt*s*n)}return h}}class B{constructor(t){this.props=t,this.Mt=0;const{start:i,end:s,velocity:h,onUpdate:e,onComplete:n,onFinish:o=(()=>{}),dampingRatio:r,naturalFrequency:a}=t;this.onFinish=o;const l=new Z(h,r,a);let c=Date.now(),d=i-s;const u=()=>{this.Mt&&(d=l.easeFrame(d,Date.now()-c),Math.abs(d)<1&&Math.abs(l.velocity)<50?(e(s),n&&n(),this.onFinish()):(c=Date.now(),e(d+s),this.Mt=requestAnimationFrame(u)))};this.Mt=requestAnimationFrame(u)}destroy(){this.Mt>=0&&cancelAnimationFrame(this.Mt),this.Mt=0}}class F{constructor(){this.activeAnimations=[]}startSpring(t){this.Pt(t,!0)}startTransition(t){this.Pt(t)}Pt(t,i){const s=i?new B(t):new k(t);return this.activeAnimations.push(s),s.onFinish=()=>this.stop(s),s}stop(t){t.destroy();const i=this.activeAnimations.indexOf(t);i>-1&&this.activeAnimations.splice(i,1)}stopAll(){this.activeAnimations.forEach((t=>{t.destroy()})),this.activeAnimations=[]}stopAllPan(){this.activeAnimations=this.activeAnimations.filter((t=>!t.props.isPan||(t.destroy(),!1)))}stopMainScroll(){this.activeAnimations=this.activeAnimations.filter((t=>!t.props.isMainScroll||(t.destroy(),!1)))}isPanRunning(){return this.activeAnimations.some((t=>t.props.isPan))}}class O{constructor(t){this.pswp=t,t.events.add(t.element,"wheel",this.Ct.bind(this))}Ct(t){t.preventDefault();const{currSlide:i}=this.pswp;let{deltaX:s,deltaY:h}=t;if(i&&!this.pswp.dispatch("wheel",{originalEvent:t}).defaultPrevented)if(t.ctrlKey||this.pswp.options.wheelToZoom){if(i.isZoomable()){let s=-h;1===t.deltaMode?s*=.05:s*=t.deltaMode?1:.002,s=2**s;const e=i.currZoomLevel*s;i.zoomTo(e,{x:t.clientX,y:t.clientY})}}else i.isPannable()&&(1===t.deltaMode&&(s*=18,h*=18),i.panTo(i.pan.x-s,i.pan.y-h))}}class R{constructor(i,s){var h;const e=s.name||s.className;let n=s.html;if(!1===i.options[e])return;"string"==typeof i.options[e+"SVG"]&&(n=i.options[e+"SVG"]),i.dispatch("uiElementCreate",{data:s});let o="";s.isButton?(o+="pswp__button ",o+=s.className||`pswp__button--${s.name}`):o+=s.className||`pswp__${s.name}`;let r=s.isButton?s.tagName||"button":s.tagName||"div";r=r.toLowerCase();const a=t(o,r);if(s.isButton){"button"===r&&(a.type="button");let{title:t}=s;const{ariaLabel:h}=s;"string"==typeof i.options[e+"Title"]&&(t=i.options[e+"Title"]),t&&(a.title=t);const n=h||t;n&&a.setAttribute("aria-label",n)}a.innerHTML=function(t){if("string"==typeof t)return t;if(!t||!t.isCustomSVG)return"";const i=t;let s='<svg aria-hidden="true" class="pswp__icn" viewBox="0 0 %d %d" width="%d" height="%d">';return s=s.split("%d").join(i.size||32),i.outlineID&&(s+='<use class="pswp__icn-shadow" xlink:href="#'+i.outlineID+'"/>'),s+=i.inner,s+="</svg>",s}(n),s.onInit&&s.onInit(a,i),s.onClick&&(a.onclick=t=>{"string"==typeof s.onClick?i[s.onClick]():"function"==typeof s.onClick&&s.onClick(t,a,i)});const l=s.appendTo||"bar";let c=i.element;"bar"===l?(i.topBar||(i.topBar=t("pswp__top-bar pswp__hide-on-close","div",i.scrollWrap)),c=i.topBar):(a.classList.add("pswp__hide-on-close"),"wrapper"===l&&(c=i.scrollWrap)),null===(h=c)||void 0===h||h.appendChild(i.applyFilters("uiElement",a,s))}}function N(t,i,s){t.classList.add("pswp__button--arrow"),t.setAttribute("aria-controls","pswp__items"),i.on("change",(()=>{i.options.loop||(t.disabled=s?!(i.currIndex<i.getNumItems()-1):!(i.currIndex>0))}))}const U={name:"arrowPrev",className:"pswp__button--arrow--prev",title:"Previous",order:10,isButton:!0,appendTo:"wrapper",html:{isCustomSVG:!0,size:60,inner:'<path d="M29 43l-3 3-16-16 16-16 3 3-13 13 13 13z" id="pswp__icn-arrow"/>',outlineID:"pswp__icn-arrow"},onClick:"prev",onInit:N},V={name:"arrowNext",className:"pswp__button--arrow--next",title:"Next",order:11,isButton:!0,appendTo:"wrapper",html:{isCustomSVG:!0,size:60,inner:'<use xlink:href="#pswp__icn-arrow"/>',outlineID:"pswp__icn-arrow"},onClick:"next",onInit:(t,i)=>{N(t,i,!0)}},G={name:"close",title:"Close",order:20,isButton:!0,html:{isCustomSVG:!0,inner:'<path d="M24 10l-2-2-6 6-6-6-2 2 6 6-6 6 2 2 6-6 6 6 2-2-6-6z" id="pswp__icn-close"/>',outlineID:"pswp__icn-close"},onClick:"close"},$={name:"zoom",title:"Zoom",order:10,isButton:!0,html:{isCustomSVG:!0,inner:'<path d="M17.426 19.926a6 6 0 1 1 1.5-1.5L23 22.5 21.5 24l-4.074-4.074z" id="pswp__icn-zoom"/><path fill="currentColor" class="pswp__zoom-icn-bar-h" d="M11 16v-2h6v2z"/><path fill="currentColor" class="pswp__zoom-icn-bar-v" d="M13 12h2v6h-2z"/>',outlineID:"pswp__icn-zoom"},onClick:"toggleZoom"},q={name:"preloader",appendTo:"bar",order:7,html:{isCustomSVG:!0,inner:'<path fill-rule="evenodd" clip-rule="evenodd" d="M21.2 16a5.2 5.2 0 1 1-5.2-5.2V8a8 8 0 1 0 8 8h-2.8Z" id="pswp__icn-loading"/>',outlineID:"pswp__icn-loading"},onInit:(t,i)=>{let s,h=null;const e=i=>{var h,e;s!==i&&(s=i,h="active",e=i,t.classList.toggle("pswp__preloader--"+h,e))},n=()=>{var t;if(null===(t=i.currSlide)||void 0===t||!t.content.isLoading())return e(!1),void(h&&(clearTimeout(h),h=null));h||(h=setTimeout((()=>{var t;e(Boolean(null===(t=i.currSlide)||void 0===t?void 0:t.content.isLoading())),h=null}),i.options.preloaderDelay))};i.on("change",n),i.on("loadComplete",(t=>{i.currSlide===t.slide&&n()})),i.ui&&(i.ui.updatePreloaderVisibility=n)}},H={name:"counter",order:5,onInit:(t,i)=>{i.on("change",(()=>{t.innerText=i.currIndex+1+i.options.indexIndicatorSep+i.getNumItems()}))}};function K(t,i){t.classList.toggle("pswp--zoomed-in",i)}class W{constructor(t){this.pswp=t,this.isRegistered=!1,this.uiElementsData=[],this.items=[],this.updatePreloaderVisibility=()=>{},this.Tt=void 0}init(){const{pswp:t}=this;this.isRegistered=!1,this.uiElementsData=[G,U,V,$,q,H],t.dispatch("uiRegister"),this.uiElementsData.sort(((t,i)=>(t.order||0)-(i.order||0))),this.items=[],this.isRegistered=!0,this.uiElementsData.forEach((t=>{this.registerElement(t)})),t.on("change",(()=>{var i;null===(i=t.element)||void 0===i||i.classList.toggle("pswp--one-slide",1===t.getNumItems())})),t.on("zoomPanUpdate",(()=>this.At()))}registerElement(t){this.isRegistered?this.items.push(new R(this.pswp,t)):this.uiElementsData.push(t)}At(){const{template:t,currSlide:i,options:s}=this.pswp;if(this.pswp.opener.isClosing||!t||!i)return;let{currZoomLevel:h}=i;if(this.pswp.opener.isOpen||(h=i.zoomLevels.initial),h===this.Tt)return;this.Tt=h;const e=i.zoomLevels.initial-i.zoomLevels.secondary;if(Math.abs(e)<.01||!i.isZoomable())return K(t,!1),void t.classList.remove("pswp--zoom-allowed");t.classList.add("pswp--zoom-allowed");K(t,(h===i.zoomLevels.initial?i.zoomLevels.secondary:i.zoomLevels.initial)<=h),"zoom"!==s.imageClickAction&&"zoom-or-close"!==s.imageClickAction||t.classList.add("pswp--click-to-zoom")}}class j{constructor(t,i){this.type=t,this.defaultPrevented=!1,i&&Object.assign(this,i)}preventDefault(){this.defaultPrevented=!0}}class X{constructor(i,s){if(this.element=t("pswp__img pswp__img--placeholder",i?"img":"div",s),i){const t=this.element;t.decoding="async",t.alt="",t.src=i,t.setAttribute("role","presentation")}this.element.setAttribute("aria-hidden","true")}setDisplayedSize(t,i){this.element&&("IMG"===this.element.tagName?(l(this.element,250,"auto"),this.element.style.transformOrigin="0 0",this.element.style.transform=o(0,0,t/250)):l(this.element,t,i))}destroy(){var t;null!==(t=this.element)&&void 0!==t&&t.parentNode&&this.element.remove(),this.element=null}}class Y{constructor(t,i,s){this.instance=i,this.data=t,this.index=s,this.element=void 0,this.placeholder=void 0,this.slide=void 0,this.displayedImageWidth=0,this.displayedImageHeight=0,this.width=Number(this.data.w)||Number(this.data.width)||0,this.height=Number(this.data.h)||Number(this.data.height)||0,this.isAttached=!1,this.hasSlide=!1,this.isDecoding=!1,this.state=c,this.data.type?this.type=this.data.type:this.data.src?this.type="image":this.type="html",this.instance.dispatch("contentInit",{content:this})}removePlaceholder(){this.placeholder&&!this.keepPlaceholder()&&setTimeout((()=>{this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0)}),1e3)}load(i,s){if(this.slide&&this.usePlaceholder())if(this.placeholder){const t=this.placeholder.element;t&&!t.parentElement&&this.slide.container.prepend(t)}else{const t=this.instance.applyFilters("placeholderSrc",!(!this.data.msrc||!this.slide.isFirstSlide)&&this.data.msrc,this);this.placeholder=new X(t,this.slide.container)}this.element&&!s||this.instance.dispatch("contentLoad",{content:this,isLazy:i}).defaultPrevented||(this.isImageContent()?(this.element=t("pswp__img","img"),this.displayedImageWidth&&this.loadImage(i)):(this.element=t("pswp__content","div"),this.element.innerHTML=this.data.html||""),s&&this.slide&&this.slide.updateContentSize(!0))}loadImage(t){var i,s;if(!this.isImageContent()||!this.element||this.instance.dispatch("contentLoadImage",{content:this,isLazy:t}).defaultPrevented)return;const h=this.element;this.updateSrcsetSizes(),this.data.srcset&&(h.srcset=this.data.srcset),h.src=null!==(i=this.data.src)&&void 0!==i?i:"",h.alt=null!==(s=this.data.alt)&&void 0!==s?s:"",this.state=d,h.complete?this.onLoaded():(h.onload=()=>{this.onLoaded()},h.onerror=()=>{this.onError()})}setSlide(t){this.slide=t,this.hasSlide=!0,this.instance=t.pswp}onLoaded(){this.state=u,this.slide&&this.element&&(this.instance.dispatch("loadComplete",{slide:this.slide,content:this}),this.slide.isActive&&this.slide.heavyAppended&&!this.element.parentNode&&(this.append(),this.slide.updateContentSize(!0)),this.state!==u&&this.state!==p||this.removePlaceholder())}onError(){this.state=p,this.slide&&(this.displayError(),this.instance.dispatch("loadComplete",{slide:this.slide,isError:!0,content:this}),this.instance.dispatch("loadError",{slide:this.slide,content:this}))}isLoading(){return this.instance.applyFilters("isContentLoading",this.state===d,this)}isError(){return this.state===p}isImageContent(){return"image"===this.type}setDisplayedSize(t,i){if(this.element&&(this.placeholder&&this.placeholder.setDisplayedSize(t,i),!this.instance.dispatch("contentResize",{content:this,width:t,height:i}).defaultPrevented&&(l(this.element,t,i),this.isImageContent()&&!this.isError()))){const s=!this.displayedImageWidth&&t;this.displayedImageWidth=t,this.displayedImageHeight=i,s?this.loadImage(!1):this.updateSrcsetSizes(),this.slide&&this.instance.dispatch("imageSizeChange",{slide:this.slide,width:t,height:i,content:this})}}isZoomable(){return this.instance.applyFilters("isContentZoomable",this.isImageContent()&&this.state!==p,this)}updateSrcsetSizes(){if(!this.isImageContent()||!this.element||!this.data.srcset)return;const t=this.element,i=this.instance.applyFilters("srcsetSizesWidth",this.displayedImageWidth,this);(!t.dataset.largestUsedSize||i>parseInt(t.dataset.largestUsedSize,10))&&(t.sizes=i+"px",t.dataset.largestUsedSize=String(i))}usePlaceholder(){return this.instance.applyFilters("useContentPlaceholder",this.isImageContent(),this)}lazyLoad(){this.instance.dispatch("contentLazyLoad",{content:this}).defaultPrevented||this.load(!0)}keepPlaceholder(){return this.instance.applyFilters("isKeepingPlaceholder",this.isLoading(),this)}destroy(){this.hasSlide=!1,this.slide=void 0,this.instance.dispatch("contentDestroy",{content:this}).defaultPrevented||(this.remove(),this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0),this.isImageContent()&&this.element&&(this.element.onload=null,this.element.onerror=null,this.element=void 0))}displayError(){if(this.slide){var i,s;let h=t("pswp__error-msg","div");h.innerText=null!==(i=null===(s=this.instance.options)||void 0===s?void 0:s.errorMsg)&&void 0!==i?i:"",h=this.instance.applyFilters("contentErrorElement",h,this),this.element=t("pswp__content pswp__error-msg-container","div"),this.element.appendChild(h),this.slide.container.innerText="",this.slide.container.appendChild(this.element),this.slide.updateContentSize(!0),this.removePlaceholder()}}append(){if(this.isAttached||!this.element)return;if(this.isAttached=!0,this.state===p)return void this.displayError();if(this.instance.dispatch("contentAppend",{content:this}).defaultPrevented)return;const t="decode"in this.element;this.isImageContent()?t&&this.slide&&(!this.slide.isActive||m())?(this.isDecoding=!0,this.element.decode().catch((()=>{})).finally((()=>{this.isDecoding=!1,this.appendImage()}))):this.appendImage():this.slide&&!this.element.parentNode&&this.slide.container.appendChild(this.element)}activate(){!this.instance.dispatch("contentActivate",{content:this}).defaultPrevented&&this.slide&&(this.isImageContent()&&this.isDecoding&&!m()?this.appendImage():this.isError()&&this.load(!1,!0),this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","false"))}deactivate(){this.instance.dispatch("contentDeactivate",{content:this}),this.slide&&this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","true")}remove(){this.isAttached=!1,this.instance.dispatch("contentRemove",{content:this}).defaultPrevented||(this.element&&this.element.parentNode&&this.element.remove(),this.placeholder&&this.placeholder.element&&this.placeholder.element.remove())}appendImage(){this.isAttached&&(this.instance.dispatch("contentAppendImage",{content:this}).defaultPrevented||(this.slide&&this.element&&!this.element.parentNode&&this.slide.container.appendChild(this.element),this.state!==u&&this.state!==p||this.removePlaceholder()))}}function J(t,i,s){const h=i.createContentFromData(t,s);let e;const{options:n}=i;if(n){let o;e=new x(n,t,-1),o=i.pswp?i.pswp.viewportSize:w(n,i);const r=y(n,o,t,s);e.update(h.width,h.height,r)}return h.lazyLoad(),e&&h.setDisplayedSize(Math.ceil(h.width*e.initial),Math.ceil(h.height*e.initial)),h}class Q{constructor(t){this.pswp=t,this.limit=Math.max(t.options.preload[0]+t.options.preload[1]+1,5),this.Dt=[]}updateLazy(t){const{pswp:i}=this;if(i.dispatch("lazyLoad").defaultPrevented)return;const{preload:s}=i.options,h=void 0===t||t>=0;let e;for(e=0;e<=s[1];e++)this.loadSlideByIndex(i.currIndex+(h?e:-e));for(e=1;e<=s[0];e++)this.loadSlideByIndex(i.currIndex+(h?-e:e))}loadSlideByIndex(t){const i=this.pswp.getLoopedIndex(t);let s=this.getContentByIndex(i);s||(s=function(t,i){const s=i.getItemData(t);if(!i.dispatch("lazyLoadSlide",{index:t,itemData:s}).defaultPrevented)return J(s,i,t)}(i,this.pswp),s&&this.addToCache(s))}getContentBySlide(t){let i=this.getContentByIndex(t.index);return i||(i=this.pswp.createContentFromData(t.data,t.index),this.addToCache(i)),i.setSlide(t),i}addToCache(t){if(this.removeByIndex(t.index),this.Dt.push(t),this.Dt.length>this.limit){const t=this.Dt.findIndex((t=>!t.isAttached&&!t.hasSlide));if(-1!==t){this.Dt.splice(t,1)[0].destroy()}}}removeByIndex(t){const i=this.Dt.findIndex((i=>i.index===t));-1!==i&&this.Dt.splice(i,1)}getContentByIndex(t){return this.Dt.find((i=>i.index===t))}destroy(){this.Dt.forEach((t=>t.destroy())),this.Dt=[]}}const tt=.003;class it{constructor(t){this.pswp=t,this.isClosed=!0,this.isOpen=!1,this.isClosing=!1,this.isOpening=!1,this.It=void 0,this.Et=!1,this.Lt=!1,this.kt=!1,this.Zt=!1,this.Bt=void 0,this.Ft=void 0,this.Ot=void 0,this.Rt=void 0,this.Nt=void 0,this.Ut=this.Ut.bind(this),t.on("firstZoomPan",this.Ut)}open(){this.Ut(),this.Pt()}close(){if(this.isClosed||this.isClosing||this.isOpening)return;const t=this.pswp.currSlide;this.isOpen=!1,this.isOpening=!1,this.isClosing=!0,this.It=this.pswp.options.hideAnimationDuration,t&&t.currZoomLevel*t.width>=this.pswp.options.maxWidthToAnimate&&(this.It=0),this.Vt(),setTimeout((()=>{this.Pt()}),this.Lt?30:0)}Ut(){if(this.pswp.off("firstZoomPan",this.Ut),!this.isOpening){const t=this.pswp.currSlide;this.isOpening=!0,this.isClosing=!1,this.It=this.pswp.options.showAnimationDuration,t&&t.zoomLevels.initial*t.width>=this.pswp.options.maxWidthToAnimate&&(this.It=0),this.Vt()}}Vt(){const{pswp:t}=this,i=this.pswp.currSlide,{options:s}=t;var h,e;("fade"===s.showHideAnimationType?(s.showHideOpacity=!0,this.Nt=void 0):"none"===s.showHideAnimationType?(s.showHideOpacity=!1,this.It=0,this.Nt=void 0):this.isOpening&&t.Gt?this.Nt=t.Gt:this.Nt=this.pswp.getThumbBounds(),this.Bt=null==i?void 0:i.getPlaceholderElement(),t.animations.stopAll(),this.Et=Boolean(this.It&&this.It>50),this.$t=Boolean(this.Nt)&&(null==i?void 0:i.content.usePlaceholder())&&(!this.isClosing||!t.mainScroll.isShifted()),this.$t)?this.kt=null!==(h=s.showHideOpacity)&&void 0!==h&&h:(this.kt=!0,this.isOpening&&i&&(i.zoomAndPanToInitial(),i.applyCurrentZoomPan()));if(this.Zt=!this.kt&&this.pswp.options.bgOpacity>tt,this.Ft=this.kt?t.element:t.bg,!this.Et)return this.It=0,this.$t=!1,this.Zt=!1,this.kt=!0,void(this.isOpening&&(t.element&&(t.element.style.opacity=String(tt)),t.applyBgOpacity(1)));this.$t&&this.Nt&&this.Nt.innerRect?(this.Lt=!0,this.Ot=this.pswp.container,this.Rt=null===(e=this.pswp.currSlide)||void 0===e?void 0:e.holderElement,t.container&&(t.container.style.overflow="hidden",t.container.style.width=t.viewportSize.x+"px")):this.Lt=!1;this.isOpening?(this.kt?(t.element&&(t.element.style.opacity=String(tt)),t.applyBgOpacity(1)):(this.Zt&&t.bg&&(t.bg.style.opacity=String(tt)),t.element&&(t.element.style.opacity="1")),this.$t&&(this.qt(),this.Bt&&(this.Bt.style.willChange="transform",this.Bt.style.opacity=String(tt)))):this.isClosing&&(t.mainScroll.itemHolders[0]&&(t.mainScroll.itemHolders[0].el.style.display="none"),t.mainScroll.itemHolders[2]&&(t.mainScroll.itemHolders[2].el.style.display="none"),this.Lt&&0!==t.mainScroll.x&&(t.mainScroll.resetPosition(),t.mainScroll.resize()))}Pt(){this.isOpening&&this.Et&&this.Bt&&"IMG"===this.Bt.tagName?new Promise((t=>{let i=!1,s=!0;var h;(h=this.Bt,"decode"in h?h.decode().catch((()=>{})):h.complete?Promise.resolve(h):new Promise(((t,i)=>{h.onload=()=>t(h),h.onerror=i}))).finally((()=>{i=!0,s||t(!0)})),setTimeout((()=>{s=!1,i&&t(!0)}),50),setTimeout(t,250)})).finally((()=>this.Ht())):this.Ht()}Ht(){var t,i;null===(t=this.pswp.element)||void 0===t||t.style.setProperty("--pswp-transition-duration",this.It+"ms"),this.pswp.dispatch(this.isOpening?"openingAnimationStart":"closingAnimationStart"),this.pswp.dispatch("initialZoom"+(this.isOpening?"In":"Out")),null===(i=this.pswp.element)||void 0===i||i.classList.toggle("pswp--ui-visible",this.isOpening),this.isOpening?(this.Bt&&(this.Bt.style.opacity="1"),this.Kt()):this.isClosing&&this.Wt(),this.Et||this.jt()}jt(){const{pswp:t}=this;if(this.isOpen=this.isOpening,this.isClosed=this.isClosing,this.isOpening=!1,this.isClosing=!1,t.dispatch(this.isOpen?"openingAnimationEnd":"closingAnimationEnd"),t.dispatch("initialZoom"+(this.isOpen?"InEnd":"OutEnd")),this.isClosed)t.destroy();else if(this.isOpen){var i;this.$t&&t.container&&(t.container.style.overflow="visible",t.container.style.width="100%"),null===(i=t.currSlide)||void 0===i||i.applyCurrentZoomPan()}}Kt(){const{pswp:t}=this;this.$t&&(this.Lt&&this.Ot&&this.Rt&&(this.Xt(this.Ot,"transform","translate3d(0,0,0)"),this.Xt(this.Rt,"transform","none")),t.currSlide&&(t.currSlide.zoomAndPanToInitial(),this.Xt(t.currSlide.container,"transform",t.currSlide.getCurrentTransform()))),this.Zt&&t.bg&&this.Xt(t.bg,"opacity",String(t.options.bgOpacity)),this.kt&&t.element&&this.Xt(t.element,"opacity","1")}Wt(){const{pswp:t}=this;this.$t&&this.qt(!0),this.Zt&&t.bgOpacity>.01&&t.bg&&this.Xt(t.bg,"opacity","0"),this.kt&&t.element&&this.Xt(t.element,"opacity","0")}qt(t){if(!this.Nt)return;const{pswp:s}=this,{innerRect:h}=this.Nt,{currSlide:e,viewportSize:n}=s;if(this.Lt&&h&&this.Ot&&this.Rt){const i=-n.x+(this.Nt.x-h.x)+h.w,s=-n.y+(this.Nt.y-h.y)+h.h,e=n.x-h.w,a=n.y-h.h;t?(this.Xt(this.Ot,"transform",o(i,s)),this.Xt(this.Rt,"transform",o(e,a))):(r(this.Ot,i,s),r(this.Rt,e,a))}e&&(i(e.pan,h||this.Nt),e.currZoomLevel=this.Nt.w/e.width,t?this.Xt(e.container,"transform",e.getCurrentTransform()):e.applyCurrentZoomPan())}Xt(t,i,s){if(!this.It)return void(t.style[i]=s);const{animations:h}=this.pswp,e={duration:this.It,easing:this.pswp.options.easing,onComplete:()=>{h.activeAnimations.length||this.jt()},target:t};e[i]=s,h.startTransition(e)}}const st={allowPanToNext:!0,spacing:.1,loop:!0,pinchToClose:!0,closeOnVerticalDrag:!0,hideAnimationDuration:333,showAnimationDuration:333,zoomAnimationDuration:333,escKey:!0,arrowKeys:!0,trapFocus:!0,returnFocus:!0,maxWidthToAnimate:4e3,clickToCloseNonZoomable:!0,imageClickAction:"zoom-or-close",bgClickAction:"close",tapAction:"toggle-controls",doubleTapAction:"zoom",indexIndicatorSep:" / ",preloaderDelay:2e3,bgOpacity:.8,index:0,errorMsg:"The image cannot be loaded",preload:[1,2],easing:"cubic-bezier(.4,0,.22,1)"};return class extends class extends class{constructor(){this.Yt={},this.Jt={},this.pswp=void 0,this.options=void 0}addFilter(t,i,s=100){var h,e,n;this.Jt[t]||(this.Jt[t]=[]),null===(h=this.Jt[t])||void 0===h||h.push({fn:i,priority:s}),null===(e=this.Jt[t])||void 0===e||e.sort(((t,i)=>t.priority-i.priority)),null===(n=this.pswp)||void 0===n||n.addFilter(t,i,s)}removeFilter(t,i){this.Jt[t]&&(this.Jt[t]=this.Jt[t].filter((t=>t.fn!==i))),this.pswp&&this.pswp.removeFilter(t,i)}applyFilters(t,...i){var s;return null===(s=this.Jt[t])||void 0===s||s.forEach((t=>{i[0]=t.fn.apply(this,i)})),i[0]}on(t,i){var s,h;this.Yt[t]||(this.Yt[t]=[]),null===(s=this.Yt[t])||void 0===s||s.push(i),null===(h=this.pswp)||void 0===h||h.on(t,i)}off(t,i){var s;this.Yt[t]&&(this.Yt[t]=this.Yt[t].filter((t=>i!==t))),null===(s=this.pswp)||void 0===s||s.off(t,i)}dispatch(t,i){var s;if(this.pswp)return this.pswp.dispatch(t,i);const h=new j(t,i);return null===(s=this.Yt[t])||void 0===s||s.forEach((t=>{t.call(this,h)})),h}}{getNumItems(){var t;let i=0;const s=null===(t=this.options)||void 0===t?void 0:t.dataSource;s&&"length"in s?i=s.length:s&&"gallery"in s&&(s.items||(s.items=this.Qt(s.gallery)),s.items&&(i=s.items.length));const h=this.dispatch("numItems",{dataSource:s,numItems:i});return this.applyFilters("numItems",h.numItems,s)}createContentFromData(t,i){return new Y(t,this,i)}getItemData(t){var i;const s=null===(i=this.options)||void 0===i?void 0:i.dataSource;let h={};Array.isArray(s)?h=s[t]:s&&"gallery"in s&&(s.items||(s.items=this.Qt(s.gallery)),h=s.items[t]);let e=h;e instanceof Element&&(e=this.ti(e));const n=this.dispatch("itemData",{itemData:e||{},index:t});return this.applyFilters("itemData",n.itemData,t)}Qt(t){var i,s;return null!==(i=this.options)&&void 0!==i&&i.children||null!==(s=this.options)&&void 0!==s&&s.childSelector?function(t,i,s=document){let h=[];if(t instanceof Element)h=[t];else if(t instanceof NodeList||Array.isArray(t))h=Array.from(t);else{const e="string"==typeof t?t:i;e&&(h=Array.from(s.querySelectorAll(e)))}return h}(this.options.children,this.options.childSelector,t)||[]:[t]}ti(t){const i={element:t},s="A"===t.tagName?t:t.querySelector("a");if(s){i.src=s.dataset.pswpSrc||s.href,s.dataset.pswpSrcset&&(i.srcset=s.dataset.pswpSrcset),i.width=s.dataset.pswpWidth?parseInt(s.dataset.pswpWidth,10):0,i.height=s.dataset.pswpHeight?parseInt(s.dataset.pswpHeight,10):0,i.w=i.width,i.h=i.height,s.dataset.pswpType&&(i.type=s.dataset.pswpType);const e=t.querySelector("img");var h;if(e)i.msrc=e.currentSrc||e.src,i.alt=null!==(h=e.getAttribute("alt"))&&void 0!==h?h:"";(s.dataset.pswpCropped||s.dataset.cropped)&&(i.thumbCropped=!0)}return this.applyFilters("domItemData",i,t,s)}lazyLoadData(t,i){return J(t,this,i)}}{constructor(t){super(),this.options=this.ii(t||{}),this.offset={x:0,y:0},this.si={x:0,y:0},this.viewportSize={x:0,y:0},this.bgOpacity=1,this.currIndex=0,this.potentialIndex=0,this.isOpen=!1,this.isDestroying=!1,this.hasMouse=!1,this.hi={},this.Gt=void 0,this.topBar=void 0,this.element=void 0,this.template=void 0,this.container=void 0,this.scrollWrap=void 0,this.currSlide=void 0,this.events=new f,this.animations=new F,this.mainScroll=new A(this),this.gestures=new T(this),this.opener=new it(this),this.keyboard=new E(this),this.contentLoader=new Q(this)}init(){if(this.isOpen||this.isDestroying)return!1;this.isOpen=!0,this.dispatch("init"),this.dispatch("beforeOpen"),this.ei();let t="pswp--open";return this.gestures.supportsTouch&&(t+=" pswp--touch"),this.options.mainClass&&(t+=" "+this.options.mainClass),this.element&&(this.element.className+=" "+t),this.currIndex=this.options.index||0,this.potentialIndex=this.currIndex,this.dispatch("firstUpdate"),this.scrollWheel=new O(this),(Number.isNaN(this.currIndex)||this.currIndex<0||this.currIndex>=this.getNumItems())&&(this.currIndex=0),this.gestures.supportsTouch||this.mouseDetected(),this.updateSize(),this.offset.y=window.pageYOffset,this.hi=this.getItemData(this.currIndex),this.dispatch("gettingData",{index:this.currIndex,data:this.hi,slide:void 0}),this.Gt=this.getThumbBounds(),this.dispatch("initialLayout"),this.on("openingAnimationEnd",(()=>{const{itemHolders:t}=this.mainScroll;t[0]&&(t[0].el.style.display="block",this.setContent(t[0],this.currIndex-1)),t[2]&&(t[2].el.style.display="block",this.setContent(t[2],this.currIndex+1)),this.appendHeavy(),this.contentLoader.updateLazy(),this.events.add(window,"resize",this.ni.bind(this)),this.events.add(window,"scroll",this.oi.bind(this)),this.dispatch("bindEvents")})),this.mainScroll.itemHolders[1]&&this.setContent(this.mainScroll.itemHolders[1],this.currIndex),this.dispatch("change"),this.opener.open(),this.dispatch("afterInit"),!0}getLoopedIndex(t){const i=this.getNumItems();return this.options.loop&&(t>i-1&&(t-=i),t<0&&(t+=i)),n(t,0,i-1)}appendHeavy(){this.mainScroll.itemHolders.forEach((t=>{var i;null===(i=t.slide)||void 0===i||i.appendHeavy()}))}goTo(t){this.mainScroll.moveIndexBy(this.getLoopedIndex(t)-this.potentialIndex)}next(){this.goTo(this.potentialIndex+1)}prev(){this.goTo(this.potentialIndex-1)}zoomTo(...t){var i;null===(i=this.currSlide)||void 0===i||i.zoomTo(...t)}toggleZoom(){var t;null===(t=this.currSlide)||void 0===t||t.toggleZoom()}close(){this.opener.isOpen&&!this.isDestroying&&(this.isDestroying=!0,this.dispatch("close"),this.events.removeAll(),this.opener.close())}destroy(){var t;if(!this.isDestroying)return this.options.showHideAnimationType="none",void this.close();this.dispatch("destroy"),this.Yt={},this.scrollWrap&&(this.scrollWrap.ontouchmove=null,this.scrollWrap.ontouchend=null),null===(t=this.element)||void 0===t||t.remove(),this.mainScroll.itemHolders.forEach((t=>{var i;null===(i=t.slide)||void 0===i||i.destroy()})),this.contentLoader.destroy(),this.events.removeAll()}refreshSlideContent(t){this.contentLoader.removeByIndex(t),this.mainScroll.itemHolders.forEach(((i,s)=>{var h,e;let n=(null!==(h=null===(e=this.currSlide)||void 0===e?void 0:e.index)&&void 0!==h?h:0)-1+s;var o;(this.canLoop()&&(n=this.getLoopedIndex(n)),n===t)&&(this.setContent(i,t,!0),1===s&&(this.currSlide=i.slide,null===(o=i.slide)||void 0===o||o.setIsActive(!0)))})),this.dispatch("change")}setContent(t,i,s){if(this.canLoop()&&(i=this.getLoopedIndex(i)),t.slide){if(t.slide.index===i&&!s)return;t.slide.destroy(),t.slide=void 0}if(!this.canLoop()&&(i<0||i>=this.getNumItems()))return;const h=this.getItemData(i);t.slide=new b(h,i,this),i===this.currIndex&&(this.currSlide=t.slide),t.slide.append(t.el)}getViewportCenterPoint(){return{x:this.viewportSize.x/2,y:this.viewportSize.y/2}}updateSize(t){if(this.isDestroying)return;const s=w(this.options,this);!t&&e(s,this.si)||(i(this.si,s),this.dispatch("beforeResize"),i(this.viewportSize,this.si),this.oi(),this.dispatch("viewportSize"),this.mainScroll.resize(this.opener.isOpen),!this.hasMouse&&window.matchMedia("(any-hover: hover)").matches&&this.mouseDetected(),this.dispatch("resize"))}applyBgOpacity(t){this.bgOpacity=Math.max(t,0),this.bg&&(this.bg.style.opacity=String(this.bgOpacity*this.options.bgOpacity))}mouseDetected(){var t;this.hasMouse||(this.hasMouse=!0,null===(t=this.element)||void 0===t||t.classList.add("pswp--has_mouse"))}ni(){this.updateSize(),/iPhone|iPad|iPod/i.test(window.navigator.userAgent)&&setTimeout((()=>{this.updateSize()}),500)}oi(){this.setScrollOffset(0,window.pageYOffset)}setScrollOffset(t,i){this.offset.x=t,this.offset.y=i,this.dispatch("updateScrollOffset")}ei(){this.element=t("pswp","div"),this.element.setAttribute("tabindex","-1"),this.element.setAttribute("role","dialog"),this.template=this.element,this.bg=t("pswp__bg","div",this.element),this.scrollWrap=t("pswp__scroll-wrap","section",this.element),this.container=t("pswp__container","div",this.scrollWrap),this.scrollWrap.setAttribute("aria-roledescription","carousel"),this.container.setAttribute("aria-live","off"),this.container.setAttribute("id","pswp__items"),this.mainScroll.appendHolders(),this.ui=new W(this),this.ui.init(),(this.options.appendToEl||document.body).appendChild(this.element)}getThumbBounds(){return function(t,i,s){const h=s.dispatch("thumbBounds",{index:t,itemData:i,instance:s});if(h.thumbBounds)return h.thumbBounds;const{element:e}=i;let n,o;if(e&&!1!==s.options.thumbSelector){const t=s.options.thumbSelector||"img";o=e.matches(t)?e:e.querySelector(t)}return o=s.applyFilters("thumbEl",o,i,t),o&&(n=i.thumbCropped?function(t,i,s){const h=t.getBoundingClientRect(),e=h.width/i,n=h.height/s,o=e>n?e:n,r=(h.width-i*o)/2,a=(h.height-s*o)/2,l={x:h.left+r,y:h.top+a,w:i*o};return l.innerRect={w:h.width,h:h.height,x:r,y:a},l}(o,i.width||i.w||0,i.height||i.h||0):function(t){const i=t.getBoundingClientRect();return{x:i.left,y:i.top,w:i.width}}(o)),s.applyFilters("thumbBounds",n,i,t)}(this.currIndex,this.currSlide?this.currSlide.data:this.hi,this)}canLoop(){return this.options.loop&&this.getNumItems()>2}ii(t){return window.matchMedia("(prefers-reduced-motion), (update: slow)").matches&&(t.showHideAnimationType="none",t.zoomAnimationDuration=0),{...st,...t}}}}));
</script> <script>
/*!
* PhotoSwipe Lightbox 5.4.2 - https://photoswipe.com
* (c) 2023 Dmytro Semenov
*/
!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(t="undefined"!=typeof globalThis?globalThis:t||self).PhotoSwipeLightbox=i()}(this,(function(){"use strict";function t(t,i,s){const h=document.createElement(i);return t&&(h.className=t),s&&s.appendChild(h),h}function i(t,i,s){t.style.width="number"==typeof i?`${i}px`:i,t.style.height="number"==typeof s?`${s}px`:s}const s="idle",h="loading",e="loaded",n="error";function o(t,i,s=document){let h=[];if(t instanceof Element)h=[t];else if(t instanceof NodeList||Array.isArray(t))h=Array.from(t);else{const e="string"==typeof t?t:i;e&&(h=Array.from(s.querySelectorAll(e)))}return h}function r(){return!(!navigator.vendor||!navigator.vendor.match(/apple/i))}class l{constructor(t,i){this.type=t,this.defaultPrevented=!1,i&&Object.assign(this,i)}preventDefault(){this.defaultPrevented=!0}}class a{constructor(i,s){if(this.element=t("pswp__img pswp__img--placeholder",i?"img":"div",s),i){const t=this.element;t.decoding="async",t.alt="",t.src=i,t.setAttribute("role","presentation")}this.element.setAttribute("aria-hidden","true")}setDisplayedSize(t,s){this.element&&("IMG"===this.element.tagName?(i(this.element,250,"auto"),this.element.style.transformOrigin="0 0",this.element.style.transform=function(t,i,s){let h=`translate3d(${t}px,${i||0}px,0)`;return void 0!==s&&(h+=` scale3d(${s},${s},1)`),h}(0,0,t/250)):i(this.element,t,s))}destroy(){var t;null!==(t=this.element)&&void 0!==t&&t.parentNode&&this.element.remove(),this.element=null}}class d{constructor(t,i,h){this.instance=i,this.data=t,this.index=h,this.element=void 0,this.placeholder=void 0,this.slide=void 0,this.displayedImageWidth=0,this.displayedImageHeight=0,this.width=Number(this.data.w)||Number(this.data.width)||0,this.height=Number(this.data.h)||Number(this.data.height)||0,this.isAttached=!1,this.hasSlide=!1,this.isDecoding=!1,this.state=s,this.data.type?this.type=this.data.type:this.data.src?this.type="image":this.type="html",this.instance.dispatch("contentInit",{content:this})}removePlaceholder(){this.placeholder&&!this.keepPlaceholder()&&setTimeout((()=>{this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0)}),1e3)}load(i,s){if(this.slide&&this.usePlaceholder())if(this.placeholder){const t=this.placeholder.element;t&&!t.parentElement&&this.slide.container.prepend(t)}else{const t=this.instance.applyFilters("placeholderSrc",!(!this.data.msrc||!this.slide.isFirstSlide)&&this.data.msrc,this);this.placeholder=new a(t,this.slide.container)}this.element&&!s||this.instance.dispatch("contentLoad",{content:this,isLazy:i}).defaultPrevented||(this.isImageContent()?(this.element=t("pswp__img","img"),this.displayedImageWidth&&this.loadImage(i)):(this.element=t("pswp__content","div"),this.element.innerHTML=this.data.html||""),s&&this.slide&&this.slide.updateContentSize(!0))}loadImage(t){var i,s;if(!this.isImageContent()||!this.element||this.instance.dispatch("contentLoadImage",{content:this,isLazy:t}).defaultPrevented)return;const e=this.element;this.updateSrcsetSizes(),this.data.srcset&&(e.srcset=this.data.srcset),e.src=null!==(i=this.data.src)&&void 0!==i?i:"",e.alt=null!==(s=this.data.alt)&&void 0!==s?s:"",this.state=h,e.complete?this.onLoaded():(e.onload=()=>{this.onLoaded()},e.onerror=()=>{this.onError()})}setSlide(t){this.slide=t,this.hasSlide=!0,this.instance=t.pswp}onLoaded(){this.state=e,this.slide&&this.element&&(this.instance.dispatch("loadComplete",{slide:this.slide,content:this}),this.slide.isActive&&this.slide.heavyAppended&&!this.element.parentNode&&(this.append(),this.slide.updateContentSize(!0)),this.state!==e&&this.state!==n||this.removePlaceholder())}onError(){this.state=n,this.slide&&(this.displayError(),this.instance.dispatch("loadComplete",{slide:this.slide,isError:!0,content:this}),this.instance.dispatch("loadError",{slide:this.slide,content:this}))}isLoading(){return this.instance.applyFilters("isContentLoading",this.state===h,this)}isError(){return this.state===n}isImageContent(){return"image"===this.type}setDisplayedSize(t,s){if(this.element&&(this.placeholder&&this.placeholder.setDisplayedSize(t,s),!this.instance.dispatch("contentResize",{content:this,width:t,height:s}).defaultPrevented&&(i(this.element,t,s),this.isImageContent()&&!this.isError()))){const i=!this.displayedImageWidth&&t;this.displayedImageWidth=t,this.displayedImageHeight=s,i?this.loadImage(!1):this.updateSrcsetSizes(),this.slide&&this.instance.dispatch("imageSizeChange",{slide:this.slide,width:t,height:s,content:this})}}isZoomable(){return this.instance.applyFilters("isContentZoomable",this.isImageContent()&&this.state!==n,this)}updateSrcsetSizes(){if(!this.isImageContent()||!this.element||!this.data.srcset)return;const t=this.element,i=this.instance.applyFilters("srcsetSizesWidth",this.displayedImageWidth,this);(!t.dataset.largestUsedSize||i>parseInt(t.dataset.largestUsedSize,10))&&(t.sizes=i+"px",t.dataset.largestUsedSize=String(i))}usePlaceholder(){return this.instance.applyFilters("useContentPlaceholder",this.isImageContent(),this)}lazyLoad(){this.instance.dispatch("contentLazyLoad",{content:this}).defaultPrevented||this.load(!0)}keepPlaceholder(){return this.instance.applyFilters("isKeepingPlaceholder",this.isLoading(),this)}destroy(){this.hasSlide=!1,this.slide=void 0,this.instance.dispatch("contentDestroy",{content:this}).defaultPrevented||(this.remove(),this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0),this.isImageContent()&&this.element&&(this.element.onload=null,this.element.onerror=null,this.element=void 0))}displayError(){if(this.slide){var i,s;let h=t("pswp__error-msg","div");h.innerText=null!==(i=null===(s=this.instance.options)||void 0===s?void 0:s.errorMsg)&&void 0!==i?i:"",h=this.instance.applyFilters("contentErrorElement",h,this),this.element=t("pswp__content pswp__error-msg-container","div"),this.element.appendChild(h),this.slide.container.innerText="",this.slide.container.appendChild(this.element),this.slide.updateContentSize(!0),this.removePlaceholder()}}append(){if(this.isAttached||!this.element)return;if(this.isAttached=!0,this.state===n)return void this.displayError();if(this.instance.dispatch("contentAppend",{content:this}).defaultPrevented)return;const t="decode"in this.element;this.isImageContent()?t&&this.slide&&(!this.slide.isActive||r())?(this.isDecoding=!0,this.element.decode().catch((()=>{})).finally((()=>{this.isDecoding=!1,this.appendImage()}))):this.appendImage():this.slide&&!this.element.parentNode&&this.slide.container.appendChild(this.element)}activate(){!this.instance.dispatch("contentActivate",{content:this}).defaultPrevented&&this.slide&&(this.isImageContent()&&this.isDecoding&&!r()?this.appendImage():this.isError()&&this.load(!1,!0),this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","false"))}deactivate(){this.instance.dispatch("contentDeactivate",{content:this}),this.slide&&this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","true")}remove(){this.isAttached=!1,this.instance.dispatch("contentRemove",{content:this}).defaultPrevented||(this.element&&this.element.parentNode&&this.element.remove(),this.placeholder&&this.placeholder.element&&this.placeholder.element.remove())}appendImage(){this.isAttached&&(this.instance.dispatch("contentAppendImage",{content:this}).defaultPrevented||(this.slide&&this.element&&!this.element.parentNode&&this.slide.container.appendChild(this.element),this.state!==e&&this.state!==n||this.removePlaceholder()))}}function c(t,i,s,h,e){let n=0;if(i.paddingFn)n=i.paddingFn(s,h,e)[t];else if(i.padding)n=i.padding[t];else{const s="padding"+t[0].toUpperCase()+t.slice(1);i[s]&&(n=i[s])}return Number(n)||0}class u{constructor(t,i,s,h){this.pswp=h,this.options=t,this.itemData=i,this.index=s,this.panAreaSize=null,this.elementSize=null,this.fit=1,this.fill=1,this.vFill=1,this.initial=1,this.secondary=1,this.max=1,this.min=1}update(t,i,s){const h={x:t,y:i};this.elementSize=h,this.panAreaSize=s;const e=s.x/h.x,n=s.y/h.y;this.fit=Math.min(1,e<n?e:n),this.fill=Math.min(1,e>n?e:n),this.vFill=Math.min(1,n),this.initial=this.t(),this.secondary=this.i(),this.max=Math.max(this.initial,this.secondary,this.o()),this.min=Math.min(this.fit,this.initial,this.secondary),this.pswp&&this.pswp.dispatch("zoomLevelsUpdate",{zoomLevels:this,slideData:this.itemData})}l(t){const i=t+"ZoomLevel",s=this.options[i];if(s)return"function"==typeof s?s(this):"fill"===s?this.fill:"fit"===s?this.fit:Number(s)}i(){let t=this.l("secondary");return t||(t=Math.min(1,3*this.fit),this.elementSize&&t*this.elementSize.x>4e3&&(t=4e3/this.elementSize.x),t)}t(){return this.l("initial")||this.fit}o(){return this.l("max")||Math.max(1,4*this.fit)}}function p(t,i,s){const h=i.createContentFromData(t,s);let e;const{options:n}=i;if(n){let o;e=new u(n,t,-1),o=i.pswp?i.pswp.viewportSize:function(t,i){if(t.getViewportSizeFn){const s=t.getViewportSizeFn(t,i);if(s)return s}return{x:document.documentElement.clientWidth,y:window.innerHeight}}(n,i);const r=function(t,i,s,h){return{x:i.x-c("left",t,i,s,h)-c("right",t,i,s,h),y:i.y-c("top",t,i,s,h)-c("bottom",t,i,s,h)}}(n,o,t,s);e.update(h.width,h.height,r)}return h.lazyLoad(),e&&h.setDisplayedSize(Math.ceil(h.width*e.initial),Math.ceil(h.height*e.initial)),h}return class extends class extends class{constructor(){this.u={},this.p={},this.pswp=void 0,this.options=void 0}addFilter(t,i,s=100){var h,e,n;this.p[t]||(this.p[t]=[]),null===(h=this.p[t])||void 0===h||h.push({fn:i,priority:s}),null===(e=this.p[t])||void 0===e||e.sort(((t,i)=>t.priority-i.priority)),null===(n=this.pswp)||void 0===n||n.addFilter(t,i,s)}removeFilter(t,i){this.p[t]&&(this.p[t]=this.p[t].filter((t=>t.fn!==i))),this.pswp&&this.pswp.removeFilter(t,i)}applyFilters(t,...i){var s;return null===(s=this.p[t])||void 0===s||s.forEach((t=>{i[0]=t.fn.apply(this,i)})),i[0]}on(t,i){var s,h;this.u[t]||(this.u[t]=[]),null===(s=this.u[t])||void 0===s||s.push(i),null===(h=this.pswp)||void 0===h||h.on(t,i)}off(t,i){var s;this.u[t]&&(this.u[t]=this.u[t].filter((t=>i!==t))),null===(s=this.pswp)||void 0===s||s.off(t,i)}dispatch(t,i){var s;if(this.pswp)return this.pswp.dispatch(t,i);const h=new l(t,i);return null===(s=this.u[t])||void 0===s||s.forEach((t=>{t.call(this,h)})),h}}{getNumItems(){var t;let i=0;const s=null===(t=this.options)||void 0===t?void 0:t.dataSource;s&&"length"in s?i=s.length:s&&"gallery"in s&&(s.items||(s.items=this.v(s.gallery)),s.items&&(i=s.items.length));const h=this.dispatch("numItems",{dataSource:s,numItems:i});return this.applyFilters("numItems",h.numItems,s)}createContentFromData(t,i){return new d(t,this,i)}getItemData(t){var i;const s=null===(i=this.options)||void 0===i?void 0:i.dataSource;let h={};Array.isArray(s)?h=s[t]:s&&"gallery"in s&&(s.items||(s.items=this.v(s.gallery)),h=s.items[t]);let e=h;e instanceof Element&&(e=this.m(e));const n=this.dispatch("itemData",{itemData:e||{},index:t});return this.applyFilters("itemData",n.itemData,t)}v(t){var i,s;return null!==(i=this.options)&&void 0!==i&&i.children||null!==(s=this.options)&&void 0!==s&&s.childSelector?o(this.options.children,this.options.childSelector,t)||[]:[t]}m(t){const i={element:t},s="A"===t.tagName?t:t.querySelector("a");if(s){i.src=s.dataset.pswpSrc||s.href,s.dataset.pswpSrcset&&(i.srcset=s.dataset.pswpSrcset),i.width=s.dataset.pswpWidth?parseInt(s.dataset.pswpWidth,10):0,i.height=s.dataset.pswpHeight?parseInt(s.dataset.pswpHeight,10):0,i.w=i.width,i.h=i.height,s.dataset.pswpType&&(i.type=s.dataset.pswpType);const e=t.querySelector("img");var h;if(e)i.msrc=e.currentSrc||e.src,i.alt=null!==(h=e.getAttribute("alt"))&&void 0!==h?h:"";(s.dataset.pswpCropped||s.dataset.cropped)&&(i.thumbCropped=!0)}return this.applyFilters("domItemData",i,t,s)}lazyLoadData(t,i){return p(t,this,i)}}{constructor(t){super(),this.options=t||{},this.g=0,this.shouldOpen=!1,this._=void 0,this.onThumbnailsClick=this.onThumbnailsClick.bind(this)}init(){o(this.options.gallery,this.options.gallerySelector).forEach((t=>{t.addEventListener("click",this.onThumbnailsClick,!1)}))}onThumbnailsClick(t){if(function(t){return"button"in t&&1===t.button||t.ctrlKey||t.metaKey||t.altKey||t.shiftKey}(t)||window.pswp)return;let i={x:t.clientX,y:t.clientY};i.x||i.y||(i=null);let s=this.getClickedIndex(t);s=this.applyFilters("clickedIndex",s,t,this);const h={gallery:t.currentTarget};s>=0&&(t.preventDefault(),this.loadAndOpen(s,h,i))}getClickedIndex(t){if(this.options.getClickedIndexFn)return this.options.getClickedIndexFn.call(this,t);const i=t.target,s=o(this.options.children,this.options.childSelector,t.currentTarget).findIndex((t=>t===i||t.contains(i)));return-1!==s?s:this.options.children||this.options.childSelector?-1:0}loadAndOpen(t,i,s){if(window.pswp||!this.options)return!1;if(!i&&this.options.gallery&&this.options.children){const t=o(this.options.gallery);t[0]&&(i={gallery:t[0]})}return this.options.index=t,this.options.initialPointerPos=s,this.shouldOpen=!0,this.preload(t,i),!0}preload(t,i){const{options:s}=this;i&&(s.dataSource=i);const h=[],e=typeof s.pswpModule;if("function"==typeof(n=s.pswpModule)&&n.prototype&&n.prototype.goTo)h.push(Promise.resolve(s.pswpModule));else{if("string"===e)throw new Error("pswpModule as string is no longer supported");if("function"!==e)throw new Error("pswpModule is not valid");h.push(s.pswpModule())}var n;"function"==typeof s.openPromise&&h.push(s.openPromise()),!1!==s.preloadFirstSlide&&t>=0&&(this._=function(t,i){const s=i.getItemData(t);if(!i.dispatch("lazyLoadSlide",{index:t,itemData:s}).defaultPrevented)return p(s,i,t)}(t,this));const o=++this.g;Promise.all(h).then((t=>{if(this.shouldOpen){const i=t[0];this.I(i,o)}}))}I(t,i){if(i!==this.g&&this.shouldOpen)return;if(this.shouldOpen=!1,window.pswp)return;const s="object"==typeof t?new t.default(this.options):new t(this.options);this.pswp=s,window.pswp=s,Object.keys(this.u).forEach((t=>{var i;null===(i=this.u[t])||void 0===i||i.forEach((i=>{s.on(t,i)}))})),Object.keys(this.p).forEach((t=>{var i;null===(i=this.p[t])||void 0===i||i.forEach((i=>{s.addFilter(t,i.fn,i.priority)}))})),this._&&(s.contentLoader.addToCache(this._),this._=void 0),s.on("destroy",(()=>{this.pswp=void 0,delete window.pswp})),s.init()}destroy(){var t;null===(t=this.pswp)||void 0===t||t.destroy(),this.shouldOpen=!1,this.u={},o(this.options.gallery,this.options.gallerySelector).forEach((t=>{t.removeEventListener("click",this.onThumbnailsClick,!1)}))}}}));
</script> <style>
/*! PhotoSwipe main CSS by Dmytro Semenov | photoswipe.com */.pswp{--pswp-bg:#000;--pswp-placeholder-bg:#222;--pswp-root-z-index:100000;--pswp-preloader-color:rgba(79, 79, 79, 0.4);--pswp-preloader-color-secondary:rgba(255, 255, 255, 0.9);--pswp-icon-color:#fff;--pswp-icon-color-secondary:#4f4f4f;--pswp-icon-stroke-color:#4f4f4f;--pswp-icon-stroke-width:2px;--pswp-error-text-color:var(--pswp-icon-color)}.pswp{position:fixed;top:0;left:0;width:100%;height:100%;z-index:var(--pswp-root-z-index);display:none;touch-action:none;outline:0;opacity:.003;contain:layout style size;-webkit-tap-highlight-color:transparent}.pswp:focus{outline:0}.pswp *{box-sizing:border-box}.pswp img{max-width:none}.pswp--open{display:block}.pswp,.pswp__bg{transform:translateZ(0);will-change:opacity}.pswp__bg{opacity:.005;background:var(--pswp-bg)}.pswp,.pswp__scroll-wrap{overflow:hidden}.pswp__bg,.pswp__container,.pswp__content,.pswp__img,.pswp__item,.pswp__scroll-wrap,.pswp__zoom-wrap{position:absolute;top:0;left:0;width:100%;height:100%}.pswp__img,.pswp__zoom-wrap{width:auto;height:auto}.pswp--click-to-zoom.pswp--zoom-allowed .pswp__img{cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.pswp--click-to-zoom.pswp--zoomed-in .pswp__img{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.pswp--click-to-zoom.pswp--zoomed-in .pswp__img:active{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.pswp--no-mouse-drag.pswp--zoomed-in .pswp__img,.pswp--no-mouse-drag.pswp--zoomed-in .pswp__img:active,.pswp__img{cursor:-webkit-zoom-out;cursor:-moz-zoom-out;cursor:zoom-out}.pswp__button,.pswp__container,.pswp__counter,.pswp__img{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.pswp__item{z-index:1;overflow:hidden}.pswp__hidden{display:none!important}.pswp__content{pointer-events:none}.pswp__content>*{pointer-events:auto}.pswp__error-msg-container{display:grid}.pswp__error-msg{margin:auto;font-size:1em;line-height:1;color:var(--pswp-error-text-color)}.pswp .pswp__hide-on-close{opacity:.005;will-change:opacity;transition:opacity var(--pswp-transition-duration) cubic-bezier(.4,0,.22,1);z-index:10;pointer-events:none}.pswp--ui-visible .pswp__hide-on-close{opacity:1;pointer-events:auto}.pswp__button{position:relative;display:block;width:50px;height:60px;padding:0;margin:0;overflow:hidden;cursor:pointer;background:0 0;border:0;box-shadow:none;opacity:.85;-webkit-appearance:none;-webkit-touch-callout:none}.pswp__button:active,.pswp__button:focus,.pswp__button:hover{transition:none;padding:0;background:0 0;border:0;box-shadow:none;opacity:1}.pswp__button:disabled{opacity:.3;cursor:auto}.pswp__icn{fill:var(--pswp-icon-color);color:var(--pswp-icon-color-secondary)}.pswp__icn{position:absolute;top:14px;left:9px;width:32px;height:32px;overflow:hidden;pointer-events:none}.pswp__icn-shadow{stroke:var(--pswp-icon-stroke-color);stroke-width:var(--pswp-icon-stroke-width);fill:none}.pswp__icn:focus{outline:0}.pswp__img--with-bg,div.pswp__img--placeholder{background:var(--pswp-placeholder-bg)}.pswp__top-bar{position:absolute;left:0;top:0;width:100%;height:60px;display:flex;flex-direction:row;justify-content:flex-end;z-index:10;pointer-events:none!important}.pswp__top-bar>*{pointer-events:auto;will-change:opacity}.pswp__button--close{margin-right:6px}.pswp__button--arrow{position:absolute;top:0;width:75px;height:100px;top:50%;margin-top:-50px}.pswp__button--arrow:disabled{display:none;cursor:default}.pswp__button--arrow .pswp__icn{top:50%;margin-top:-30px;width:60px;height:60px;background:0 0;border-radius:0}.pswp--one-slide .pswp__button--arrow{display:none}.pswp--touch .pswp__button--arrow{visibility:hidden}.pswp--has_mouse .pswp__button--arrow{visibility:visible}.pswp__button--arrow--prev{right:auto;left:0}.pswp__button--arrow--next{right:0}.pswp__button--arrow--next .pswp__icn{left:auto;right:14px;transform:scale(-1,1)}.pswp__button--zoom{display:none}.pswp--zoom-allowed .pswp__button--zoom{display:block}.pswp--zoomed-in .pswp__zoom-icn-bar-v{display:none}.pswp__preloader{position:relative;overflow:hidden;width:50px;height:60px;margin-right:auto}.pswp__preloader .pswp__icn{opacity:0;transition:opacity .2s linear;animation:pswp-clockwise .6s linear infinite}.pswp__preloader--active .pswp__icn{opacity:.85}@keyframes pswp-clockwise{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.pswp__counter{height:30px;margin-top:15px;margin-inline-start:20px;font-size:14px;line-height:30px;color:var(--pswp-icon-color);text-shadow:1px 1px 3px var(--pswp-icon-color-secondary);opacity:.85}.pswp--one-slide .pswp__counter{display:none}
</style>
<!-- True Anthem -->
<script src="//static.trueanthem.com/scripts/ta.js"></script>
<!-- IMGJS -->
<script src="https://cdn.insightmediagroup.io/imgjs/v1/imgjs-v1.js?t=1789135412"></script>
<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,rgb(6,147,227) 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,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 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 rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}: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;}
/*# sourceURL=global-styles-inline-css */
</style>
</head>
<body class="wp-singular post-template-default single single-post postid-22716714 single-format-standard wp-theme-tns-2022">
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NJH9PKQS" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<script>
$(document).ready(function() {
window.tns = window.tns || {}
window.tns.getUTMParameterValue = function(name) {
const urlParams = new URLSearchParams(window.location.search)
return urlParams.get(name)
}
window.tns.setCookie = function(key, value, hours_expiry) {
const expiry_date = new Date()
expiry_date.setTime(expiry_date.getTime() + hours_expiry * 60 * 60 * 1000)
document.cookie = `${key}=${value};expires=${expiry_date.toUTCString()};samesite=lax;path=/;secure`
}
window.tns.getCookie = function(key) {
return document.cookie
.split('; ')
.find((row) => row.startsWith(`${key}=`))
?.split('=')[1]
}
})
</script> <script>
$(document).ready(function() {
window.tns.newsletter = {
signup : function(params, callback) {
var context = params.context;
var newsletterID = params.newsletterID;
var email = params.email;
var emailInput = params.emailInput;
var newsletterTitle = '';
var newsletterSlug = '';
// var tnsDailyID = '6166149401';
// var tnsWeeklyID = 'd60fc24015';
if (newsletterID === '6166149401') {
newsletterTitle = 'TNS Daily';
newsletterSlug = 'tns-daily';
}
if (newsletterID === 'd60fc24015') {
newsletterTitle = 'TNS Update';
newsletterSlug = 'tns-update';
}
var data = null;
async.series([
validate,
subscribe,
handleError,
confirmation
], function(result) {
console.log(result.message);
if (callback) return callback(result);
});
function validate(next) {
if (!email || !validator.isEmail(email)) {
emailInput.addClass('error');
return next({
error : true,
message : 'NEWSLETTER SIGNUP: Halting, invalid email.'
});
}
return next();
}
function subscribe(next) {
$.post('/no-cache/newsletter-subscribe/', {
email : email,
subscriptions : [
newsletterID
]
}, function(result) {
data = JSON.parse(result);
window.dataLayer.push({
'event' : 'newsletter_subscription',
'newsletter' : newsletterSlug,
'context' : context
});
return next();
});
}
function handleError(next) {
/// New sign-up
if (!data.member) return next();
/// Previously unsubscribed
if (data.member.status === 'unsubscribed') {
window.tns.modal.open({
title : 'PLEASE RESUBSCRIBE',
content : 'You have previously unsubcribed from ' + newsletterTitle + '. In order to resubscribe please click OK to open the resubscription form.'
});
$('.tns-modal-button-okay').off();
$('.tns-modal-button-okay').on('click', function() {
location.href = 'https://eepurl.com/bMg5kH';
});
emailInput.val('');
return next({
error : true,
message : 'NEWSLETTER SIGNUP: Halting, member previously unsubscribed.'
});
}
return next();
}
function confirmation(next) {
var msg = '';
if (data.audience.title === 'Member Exists') {
msg = 'You have been successfully subscribed to the ' + newsletterTitle + ' newsletter.';
} else {
msg = 'You have been successfully subscribed to the ' + newsletterTitle + ' newsletter. Please check your inbox for an email confirmation link.';
}
window.tns.modal.open({
title : '200 OK',
content : msg
});
emailInput.val('');
$('.tns-modal-button-okay').off();
$('.tns-modal-button-okay').on('click', function() {
window.tns.modal.close();
});
return next({
error : false,
message : 'NEWSLETTER SIGNUP: Newsletter subscription complete.'
});
}
}
}
});
</script> <script>
$(document).ready(function() {
window.tns = window.tns || {}
window.tns.user = {
_userPseudoId: null,
_storageKey: 'tns-user-pseudo-id',
_storageExpiry: 'tns-user-pseudo-id-expiry',
generateUserPseudoId: function() {
var uuid;
// Try modern crypto.randomUUID first
if (typeof crypto !== 'undefined' && crypto.randomUUID) {
uuid = crypto.randomUUID();
console.log('[TNS User] Generated userPseudoId using crypto.randomUUID()');
} else {
// Fallback UUID v4 generation
uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random() * 16 | 0;
var v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
console.log('[TNS User] Generated userPseudoId using fallback method');
}
var userPseudoId = 'tns-' + uuid;
console.log('[TNS User] New userPseudoId created:', userPseudoId);
return userPseudoId;
},
setUserPseudoId: function(id, persistDays) {
if (!id) return false;
persistDays = persistDays || 365;
this._userPseudoId = id;
var expiryDate = new Date();
expiryDate.setTime(expiryDate.getTime() + (persistDays * 24 * 60 * 60 * 1000));
var expiryTimestamp = expiryDate.getTime();
// Try localStorage first
if (this._isStorageAvailable('localStorage')) {
try {
localStorage.setItem(this._storageKey, id);
localStorage.setItem(this._storageExpiry, expiryTimestamp.toString());
console.log('[TNS User] userPseudoId stored in localStorage:', id);
return true;
} catch (e) {
console.warn('[TNS User] localStorage failed, trying sessionStorage');
}
}
// Try sessionStorage fallback
if (this._isStorageAvailable('sessionStorage')) {
try {
sessionStorage.setItem(this._storageKey, id);
sessionStorage.setItem(this._storageExpiry, expiryTimestamp.toString());
console.log('[TNS User] userPseudoId stored in sessionStorage:', id);
return true;
} catch (e) {
console.warn('[TNS User] sessionStorage failed, trying cookies');
}
}
// Cookie fallback using existing TNS cookie utility
if (window.tns.setCookie) {
var hoursExpiry = persistDays * 24;
window.tns.setCookie(this._storageKey, id, hoursExpiry);
window.tns.setCookie(this._storageExpiry, expiryTimestamp.toString(), hoursExpiry);
console.log('[TNS User] userPseudoId stored in cookies:', id);
return true;
}
// If all storage methods fail, keep in memory for session
console.warn('[TNS User] All storage methods failed, userPseudoId will only persist for this session');
return false;
},
getUserPseudoId: function() {
// Return cached version if available
if (this._userPseudoId) {
console.log('[TNS User] Returning cached userPseudoId:', this._userPseudoId);
return this._userPseudoId;
}
var storedId = null;
var storedExpiry = null;
// Try localStorage first
if (this._isStorageAvailable('localStorage')) {
try {
storedId = localStorage.getItem(this._storageKey);
storedExpiry = localStorage.getItem(this._storageExpiry);
} catch (e) {
// localStorage access failed
}
}
// Try sessionStorage if localStorage didn't work
if (!storedId && this._isStorageAvailable('sessionStorage')) {
try {
storedId = sessionStorage.getItem(this._storageKey);
storedExpiry = sessionStorage.getItem(this._storageExpiry);
} catch (e) {
// sessionStorage access failed
}
}
// Try cookies if both storage methods failed
if (!storedId && window.tns.getCookie) {
storedId = window.tns.getCookie(this._storageKey);
storedExpiry = window.tns.getCookie(this._storageExpiry);
}
// Check if stored ID is expired
if (storedId && storedExpiry) {
var expiryTime = parseInt(storedExpiry);
var currentTime = new Date().getTime();
if (currentTime > expiryTime) {
// ID is expired, clean up and generate new one
console.log('[TNS User] userPseudoId expired, generating new one. Expired ID:', storedId);
this._cleanupExpiredId();
storedId = null;
} else {
console.log('[TNS User] Retrieved valid stored userPseudoId:', storedId);
}
}
// If no valid stored ID, generate a new one
if (!storedId) {
console.log('[TNS User] No valid stored userPseudoId found, generating new one');
storedId = this.generateUserPseudoId();
this.setUserPseudoId(storedId);
}
// Cache for future calls
this._userPseudoId = storedId;
console.log('[TNS User] userPseudoId ready for use:', storedId);
return storedId;
},
_isStorageAvailable: function(type) {
var storage;
try {
storage = window[type];
var x = '__storage_test__';
storage.setItem(x, x);
storage.removeItem(x);
return true;
} catch (e) {
return e instanceof DOMException && (
// everything except Firefox
e.code === 22 ||
// Firefox
e.code === 1014 ||
// test name field too, because code might not be present
// everything except Firefox
e.name === 'QuotaExceededError' ||
// Firefox
e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&
// acknowledge QuotaExceededError only if there's something already stored
(storage && storage.length !== 0);
}
},
_cleanupExpiredId: function() {
// Clean up from localStorage
if (this._isStorageAvailable('localStorage')) {
try {
localStorage.removeItem(this._storageKey);
localStorage.removeItem(this._storageExpiry);
} catch (e) {
// Cleanup failed
}
}
// Clean up from sessionStorage
if (this._isStorageAvailable('sessionStorage')) {
try {
sessionStorage.removeItem(this._storageKey);
sessionStorage.removeItem(this._storageExpiry);
} catch (e) {
// Cleanup failed
}
}
// Clean up cookies
if (window.tns.setCookie) {
window.tns.setCookie(this._storageKey, '', -1);
window.tns.setCookie(this._storageExpiry, '', -1);
}
// Clear cached version
this._userPseudoId = null;
}
}
})
</script> <div id="tns-modal-screen">
<div id="tns-modal">
<div class="tns-modal-title">
TNS
</div>
<div class="tns-modal-close">
<svg xmlns="http://www.w3.org/2000/svg" width="19.414" height="19.414" viewBox="0 0 19.414 19.414">
<g id="Group_891" data-name="Group 891" transform="translate(-167.793 -300.793)">
<path id="Line_226" data-name="Line 226" d="M17.293,18.707l-18-18L.707-.707l18,18Z" transform="translate(168.5 301.5)"/>
<path id="Line_227" data-name="Line 227" d="M.707,18.707-.707,17.293l18-18L18.707.707Z" transform="translate(168.5 301.5)"/>
</g>
</svg>
</div>
<div class="tns-modal-content">
</div>
<div class="tns-modal-buttons">
<button class="tns-modal-button-okay">
OK
</button>
</div>
</div>
</div>
<script>
$(document).ready(function() {
$modalScreen = $('#tns-modal-screen');
$modal = $('#tns-modal');
window.tns.modal = {
open : function(params) {
$('.tns-modal-title').html(params.title);
$('.tns-modal-content').html(params.content);
$modalScreen.stop().css({
opacity : 0,
display : 'block'
});
$modalScreen.stop().transition({
duration : 333,
opacity : 1,
easing : 'ease-out-quad'
});
$modal.stop().css({
opacity : 0,
display : 'block'
});
$modal.stop().transition({
duration : 333,
opacity : 1,
easing : 'ease-out-quad'
});
},
close : function() {
$modalScreen.stop().css({
opacity : 0,
display : 'block'
});
$modal.stop().transition({
duration : 333,
opacity : 0,
easing : 'ease-out-quad'
});
$modalScreen.stop().transition({
duration : 333,
opacity : 0,
easing : 'ease-out-quad'
}, function() {
$modalScreen.stop().css({
opacity : 0,
display : 'none'
});
$('.tns-modal-title').html('');
$('.tns-modal-content').html('');
});
}
}
$('.tns-modal-close').on('click', function() {
window.tns.modal.close();
});
});
</script>
<div id="tns-subscribe">
<div class="modal">
<div class="header">
<div class="title">
SUBSCRIBE
</div>
<div class="close">
<svg xmlns="http://www.w3.org/2000/svg" width="19.414" height="19.414" viewBox="0 0 19.414 19.414">
<g id="Group_891" data-name="Group 891" transform="translate(-167.793 -300.793)">
<path id="Line_226" data-name="Line 226" d="M17.293,18.707l-18-18L.707-.707l18,18Z" transform="translate(168.5 301.5)"/>
<path id="Line_227" data-name="Line 227" d="M.707,18.707-.707,17.293l18-18L18.707.707Z" transform="translate(168.5 301.5)"/>
</g>
</svg>
</div>
</div>
<div class="content">
<div class="swiper tns-subscribe-swiper">
<div class="swiper-wrapper">
<div class="swiper-slide">
<div class="copy copy-screen-0">
Join our community of software engineering leaders and aspirational developers. Always
stay in-the-know by getting the most important news and exclusive content delivered
fresh to your inbox to learn more about at-scale software development.
</div>
<div class="form">
<div class="form-field form-field-email">
<div class="row">
<div class="col col-75 form-field-label">
<label>EMAIL ADDRESS</label>
</div>
<div class="col col-25 form-field-info">
REQUIRED
</div>
</div>
<input type="email" data-key="EMAIL" class="subscribe-input subscribe-email">
<button class="subscribe-button">SUBSCRIBE</button>
</div>
<div class="form-field form-field-resubscribe">
<div class="row">
<div class="col col-75 form-field-label">
<label>RESUBSCRIPTION REQUIRED</label>
</div>
<div class="col col-25 form-field-info">
&nbsp;
</div>
</div>
<div class="copy">
It seems that you've previously unsubscribed from our newsletter
in the past. Click the button below to open the re-subscribe form
in a new tab. When you're done, simply close that tab and continue
with this form to complete your subscription.
</div>
<button class="resubscribe-button">RE-SUBSCRIBE</button>
</div>
<div class="subscribe-form-privacy">
The New Stack does not sell your information or share it with
unaffiliated third parties. By continuing, you agree to our
<a href="/terms-of-use/">Terms of Use</a> and
<a href="/privacy-policy/">Privacy Policy</a>.
</div>
</div>
</div>
<div class="swiper-slide">
<div class="heading">
Welcome and thank you for joining The New Stack community!
</div>
<div class="copy">
Please answer a few simple questions to help us deliver the news and resources you are interested in.
</div>
<div class="form">
<div class="form-field">
<div class="row">
<div class="col col-75 form-field-label">
<label>FIRST NAME</label>
</div>
<div class="col col-25 form-field-info">
REQUIRED
</div>
</div>
<input type="text" data-key="FNAME" class="subscribe-input subscribe-firstname">
</div>
<div class="form-field">
<div class="row">
<div class="col col-75 form-field-label">
<label>LAST NAME</label>
</div>
<div class="col col-25 form-field-info">
REQUIRED
</div>
</div>
<input type="text" data-key="LNAME" class="subscribe-input subscribe-lastname">
</div>
<div class="form-field">
<div class="row">
<div class="col col-75 form-field-label">
<label>COMPANY NAME</label>
</div>
<div class="col col-25 form-field-info">
REQUIRED
</div>
</div>
<input type="text" data-key="COMPANY" class="subscribe-input subscribe-company">
</div>
<div class="form-field">
<div class="row">
<div class="col col-75 form-field-label">
<label>COUNTRY</label>
</div>
<div class="col col-25 form-field-info">
REQUIRED
</div>
</div>
<select data-key="COUNTRY" class="subscribe-input subscribe-country">
<option value="">Select ...</option>
<option value="US">United States</option>
<option value="CA">Canada</option>
<option value="IN">India</option>
<option value="GB">United Kingdom</option>
<option value="DE">Germany</option>
<option value="FR">France</option>
<option value="--">---</option>
<option value="AF">Afghanistan</option>
<option value="AL">Albania</option>
<option value="DZ">Algeria</option>
<option value="AS">American Samoa</option>
<option value="AD">Andorra</option>
<option value="AO">Angola</option>
<option value="AI">Anguilla</option>
<option value="AQ">Antarctica</option>
<option value="AG">Antigua and Barbuda</option>
<option value="AR">Argentina</option>
<option value="AM">Armenia</option>
<option value="AW">Aruba</option>
<option value="AP">Asia/Pacific Region</option>
<option value="AU">Australia</option>
<option value="AT">Austria</option>
<option value="AZ">Azerbaijan</option>
<option value="BS">Bahamas</option>
<option value="BH">Bahrain</option>
<option value="BD">Bangladesh</option>
<option value="BB">Barbados</option>
<option value="BY">Belarus</option>
<option value="BE">Belgium</option>
<option value="BZ">Belize</option>
<option value="BJ">Benin</option>
<option value="BM">Bermuda</option>
<option value="BT">Bhutan</option>
<option value="BO">Bolivia</option>
<option value="BQ">Bonaire, Sint Eustatius and Saba</option>
<option value="BA">Bosnia and Herzegovina</option>
<option value="BW">Botswana</option>
<option value="BV">Bouvet Island</option>
<option value="BR">Brazil</option>
<option value="IO">British Indian Ocean Territory</option>
<option value="BN">Brunei Darussalam</option>
<option value="BG">Bulgaria</option>
<option value="BF">Burkina Faso</option>
<option value="BI">Burundi</option>
<option value="KH">Cambodia</option>
<option value="CM">Cameroon</option>
<option value="CA">Canada</option>
<option value="CV">Cape Verde</option>
<option value="KY">Cayman Islands</option>
<option value="CF">Central African Republic</option>
<option value="TD">Chad</option>
<option value="CL">Chile</option>
<option value="CN">China</option>
<option value="CX">Christmas Island</option>
<option value="CC">Cocos (Keeling) Islands</option>
<option value="CO">Colombia</option>
<option value="KM">Comoros</option>
<option value="CG">Congo</option>
<option value="CD">Congo, The Democratic Republic of the</option>
<option value="CK">Cook Islands</option>
<option value="CR">Costa Rica</option>
<option value="HR">Croatia</option>
<option value="CU">Cuba</option>
<option value="CW">Curaçao</option>
<option value="CY">Cyprus</option>
<option value="CZ">Czech Republic</option>
<option value="CI">Côte d'Ivoire</option>
<option value="DK">Denmark</option>
<option value="DJ">Djibouti</option>
<option value="DM">Dominica</option>
<option value="DO">Dominican Republic</option>
<option value="EC">Ecuador</option>
<option value="EG">Egypt</option>
<option value="SV">El Salvador</option>
<option value="GQ">Equatorial Guinea</option>
<option value="ER">Eritrea</option>
<option value="EE">Estonia</option>
<option value="ET">Ethiopia</option>
<option value="FK">Falkland Islands (Malvinas)</option>
<option value="FO">Faroe Islands</option>
<option value="FJ">Fiji</option>
<option value="FI">Finland</option>
<option value="FR">France</option>
<option value="GF">French Guiana</option>
<option value="PF">French Polynesia</option>
<option value="TF">French Southern Territories</option>
<option value="GA">Gabon</option>
<option value="GM">Gambia</option>
<option value="GE">Georgia</option>
<option value="DE">Germany</option>
<option value="GH">Ghana</option>
<option value="GI">Gibraltar</option>
<option value="GR">Greece</option>
<option value="GL">Greenland</option>
<option value="GD">Grenada</option>
<option value="GP">Guadeloupe</option>
<option value="GU">Guam</option>
<option value="GT">Guatemala</option>
<option value="GG">Guernsey</option>
<option value="GN">Guinea</option>
<option value="GW">Guinea-Bissau</option>
<option value="GY">Guyana</option>
<option value="HT">Haiti</option>
<option value="HM">Heard Island and Mcdonald Islands</option>
<option value="VA">Holy See (Vatican City State)</option>
<option value="HN">Honduras</option>
<option value="HK">Hong Kong</option>
<option value="HU">Hungary</option>
<option value="IS">Iceland</option>
<option value="IN">India</option>
<option value="ID">Indonesia</option>
<option value="IR">Iran, Islamic Republic Of</option>
<option value="IQ">Iraq</option>
<option value="IE">Ireland</option>
<option value="IM">Isle of Man</option>
<option value="IL">Israel</option>
<option value="IT">Italy</option>
<option value="JM">Jamaica</option>
<option value="JP">Japan</option>
<option value="JE">Jersey</option>
<option value="JO">Jordan</option>
<option value="KZ">Kazakhstan</option>
<option value="KE">Kenya</option>
<option value="KI">Kiribati</option>
<option value="KR">Korea, Republic of</option>
<option value="KW">Kuwait</option>
<option value="KG">Kyrgyzstan</option>
<option value="LA">Laos</option>
<option value="LV">Latvia</option>
<option value="LB">Lebanon</option>
<option value="LS">Lesotho</option>
<option value="LR">Liberia</option>
<option value="LY">Libyan Arab Jamahiriya</option>
<option value="LI">Liechtenstein</option>
<option value="LT">Lithuania</option>
<option value="LU">Luxembourg</option>
<option value="MO">Macao</option>
<option value="MG">Madagascar</option>
<option value="MW">Malawi</option>
<option value="MY">Malaysia</option>
<option value="MV">Maldives</option>
<option value="ML">Mali</option>
<option value="MT">Malta</option>
<option value="MH">Marshall Islands</option>
<option value="MQ">Martinique</option>
<option value="MR">Mauritania</option>
<option value="MU">Mauritius</option>
<option value="YT">Mayotte</option>
<option value="MX">Mexico</option>
<option value="FM">Micronesia, Federated States of</option>
<option value="MD">Moldova, Republic of</option>
<option value="MC">Monaco</option>
<option value="MN">Mongolia</option>
<option value="ME">Montenegro</option>
<option value="MS">Montserrat</option>
<option value="MA">Morocco</option>
<option value="MZ">Mozambique</option>
<option value="MM">Myanmar</option>
<option value="NA">Namibia</option>
<option value="NR">Nauru</option>
<option value="NP">Nepal</option>
<option value="NL">Netherlands</option>
<option value="AN">Netherlands Antilles</option>
<option value="NC">New Caledonia</option>
<option value="NZ">New Zealand</option>
<option value="NI">Nicaragua</option>
<option value="NE">Niger</option>
<option value="NG">Nigeria</option>
<option value="NU">Niue</option>
<option value="NF">Norfolk Island</option>
<option value="KP">North Korea</option>
<option value="MK">North Macedonia</option>
<option value="MP">Northern Mariana Islands</option>
<option value="NO">Norway</option>
<option value="OM">Oman</option>
<option value="PK">Pakistan</option>
<option value="PW">Palau</option>
<option value="PS">Palestinian Territory, Occupied</option>
<option value="PA">Panama</option>
<option value="PG">Papua New Guinea</option>
<option value="PY">Paraguay</option>
<option value="PE">Peru</option>
<option value="PH">Philippines</option>
<option value="PN">Pitcairn Islands</option>
<option value="PL">Poland</option>
<option value="PT">Portugal</option>
<option value="PR">Puerto Rico</option>
<option value="QA">Qatar</option>
<option value="RE">Reunion</option>
<option value="RO">Romania</option>
<option value="RU">Russian Federation</option>
<option value="RW">Rwanda</option>
<option value="BL">Saint Barthélemy</option>
<option value="SH">Saint Helena</option>
<option value="KN">Saint Kitts and Nevis</option>
<option value="LC">Saint Lucia</option>
<option value="MF">Saint Martin</option>
<option value="MF">Saint Martin</option>
<option value="PM">Saint Pierre and Miquelon</option>
<option value="VC">Saint Vincent and the Grenadines</option>
<option value="WS">Samoa</option>
<option value="SM">San Marino</option>
<option value="ST">Sao Tome and Principe</option>
<option value="SA">Saudi Arabia</option>
<option value="SN">Senegal</option>
<option value="RS">Serbia</option>
<option value="CS">Serbia and Montenegro</option>
<option value="SC">Seychelles</option>
<option value="SL">Sierra Leone</option>
<option value="SG">Singapore</option>
<option value="SX">Sint Maarten</option>
<option value="SK">Slovakia</option>
<option value="SI">Slovenia</option>
<option value="SB">Solomon Islands</option>
<option value="SO">Somalia</option>
<option value="ZA">South Africa</option>
<option value="GS">South Georgia and the South Sandwich Islands</option>
<option value="SS">South Sudan</option>
<option value="ES">Spain</option>
<option value="LK">Sri Lanka</option>
<option value="SD">Sudan</option>
<option value="SR">Suriname</option>
<option value="SJ">Svalbard and Jan Mayen</option>
<option value="SZ">Swaziland</option>
<option value="SE">Sweden</option>
<option value="CH">Switzerland</option>
<option value="SY">Syrian Arab Republic</option>
<option value="TW">Taiwan</option>
<option value="TJ">Tajikistan</option>
<option value="TZ">Tanzania, United Republic of</option>
<option value="TH">Thailand</option>
<option value="TL">Timor-Leste</option>
<option value="TG">Togo</option>
<option value="TK">Tokelau</option>
<option value="TO">Tonga</option>
<option value="TT">Trinidad and Tobago</option>
<option value="TN">Tunisia</option>
<option value="TR">Turkey</option>
<option value="TM">Turkmenistan</option>
<option value="TC">Turks and Caicos Islands</option>
<option value="TV">Tuvalu</option>
<option value="UG">Uganda</option>
<option value="UA">Ukraine</option>
<option value="AE">United Arab Emirates</option>
<option value="GB">United Kingdom</option>
<option value="US">United States</option>
<option value="UM">United States Minor Outlying Islands</option>
<option value="UY">Uruguay</option>
<option value="UZ">Uzbekistan</option>
<option value="VU">Vanuatu</option>
<option value="VE">Venezuela</option>
<option value="VN">Vietnam</option>
<option value="VG">Virgin Islands, British</option>
<option value="VI">Virgin Islands, U.S.</option>
<option value="WF">Wallis and Futuna</option>
<option value="EH">Western Sahara</option>
<option value="YE">Yemen</option>
<option value="ZM">Zambia</option>
<option value="ZW">Zimbabwe</option>
<option value="AX">Åland Islands</option>
</select>
</div>
<div class="form-field form-field-zipcode">
<div class="row">
<div class="col col-75 form-field-label">
<label>ZIPCODE</label>
</div>
<div class="col col-25 form-field-info">
REQUIRED
</div>
</div>
<input type="text" data-key="ZIPCODE" class="subscribe-input subscribe-zipcode">
</div>
</div>
</div>
<div class="swiper-slide">
<div class="heading">
Great to meet you!
</div>
<div class="copy">
Tell us a bit about your job so we can cover the topics you find most relevant.
</div>
<div class="form">
<div class="form-field">
<div class="row">
<div class="col col-75 form-field-label">
<label>What is your job level?</label>
</div>
<div class="col col-25 form-field-info">
REQUIRED
</div>
</div>
<!--
<div class="subscribe-input-select-arrow">
<svg xmlns="http://www.w3.org/2000/svg" width="23.012" height="17.268" viewBox="0 0 23.012 17.268">
<path id="Path_340" data-name="Path 340" d="M14.36,0,12.816,1.508l6.067,6.067H0V9.729H18.884l-6.031,6.032L14.4,17.268l8.616-8.616Z" transform="translate(0 0)"/>
</svg>
</div>
-->
<select data-key="JOBLEVEL" class="subscribe-input subscribe-job-level subscribe-has-other">
<option value="">Select ...</option>
<option value="c-level">C-Level</option>
<option value="vp-director">VP/Director</option>
<option value="manager-supervisor">Manager/Supervisor</option>
<option value="mid-level">Mid Level or Senior Non-Managerial Staff</option>
<option value="entry-level">Entry Level/Junior Staff</option>
<option value="freelance-contractor">Freelancer/Contractor</option>
<option value="student-intern">Student/Intern</option>
<option value="other">Other ...</option>
</select>
<input type="text" placeholder="Please specify ..." class="subscribe-input-other subscribe-job-level-other">
<div class="subscribe-input-other-clear">
<svg xmlns="http://www.w3.org/2000/svg" width="19.414" height="19.414" viewBox="0 0 19.414 19.414">
<g id="Group_891" data-name="Group 891" transform="translate(-167.793 -300.793)">
<path id="Line_226" data-name="Line 226" d="M17.293,18.707l-18-18L.707-.707l18,18Z" transform="translate(168.5 301.5)"/>
<path id="Line_227" data-name="Line 227" d="M.707,18.707-.707,17.293l18-18L18.707.707Z" transform="translate(168.5 301.5)"/>
</g>
</svg>
</div>
</div>
<div class="form-field">
<div class="row">
<div class="col col-75 form-field-label">
<label>Which of these most closely describes your job role?</label>
</div>
<div class="col col-25 form-field-info">
REQUIRED
</div>
</div>
<select data-key="JOBROLE" class="subscribe-input subscribe-job-role subscribe-has-other">
<option value="">Select ...</option>
<option value="developer-engineer">Developer/Software Engineer</option>
<option value="sysadmin-ops-sre">SysAdmin/Operations/SRE</option>
<option value="architect">Architect</option>
<option value="security-professional">Security Professional</option>
<option value="devops-engineer">DevOps Engineer/Team</option>
<option value="community-manager-devrel">Community Manager/Developer Advocate</option>
<option value="it-management-cio-ciso-cto">IT management, including CIO/CISO/CTO</option>
<option value="business-development">Business Development/Marketing/Sales</option>
<option value="enthusiast-hobbyist">Enthusiast/Hobbyist</option>
<option value="other">Other ...</option>
</select>
<input type="text" placeholder="Please specify ..." class="subscribe-input-other subscribe-job-role-other">
<div class="subscribe-input-other-clear">
<svg xmlns="http://www.w3.org/2000/svg" width="19.414" height="19.414" viewBox="0 0 19.414 19.414">
<g id="Group_891" data-name="Group 891" transform="translate(-167.793 -300.793)">
<path id="Line_226" data-name="Line 226" d="M17.293,18.707l-18-18L.707-.707l18,18Z" transform="translate(168.5 301.5)"/>
<path id="Line_227" data-name="Line 227" d="M.707,18.707-.707,17.293l18-18L18.707.707Z" transform="translate(168.5 301.5)"/>
</g>
</svg>
</div>
</div>
<div class="form-field">
<div class="row">
<div class="col col-75 form-field-label">
<label>How many employees are in the organization you work with?</label>
</div>
<div class="col col-25 form-field-info">
REQUIRED
</div>
</div>
<select data-key="ORGEMP" class="subscribe-input subscribe-employees">
<option value="">Select ...</option>
<option value="self-employed">Self-employed</option>
<option value="2-10">2-10</option>
<option value="11-50">11-50</option>
<option value="51-250">51-250</option>
<option value="251-1000">251-1,000</option>
<option value="1001-10000">1,001-10,000</option>
<option value="10000-plus">> 10,000</option>
<option value="not-working">I am not working</option>
</select>
</div>
<div class="form-field form-field-orgdesc">
<div class="row">
<div class="col col-75 form-field-label">
<label>What option best describes the type of organization you work for?</label>
</div>
<div class="col col-25 form-field-info">
REQUIRED
</div>
</div>
<select data-key="ORGDESC" class="subscribe-input subscribe-organization-description subscribe-has-other">
<option value="">Select ...</option>
<option value="end-user-org">“End user” organization that primarily uses IT products and services to support their business deliverables</option>
<option value="hardware-software">Hardware / software vendor or supplier</option>
<option value="cloud-service">Cloud service provider or managed service provider</option>
<option value="system-integrator">System integrator or IT consulting firm</option>
<option value="other">Other ...</option>
</select>
<input type="text" placeholder="Please specify ..." class="subscribe-input-other subscribe-organization-description-other">
<div class="subscribe-input-other-clear">
<svg xmlns="http://www.w3.org/2000/svg" width="19.414" height="19.414" viewBox="0 0 19.414 19.414">
<g id="Group_891" data-name="Group 891" transform="translate(-167.793 -300.793)">
<path id="Line_226" data-name="Line 226" d="M17.293,18.707l-18-18L.707-.707l18,18Z" transform="translate(168.5 301.5)"/>
<path id="Line_227" data-name="Line 227" d="M.707,18.707-.707,17.293l18-18L18.707.707Z" transform="translate(168.5 301.5)"/>
</g>
</svg>
</div>
</div>
<div class="form-field form-field-orgindus">
<div class="row">
<div class="col col-75 form-field-label">
<label>Which of the following best describes your organization's primary industry?</label>
</div>
<div class="col col-25 form-field-info">
REQUIRED
</div>
</div>
<select data-key="ORGINDUS" class="subscribe-input subscribe-industry subscribe-has-other">
<option value="">Select ...</option>
<option value="advertising-marketing">Advertising/Marketing</option>
<option value="aerospace-aviation">Aerospace/Aviation</option>
<option value="agriculture">Agriculture</option>
<option value="automotive">Automotive</option>
<option value="biotech-pharma">Biotech/Pharmaceutical</option>
<option value="business-services">Business Services (accounting, consulting, etc.)</option>
<option value="computers-it">Computers/Information Technology</option>
<option value="construction">Construction</option>
<option value="education">Education</option>
<option value="facilities">Facilities/Service Industry</option>
<option value="fintech">Finance/Financial Services (banking, insurance, etc.)</option>
<option value="government">Government</option>
<option value="healthcare">Healthcare</option>
<option value="human-resources">Human Resources</option>
<option value="legal">Legal</option>
<option value="life-sciences">Life sciences (biotech, pharmaceuticals, etc.)</option>
<option value="manufacturing">Manufacturing</option>
<option value="media">Media</option>
<option value="non-profit">Non-profit</option>
<option value="real-estate">Real Estate</option>
<option value="retail-consumer-goods">Retail/Consumer Goods</option>
<option value="telecommunications">Telecommunications</option>
<option value="transportation-logistics">Transportation/Logistics</option>
<option value="travel-hospitality-entertainment">Travel/Hospitality/Entertainment</option>
<option value="utilitiy-energy">Utility/Energy</option>
<option value="other">Other ...</option>
</select>
<input type="text" placeholder="Please specify ..." class="subscribe-input-other subscribe-industry-other">
<div class="subscribe-input-other-clear">
<svg xmlns="http://www.w3.org/2000/svg" width="19.414" height="19.414" viewBox="0 0 19.414 19.414">
<g id="Group_891" data-name="Group 891" transform="translate(-167.793 -300.793)">
<path id="Line_226" data-name="Line 226" d="M17.293,18.707l-18-18L.707-.707l18,18Z" transform="translate(168.5 301.5)"/>
<path id="Line_227" data-name="Line 227" d="M.707,18.707-.707,17.293l18-18L18.707.707Z" transform="translate(168.5 301.5)"/>
</g>
</svg>
</div>
</div>
<div class="form-field">
<div class="row">
<div class="col col-75 form-field-label">
<label>LINKEDIN PROFILE URL</label>
</div>
<div class="col col-25 form-field-info">
&nbsp;
</div>
</div>
<input type="text" data-key="LINKPROURL" class="subscribe-input subscribe-linkedin-profile-url">
</div>
</div>
</div>
<div class="swiper-slide">
<div class="heading">
Welcome!
</div>
<div class="copy">
<p>
We’re so glad you’re here. You can expect all the best TNS content to arrive
Monday through Friday to keep you on top of the news and at the top of your game.
</p>
<div class="heading-2">
What’s next?
</div>
<p>
Check your inbox for a confirmation email where you can adjust your preferences
and even join additional groups.
</p>
<p class="follow-paragraph">
Follow TNS on your favorite social media networks.
</p>
<div
class="tns-follow-links"
data-instanceid="6aa40a34e388a"
data-categories="operations"
>
<div class="follow-links">
<a
rel="me"
href="https://hachyderm.io/@TheNewStack"
class="follow-icon follow-icon-mastadon"
data-platform="mastodon"
data-position="subscribe"
target="_blank"
>
<svg class="fill" fill="#000000" viewBox="0 0 25 25" style="width: 25px; height: 25px" xmlns="http://www.w3.org/2000/svg" xml:space="preserve">
<path d="M21.327 8.566c0-4.339-2.843-5.61-2.843-5.61-1.433-.658-3.894-.935-6.451-.956h-.063c-2.557.021-5.016.298-6.45.956 0 0-2.843 1.272-2.843 5.61 0 .993-.019 2.181.012 3.441.103 4.243.778 8.425 4.701 9.463 1.809.479 3.362.579 4.612.51 2.268-.126 3.541-.809 3.541-.809l-.075-1.646s-1.621.511-3.441.449c-1.804-.062-3.707-.194-3.999-2.409a4.523 4.523 0 0 1-.04-.621s1.77.433 4.014.536c1.372.063 2.658-.08 3.965-.236 2.506-.299 4.688-1.843 4.962-3.254.434-2.223.398-5.424.398-5.424zm-3.353 5.59h-2.081V9.057c0-1.075-.452-1.62-1.357-1.62-1 0-1.501.647-1.501 1.927v2.791h-2.069V9.364c0-1.28-.501-1.927-1.502-1.927-.905 0-1.357.546-1.357 1.62v5.099H6.026V8.903c0-1.074.273-1.927.823-2.558.566-.631 1.307-.955 2.228-.955 1.065 0 1.872.409 2.405 1.228l.518.869.519-.869c.533-.819 1.34-1.228 2.405-1.228.92 0 1.662.324 2.228.955.549.631.822 1.484.822 2.558v5.253z"/>
</svg>
</a>
<a
href="https://bsky.app/profile/thenewstack.io"
class="follow-icon follow-icon-bluesky"
data-platform="bluesky"
data-position="subscribe"
target="_blank"
>
<svg class="fill" fill="#000000" viewBox="0 0 64 57" width="24" style="width: 24px">
<path fill="#0085ff" d="M13.873 3.805C21.21 9.332 29.103 20.537 32 26.55v15.882c0-.338-.13.044-.41.867-1.512 4.456-7.418 21.847-20.923 7.944-7.111-7.32-3.819-14.64 9.125-16.85-7.405 1.264-15.73-.825-18.014-9.015C1.12 23.022 0 8.51 0 6.55 0-3.268 8.579-.182 13.873 3.805ZM50.127 3.805C42.79 9.332 34.897 20.537 32 26.55v15.882c0-.338.13.044.41.867 1.512 4.456 7.418 21.847 20.923 7.944 7.111-7.32 3.819-14.64-9.125-16.85 7.405 1.264 15.73-.825 18.014-9.015C62.88 23.022 64 8.51 64 6.55c0-9.818-8.578-6.732-13.873-2.745Z"></path>
</svg>
</a>
<a
href="https://www.threads.net/@thenewstack"
class="follow-icon follow-icon-threads"
data-platform="threads"
data-position="subscribe"
target="_blank"
>
<svg fill="#CCCCCC" viewBox="0 0 192 192">
<path d="M141.537 88.9883C140.71 88.5919 139.87 88.2104 139.019 87.8451C137.537 60.5382 122.616 44.905 97.5619 44.745C97.4484 44.7443 97.3355 44.7443 97.222 44.7443C82.2364 44.7443 69.7731 51.1409 62.102 62.7807L75.881 72.2328C81.6116 63.5383 90.6052 61.6848 97.2286 61.6848C97.3051 61.6848 97.3819 61.6848 97.4576 61.6855C105.707 61.7381 111.932 64.1366 115.961 68.814C118.893 72.2193 120.854 76.925 121.825 82.8638C114.511 81.6207 106.601 81.2385 98.145 81.7233C74.3247 83.0954 59.0111 96.9879 60.0396 116.292C60.5615 126.084 65.4397 134.508 73.775 140.011C80.8224 144.663 89.899 146.938 99.3323 146.423C111.79 145.74 121.563 140.987 128.381 132.296C133.559 125.696 136.834 117.143 138.28 106.366C144.217 109.949 148.617 114.664 151.047 120.332C155.179 129.967 155.42 145.8 142.501 158.708C131.182 170.016 117.576 174.908 97.0135 175.059C74.2042 174.89 56.9538 167.575 45.7381 153.317C35.2355 139.966 29.8077 120.682 29.6052 96C29.8077 71.3178 35.2355 52.0336 45.7381 38.6827C56.9538 24.4249 74.2039 17.11 97.0132 16.9405C119.988 17.1113 137.539 24.4614 149.184 38.788C154.894 45.8136 159.199 54.6488 162.037 64.9503L178.184 60.6422C174.744 47.9622 169.331 37.0357 161.965 27.974C147.036 9.60668 125.202 0.195148 97.0695 0H96.9569C68.8816 0.19447 47.2921 9.6418 32.7883 28.0793C19.8819 44.4864 13.2244 67.3157 13.0007 95.9325L13 96L13.0007 96.0675C13.2244 124.684 19.8819 147.514 32.7883 163.921C47.2921 182.358 68.8816 191.806 96.9569 192H97.0695C122.03 191.827 139.624 185.292 154.118 170.811C173.081 151.866 172.51 128.119 166.26 113.541C161.776 103.087 153.227 94.5962 141.537 88.9883ZM98.4405 129.507C88.0005 130.095 77.1544 125.409 76.6196 115.372C76.2232 107.93 81.9158 99.626 99.0812 98.6368C101.047 98.5234 102.976 98.468 104.871 98.468C111.106 98.468 116.939 99.0737 122.242 100.233C120.264 124.935 108.662 128.946 98.4405 129.507Z"></path>
</svg>
</a>
<a
href="https://www.linkedin.com/company/the-new-stack"
class="follow-icon follow-icon-linkedin"
data-platform="linkedin"
data-position="subscribe"
target="_blank"
>
<svg viewBox="0 0 16.927 16.689" class="fill">
<path d="M3.833,1.809A1.8,1.8,0,0,1,1.88,3.619,1.783,1.783,0,0,1,0,1.809,1.8,1.8,0,0,1,1.928,0a1.789,1.789,0,0,1,1.9,1.809M.1,5.047H3.714V16.689H.1Z" transform="translate(0 0)"/>
<path d="M28.535,27.5c0-1.452-.047-2.666-.095-3.714h3.142l.167,1.619h.071a4.18,4.18,0,0,1,3.6-1.881c2.381,0,4.166,1.6,4.166,5.024V35.43H35.963V28.978c0-1.5-.524-2.523-1.833-2.523a1.987,1.987,0,0,0-1.857,1.357,2.6,2.6,0,0,0-.119.9V35.43H28.535Z" transform="translate(-22.655 -18.741)"/>
<svg>
</a>
<a
href="https://twitter.com/thenewstack"
class="follow-icon follow-icon-twitter"
data-platform="twitter"
data-position="subscribe"
target="_blank"
>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" width="24px" height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve" class="fill">
<path d="M14.095479,10.316482L22.286354,1h-1.940718l-7.115352,8.087682L7.551414,1H1l8.589488,12.231093L1,23h1.940717 l7.509372-8.542861L16.448587,23H23L14.095479,10.316482z M11.436522,13.338465l-0.871624-1.218704l-6.924311-9.68815h2.981339 l5.58978,7.82155l0.867949,1.218704l7.26506,10.166271h-2.981339L11.436522,13.338465z"/>
</svg>
</a>
<a
href="https://www.facebook.com/thenewstack/"
class="follow-icon follow-icon-facebook"
data-platform="facebook"
data-position="subscribe"
target="_blank"
>
<svg viewBox="0 0 17.492 17.492" class="fill">
<path d="M15.306,0H2.187A2.193,2.193,0,0,0,0,2.187V15.306a2.193,2.193,0,0,0,2.187,2.187H8.822V11.22H6.727V8.488H8.822V7.119a3.621,3.621,0,0,1,3.547-3.763H14.3V6.441H12.572c-.452,0-.585.26-.585.618V8.488H14.3V11.22H11.987v6.272h3.318a2.193,2.193,0,0,0,2.187-2.187V2.187A2.193,2.193,0,0,0,15.306,0"/>
</svg>
</a>
<!--
<a
href="https://www.instagram.com/thenewstack/"
class="follow-icon follow-icon-instagram"
data-platform="instagram"
data-position="subscribe"
target="_blank"
>
<svg viewBox="0 0 17.839 17.84" class="fill">
<path d="M8.92,1.607c2.382,0,2.664.009,3.6.052a4.937,4.937,0,0,1,1.656.307,2.763,2.763,0,0,1,1.026.667,2.763,2.763,0,0,1,.667,1.026,4.938,4.938,0,0,1,.307,1.656c.043.941.052,1.223.052,3.6s-.009,2.664-.052,3.6a4.937,4.937,0,0,1-.307,1.656,2.955,2.955,0,0,1-1.693,1.693,4.937,4.937,0,0,1-1.656.307c-.941.043-1.223.052-3.6.052s-2.664-.009-3.6-.052a4.937,4.937,0,0,1-1.656-.307,2.763,2.763,0,0,1-1.026-.667,2.763,2.763,0,0,1-.667-1.026,4.937,4.937,0,0,1-.307-1.656c-.043-.941-.052-1.223-.052-3.6s.009-2.664.052-3.6a4.938,4.938,0,0,1,.307-1.656,2.763,2.763,0,0,1,.667-1.026,2.763,2.763,0,0,1,1.026-.667,4.937,4.937,0,0,1,1.656-.307c.941-.043,1.223-.052,3.6-.052M8.92,0C6.5,0,6.193.01,5.242.054A6.547,6.547,0,0,0,3.077.468,4.376,4.376,0,0,0,1.5,1.5,4.373,4.373,0,0,0,.468,3.077,6.547,6.547,0,0,0,.054,5.242C.01,6.194,0,6.5,0,8.92S.01,11.646.054,12.6a6.547,6.547,0,0,0,.415,2.165A4.373,4.373,0,0,0,1.5,16.343a4.373,4.373,0,0,0,1.58,1.029,6.547,6.547,0,0,0,2.165.415c.951.044,1.255.054,3.678.054s2.726-.01,3.678-.054a6.547,6.547,0,0,0,2.165-.415,4.56,4.56,0,0,0,2.609-2.609,6.547,6.547,0,0,0,.415-2.165c.044-.951.054-1.255.054-3.678s-.01-2.726-.054-3.678a6.547,6.547,0,0,0-.415-2.165A4.373,4.373,0,0,0,16.343,1.5,4.376,4.376,0,0,0,14.763.468,6.547,6.547,0,0,0,12.6.054C11.646.01,11.342,0,8.92,0" transform="translate(0 0)"/>
<path d="M25.914,21.334a4.581,4.581,0,1,0,4.58,4.581,4.581,4.581,0,0,0-4.58-4.581m0,7.554a2.973,2.973,0,1,1,2.973-2.973,2.973,2.973,0,0,1-2.973,2.973" transform="translate(-16.995 -16.995)"/>
<path d="M64.142,16.253a1.07,1.07,0,1,1-1.07-1.07,1.071,1.071,0,0,1,1.07,1.07" transform="translate(-49.39 -12.095)"/>
</svg>
</a>
-->
<a
href="https://open.spotify.com/show/2nj1mpDb9jxHxi9vjZvDdk"
class="follow-icon follow-icon-spotify"
data-platform="spotify"
data-position="subscribe"
target="_blank"
>
<svg fill="#CCCCCC" viewBox="0 0 24 24" height="32">
<path d="M13.427.01C6.805-.253 1.224 4.902.961 11.524.698 18.147 5.853 23.728 12.476 23.99c6.622.263 12.203-4.892 12.466-11.514S20.049.272 13.427.01m5.066 17.579a.717.717 0 0 1-.977.268 14.4 14.4 0 0 0-5.138-1.747 14.4 14.4 0 0 0-5.42.263.717.717 0 0 1-.338-1.392c1.95-.474 3.955-.571 5.958-.29 2.003.282 3.903.928 5.647 1.92a.717.717 0 0 1 .268.978m1.577-3.15a.93.93 0 0 1-1.262.376 17.7 17.7 0 0 0-5.972-1.96 17.7 17.7 0 0 0-6.281.238.93.93 0 0 1-1.11-.71.93.93 0 0 1 .71-1.11 19.5 19.5 0 0 1 6.94-.262 19.5 19.5 0 0 1 6.599 2.165c.452.245.62.81.376 1.263m1.748-3.551a1.147 1.147 0 0 1-1.546.488 21.4 21.4 0 0 0-6.918-2.208 21.4 21.4 0 0 0-7.259.215 1.146 1.146 0 0 1-.456-2.246 23.7 23.7 0 0 1 8.034-.24 23.7 23.7 0 0 1 7.657 2.445c.561.292.78.984.488 1.546m13.612-.036-.832-.247c-1.67-.495-2.14-.681-2.14-1.353 0-.637.708-1.327 2.264-1.327 1.539 0 2.839.752 3.51 1.31.116.096.24.052.24-.098V6.935c0-.097-.027-.15-.098-.203-.83-.62-2.272-1.07-3.723-1.07-2.953 0-4.722 1.68-4.722 3.59 0 2.157 1.371 2.91 3.626 3.546l.973.274c1.689.478 1.998.902 1.998 1.556 0 1.097-.831 1.433-2.07 1.433-1.556 0-3.457-.911-4.35-2.025-.08-.098-.177-.053-.177.062v2.423c0 .097.01.141.08.22.743.814 2.52 1.53 4.59 1.53 2.546 0 4.456-1.485 4.456-3.784 0-1.787-1.052-2.865-3.625-3.635m10.107-1.76c-1.68 0-2.653 1.026-3.219 2.052V9.376c0-.08-.044-.124-.124-.124h-2.22c-.079 0-.123.044-.123.124V20.72c0 .08.044.124.124.124h2.22c.079 0 .123-.044.123-.124v-4.536c.566 1.025 1.521 2.034 3.237 2.034 2.264 0 3.89-1.955 3.89-4.581s-1.644-4.545-3.908-4.545m-.654 6.986c-1.185 0-2.211-1.167-2.618-2.458.407-1.362 1.344-2.405 2.618-2.405 1.211 0 2.051.92 2.051 2.423s-.84 2.44-2.051 2.44m40.633-6.826h-2.264c-.08 0-.115.017-.15.097l-2.282 5.483-2.29-5.483c-.035-.08-.07-.097-.15-.097h-3.661v-.584c0-.955.645-1.397 1.476-1.397.496 0 1.035.256 1.415.486.089.053.15-.008.115-.088l-.796-1.901a.26.26 0 0 0-.124-.133c-.389-.203-1.025-.38-1.644-.38-1.875 0-2.954 1.432-2.954 3.254v.743h-1.503c-.08 0-.124.044-.124.124v1.768c0 .08.044.124.124.124h1.503v6.668c0 .08.044.123.124.123h2.264c.08 0 .124-.044.124-.123v-6.668h1.936l2.812 6.11-1.512 3.325c-.044.098.009.142.097.142h2.414c.08 0 .116-.018.15-.097l4.997-11.355c.035-.08-.009-.141-.097-.141M54.964 9.04c-2.865 0-4.837 2.025-4.837 4.616 0 2.573 1.971 4.616 4.837 4.616 2.856 0 4.846-2.043 4.846-4.616 0-2.591-1.99-4.616-4.846-4.616m.008 7.065c-1.37 0-2.343-1.043-2.343-2.45 0-1.405.973-2.449 2.343-2.449 1.362 0 2.335 1.043 2.335 2.45 0 1.406-.973 2.45-2.335 2.45m33.541-6.334a1.24 1.24 0 0 0-.483-.471 1.4 1.4 0 0 0-.693-.17q-.384 0-.693.17a1.24 1.24 0 0 0-.484.471q-.174.302-.174.681 0 .375.174.677.175.3.484.471t.693.17.693-.17.483-.471.175-.676q0-.38-.175-.682m-.211 1.247a1 1 0 0 1-.394.39 1.15 1.15 0 0 1-.571.14 1.16 1.16 0 0 1-.576-.14 1 1 0 0 1-.391-.39 1.14 1.14 0 0 1-.14-.566q0-.316.14-.562t.391-.388.576-.14q.32 0 .57.14.253.141.395.39t.142.565q0 .312-.142.56m-19.835-5.78c-.85 0-1.468.6-1.468 1.396s.619 1.397 1.468 1.397c.866 0 1.485-.6 1.485-1.397 0-.796-.619-1.397-1.485-1.397m19.329 5.19a.31.31 0 0 0 .134-.262q0-.168-.132-.266-.132-.099-.381-.099h-.588v1.229h.284v-.489h.154l.374.489h.35l-.41-.518a.5.5 0 0 0 .215-.084m-.424-.109h-.26v-.3h.27q.12 0 .184.036a.12.12 0 0 1 .065.116.12.12 0 0 1-.067.111.4.4 0 0 1-.192.037M69.607 9.252h-2.263c-.08 0-.124.044-.124.124v8.56c0 .08.044.123.124.123h2.263c.08 0 .124-.044.124-.123v-8.56c0-.08-.044-.124-.124-.124m-3.333 6.605a2.1 2.1 0 0 1-1.053.257c-.725 0-1.185-.425-1.185-1.362v-3.484h2.211c.08 0 .124-.044.124-.124V9.376c0-.08-.044-.124-.124-.124h-2.21V6.944c0-.097-.063-.15-.15-.08l-3.954 3.113c-.053.044-.07.088-.07.16v1.007c0 .08.044.124.123.124h1.539v3.855c0 2.087 1.203 3.06 2.918 3.06.743 0 1.46-.194 1.884-.442.062-.035.07-.07.07-.133v-1.68c0-.088-.044-.115-.123-.07" transform="translate(-0.95,0)"></path>
</svg>
</a>
<a
href="https://www.youtube.com/c/thenewstack?sub_confirmation=1"
class="follow-icon follow-icon-youtube"
data-platform="youtube"
data-position="subscribe"
target="_blank"
>
<svg viewBox="0 0 310 310" class="fill">
<g id="XMLID_822_">
<path id="XMLID_823_" d="M297.917,64.645c-11.19-13.302-31.85-18.728-71.306-18.728H83.386c-40.359,0-61.369,5.776-72.517,19.938
C0,79.663,0,100.008,0,128.166v53.669c0,54.551,12.896,82.248,83.386,82.248h143.226c34.216,0,53.176-4.788,65.442-16.527
C304.633,235.518,310,215.863,310,181.835v-53.669C310,98.471,309.159,78.006,297.917,64.645z M199.021,162.41l-65.038,33.991
c-1.454,0.76-3.044,1.137-4.632,1.137c-1.798,0-3.592-0.484-5.181-1.446c-2.992-1.813-4.819-5.056-4.819-8.554v-67.764
c0-3.492,1.822-6.732,4.808-8.546c2.987-1.814,6.702-1.938,9.801-0.328l65.038,33.772c3.309,1.718,5.387,5.134,5.392,8.861
C204.394,157.263,202.325,160.684,199.021,162.41z"/>
</g>
</svg>
</a>
</div>
</div>
<script>
$(document).ready(function() {
var $follow_links = $('.tns-follow-links[data-instanceid="6aa40a34e388a"]');
var categories = $follow_links.data('categories');
$follow_links.find('.follow-icon').on('click', function() {
var context = window.location.pathname;
var platform = $(this).data('platform');
var position = $(this).data('position');
var payload = {
'event' : 'follow_link_click',
'platform' : platform,
'context' : context,
'position' : position
};
if (categories) {
payload.categories = categories;
}
window.dataLayer.push(payload);
});
});
</script>
<p>
Become a <a href="https://www.linkedin.com/company/the-new-stack" class="ext-link" target="_blank">TNS follower on LinkedIn</a>.
</p>
<p>
Check out <a href="/">the latest featured and trending stories</a> while you wait for your
first TNS newsletter.
</p>
</div>
</div>
</div>
</div>
</div>
<div class="row footer">
<div class="col col-33 swiper-button-col">
<div class="swiper-button tns-subscribe-swiper-button-prev">PREV</div>
</div>
<div class="col col-33 page-indicator">
<span class="subscribe-current-slide">1</span> of <span class="subscribe-total-slides">2</span>
</div>
<div class="col col-33 swiper-button-col">
<div class="swiper-button tns-subscribe-swiper-button-next">NEXT</div>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function() {
var subscribeCategories = 'operations';
var $subscribe = $('#tns-subscribe');
var $modal = $subscribe.find('.modal');
var $header = $modal.find('.header');
var $close = $modal.find('.close');
var $content = $modal.find('.content');
var $footer = $modal.find('.footer');
var $subscribe_button = $modal.find('.subscribe-button');
/// Init Swiper
var $subscribe_swiper = new Swiper('.tns-subscribe-swiper', {
allowTouchMove: false,
loop: false,
slidesPerView: 1,
autoplay: false,
spaceBetween: 0,
navigation : false,
observer : true,
preventInteractionOnTransition: true,
a11y: false,
noSwipingSelector: 'button'
});
/// Init window.tns.subscribe
window.tns = window.tns || {}
window.tns.subscribe = {
prepop : false,
section : '',
context : '',
screen : 0,
open : function() {
/// Reset the modal
window.tns.subscribe.screen = 0;
$subscribe_swiper.slideTo(0, 0, true);
$('.form-field-resubscribe').hide();
$('.copy-screen-0').show();
$('.form-field-email').show();
$('.swiper-slide').scrollTop(0);
/// Open the modal
$('body').css({
overflow : 'hidden'
});
$subscribe.stop().css({
display : 'block',
opacity : 0
});
$subscribe.stop().transition({
opacity : 1,
duration : 333,
easing : 'snap'
});
$modal.stop().css({
opacity : 0,
display : 'block'
})
$modal.stop().transition({
delay : 333,
duration : 121,
opacity : 1,
easing : 'easeOutQuad'
});
if (window.tns.subscribe.prepop === true) {
$subscribe_button.click();
}
},
close : function() {
window.tns.subscribe.screen = 0;
$subscribe.stop().css({
opacity : 0,
display : 'block'
});
$modal.stop().transition({
duration : 333,
opacity : 0,
easing : 'easeOutQuad'
});
$subscribe.stop().transition({
duration : 333,
opacity : 0,
easing : 'easeOutQuad'
}, function() {
$subscribe.stop().css({
opacity : 0,
display : 'none'
});
$('body').css({
overflowY : 'auto'
});
$('.tns-subscribe-swiper-button-next').text('NEXT');
$modal.stop().transition({
maxHeight : 370,
duration : 333,
easing : 'easeOutQuad'
});
$content.stop().transition({
bottom : 0,
duration : 333,
easing : 'easeOutQuad'
});
$footer.stop().transition({
bottom : -60,
duration : 333,
easing : 'easeOutQuad'
});
});
},
submit : async function(direction) {
/// Track the step completed
var action_taken = '';
/// Init the payload object
var payload = {
recaptcha_token : '',
section : window.tns.subscribe.section,
screen : null,
data : {
EMAIL : '',
FNAME : '',
LNAME : '',
COMPANY : '',
COUNTRY : '',
ZIPCODE : '',
JOBLEVEL : '',
JOBROLE : '',
ORGEMP : '',
ORGDESC : '',
ORGINDUS : '',
LINKPROURL : ''
},
errors : []
};
/// Determine the target_screen
var screen = window.tns.subscribe.screen;
payload.screen = window.tns.subscribe.screen;
console.log('[TNS Subscribe]', payload);
var target_screen = window.tns.subscribe.screen;
if (direction === 'prev') {
target_screen = screen - 1;
}
if (direction === 'next') {
target_screen = screen + 1;
}
/// Gather the values from the form
$('.subscribe-input').each(function() {
var key = $(this).data('key');
var value = $(this).val();
payload.data[key] = value;
});
/// Validate the values for the current screen
if (screen === 0) {
action_taken = 'newsletter_subscribe';
if (!payload.data.EMAIL || !validator.isEmail(payload.data.EMAIL)) {
payload.errors.push({
key : 'EMAIL',
msg : 'EMAIL is required.'
});
}
}
if (screen === 1) {
action_taken = 'demo_data_1';
var required = [
'FNAME',
'LNAME',
'COMPANY',
'COUNTRY'
]
required.map((key) => {
if (!payload.data[key]) {
payload.errors.push({
key : key,
msg : key + ' is required.'
})
}
});
if (payload.data.COUNTRY === 'US' && !payload.data.ZIPCODE) {
payload.errors.push({
key : 'ZIPCODE',
msg : 'ZIPCODE is required.'
})
}
}
if (screen === 2) {
action_taken = 'demo_data_2';
var required = [
'JOBLEVEL',
'JOBROLE',
'ORGEMP',
'ORGDESC',
'ORGINDUS',
// 'LINKPROURL'
]
if (payload.data.ORGEMP === 'not-working') {
/// Remove ORGDESC and ORGINDUS from the required array
required = required.filter(function(item) {
return item !== 'ORGDESC' && item !== 'ORGINDUS'
})
}
required.map((key) => {
if (!payload.data[key]) {
payload.errors.push({
key : key,
msg : key + ' is required.'
})
}
});
if (payload.data.JOBLEVEL === 'other') {
var other_value = $('.subscribe-job-level-other').val();
if (!other_value) {
payload.errors.push({
key : 'JOBLEVEL',
msg : 'JOBLEVEL is required.'
})
} else {
payload.data.JOBLEVEL = other_value;
}
}
if (payload.data.JOBROLE === 'other') {
var other_value = $('.subscribe-job-role-other').val();
if (!other_value) {
payload.errors.push({
key : 'JOBROLE',
msg : 'JOBROLE is required.'
})
} else {
payload.data.JOBROLE = other_value;
}
}
if (payload.data.ORGDESC === 'other') {
var other_value = $('.subscribe-organization-description-other').val();
if (!other_value) {
payload.errors.push({
key : 'ORGDESC',
msg : 'ORGDESC is required.'
})
} else {
payload.data.ORGDESC = other_value;
}
}
if (payload.data.ORGINDUS === 'other') {
var other_value = $('.subscribe-industry-other').val();
if (!other_value) {
payload.errors.push({
key : 'ORGINDUS',
msg : 'ORGINDUS is required.'
})
} else {
payload.data.ORGINDUS = other_value;
}
}
// if (!payload.data.LINKPROURL.includes('linkedin.com')) {
// payload.errors.push({
// key : 'LINKPROURL',
// msg : 'LINKPROURL must be a linkedin.com url.'
// })
// }
}
if (direction === 'next' && payload.errors.length) {
var $error_input = $('.subscribe-input[data-key="' + payload.errors[0].key + '"');
$error_input.addClass('error').focus();
$error_input.parent().find('.form-field-info').addClass('error');
console.log('ERROR', payload);
if (direction === 'next') {
return payload;
}
}
///
/// POST /no-cache/subscribe/
///
if (direction === 'next') {
payload.recaptcha_token = window.tns.turnstile.token;
var result = await $.post('/no-cache/subscribe/', payload);
result = JSON.parse(result);
console.log('[TNS SUBSCRIBE]', result);
if (result.errors.length) {
console.log('[TNS SUBSCRIBE]', result.errors[0].msg);
if (result.errors[0].msg == 'UNSUBSCRIBED') {
window.tns.subscribe.resubscribe();
}
if (result.errors[0].msg == 'TURNSTILE_FAILED') {
window.tns.subscribe.resubscribe();
}
return payload;
}
/// Re-enabled the subscribe button
$('.subscribe-button').html('SUBSCRIBE')
$('.subscribe-button').attr('disabled', false)
var subscribePayload = {
'event' : 'subscribe',
'context' : window.tns.subscribe.context,
'action_taken' : action_taken
};
if (subscribeCategories) {
subscribePayload.categories = subscribeCategories;
}
window.dataLayer.push(subscribePayload);
}
/// Toggle the footer UI
if (target_screen === 0) {
$('.tns-subscribe-swiper-button-next').text('NEXT');
$modal.stop().transition({
maxHeight : 370,
duration : 333,
easing : 'easeOutQuad'
});
$content.stop().transition({
bottom : 0,
duration : 333,
easing : 'easeOutQuad'
});
$footer.stop().transition({
bottom : -60,
duration : 333,
easing : 'easeOutQuad'
});
}
if (target_screen === 1) {
$('.tns-subscribe-swiper-button-next').text('NEXT');
$modal.stop().transition({
maxHeight : 600,
duration : 333,
easing : 'easeOutQuad'
});
$content.stop().transition({
bottom : 60,
duration : 333,
easing : 'easeOutQuad'
});
$footer.stop().transition({
bottom : 0,
duration : 333,
easing : 'easeOutQuad'
});
setTimeout(function() {
$('.subscribe-firstname').focus();
}, 400);
}
if (target_screen === 2) {
$('.tns-subscribe-swiper-button-next').text('SUBMIT');
setTimeout(function() {
$('.subscribe-job-level').focus();
}, 400);
}
if (target_screen === 3) {
$modal.stop().transition({
maxHeight : 710,
duration : 333,
easing : 'easeOutQuad'
});
$content.stop().transition({
bottom : 0,
duration : 333,
easing : 'easeOutQuad'
});
$footer.stop().transition({
bottom : -60,
duration : 333,
easing : 'easeOutQuad'
});
}
/// Transition to the prev or next slide
$subscribe_swiper.slideTo(target_screen, 333, true);
window.tns.subscribe.screen = target_screen;
$('.subscribe-current-slide').text(window.tns.subscribe.screen);
$subscribe_button.attr('disabled', false);
},
resubscribe: function() {
/// If a reader has previously unsubscribed they
/// must use the Mailchimp hosted form to resubscribe
/// Reset the UI to screen 0
window.tns.subscribe.screen = 0;
$subscribe_swiper.slideTo(0, 333, true);
$('.tns-subscribe-swiper-button-next').text('NEXT');
$modal.stop().transition({
maxHeight : 370,
duration : 333,
easing : 'easeOutQuad'
});
$content.stop().transition({
bottom : 0,
duration : 333,
easing : 'easeOutQuad'
});
$footer.stop().transition({
bottom : -60,
duration : 333,
easing : 'easeOutQuad'
});
/// Hide the subscribe form and reset the button
$('.copy-screen-0').hide();
$('.form-field-email').hide();
$('.subscribe-button').html('SUBSCRIBE')
$('.subscribe-button').attr('disabled', false)
/// Show the re-subscribe form
$('.form-field-resubscribe').show();
$('.resubscribe-button').off('click');
$('.resubscribe-button').on('click', function($event) {
window.open('http://eepurl.com/bMg5kH', '_blank');
// DO NOT transition to the next slide
// because they'll still be in "pending" mode
// so we can't collect any data.
// $modal.stop().transition({
// maxHeight : 600,
// duration : 333,
// easing : 'easeOutQuad'
// });
// $content.stop().transition({
// bottom : 60,
// duration : 333,
// easing : 'easeOutQuad'
// });
// $footer.stop().transition({
// bottom : 0,
// duration : 333,
// easing : 'easeOutQuad'
// });
// setTimeout(function() {
// $('.subscribe-firstname').focus();
// }, 400);
// $subscribe_swiper.slideTo(1, 333, true);
// window.tns.subscribe.screen = 1;
});
}
}
/// Remove all error classes on keyup
$('.subscribe-input').on('keyup', function($event) {
if ($event.key === 'Enter') return;
$('.subscribe-input').removeClass('error');
$('.form-field-info').removeClass('error');
});
$('select.subscribe-input').on('change', function($event) {
$('.subscribe-input').removeClass('error');
$('.form-field-info').removeClass('error');
});
/// Handle .subscibe-button click
$subscribe_button.on('click', function($event) {
var disabled = $(this).attr('disabled')
if (disabled) return false
$('.subscribe-button').attr('disabled', true)
/// Replace button label with spinner
var spinner = $('<div class="button-spinner"></div>');
$('.subscribe-button').html('').append(spinner);
/// Refresh or obtain a turnstile token ...
if (window.tns.turnstile.widgetId) {
console.log('[TNS SUBSCRIBE] Resetting Turnstile widget: ' + window.tns.turnstile.widgetId)
window.tns.turnstile.renderWidget(function(token) {
window.tns.turnstile.token = token;
console.log('[TNS SUBSCRIBE] Refreshed Turnstile token:')
console.log(window.tns.turnstile.token)
window.tns.subscribe.submit('next')
});
} else {
console.log('[TNS SUBSCRIBE] Rendering Turnstile widget')
/// Render the Turnstile widget and obtain a token and a widgetId
window.tns.turnstile.renderWidget(async function(token) {
window.tns.turnstile.token = token;
console.log('[TNS SUBSCRIBE] Obtained Turnstile token:')
console.log(window.tns.turnstile.token)
window.tns.subscribe.submit('next')
});
}
});
/// Handle onEnter for subscribe-email input
$('.subscribe-email').on('keyup', function($event) {
if ($event.key === 'Enter') {
$subscribe_button.click();
}
});
/// Handle other input toggle
$('.subscribe-has-other').on('change', function($event) {
var value = $(this).val();
var $other_input = $(this).next();
var $other_clear = $(this).next().next();
if (value === 'other') {
$(this).blur().hide();
$other_input.css({ display : 'block' });
$other_clear.show();
$other_input.focus();
}
});
// $('.subscribe-input-other').on('blur', function() {
// var value = $(this).val();
// if (value === '') {
// $(this).hide();
// $(this).prev().css({ display : 'block' }).val('null');
// }
// });
$('.subscribe-input-other-clear').on('click', function() {
$(this).prev().val('');
$(this).prev().hide();
$(this).prev().prev().val('').show();
$(this).hide();
});
/// Handle zipcode input toggle
$('.subscribe-country').on('change', function($event) {
var countryCode = $(this).val();
if (countryCode === 'US') {
$('.form-field-zipcode').show();
} else {
$('.form-field-zipcode').hide();
}
});
/// Handle toggle of ORGDESC and ORGINDUS inputs
$('.subscribe-employees').on('change', function($event) {
var value = $(this).val();
if (value === 'not-working') {
$('.form-field-orgdesc').hide();
$('.form-field-orgindus').hide();
} else {
$('.form-field-orgdesc').show();
$('.form-field-orgindus').show();
}
});
/// Handle PREV NEXT clicks
$('.tns-subscribe-swiper-button-prev').on('click', function() {
window.tns.subscribe.submit('prev');
});
$('.tns-subscribe-swiper-button-next').on('click', function() {
window.tns.subscribe.submit('next');
});
/// Close/Cancel handlers
$modal.on('click', function($event) {
$event.stopPropagation();
});
$subscribe.on('click', function($event) {
window.tns.subscribe.close();
});
$close.on('click', function($event) {
$event.stopPropagation();
window.tns.subscribe.close();
});
///
/// Auto-open Subscribe based on the `open-subscribe` query param?
///
var urlParams = new URLSearchParams(window.location.search);
if (urlParams.get('open-subscribe')) {
window.tns.subscribe.open();
}
});
</script>
<div class="tns-voxpop-screen">
<div class="tns-voxpop-modal">
<div class="header">
<div class="title">
VOXPOP
</div>
<div class="close-icon tns-voxpop-close">
<svg xmlns="http://www.w3.org/2000/svg" width="19.414" height="19.414" viewBox="0 0 19.414 19.414">
<g id="Group_891" data-name="Group 891" transform="translate(-167.793 -300.793)">
<path id="Line_226" data-name="Line 226" d="M17.293,18.707l-18-18L.707-.707l18,18Z" transform="translate(168.5 301.5)"/>
<path id="Line_227" data-name="Line 227" d="M.707,18.707-.707,17.293l18-18L18.707.707Z" transform="translate(168.5 301.5)"/>
</g>
</svg>
</div>
</div>
<div class="content">
<div class="content-block">
<div
class="tns-poll"
data-pollID="22754645"
data-instanceID="6aa40a34e3e7c"
data-timestamp="1789135412"
data-categories="frontend-development,javascript"
>
<div class="questions">
<div class="page" data-questionID="66b25394b7070">
<div class="row question">
<div class="col">
As a JavaScript developer, what non-React tools do you use most often? </div>
</div>
<div class="row context">
<div class="col">
</div>
</div>
<div class="row answers">
<div class="col">
<div
class="option"
data-questionid="66b25394b7070"
data-answerid="66b25394ba5e8"
>
<div class="option-checkmark">&#10003;</div>
<div class="option-text">
Angular </div>
<div class="option-percentage">0%</div>
<div class="option-results"></div>
</div>
<div
class="option"
data-questionid="66b25394b7070"
data-answerid="66b25394bf624"
>
<div class="option-checkmark">&#10003;</div>
<div class="option-text">
Astro </div>
<div class="option-percentage">0%</div>
<div class="option-results"></div>
</div>
<div
class="option"
data-questionid="66b25394b7070"
data-answerid="66b25394c1e21"
>
<div class="option-checkmark">&#10003;</div>
<div class="option-text">
Svelte </div>
<div class="option-percentage">0%</div>
<div class="option-results"></div>
</div>
<div
class="option"
data-questionid="66b25394b7070"
data-answerid="66b25394c46e2"
>
<div class="option-checkmark">&#10003;</div>
<div class="option-text">
Vue.js </div>
<div class="option-percentage">0%</div>
<div class="option-results"></div>
</div>
<div
class="option"
data-questionid="66b25394b7070"
data-answerid="66b25394c6b6c"
>
<div class="option-checkmark">&#10003;</div>
<div class="option-text">
Other </div>
<div class="option-percentage">0%</div>
<div class="option-results"></div>
</div>
<div
class="option"
data-questionid="66b25394b7070"
data-answerid="66b25394c95b4"
>
<div class="option-checkmark">&#10003;</div>
<div class="option-text">
I only use React </div>
<div class="option-percentage">0%</div>
<div class="option-results"></div>
</div>
<div
class="option"
data-questionid="66b25394b7070"
data-answerid="66b25394cb8bc"
>
<div class="option-checkmark">&#10003;</div>
<div class="option-text">
I don't use JavaScript </div>
<div class="option-percentage">0%</div>
<div class="option-results"></div>
</div>
</div>
</div>
</div>
</div>
<div class="post-roll">
<div class="post-roll-block">
<div class="newsletter-form">
<div class="cta">
Thanks for your opinion! Subscribe below to get the final results, published
exclusively in our TNS Update newsletter:
</div>
<div class="row">
<div class="col col-75 email">
<input type="email" placeholder="EMAIL ADDRESS" class="voxpop-email-input tns-poll-postroll-daily-input" />
</div>
<div class="col col-25 subscribe">
<button class="tns-poll-postroll-daily-button">SUBMIT</button>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function() {
/// Handle TNS Daily subscription
var $poll = $('.tns-poll[data-instanceID="6aa40a34e3e7c"]');
var $tnsNewsletterEmailInput = $poll.find('.tns-poll-postroll-daily-input');
var $tnsNewsletterSubmitButton = $poll.find('.tns-poll-postroll-daily-button');
$tnsNewsletterEmailInput.on('keyup', function($event) {
$(this).removeClass('error');
if ($event.which === 13) {
$tnsNewsletterSubmitButton.click();
}
});
$tnsNewsletterSubmitButton.on('click', function() {
var email = $tnsNewsletterEmailInput.val();
window.tns.subscribe.prepop = true;
window.tns.subscribe.context = 'tns_voxpop_postroll';
$('#tns-subscribe').find('.subscribe-email').val(email);
$('#tns-subscribe').find('.subscribe-button').click();
window.tns.subscribe.open();
});
});
</script> </div>
</div>
<script>
$(document).ready(function() {
var $poll = $('.tns-poll[data-instanceID="6aa40a34e3e7c"]');
var $option = $poll.find('.option');
var sponsor_slug = '';
var voxpop = 'true'; /// string 'true' || 'false'
var categories = $poll.data('categories');
var voted = localStorage.getItem('tns_poll_vote_22754645');
if (voted) voted = JSON.parse(voted);
///
/// Handle vote
///
$option.on('click', function($event) {
var $thisOption = $(this);
var poll_ID = '22754645';
var instance_ID = '6aa40a34e3e7c';
var question_ID = null;
var answer_ID = null;
var captchaToken = null;
var pollData = null;
if ($poll.hasClass('done')) return;
async.series([
setStatusClasses,
obtainCaptchaToken,
revealPercentages,
submitVote,
displayResults,
handlePostroll
], function(result) {
if (result) console.log(result);
});
function setStatusClasses(next) {
$poll.addClass('done');
$option.removeClass('active');
$thisOption.addClass('active');
$thisOption.addClass('selected');
question_ID = $thisOption.data('questionid');
answer_ID = $thisOption.data('answerid');
return next();
}
function obtainCaptchaToken(next) {
captchaToken = window.tns.turnstile.token;
return next();
}
function revealPercentages(next) {
var delay = 21;
var i = 0;
$poll.find('.option-percentage').each(function() {
$(this).transition({
delay : delay * i,
duration : 99,
opacity : 1,
easing : 'easeOutQuad'
});
i++;
});
return next();
}
function submitVote(next) {
var payload = {
poll_ID : '22754645',
instance_ID : instance_ID,
question_ID : question_ID,
answer_ID : answer_ID,
recaptcha_token : captchaToken,
sponsor : sponsor_slug
}
console.log('[tns-poll] Sending poll vote ...')
$.ajax({
url : '/no-cache/polls-vote/',
type : 'post',
data : payload,
statusCode : {
429 : function() {
$poll.removeClass('done');
$option.removeClass('active');
$poll.find('.option-percentage').css({
opacity : 0
});
var poll_type = 'inline';
if (voxpop === 'true') poll_type = 'voxpop';
var event_payload = {
event : 'poll',
poll_action : 'rate-limited',
poll_type : poll_type,
poll_id : '22754645',
question_ID : question_ID,
answer_ID : answer_ID
}
if (sponsor_slug) {
event_payload.sponsor = sponsor_slug;
}
if (categories) {
event_payload.categories = categories;
}
window.dataLayer.push(event_payload)
var msg = '429 — Whoa, facile tigré.';
msg += 'You\'re being rate-limited.';
msg += 'If you\'re human, take it easy and try again in an hour.';
console.log(msg);
}
}
}).done(function(data, statusText, xhr) {
if (data) data = JSON.parse(data);
pollData = data;
console.log('[tns-poll] Result from vote endpoint:');
console.log(data);
/// Pre-construct the event_payload
var poll_type = 'inline';
if (voxpop === 'true') poll_type = 'voxpop';
var event_payload = {
event : 'poll',
poll_action : null,
poll_type : poll_type,
poll_id : '22754645',
question_ID : question_ID,
answer_ID : answer_ID
}
if (sponsor_slug) {
event_payload.sponsor = sponsor_slug;
}
if (categories) {
event_payload.categories = categories;
}
if (data.bot === true) {
event_payload.poll_action = 'recaptcha-fail';
console.log('[tns-poll] Suspected bot vote due to recaptcha fail.');
window.dataLayer.push(event_payload);
event_payload.instance_ID = instance_ID;
console.log(event_payload);
return next();
}
if (!voted && data.unique_vote === true) {
event_payload.poll_action = 'vote';
console.log('[tns-poll] Unique vote detected, firing GA4 event.');
window.dataLayer.push(event_payload);
event_payload.instance_ID = instance_ID;
console.log(event_payload);
delete payload.recaptcha_token;
localStorage.setItem('tns_poll_vote_22754645', JSON.stringify(payload));
console.log('[tns-poll] Set localStorage item.');
} else {
event_payload.poll_action = 'duplicate-vote-attempt';
console.log('[tns-poll] Detected duplicate vote, did not fire GA4 event.');
event_payload.instance_ID = instance_ID;
console.log(event_payload);
delete payload.recaptcha_token;
localStorage.setItem('tns_poll_vote_22754645', JSON.stringify(payload));
}
return next();
});
}
function displayResults(next) {
var highestPercentage = 0;
var totalVotes = parseInt(pollData.totalVotes);
var totalPercentage = 0;
$option.each(function() {
var optionAnswerID = $(this).data('answerid');
var percentage = 0;
pollData.results.map(result => {
if (result.answer_ID === optionAnswerID) {
percentage = parseInt(result.percentage);
totalPercentage += percentage;
if (percentage > highestPercentage) {
highestPercentage = percentage;
$option.removeClass('active');
$(this).addClass('active');
}
}
});
var $resultsBar = $(this).find('.option-results');
var $percentDisplay = $(this).find('.option-percentage');
var digit = 0;
var uptickPercentDisplay = setInterval(function() {
if (digit >= percentage) {
clearInterval(uptickPercentDisplay);
return;
}
digit++;
$percentDisplay.html(digit + '%');
}, 3);
if (percentage === 0) {
$percentDisplay.html('0%');
}
$resultsBar.transition({
width : percentage + '%',
duration : 777,
easing : 'easeOutQuad'
})
});
return next();
}
function handlePostroll(next) {
if (voxpop !== 'true') {
console.log('[tns-poll] Inline poll detected, skipping post-roll ...');
return next();
}
console.log('[tns-poll] Voxpop poll detected, firing post-roll ...');
var targetHeight = $poll.find('.post-roll-block').outerHeight(true);
$poll.find('.post-roll').transition({
delay : 555,
height : targetHeight,
duration : 777,
easing : 'easeOutQuad'
});
setTimeout(function() {
$poll.find('.post-roll').addClass('open');
if (window.tns.voxpop && window.tns.voxpop.vote) {
window.tns.voxpop.vote(pollData, 777);
}
}, 777);
}
});
///
/// Handle firing the impression event, but only when
/// the poll enters the viewport.
///
function isInViewport($element) {
var elementTop = $element.offset().top;
var elementBottom = elementTop + $element.outerHeight();
var viewportTop = $(window).scrollTop();
var viewportBottom = viewportTop + $(window).height();
return elementBottom > viewportTop && elementTop < viewportBottom;
};
if (!voted && voxpop !== 'true') {
var impression_recorded = false;
$(window).scroll(function() {
if (!impression_recorded && isInViewport($poll)) {
var poll_type = 'inline';
if (voxpop === 'true') poll_type = 'voxpop';
var event_payload = {
event : 'poll',
poll_action : 'impression',
poll_type : poll_type,
poll_id : '22754645'
}
if (sponsor_slug) {
event_payload.sponsor = sponsor_slug;
}
if (categories) {
event_payload.categories = categories;
}
console.log('[Polls] Poll impression detected, firing GA4 event.');
window.dataLayer.push(event_payload)
event_payload.instance_ID = '6aa40a34e3e7c';
console.log(event_payload);
impression_recorded = true;
}
});
}
///
/// Handle rendering the poll if this user has
/// already voted in it. Display the results.
///
if (voted) {
var renderResults = setInterval(function() {
$option.each(function() {
var answer_ID = $(this).data('answerid');
if (answer_ID === voted.answer_ID) {
$(this).click();
}
});
clearInterval(renderResults);
return false;
}, 333);
}
///
/// Poll Sponsor Click Tracking
///
$sponsorBlock = $poll.find('.poll-sponsor');
$sponsorBlock.on('click', function() {
var sponsorSlug = $(this).data('sponsor-slug');
var url = $(this).attr('href');
var poll_type = 'inline';
if (voxpop === 'true') poll_type = 'voxpop';
var event_payload = {
event : 'sponsor_poll_click',
sponsor : sponsor_slug,
url : url,
poll_type : poll_type,
poll_id : '22754645'
}
if (categories) {
event_payload.categories = categories;
}
window.dataLayer.push(event_payload);
});
});
</script>
</div>
</div>
<div class="footer">
&nbsp;
</div>
</div>
</div>
<script>
$(document).ready(function() {
$voxpopScreen = $('.tns-voxpop-screen');
$voxpopModal = $('.tns-voxpop-modal');
var instance_ID = $voxpopModal.find('.tns-poll').data('instanceid');
var sponsor_slug = '';
var voted = localStorage.getItem('tns_poll_vote_22754645');
if (voted) voted = JSON.parse(voted);
$voxpopModal.on('click', function($event) {
$event.stopPropagation();
});
window.tns.voxpop = {
resize : function(delay) {
var windowHeight = $(window).height();
var headerHeight = $voxpopModal.find('.header').outerHeight(true);
var contentHeight = $voxpopModal.find('.content-block').outerHeight();
var footerHeight = $voxpopModal.find('.footer').outerHeight(true);
var targetHeight = headerHeight + contentHeight + footerHeight;
if (targetHeight >= windowHeight) {
targetHeight = windowHeight - 40;
}
$voxpopModal.stop().transition({
height : targetHeight,
duration : delay || 333,
easing : 'snap'
});
},
open : function(params) {
$('body').css({
overflow : 'hidden'
});
$voxpopScreen.stop().css({
opacity : 0,
display : 'block'
});
$voxpopScreen.stop().transition({
duration : 333,
opacity : 1,
easing : 'snap'
});
$voxpopModal.stop().css({
opacity : 0,
display : 'block'
});
window.tns.voxpop.resize();
$voxpopModal.stop().transition({
delay : 333,
duration : 121,
opacity : 1,
easing : 'easeOutQuad'
});
///
/// Record an impression event
///
if (!voted) {
var event_payload = {
poll_action : 'impression',
poll_type : 'voxpop',
poll_id : '22754645'
}
if (sponsor_slug) {
event_payload.sponsor = sponsor_slug;
}
console.log('[Voxpop] Impression detected, firing GA4 event.');
event_payload.event = 'poll';
window.dataLayer.push(event_payload);
event_payload.instance_ID = instance_ID;
console.log(event_payload);
}
},
vote : function(pollData, delay) {
console.log('[Voxpop] Firing post-vote resize.');
setTimeout(function() {
window.tns.voxpop.resize(delay);
}, 555);
},
close : function() {
$voxpopScreen.stop().css({
opacity : 0,
display : 'block'
});
$voxpopModal.stop().transition({
duration : 333,
opacity : 0,
easing : 'easeOutQuad'
});
$voxpopScreen.stop().transition({
duration : 333,
opacity : 0,
easing : 'easeOutQuad'
}, function() {
$voxpopScreen.stop().css({
opacity : 0,
display : 'none'
});
$('body').css({
overflowY : 'auto'
});
});
}
}
$('.tns-voxpop-close').on('click', function() {
window.tns.voxpop.close();
});
$('.tns-voxpop-screen').on('click', function() {
window.tns.voxpop.close();
});
$(window).on('resize', function() {
window.tns.voxpop.resize();
});
///
/// Auto-open Voxpop based on the `open-voxpop` query param?
///
var urlParams = new URLSearchParams(window.location.search);
if (urlParams.get('open-voxpop')) {
window.tns.voxpop.open();
}
});
</script>
<div id="tns-header">
<div class="header-fixed">
<div id="tns-header-masthead">
<div class="masthead">
<div class="masthead-block">
<div id="tns-header-masthead-menu">
<span class="masthead-menu-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="17" height="14" viewBox="0 0 17 14">
<g id="Group_656" data-name="Group 656" transform="translate(0 0.687)">
<path id="Line_2" data-name="Line 2" d="M17,1H0V-1H17Z" transform="translate(0 0.313)"/>
<path id="Line_3" data-name="Line 3" d="M17,1H0V-1H17Z" transform="translate(0 6.313)"/>
<path id="Line_4" data-name="Line 4" d="M17,1H0V-1H17Z" transform="translate(0 12.313)"/>
</g>
</svg>
</span>
<span class="masthead-menu-close-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="19.414" height="19.414" viewBox="0 0 19.414 19.414">
<g id="Group_891" data-name="Group 891" transform="translate(-167.793 -300.793)">
<path id="Line_226" data-name="Line 226" d="M17.293,18.707l-18-18L.707-.707l18,18Z" transform="translate(168.5 301.5)"/>
<path id="Line_227" data-name="Line 227" d="M.707,18.707-.707,17.293l18-18L18.707.707Z" transform="translate(168.5 301.5)"/>
</g>
</svg>
</span>
</div>
<script>
$(document).ready(function() {
var categories = 'operations';
function toggleMobileNav() {
if ($('.masthead-menu-icon').hasClass('active')) {
$('.masthead-menu-icon').removeClass('active');
$('#tns-header-masthead').removeClass('dark');
$('.masthead-menu-close-icon').stop().transition({
opacity : 0,
duration : 0,
easeing : 'snap'
}, function() {
$(this).css({ display : 'none' });
});
$('.masthead-menu-icon').stop().css({
display : 'block'
}).transition({
opacity : 1,
duration : 333,
easeing : 'snap'
});
$('.masthead-search-icon').stop().css({
display : 'block'
}).transition({
opacity : 1,
duration : 121,
easeing : 'snap'
});
var height = '60px';
var paddingBottom = '0px';
$('body').css({
overflowX : 'hidden',
overflowY : 'auto'
});
} else {
$('.masthead-menu-icon').addClass('active');
$('#tns-header-masthead').addClass('dark');
$('.masthead-menu-icon').stop().transition({
opacity : 0,
duration : 0,
easeing : 'snap'
}, function() {
$(this).css({ display : 'none' });
});
$('.masthead-search-icon').stop().transition({
opacity : 0,
duration : 333,
easeing : 'snap'
}, function() {
$(this).css({ display : 'none' });
});
$('.masthead-menu-close-icon').stop().css({
display : 'block'
}).transition({
opacity : 1,
duration : 333,
easeing : 'snap'
});
var height = window.screen.height;
var paddingBottom = '200px';
$('body').css({
overflowX : 'hidden',
overflowY : 'hidden'
});
}
$('.mobile-nav-dropdown').scrollTop(0);
$('.mobile-nav-dropdown').stop().transition({
height : height,
paddingBottom : paddingBottom,
duration : 222,
easeing : 'snap'
});
}
$('.masthead-menu-icon').on('click', function($event) {
$event.preventDefault();
var payload = {
'event' : 'nav_click',
'target' : 'mobile_nav'
};
if (categories) {
payload.categories = categories;
}
window.dataLayer.push(payload);
toggleMobileNav();
});
$('.masthead-menu-close-icon').on('click', function($event) {
$event.preventDefault();
toggleMobileNav();
});
});
</script>
<div id="tns-header-masthead-logo">
<div class="tns-logo">
<a href="/" aria-label="The New Stack Frontpage" rel="home">
<svg version="1.1" id="the-new-stack-logo" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="367.308px" height="44px" viewBox="0 0 367.308 44" enable-background="new 0 0 367.308 44" xml:space="preserve">
<g>
<polygon fill="#00AFF4" points="0,0.962 0,8.546 10.796,8.546 10.796,43.113 20.15,43.113 20.15,8.546 30.719,8.546 30.719,0.962
"/>
<polygon fill="#00AFF4" points="240.737,0.962 240.737,8.546 251.535,8.546 251.535,43.113 260.886,43.113 260.886,8.546
271.454,8.546 271.454,0.962 "/>
<polygon fill="#00AFF4" points="34.156,43.113 43.627,43.113 43.627,24.828 55.387,24.828 55.387,43.113 64.741,43.113
64.741,0.885 55.214,0.885 55.214,17.244 43.568,17.244 43.568,0.885 34.156,0.885 "/>
<polygon fill="#00AFF4" points="179.114,0.885 169.702,0.885 169.702,43.113 179.143,22.825 "/>
<polygon fill="#FF3287" points="179.143,22.825 179.173,43.113 189.358,21.168 189.358,0.885 "/>
<polygon fill="#C87296" points="169.702,43.113 179.173,43.113 179.143,22.825 "/>
<polygon fill="#00AFF4" points="198.769,0.885 189.358,21.168 189.358,43.113 198.798,22.825 "/>
<polygon fill="#C87296" points="189.358,0.885 189.358,21.168 198.769,0.885 "/>
<polygon fill="#FF3287" points="209.013,0.885 198.798,22.825 198.828,43.113 218.424,0.885 "/>
<polygon fill="#C87296" points="189.358,43.113 198.828,43.113 198.798,22.825 "/>
<polygon fill="#FF3287" points="138.471,43.035 165.013,43.035 165.013,35.452 147.825,35.452 147.825,24.828 160.931,24.828
160.931,17.244 147.71,17.244 147.71,8.546 165.013,8.546 165.013,0.962 138.471,0.962 "/>
<polygon fill="#00AFF4" points="70.463,43.035 97.004,43.035 97.004,35.452 79.818,35.452 79.818,24.828 92.924,24.828
92.924,17.244 79.703,17.244 79.703,8.546 97.004,8.546 97.004,0.962 70.463,0.962 "/>
<path fill="#FF3287" d="M102.786,43.113h8.225v-19.69c0-1.098-0.211-6.476-0.257-7.689h0.257c2.358,5.14,2.426,5.324,3.417,6.997
l10.669,20.383h7.407V0.885h-8.225V16.66c0,1.616,0,1.961,0.153,4.86l0.204,4.271h-0.249c-0.166-0.288-0.79-1.846-0.974-2.193
c-0.433-0.866-1.06-2.022-1.56-2.888L111.388,0.886h-8.601L102.786,43.113L102.786,43.113z"/>
<path fill="#00AFF4" d="M277.222,0.972l-11.955,42.14h9.068l2.194-8.661h12.993l2.135,8.661h9.065l-12.241-42.14H277.222z
M287.674,27.83h-9.525l4.618-19.293h0.231L287.674,27.83z"/>
<path fill="#00AFF4" d="M300.615,27.813c0,8.662,2.194,10.979,3.888,12.587c2.589,2.492,5.919,3.6,10.722,3.6
c1.809,0,6.138-0.386,9.142-2.712c3.523-2.715,4.101-5.68,4.448-7.354c0.288-1.79,0.348-2.138,0.404-5.197h-9.355
c0,4.561-1.125,7.679-4.86,7.679c-5.031,0-5.031-4.444-5.031-6.754V13.541c0-1.165,0.059-3.246,1.527-4.627
c0.955-0.868,2.406-1.33,3.563-1.33c4.629,0,4.743,4.619,4.801,6.706h9.355c-0.116-3.416-0.577-8.575-4.417-11.518
C321.835,0.509,318.014,0,315.462,0c-9.777,0-14.848,5.378-14.848,15.042V27.813z"/>
<path fill="#00AFF4" d="M332.314,43.113h9.471V0.885h-9.471V43.113z M354.949,0.885l-12.814,20.374l14.03,21.855h11.144
l-15.07-22.547l12.935-19.681L354.949,0.885L354.949,0.885z"/>
<path fill="#00AFF4" d="M231.091,0.962c-8.844,0-13.316,4.889-13.316,11.827c0,8.296,4.889,10.134,11.278,12.597
c7.014,2.454,8.931,3.137,8.931,6.285c0,3.829-4.013,4.744-6.247,4.744c-4.022,0-6.995-2.174-8.361-5.716l-6.468,4.745
c3.464,6.775,7.333,8.555,15.273,8.555c2.357,0,6.197-0.635,8.576-2.126c5.772-3.62,5.772-9.231,5.772-11.117
c0-3.944-1.779-6.688-2.282-7.373c-1.606-2.292-4.484-4.003-7.024-4.917l-5.939-1.945c-2.867-0.924-5.928-1.154-5.928-4.126
c0-0.444,0.117-3.552,4.792-3.851h7.382V0.962C237.529,0.962,231.651,0.962,231.091,0.962z"/>
</g>
</svg>
</a>
</div>
</div>
<div id="tns-masthead-utility-nav">
<div id="stackie-flag">
<div class="flag-content">
NEW! Try Stackie AI
<div class="flag-pointer"></div>
</div>
</div>
<div class="masthead-login-button"></div>
<span class="masthead-search-icon icon-tns-search">
<svg data-component="Icon" class="" viewBox="0 0 33 33" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none">
<path fill="currentColor" fill-rule="evenodd" d="M1.934 8.933a5.75 5.75 0 0 1 8.628 7.567l2.969 2.97a.75.75 0 0 1-1.06 1.06L9.5 17.56a5.75 5.75 0 0 1-7.567-8.627M6 8.75a4.25 4.25 0 1 0 0 8.5 4.25 4.25 0 0 0 0-8.5" clip-rule="evenodd"></path>
<path fill="currentColor" d="M18 4a4 4 0 0 0-4 4 4 4 0 0 0-4-4 4 4 0 0 0 4-4 4 4 0 0 0 4 4M22 10a3 3 0 0 0-3 3 3 3 0 0 0-3-3 3 3 0 0 0 3-3 3 3 0 0 0 3 3"></path>
</svg>
</span>
<span class="masthead-search-close-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="19.414" height="19.414" viewBox="0 0 19.414 19.414">
<g id="Group_891" data-name="Group 891" transform="translate(-167.793 -300.793)">
<path id="Line_226" data-name="Line 226" d="M17.293,18.707l-18-18L.707-.707l18,18Z" transform="translate(168.5 301.5)"/>
<path id="Line_227" data-name="Line 227" d="M.707,18.707-.707,17.293l18-18L18.707.707Z" transform="translate(168.5 301.5)"/>
</g>
</svg>
</span>
</div>
<script>
$(document).ready(function() {
///
/// Stackie AI Flag
///
const key = 'stackie_pageviews'
const expiryKey = 'stackie_pageviews_expiry'
const expiryDuration = 24 * 60 * 60 * 1000 /// 24 hours
const now = Date.now()
let pageviews = 0
let expiry = parseInt(localStorage.getItem(expiryKey), 10)
/// Reset if expired or missing
if (!expiry || now > expiry) {
localStorage.setItem(key, '0')
localStorage.setItem(expiryKey, (now + expiryDuration).toString())
}
/// Get and increment pageviews
pageviews = parseInt(localStorage.getItem(key), 10) || 0
pageviews++
localStorage.setItem(key, pageviews.toString())
/// Check path and apply animation
const currentPath = window.location.pathname
if (currentPath === '/search/') {
/// Max out pageviews to 4 on /search/
localStorage.setItem(key, '4')
}
/// Search Icon Click
$('.masthead-search-icon').on('click', function($event) {
$event.preventDefault();
window.dataLayer.push({
'event': 'nav_click',
'target': 'search',
});
location.href = '/search/'
});
///
/// Login/Logout Button Handling
///
/// Clear any stale legacy ory_ session tokens
try {
if (window.tns && typeof window.tns.getCookie === 'function') {
var legacyToken = window.tns.getCookie('img-session-token')
if (legacyToken && legacyToken.indexOf('ory_') === 0) {
window.tns.setCookie('img-session-token', '', -1)
window.tns.setCookie('tns-user-id', '', -1)
window.tns.setCookie('tns-user', '', -1)
}
}
} catch (e) {
console.log('[TNS] Legacy session token cleanup failed', e)
}
/// Init Login Button Label
var user = window.tns.getCookie('tns-user')
if (user) {
$('.masthead-login-button').text("")
} else {
$('.masthead-login-button').text("LOGIN")
}
/// Login Click
$('.masthead-login-button').on('click', function($event) {
$event.preventDefault()
var label = $('.masthead-login-button').text().trim()
if (label === 'LOGIN') {
window.dataLayer.push({
'event': 'nav_click',
'target': 'login',
})
window.imgjs.subscribe.config.onClose = function(user) {
if (user) {
window.tns.setCookie('tns-user-id', user.author_id, 8400)
window.tns.setCookie('tns-user', JSON.stringify(user), 8400)
/// Update the BlueConic profile with the email and Ory ID
const profile = window.blueConicClient.profile.getProfile()
profile.setValue('email', user?.email)
profile.setValue('ory_id', user?.author_id)
window.blueConicClient.profile.updateProfile()
$('.masthead-login-button').text("")
/// Determine if it's a new subscription by testing
/// if the createdAt date is today's date
if (window.imgjs.subscribe.isNewSubscription(user.createdAt)) {
window.dataLayer.push({
'event' : 'user_registration',
'url' : window.location.href,
'channel': window.imgjs.subscribe.channel,
'channel_id': window.imgjs.subscribe.channel_id
})
}
} else {
console.log('[IMG Subscribe] ERROR Failed to validate OTC')
window.tns.setCookie('img-session-token', '', -1)
window.tns.setCookie('tns-user-id', '', -1)
window.tns.setCookie('tns-user', '', -1)
$('.masthead-login-button').text("LOGIN")
}
}
var subscriptions = {
mc : [
'6166149401' /// TNS Daily
],
hs : []
}
const hostname = window.location.hostname
switch (true) {
case hostname.includes("thenewstack.io"):
subscriptions.hs.push("688810478") /// TNS Daily (PROD)
break
case hostname.includes("thenewstack.dev"):
subscriptions.hs.push("860037297") /// TNS Daily (SANDBOX)
break
}
window.imgjs.subscribe.channel = 'login_button'
window.imgjs.subscribe.channel_id = 'login_button'
window.imgjs.subscribe.open(null, subscriptions, 'login')
}
window.imgjs.subscribe.config.onProfileUpdate = function(data) {
console.log("Set tns-user cookie with the following data:")
console.log(data)
if (data.user) {
window.tns.setCookie('tns-user-id', data.user.author_id, 8400)
window.tns.setCookie('tns-user', JSON.stringify(data.user), 8400)
} else {
console.error("[IMGJS] ERROR No user returned to onProfileUpdate")
}
}
if (label === '') {
window.dataLayer.push({
'event': 'nav_click',
'target': 'logout',
})
var url = 'https://img-api-v2.thenewstack.dev/api/accounts/logout'
fetch(url, {
method: 'POST',
headers: {'Content-Type': 'application/json'},
credentials: 'include'
}).then(response => {
if (!response.ok) {
console.log(`Failed to logout`)
}
}).then(result => {
window.tns.setCookie('tns-user-id', '', -1)
window.tns.setCookie('tns-user', '', -1)
$('.masthead-login-button').text("LOGIN")
console.log(`Successfully logged-out`)
}).catch(error => {
console.error('Error:', error)
})
}
})
});
</script>
</div>
</div>
</div>
<script>
$(document).ready(function() {
var categories = 'operations';
$('.tns-logo a').on('click', function() {
var target = '/';
var payload = {
'event' : 'nav_click',
'target' : target,
};
if (categories) {
payload.categories = categories;
}
window.dataLayer.push(payload);
});
});
</script>
<div id="tns-header-mobile-nav">
<div class="mobile-nav-dropdown">
<div class="content-column">
<div class="row mobile-nav-row">
<div class="col-20 mobile-nav-col">
<div class="mobile-nav-header">
ARCHITECTURE
</div>
<div class="mobile-nav-menu">
<a
href="https://thenewstack.io/cloud-native/"
class="topic-cloud-native"
data-category-slug="cloud-native"
>
Cloud Native Ecosystem </a>
<a
href="https://thenewstack.io/containers/"
class="topic-containers"
data-category-slug="containers"
>
Containers </a>
<a
href="https://thenewstack.io/databases/"
class="topic-databases"
data-category-slug="databases"
>
Databases </a>
<a
href="https://thenewstack.io/edge-computing/"
class="topic-edge-computing"
data-category-slug="edge-computing"
>
Edge Computing </a>
<a
href="https://thenewstack.io/infrastructure-as-code/"
class="topic-infrastructure-as-code"
data-category-slug="infrastructure-as-code"
>
Infrastructure as Code </a>
<a
href="https://thenewstack.io/linux/"
class="topic-linux"
data-category-slug="linux"
>
Linux </a>
<a
href="https://thenewstack.io/microservices/"
class="topic-microservices"
data-category-slug="microservices"
>
Microservices </a>
<a
href="https://thenewstack.io/open-source/"
class="topic-open-source"
data-category-slug="open-source"
>
Open Source </a>
<a
href="https://thenewstack.io/networking/"
class="topic-networking"
data-category-slug="networking"
>
Networking </a>
<a
href="https://thenewstack.io/storage/"
class="topic-storage"
data-category-slug="storage"
>
Storage </a>
</div>
</div>
<div class="col-20 mobile-nav-col">
<div class="mobile-nav-header">
ENGINEERING
</div>
<div class="mobile-nav-menu">
<a
href="https://thenewstack.io/ai/"
class="topic-ai"
data-category-slug="ai"
>
AI </a>
<a
href="https://thenewstack.io/ai-engineering/"
class="topic-ai-engineering"
data-category-slug="ai-engineering"
>
AI Engineering </a>
<a
href="https://thenewstack.io/api-management/"
class="topic-api-management"
data-category-slug="api-management"
>
API Management </a>
<a
href="https://thenewstack.io/backend-development/"
class="topic-backend-development"
data-category-slug="backend-development"
>
Backend development </a>
<a
href="https://thenewstack.io/data/"
class="topic-data"
data-category-slug="data"
>
Data </a>
<a
href="https://thenewstack.io/frontend-development/"
class="topic-frontend-development"
data-category-slug="frontend-development"
>
Frontend Development </a>
<a
href="https://thenewstack.io/llm/"
class="topic-llm"
data-category-slug="llm"
>
Large Language Models </a>
<a
href="https://thenewstack.io/security/"
class="topic-security"
data-category-slug="security"
>
Security </a>
<a
href="https://thenewstack.io/software-development/"
class="topic-software-development"
data-category-slug="software-development"
>
Software Development </a>
<a
href="https://thenewstack.io/webassembly/"
class="topic-webassembly"
data-category-slug="webassembly"
>
WebAssembly </a>
</div>
</div>
<div class="col-20 mobile-nav-col">
<div class="mobile-nav-header">
OPERATIONS
</div>
<div class="mobile-nav-menu">
<a
href="https://thenewstack.io/ai-operations/"
class="topic-ai-operations"
data-category-slug="ai-operations"
>
AI Operations </a>
<a
href="https://thenewstack.io/ci-cd/"
class="topic-ci-cd"
data-category-slug="ci-cd"
>
CI/CD </a>
<a
href="https://thenewstack.io/cloud-services/"
class="topic-cloud-services"
data-category-slug="cloud-services"
>
Cloud Services </a>
<a
href="https://thenewstack.io/devops/"
class="topic-devops"
data-category-slug="devops"
>
DevOps </a>
<a
href="https://thenewstack.io/kubernetes/"
class="topic-kubernetes"
data-category-slug="kubernetes"
>
Kubernetes </a>
<a
href="https://thenewstack.io/observability/"
class="topic-observability"
data-category-slug="observability"
>
Observability </a>
<a
href="https://thenewstack.io/operations/"
class="topic-operations"
data-category-slug="operations"
>
Operations </a>
<a
href="https://thenewstack.io/platform-engineering/"
class="topic-platform-engineering"
data-category-slug="platform-engineering"
>
Platform Engineering </a>
</div>
</div>
<div class="col-20 mobile-nav-col">
<div class="mobile-nav-header">
PROGRAMMING
</div>
<div class="mobile-nav-menu">
<a
href="https://thenewstack.io/c/"
class="topic-c"
data-category-slug="c"
>
C++ </a>
<a
href="https://thenewstack.io/developer-tools/"
class="topic-developer-tools"
data-category-slug="developer-tools"
>
Developer tools </a>
<a
href="https://thenewstack.io/go/"
class="topic-go"
data-category-slug="go"
>
Go </a>
<a
href="https://thenewstack.io/java/"
class="topic-java"
data-category-slug="java"
>
Java </a>
<a
href="https://thenewstack.io/javascript/"
class="topic-javascript"
data-category-slug="javascript"
>
JavaScript </a>
<a
href="https://thenewstack.io/programming-languages/"
class="topic-programming-languages"
data-category-slug="programming-languages"
>
Programming Languages </a>
<a
href="https://thenewstack.io/python/"
class="topic-python"
data-category-slug="python"
>
Python </a>
<a
href="https://thenewstack.io/rust/"
class="topic-rust"
data-category-slug="rust"
>
Rust </a>
<a
href="https://thenewstack.io/typescript/"
class="topic-typescript"
data-category-slug="typescript"
>
TypeScript </a>
</div>
</div>
<div class="col-20 mobile-nav-col">
<div class="mobile-nav-header">
CHANNELS
</div>
<div class="mobile-nav-menu">
<a
href="https://thenewstack.io/podcasts/"
class="topic-podcasts"
data-category-slug="podcasts"
>
Podcasts </a>
<a
href="https://thenewstack.io/ebooks/"
class="topic-ebooks"
data-category-slug="ebooks"
>
Ebooks </a>
<a
href="https://thenewstack.io/events/"
class="topic-events"
data-category-slug="events"
>
Events </a>
<a
href="https://thenewstack.io/webinars/"
class="topic-webinars"
data-category-slug="webinars"
>
Webinars </a>
<a
href="https://thenewstack.io/newsletter/"
class="topic-newsletter"
data-category-slug="newsletter"
>
Newsletter </a>
<a
href="/rss-feeds/"
class="topic-rss-feeds"
data-category-slug="rss-feeds"
>
TNS RSS Feeds </a>
</div>
</div>
<div class="col-20 mobile-nav-col">
<div class="mobile-nav-header">
THE NEW STACK
</div>
<div class="mobile-nav-menu">
<a
href="https://thenewstack.io/about-and-contact-info/"
class="topic-about-and-contact-info"
data-category-slug="about-and-contact-info"
>
About / Contact </a>
<a
href="https://thenewstack.io/sponsors/"
class="topic-sponsors"
data-category-slug="sponsors"
>
Sponsors </a>
<a
href="https://thenewstack.io/sponsorship/"
class="topic-sponsorship"
data-category-slug="sponsorship"
>
Advertise With Us </a>
<a
href="https://thenewstack.io/contributions/"
class="topic-contributions"
data-category-slug="contributions"
>
Contributions </a>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="tns-header-nav-channels">
<div class="channels-nav">
<div class="channels-nav-block">
<a href="/podcasts/">PODCASTS</a>
<a href="/ebooks/">EBOOKS</a>
<a href="/events/">EVENTS</a>
<a href="/webinars/">WEBINARS</a>
<a href="/newsletter/">NEWSLETTER</a>
<a href="/contributions/">CONTRIBUTE</a>
</div>
</div>
</div>
<script>
$(document).ready(function() {
$('.channels-nav-block a').on('click', function() {
var target = $(this).attr('href');
window.dataLayer.push({
'event' : 'nav_click',
'target' : target
});
});
});
</script>
<div id="tns-header-nav-channels-dropdown">
</div>
<div id="tns-header-nav-topics">
<div class="topics-nav">
<div class="topics-nav-block">
<a href="#" class="topics-nav-option topics-nav-architecture" data-topic-slug="architecture">
ARCHITECTURE
</a>
<a href="#" class="topics-nav-option topics-nav-engineering" data-topic-slug="engineering">
ENGINEERING
</a>
<a href="#" x class="topics-nav-option topics-nav-operations" data-topic-slug="operations">
OPERATIONS
</a>
<a href="#" x class="topics-nav-option topics-nav-programming" data-topic-slug="programming">
PROGRAMMING
</a>
</div>
</div>
</div>
<script>
$(document).ready(function() {
$('.topics-nav-block a').on('click', function($event) {
$event.preventDefault();
});
$('.topics-nav-option').on('mouseenter', function() {
var slug = $(this).data('topic-slug');
$('.nav-topics-dropdown .content').css({
display : 'none',
opacity : 0
});
$('.nav-topics-dropdown .content-' + slug).transition({
display : 'flex',
opacity : 1,
duration : 99,
easing : 'snap'
});
var firstSubCategory = $('.nav-topics-dropdown .content-' + slug + ' .col-topics a:first-child');
firstSubCategory.trigger('mouseenter')
});
});
</script>
<div id="tns-header-nav-topics-dropdown">
<div class="nav-topics-dropdown tns-gradient-pink">
<div class="content content-architecture row">
<div class="col col-33 col-topics">
<a
href="https://thenewstack.io/cloud-native/"
class="topics-nav-topic topic-cloud-native"
data-category-slug="cloud-native"
>
Cloud Native Ecosystem </a>
<a
href="https://thenewstack.io/containers/"
class="topics-nav-topic topic-containers"
data-category-slug="containers"
>
Containers </a>
<a
href="https://thenewstack.io/databases/"
class="topics-nav-topic topic-databases"
data-category-slug="databases"
>
Databases </a>
<a
href="https://thenewstack.io/edge-computing/"
class="topics-nav-topic topic-edge-computing"
data-category-slug="edge-computing"
>
Edge Computing </a>
<a
href="https://thenewstack.io/infrastructure-as-code/"
class="topics-nav-topic topic-infrastructure-as-code"
data-category-slug="infrastructure-as-code"
>
Infrastructure as Code </a>
<a
href="https://thenewstack.io/linux/"
class="topics-nav-topic topic-linux"
data-category-slug="linux"
>
Linux </a>
<a
href="https://thenewstack.io/microservices/"
class="topics-nav-topic topic-microservices"
data-category-slug="microservices"
>
Microservices </a>
<a
href="https://thenewstack.io/open-source/"
class="topics-nav-topic topic-open-source"
data-category-slug="open-source"
>
Open Source </a>
<a
href="https://thenewstack.io/networking/"
class="topics-nav-topic topic-networking"
data-category-slug="networking"
>
Networking </a>
<a
href="https://thenewstack.io/storage/"
class="topics-nav-topic topic-storage"
data-category-slug="storage"
>
Storage </a>
</div>
<div class="col col-66 col-latest-stories">
<div class="topic-latest-stories topic-latest-stories-cloud-native">
<div class="topics-latest-story">
<a href="/runtime-verification-coding-agents/" class="topics-nav-story">
Greptile, Cursor, and Devin agree that agents should run their code. What they run it against matters.
<div class="byline">
<span class="date">
Jun 27th 2026 11:00am, by </span>
<span class="author">
Arjun Iyer </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/verifying-async-ai-agents/" class="topics-nav-story">
Agentic development hinges on verification. For cloud-native software, that is a runtime problem.
<div class="byline">
<span class="date">
Jun 11th 2026 10:00am, by </span>
<span class="author">
Arjun Iyer </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/opentelemetry-vendor-neutrality-guide/" class="topics-nav-story">
Vendor neutrality isn’t magic: A hard look at the OpenTelemetry ecosystem
<div class="byline">
<span class="date">
May 29th 2026 10:00am, by </span>
<span class="author">
Adriana Villela and Josh Lee </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/jaeger-clickhouse-storage-backend/" class="topics-nav-story">
How Jaeger hit 8.6× compression on 10 million spans with ClickHouse
<div class="byline">
<span class="date">
May 24th 2026 11:00am, by </span>
<span class="author">
Mahad Zaryab </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/opentelemetry-hits-general-availability/" class="topics-nav-story">
After becoming cloud computing’s telemetry standard, OpenTelemetry graduates into the AI infrastructure era
<div class="byline">
<span class="date">
May 21st 2026 10:00am, by </span>
<span class="author">
Paul Sawers </span>
</div>
</a>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-containers">
<div class="topics-latest-story">
<a href="/amazon-ecs-express-mode/" class="topics-nav-story">
Your container runs. Everything around it shouldn't be your problem.
<div class="byline">
<span class="date">
Aug 29th 2026 11:00am, by </span>
<span class="author">
Satej Sawant </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/unsigned-container-images-ai/" class="topics-nav-story">
Your container images are unsigned. In the AI era, that's a ticking time bomb.
<div class="byline">
<span class="date">
Aug 14th 2026 10:00am, by </span>
<span class="author">
Uma Sridharan </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/accelerating-eks-image-pulls/" class="topics-nav-story">
Pulling multi-gigabyte container images in seconds on Amazon EKS
<div class="byline">
<span class="date">
Aug 10th 2026 12:00pm, by </span>
<span class="author">
Sri Saran Balaji Vellore Rajakumar and Neelendra Bhandari </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/sbom-sniff-test-hardened-images/" class="topics-nav-story">
Why a five-minute sniff test is your secret supply chain defense
<div class="byline">
<span class="date">
Jul 9th 2026 12:00pm, by </span>
<span class="author">
Christian Dupuis </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/graviton5-nitro-isolation-engine/" class="topics-nav-story">
AWS can now mathematically prove your VMs are isolated
<div class="byline">
<span class="date">
Jun 10th 2026 12:46pm, by </span>
<span class="author">
Frederic Lardinois </span>
</div>
</a>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-databases">
<div class="topics-latest-story">
<a href="/ai-agent-retrieval-infrastructure/" class="topics-nav-story">
Want to scale AI agents without breaking anything? Retrieval engineering is the answer.
<div class="byline">
<span class="date">
Sep 3rd 2026 11:38am, by </span>
<span class="author">
Alex Wilhelm </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/agent-scale-database-persistence/" class="topics-nav-story">
When agents build, deploy, and maintain, persistence becomes the hard problem
<div class="byline">
<span class="date">
Sep 1st 2026 10:00am, by </span>
<span class="author">
Max Liu </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/agent-traces-application-data/" class="topics-nav-story">
When AI agent traces become application data
<div class="byline">
<span class="date">
Aug 26th 2026 9:00am, by </span>
<span class="author">
Manveer Chawla </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/motherduck-tower-acquisition-python/" class="topics-nav-story">
“You can rent a feature, but you can’t rent a foundation”: why MotherDuck bought the startup already powering its data pipelines
<div class="byline">
<span class="date">
Aug 25th 2026 9:00am, by </span>
<span class="author">
Paul Sawers </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/real-time-ai-scale/" class="topics-nav-story">
Why real-time AI at scale is so hard
<div class="byline">
<span class="date">
Aug 23rd 2026 12:00pm, by </span>
<span class="author">
Felipe Cardeneti Mendes </span>
</div>
</a>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-edge-computing">
<div class="topics-latest-story">
<a href="/spacex-nvidia-orbital-ai/" class="topics-nav-story">
SpaceX designed an orbital Vera Rubin. Radiation comes next.
<div class="byline">
<span class="date">
Aug 31st 2026 2:55pm, by </span>
<span class="author">
Steven J. Vaughan-Nichols </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/edge-kubernetes-fleet-management/" class="topics-nav-story">
Kubernetes at the edge has hit a wall. Fleet management is the way through.
<div class="byline">
<span class="date">
Aug 20th 2026 9:00am, by </span>
<span class="author">
Arvind Bhoj and Aarthi Mahesh </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/agentic-ai-latency-infrastructure/" class="topics-nav-story">
Agentic AI has a latency problem that more compute won't solve
<div class="byline">
<span class="date">
Aug 18th 2026 12:58pm, by </span>
<span class="author">
Jon Alexander </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/google-gemma-local-ai/" class="topics-nav-story">
Google Gemma 4 12B nearly matches 26B benchmarks — and runs on your laptop
<div class="byline">
<span class="date">
Jun 4th 2026 3:30pm, by </span>
<span class="author">
Meredith Shubel </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/secure-ot-data-movement/" class="topics-nav-story">
How to get operational data off the factory floor without creating an IT breach
<div class="byline">
<span class="date">
Jun 3rd 2026 3:55pm, by </span>
<span class="author">
Alex Wilhelm </span>
</div>
</a>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-infrastructure-as-code">
<div class="topics-latest-story">
<a href="/shai-hulud-pipeline-security/" class="topics-nav-story">
Shai-Hulud: Whoever controls your package registry controls your pipeline
<div class="byline">
<span class="date">
Aug 31st 2026 12:00pm, by </span>
<span class="author">
Zeen Rachidi </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/dns-domain-management-automation/" class="topics-nav-story">
DNS is infrastructure. It’s time to manage it that way.
<div class="byline">
<span class="date">
Jul 30th 2026 11:00am, by </span>
<span class="author">
Venus Kohli </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/terraform-state-infrastructure-drift/" class="topics-nav-story">
Why Terraform is green when your cloud is broken
<div class="byline">
<span class="date">
Apr 28th 2026 9:00am, by </span>
<span class="author">
Joe Karlsson </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/multi-cloud-blind-spots/" class="topics-nav-story">
The one Slack message that proved our elite engineering team was flying blind
<div class="byline">
<span class="date">
Apr 26th 2026 11:00am, by </span>
<span class="author">
Joe Karlsson </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/closing-cloud-operational-gap/" class="topics-nav-story">
The operational gap is real, and it's getting wider
<div class="byline">
<span class="date">
Mar 26th 2026 8:00am, by </span>
<span class="author">
Yevgeny Pats </span>
</div>
</a>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-linux">
<div class="topics-latest-story">
<a href="/openais-chatgpt-desktop-linux/" class="topics-nav-story">
OpenAI's ChatGPT/Codex desktop app is now on Linux
<div class="byline">
<span class="date">
Aug 11th 2026 1:53pm, by </span>
<span class="author">
Frederic Lardinois </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/torvalds-linux-ai-stance/" class="topics-nav-story">
Linux creator Linus Torvalds tells AI haters to walk away from Linux, or go fork it 
<div class="byline">
<span class="date">
Jul 16th 2026 11:15am, by </span>
<span class="author">
Adrian Bridgwater </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/torvalds-ai-programming-productivity/" class="topics-nav-story">
Why Linux creator Linus Torvalds gets angry hearing "99% of code is AI"
<div class="byline">
<span class="date">
May 29th 2026 10:34am, by </span>
<span class="author">
B. Cameron Gain </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/sparky-linux-9-brings-a-rolling-release-to-debian/" class="topics-nav-story">
Sparky Linux 9 brings a rolling release to Debian
<div class="byline">
<span class="date">
Mar 30th 2026 8:00am, by </span>
<span class="author">
Jack Wallen </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/edera-adds-kvm-support/" class="topics-nav-story">
Edera spent years calling KVM less secure. Here's why it changed its mind.
<div class="byline">
<span class="date">
Mar 25th 2026 2:22pm, by </span>
<span class="author">
Steven J. Vaughan-Nichols </span>
</div>
</a>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-microservices">
<div class="topics-latest-story">
<a href="/merge-gate-coding-agents/" class="topics-nav-story">
Your merge gate was a compromise. Coding agents are making it a liability. 
<div class="byline">
<span class="date">
Jul 11th 2026 1:00pm, by </span>
<span class="author">
Arjun Iyer </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/tetrate-built-on-envoy/" class="topics-nav-story">
Tetrate launches open source marketplace to simplify Envoy adoption
<div class="byline">
<span class="date">
Mar 11th 2026 10:52am, by </span>
<span class="author">
Adrian Bridgwater </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/opentelemetry-roadmap-sampling-rates-and-collector-improvements-ahead/" class="topics-nav-story">
OpenTelemetry roadmap: Sampling rates and collector improvements ahead
<div class="byline">
<span class="date">
Feb 24th 2026 11:00am, by </span>
<span class="author">
B. Cameron Gain </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/merging-to-test-is-killing-your-microservices-velocity/" class="topics-nav-story">
Merging To Test Is Killing Your Microservices Velocity
<div class="byline">
<span class="date">
Dec 16th 2025 7:00am, by </span>
<span class="author">
Arjun Iyer </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/ibms-confluent-acquisition-is-about-event-driven-ai/" class="topics-nav-story">
IBM’s Confluent Acquisition Is About Event-Driven AI
<div class="byline">
<span class="date">
Dec 11th 2025 6:00am, by </span>
<span class="author">
Joab Jackson </span>
</div>
</a>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-open-source">
<div class="topics-latest-story">
<a href="/aws-pizza-bot-agent-inbox/" class="topics-nav-story">
AWS open-sources Pizza Bot: email-style inbox for background AI agents
<div class="byline">
<span class="date">
Sep 10th 2026 6:54pm, by </span>
<span class="author">
Paul Sawers </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/k2-horizon-fully-open/" class="topics-nav-story">
K2 Horizon just shipped as six new fully open models — developers aren't fully convinced
<div class="byline">
<span class="date">
Sep 9th 2026 8:00am, by </span>
<span class="author">
Adrian Bridgwater </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/nvidia-acquires-hugging-face/" class="topics-nav-story">
"Hugging Face will remain an open platform": Nvidia strikes $12.9B deal for the 'GitHub of AI'
<div class="byline">
<span class="date">
Sep 3rd 2026 1:52pm, by </span>
<span class="author">
Paul Sawers </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/nvidia-pair-local-inference/" class="topics-nav-story">
Nvidia PAIR lets you put your idle Macs and PCs to work for AI agents
<div class="byline">
<span class="date">
Sep 3rd 2026 12:00pm, by </span>
<span class="author">
Frederic Lardinois </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/hugging-face-microduck-robot/" class="topics-nav-story">
This duck will teach you reinforcement learning -- and pick up your socks
<div class="byline">
<span class="date">
Aug 27th 2026 12:20pm, by </span>
<span class="author">
Frederic Lardinois </span>
</div>
</a>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-networking">
<div class="topics-latest-story">
<a href="/kubevirt-evpn-vm-migration/" class="topics-nav-story">
Why your KubeVirt VMs can’t move between clusters — and how EVPN fixes it
<div class="byline">
<span class="date">
Aug 8th 2026 10:00am, by </span>
<span class="author">
Miguel Duarte Barroso </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/dns-domain-management-automation/" class="topics-nav-story">
DNS is infrastructure. It’s time to manage it that way.
<div class="byline">
<span class="date">
Jul 30th 2026 11:00am, by </span>
<span class="author">
Venus Kohli </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/kubernetes-controllers-at-scale/" class="topics-nav-story">
From intent to enforcement: Lessons from operating Kubernetes controllers at scale
<div class="byline">
<span class="date">
Jul 17th 2026 8:00am, by </span>
<span class="author">
Sri Saran Balaji Vellore Rajakumar and Jayanth Varavani </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/unified-access-ai-agents/" class="topics-nav-story">
What happens when your VPN meets 200 AI agents
<div class="byline">
<span class="date">
Jul 14th 2026 2:53pm, by </span>
<span class="author">
Alex Wilhelm </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/cloudflare-ai-web-economics/" class="topics-nav-story">
Cloudflare wants to build the economic layer of the AI web
<div class="byline">
<span class="date">
Jul 1st 2026 4:10pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</a>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-storage">
<div class="topics-latest-story">
<a href="/agent-traces-application-data/" class="topics-nav-story">
When AI agent traces become application data
<div class="byline">
<span class="date">
Aug 26th 2026 9:00am, by </span>
<span class="author">
Manveer Chawla </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/postgres-nvme-s3-storage/" class="topics-nav-story">
Why Postgres wants NVMe on the hot path, and S3 everywhere else
<div class="byline">
<span class="date">
Apr 17th 2026 9:00am, by </span>
<span class="author">
Alasdair Brown </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/btrfs-petabyte-cost-reduction/" class="topics-nav-story">
Scaling Btrfs to petabytes in production: a 74% cost reduction story
<div class="byline">
<span class="date">
Mar 18th 2026 5:00am, by </span>
<span class="author">
Motiejus Jakštys </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/kubevirt-live-migration-mayastor/" class="topics-nav-story">
What is KubeVirt and why it’s growing
<div class="byline">
<span class="date">
Mar 17th 2026 9:00am, by </span>
<span class="author">
Tiago Castro </span>
</div>
</a>
</div>
<div class="topics-latest-story">
<a href="/tidb-x-open-source-database/" class="topics-nav-story">
S3 is the new network: Rethinking data architecture for the cloud era
<div class="byline">
<span class="date">
Feb 2nd 2026 4:00am, by </span>
<span class="author">
Max Liu </span>
</div>
</a>
</div>
</div>
</div>
</div>
<div class="content content-engineering row">
<div class="col col-33 col-topics">
<a
href="https://thenewstack.io/ai/"
class="topics-nav-topic topic-ai"
data-category-slug="ai"
>
AI </a>
<a
href="https://thenewstack.io/ai-engineering/"
class="topics-nav-topic topic-ai-engineering"
data-category-slug="ai-engineering"
>
AI Engineering </a>
<a
href="https://thenewstack.io/api-management/"
class="topics-nav-topic topic-api-management"
data-category-slug="api-management"
>
API Management </a>
<a
href="https://thenewstack.io/backend-development/"
class="topics-nav-topic topic-backend-development"
data-category-slug="backend-development"
>
Backend development </a>
<a
href="https://thenewstack.io/data/"
class="topics-nav-topic topic-data"
data-category-slug="data"
>
Data </a>
<a
href="https://thenewstack.io/frontend-development/"
class="topics-nav-topic topic-frontend-development"
data-category-slug="frontend-development"
>
Frontend Development </a>
<a
href="https://thenewstack.io/llm/"
class="topics-nav-topic topic-llm"
data-category-slug="llm"
>
Large Language Models </a>
<a
href="https://thenewstack.io/security/"
class="topics-nav-topic topic-security"
data-category-slug="security"
>
Security </a>
<a
href="https://thenewstack.io/software-development/"
class="topics-nav-topic topic-software-development"
data-category-slug="software-development"
>
Software Development </a>
<a
href="https://thenewstack.io/webassembly/"
class="topics-nav-topic topic-webassembly"
data-category-slug="webassembly"
>
WebAssembly </a>
</div>
<div class="col col-66 col-latest-stories">
<div class="topic-latest-stories topic-latest-stories-ai">
<div class="topics-latest-story">
<a href="/aws-pizza-bot-agent-inbox/" class="topics-nav-story">
AWS open-sources Pizza Bot: email-style inbox for background AI agents </a>
<div class="byline">
<span class="date">
Sep 10th 2026 6:54pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/paul-sawers/" title="Posts by Paul Sawers" class="author url fn" rel="author">Paul Sawers</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/salesforce-enterprise-ai-harness/" class="topics-nav-story">
"Six tools, one harness": Salesforce loops together a six-pack of favorites </a>
<div class="byline">
<span class="date">
Sep 10th 2026 4:03pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/adrian-bridgwater/" title="Posts by Adrian Bridgwater" class="author url fn" rel="author">Adrian Bridgwater</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/gpt-images-2-5-sunburst-flare/" class="topics-nav-story">
GPT Images 2.5 promises edits that leave the rest of your image alone </a>
<div class="byline">
<span class="date">
Sep 10th 2026 3:46pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/mshubel/" title="Posts by Meredith Shubel" class="author url fn" rel="author">Meredith Shubel</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/mistral-funding-open-infrastructure/" class="topics-nav-story">
Mistral wants open-weight AI to compete at the frontier. It just raised $3.5 billion to do it. </a>
<div class="byline">
<span class="date">
Sep 10th 2026 3:37pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/mshubel/" title="Posts by Meredith Shubel" class="author url fn" rel="author">Meredith Shubel</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/red-hat-ai-multitenancy/" class="topics-nav-story">
Red Hat AI 3.5 tackles the GPU queue that can stall AI pilots </a>
<div class="byline">
<span class="date">
Sep 10th 2026 1:01pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/adrian-bridgwater/" title="Posts by Adrian Bridgwater" class="author url fn" rel="author">Adrian Bridgwater</a> </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-ai-engineering">
<div class="topics-latest-story">
<a href="/gpt-live-1-voice-api/" class="topics-nav-story">
OpenAI split a voice model's brain. Then one team deleted 23,000 lines of code. </a>
<div class="byline">
<span class="date">
Sep 10th 2026 4:08pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/amanda-caswell/" title="Posts by Amanda Caswell" class="author url fn" rel="author">Amanda Caswell</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/shopify-native-ai-agents/" class="topics-nav-story">
Shopify spent years on React Native — then rebuilt everything in 12 weeks </a>
<div class="byline">
<span class="date">
Sep 10th 2026 3:46pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/amanda-caswell/" title="Posts by Amanda Caswell" class="author url fn" rel="author">Amanda Caswell</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/claude-fable-benchmark-budget/" class="topics-nav-story">
Fable 5.1 vs. Fable 5: Results on a real-world budget, not the spec sheet </a>
<div class="byline">
<span class="date">
Sep 10th 2026 10:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/jessica-wachtel/" title="Posts by Jessica Wachtel" class="author url fn" rel="author">Jessica Wachtel</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/ai-engineering-roles-emerging/" class="topics-nav-story">
47,000 job listings reveal the engineering roles that AI is creating </a>
<div class="byline">
<span class="date">
Sep 10th 2026 9:09am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/jennifer-riggins/" title="Posts by Jennifer Riggins" class="author url fn" rel="author">Jennifer Riggins</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/stop-ai-code-sprawl/" class="topics-nav-story">
Stop AI code sprawl before it destroys your software design </a>
<div class="byline">
<span class="date">
Sep 10th 2026 8:30am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/emmanuel-akita/" title="Posts by Emmanuel Akita" class="author url fn" rel="author">Emmanuel Akita</a> </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-api-management">
<div class="topics-latest-story">
<a href="/anthropic-files-api-costs/" class="topics-nav-story">
Anthropic's new Files API vs. pasting: It will save you time, but it won’t save you money. </a>
<div class="byline">
<span class="date">
Aug 27th 2026 9:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/jessica-wachtel/" title="Posts by Jessica Wachtel" class="author url fn" rel="author">Jessica Wachtel</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/mistral-third-party-open-models/" class="topics-nav-story">
Five European companies just agreed to buy AI compute that doesn't exist yet </a>
<div class="byline">
<span class="date">
Aug 13th 2026 10:31am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/amanda-caswell/" title="Posts by Amanda Caswell" class="author url fn" rel="author">Amanda Caswell</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/designing-apis-for-agents/" class="topics-nav-story">
Designing APIs for agents </a>
<div class="byline">
<span class="date">
Aug 1st 2026 10:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/yan-xie/" title="Posts by Yan Xie" class="author url fn" rel="author">Yan Xie</a>, <a href="https://thenewstack.io/author/virat-patel/" title="Posts by Virat Patel" class="author url fn" rel="author">Virat Patel</a> and <a href="https://thenewstack.io/author/albert-chang/" title="Posts by Albert Chang" class="author url fn" rel="author">Albert Chang</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/gpt-5-6-api-price-cuts/" class="topics-nav-story">
OpenAI slashes API costs amid rising global competition </a>
<div class="byline">
<span class="date">
Jul 30th 2026 3:28pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/amanda-caswell/" title="Posts by Amanda Caswell" class="author url fn" rel="author">Amanda Caswell</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/mcp-release-candidate-rewrite/" class="topics-nav-story">
MCP’s biggest update removes the machinery many servers were built around </a>
<div class="byline">
<span class="date">
Jul 26th 2026 12:00pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/janakiram/" title="Posts by Janakiram MSV" class="author url fn" rel="author">Janakiram MSV</a> </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-backend-development">
<div class="topics-latest-story">
<a href="/vespa-realtime-personalization-ranking/" class="topics-nav-story">
Personalization is a ranking problem — architecture makes it work </a>
<div class="byline">
<span class="date">
Jul 23rd 2026 12:00pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/jenny-morris/" title="Posts by Jenny Morris" class="author url fn" rel="author">Jenny Morris</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/production-rag-architecture-fixes/" class="topics-nav-story">
Can prompt caching tame RAG costs without sacrificing accuracy? </a>
<div class="byline">
<span class="date">
Jul 23rd 2026 9:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/emmanuel-akita/" title="Posts by Emmanuel Akita" class="author url fn" rel="author">Emmanuel Akita</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/async-processing-hides-latency/" class="topics-nav-story">
How async processing hides latency and improves responsiveness </a>
<div class="byline">
<span class="date">
Jul 12th 2026 1:00pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/pekka-enberg/" title="Posts by Pekka Enberg" class="author url fn" rel="author">Pekka Enberg</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/php-performance-operational-planning/" class="topics-nav-story">
Why PHP performance keeps getting bumped from the roadmap </a>
<div class="byline">
<span class="date">
May 6th 2026 10:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/matthew-weier-ophinney/" title="Posts by Matthew Weier O’Phinney" class="author url fn" rel="author">Matthew Weier O’Phinney</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/postgres-nvme-s3-storage/" class="topics-nav-story">
Why Postgres wants NVMe on the hot path, and S3 everywhere else </a>
<div class="byline">
<span class="date">
Apr 17th 2026 9:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/alasdair-brown/" title="Posts by Alasdair Brown" class="author url fn" rel="author">Alasdair Brown</a> </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-data">
<div class="topics-latest-story">
<a href="/salesforce-enterprise-ai-harness/" class="topics-nav-story">
"Six tools, one harness": Salesforce loops together a six-pack of favorites </a>
<div class="byline">
<span class="date">
Sep 10th 2026 4:03pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/adrian-bridgwater/" title="Posts by Adrian Bridgwater" class="author url fn" rel="author">Adrian Bridgwater</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/polars-streaming-row-order/" class="topics-nav-story">
Polars 2.0 pre-release comes with a 5x speed boost — but it could change row order </a>
<div class="byline">
<span class="date">
Sep 6th 2026 9:30am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/mshubel/" title="Posts by Meredith Shubel" class="author url fn" rel="author">Meredith Shubel</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/google-timesfm-3-multivariate-forecasting/" class="topics-nav-story">
Google's new forecasting model beats everyone. You can't use it at work (yet). </a>
<div class="byline">
<span class="date">
Aug 31st 2026 3:41pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/frederic-lardinois/" title="Posts by Frederic Lardinois" class="author url fn" rel="author">Frederic Lardinois</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/opentelemetry-observability-telemetry-storage/" class="topics-nav-story">
Observability has a data problem. AI is about to make it worse. </a>
<div class="byline">
<span class="date">
Aug 26th 2026 4:08pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/will-kelly/" title="Posts by Will Kelly" class="author url fn" rel="author">Will Kelly</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/modus-enterprise-context-warehouse/" class="topics-nav-story">
Modus's operandi: To give AI agents just the right amount of context </a>
<div class="byline">
<span class="date">
Jul 29th 2026 9:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/paul-sawers/" title="Posts by Paul Sawers" class="author url fn" rel="author">Paul Sawers</a> </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-frontend-development">
<div class="topics-latest-story">
<a href="/runway-solaris-generated-interfaces/" class="topics-nav-story">
Runway wants to generate software as you use it. Solaris is its first step. </a>
<div class="byline">
<span class="date">
Sep 1st 2026 3:44pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/mshubel/" title="Posts by Meredith Shubel" class="author url fn" rel="author">Meredith Shubel</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/cloudflare-astro-triage-bot/" class="topics-nav-story">
Astro's GitHub issue backlog is heading to zero for the first time in 5 years. Now Cloudflare is open-sourcing the tool that did it. </a>
<div class="byline">
<span class="date">
Aug 4th 2026 9:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/paul-sawers/" title="Posts by Paul Sawers" class="author url fn" rel="author">Paul Sawers</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/fedcm-federated-login-standard/" class="topics-nav-story">
Your social login buttons run on third-party cookies. FedCM doesn't. </a>
<div class="byline">
<span class="date">
Jul 2nd 2026 10:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/jeff-hickman/" title="Posts by Jeff Hickman" class="author url fn" rel="author">Jeff Hickman</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/anthropic-claude-design-overhaul/" class="topics-nav-story">
Anthropic overhauled Claude Design to fix the handoff. A designer and an engineer disagree on whether it worked. </a>
<div class="byline">
<span class="date">
Jun 19th 2026 9:35am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/mshubel/" title="Posts by Meredith Shubel" class="author url fn" rel="author">Meredith Shubel</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/google-agent-ready-web/" class="topics-nav-story">
Google wants to make the web agent-ready </a>
<div class="byline">
<span class="date">
May 19th 2026 1:45pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/frederic-lardinois/" title="Posts by Frederic Lardinois" class="author url fn" rel="author">Frederic Lardinois</a> </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-llm">
<div class="topics-latest-story">
<a href="/gpt-live-1-voice-api/" class="topics-nav-story">
OpenAI split a voice model's brain. Then one team deleted 23,000 lines of code. </a>
<div class="byline">
<span class="date">
Sep 10th 2026 4:08pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/amanda-caswell/" title="Posts by Amanda Caswell" class="author url fn" rel="author">Amanda Caswell</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/claude-fable-benchmark-budget/" class="topics-nav-story">
Fable 5.1 vs. Fable 5: Results on a real-world budget, not the spec sheet </a>
<div class="byline">
<span class="date">
Sep 10th 2026 10:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/jessica-wachtel/" title="Posts by Jessica Wachtel" class="author url fn" rel="author">Jessica Wachtel</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/claude-build-agents-benchmark/" class="topics-nav-story">
Claude performed best on a new benchmark for 'agents that build agents'. But it passed fewer than a quarter of the tests. </a>
<div class="byline">
<span class="date">
Sep 9th 2026 4:14pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/paul-sawers/" title="Posts by Paul Sawers" class="author url fn" rel="author">Paul Sawers</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/building-trust-agentic-rag/" class="topics-nav-story">
Building trust in agentic RAG starts with evidence </a>
<div class="byline">
<span class="date">
Sep 5th 2026 11:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/jeremy-daly/" title="Posts by Jeremy Daly" class="author url fn" rel="author">Jeremy Daly</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/gpt6-astra-developer-access-delayed/" class="topics-nav-story">
"Sorry for the messy rollout": OpenAI launches GPT-6 Astra to most paying users a day after its unveiling </a>
<div class="byline">
<span class="date">
Sep 4th 2026 7:42pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/amanda-caswell/" title="Posts by Amanda Caswell" class="author url fn" rel="author">Amanda Caswell</a> </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-security">
<div class="topics-latest-story">
<a href="/anthropic-claude-cyber-alignment/" class="topics-nav-story">
“Valuable warning shots”: How Anthropic now views Claude’s cyber incidents </a>
<div class="byline">
<span class="date">
Sep 10th 2026 3:54pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/mshubel/" title="Posts by Meredith Shubel" class="author url fn" rel="author">Meredith Shubel</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/mcp-vibe-coding-security/" class="topics-nav-story">
Researchers found that 1 in 5 MCP access policies came back broken or missing </a>
<div class="byline">
<span class="date">
Sep 10th 2026 11:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/yasmin-rajabi/" title="Posts by Yasmin Rajabi" class="author url fn" rel="author">Yasmin Rajabi</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/vulnerability-prioritization-business-context/" class="topics-nav-story">
AI floods security teams with flaws — business context sets priorities </a>
<div class="byline">
<span class="date">
Sep 10th 2026 8:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/megan-carnegie/" title="Posts by Megan Carnegie" class="author url fn" rel="author">Megan Carnegie</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/openai-ai-code-review/" class="topics-nav-story">
OpenAI gave an AI the power to block its own engineers' code </a>
<div class="byline">
<span class="date">
Sep 9th 2026 3:53pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/amanda-caswell/" title="Posts by Amanda Caswell" class="author url fn" rel="author">Amanda Caswell</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/ai-agents-soc-autonomy/" class="topics-nav-story">
How much control should AI get? A CISO roundtable takes on SOC autonomy </a>
<div class="byline">
<span class="date">
Sep 9th 2026 11:38am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/carly-page/" title="Posts by Carly Page" class="author url fn" rel="author">Carly Page</a> </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-software-development">
<div class="topics-latest-story">
<a href="/shopify-native-ai-agents/" class="topics-nav-story">
Shopify spent years on React Native — then rebuilt everything in 12 weeks </a>
<div class="byline">
<span class="date">
Sep 10th 2026 3:46pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/amanda-caswell/" title="Posts by Amanda Caswell" class="author url fn" rel="author">Amanda Caswell</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/openai-ai-code-review/" class="topics-nav-story">
OpenAI gave an AI the power to block its own engineers' code </a>
<div class="byline">
<span class="date">
Sep 9th 2026 3:53pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/amanda-caswell/" title="Posts by Amanda Caswell" class="author url fn" rel="author">Amanda Caswell</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/anthropic-claude-max-lawsuit/" class="topics-nav-story">
Anthropic promised 20x more usage. Then developers hit a weekly ceiling. </a>
<div class="byline">
<span class="date">
Sep 8th 2026 6:16pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/amanda-caswell/" title="Posts by Amanda Caswell" class="author url fn" rel="author">Amanda Caswell</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/claude-fable-upgrade-tested/" class="topics-nav-story">
Claude Fable 5.1 vs. Fable 5: On real work, I couldn't tell them apart. </a>
<div class="byline">
<span class="date">
Sep 5th 2026 11:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/jessica-wachtel/" title="Posts by Jessica Wachtel" class="author url fn" rel="author">Jessica Wachtel</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/runway-solaris-generated-interfaces/" class="topics-nav-story">
Runway wants to generate software as you use it. Solaris is its first step. </a>
<div class="byline">
<span class="date">
Sep 1st 2026 3:44pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/mshubel/" title="Posts by Meredith Shubel" class="author url fn" rel="author">Meredith Shubel</a> </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-webassembly">
<div class="topics-latest-story">
<a href="/akamai-edge-ai-inference/" class="topics-nav-story">
Edge-forward: Akamai eyes sweet spot between centralized &amp; decentralized AI inference </a>
<div class="byline">
<span class="date">
Apr 1st 2026 7:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/adrian-bridgwater/" title="Posts by Adrian Bridgwater" class="author url fn" rel="author">Adrian Bridgwater</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/webassembly-component-model-future/" class="topics-nav-story">
WebAssembly is now outperforming containers at the edge </a>
<div class="byline">
<span class="date">
Mar 29th 2026 9:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/bruce-gain/" title="Posts by B. Cameron Gain" class="author url fn" rel="author">B. Cameron Gain</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/webassembly-sandboxing-ai-agents/" class="topics-nav-story">
WebAssembly could solve AI agents' most dangerous security gap </a>
<div class="byline">
<span class="date">
Mar 24th 2026 9:01am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/bruce-gain/" title="Posts by B. Cameron Gain" class="author url fn" rel="author">B. Cameron Gain</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/how-webassembly-plugins-simplify-kubernetes-extensibility/" class="topics-nav-story">
How WebAssembly plugins simplify Kubernetes extensibility </a>
<div class="byline">
<span class="date">
Mar 3rd 2026 2:00pm, by </span>
<span class="author">
<a href="https://thenewstack.io/author/bruce-gain/" title="Posts by B. Cameron Gain" class="author url fn" rel="author">B. Cameron Gain</a> </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/webassembly-is-everywhere-heres-how-it-works/" class="topics-nav-story">
WebAssembly is everywhere. Here's how it works </a>
<div class="byline">
<span class="date">
Feb 25th 2026 11:00am, by </span>
<span class="author">
<a href="https://thenewstack.io/author/jessica-wachtel/" title="Posts by Jessica Wachtel" class="author url fn" rel="author">Jessica Wachtel</a> </span>
</div>
</div>
</div>
</div>
</div>
<div class="content content-operations row">
<div class="col col-33 col-topics">
<a
href="https://thenewstack.io/ai-operations/"
class="topics-nav-topic topic-ai-operations"
data-category-slug="ai-operations"
>
AI Operations </a>
<a
href="https://thenewstack.io/ci-cd/"
class="topics-nav-topic topic-ci-cd"
data-category-slug="ci-cd"
>
CI/CD </a>
<a
href="https://thenewstack.io/cloud-services/"
class="topics-nav-topic topic-cloud-services"
data-category-slug="cloud-services"
>
Cloud Services </a>
<a
href="https://thenewstack.io/devops/"
class="topics-nav-topic topic-devops"
data-category-slug="devops"
>
DevOps </a>
<a
href="https://thenewstack.io/kubernetes/"
class="topics-nav-topic topic-kubernetes"
data-category-slug="kubernetes"
>
Kubernetes </a>
<a
href="https://thenewstack.io/observability/"
class="topics-nav-topic topic-observability"
data-category-slug="observability"
>
Observability </a>
<a
href="https://thenewstack.io/operations/"
class="topics-nav-topic topic-operations"
data-category-slug="operations"
>
Operations </a>
<a
href="https://thenewstack.io/platform-engineering/"
class="topics-nav-topic topic-platform-engineering"
data-category-slug="platform-engineering"
>
Platform Engineering </a>
</div>
<div class="col col-66 col-latest-stories">
<div class="topic-latest-stories topic-latest-stories-ai-operations">
<div class="topics-latest-story">
<a href="/red-hat-ai-multitenancy/" class="topics-nav-story">
Red Hat AI 3.5 tackles the GPU queue that can stall AI pilots </a>
<div class="byline">
<span class="date">
Sep 10th 2026 1:01pm, by </span>
<span class="author">
Adrian Bridgwater </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/nvidia-palantir-ai-supply-chain/" class="topics-nav-story">
Nvidia and Palantir fine-tune a 30B Nemotron model for Nvidia's supply chain. It beats a model 18 times its size. </a>
<div class="byline">
<span class="date">
Sep 10th 2026 5:00am, by </span>
<span class="author">
Paul Sawers </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/ai-agents-soc-autonomy/" class="topics-nav-story">
How much control should AI get? A CISO roundtable takes on SOC autonomy </a>
<div class="byline">
<span class="date">
Sep 9th 2026 11:38am, by </span>
<span class="author">
Carly Page </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/deepseek-dsec-agent-hiring/" class="topics-nav-story">
DeepSeek is hiring 150 engineers, and none of them will touch a model </a>
<div class="byline">
<span class="date">
Sep 8th 2026 3:01pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/openai-agent-research-bottleneck/" class="topics-nav-story">
AI agents are creating more work, not less — and OpenAI's own numbers back it up </a>
<div class="byline">
<span class="date">
Sep 7th 2026 3:05pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-ci-cd">
<div class="topics-latest-story">
<a href="/stop-ai-code-sprawl/" class="topics-nav-story">
Stop AI code sprawl before it destroys your software design </a>
<div class="byline">
<span class="date">
Sep 10th 2026 8:30am, by </span>
<span class="author">
Emmanuel Akita </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/ai-code-review-pipelines/" class="topics-nav-story">
AI broke code review. Two experts disagree on what replaces it. </a>
<div class="byline">
<span class="date">
Sep 8th 2026 11:35am, by </span>
<span class="author">
TNS Staff </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/shai-hulud-pipeline-security/" class="topics-nav-story">
Shai-Hulud: Whoever controls your package registry controls your pipeline </a>
<div class="byline">
<span class="date">
Aug 31st 2026 12:00pm, by </span>
<span class="author">
Zeen Rachidi </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/jetbrains-told-everyone-to-patch-it-didnt-patch-itself/" class="topics-nav-story">
JetBrains told everyone to patch. It didn't patch itself. </a>
<div class="byline">
<span class="date">
Aug 28th 2026 4:51pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/npm-supply-chain-worm-attack/" class="topics-nav-story">
The npm attack that turned provenance attestations into camouflage </a>
<div class="byline">
<span class="date">
Aug 7th 2026 2:31pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-cloud-services">
<div class="topics-latest-story">
<a href="/vulnerability-prioritization-business-context/" class="topics-nav-story">
AI floods security teams with flaws — business context sets priorities </a>
<div class="byline">
<span class="date">
Sep 10th 2026 8:00am, by </span>
<span class="author">
Megan Carnegie </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/ard-agent-discovery-specification/" class="topics-nav-story">
MCP was supposed to solve the agent tooling problem. It missed a step. </a>
<div class="byline">
<span class="date">
Aug 31st 2026 4:04pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/jetbrains-told-everyone-to-patch-it-didnt-patch-itself/" class="topics-nav-story">
JetBrains told everyone to patch. It didn't patch itself. </a>
<div class="byline">
<span class="date">
Aug 28th 2026 4:51pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/mistral-mcp-connector-migration/" class="topics-nav-story">
What happens to your indexed data when Mistral flips the switch? </a>
<div class="byline">
<span class="date">
Aug 18th 2026 4:07pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/manus-meta-data-deletion/" class="topics-nav-story">
Your AI agent remembers everything. Here's what happens when its owner changes. </a>
<div class="byline">
<span class="date">
Aug 11th 2026 5:46pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-devops">
<div class="topics-latest-story">
<a href="/harness-ai-code-review/" class="topics-nav-story">
Harness rebuilt its Git repository for nonstop AI agent traffic </a>
<div class="byline">
<span class="date">
Sep 9th 2026 7:00am, by </span>
<span class="author">
Frederic Lardinois </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/ai-code-review-pipelines/" class="topics-nav-story">
AI broke code review. Two experts disagree on what replaces it. </a>
<div class="byline">
<span class="date">
Sep 8th 2026 11:35am, by </span>
<span class="author">
TNS Staff </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/amazon-ecs-express-mode/" class="topics-nav-story">
Your container runs. Everything around it shouldn't be your problem. </a>
<div class="byline">
<span class="date">
Aug 29th 2026 11:00am, by </span>
<span class="author">
Satej Sawant </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/ai-coding-agent-security/" class="topics-nav-story">
One pull to wipe them all </a>
<div class="byline">
<span class="date">
Aug 23rd 2026 10:00am, by </span>
<span class="author">
Zeen Rachidi </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/open-mainframe-keystone-enterprise/" class="topics-nav-story">
The open mainframe: the keystone of the end-to-end digital enterprise </a>
<div class="byline">
<span class="date">
Aug 22nd 2026 1:00pm, by </span>
<span class="author">
Jason Bloomberg </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-kubernetes">
<div class="topics-latest-story">
<a href="/cut-gpu-cold-starts/" class="topics-nav-story">
Cut GPU inference cold start from 8 minutes to less than a minute </a>
<div class="byline">
<span class="date">
Sep 3rd 2026 2:30pm, by </span>
<span class="author">
Sajjan Gundapuneedi </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/edge-kubernetes-fleet-management/" class="topics-nav-story">
Kubernetes at the edge has hit a wall. Fleet management is the way through. </a>
<div class="byline">
<span class="date">
Aug 20th 2026 9:00am, by </span>
<span class="author">
Arvind Bhoj and Aarthi Mahesh </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/kubernetes-fleet-security-management/" class="topics-nav-story">
AWS deprecated this EKS auth method. 81% of clusters still run it. </a>
<div class="byline">
<span class="date">
Aug 19th 2026 2:59pm, by </span>
<span class="author">
Yannick Struyf and Aarthi Mahesh </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/accelerating-eks-image-pulls/" class="topics-nav-story">
Pulling multi-gigabyte container images in seconds on Amazon EKS </a>
<div class="byline">
<span class="date">
Aug 10th 2026 12:00pm, by </span>
<span class="author">
Sri Saran Balaji Vellore Rajakumar and Neelendra Bhandari </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/kubevirt-evpn-vm-migration/" class="topics-nav-story">
Why your KubeVirt VMs can’t move between clusters — and how EVPN fixes it </a>
<div class="byline">
<span class="date">
Aug 8th 2026 10:00am, by </span>
<span class="author">
Miguel Duarte Barroso </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-observability">
<div class="topics-latest-story">
<a href="/tracing-data-overload-sampling/" class="topics-nav-story">
How to find failures without drowning in tracing data </a>
<div class="byline">
<span class="date">
Sep 3rd 2026 4:17pm, by </span>
<span class="author">
Alex Wilhelm </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/anthropic-claude-agent-security/" class="topics-nav-story">
Anthropic's Claude failures have made agent observability a security priority </a>
<div class="byline">
<span class="date">
Sep 2nd 2026 4:12pm, by </span>
<span class="author">
Adrian Bridgwater </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/opentelemetry-observability-telemetry-storage/" class="topics-nav-story">
Observability has a data problem. AI is about to make it worse. </a>
<div class="byline">
<span class="date">
Aug 26th 2026 4:08pm, by </span>
<span class="author">
Will Kelly </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/agentic-ai-telemetry-costs/" class="topics-nav-story">
How telemetry pipelines keep AI agent costs under control </a>
<div class="byline">
<span class="date">
Aug 25th 2026 3:01pm, by </span>
<span class="author">
Megan Carnegie </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/opensearch-ppl-unified-alerting/" class="topics-nav-story">
How to build smarter OpenSearch alerts: Join our live conversation </a>
<div class="byline">
<span class="date">
Aug 20th 2026 1:40pm, by </span>
<span class="author">
Charles Humble </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-operations">
<div class="topics-latest-story">
<a href="/tracing-data-overload-sampling/" class="topics-nav-story">
How to find failures without drowning in tracing data </a>
<div class="byline">
<span class="date">
Sep 3rd 2026 4:17pm, by </span>
<span class="author">
Alex Wilhelm </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/github-2-9b-monthly-commits/" class="topics-nav-story">
GitHub now sees 2.9 billion commits a month -- and it can't keep up </a>
<div class="byline">
<span class="date">
Aug 20th 2026 5:37pm, by </span>
<span class="author">
Frederic Lardinois </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/edge-kubernetes-fleet-management/" class="topics-nav-story">
Kubernetes at the edge has hit a wall. Fleet management is the way through. </a>
<div class="byline">
<span class="date">
Aug 20th 2026 9:00am, by </span>
<span class="author">
Arvind Bhoj and Aarthi Mahesh </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/dns-domain-management-automation/" class="topics-nav-story">
DNS is infrastructure. It’s time to manage it that way. </a>
<div class="byline">
<span class="date">
Jul 30th 2026 11:00am, by </span>
<span class="author">
Venus Kohli </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/build-resilient-service-architecture/" class="topics-nav-story">
5 steps to build great service architecture and operational resilience </a>
<div class="byline">
<span class="date">
Jul 25th 2026 12:00pm, by </span>
<span class="author">
Debora Cambe </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-platform-engineering">
<div class="topics-latest-story">
<a href="/red-hat-ai-multitenancy/" class="topics-nav-story">
Red Hat AI 3.5 tackles the GPU queue that can stall AI pilots </a>
<div class="byline">
<span class="date">
Sep 10th 2026 1:01pm, by </span>
<span class="author">
Adrian Bridgwater </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/hashicorp-mcjannet-dome-agents/" class="topics-nav-story">
After nine years as HashiCorp CEO, Dave McJannet now wants to "unblock" enterprise AI agents </a>
<div class="byline">
<span class="date">
Sep 8th 2026 8:59am, by </span>
<span class="author">
Paul Sawers </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/agent-context-development-lifecycle/" class="topics-nav-story">
Your agent context needs a development lifecycle </a>
<div class="byline">
<span class="date">
Aug 31st 2026 9:00am, by </span>
<span class="author">
Ankit Jain and Patrick Debois </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/ai-agent-platform-roles/" class="topics-nav-story">
The 3 roles AI agents play in your developer platform </a>
<div class="byline">
<span class="date">
Aug 29th 2026 9:00am, by </span>
<span class="author">
Matar Peles </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/microsoft-agent-lightning-harness/" class="topics-nav-story">
Microsoft just released Agent Lightning v1.0. Here’s why it matters for platform engineers. </a>
<div class="byline">
<span class="date">
Aug 26th 2026 8:30am, by </span>
<span class="author">
Adrian Bridgwater </span>
</div>
</div>
</div>
</div>
</div>
<div class="content content-programming row">
<div class="col col-33 col-topics">
<a
href="https://thenewstack.io/c/"
class="topics-nav-topic topic-c"
data-category-slug="c"
>
C++ </a>
<a
href="https://thenewstack.io/developer-tools/"
class="topics-nav-topic topic-developer-tools"
data-category-slug="developer-tools"
>
Developer tools </a>
<a
href="https://thenewstack.io/go/"
class="topics-nav-topic topic-go"
data-category-slug="go"
>
Go </a>
<a
href="https://thenewstack.io/java/"
class="topics-nav-topic topic-java"
data-category-slug="java"
>
Java </a>
<a
href="https://thenewstack.io/javascript/"
class="topics-nav-topic topic-javascript"
data-category-slug="javascript"
>
JavaScript </a>
<a
href="https://thenewstack.io/programming-languages/"
class="topics-nav-topic topic-programming-languages"
data-category-slug="programming-languages"
>
Programming Languages </a>
<a
href="https://thenewstack.io/python/"
class="topics-nav-topic topic-python"
data-category-slug="python"
>
Python </a>
<a
href="https://thenewstack.io/rust/"
class="topics-nav-topic topic-rust"
data-category-slug="rust"
>
Rust </a>
<a
href="https://thenewstack.io/typescript/"
class="topics-nav-topic topic-typescript"
data-category-slug="typescript"
>
TypeScript </a>
</div>
<div class="col col-66 col-latest-stories">
<div class="topic-latest-stories topic-latest-stories-c">
<div class="topics-latest-story">
<a href="/open-source-usearch-library-jumpstarts-scylladb-vector-search/" class="topics-nav-story">
Open source USearch library jumpstarts ScyllaDB vector search </a>
<div class="byline">
<span class="date">
Feb 5th 2026 12:00pm, by </span>
<span class="author">
Jelani Harper </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/aws-waf-vs-google-cloud-armor-a-multicloud-security-showdown/" class="topics-nav-story">
AWS WAF vs. Google Cloud Armor: A Multicloud Security Showdown </a>
<div class="byline">
<span class="date">
Nov 25th 2025 10:00am, by </span>
<span class="author">
Advait Patel </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/goodbye-dashboards-agents-deliver-answers-not-just-reports/" class="topics-nav-story">
Goodbye Dashboards: Agents Deliver Answers, Not Just Reports </a>
<div class="byline">
<span class="date">
Nov 23rd 2025 9:00am, by </span>
<span class="author">
Ketan Karkhanis </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/rust-vs-c-a-modern-take-on-performance-and-safety/" class="topics-nav-story">
Rust vs. C++: a Modern Take on Performance and Safety </a>
<div class="byline">
<span class="date">
Oct 22nd 2025 2:00pm, by </span>
<span class="author">
Zziwa Raymond Ian </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/building-a-real-time-system-monitor-in-rust-terminal/" class="topics-nav-story">
Building a Real-Time System Monitor in Rust Terminal </a>
<div class="byline">
<span class="date">
Oct 15th 2025 7:05am, by </span>
<span class="author">
Tinega Onchari </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-developer-tools">
<div class="topics-latest-story">
<a href="/k2-horizon-fully-open/" class="topics-nav-story">
K2 Horizon just shipped as six new fully open models — developers aren't fully convinced </a>
<div class="byline">
<span class="date">
Sep 9th 2026 8:00am, by </span>
<span class="author">
Adrian Bridgwater </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/harness-ai-code-review/" class="topics-nav-story">
Harness rebuilt its Git repository for nonstop AI agent traffic </a>
<div class="byline">
<span class="date">
Sep 9th 2026 7:00am, by </span>
<span class="author">
Frederic Lardinois </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/coding-agents-tool-choice/" class="topics-nav-story">
“Twenty years of brand building simply froze in time”: How coding agents select their tools of choice </a>
<div class="byline">
<span class="date">
Sep 7th 2026 8:02am, by </span>
<span class="author">
Adrian Bridgwater </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/polars-streaming-row-order/" class="topics-nav-story">
Polars 2.0 pre-release comes with a 5x speed boost — but it could change row order </a>
<div class="byline">
<span class="date">
Sep 6th 2026 9:30am, by </span>
<span class="author">
Meredith Shubel </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/coder-cursor-agent-relay/" class="topics-nav-story">
"1% of my engineers are responsible for 40% of token spend": Why Coder and SpaceXAI want to give developers nice things </a>
<div class="byline">
<span class="date">
Sep 4th 2026 8:00am, by </span>
<span class="author">
Adrian Bridgwater </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-go">
<div class="topics-latest-story">
<a href="/go-language-ai-agents/" class="topics-nav-story">
Code that passes every test can still break the next AI agent that touches it </a>
<div class="byline">
<span class="date">
Aug 12th 2026 1:00pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/microsoft-agent-framework-go/" class="topics-nav-story">
Microsoft joins Google in backing Go for AI agents — OpenAI and Anthropic lag </a>
<div class="byline">
<span class="date">
Jul 11th 2026 10:00am, by </span>
<span class="author">
Paul Sawers </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/go-experts-i-dont-want-to-maintain-ai-generated-code/" class="topics-nav-story">
Go Experts: 'I Don't Want to Maintain AI-Generated Code' </a>
<div class="byline">
<span class="date">
Sep 28th 2025 6:00am, by </span>
<span class="author">
David Cassel </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/how-to-run-kubernetes-commands-in-go-steps-and-best-practices/" class="topics-nav-story">
How To Run Kubernetes Commands in Go: Steps and Best Practices  </a>
<div class="byline">
<span class="date">
Jun 27th 2025 8:00am, by </span>
<span class="author">
Sunny Yadav </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/prepare-your-mac-for-go-development/" class="topics-nav-story">
Prepare Your Mac for Go Development </a>
<div class="byline">
<span class="date">
Apr 12th 2025 7:00am, by </span>
<span class="author">
Damon M. Garn </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-java">
<div class="topics-latest-story">
<a href="/azul-java-security-jvm-mythos/" class="topics-nav-story">
Azul wants to find your unpatched JVMs before AI does </a>
<div class="byline">
<span class="date">
Jun 24th 2026 4:53pm, by </span>
<span class="author">
Darryl K. Taft </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/chainguard-java-libraries-spring-boot-cves/" class="topics-nav-story">
Chainguard targets Java's unpatched vulnerability backlog with drop-in remediated libraries </a>
<div class="byline">
<span class="date">
Jun 24th 2026 4:48pm, by </span>
<span class="author">
Darryl K. Taft </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/deterministic-ai-spring-upgrades/" class="topics-nav-story">
Transform your AI coding agent into a deterministic Java Spring expert </a>
<div class="byline">
<span class="date">
Jun 11th 2026 9:00am, by </span>
<span class="author">
Raquel Pau </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/broadcom-spring-java-cve-security-ai/" class="topics-nav-story">
Spring is 23 years old. AI just made it a security emergency. </a>
<div class="byline">
<span class="date">
Jun 9th 2026 2:48pm, by </span>
<span class="author">
Darryl K. Taft </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/in-the-ai-age-java-is-more-relevant-than-ever/" class="topics-nav-story">
In the AI age, Java is more relevant than ever </a>
<div class="byline">
<span class="date">
Apr 8th 2026 5:30pm, by </span>
<span class="author">
Mary Branscombe </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-javascript">
<div class="topics-latest-story">
<a href="/cloudflare-voidzero-acquisition-vite/" class="topics-nav-story">
Cloudflare aqui-hires VoidZero: Did a piece of the open web just stabilize, or become more brittle? </a>
<div class="byline">
<span class="date">
Jun 5th 2026 3:01pm, by </span>
<span class="author">
Adrian Bridgwater </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/bun-developers-complaints-anthropic/" class="topics-nav-story">
"Real maturity problems": Not every developer is thrilled with Bun after Anthropic acquisition </a>
<div class="byline">
<span class="date">
May 5th 2026 1:03pm, by </span>
<span class="author">
Adrian Bridgwater </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/typescript-6-0-rc-arrives-as-a-bridge-to-a-faster-future/" class="topics-nav-story">
TypeScript 6.0 RC arrives as a bridge to a faster future </a>
<div class="byline">
<span class="date">
Mar 14th 2026 9:00am, by </span>
<span class="author">
Darryl K. Taft </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/webassembly-is-everywhere-heres-how-it-works/" class="topics-nav-story">
WebAssembly is everywhere. Here's how it works </a>
<div class="byline">
<span class="date">
Feb 25th 2026 11:00am, by </span>
<span class="author">
Jessica Wachtel </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/wasm-vs-javascript-who-wins-at-a-million-rows/" class="topics-nav-story">
Wasm vs. JavaScript: Who wins at a million rows? </a>
<div class="byline">
<span class="date">
Feb 22nd 2026 6:00am, by </span>
<span class="author">
Jessica Wachtel </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-programming-languages">
<div class="topics-latest-story">
<a href="/kotlin-notebook-jupyter-python-retreat/" class="topics-nav-story">
JetBrains kills Kotlin Notebook months after Microsoft's Polyglot exit. But Jupyter is doing just fine. </a>
<div class="byline">
<span class="date">
Jun 29th 2026 1:59pm, by </span>
<span class="author">
Paul Sawers </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/rust-foundation-training-certification/" class="topics-nav-story">
Trust in Rust: Foundation debuts official training to tackle steep learning curve </a>
<div class="byline">
<span class="date">
Jun 25th 2026 12:30pm, by </span>
<span class="author">
Darryl K. Taft </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/php-web-skills-hiring-age/" class="topics-nav-story">
Who will maintain the web when PHP's veterans retire? </a>
<div class="byline">
<span class="date">
Apr 16th 2026 2:53pm, by </span>
<span class="author">
Darryl K. Taft </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/ai-programming-languages-future/" class="topics-nav-story">
Will AI force code to evolve or make it extinct? </a>
<div class="byline">
<span class="date">
Mar 22nd 2026 6:00am, by </span>
<span class="author">
David Cassel </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/java-26-performance-ai/" class="topics-nav-story">
Java 26 lands without an LTS badge. Here's why developers should care anyway. </a>
<div class="byline">
<span class="date">
Mar 18th 2026 9:35am, by </span>
<span class="author">
Darryl K. Taft </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-python">
<div class="topics-latest-story">
<a href="/stop-ai-code-sprawl/" class="topics-nav-story">
Stop AI code sprawl before it destroys your software design </a>
<div class="byline">
<span class="date">
Sep 10th 2026 8:30am, by </span>
<span class="author">
Emmanuel Akita </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/graphrag-multi-hop-reasoning-python/" class="topics-nav-story">
Why basic RAG fails at multi-hop reasoning (and how GraphRAG fixes it) </a>
<div class="byline">
<span class="date">
Aug 27th 2026 10:00am, by </span>
<span class="author">
Emmanuel Akita </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/nvidia-nooa-agent-framework/" class="topics-nav-story">
Nvidia's NOOA makes an agent one Python class </a>
<div class="byline">
<span class="date">
Aug 4th 2026 10:02am, by </span>
<span class="author">
Meredith Shubel </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/spark-4-2-ai-workloads/" class="topics-nav-story">
Spark 4.2 has a feature that could retire your vector database </a>
<div class="byline">
<span class="date">
Jul 19th 2026 12:00pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/kotlin-notebook-jupyter-python-retreat/" class="topics-nav-story">
JetBrains kills Kotlin Notebook months after Microsoft's Polyglot exit. But Jupyter is doing just fine. </a>
<div class="byline">
<span class="date">
Jun 29th 2026 1:59pm, by </span>
<span class="author">
Paul Sawers </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-rust">
<div class="topics-latest-story">
<a href="/aws-lambda-ebpf-rust/" class="topics-nav-story">
How AWS Lambda logs every flow across thousands of microVMs per host with eBPF and Rust </a>
<div class="byline">
<span class="date">
Sep 11th 2026 8:00am, by </span>
<span class="author">
Prashant Kumar Singh, Kshitij Gupta and Shivendra Srivastava </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/canonical-c-rust-apparmor/" class="topics-nav-story">
AI-generated Rust compiles perfectly. That's the scary part. </a>
<div class="byline">
<span class="date">
Aug 19th 2026 3:30pm, by </span>
<span class="author">
Amanda Caswell </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/grok-opus-coding-tokens/" class="topics-nav-story">
Grok 4.5 vs. Claude Opus 4.8: Costs and what works, not the spec sheet </a>
<div class="byline">
<span class="date">
Jul 20th 2026 9:38am, by </span>
<span class="author">
Jessica Wachtel </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/rust-foundation-training-certification/" class="topics-nav-story">
Trust in Rust: Foundation debuts official training to tackle steep learning curve </a>
<div class="byline">
<span class="date">
Jun 25th 2026 12:30pm, by </span>
<span class="author">
Darryl K. Taft </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/python-rust-ai-sidecar/" class="topics-nav-story">
The Rust sidecar pattern that fixes Python AI's biggest weakness </a>
<div class="byline">
<span class="date">
May 14th 2026 9:00am, by </span>
<span class="author">
Boris Chabeda </span>
</div>
</div>
</div>
<div class="topic-latest-stories topic-latest-stories-typescript">
<div class="topics-latest-story">
<a href="/real-time-sync-engine/" class="topics-nav-story">
From clobbered drafts to real-time sync </a>
<div class="byline">
<span class="date">
Apr 14th 2026 10:00am, by </span>
<span class="author">
David Moore </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/typescript-6-0-rc-arrives-as-a-bridge-to-a-faster-future/" class="topics-nav-story">
TypeScript 6.0 RC arrives as a bridge to a faster future </a>
<div class="byline">
<span class="date">
Mar 14th 2026 9:00am, by </span>
<span class="author">
Darryl K. Taft </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/mastra-empowers-web-devs-to-build-ai-agents-in-typescript/" class="topics-nav-story">
Mastra empowers web devs to build AI agents in TypeScript </a>
<div class="byline">
<span class="date">
Jan 28th 2026 11:00am, by </span>
<span class="author">
Loraine Lawson </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/inferno-vet-creates-frontend-framework-built-with-ai-in-mind/" class="topics-nav-story">
Inferno Vet Creates Frontend Framework Built With AI in Mind </a>
<div class="byline">
<span class="date">
Dec 10th 2025 11:00am, by </span>
<span class="author">
Loraine Lawson </span>
</div>
</div>
<div class="topics-latest-story">
<a href="/javascript-utility-library-lodash-changing-governance-model/" class="topics-nav-story">
JavaScript Utility Library Lodash Changing Governance Model </a>
<div class="byline">
<span class="date">
Nov 1st 2025 7:00am, by </span>
<span class="author">
Loraine Lawson </span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function() {
window.tns.nav = window.tns.nav || {};
window.tns.nav.open_pending = false;
$('.topics-nav-block a').on('mouseenter', function() {
window.tns.nav.open_pending = true;
setTimeout(function() {
if (!window.tns.nav.open_pending) return;
window.tns.nav.open_pending = false;
$('.topics-nav-block a').removeClass('active');
$(this).addClass('active');
$('.nav-topics-dropdown').addClass('open');
$('.nav-topics-dropdown').transition({
height : 440,
duration : 180,
easeing : 'easeOutQuad'
});
}, 180);
});
$('.topics-nav-block a').on('mouseleave', function() {
window.tns.nav.open_pending = false;
});
$('.channels-nav').on('mouseenter', function() {
window.tns.nav.open_pending = false;
$('.topics-nav-block a').removeClass('active');
$('.nav-topics-dropdown').removeClass('open');
$('.nav-topics-dropdown').transition({
height : 0,
duration : 99,
easeing : 'easeOutQuad'
});
});
$('#tns-header').on('mouseleave', function() {
window.tns.nav.open_pending = false;
$('.topics-nav-block a').removeClass('active');
$('.nav-topics-dropdown').removeClass('open');
$('.nav-topics-dropdown').transition({
height : 0,
duration : 99,
easeing : 'easeOutQuad'
});
});
$('.col-topics a').on('mouseenter', function() {
window.tns.nav.open_pending = false;
$('.col-topics a').removeClass('active');
$(this).addClass('active');
var categorySlug = $(this).data('category-slug');
/// Handle change-up of the latest stories list
$('.topic-latest-stories').css({
display : 'none',
opacity : 0
});
$('.topic-latest-stories-' + categorySlug).stop().transition({
display : 'block',
opacity : 1,
duration : 121,
easing : 'snap'
})
});
$('.topics-nav-topic').on('click', function() {
window.tns.nav.open_pending = false;
var target = $(this).attr('href');
window.dataLayer.push({
'event' : 'nav_click',
'target' : target
});
});
$('.topics-nav-story').on('click', function() {
window.tns.nav.open_pending = false;
var target = $(this).attr('href');
window.dataLayer.push({
'event' : 'nav_click',
'target' : target
});
});
});
</script>
</div>
<div class="header-footprint"></div>
<div class="ad-container native-top" id="div-gpt-ad-native-top">
<script>
googletag.cmd.push(function() {
googletag.display("div-gpt-ad-native-top");
});
</script>
</div>
</div>
<script>
$(document).ready(function() {
var lastScrollTop = 0;
window.headerExpandOnScroll = true;
window.headerCollapse = function() {
$('.header-fixed').addClass('collapsed');
if ($('.nav-topics-dropdown').hasClass('open')) {
$('.topics-nav-block a').removeClass('active');
$('.nav-topics-dropdown').removeClass('open');
$('.nav-topics-dropdown').transition({
height : 0,
duration : 99,
easeing : 'easeOutQuad'
});
}
}
window.headerExpand = function() {
$('.header-fixed').removeClass('collapsed');
if ($('.nav-topics-dropdown').hasClass('open')) {
$('.topics-nav-block a').removeClass('active');
$('.nav-topics-dropdown').removeClass('open');
$('.nav-topics-dropdown').transition({
height : 0,
duration : 99,
easeing : 'easeOutQuad'
});
}
}
$(window).scroll(function(event) {
if (!window.headerExpandOnScroll) return;
var scrollTop = $(window).scrollTop();
if (scrollTop <= 50) return;
/// Down (collapse)
if (scrollTop > lastScrollTop) {
window.headerCollapse();
}
/// Up (expand)
if (scrollTop < lastScrollTop) {
window.headerExpand();
}
lastScrollTop = scrollTop;
});
$(window).on('resize', function() {
$('.topics-nav-block a').removeClass('active');
$('.nav-topics-dropdown').removeClass('open');
$('.nav-topics-dropdown').transition({
height : 0,
duration : 99,
easeing : 'easeOutQuad'
});
});
});
</script>
<div id="turnstile-container" data-refresh-expired="never" style="display: none;"></div>
<script>
$(document).ready(function() {
window.tns = window.tns || {}
window.tns.turnstile = {}
window.tns.turnstile.renderWidget = function(callback) {
var turnstileWidgetId = turnstile.render('#turnstile-container', {
sitekey : '0x4AAAAAAAVLuogHtE3mpzev',
callback: callback
});
window.tns.turnstile.widgetId = turnstileWidgetId;
}
window.tns.turnstile.resetWidget = async function(callback) {
await turnstile.reset(window.tns.turnstile.widgetId)
return callback
}
});
</script>
<!-- IMGJS Config -->
<script>
$(document).ready(function() {
window.imgjs = window.imgjs || {}
window.imgjs.subscribe = window.imgjs.subscribe || {}
window.imgjs.reactions = window.imgjs.reactions || {}
window.imgjs.subscribe.resetConfig = function() {
window.imgjs.subscribe.config = {
subscribe_url: 'https://img-api-v2.thenewstack.dev/api/accounts/subscribe',
login_url: 'https://img-api-v2.thenewstack.dev/api/accounts/login/verify-otc-login',
update_url: 'https://img-api-v2.thenewstack.dev/api/accounts',
read_url: 'https://img-api-v2.thenewstack.dev/api/accounts/me',
button_color: '#ff2b87',
copy: {
email_slide:{
heading: {
subscribe: `Sign up with The New Stack`,
login: `Login to The New Stack`
},
cta: {
subscribe: `Register for free to access this content and unlock our full vault of exclusive resources. By joining our community of software engineering leaders and aspiring developers, you’ll get all the most important news and analysis in the world of at-scale software development.`,
login: `Enter your email below to receive a login code.`
},
button_label: {
subscribe: `REGISTER`,
login: `LOGIN`
}
},
verify_slide: {
heading: {
subscribe: `Sign up with The New Stack`,
login: `Login to The New Stack`
},
prompt: {
subscribe: `Enter the verification code sent to your email.`,
login: `Enter the code sent to your email to login to your account.`
},
button_label: {
subscribe: `VERIFY`,
login: `LOGIN`
}
},
profile_slide: {
heading: {
subscribe: `Sign up with The New Stack`,
login: `Update Your Profile`
},
cta: {
subscribe: `Refine your profile to unlock insights and opportunities aligned with your skills and experience.`,
login: `Refine your profile to unlock insights and opportunities aligned with your skills and experience.`
},
button_label: {
subscribe: `UPDATE PROFILE`,
login: `UPDATE PROFILE`
}
},
newsletter_slide: {
heading: `Stay in the loop`,
cta: `Based on your interests, we think you'll also enjoy these newsletters from our network.`,
button_label_subscribe: `SUBSCRIBE AND CONTINUE`,
button_label_skip: `CONTINUE WITHOUT SUBSCRIBING`
},
confirm_slide: {
heading: {
subscribe: `Welcome!`,
login: `Welcome back!`
},
welcome: {
subscribe: `We're so glad you're here! As a member of The New Stack, you now have unlimited access to all our <a href="https://thenewstack.io" target="_blank">articles</a>, <a href="https://thenewstack.io/podcasts/" target="_blank">videos</a>, <a href="https://thenewstack.io/webinars/" target="_blank">webinars</a>, <a href="https://thenewstack.io/ebooks/" target="_blank">ebooks</a>, <a href="https://thenewstack.io/newsletter/" target="_blank">newsletters</a> and more. You can expect all the best TNS content to arrive Monday through Friday to keep you on top of the news and at the top of your game.`,
login: `You're now logged in to The New Stack.`
},
whats_next: {
subscribe: `Check your inbox for a confirmation email where you can adjust your preferences and even join additional groups.`,
login: `You can now access all our content and manage your preferences.`
},
follow: {
subscribe: `Follow TNS on your favorite social media networks.`,
login: `Follow TNS on your favorite social media networks.`
},
button_label: {
subscribe: `OK`,
login: `OK`
}
}
},
images: {
email_slide: {
key_image: 'https://cdn.insightmediagroup.io/imgjs/tns-subscribe-1.png'
}
},
form: {
job_role: {
options: [
{ title: 'AI Researcher / Research Scientist', value: 'ai-researcher' },
{ title: 'Architect', value: 'architect' },
{ title: 'Business Development/Marketing/Sales', value: 'business-development' },
{ title: 'Community Manager / Developer Advocate', value: 'community-manager-devrel' },
{ title: 'Data Analyst / Business Intelligence Analyst', value: 'data-analyst' },
{ title: 'Data Engineer', value: 'data-engineer' },
{ title: 'Data Scientist', value: 'data-scientist' },
{ title: 'Developer / Software Engineer', value: 'developer-engineer' },
{ title: 'DevOps Engineer', value: 'devops-engineer' },
{ title: 'Educator / Instructor', value: 'educator-instructor' },
{ title: 'Enthusiast/Hobbyist', value: 'enthusiast-hobbyist' },
{ title: 'Founder / Entrepreneur / Investor / VC', value: 'founder-investor-vc' },
{ title: 'IT management, including CIO/CISO/CTO/CDO', value: 'it-management-cio-ciso-cto' },
{ title: 'Machine Learning Engineer', value: 'machine-learning-engineer' },
{ title: 'MLOps Engineer / Infrastructure Engineer', value: 'ml-ops-engineer' },
{ title: 'Product Manager', value: 'product-manager' },
{ title: 'Security / Privacy Professional', value: 'security-professional' },
{ title: 'Statistician / Quantitative Analyst', value: 'statistician-quantitative-analyst' },
{ title: 'Student', value: 'student' },
{ title: 'SysAdmin/Operations/SRE', value: 'sysadmin-ops-sre' },
{ title: 'Technical Writer', value: 'technical-writer' },
{ title: 'UX / UI Designer / Data Visualization Specialist', value: 'ui-ux-vis-designer' }
]
}
},
social_links: {
mastodon: 'https://hachyderm.io/@TheNewStack',
bluesky: 'https://bsky.app/profile/thenewstack.io',
threads: 'https://www.threads.net/@thenewstack',
linkedin: 'https://www.linkedin.com/company/the-new-stack',
twitter: 'https://twitter.com/thenewstack',
facebook: 'https://www.facebook.com/thenewstack/',
spotify: 'https://open.spotify.com/show/2nj1mpDb9jxHxi9vjZvDdk',
youtube: 'https://www.youtube.com/c/thenewstack?sub_confirmation=1'
},
newsletters: [
{
id: 'roadmap-devops-weekly',
name: 'roadmap.sh DevOps Weekly',
label: 'Roadmap DevOps Weekly - the path to level up your skills & your stack',
logo: 'https://cdn.insightmediagroup.io/static/roadmap-logo.png'
},
{
id: 'tds-weekly',
name: 'Towards Data Science Weekly',
label: 'Insights from the brightest minds in data science',
logo: 'https://cdn.insightmediagroup.io/static/tds-logo.png'
},
{
id: 'cautious-optimism-weekly',
name: 'Cautious Optimism AI Weekly',
label: 'Cautious Optimism: modestly upbeat breakdown of tech, business & power',
logo: 'https://cdn.insightmediagroup.io/static/co-logo.png'
},
{
id: 'imgcn-6a67a28b92680c45182e25f0',
name: 'Hard Coded',
label: 'Hard Coded - unique takes & skeptical analysis of the tech industry',
logo: 'https://assets.insightmediagroup.io/media/1786372943360_chk3lv.png'
}
],
privacy_url: 'https://thenewstack.io/privacy-policy/',
terms_url: 'https://thenewstack.io/terms-of-use/'
}
/// Determine the IMGJS Subscribe URLs
var hostname = window.location.hostname
window.imgjs.subscribe.config.oauth = {
google_login_url: 'https://img-api-v2.insightmediagroup.io/api/accounts/login/google',
github_login_url: 'https://img-api-v2.insightmediagroup.io/api/accounts/login/github',
set_session_url: 'https://img-api-v2.thenewstack.dev/api/accounts/login/set-session'
}
if (hostname.includes('thenewstack.io')) {
window.imgjs.subscribe.config.subscribe_url = 'https://img-api-v2.thenewstack.io/api/accounts/subscribe'
window.imgjs.subscribe.config.login_url = 'https://img-api-v2.thenewstack.io/api/accounts/login/verify-otc-login'
window.imgjs.subscribe.config.update_url = 'https://img-api-v2.thenewstack.io/api/accounts'
window.imgjs.subscribe.config.read_url = 'https://img-api-v2.thenewstack.io/api/accounts/me'
window.imgjs.subscribe.config.oauth = {
google_login_url: 'https://img-api-v2.insightmediagroup.io/api/accounts/login/google',
github_login_url: 'https://img-api-v2.insightmediagroup.io/api/accounts/login/github',
set_session_url: 'https://img-api-v2.thenewstack.io/api/accounts/login/set-session'
}
}
}
window.imgjs.subscribe.resetConfig()
/// Initialize IMGJS Reactions Config
window.imgjs.reactions.resetConfig = function() {
window.imgjs.reactions.config = {
url: 'https://img-api-v2.thenewstack.dev/api/reactions'
}
var hostname = window.location.hostname
if (hostname.includes('thenewstack.io')) {
window.imgjs.reactions.config.url = 'https://img-api-v2.thenewstack.io/api/reactions'
}
}
window.imgjs.reactions.resetConfig()
window.imgjs.subscribe.isNewSubscription = function(createdAt) {
if (!createdAt) return false;
var d = createdAt instanceof Date ? createdAt : new Date(createdAt);
if (isNaN(d.getTime())) return false;
// Compare YYYY-MM-DD in UTC (GMT+0)
var toYMD = function (date) { return date.toISOString().slice(0, 10); };
return toYMD(d) === toYMD(new Date());
}
})
</script>
<div id="tns-post">
<!-- Hidden data storage elements -->
<div id="post-date" style="display: none;">
2023-08-28 08:36:55 </div>
<div id="post-title" style="display: none;">If P99 Latency Is BS, What's the Alternative?</div>
<div id="post-tags" style="display: none;">
sponsor-scylladb,sponsored-post-contributed, </div>
<!-- End hidden data storage elements -->
<div class="content-column content-column-post-body">
<div id="tns-post-headline">
<div id="tns-post-headline-breadcrumb">
<span class="breadcrumb">
<a href="/category/operations/">
Operations </a>
</span>
</div>
<div id="tns-post-headline-title">
<h1 class="title">
If P99 Latency Is BS, What&#8217;s the Alternative? </h1>
<div class="post-excerpt">
So what’s the problem with P99s? And if they truly are BS, what should we look at instead? </div>
</div>
<div id="tns-post-headline-byline">
<span class="date">
Aug 28th, 2023 8:36am by </span>
<span class="author">
<a href="https://thenewstack.io/author/cynthiadunlop/" title="Posts by Cynthia Dunlop" class="author url fn" rel="author">Cynthia Dunlop</a> </span>
</div>
</div>
<div id="tns-post-key-media">
<img
src="https://cdn.thenewstack.io/media/2023/08/86f461ae-data-center--1024x576.jpg"
alt="Featued image for: If P99 Latency Is BS, What&#8217;s the Alternative?"
width="1024"
height="576"
>
</div>
<div id="tns-post-body">
<div class="row">
<div class="copy-column">
<div id="tns-post-body-content">
<div class="sponsored-post-disclosure">
<div class="tns-sponsored-post-disclosure">
<div class="sponsor-disclosure">
<div>
<a
class="sponsor-disclosure-link ext-link"
href="https://www.scylladb.com/?utm_content=sponsor+disclosure"
target="_blank"
>ScyllaDB</a> sponsored this post. </div>
</div>
</div>
</div>
<p>Speakers calling BS on the very essence of a conference&rsquo;s name is typically not socially acceptable. But P99 CONF isn&rsquo;t your usual conference. The community &mdash; and the hosts &mdash; loved it when three daring speakers openly challenged the value of P99 latencies at P99 CONF 22.</p>
<p>The P99 shakedown started with Gil Tene, CTO at <a href="https://www.azul.com/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;">Azul</a> who&#8217;s known for his <a href="https://www.youtube.com/watch?v=lJ8ydIuPFeU" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;">&ldquo;oh sh*t&rdquo; talk</a> on how NOT to measure latency, kicking off the conference with his take on &ldquo;Misery Metrics &amp; Consequences.&rdquo; Alex Hidalgo, principal reliability advocate at <a href="https://www.nobl9.com/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;">Nobl9</a>, picked up the baton with &ldquo;Throw Away Your Nines.&rdquo; Then, Charity Majors, <a href="https://www.honeycomb.io/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;">Honeycomb</a>&#8216;s CTO, took it across the finish line with the conference&rsquo;s most colorful (literally and figuratively) expression of &ldquo;P99 is BS.&rdquo;</p>
<p>So what&rsquo;s the problem with P99s? And if they truly are BS, what should we look at instead?</p>
<p><em>P99 CONF 2023 is a </em><a href="https://www.p99conf.io/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;"><em>free virtual conference</em></a><em> on low-latency engineering strategies. Join the community in October for a no-holds-barred exploration of topics like Rust, observability, edge, performance tuning, AI/ML, Kubernetes, Linux kernel and more &mdash; with an all-star lineup of experts, including engineers from almost any impressive tech company you can imagine.&nbsp;</em></p>
<div
class="tns-sponsor-note "
>
<div class="sponsor-note-content-wrapper">
<div class="sponsor-note-profile" data-url="https://www.scylladb.com/?utm_content=sponsor+module" data-sponsor="scylladb">
<div class="row">
<div class="col col-40 sponsor-note-logo">
<a href="https://www.scylladb.com/?utm_content=sponsor+module" class="sponsor-note-logo-link" target="_blank">
<span><img loading="lazy" decoding="async" src="https://cdn.thenewstack.io/media/2022/01/3a77f524-scylladb_logo.svg" width="125" height="30" alt=""></span>
</a>
</div>
</div>
<div class="row">
<div class="col sponsor-note-content">
ScyllaDB is engineered to deliver predictable performance at scale. It&rsquo;s adopted by organizations that need ultra-low latency, even over millions of ops/sec &amp; PBs of data. Our unique architecture leverages the power of modern infrastructure &ndash; translating to fewer nodes, less admin &amp; lower costs.
</div>
</div>
<div class="row">
<div class="col sponsor-note-cta">
Learn More<svg xmlns="http://www.w3.org/2000/svg" width="23.012" height="17.268" viewBox="0 0 23.012 17.268">
<path id="Path_340" data-name="Path 340" d="M14.36,0,12.816,1.508l6.067,6.067H0V9.729H18.884l-6.031,6.032L14.4,17.268l8.616-8.616Z" transform="translate(0 0)"/>
</svg>
</div>
</div>
</div>
<div class="sponsor-note-rss" data-sponsor="scylladb">
<div class="sponsor-note-rss-heading">
The latest from ScyllaDB </div>
<div
class="sponsor-note-rss-items sponsor-note-rss-items-scylladb"
data-sponsor="scylladb"
></div>
<script>
$(document).ready(function() {
$.ajax({
method: 'POST',
url: '/no-cache/sponsors-rss-block/',
headers: {
'Cache-Control': 'no-cache, no-store, must-revalidate',
'Pragma': 'no-cache',
'Expires': '0'
},
data : {
sponsorSlug : 'scylladb',
numItems : 3
},
success : function(data) {
if (data == "") {
$('.sponsor-note-rss').hide();
return
}
if (data.startsWith('ERROR')) {
console.log(data)
$('.sponsor-note-rss').hide();
return
}
$('.sponsor-note-rss-items-scylladb').html(data);
}
});
});
</script>
</div>
</div>
<div class="sponsor-note-lead-form">
<div class="sponsor-note-lead-form-text">
Hear more from our sponsor
</div>
<div class="sponsor-note-lead-form-input-wrapper">
<input type="email" placeholder="Enter your email" class="sponsor-note-lead-form-input">
<button type="submit" class="sponsor-note-lead-form-submit">Submit</button>
</div>
<div class="sponsor-note-lead-form-status"></div>
</div>
<script>
$(document).ready(function () {
var publication = 'thenewstack'
// 1) Enter key on email input triggers submit click
$(document).on('keydown', '.tns-sponsor-note .sponsor-note-lead-form-input', function (event) {
if (event.key === 'Enter') {
event.preventDefault()
$(this).closest('.tns-sponsor-note').find('.sponsor-note-lead-form-submit').trigger('click')
}
})
// 2) If already logged-in, pre-populate the email field
var userCookieJSONPrefill = window.tns.getCookie('tns-user')
if (userCookieJSONPrefill) {
var currentUserPrefill = JSON.parse(userCookieJSONPrefill)
if (currentUserPrefill && currentUserPrefill.email) {
$('.tns-sponsor-note .sponsor-note-lead-form-input').val(currentUserPrefill.email)
}
}
function getStatusBox($root) {
return $root.find('.sponsor-note-lead-form-status')
}
function showSuccessMessage($root) {
var $wrapper = $root.find('.sponsor-note-lead-form-input-wrapper')
var $status = getStatusBox($root)
var wrapperHeight = $wrapper.outerHeight()
$status.css({ height: wrapperHeight + 'px' })
$wrapper.stop().transition({ duration: 250, opacity: 0 }, function () {
$wrapper.css({ display: 'none' })
$status.text("Thank you! We'll share your info with this sponsor.")
$status.css({ display: 'block', opacity: 0 })
$status.stop().transition({ delay: 50, duration: 250, opacity: 1 })
})
}
function showErrorMessageThenRestore($root) {
var $wrapper = $root.find('.sponsor-note-lead-form-input-wrapper')
var $status = getStatusBox($root)
var wrapperHeight = $wrapper.outerHeight()
$status.css({ height: wrapperHeight + 'px' })
$wrapper.stop().transition({ duration: 250, opacity: 0 }, function () {
$wrapper.css({ display: 'none' })
$status.text('Something went wrong on our end, please try again')
$status.css({ display: 'block', opacity: 0 })
$status.stop().transition({ delay: 50, duration: 250, opacity: 1 }, function () {
setTimeout(function () {
$status.stop().transition({ duration: 250, opacity: 0 }, function () {
$status.css({ display: 'none' })
$wrapper.css({ display: 'block', opacity: 0 })
$wrapper.stop().transition({ duration: 250, opacity: 1 })
})
}, 5000)
})
})
}
$(document).on('click', '.tns-sponsor-note .sponsor-note-lead-form-submit', function (event) {
event.preventDefault()
var $sponsorNoteRoot = $(this).closest('.tns-sponsor-note')
if (!$sponsorNoteRoot.length) console.log('[IMGJS] No Sponsor Note found')
var sponsorSlug = ($sponsorNoteRoot.find('.sponsor-note-profile').data('sponsor') || '').toString().trim()
var categories = $sponsorNoteRoot.data('categories')
if (!sponsorSlug || !publication) console.log('[IMGJS] Missing publication or sponsor')
var emailPrefillValue = $.trim($sponsorNoteRoot.find('.sponsor-note-lead-form-input').val() || '')
var userCookieJSON = window.tns.getCookie('tns-user')
var currentUser = userCookieJSON ? JSON.parse(userCookieJSON) : null
if (currentUser && currentUser.author_id && currentUser.email) {
var reactionPayload = {
author_id: currentUser.author_id,
email: currentUser.email,
reaction: 'sales-lead',
object_type: 'sponsor',
object_id: 'sponsor_' + sponsorSlug,
publication: publication
}
imgjs.reactions.postReaction(reactionPayload).then(function (response) {
if (response && response.ok && response.status !== 409) {
var reactionPayloadDl = {
event: 'reaction',
reaction: 'sales-lead',
object_type: 'sponsor',
object_id: 'sponsor_' + sponsorSlug
}
if (categories) {
reactionPayloadDl.categories = categories
}
window.dataLayer.push(reactionPayloadDl)
showSuccessMessage($sponsorNoteRoot)
} else if (response && response.status === 409) {
showSuccessMessage($sponsorNoteRoot)
} else {
showErrorMessageThenRestore($sponsorNoteRoot)
}
}).catch(function () {
showErrorMessageThenRestore($sponsorNoteRoot)
})
return
}
var previousOnCloseHandler = imgjs.subscribe.config.onClose
imgjs.subscribe.config.onClose = function (userFromPopover) {
imgjs.subscribe.config.onClose = previousOnCloseHandler
var finalUserObject = userFromPopover
if (!finalUserObject) {
var userAfterLoginJSON = window.tns.getCookie('tns-user')
finalUserObject = userAfterLoginJSON ? JSON.parse(userAfterLoginJSON) : null
}
if (finalUserObject && finalUserObject.author_id && finalUserObject.email) {
// Set auth cookies and update masthead login button (consistent with other onClose handlers)
window.tns.setCookie('tns-user-id', finalUserObject.author_id, 8400)
window.tns.setCookie('tns-user', JSON.stringify(finalUserObject), 8400)
$('.masthead-login-button').text('')
var reactionPayloadAfterLogin = {
author_id: finalUserObject.author_id,
email: finalUserObject.email,
reaction: 'sales-lead',
object_type: 'sponsor',
object_id: 'sponsor_' + sponsorSlug,
publication: publication
}
imgjs.reactions.postReaction(reactionPayloadAfterLogin).then(function (response) {
if (response && response.ok && response.status !== 409) {
var reactionPayloadAfterLoginDl = {
event: 'reaction',
reaction: 'sales-lead',
object_type: 'sponsor',
object_id: 'sponsor_' + sponsorSlug,
publication: publication
}
if (categories) {
reactionPayloadAfterLoginDl.categories = categories
}
window.dataLayer.push(reactionPayloadAfterLoginDl)
showSuccessMessage($sponsorNoteRoot)
} else if (response && response.status === 409) {
showSuccessMessage($sponsorNoteRoot)
} else {
showErrorMessageThenRestore($sponsorNoteRoot)
}
}).catch(function () {
showErrorMessageThenRestore($sponsorNoteRoot)
})
}
/// Set the channel data for the user_registration GA4 event
window.imgjs.subscribe.channel = 'reaction'
window.imgjs.subscribe.channel_id = 'leadgen'
/// Determine if it's a new subscription by testing
/// if the createdAt date is today's date
if (window.imgjs.subscribe.isNewSubscription(userFromPopover.createdAt)) {
var userRegistrationPayload = {
'event' : 'user_registration',
'url' : window.location.href,
'channel': window.imgjs.subscribe.channel,
'channel_id': window.imgjs.subscribe.channel_id
}
if (categories) {
userRegistrationPayload.categories = categories
}
window.dataLayer.push(userRegistrationPayload)
}
if ($.isFunction(previousOnCloseHandler)) previousOnCloseHandler(userFromPopover)
}
imgjs.subscribe.config.copy.email_slide.cta.login = 'Please login or create an account to continue ...'
imgjs.subscribe.config.images.email_slide.key_image = ''
imgjs.subscribe.config.copy.confirm_slide.whats_next.login = "Our sponsor will be in touch with more information."
var subscriptions = {
mc : [
'6166149401' /// TNS Daily
],
hs : []
}
const hostname = window.location.hostname
switch (true) {
case hostname.includes("thenewstack.io"):
subscriptions.hs.push("688810478") /// TNS Daily (PROD)
break
case hostname.includes("thenewstack.dev"):
subscriptions.hs.push("860037297") /// TNS Daily (SANDBOX)
break
}
// Ensure the popover pre-populates the email but does NOT auto-click for lead form
imgjs.subscribe.open(emailPrefillValue || null, subscriptions, 'login', null, true, false)
})
})
</script>
</div>
<h2>Gil Tene: How I Learned to Stop Worrying and Love Misery</h2>
<p>Tene launched his takedown of P99 &ldquo;percentlies&rdquo; (his spelling, not a typo) with a seemingly pretty chart &mdash; filled with pretty little lies:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-22716721 size-full" src="https://cdn.thenewstack.io/media/2023/08/1326245e-image4.jpg" alt="" width="1303" height="497" /></p>
<p>This dashboard shows 25th, 50th, 90th and 95th percentiles over a period of two hours, and it seems to give us a pretty good idea of what&rsquo;s going on. What stands out is the fact that the 95th percentile spikes up for some reason around 12:40, the 90th percentile spikes up a little bit under it and the other percentiles seem to stay the same. You might read this to mean that there are some outliers you might want to explore, but the rest seems generally OK.</p>
<p>But looking at this is a pure waste of time, according to Tene. &ldquo;What is not shown on this chart is the 5% of things that are worse than the 95th percentile. This chart shows the good stuff; it only shows happy results. For this chart to show even this spike, it has to be so bad that more than 5% of the things that we see have reached this level. This is the chart you show if you want to hide from reality or to hide reality from other people. It&#8217;s a great chart to show if you are not doing your job well, but you want your bonus anyway.&rdquo;</p>
<h3>From Bad to Worse</h3>
<p>So bring on the P99s and it&rsquo;s all better? Well, it does provide more insight into how bad it really is. With P99s, something like this:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-22716720 size-full" src="https://cdn.thenewstack.io/media/2023/08/02cb02c7-image3.jpg" alt="" width="963" height="461" /></p>
<p>Turns into this:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-22716719 size-full" src="https://cdn.thenewstack.io/media/2023/08/c773bba9-image2.jpg" alt="" width="957" height="459" /></p>
<p>But, as bad as it seems now, you&rsquo;re still overlooking the 1% of things that are worse than everything shown here. As Tene said, &ldquo;The act of showing percentiles &mdash; only to some depth, to a few numbers, usually nines &mdash; is the act of hiding from reality. &hellip; If you care about service levels, if you care about the behavior of your systems as seen by end users, by customers, by businesses &mdash; you need to look even deeper than that.&rdquo;</p>
<p>When you measure the P99, what are the chances that your end user (a person or a client) would experience something worse than the 99th percentile? Pretty good, actually. P99 does NOT mean that 99% of things will be better than that. Tene takes the example of a super simple user session that involves just five page loads averaging 40 resources per page. How many users will NOT experience something worse than the 99th percentile of HTTP requests? Only about 13%. In other words, 87% of your end users experience something <em>worse </em>than your P99.</p>
<h3>So. Many. Nines.</h3>
<p>So, do you obsess over even more nines? Well, that&rsquo;s problematic too: &ldquo;There&rsquo;s not enough data points in the period of time we&#8217;re measuring to classify them with enough nines. And we don&#8217;t tend to aggregate things across the data sets in order to actually extract a higher number of nines from larger data.&rdquo; Tene came up with an <a href="http://hdrhistogram.org/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;">HdrHistogram</a> to account for this, enabling people to record data and to accumulate intervals of data together to get an accurate number of nines. But he&rsquo;s given up on that tool achieving broad adoption (&ldquo;The chances of people actually using well-structured histograms for a larger number of nines is not very high&rdquo;).</p>
<p>And although it&rsquo;s hard to measure all these nines, it&rsquo;s even harder to do it well. That requires accounting for <a href="https://www.scylladb.com/2021/04/22/on-coordinated-omission/#:~:text=Coordinated%20omission%20is%20a%20term,way%20that%20avoids%20measuring%20outliers." class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;">coordinated omission</a>, a much larger topic than we can adequately cover here. Quick summary: A slow operation gets measured only once, and the ripple effect of all the other delays it causes don&rsquo;t get measured at all. This skews results immensely.</p>
<h3>Misery Loves &hellip; Better User Experiences?</h3>
<p>At this trough of despair, Tene pauses to reflect: &ldquo;So if things are so broken, and we just can&#8217;t seem to get anything right here, what do we do? Do we just give up?&rdquo; Fortunately, no. Some things people are doing actually do help us provide better experiences. Case in point: misery metrics.</p>
<p>Think about what failure looks like in your system and measure the corresponding &ldquo;misery metrics.&rdquo; You can reliably measure indicators like timeouts, retries, failed queries and even business-focused metrics like abandoned shopping carts. If those numbers are trending in a bad direction, who cares what your P99 is? There&rsquo;s clearly a problem &hellip; go diagnose and fix it!</p>
<p>Tene wraps up with his take on how to monitor these misery metrics. &ldquo;Plot the bad thing, watch it and see how it reacts to the world, see how it reacts to load. Your success rate is measured by the number of things that aren&rsquo;t broken. In general, you will know when things aren&rsquo;t good enough. If you don&#8217;t deliver a result within 50 milliseconds, users will move on. If you don&#8217;t let them check out of their shopping cart in 5 seconds, they&#8217;ll abandon. Usually, being better than needed is not a benefit. But being even a little bit worse than needed is enough to lose business.&rdquo;</p>
<p>This recap is really just scratching the surface. Here&rsquo;s the full video so you catch all the details, straight from the mouth of the &ldquo;how NOT to measure latency&rdquo; master himself:</p>
<p><div class="youtube-embed-wrapper"><iframe loading="lazy" title="Misery Metrics &amp; Consequences" width="500" height="281" src="https://www.youtube.com/embed/K1jasTyGLr8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div></p>
<h2>Throw Away Some Nines</h2>
<p>For even more critical perspectives on measuring P99s, take a look at <a href="https://www.p99conf.io/session/from-slo-to-goty/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;">Charity Majors&#8217;s spirited P99 CONF keynote</a> as well as <a href="https://www.p99conf.io/session/throw-away-your-nines/" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;">Alex Hidalgo&rsquo;s carefully crafted exploration</a> on all the nines. Also see this <a href="https://thenewstack.io/when-99-service-level-objectives-are-overrated-and-too-expensive/" class="local-link">great article by Jessica Wachtel</a>.</p>
<h3>Majors: You&rsquo;re Careering Down the Freeway Without Your Glasses On</h3>
<p>Early on, Charity Majors flat-out stated that P99 is BS because every user interaction counts. Even if you&rsquo;re hitting all your nines, &ldquo;there can still be a whole bunch of pathologies. Everybody who logged in today might have had their state saved on an unresponsive shard, payments might be failing &mdash; there&#8217;s an infinitely long, thin tail of things that almost never happen that someday will happen &mdash; and whenever they do, they will inevitably bite you.&rdquo;</p>
<p>Rather than obsess over nines, Majors wants us to look inward and focus on gaining better and faster visibility into what&rsquo;s really going on inside the system. &ldquo;Observability lets you inspect cause and effect at a very granular level. It connects effort to output, it connects cause to effect and helps you to iterate and improve on what works using a magnifying glass. Without observability, you are really driving blind, you&#8217;re careening down the freeway without your glasses on.&rdquo;</p>
<p>She continued, &ldquo;Only a very, very small fraction of system problems and bugs ever actually need to be closely understood. But that tiny percentage has an outsized effect on the success of your business and the happiness of your users. And the tricky part is that you can never predict in advance what they&#8217;re going to be.&rdquo;</p>
<p>Here&rsquo;s a summary of Majors&rsquo;s colorful solution:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-22716718 size-full" src="https://cdn.thenewstack.io/media/2023/08/ddd52e1f-image1.png" alt="" width="806" height="416" /></p>
<p>She said, &ldquo;Really, it&#8217;s about empowering software engineers to own their own code, and the way that you do this is by instrumenting it as you go. Never accept a pull request unless you can explain how you can tell if it breaks and what the instrumentation is&hellip; If you can do this, shipping software reliably with fast feedback loops, you can probably catch upwards of 80% of all problems before your users do.&rdquo;</p>
<p>Note that in many respects, Majors is actually quite aligned with Tene&rsquo;s emphasis on so-called misery metrics: &ldquo;Instead of alerting on hundreds or thousands of symptom-based monitoring checks, alert only on a few precious SLOs that directly reflect user pain.&rdquo;</p>
<h3>Hidalgo: Rethink Your Darlings</h3>
<p>Spoiler alert: Alex Hidalgo isn&rsquo;t a total nine hater. A key takeaway from his P99 CONF session was to look beyond the nines if you want to improve experiences for real-world users working with real-world applications run by teams with real-world budgets.</p>
<p>P99 latencies focus on standard long-tail distributions, but as Hidalgo has experienced, that&rsquo;s not always typical. As a former Google site reliability engineer, he&rsquo;s seen quite a variety of distributions: bimodal, left-skewed, multimodal, to name a few. If you just look at P99s because that&rsquo;s what you always do, then you could be missing a lot. &ldquo;Nines aren&rsquo;t terrible to use, but they&#8217;re not always the right choice,&rdquo; he explained. &ldquo;You need to be meaningful.&rdquo;</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-22716722 size-full" src="https://cdn.thenewstack.io/media/2023/08/74a4c373-image5.png" alt="" width="960" height="540" /></p>
<p>But what does it mean to be meaningful in this context? As Hidalgo said, &ldquo;Actually, using the number nine is just fine. There&#8217;s nothing wrong with aiming for 99.9% reliability. There&#8217;s absolutely nothing wrong with using the 99th percentile for your latency measurements, because part of being meaningful about your choices, and meaningful about your decisions, is that you should be looking to the past. You just don&#8217;t want to copy the past. Sometimes what was done before was actually a very good idea. There&#8217;s a reason why some of these things are so common &mdash; because very often they are the right choices. You just need to make sure that they&#8217;re the right choices for you.&rdquo;</p>
<h2>Continue the Latency Conversation at P99 CONF 23</h2>
<p>So maybe we don&rsquo;t need to throw away all of our nines &mdash; and we&rsquo;re keeping the conference name as is, despite the snarky banter in the chat. ;-)</p>
<p>If you want to continue the conversation on measuring and optimizing latency, <a href="https://www.p99conf.io/?latest_sfdc_campaign=7016O000000rial&amp;campaign_status&amp;utm_campaign=mp%20newstack%202023-10-18%20p99%20conf&amp;utm_medium=marketing%20partner&amp;utm_source=marketing%20partner&amp;lead_source_type=the%20new%20stack" class="ext-link" rel="external " onclick="this.target=&#039;_blank&#039;;">join your peers at P99CONF</a>, where friendly debate is not only welcomed but encouraged. Topics up for discussion this year span across domains like:</p>
<ul>
<li aria-level="1"><strong>Rust </strong>&mdash; Optimizations, case studies, future use cases, Rust vs C++, Zig, Go</li>
<li aria-level="1"><strong>Kubernetes</strong> &mdash; Database scaling, application optimization, edge, benchmarking</li>
<li aria-level="1"><strong>Databases and event streaming</strong> &mdash; SQL, NoSQL, caching, data streaming</li>
<li aria-level="1"><strong>AI/M</strong>L &mdash; feature stores, real-time model predictions</li>
<li aria-level="1"><strong>Edge </strong>&mdash; Databases, unikernels, API gateways</li>
<li aria-level="1"><strong>Observability </strong>&mdash; eBPF, tracing, OpenTelemetry</li>
</ul>
<div
class="tns-sponsor-note injected"
>
<div class="sponsor-note-content-wrapper">
<div class="sponsor-note-profile" data-url="https://www.scylladb.com/?utm_content=sponsor+module" data-sponsor="scylladb">
<div class="row">
<div class="col col-40 sponsor-note-logo">
<a href="https://www.scylladb.com/?utm_content=sponsor+module" class="sponsor-note-logo-link" target="_blank">
<span><img src="https://cdn.thenewstack.io/media/2022/01/3a77f524-scylladb_logo.svg" width="125" height="30" alt=""></span>
</a>
</div>
</div>
<div class="row">
<div class="col sponsor-note-content">
ScyllaDB is engineered to deliver predictable performance at scale. It&rsquo;s adopted by organizations that need ultra-low latency, even over millions of ops/sec &amp; PBs of data. Our unique architecture leverages the power of modern infrastructure &ndash; translating to fewer nodes, less admin &amp; lower costs.
</div>
</div>
<div class="row">
<div class="col sponsor-note-cta">
Learn More<svg xmlns="http://www.w3.org/2000/svg" width="23.012" height="17.268" viewBox="0 0 23.012 17.268">
<path id="Path_340" data-name="Path 340" d="M14.36,0,12.816,1.508l6.067,6.067H0V9.729H18.884l-6.031,6.032L14.4,17.268l8.616-8.616Z" transform="translate(0 0)"/>
</svg>
</div>
</div>
</div>
<div class="sponsor-note-rss" data-sponsor="scylladb">
<div class="sponsor-note-rss-heading">
The latest from ScyllaDB </div>
<div
class="sponsor-note-rss-items sponsor-note-rss-items-scylladb"
data-sponsor="scylladb"
></div>
<script>
$(document).ready(function() {
$.ajax({
method: 'POST',
url: '/no-cache/sponsors-rss-block/',
headers: {
'Cache-Control': 'no-cache, no-store, must-revalidate',
'Pragma': 'no-cache',
'Expires': '0'
},
data : {
sponsorSlug : 'scylladb',
numItems : 3
},
success : function(data) {
if (data == "") {
$('.sponsor-note-rss').hide();
return
}
if (data.startsWith('ERROR')) {
console.log(data)
$('.sponsor-note-rss').hide();
return
}
$('.sponsor-note-rss-items-scylladb').html(data);
}
});
});
</script>
</div>
</div>
<div class="sponsor-note-lead-form">
<div class="sponsor-note-lead-form-text">
Hear more from our sponsor
</div>
<div class="sponsor-note-lead-form-input-wrapper">
<input type="email" placeholder="Enter your email" class="sponsor-note-lead-form-input">
<button type="submit" class="sponsor-note-lead-form-submit">Submit</button>
</div>
<div class="sponsor-note-lead-form-status"></div>
</div>
<script>
$(document).ready(function () {
var publication = 'thenewstack'
// 1) Enter key on email input triggers submit click
$(document).on('keydown', '.tns-sponsor-note .sponsor-note-lead-form-input', function (event) {
if (event.key === 'Enter') {
event.preventDefault()
$(this).closest('.tns-sponsor-note').find('.sponsor-note-lead-form-submit').trigger('click')
}
})
// 2) If already logged-in, pre-populate the email field
var userCookieJSONPrefill = window.tns.getCookie('tns-user')
if (userCookieJSONPrefill) {
var currentUserPrefill = JSON.parse(userCookieJSONPrefill)
if (currentUserPrefill && currentUserPrefill.email) {
$('.tns-sponsor-note .sponsor-note-lead-form-input').val(currentUserPrefill.email)
}
}
function getStatusBox($root) {
return $root.find('.sponsor-note-lead-form-status')
}
function showSuccessMessage($root) {
var $wrapper = $root.find('.sponsor-note-lead-form-input-wrapper')
var $status = getStatusBox($root)
var wrapperHeight = $wrapper.outerHeight()
$status.css({ height: wrapperHeight + 'px' })
$wrapper.stop().transition({ duration: 250, opacity: 0 }, function () {
$wrapper.css({ display: 'none' })
$status.text("Thank you! We'll share your info with this sponsor.")
$status.css({ display: 'block', opacity: 0 })
$status.stop().transition({ delay: 50, duration: 250, opacity: 1 })
})
}
function showErrorMessageThenRestore($root) {
var $wrapper = $root.find('.sponsor-note-lead-form-input-wrapper')
var $status = getStatusBox($root)
var wrapperHeight = $wrapper.outerHeight()
$status.css({ height: wrapperHeight + 'px' })
$wrapper.stop().transition({ duration: 250, opacity: 0 }, function () {
$wrapper.css({ display: 'none' })
$status.text('Something went wrong on our end, please try again')
$status.css({ display: 'block', opacity: 0 })
$status.stop().transition({ delay: 50, duration: 250, opacity: 1 }, function () {
setTimeout(function () {
$status.stop().transition({ duration: 250, opacity: 0 }, function () {
$status.css({ display: 'none' })
$wrapper.css({ display: 'block', opacity: 0 })
$wrapper.stop().transition({ duration: 250, opacity: 1 })
})
}, 5000)
})
})
}
$(document).on('click', '.tns-sponsor-note .sponsor-note-lead-form-submit', function (event) {
event.preventDefault()
var $sponsorNoteRoot = $(this).closest('.tns-sponsor-note')
if (!$sponsorNoteRoot.length) console.log('[IMGJS] No Sponsor Note found')
var sponsorSlug = ($sponsorNoteRoot.find('.sponsor-note-profile').data('sponsor') || '').toString().trim()
var categories = $sponsorNoteRoot.data('categories')
if (!sponsorSlug || !publication) console.log('[IMGJS] Missing publication or sponsor')
var emailPrefillValue = $.trim($sponsorNoteRoot.find('.sponsor-note-lead-form-input').val() || '')
var userCookieJSON = window.tns.getCookie('tns-user')
var currentUser = userCookieJSON ? JSON.parse(userCookieJSON) : null
if (currentUser && currentUser.author_id && currentUser.email) {
var reactionPayload = {
author_id: currentUser.author_id,
email: currentUser.email,
reaction: 'sales-lead',
object_type: 'sponsor',
object_id: 'sponsor_' + sponsorSlug,
publication: publication
}
imgjs.reactions.postReaction(reactionPayload).then(function (response) {
if (response && response.ok && response.status !== 409) {
var reactionPayloadDl = {
event: 'reaction',
reaction: 'sales-lead',
object_type: 'sponsor',
object_id: 'sponsor_' + sponsorSlug
}
if (categories) {
reactionPayloadDl.categories = categories
}
window.dataLayer.push(reactionPayloadDl)
showSuccessMessage($sponsorNoteRoot)
} else if (response && response.status === 409) {
showSuccessMessage($sponsorNoteRoot)
} else {
showErrorMessageThenRestore($sponsorNoteRoot)
}
}).catch(function () {
showErrorMessageThenRestore($sponsorNoteRoot)
})
return
}
var previousOnCloseHandler = imgjs.subscribe.config.onClose
imgjs.subscribe.config.onClose = function (userFromPopover) {
imgjs.subscribe.config.onClose = previousOnCloseHandler
var finalUserObject = userFromPopover
if (!finalUserObject) {
var userAfterLoginJSON = window.tns.getCookie('tns-user')
finalUserObject = userAfterLoginJSON ? JSON.parse(userAfterLoginJSON) : null
}
if (finalUserObject && finalUserObject.author_id && finalUserObject.email) {
// Set auth cookies and update masthead login button (consistent with other onClose handlers)
window.tns.setCookie('tns-user-id', finalUserObject.author_id, 8400)
window.tns.setCookie('tns-user', JSON.stringify(finalUserObject), 8400)
$('.masthead-login-button').text('')
var reactionPayloadAfterLogin = {
author_id: finalUserObject.author_id,
email: finalUserObject.email,
reaction: 'sales-lead',
object_type: 'sponsor',
object_id: 'sponsor_' + sponsorSlug,
publication: publication
}
imgjs.reactions.postReaction(reactionPayloadAfterLogin).then(function (response) {
if (response && response.ok && response.status !== 409) {
var reactionPayloadAfterLoginDl = {
event: 'reaction',
reaction: 'sales-lead',
object_type: 'sponsor',
object_id: 'sponsor_' + sponsorSlug,
publication: publication
}
if (categories) {
reactionPayloadAfterLoginDl.categories = categories
}
window.dataLayer.push(reactionPayloadAfterLoginDl)
showSuccessMessage($sponsorNoteRoot)
} else if (response && response.status === 409) {
showSuccessMessage($sponsorNoteRoot)
} else {
showErrorMessageThenRestore($sponsorNoteRoot)
}
}).catch(function () {
showErrorMessageThenRestore($sponsorNoteRoot)
})
}
/// Set the channel data for the user_registration GA4 event
window.imgjs.subscribe.channel = 'reaction'
window.imgjs.subscribe.channel_id = 'leadgen'
/// Determine if it's a new subscription by testing
/// if the createdAt date is today's date
if (window.imgjs.subscribe.isNewSubscription(userFromPopover.createdAt)) {
var userRegistrationPayload = {
'event' : 'user_registration',
'url' : window.location.href,
'channel': window.imgjs.subscribe.channel,
'channel_id': window.imgjs.subscribe.channel_id
}
if (categories) {
userRegistrationPayload.categories = categories
}
window.dataLayer.push(userRegistrationPayload)
}
if ($.isFunction(previousOnCloseHandler)) previousOnCloseHandler(userFromPopover)
}
imgjs.subscribe.config.copy.email_slide.cta.login = 'Please login or create an account to continue ...'
imgjs.subscribe.config.images.email_slide.key_image = ''
imgjs.subscribe.config.copy.confirm_slide.whats_next.login = "Our sponsor will be in touch with more information."
var subscriptions = {
mc : [
'6166149401' /// TNS Daily
],
hs : []
}
const hostname = window.location.hostname
switch (true) {
case hostname.includes("thenewstack.io"):
subscriptions.hs.push("688810478") /// TNS Daily (PROD)
break
case hostname.includes("thenewstack.dev"):
subscriptions.hs.push("860037297") /// TNS Daily (SANDBOX)
break
}
// Ensure the popover pre-populates the email but does NOT auto-click for lead form
imgjs.subscribe.open(emailPrefillValue || null, subscriptions, 'login', null, true, false)
})
})
</script>
</div>
<script>
$(document).ready(function() {
var target_p = parseInt('5');
var sponsor_note = $('.tns-sponsor-note.injected');
$('#tns-post-body-content > p:eq(' + (target_p - 1) + ')').after(sponsor_note);
});
</script>
<div
class="tns-trending-stories-block inline"
data-context="inline"
>
<div class="section-heading">
TRENDING STORIES </div>
<div
class="tns-trending-stories-list tns-trending-stories-list-inline tns-trending-stories-list-6aa40a3518dce"
data-uuid="6aa40a3518dce"
data-context="inline"
></div>
</div>
<script>
$(document).ready(function() {
var $container = $('.tns-trending-stories-list-6aa40a3518dce');
var context = $container.data('context');
$container.load('/no-cache/trending-stories/', {
limit : '5',
category_slug : '',
postID : '22716714',
context : 'inline'
}, function(result) {
if (context === 'frontpage') {
$container.find('.trending-story-link').addClass('frontpage-link');
}
$('body').off('click.trending_story');
$('body').on('click.trending_story', '.trending-story-link', function($event) {
var title = $(this).attr('aria-label');
var url = $(this).attr('href');
url = url.replace('https://thenewstack.io', '');
var context = $(this).data('context');
var categories = $(this).data('categories');
var payload = {
'event' : 'trending_story_click',
'post_title' : title,
'url' : url,
'context' : context
};
if (categories) {
payload.categories = categories;
}
window.dataLayer.push(payload);
});
});
});
</script>
<script>
$(document).ready(function() {
var target_p = parseInt('7');
var trending_stories_block = $('.tns-trending-stories-block.inline');
$('#tns-post-body-content > p:eq(' + (target_p - 1) + ')').after(trending_stories_block);
});
</script>
<!-- Inject YouTube Subscribe Block -->
<template class="youtube-subscribe-block-template">
<a
class="row youtube-subscribe-block"
href="https://youtube.com/thenewstack?sub_confirmation=1"
target="_blank"
>
<div class="col col-80 copy">
<div class="heading">
YOUTUBE.COM/THENEWSTACK
</div>
<div class="cta">
Tech moves fast, don't miss an episode. Subscribe to our YouTube
channel to stream all our podcasts, interviews, demos, and more.
</div>
</div>
<div class="col col-20 button">
<button class="youtube-subscribe-button">
SUBSCRIBE
</button>
</div>
</a>
</template>
<script>
$(document).ready(function() {
var youtube_subscribe_template = $('.youtube-subscribe-block-template').html();
$(youtube_subscribe_template).insertAfter('.youtube-embed-wrapper');
});
</script>
<div class="tns-logo-slug">
<svg width="68px" height="31px" viewBox="0 0 68 31" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Group</title>
<desc>Created with Sketch.</desc>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Group">
<path d="M24.002,29.619 L29.77,29.619 L29.77,15.808 C29.77,15.038 29.622,11.265 29.59,10.414 L29.77,10.414 C31.424,14.019 31.473,14.147 32.168,15.322 L39.65,29.618 L44.845,29.618 L44.845,0 L39.075,0 L39.075,11.064 C39.075,12.197 39.075,12.44 39.182,14.472 L39.325,17.468 L39.151,17.468 C39.034,17.267 38.596,16.173 38.467,15.929 C38.164,15.323 37.725,14.512 37.373,13.905 L30.031,0 L24,0 L24,29.619 L24.002,29.619 Z" id="Path-Copy" fill="#FF3287"></path>
<path d="M56.948,0 C50.745,0 47.606,3.43 47.606,8.296 C47.606,14.114 51.036,15.404 55.518,17.132 C60.438,18.853 61.782,19.332 61.782,21.539 C61.782,24.225 58.969,24.867 57.401,24.867 C54.579,24.867 52.493,23.342 51.536,20.858 L47,24.185 C49.43,28.937 52.145,30.185 57.713,30.185 C59.364,30.185 62.059,29.74 63.727,28.694 C67.779,26.156 67.779,22.22 67.779,20.898 C67.779,18.129 66.531,16.207 66.178,15.726 C65.049,14.121 63.032,12.918 61.25,12.278 L57.084,10.914 C55.073,10.267 52.928,10.105 52.928,8.019 C52.928,7.707 53.008,5.528 56.288,5.319 L61.465,5.319 L61.465,0 C61.465,0 57.342,0 56.948,0 Z" id="Path-Copy-2" fill="#00AFF4"></path>
<polygon id="Path" fill="#00AFF4" points="5.32907052e-15 1.77635684e-15 5.32907052e-15 5.319 7.572 5.319 7.572 29.564 14.132 29.564 14.132 5.319 21.544 5.319 21.544 1.77635684e-15"></polygon>
</g>
</g>
</svg> </div>
<div class="tns-post-body-content-author">
<a href="https://thenewstack.io/author/cynthiadunlop/" class="author-more-link">
<div class="row">
<div class="author-profile-photo-column">
<img
class="post-author-avatar"
src="https://cdn.thenewstack.io/media/2020/01/14adf317-cynthiadunlop.jpeg"
>
</div>
<div class="post-author-bio-column">
<div class="post-author-bio-wrap">
<div class="post-author-bio">
Cynthia Dunlop has been writing about software development and testing for much longer than she cares to admit. She's currently senior director of content strategy at ScyllaDB. </div>
</div>
<div class="author-more-cta">
Read more from Cynthia Dunlop <svg xmlns="http://www.w3.org/2000/svg" width="23.012" height="17.268" viewBox="0 0 23.012 17.268">
<path id="Path_340" data-name="Path 340" d="M14.36,0,12.816,1.508l6.067,6.067H0V9.729H18.884l-6.031,6.032L14.4,17.268l8.616-8.616Z" transform="translate(0 0)"/>
</svg>
</div>
</div>
</div>
</a>
</div>
</div>
</div>
<div class="sidebar-column">
<div id="tns-post-body-sidebar">
<div class="native-sidebar-ad-unit-container">
<div class="ad-container native-sidebar" id="div-gpt-ad-native-sidebar-1">
<script>
googletag.cmd.push(function() {
googletag.display("div-gpt-ad-native-sidebar-1");
});
</script>
</div>
</div>
<div class="tns-sponsored-post-disclosure">
<div class="sponsor-disclosure">
<div>
<a
class="sponsor-disclosure-link ext-link"
href="https://www.scylladb.com/?utm_content=sponsor+disclosure"
target="_blank"
>ScyllaDB</a> sponsored this post. </div>
</div>
</div>
<div id="tns-post-body-sidebar-share">
<div class="tns-share">
<div class="section-heading">
SHARE THIS STORY </div>
<div class="share-media">
<a
href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fthenewstack.io%2Fif-p99-latency-is-bs-whats-the-alternative%2F&text=If+P99+Latency+Is+BS%2C+What%27s+the+Alternative%3F: &via=thenewstack&related=thenewstack"
class="share-media-icon share-media-icon-twitter"
data-platform="twitter"
target="_blank"
>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" width="24px" height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve" class="fill">
<path d="M14.095479,10.316482L22.286354,1h-1.940718l-7.115352,8.087682L7.551414,1H1l8.589488,12.231093L1,23h1.940717 l7.509372-8.542861L16.448587,23H23L14.095479,10.316482z M11.436522,13.338465l-0.871624-1.218704l-6.924311-9.68815h2.981339 l5.58978,7.82155l0.867949,1.218704l7.26506,10.166271h-2.981339L11.436522,13.338465z"/>
</svg>
</a>
<a href="https://news.ycombinator.com/submitlink?t=If P99 Latency Is BS, What's the Alternative?&u=https%3A%2F%2Fthenewstack.io%2Fif-p99-latency-is-bs-whats-the-alternative%2F" class="share-media-icon share-media-icon-hackernews" data-platform="hackernews" target="_blank">
<svg viewBox="0 0 42 42" class="fill">
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="hackernews" transform="translate(-3.000000, -3.000000)">
<polygon id="Path" points="0 48 0 0 48 0 48 48"></polygon>
<path d="M3.84009302,3.84009302 L3.84009302,44.160093 L44.160093,44.160093 L44.160093,3.84009302 L3.84009302,3.84009302 Z M42.240093,42.240093 L5.76009302,42.240093 L5.76009302,5.76009302 L42.240093,5.76009302 L42.240093,42.240093 Z M40.320093,7.68009302 L7.68009302,7.68009302 L7.68009302,40.320093 L40.320093,40.320093 L40.320093,7.68009302 Z M25.920093,26.880093 L25.920093,34.560093 L22.080093,34.560093 L22.080093,26.880093 L15.360093,14.400093 L18.412893,14.400093 L24.000093,24.182493 L29.587293,14.400093 L32.640093,14.400093 L25.920093,26.880093 Z" id="Shape" fill="#000000" fill-rule="nonzero"></path>
</g>
</g>
</svg>
</a>
<a href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fthenewstack.io%2Fif-p99-latency-is-bs-whats-the-alternative%2F" class="share-media-icon share-media-icon-linkedin" data-platform="linkedin" target="_blank">
<svg viewBox="0 0 16.927 16.689" class="fill">
<path d="M3.833,1.809A1.8,1.8,0,0,1,1.88,3.619,1.783,1.783,0,0,1,0,1.809,1.8,1.8,0,0,1,1.928,0a1.789,1.789,0,0,1,1.9,1.809M.1,5.047H3.714V16.689H.1Z" transform="translate(0 0)"/>
<path d="M28.535,27.5c0-1.452-.047-2.666-.095-3.714h3.142l.167,1.619h.071a4.18,4.18,0,0,1,3.6-1.881c2.381,0,4.166,1.6,4.166,5.024V35.43H35.963V28.978c0-1.5-.524-2.523-1.833-2.523a1.987,1.987,0,0,0-1.857,1.357,2.6,2.6,0,0,0-.119.9V35.43H28.535Z" transform="translate(-22.655 -18.741)"/>
<svg>
</a>
<a href="https://reddit.com/submit?url=https%3A%2F%2Fthenewstack.io%2Fif-p99-latency-is-bs-whats-the-alternative%2F&title=If+P99+Latency+Is+BS%2C+What%27s+the+Alternative%3F" class="share-media-icon share-media-icon-reddit" data-platform="reddit" target="_blank">
<svg viewBox="0 0 24 24" class="fill">
<path d="M14.238 15.348c.085.084.085.221 0 .306-.465.462-1.194.687-2.231.687l-.008-.002-.008.002c-1.036 0-1.766-.225-2.231-.688-.085-.084-.085-.221 0-.305.084-.084.222-.084.307 0 .379.377 1.008.561 1.924.561l.008.002.008-.002c.915 0 1.544-.184 1.924-.561.085-.084.223-.084.307 0zm-3.44-2.418c0-.507-.414-.919-.922-.919-.509 0-.923.412-.923.919 0 .506.414.918.923.918.508.001.922-.411.922-.918zm13.202-.93c0 6.627-5.373 12-12 12s-12-5.373-12-12 5.373-12 12-12 12 5.373 12 12zm-5-.129c0-.851-.695-1.543-1.55-1.543-.417 0-.795.167-1.074.435-1.056-.695-2.485-1.137-4.066-1.194l.865-2.724 2.343.549-.003.034c0 .696.569 1.262 1.268 1.262.699 0 1.267-.566 1.267-1.262s-.568-1.262-1.267-1.262c-.537 0-.994.335-1.179.804l-2.525-.592c-.11-.027-.223.037-.257.145l-.965 3.038c-1.656.02-3.155.466-4.258 1.181-.277-.255-.644-.415-1.05-.415-.854.001-1.549.693-1.549 1.544 0 .566.311 1.056.768 1.325-.03.164-.05.331-.05.5 0 2.281 2.805 4.137 6.253 4.137s6.253-1.856 6.253-4.137c0-.16-.017-.317-.044-.472.486-.261.82-.766.82-1.353zm-4.872.141c-.509 0-.922.412-.922.919 0 .506.414.918.922.918s.922-.412.922-.918c0-.507-.413-.919-.922-.919z"/>
</svg>
</a>
<a href="https://www.facebook.com/sharer/sharer.php?u=https://thenewstack.io/if-p99-latency-is-bs-whats-the-alternative/" class="share-media-icon share-media-icon-facebook" data-platform="facebook" target="_blank">
<svg viewBox="0 0 17.492 17.492" class="fill">
<path d="M15.306,0H2.187A2.193,2.193,0,0,0,0,2.187V15.306a2.193,2.193,0,0,0,2.187,2.187H8.822V11.22H6.727V8.488H8.822V7.119a3.621,3.621,0,0,1,3.547-3.763H14.3V6.441H12.572c-.452,0-.585.26-.585.618V8.488H14.3V11.22H11.987v6.272h3.318a2.193,2.193,0,0,0,2.187-2.187V2.187A2.193,2.193,0,0,0,15.306,0"/>
</svg>
</a>
<!--
<a href="https://www.facebook.com/sharer/sharer.php?u=https://thenewstack.io/if-p99-latency-is-bs-whats-the-alternative/" class="share-media-icon share-media-icon-instagram" data-platform="instagram" target="_blank">
<svg viewBox="0 0 17.839 17.84" class="fill">
<path d="M8.92,1.607c2.382,0,2.664.009,3.6.052a4.937,4.937,0,0,1,1.656.307,2.763,2.763,0,0,1,1.026.667,2.763,2.763,0,0,1,.667,1.026,4.938,4.938,0,0,1,.307,1.656c.043.941.052,1.223.052,3.6s-.009,2.664-.052,3.6a4.937,4.937,0,0,1-.307,1.656,2.955,2.955,0,0,1-1.693,1.693,4.937,4.937,0,0,1-1.656.307c-.941.043-1.223.052-3.6.052s-2.664-.009-3.6-.052a4.937,4.937,0,0,1-1.656-.307,2.763,2.763,0,0,1-1.026-.667,2.763,2.763,0,0,1-.667-1.026,4.937,4.937,0,0,1-.307-1.656c-.043-.941-.052-1.223-.052-3.6s.009-2.664.052-3.6a4.938,4.938,0,0,1,.307-1.656,2.763,2.763,0,0,1,.667-1.026,2.763,2.763,0,0,1,1.026-.667,4.937,4.937,0,0,1,1.656-.307c.941-.043,1.223-.052,3.6-.052M8.92,0C6.5,0,6.193.01,5.242.054A6.547,6.547,0,0,0,3.077.468,4.376,4.376,0,0,0,1.5,1.5,4.373,4.373,0,0,0,.468,3.077,6.547,6.547,0,0,0,.054,5.242C.01,6.194,0,6.5,0,8.92S.01,11.646.054,12.6a6.547,6.547,0,0,0,.415,2.165A4.373,4.373,0,0,0,1.5,16.343a4.373,4.373,0,0,0,1.58,1.029,6.547,6.547,0,0,0,2.165.415c.951.044,1.255.054,3.678.054s2.726-.01,3.678-.054a6.547,6.547,0,0,0,2.165-.415,4.56,4.56,0,0,0,2.609-2.609,6.547,6.547,0,0,0,.415-2.165c.044-.951.054-1.255.054-3.678s-.01-2.726-.054-3.678a6.547,6.547,0,0,0-.415-2.165A4.373,4.373,0,0,0,16.343,1.5,4.376,4.376,0,0,0,14.763.468,6.547,6.547,0,0,0,12.6.054C11.646.01,11.342,0,8.92,0" transform="translate(0 0)"/>
<path d="M25.914,21.334a4.581,4.581,0,1,0,4.58,4.581,4.581,4.581,0,0,0-4.58-4.581m0,7.554a2.973,2.973,0,1,1,2.973-2.973,2.973,2.973,0,0,1-2.973,2.973" transform="translate(-16.995 -16.995)"/>
<path d="M64.142,16.253a1.07,1.07,0,1,1-1.07-1.07,1.071,1.071,0,0,1,1.07,1.07" transform="translate(-49.39 -12.095)"/>
</svg>
</a>
<a href="#" class="share-media-icon share-post-copy" data-platform="copy-url">
<svg viewBox="0 0 18.528 18.528" class="stroke">
<path d="M4.517,4.517V.75H17.778V14.011H14.011" stroke-miterlimit="10" stroke-width="1.5"/>
<path d="M4.517,4.517h9.494v9.494" stroke-miterlimit="10" stroke-width="1.5"/>
<path d="M4.517,4.517H.75V17.778H14.011V14.011" stroke-miterlimit="10" stroke-width="1.5"/>
</svg>
</a>
-->
</div>
</div>
<script>
$(document).ready(function() {
$('body').off('click.share');
$('body').on('click.share', '.share-media-icon', function() {
var platform = $(this).data('platform');
var url = $(this).attr('href');
var sponsor = 'sponsor-scylladb';
var categories = 'operations';
var payload = {
'event' : 'share',
'platform' : platform,
'url' : url,
'sponsor' : sponsor
};
if (categories) {
payload.categories = categories;
}
window.dataLayer.push(payload);
});
});
</script>
</div>
<div class="tns-post-body-sidebar-trending-stories">
<div
class="tns-trending-stories-block sidebar"
data-context="sidebar"
>
<div class="section-heading">
TRENDING STORIES </div>
<div
class="tns-trending-stories-list tns-trending-stories-list-sidebar tns-trending-stories-list-6aa40a3519be8"
data-uuid="6aa40a3519be8"
data-context="sidebar"
></div>
</div>
<script>
$(document).ready(function() {
var $container = $('.tns-trending-stories-list-6aa40a3519be8');
var context = $container.data('context');
$container.load('/no-cache/trending-stories/', {
limit : '5',
category_slug : '',
postID : '22716714',
context : 'sidebar'
}, function(result) {
if (context === 'frontpage') {
$container.find('.trending-story-link').addClass('frontpage-link');
}
$('body').off('click.trending_story');
$('body').on('click.trending_story', '.trending-story-link', function($event) {
var title = $(this).attr('aria-label');
var url = $(this).attr('href');
url = url.replace('https://thenewstack.io', '');
var context = $(this).data('context');
var categories = $(this).data('categories');
var payload = {
'event' : 'trending_story_click',
'post_title' : title,
'url' : url,
'context' : context
};
if (categories) {
payload.categories = categories;
}
window.dataLayer.push(payload);
});
});
});
</script>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
$(window).scroll(function() {
var headerHeight = $('#tns-header-nav-topics').outerHeight();
$('#tns-post-body-sidebar').css('top', headerHeight + 30 + 'px');
});
});
</script>
</div>
</div>
</div>
</div>
<div class="content-column">
<div class="tns-insight-portcos-disclosure">
<div class="content">
<div class="disclosure">TNS owner Insight Partners is an investor in: Pragma, Honeycomb.</div> </div>
</div>
</div>
<div class="content-column content-column-mobile-footer">
<div class="mobile-share">
<div class="tns-share">
<div class="section-heading">
SHARE THIS STORY </div>
<div class="share-media">
<a
href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fthenewstack.io%2Fif-p99-latency-is-bs-whats-the-alternative%2F&text=If+P99+Latency+Is+BS%2C+What%27s+the+Alternative%3F: &via=thenewstack&related=thenewstack"
class="share-media-icon share-media-icon-twitter"
data-platform="twitter"
target="_blank"
>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" width="24px" height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve" class="fill">
<path d="M14.095479,10.316482L22.286354,1h-1.940718l-7.115352,8.087682L7.551414,1H1l8.589488,12.231093L1,23h1.940717 l7.509372-8.542861L16.448587,23H23L14.095479,10.316482z M11.436522,13.338465l-0.871624-1.218704l-6.924311-9.68815h2.981339 l5.58978,7.82155l0.867949,1.218704l7.26506,10.166271h-2.981339L11.436522,13.338465z"/>
</svg>
</a>
<a href="https://news.ycombinator.com/submitlink?t=If P99 Latency Is BS, What's the Alternative?&u=https%3A%2F%2Fthenewstack.io%2Fif-p99-latency-is-bs-whats-the-alternative%2F" class="share-media-icon share-media-icon-hackernews" data-platform="hackernews" target="_blank">
<svg viewBox="0 0 42 42" class="fill">
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="hackernews" transform="translate(-3.000000, -3.000000)">
<polygon id="Path" points="0 48 0 0 48 0 48 48"></polygon>
<path d="M3.84009302,3.84009302 L3.84009302,44.160093 L44.160093,44.160093 L44.160093,3.84009302 L3.84009302,3.84009302 Z M42.240093,42.240093 L5.76009302,42.240093 L5.76009302,5.76009302 L42.240093,5.76009302 L42.240093,42.240093 Z M40.320093,7.68009302 L7.68009302,7.68009302 L7.68009302,40.320093 L40.320093,40.320093 L40.320093,7.68009302 Z M25.920093,26.880093 L25.920093,34.560093 L22.080093,34.560093 L22.080093,26.880093 L15.360093,14.400093 L18.412893,14.400093 L24.000093,24.182493 L29.587293,14.400093 L32.640093,14.400093 L25.920093,26.880093 Z" id="Shape" fill="#000000" fill-rule="nonzero"></path>
</g>
</g>
</svg>
</a>
<a href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fthenewstack.io%2Fif-p99-latency-is-bs-whats-the-alternative%2F" class="share-media-icon share-media-icon-linkedin" data-platform="linkedin" target="_blank">
<svg viewBox="0 0 16.927 16.689" class="fill">
<path d="M3.833,1.809A1.8,1.8,0,0,1,1.88,3.619,1.783,1.783,0,0,1,0,1.809,1.8,1.8,0,0,1,1.928,0a1.789,1.789,0,0,1,1.9,1.809M.1,5.047H3.714V16.689H.1Z" transform="translate(0 0)"/>
<path d="M28.535,27.5c0-1.452-.047-2.666-.095-3.714h3.142l.167,1.619h.071a4.18,4.18,0,0,1,3.6-1.881c2.381,0,4.166,1.6,4.166,5.024V35.43H35.963V28.978c0-1.5-.524-2.523-1.833-2.523a1.987,1.987,0,0,0-1.857,1.357,2.6,2.6,0,0,0-.119.9V35.43H28.535Z" transform="translate(-22.655 -18.741)"/>
<svg>
</a>
<a href="https://reddit.com/submit?url=https%3A%2F%2Fthenewstack.io%2Fif-p99-latency-is-bs-whats-the-alternative%2F&title=If+P99+Latency+Is+BS%2C+What%27s+the+Alternative%3F" class="share-media-icon share-media-icon-reddit" data-platform="reddit" target="_blank">
<svg viewBox="0 0 24 24" class="fill">
<path d="M14.238 15.348c.085.084.085.221 0 .306-.465.462-1.194.687-2.231.687l-.008-.002-.008.002c-1.036 0-1.766-.225-2.231-.688-.085-.084-.085-.221 0-.305.084-.084.222-.084.307 0 .379.377 1.008.561 1.924.561l.008.002.008-.002c.915 0 1.544-.184 1.924-.561.085-.084.223-.084.307 0zm-3.44-2.418c0-.507-.414-.919-.922-.919-.509 0-.923.412-.923.919 0 .506.414.918.923.918.508.001.922-.411.922-.918zm13.202-.93c0 6.627-5.373 12-12 12s-12-5.373-12-12 5.373-12 12-12 12 5.373 12 12zm-5-.129c0-.851-.695-1.543-1.55-1.543-.417 0-.795.167-1.074.435-1.056-.695-2.485-1.137-4.066-1.194l.865-2.724 2.343.549-.003.034c0 .696.569 1.262 1.268 1.262.699 0 1.267-.566 1.267-1.262s-.568-1.262-1.267-1.262c-.537 0-.994.335-1.179.804l-2.525-.592c-.11-.027-.223.037-.257.145l-.965 3.038c-1.656.02-3.155.466-4.258 1.181-.277-.255-.644-.415-1.05-.415-.854.001-1.549.693-1.549 1.544 0 .566.311 1.056.768 1.325-.03.164-.05.331-.05.5 0 2.281 2.805 4.137 6.253 4.137s6.253-1.856 6.253-4.137c0-.16-.017-.317-.044-.472.486-.261.82-.766.82-1.353zm-4.872.141c-.509 0-.922.412-.922.919 0 .506.414.918.922.918s.922-.412.922-.918c0-.507-.413-.919-.922-.919z"/>
</svg>
</a>
<a href="https://www.facebook.com/sharer/sharer.php?u=https://thenewstack.io/if-p99-latency-is-bs-whats-the-alternative/" class="share-media-icon share-media-icon-facebook" data-platform="facebook" target="_blank">
<svg viewBox="0 0 17.492 17.492" class="fill">
<path d="M15.306,0H2.187A2.193,2.193,0,0,0,0,2.187V15.306a2.193,2.193,0,0,0,2.187,2.187H8.822V11.22H6.727V8.488H8.822V7.119a3.621,3.621,0,0,1,3.547-3.763H14.3V6.441H12.572c-.452,0-.585.26-.585.618V8.488H14.3V11.22H11.987v6.272h3.318a2.193,2.193,0,0,0,2.187-2.187V2.187A2.193,2.193,0,0,0,15.306,0"/>
</svg>
</a>
<!--
<a href="https://www.facebook.com/sharer/sharer.php?u=https://thenewstack.io/if-p99-latency-is-bs-whats-the-alternative/" class="share-media-icon share-media-icon-instagram" data-platform="instagram" target="_blank">
<svg viewBox="0 0 17.839 17.84" class="fill">
<path d="M8.92,1.607c2.382,0,2.664.009,3.6.052a4.937,4.937,0,0,1,1.656.307,2.763,2.763,0,0,1,1.026.667,2.763,2.763,0,0,1,.667,1.026,4.938,4.938,0,0,1,.307,1.656c.043.941.052,1.223.052,3.6s-.009,2.664-.052,3.6a4.937,4.937,0,0,1-.307,1.656,2.955,2.955,0,0,1-1.693,1.693,4.937,4.937,0,0,1-1.656.307c-.941.043-1.223.052-3.6.052s-2.664-.009-3.6-.052a4.937,4.937,0,0,1-1.656-.307,2.763,2.763,0,0,1-1.026-.667,2.763,2.763,0,0,1-.667-1.026,4.937,4.937,0,0,1-.307-1.656c-.043-.941-.052-1.223-.052-3.6s.009-2.664.052-3.6a4.938,4.938,0,0,1,.307-1.656,2.763,2.763,0,0,1,.667-1.026,2.763,2.763,0,0,1,1.026-.667,4.937,4.937,0,0,1,1.656-.307c.941-.043,1.223-.052,3.6-.052M8.92,0C6.5,0,6.193.01,5.242.054A6.547,6.547,0,0,0,3.077.468,4.376,4.376,0,0,0,1.5,1.5,4.373,4.373,0,0,0,.468,3.077,6.547,6.547,0,0,0,.054,5.242C.01,6.194,0,6.5,0,8.92S.01,11.646.054,12.6a6.547,6.547,0,0,0,.415,2.165A4.373,4.373,0,0,0,1.5,16.343a4.373,4.373,0,0,0,1.58,1.029,6.547,6.547,0,0,0,2.165.415c.951.044,1.255.054,3.678.054s2.726-.01,3.678-.054a6.547,6.547,0,0,0,2.165-.415,4.56,4.56,0,0,0,2.609-2.609,6.547,6.547,0,0,0,.415-2.165c.044-.951.054-1.255.054-3.678s-.01-2.726-.054-3.678a6.547,6.547,0,0,0-.415-2.165A4.373,4.373,0,0,0,16.343,1.5,4.376,4.376,0,0,0,14.763.468,6.547,6.547,0,0,0,12.6.054C11.646.01,11.342,0,8.92,0" transform="translate(0 0)"/>
<path d="M25.914,21.334a4.581,4.581,0,1,0,4.58,4.581,4.581,4.581,0,0,0-4.58-4.581m0,7.554a2.973,2.973,0,1,1,2.973-2.973,2.973,2.973,0,0,1-2.973,2.973" transform="translate(-16.995 -16.995)"/>
<path d="M64.142,16.253a1.07,1.07,0,1,1-1.07-1.07,1.071,1.071,0,0,1,1.07,1.07" transform="translate(-49.39 -12.095)"/>
</svg>
</a>
<a href="#" class="share-media-icon share-post-copy" data-platform="copy-url">
<svg viewBox="0 0 18.528 18.528" class="stroke">
<path d="M4.517,4.517V.75H17.778V14.011H14.011" stroke-miterlimit="10" stroke-width="1.5"/>
<path d="M4.517,4.517h9.494v9.494" stroke-miterlimit="10" stroke-width="1.5"/>
<path d="M4.517,4.517H.75V17.778H14.011V14.011" stroke-miterlimit="10" stroke-width="1.5"/>
</svg>
</a>
-->
</div>
</div>
<script>
$(document).ready(function() {
$('body').off('click.share');
$('body').on('click.share', '.share-media-icon', function() {
var platform = $(this).data('platform');
var url = $(this).attr('href');
var sponsor = 'sponsor-scylladb';
var categories = 'operations';
var payload = {
'event' : 'share',
'platform' : platform,
'url' : url,
'sponsor' : sponsor
};
if (categories) {
payload.categories = categories;
}
window.dataLayer.push(payload);
});
});
</script>
</div>
<div class="mobile-trending-stories">
<div
class="tns-trending-stories-block bottom"
data-context="bottom"
>
<div class="section-heading">
TRENDING STORIES </div>
<div
class="tns-trending-stories-list tns-trending-stories-list-bottom tns-trending-stories-list-6aa40a351b69e"
data-uuid="6aa40a351b69e"
data-context="bottom"
></div>
</div>
<script>
$(document).ready(function() {
var $container = $('.tns-trending-stories-list-6aa40a351b69e');
var context = $container.data('context');
$container.load('/no-cache/trending-stories/', {
limit : '5',
category_slug : '',
postID : '22716714',
context : 'bottom'
}, function(result) {
if (context === 'frontpage') {
$container.find('.trending-story-link').addClass('frontpage-link');
}
$('body').off('click.trending_story');
$('body').on('click.trending_story', '.trending-story-link', function($event) {
var title = $(this).attr('aria-label');
var url = $(this).attr('href');
url = url.replace('https://thenewstack.io', '');
var context = $(this).data('context');
var categories = $(this).data('categories');
var payload = {
'event' : 'trending_story_click',
'post_title' : title,
'url' : url,
'context' : context
};
if (categories) {
payload.categories = categories;
}
window.dataLayer.push(payload);
});
});
});
</script>
</div>
</div>
<div class="tns-sponsors-rss">
<div class="tns-sponsors-rss-block"></div>
<script>
$(document).ready(function() {
$.ajax({
method: 'POST',
url: '/no-cache/sponsors-rss-block/',
headers: {
'Cache-Control': 'no-cache, no-store, must-revalidate',
'Pragma': 'no-cache',
'Expires': '0'
},
data : {
postID : '22716714'
},
success : function(data) {
console.log("RSS RESULT")
console.log(data)
if (data == "") {
$('.tns-sponsors-rss').hide()
return
}
if (data.startsWith('ERROR')) {
console.log(data)
$('.tns-sponsors-rss').hide()
return
}
$('.tns-sponsors-rss-block').append(data)
}
});
});
</script>
</div>
<div class="content-column content-column-post-footer">
<div id="tns-post-newsletter">
<div class="tns-newsletter-shortcode">
<div class="title">
<span>TNS DAILY NEWSLETTER</span>
Receive a free roundup of the most recent TNS articles in your inbox each day. </div>
<div class="newsletter-form" data-instanceid="6aa40a351b721">
<div class="newsletter-form-inputs">
<input class="tns-newsletter-form-email" type="email" placeholder="EMAIL ADDRESS">
<button class="tns-newsletter-form-submit">
SUBSCRIBE
</button>
</div>
<div class="newsletter-form-privacy">
The New Stack does not sell your information or share it with
unaffiliated third parties. By continuing, you agree to our
<a href="/terms-of-use/">Terms of Use</a> and
<a href="/privacy-policy/">Privacy Policy</a>.
</div>
</div>
<script>
$(document).ready(function() {
var $tnsNewsletterForm = $('.newsletter-form[data-instanceid="6aa40a351b721"]');
var $tnsNewsletterEmailInput = $tnsNewsletterForm.find('.tns-newsletter-form-email');
var $tnsNewsletterSubmitButton = $tnsNewsletterForm.find('.tns-newsletter-form-submit');
var newsletterCategories = 'operations';
/// Determine if the user is logged-in and
/// pre-populate the newsletter form email if so
var user = window.tns.getCookie('tns-user')
if (user) user = JSON.parse(user)
if (user?.email) {
$tnsNewsletterEmailInput.val(user.email)
}
/// Handlers
$tnsNewsletterEmailInput.on('keyup', function($event) {
$(this).removeClass('error');
if ($event.which === 13) {
$tnsNewsletterSubmitButton.click();
}
});
$tnsNewsletterSubmitButton.on('click', function() {
window.imgjs.subscribe.config.copy.email_slide.heading.subscribe = 'Subscribe to TNS Daily'
window.imgjs.subscribe.config.copy.email_slide.cta.subscribe = 'Always stay in-the-know by getting the most important news and exclusive content delivered daily to your inbox to learn more about at-scale software development for free.'
window.imgjs.subscribe.config.copy.email_slide.button_label.subscribe = 'SUBSCRIBE'
window.imgjs.subscribe.config.images.email_slide.key_image = null
window.imgjs.subscribe.config.copy.profile_slide.heading.subscribe = 'Last Step'
window.imgjs.subscribe.config.copy.profile_slide.cta.subscribe = 'Refine your profile to unlock insights and opportunities aligned with your skills and experience.'
window.imgjs.subscribe.config.copy.profile_slide.button_label.subscribe = 'UPDATE PROFILE'
window.imgjs.subscribe.config.copy.confirm_slide.heading.subscribe = 'Success'
window.imgjs.subscribe.config.copy.confirm_slide.welcome.subscribe = `You're now subscribed to the TNS Daily newsletter.<br><br>We're so glad you're here! As a member of The New Stack, you now have unlimited access to all our <a href="https://thenewstack.io">articles</a>, <a href="https://thenewstack.io/podcasts/">videos</a>, <a href="https://thenewstack.io/webinars/">webinars</a>, <a href="https://thenewstack.io/ebooks/">ebooks</a>, <a href="https://thenewstack.io/newsletter/">newsletters</a> and more. You can expect all the best TNS content to arrive Monday through Friday to keep you on top of the news and at the top of your game.`
window.imgjs.subscribe.config.copy.confirm_slide.button_label.subscribe = 'OK'
window.imgjs.subscribe.config.onClose = function(user) {
window.imgjs.subscribe.resetConfig()
if (user) {
window.tns.setCookie('tns-user-id', user.author_id, 8400)
window.tns.setCookie('tns-user', JSON.stringify(user), 8400)
/// Update the BlueConic profile with the email and Ory ID
const profile = window.blueConicClient.profile.getProfile()
profile.setValue('email', user?.email)
profile.setValue('ory_id', user?.author_id)
window.blueConicClient.profile.updateProfile()
$('.masthead-login-button').text("")
/// Determine if it's a new subscription by testing
/// if the createdAt date is today's date
if (window.imgjs.subscribe.isNewSubscription(user.createdAt)) {
var payload = {
'event' : 'user_registration',
'url' : window.location.href,
'channel': window.imgjs.subscribe.channel,
'channel_id': window.imgjs.subscribe.channel_id
};
if (newsletterCategories) {
payload.categories = newsletterCategories;
}
window.dataLayer.push(payload);
}
} else {
window.tns.setCookie('img-session-token', '', -1)
window.tns.setCookie('tns-user-id', '', -1)
window.tns.setCookie('tns-user', '', -1)
$('.masthead-login-button').text("LOGIN")
console.error("There was an error processing your request, please try again.")
}
}
window.imgjs.subscribe.config.onProfileUpdate = function(data) {
console.log("Set tns-user cookie with the following data:")
console.log(data)
if (data.user) {
window.tns.setCookie('tns-user-id', data.user.author_id, 8400)
window.tns.setCookie('tns-user', JSON.stringify(data.user), 8400)
} else {
console.error("[IMGJS] ERROR No user returned to onProfileUpdate")
}
}
var email = $tnsNewsletterEmailInput.val()
var subscriptions = {
mc : [
'6166149401', /// TNS Daily
'd60fc24015' /// TNS Weekly
],
hs : []
}
const hostname = window.location.hostname
switch (true) {
case hostname.includes("thenewstack.io"):
subscriptions.hs.push("688810478") /// TNS Daily (PROD)
subscriptions.hs.push("688810681") /// TNS Weekly (PROD)
break
case hostname.includes("thenewstack.dev"):
subscriptions.hs.push("860037297") /// TNS Daily (SANDBOX)
subscriptions.hs.push("860037316") /// TNS Weekly (SANDBOX)
break
}
/// Set the channel data for the user_registration GA4 event
window.imgjs.subscribe.channel = 'newsletter'
window.imgjs.subscribe.channel_id = 'tns-daily'
/// If it's the events page, add the events sub ID
const path = window.location.pathname
if (path.includes('/events/')) {
subscriptions.hs.push("688810832") /// TNS Events (PROD)
window.imgjs.subscribe.channel_id = 'tns-events'
}
user = window.tns.getCookie('tns-user')
if (user) user = JSON.parse(user)
window.imgjs.subscribe.open(email, subscriptions, 'subscribe', user)
})
});
</script>
</div>
</div>
</div>
</div>
<footer id="tns-footer">
<div class="content-column">
<div class="row">
<div class="col">
<div id="tns-footer-nav-menus">
<div class="row footer-nav-row">
<div class="col-15 footer-nav-col">
<div class="footer-nav-header">
ARCHITECTURE
</div>
<div class="footer-nav-menu">
<a
href="https://thenewstack.io/cloud-native/"
class="topic-cloud-native"
data-category-slug="cloud-native"
>
Cloud Native Ecosystem </a>
<a
href="https://thenewstack.io/containers/"
class="topic-containers"
data-category-slug="containers"
>
Containers </a>
<a
href="https://thenewstack.io/databases/"
class="topic-databases"
data-category-slug="databases"
>
Databases </a>
<a
href="https://thenewstack.io/edge-computing/"
class="topic-edge-computing"
data-category-slug="edge-computing"
>
Edge Computing </a>
<a
href="https://thenewstack.io/infrastructure-as-code/"
class="topic-infrastructure-as-code"
data-category-slug="infrastructure-as-code"
>
Infrastructure as Code </a>
<a
href="https://thenewstack.io/linux/"
class="topic-linux"
data-category-slug="linux"
>
Linux </a>
<a
href="https://thenewstack.io/microservices/"
class="topic-microservices"
data-category-slug="microservices"
>
Microservices </a>
<a
href="https://thenewstack.io/open-source/"
class="topic-open-source"
data-category-slug="open-source"
>
Open Source </a>
<a
href="https://thenewstack.io/networking/"
class="topic-networking"
data-category-slug="networking"
>
Networking </a>
<a
href="https://thenewstack.io/storage/"
class="topic-storage"
data-category-slug="storage"
>
Storage </a>
</div>
</div>
<div class="col-15 footer-nav-col">
<div class="footer-nav-header">
ENGINEERING
</div>
<div class="footer-nav-menu">
<a
href="https://thenewstack.io/ai/"
class="topic-ai"
data-category-slug="ai"
>
AI </a>
<a
href="https://thenewstack.io/ai-engineering/"
class="topic-ai-engineering"
data-category-slug="ai-engineering"
>
AI Engineering </a>
<a
href="https://thenewstack.io/api-management/"
class="topic-api-management"
data-category-slug="api-management"
>
API Management </a>
<a
href="https://thenewstack.io/backend-development/"
class="topic-backend-development"
data-category-slug="backend-development"
>
Backend development </a>
<a
href="https://thenewstack.io/data/"
class="topic-data"
data-category-slug="data"
>
Data </a>
<a
href="https://thenewstack.io/frontend-development/"
class="topic-frontend-development"
data-category-slug="frontend-development"
>
Frontend Development </a>
<a
href="https://thenewstack.io/llm/"
class="topic-llm"
data-category-slug="llm"
>
Large Language Models </a>
<a
href="https://thenewstack.io/security/"
class="topic-security"
data-category-slug="security"
>
Security </a>
<a
href="https://thenewstack.io/software-development/"
class="topic-software-development"
data-category-slug="software-development"
>
Software Development </a>
<a
href="https://thenewstack.io/webassembly/"
class="topic-webassembly"
data-category-slug="webassembly"
>
WebAssembly </a>
</div>
</div>
<div class="col-15 footer-nav-col">
<div class="footer-nav-header">
OPERATIONS
</div>
<div class="footer-nav-menu">
<a
href="https://thenewstack.io/ai-operations/"
class="topic-ai-operations"
data-category-slug="ai-operations"
>
AI Operations </a>
<a
href="https://thenewstack.io/ci-cd/"
class="topic-ci-cd"
data-category-slug="ci-cd"
>
CI/CD </a>
<a
href="https://thenewstack.io/cloud-services/"
class="topic-cloud-services"
data-category-slug="cloud-services"
>
Cloud Services </a>
<a
href="https://thenewstack.io/devops/"
class="topic-devops"
data-category-slug="devops"
>
DevOps </a>
<a
href="https://thenewstack.io/kubernetes/"
class="topic-kubernetes"
data-category-slug="kubernetes"
>
Kubernetes </a>
<a
href="https://thenewstack.io/observability/"
class="topic-observability"
data-category-slug="observability"
>
Observability </a>
<a
href="https://thenewstack.io/operations/"
class="topic-operations"
data-category-slug="operations"
>
Operations </a>
<a
href="https://thenewstack.io/platform-engineering/"
class="topic-platform-engineering"
data-category-slug="platform-engineering"
>
Platform Engineering </a>
</div>
</div>
<div class="col-15 footer-nav-col">
<div class="footer-nav-header">
CHANNELS
</div>
<div class="footer-nav-menu">
<a
href="https://thenewstack.io/podcasts/"
class="topic-podcasts"
data-category-slug="podcasts"
>
Podcasts </a>
<a
href="https://thenewstack.io/ebooks/"
class="topic-ebooks"
data-category-slug="ebooks"
>
Ebooks </a>
<a
href="https://thenewstack.io/events/"
class="topic-events"
data-category-slug="events"
>
Events </a>
<a
href="https://thenewstack.io/webinars/"
class="topic-webinars"
data-category-slug="webinars"
>
Webinars </a>
<a
href="https://thenewstack.io/newsletter/"
class="topic-newsletter"
data-category-slug="newsletter"
>
Newsletter </a>
<a
href="/rss-feeds/"
class="topic-rss-feeds"
data-category-slug="rss-feeds"
>
TNS RSS Feeds </a>
</div>
</div>
<div class="col-15 footer-nav-col">
<div class="footer-nav-header">
THE NEW STACK
</div>
<div class="footer-nav-menu">
<a
href="https://thenewstack.io/about-and-contact-info/"
class="topic-about-and-contact-info"
data-category-slug="about-and-contact-info"
>
About / Contact </a>
<a
href="https://thenewstack.io/sponsors/"
class="topic-sponsors"
data-category-slug="sponsors"
>
Sponsors </a>
<a
href="https://thenewstack.io/sponsorship/"
class="topic-sponsorship"
data-category-slug="sponsorship"
>
Advertise With Us </a>
<a
href="https://thenewstack.io/contributions/"
class="topic-contributions"
data-category-slug="contributions"
>
Contributions </a>
</div>
</div>
<div class="col-15 footer-nav-col">
<a
href="https://roadmap.sh/?utm_source=The+New+Stack&utm_medium=Referral&utm_campaign=Footer"
class="roadmap-link"
target="_blank"
>
<div class="footer-nav-header">
<svg width="283" height="283" viewBox="0 0 283 283" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 39C0 17.4609 17.4609 0 39 0H244C265.539 0 283 17.4609 283 39V244C283 265.539 265.539 283 244 283H39C17.4609 283 0 265.539 0 244V39Z" fill="black"></path>
<path d="M121.215 210.72C119.348 211.28 116.361 211.84 112.255 212.4C108.335 212.96 104.228 213.24 99.9347 213.24C95.828 213.24 92.0947 212.96 88.7347 212.4C85.5614 211.84 82.8547 210.72 80.6147 209.04C78.3747 207.36 76.6014 205.12 75.2947 202.32C74.1747 199.333 73.6147 195.507 73.6147 190.84V106.84C73.6147 102.547 74.3614 98.9067 75.8547 95.92C77.5347 92.7467 79.868 89.9467 82.8547 87.52C85.8414 85.0933 89.4814 82.9467 93.7747 81.08C98.2547 79.0267 103.015 77.2533 108.055 75.76C113.095 74.2667 118.321 73.1467 123.735 72.4C129.148 71.4667 134.561 71 139.975 71C148.935 71 156.028 72.7733 161.255 76.32C166.481 79.68 169.095 85.28 169.095 93.12C169.095 95.7333 168.721 98.3467 167.975 100.96C167.228 103.387 166.295 105.627 165.175 107.68C161.255 107.68 157.241 107.867 153.135 108.24C149.028 108.613 145.015 109.173 141.095 109.92C137.175 110.667 133.441 111.507 129.895 112.44C126.535 113.187 123.641 114.12 121.215 115.24V210.72ZM166.387 188.32C166.387 180.48 168.813 173.947 173.667 168.72C178.52 163.493 185.147 160.88 193.547 160.88C201.947 160.88 208.573 163.493 213.427 168.72C218.28 173.947 220.707 180.48 220.707 188.32C220.707 196.16 218.28 202.693 213.427 207.92C208.573 213.147 201.947 215.76 193.547 215.76C185.147 215.76 178.52 213.147 173.667 207.92C168.813 202.693 166.387 196.16 166.387 188.32Z" fill="white"></path>
</svg>roadmap.sh </div>
<div class="footer-nav-menu roadmap-copy">
<p>
Community created roadmaps, articles, resources and journeys for
developers to help you choose your path and grow in your career.
</p>
</div>
</a>
<a
class="roadmap-page-link"
href="https://roadmap.sh/frontend?utm_source=The+New+Stack&utm_medium=Referral&utm_campaign=Footer"
target="_blank"
>
Frontend Developer Roadmap
<svg xmlns="http://www.w3.org/2000/svg" width="23.012" height="17.268" viewBox="0 0 23.012 17.268">
<path id="Path_340" data-name="Path 340" d="M14.36,0,12.816,1.508l6.067,6.067H0V9.729H18.884l-6.031,6.032L14.4,17.268l8.616-8.616Z" transform="translate(0 0)"/>
</svg>
</a>
<a
class="roadmap-page-link"
href="https://roadmap.sh/backend?utm_source=The+New+Stack&utm_medium=Referral&utm_campaign=Footer"
target="_blank"
>
Backend Developer Roadmap
<svg xmlns="http://www.w3.org/2000/svg" width="23.012" height="17.268" viewBox="0 0 23.012 17.268">
<path id="Path_340" data-name="Path 340" d="M14.36,0,12.816,1.508l6.067,6.067H0V9.729H18.884l-6.031,6.032L14.4,17.268l8.616-8.616Z" transform="translate(0 0)"/>
</svg>
</a>
<a
class="roadmap-page-link"
href="https://roadmap.sh/devops?utm_source=The+New+Stack&utm_medium=Referral&utm_campaign=Footer"
target="_blank"
>
Devops Roadmap
<svg xmlns="http://www.w3.org/2000/svg" width="23.012" height="17.268" viewBox="0 0 23.012 17.268">
<path id="Path_340" data-name="Path 340" d="M14.36,0,12.816,1.508l6.067,6.067H0V9.729H18.884l-6.031,6.032L14.4,17.268l8.616-8.616Z" transform="translate(0 0)"/>
</svg>
</a>
</div>
</div>
</div> </div>
</div>
<div class="row">
<div class="col">
<div id="tns-footer-legal">
<div class="row">
<div class="col col-75 col-legal">
<div class="copyright">
&copy; The New Stack 2026 </div>
<div class="terms">
<a href="/disclosure-guidelines/">Disclosures</a>
<a href="/terms-of-use/">Terms of Use</a>
<a href="/advertising-terms-conditions/">Advertising Terms & Conditions</a>
<a href="/privacy-policy/">Privacy Policy</a>
<a href="/cookie-policy/">Cookie Policy</a>
</div>
</div>
<div class="col col-25 col-social">
<div class="footer-nav-header">
FOLLOW TNS
</div>
<div class="social-links">
<div
class="tns-follow-links"
data-instanceid="6aa40a351dafc"
data-categories="operations"
>
<div class="follow-links">
<a
rel="me"
href="https://hachyderm.io/@TheNewStack"
class="follow-icon follow-icon-mastadon"
data-platform="mastodon"
data-position="footer"
target="_blank"
>
<svg class="fill" fill="#000000" viewBox="0 0 25 25" style="width: 25px; height: 25px" xmlns="http://www.w3.org/2000/svg" xml:space="preserve">
<path d="M21.327 8.566c0-4.339-2.843-5.61-2.843-5.61-1.433-.658-3.894-.935-6.451-.956h-.063c-2.557.021-5.016.298-6.45.956 0 0-2.843 1.272-2.843 5.61 0 .993-.019 2.181.012 3.441.103 4.243.778 8.425 4.701 9.463 1.809.479 3.362.579 4.612.51 2.268-.126 3.541-.809 3.541-.809l-.075-1.646s-1.621.511-3.441.449c-1.804-.062-3.707-.194-3.999-2.409a4.523 4.523 0 0 1-.04-.621s1.77.433 4.014.536c1.372.063 2.658-.08 3.965-.236 2.506-.299 4.688-1.843 4.962-3.254.434-2.223.398-5.424.398-5.424zm-3.353 5.59h-2.081V9.057c0-1.075-.452-1.62-1.357-1.62-1 0-1.501.647-1.501 1.927v2.791h-2.069V9.364c0-1.28-.501-1.927-1.502-1.927-.905 0-1.357.546-1.357 1.62v5.099H6.026V8.903c0-1.074.273-1.927.823-2.558.566-.631 1.307-.955 2.228-.955 1.065 0 1.872.409 2.405 1.228l.518.869.519-.869c.533-.819 1.34-1.228 2.405-1.228.92 0 1.662.324 2.228.955.549.631.822 1.484.822 2.558v5.253z"/>
</svg>
</a>
<a
href="https://bsky.app/profile/thenewstack.io"
class="follow-icon follow-icon-bluesky"
data-platform="bluesky"
data-position="footer"
target="_blank"
>
<svg class="fill" fill="#000000" viewBox="0 0 64 57" width="24" style="width: 24px">
<path fill="#0085ff" d="M13.873 3.805C21.21 9.332 29.103 20.537 32 26.55v15.882c0-.338-.13.044-.41.867-1.512 4.456-7.418 21.847-20.923 7.944-7.111-7.32-3.819-14.64 9.125-16.85-7.405 1.264-15.73-.825-18.014-9.015C1.12 23.022 0 8.51 0 6.55 0-3.268 8.579-.182 13.873 3.805ZM50.127 3.805C42.79 9.332 34.897 20.537 32 26.55v15.882c0-.338.13.044.41.867 1.512 4.456 7.418 21.847 20.923 7.944 7.111-7.32 3.819-14.64-9.125-16.85 7.405 1.264 15.73-.825 18.014-9.015C62.88 23.022 64 8.51 64 6.55c0-9.818-8.578-6.732-13.873-2.745Z"></path>
</svg>
</a>
<a
href="https://www.threads.net/@thenewstack"
class="follow-icon follow-icon-threads"
data-platform="threads"
data-position="footer"
target="_blank"
>
<svg fill="#CCCCCC" viewBox="0 0 192 192">
<path d="M141.537 88.9883C140.71 88.5919 139.87 88.2104 139.019 87.8451C137.537 60.5382 122.616 44.905 97.5619 44.745C97.4484 44.7443 97.3355 44.7443 97.222 44.7443C82.2364 44.7443 69.7731 51.1409 62.102 62.7807L75.881 72.2328C81.6116 63.5383 90.6052 61.6848 97.2286 61.6848C97.3051 61.6848 97.3819 61.6848 97.4576 61.6855C105.707 61.7381 111.932 64.1366 115.961 68.814C118.893 72.2193 120.854 76.925 121.825 82.8638C114.511 81.6207 106.601 81.2385 98.145 81.7233C74.3247 83.0954 59.0111 96.9879 60.0396 116.292C60.5615 126.084 65.4397 134.508 73.775 140.011C80.8224 144.663 89.899 146.938 99.3323 146.423C111.79 145.74 121.563 140.987 128.381 132.296C133.559 125.696 136.834 117.143 138.28 106.366C144.217 109.949 148.617 114.664 151.047 120.332C155.179 129.967 155.42 145.8 142.501 158.708C131.182 170.016 117.576 174.908 97.0135 175.059C74.2042 174.89 56.9538 167.575 45.7381 153.317C35.2355 139.966 29.8077 120.682 29.6052 96C29.8077 71.3178 35.2355 52.0336 45.7381 38.6827C56.9538 24.4249 74.2039 17.11 97.0132 16.9405C119.988 17.1113 137.539 24.4614 149.184 38.788C154.894 45.8136 159.199 54.6488 162.037 64.9503L178.184 60.6422C174.744 47.9622 169.331 37.0357 161.965 27.974C147.036 9.60668 125.202 0.195148 97.0695 0H96.9569C68.8816 0.19447 47.2921 9.6418 32.7883 28.0793C19.8819 44.4864 13.2244 67.3157 13.0007 95.9325L13 96L13.0007 96.0675C13.2244 124.684 19.8819 147.514 32.7883 163.921C47.2921 182.358 68.8816 191.806 96.9569 192H97.0695C122.03 191.827 139.624 185.292 154.118 170.811C173.081 151.866 172.51 128.119 166.26 113.541C161.776 103.087 153.227 94.5962 141.537 88.9883ZM98.4405 129.507C88.0005 130.095 77.1544 125.409 76.6196 115.372C76.2232 107.93 81.9158 99.626 99.0812 98.6368C101.047 98.5234 102.976 98.468 104.871 98.468C111.106 98.468 116.939 99.0737 122.242 100.233C120.264 124.935 108.662 128.946 98.4405 129.507Z"></path>
</svg>
</a>
<a
href="https://www.linkedin.com/company/the-new-stack"
class="follow-icon follow-icon-linkedin"
data-platform="linkedin"
data-position="footer"
target="_blank"
>
<svg viewBox="0 0 16.927 16.689" class="fill">
<path d="M3.833,1.809A1.8,1.8,0,0,1,1.88,3.619,1.783,1.783,0,0,1,0,1.809,1.8,1.8,0,0,1,1.928,0a1.789,1.789,0,0,1,1.9,1.809M.1,5.047H3.714V16.689H.1Z" transform="translate(0 0)"/>
<path d="M28.535,27.5c0-1.452-.047-2.666-.095-3.714h3.142l.167,1.619h.071a4.18,4.18,0,0,1,3.6-1.881c2.381,0,4.166,1.6,4.166,5.024V35.43H35.963V28.978c0-1.5-.524-2.523-1.833-2.523a1.987,1.987,0,0,0-1.857,1.357,2.6,2.6,0,0,0-.119.9V35.43H28.535Z" transform="translate(-22.655 -18.741)"/>
<svg>
</a>
<a
href="https://twitter.com/thenewstack"
class="follow-icon follow-icon-twitter"
data-platform="twitter"
data-position="footer"
target="_blank"
>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" width="24px" height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve" class="fill">
<path d="M14.095479,10.316482L22.286354,1h-1.940718l-7.115352,8.087682L7.551414,1H1l8.589488,12.231093L1,23h1.940717 l7.509372-8.542861L16.448587,23H23L14.095479,10.316482z M11.436522,13.338465l-0.871624-1.218704l-6.924311-9.68815h2.981339 l5.58978,7.82155l0.867949,1.218704l7.26506,10.166271h-2.981339L11.436522,13.338465z"/>
</svg>
</a>
<a
href="https://www.facebook.com/thenewstack/"
class="follow-icon follow-icon-facebook"
data-platform="facebook"
data-position="footer"
target="_blank"
>
<svg viewBox="0 0 17.492 17.492" class="fill">
<path d="M15.306,0H2.187A2.193,2.193,0,0,0,0,2.187V15.306a2.193,2.193,0,0,0,2.187,2.187H8.822V11.22H6.727V8.488H8.822V7.119a3.621,3.621,0,0,1,3.547-3.763H14.3V6.441H12.572c-.452,0-.585.26-.585.618V8.488H14.3V11.22H11.987v6.272h3.318a2.193,2.193,0,0,0,2.187-2.187V2.187A2.193,2.193,0,0,0,15.306,0"/>
</svg>
</a>
<!--
<a
href="https://www.instagram.com/thenewstack/"
class="follow-icon follow-icon-instagram"
data-platform="instagram"
data-position="footer"
target="_blank"
>
<svg viewBox="0 0 17.839 17.84" class="fill">
<path d="M8.92,1.607c2.382,0,2.664.009,3.6.052a4.937,4.937,0,0,1,1.656.307,2.763,2.763,0,0,1,1.026.667,2.763,2.763,0,0,1,.667,1.026,4.938,4.938,0,0,1,.307,1.656c.043.941.052,1.223.052,3.6s-.009,2.664-.052,3.6a4.937,4.937,0,0,1-.307,1.656,2.955,2.955,0,0,1-1.693,1.693,4.937,4.937,0,0,1-1.656.307c-.941.043-1.223.052-3.6.052s-2.664-.009-3.6-.052a4.937,4.937,0,0,1-1.656-.307,2.763,2.763,0,0,1-1.026-.667,2.763,2.763,0,0,1-.667-1.026,4.937,4.937,0,0,1-.307-1.656c-.043-.941-.052-1.223-.052-3.6s.009-2.664.052-3.6a4.938,4.938,0,0,1,.307-1.656,2.763,2.763,0,0,1,.667-1.026,2.763,2.763,0,0,1,1.026-.667,4.937,4.937,0,0,1,1.656-.307c.941-.043,1.223-.052,3.6-.052M8.92,0C6.5,0,6.193.01,5.242.054A6.547,6.547,0,0,0,3.077.468,4.376,4.376,0,0,0,1.5,1.5,4.373,4.373,0,0,0,.468,3.077,6.547,6.547,0,0,0,.054,5.242C.01,6.194,0,6.5,0,8.92S.01,11.646.054,12.6a6.547,6.547,0,0,0,.415,2.165A4.373,4.373,0,0,0,1.5,16.343a4.373,4.373,0,0,0,1.58,1.029,6.547,6.547,0,0,0,2.165.415c.951.044,1.255.054,3.678.054s2.726-.01,3.678-.054a6.547,6.547,0,0,0,2.165-.415,4.56,4.56,0,0,0,2.609-2.609,6.547,6.547,0,0,0,.415-2.165c.044-.951.054-1.255.054-3.678s-.01-2.726-.054-3.678a6.547,6.547,0,0,0-.415-2.165A4.373,4.373,0,0,0,16.343,1.5,4.376,4.376,0,0,0,14.763.468,6.547,6.547,0,0,0,12.6.054C11.646.01,11.342,0,8.92,0" transform="translate(0 0)"/>
<path d="M25.914,21.334a4.581,4.581,0,1,0,4.58,4.581,4.581,4.581,0,0,0-4.58-4.581m0,7.554a2.973,2.973,0,1,1,2.973-2.973,2.973,2.973,0,0,1-2.973,2.973" transform="translate(-16.995 -16.995)"/>
<path d="M64.142,16.253a1.07,1.07,0,1,1-1.07-1.07,1.071,1.071,0,0,1,1.07,1.07" transform="translate(-49.39 -12.095)"/>
</svg>
</a>
-->
<a
href="https://open.spotify.com/show/2nj1mpDb9jxHxi9vjZvDdk"
class="follow-icon follow-icon-spotify"
data-platform="spotify"
data-position="footer"
target="_blank"
>
<svg fill="#CCCCCC" viewBox="0 0 24 24" height="32">
<path d="M13.427.01C6.805-.253 1.224 4.902.961 11.524.698 18.147 5.853 23.728 12.476 23.99c6.622.263 12.203-4.892 12.466-11.514S20.049.272 13.427.01m5.066 17.579a.717.717 0 0 1-.977.268 14.4 14.4 0 0 0-5.138-1.747 14.4 14.4 0 0 0-5.42.263.717.717 0 0 1-.338-1.392c1.95-.474 3.955-.571 5.958-.29 2.003.282 3.903.928 5.647 1.92a.717.717 0 0 1 .268.978m1.577-3.15a.93.93 0 0 1-1.262.376 17.7 17.7 0 0 0-5.972-1.96 17.7 17.7 0 0 0-6.281.238.93.93 0 0 1-1.11-.71.93.93 0 0 1 .71-1.11 19.5 19.5 0 0 1 6.94-.262 19.5 19.5 0 0 1 6.599 2.165c.452.245.62.81.376 1.263m1.748-3.551a1.147 1.147 0 0 1-1.546.488 21.4 21.4 0 0 0-6.918-2.208 21.4 21.4 0 0 0-7.259.215 1.146 1.146 0 0 1-.456-2.246 23.7 23.7 0 0 1 8.034-.24 23.7 23.7 0 0 1 7.657 2.445c.561.292.78.984.488 1.546m13.612-.036-.832-.247c-1.67-.495-2.14-.681-2.14-1.353 0-.637.708-1.327 2.264-1.327 1.539 0 2.839.752 3.51 1.31.116.096.24.052.24-.098V6.935c0-.097-.027-.15-.098-.203-.83-.62-2.272-1.07-3.723-1.07-2.953 0-4.722 1.68-4.722 3.59 0 2.157 1.371 2.91 3.626 3.546l.973.274c1.689.478 1.998.902 1.998 1.556 0 1.097-.831 1.433-2.07 1.433-1.556 0-3.457-.911-4.35-2.025-.08-.098-.177-.053-.177.062v2.423c0 .097.01.141.08.22.743.814 2.52 1.53 4.59 1.53 2.546 0 4.456-1.485 4.456-3.784 0-1.787-1.052-2.865-3.625-3.635m10.107-1.76c-1.68 0-2.653 1.026-3.219 2.052V9.376c0-.08-.044-.124-.124-.124h-2.22c-.079 0-.123.044-.123.124V20.72c0 .08.044.124.124.124h2.22c.079 0 .123-.044.123-.124v-4.536c.566 1.025 1.521 2.034 3.237 2.034 2.264 0 3.89-1.955 3.89-4.581s-1.644-4.545-3.908-4.545m-.654 6.986c-1.185 0-2.211-1.167-2.618-2.458.407-1.362 1.344-2.405 2.618-2.405 1.211 0 2.051.92 2.051 2.423s-.84 2.44-2.051 2.44m40.633-6.826h-2.264c-.08 0-.115.017-.15.097l-2.282 5.483-2.29-5.483c-.035-.08-.07-.097-.15-.097h-3.661v-.584c0-.955.645-1.397 1.476-1.397.496 0 1.035.256 1.415.486.089.053.15-.008.115-.088l-.796-1.901a.26.26 0 0 0-.124-.133c-.389-.203-1.025-.38-1.644-.38-1.875 0-2.954 1.432-2.954 3.254v.743h-1.503c-.08 0-.124.044-.124.124v1.768c0 .08.044.124.124.124h1.503v6.668c0 .08.044.123.124.123h2.264c.08 0 .124-.044.124-.123v-6.668h1.936l2.812 6.11-1.512 3.325c-.044.098.009.142.097.142h2.414c.08 0 .116-.018.15-.097l4.997-11.355c.035-.08-.009-.141-.097-.141M54.964 9.04c-2.865 0-4.837 2.025-4.837 4.616 0 2.573 1.971 4.616 4.837 4.616 2.856 0 4.846-2.043 4.846-4.616 0-2.591-1.99-4.616-4.846-4.616m.008 7.065c-1.37 0-2.343-1.043-2.343-2.45 0-1.405.973-2.449 2.343-2.449 1.362 0 2.335 1.043 2.335 2.45 0 1.406-.973 2.45-2.335 2.45m33.541-6.334a1.24 1.24 0 0 0-.483-.471 1.4 1.4 0 0 0-.693-.17q-.384 0-.693.17a1.24 1.24 0 0 0-.484.471q-.174.302-.174.681 0 .375.174.677.175.3.484.471t.693.17.693-.17.483-.471.175-.676q0-.38-.175-.682m-.211 1.247a1 1 0 0 1-.394.39 1.15 1.15 0 0 1-.571.14 1.16 1.16 0 0 1-.576-.14 1 1 0 0 1-.391-.39 1.14 1.14 0 0 1-.14-.566q0-.316.14-.562t.391-.388.576-.14q.32 0 .57.14.253.141.395.39t.142.565q0 .312-.142.56m-19.835-5.78c-.85 0-1.468.6-1.468 1.396s.619 1.397 1.468 1.397c.866 0 1.485-.6 1.485-1.397 0-.796-.619-1.397-1.485-1.397m19.329 5.19a.31.31 0 0 0 .134-.262q0-.168-.132-.266-.132-.099-.381-.099h-.588v1.229h.284v-.489h.154l.374.489h.35l-.41-.518a.5.5 0 0 0 .215-.084m-.424-.109h-.26v-.3h.27q.12 0 .184.036a.12.12 0 0 1 .065.116.12.12 0 0 1-.067.111.4.4 0 0 1-.192.037M69.607 9.252h-2.263c-.08 0-.124.044-.124.124v8.56c0 .08.044.123.124.123h2.263c.08 0 .124-.044.124-.123v-8.56c0-.08-.044-.124-.124-.124m-3.333 6.605a2.1 2.1 0 0 1-1.053.257c-.725 0-1.185-.425-1.185-1.362v-3.484h2.211c.08 0 .124-.044.124-.124V9.376c0-.08-.044-.124-.124-.124h-2.21V6.944c0-.097-.063-.15-.15-.08l-3.954 3.113c-.053.044-.07.088-.07.16v1.007c0 .08.044.124.123.124h1.539v3.855c0 2.087 1.203 3.06 2.918 3.06.743 0 1.46-.194 1.884-.442.062-.035.07-.07.07-.133v-1.68c0-.088-.044-.115-.123-.07" transform="translate(-0.95,0)"></path>
</svg>
</a>
<a
href="https://www.youtube.com/c/thenewstack?sub_confirmation=1"
class="follow-icon follow-icon-youtube"
data-platform="youtube"
data-position="footer"
target="_blank"
>
<svg viewBox="0 0 310 310" class="fill">
<g id="XMLID_822_">
<path id="XMLID_823_" d="M297.917,64.645c-11.19-13.302-31.85-18.728-71.306-18.728H83.386c-40.359,0-61.369,5.776-72.517,19.938
C0,79.663,0,100.008,0,128.166v53.669c0,54.551,12.896,82.248,83.386,82.248h143.226c34.216,0,53.176-4.788,65.442-16.527
C304.633,235.518,310,215.863,310,181.835v-53.669C310,98.471,309.159,78.006,297.917,64.645z M199.021,162.41l-65.038,33.991
c-1.454,0.76-3.044,1.137-4.632,1.137c-1.798,0-3.592-0.484-5.181-1.446c-2.992-1.813-4.819-5.056-4.819-8.554v-67.764
c0-3.492,1.822-6.732,4.808-8.546c2.987-1.814,6.702-1.938,9.801-0.328l65.038,33.772c3.309,1.718,5.387,5.134,5.392,8.861
C204.394,157.263,202.325,160.684,199.021,162.41z"/>
</g>
</svg>
</a>
</div>
</div>
<script>
$(document).ready(function() {
var $follow_links = $('.tns-follow-links[data-instanceid="6aa40a351dafc"]');
var categories = $follow_links.data('categories');
$follow_links.find('.follow-icon').on('click', function() {
var context = window.location.pathname;
var platform = $(this).data('platform');
var position = $(this).data('position');
var payload = {
'event' : 'follow_link_click',
'platform' : platform,
'context' : context,
'position' : position
};
if (categories) {
payload.categories = categories;
}
window.dataLayer.push(payload);
});
});
</script>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</footer>
<script>
$(document).ready(function() {
$('#tns-footer a').on('click', function(event) {
var href = $(this).attr('href');
window.dataLayer.push({
'event' : 'footer_link_click',
'url' : href
});
})
});
function injectAds() {
if (window.innerWidth >= 768 || ! document.body.classList.contains('single-post')) {
return;
}
const paragraphsBetweenAds = 4;
const maxAds = 1;
const paragraphs = document.querySelectorAll('#tns-post-body-content > p');
const paragraphCount = paragraphs.length;
let count = 1;
let position = paragraphsBetweenAds;
let adCount = 0;
while (position < paragraphCount && adCount < maxAds) {
const myNode = paragraphs[position];
const adContainer = document.createElement('div');
adContainer.setAttribute('class', 'ad-container ad-container--inline');
adContainer.setAttribute('id', `div-gpt-ad-native-inline-${count}`);
myNode.insertAdjacentElement('beforebegin', adContainer);
googletag
.defineSlot('/22873384501/tns/native_inline_' + count, ['fluid'], 'div-gpt-ad-native-inline-' + count)
.setTargeting('position', 'inline_' + count)
.addService(googletag.pubads());
googletag.display(`div-gpt-ad-native-inline-${count}`);
adCount++;
count += 1;
position = count * paragraphsBetweenAds;
}
};
googletag.cmd.push(function(){
injectAds();
});
window.addEventListener('resize', function(event) {
if ( document.getElementById('div-gpt-ad-native-inline-1') ) {
return;
}
injectAds();
}, true);
</script>
<div id="tns-footer-bar">
<div class="ad-container native-bottom" id="div-gpt-ad-native-bottom">
<script>
googletag.cmd.push(function() {
googletag.display("div-gpt-ad-native-bottom");
});
</script>
</div>
<script>
$(document).ready(function() {
$(window).scroll(function($event) {
var scrollTop = $(window).scrollTop();
footerBarHeight = $('#tns-footer-bar').height();
if (scrollTop < 180) {
$('#tns-footer-bar').stop().transition({
bottom : footerBarHeight * -1,
duration : 333,
easing : 'easeOutQuad'
});
$('.cky-btn-revisit-wrapper').stop().transition({
bottom : '15px',
duration : 333,
easing : 'easeOutQuad'
});
}
if (scrollTop >= 180) {
$('#tns-footer-bar').stop().transition({
bottom : '0px',
duration : 777,
easing : 'easeOutQuad'
});
$('.cky-btn-revisit-wrapper').stop().transition({
bottom : footerBarHeight + 15,
duration : 777,
easing : 'easeOutQuad'
});
}
});
$('.unit-1200-60').on('click', function($event) {
$event.stopPropagation();
var url = $(this).data('url');
window.open(url, '_blank');
});
$('.unit-1200-60 a').on('click', function($event) {
$event.stopPropagation();
});
});
</script>
</div>
<script>
$(document).ready(function() {
///
/// Track Author hit in GA
///
var postTitle = $('#post-title').text();
var authors = '';
$('#tns-post-headline-byline .author a').each(function() {
authors += $(this).text() + ',';
});
authorsCSV = authors.replace(/,\s*$/, "");
console.log('Post Title: ' + postTitle);
if (authorsCSV) {
window.dataLayer.push({
'event' : 'author_hit',
'author_name' : authorsCSV,
'post_title' : postTitle
});
}
///
/// External Link Tracking
///
$('body').on('click', 'a.ext-link', function($event) {
$event.preventDefault();
var url = $(this).attr('href');
var UTMnone = $(this).hasClass('utm-none');
url = window.appendUTM(url, 'inline-mention', UTMnone);
console.log('Appended UTM Params: ' + url);
var parsedUrl = new URL(url);
var domain = parsedUrl.hostname;
var path = parsedUrl.pathname;
var queryString = parsedUrl.search;
var inline = false;
if (queryString.includes('utm_content=inline-mention')) {
inline = true;
}
window.dataLayer.push({
'event' : 'external_url_click',
'url' : url,
'domain' : domain,
'path' : path,
'query_string' : queryString,
'inline' : inline
});
console.log('Opening in new tab: ' + url);
window.open(url, '_blank');
});
///
/// Scroll-depth Tracking
///
var tracked25 = false;
var tracked50 = false;
var tracked75 = false;
var tracked90 = false;
document.addEventListener('scroll', function() {
var path = window.location.pathname;
var depth = '<25%';
var h = document.documentElement,
b = document.body,
st = 'scrollTop',
sh = 'scrollHeight';
var percent = parseInt ( (h[st]||b[st]) / ((h[sh]||b[sh]) - h.clientHeight) * 100);
if (percent == 25) {
if (tracked25) return;
tracked25 = true;
depth = '25%';
window.dataLayer.push({
'event' : 'scroll_depth',
'url' : path,
'depth' : depth
});
} else if (percent == 50){
if (tracked50) return;
tracked50 = true;
depth = '50%';
window.dataLayer.push({
'event' : 'scroll_depth',
'url' : path,
'depth' : depth
});
} else if (percent == 75) {
if (tracked75) return;
tracked75 = true;
depth = '75%';
window.dataLayer.push({
'event' : 'scroll_depth',
'url' : path,
'depth' : depth
});
} else if (percent == 90) {
if (tracked90) return;
tracked90 = true;
depth = '90%';
window.dataLayer.push({
'event' : 'scroll_depth',
'url' : path,
'depth' : depth
});
}
});
});
</script>
<script>
$(document).ready(function() {
///
/// Track Sponsor Note Clicks
///
function trackSponsorNoteClicks(sponsorSlug, url) {
window.dataLayer.push({
'event' : 'sponsor_note_click',
'sponsor' : sponsorSlug,
'url' : url
});
}
$('.sponsor-note-logo-link').on('click', function($event) {
$event.preventDefault();
});
$('.sponsor-note-profile').on('click', function($event) {
var sponsorSlug = $(this).data('sponsor');
var url = $(this).data('url');
/// Append any missing UTMs to the URL
var UTMnone = $(this).parent().hasClass('utm-none');
url = window.appendUTM(url, 'sponsor+module', UTMnone);
trackSponsorNoteClicks(sponsorSlug, url);
window.open(url, '_blank');
});
$('.contributor-note-logo-link').on('click', function($event) {
$event.preventDefault();
});
$('.contributor-note-profile').on('click', function($event) {
var contributorSlug = $(this).data('contributor');
var url = $(this).data('url');
/// Append any missing UTMs to the URL
var UTMnone = $(this).parent().hasClass('utm-none');
url = window.appendUTM(url, 'contributor+module', UTMnone);
window.dataLayer.push({
'event': 'contributor_note_click',
'contributor': contributorSlug,
'url': url
});
window.open(url, '_blank');
});
$('body').on('click', '.sponsors-rss-block-logo-link', function($event) {
$event.preventDefault();
var sponsorSlug = $(this).data('sponsor');
var url = $(this).data('url');
/// Append any missing UTMs to the URL
var UTMnone = $(this).parent().hasClass('utm-none');
url = window.appendUTM(url, 'sponsor+module', UTMnone);
trackSponsorNoteClicks(sponsorSlug, url);
window.open(url, '_blank');
});
$('body').on('click', '.sponsors-rss-block-profile-link', function($event) {
$event.preventDefault();
var sponsorSlug = $(this).data('sponsor');
var url = $(this).data('url');
/// Append any missing UTMs to the URL
var UTMnone = $(this).parent().hasClass('utm-none');
url = window.appendUTM(url, 'sponsor+module', UTMnone);
trackSponsorNoteClicks(sponsorSlug, url);
window.open(url, '_blank');
});
///
/// Track Sponsor RSS Link Clicks
///
/// Determine if this is a sponsored post and
/// if it's a Sponsor-Contributed Article
function trackSponsorRSSClicks(sponsorSlug, title, url, context) {
context = context + '-sponsored-contributed';
window.dataLayer.push({
'event' : 'sponsor_rss_click',
'sponsor' : sponsorSlug,
'rss_post_title' : title,
'url' : url,
'context' : context
});
}
/// Track RSS Link Clicks From Within the Sponsor Note
$('body').on('click', '.sponsor-rss-link', function($event) {
$event.stopPropagation();
var sponsorSlug = $(this).attr('data-sponsor');
var title = $(this).attr('aria-label');
var url = $(this).attr('href');
var context = 'note';
trackSponsorRSSClicks(sponsorSlug, title, url, context)
});
/// Track RSS Link Clicks From Within the Sponsor RSS Footer
$('body').on('click', '.sponsors-rss-link', function($event) {
$event.stopPropagation();
var sponsorSlug = $(this).attr('data-sponsor');
var title = $(this).attr('aria-label');
var url = $(this).attr('href');
var context = 'footer';
trackSponsorRSSClicks(sponsorSlug, title, url, context)
});
///
/// Track Sponsor Disclosure Link Clicks
///
$('.sponsor-disclosure-link').on('click', function($event) {
event.preventDefault();
var url = $(this).attr('href');
/// Append any missing UTMs to the URL
var UTMnone = $(this).parent().hasClass('utm-none');
url = window.appendUTM(url, 'sponsor+module', UTMnone);
window.open(url, '_blank');
});
});
</script>
<style>
.pswp__img {
background: #FFFFFF;
}
.pswp-trigger {
display: block;
position: relative;
cursor: zoom-in;
}
.pswp-trigger.no-caption {
margin-bottom: 40px;
}
.pswp-zoom-icon {
position: absolute;
bottom: 0px;
right: 0px;
color: #8DA6C0;
font-size: 11px;
z-index: 2;
transform: translate(0,23px);
}
.pswp-zoom-icon svg {
display: inline-block;
width: 12px;
height: 12px;
transform: translate(0,3px);
}
.pswp-zoom-icon svg path {
fill: #8DA6C0;
}
.pswp-trigger:hover .pswp-zoom-icon {
color: #FF3287;
}
.pswp-trigger:hover .pswp-zoom-icon svg path {
fill: #FF3287;
}
.wp-caption-text {
padding-right: 50px;
}
</style>
<script>
$(document).ready(function() {
var catsCSV = 'operations';
var sponsor = 'scylladb';
function isPhonePortrait() {
return window.matchMedia('(max-width: 600px) and (orientation: portrait)').matches;
}
///
/// Bind for images with captions
///
$('#tns-post-body-content .wp-caption a img').unwrap();
$('#tns-post-body-content .wp-caption img').each(function() {
var $img = $(this);
var url = $(this).attr('src');
var clone = new Image();
clone.src = $(this).attr('src');
var naturalWidth = null;
var naturalHeight = null;
$(clone).load(function() {
naturalWidth = this.width;
naturalHeight = this.height;
$img.wrap('<a href="' + url + '" class="pswp-trigger" data-pswp-width="' + naturalWidth + '" data-pswp-height="' + naturalHeight + '"></a>"');
$('.pswp-trigger').children('.pswp-zoom-icon').remove();
$('.pswp-trigger').append('<div class="pswp-zoom-icon"><svg xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" width="24" height="24" viewBox="0 0 24 24"><path d="M15.853 16.56c-1.683 1.517-3.911 2.44-6.353 2.44-5.243 0-9.5-4.257-9.5-9.5s4.257-9.5 9.5-9.5 9.5 4.257 9.5 9.5c0 2.442-.923 4.67-2.44 6.353l7.44 7.44-.707.707-7.44-7.44zm-6.353-15.56c4.691 0 8.5 3.809 8.5 8.5s-3.809 8.5-8.5 8.5-8.5-3.809-8.5-8.5 3.809-8.5 8.5-8.5zm-4.5 8h4v-4h1v4h4v1h-4v4h-1v-4h-4v-1z"/></svg> Zoom</div>');
});
});
var lightbox = new PhotoSwipeLightbox({
gallery : '#tns-post-body-content .wp-caption',
children : 'a.pswp-trigger',
mouseMovePan : true,
zoom : false, /// Hides zoom icon in PSWP UI
pinchToClose : true,
closeOnVerticalDrag : true,
bgClickAction : 'close',
padding : {
top : 50,
bottom : 50,
left : 50,
right : 50
},
bgOpacity : 0.9,
initialZoomLevel : (zoomLevelObject) => {
if (isPhonePortrait()) {
return zoomLevelObject.vFill;
} else {
return zoomLevelObject.fit;
}
},
secondaryZoomLevel : (zoomLevelObject) => {
if (isPhonePortrait()) {
return zoomLevelObject.fit;
} else {
return 1;
}
},
maxZoomLevel : 3,
pswpModule : PhotoSwipe
});
lightbox.init();
lightbox.on('openingAnimationEnd', function() {
var url = lightbox.pswp.currSlide.data.src;
url = url.replace('https://cdn.thenewstack.io/media', '');
var payload = {
'event' : 'media_engagement',
'media_action' : 'image_zoom',
'url' : url,
'sponsor' : sponsor
};
if (catsCSV) {
payload.categories = catsCSV;
}
window.dataLayer.push(payload);
});
///
/// Bind for images without captions
///
$('#tns-post-body-content p a img').unwrap();
$('#tns-post-body-content p img').each(function() {
var $img = $(this);
var url = $(this).attr('src');
var clone = new Image();
clone.src = $(this).attr('src');
var naturalWidth = null;
var naturalHeight = null;
$(clone).load(function() {
naturalWidth = this.width;
naturalHeight = this.height;
$img.wrap('<a href="' + url + '" class="pswp-trigger no-caption" data-pswp-width="' + naturalWidth + '" data-pswp-height="' + naturalHeight + '"></a>"');
$('.pswp-trigger').children('.pswp-zoom-icon').remove();
$('.pswp-trigger').append('<div class="pswp-zoom-icon"><svg xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" width="24" height="24" viewBox="0 0 24 24"><path d="M15.853 16.56c-1.683 1.517-3.911 2.44-6.353 2.44-5.243 0-9.5-4.257-9.5-9.5s4.257-9.5 9.5-9.5 9.5 4.257 9.5 9.5c0 2.442-.923 4.67-2.44 6.353l7.44 7.44-.707.707-7.44-7.44zm-6.353-15.56c4.691 0 8.5 3.809 8.5 8.5s-3.809 8.5-8.5 8.5-8.5-3.809-8.5-8.5 3.809-8.5 8.5-8.5zm-4.5 8h4v-4h1v4h4v1h-4v4h-1v-4h-4v-1z"/></svg> Zoom</div>');
});
});
var lightbox2 = new PhotoSwipeLightbox({
gallery : '#tns-post-body-content p',
children : 'a.pswp-trigger',
mouseMovePan : true,
zoom : false, /// Hides zoom icon
pinchToClose : true,
closeOnVerticalDrag : true,
bgClickAction : 'close',
padding : {
top : 50,
bottom : 50,
left : 50,
right : 50
},
bgOpacity : 0.9,
initialZoomLevel : (zoomLevelObject) => {
if (isPhonePortrait()) {
return zoomLevelObject.vFill;
} else {
return zoomLevelObject.fit;
}
},
secondaryZoomLevel : (zoomLevelObject) => {
if (isPhonePortrait()) {
return zoomLevelObject.fit;
} else {
return 1;
}
},
maxZoomLevel : 3,
pswpModule : PhotoSwipe
});
lightbox2.init();
lightbox2.on('openingAnimationEnd', function() {
var url = lightbox2.pswp.currSlide.data.src;
url = url.replace('https://cdn.thenewstack.io/media', '');
var payload2 = {
'event' : 'media_engagement',
'media_action' : 'image_zoom',
'url' : url,
'sponsor' : sponsor
};
if (catsCSV) {
payload2.categories = catsCSV;
}
window.dataLayer.push(payload2);
});
});
</script>
<script type="speculationrules">
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/tns-2022/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
<script type="text/javascript" id="avc_frontend-js-extra">
/* <![CDATA[ */
var AdRefreshControl = {"advertiserIds":[],"lineItemIds":[],"sizesToExclude":"","slotIdsToExclude":{"div-gpt-ad-native-inline-1":1,"div-gpt-ad-native-inline-2":1,"div-gpt-ad-native-sidebar-1":1,"div-gpt-ad-native-sidebar-2":1,"div-gpt-ad-native-sidebar-3":1,"div-gpt-ad-native-sidebar-4":1,"div-gpt-ad-native-sidebar-5":1,"div-gpt-ad-native-sidebar-6":1,"div-gpt-ad-native-sidebar-7":1,"div-gpt-ad-native-sidebar-8":1,"div-gpt-ad-native-sidebar-9":1},"viewabilityThreshold":"70","refreshInterval":"30","maximumRefreshes":"10","refreshCallback":""};
//# sourceURL=avc_frontend-js-extra
/* ]]> */
</script>
<script type="text/javascript" src="https://thenewstack.io/wp-content/plugins/ad-refresh-control/dist/js/frontend.js?ver=1.1.5" id="avc_frontend-js"></script>
<script type="text/javascript" id="wpil-frontend-script-js-extra">
/* <![CDATA[ */
var wpilFrontend = {"ajaxUrl":"/wp-admin/admin-ajax.php","postId":"22716714","postType":"post","openInternalInNewTab":"0","openExternalInNewTab":"0","disableClicks":"0","openLinksWithJS":"0","trackAllElementClicks":"0","clicksI18n":{"imageNoText":"Image in link: No Text","imageText":"Image Title: ","noText":"No Anchor Text Found"}};
//# sourceURL=wpil-frontend-script-js-extra
/* ]]> */
</script>
<script type="text/javascript" src="https://thenewstack.io/wp-content/plugins/link-whisper-premium/js/frontend.min.js?ver=1786985749" id="wpil-frontend-script-js"></script>
<!-- Custom Tracking Code -->
<!-- MS Clarity -->
<script type="text/javascript">
(function(c,l,a,r,i,t,y){
c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
})(window, document, "clarity", "script", "m7s7l68is7");
</script>
<!-- MS Ads -->
<!-- Microsoft Ads Tracking Pixel -->
<script>
(function(w,d,t,r,u){
var f,n,i;
w[u]=w[u]||[],f=function(){
var o={ti:"343097026", enableAutoSpaTracking: true};
o.q=w[u],w[u]=new UET(o),w[u].push("pageLoad")
},
n=d.createElement(t),n.src=r,n.async=1,n.onload=n.onreadystatechange=function(){
var s=this.readyState;
s&&s!=="loaded"&&s!=="complete"||(f(),n.onload=n.onreadystatechange=null)
},
i=d.getElementsByTagName(t)[0],i.parentNode.insertBefore(n,i)
})
(window,document,"script","//bat.bing.com/bat.js","uetq");
</script>
<!-- Twitter Pixel -->
<!-- Twitter conversion tracking base code -->
<script>
!function(e,t,n,s,u,a){e.twq||(s=e.twq=function(){s.exe?s.exe.apply(s,arguments):s.queue.push(arguments);
},s.version='1.1',s.queue=[],u=t.createElement(n),u.async=!0,u.src='https://static.ads-twitter.com/uwt.js',
a=t.getElementsByTagName(n)[0],a.parentNode.insertBefore(u,a))}(window,document,'script');
twq('config','oavhb');
</script>
<!-- End Twitter conversion tracking base code -->
<!-- Meta Pixel -->
<!-- Meta Pixel -->
<script>
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window,document,'script',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('init', '1244424359562950');
fbq('track', 'PageView');
</script>
<noscript>
<img height="1" width="1" src="https://www.facebook.com/tr?id=1244424359562950&ev=PageView&noscript=1"/>
</noscript>
<!-- Meta Pixel End -->
<!-- Linkedin Pixel -->
<!-- LinkedIn Pixel -->
<script type="text/javascript"> _linkedin_partner_id = "4664394"; window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || []; window._linkedin_data_partner_ids.push(_linkedin_partner_id); </script>
<script type="text/javascript"> (function(l) { if (!l){window.lintrk = function(a,b){window.lintrk.q.push([a,b])}; window.lintrk.q=[]} var s = document.getElementsByTagName("script")[0]; var b = document.createElement("script"); b.type = "text/javascript";b.async = true; b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js"; s.parentNode.insertBefore(b, s);})(window.lintrk); </script>
<noscript><img height="1" width="1" style="display:none;" alt="" src="https://px.ads.linkedin.com/collect/?pid=4664394&fmt=gif" /></noscript>
<!-- LinkedIn Pixel End -->
<!-- HubSpot -->
<script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/46095657.js"></script>
<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"3129294321ba4c9980087e49d834a96a","spa":2}' crossorigin="anonymous"></script>
</body>
</html>