"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6103,0],{3322:function(e,t,a){a.r(t),a.d(t,{default:function(){return m}});var n=a(7294),r=a(2896),l=a(2903),o=a(7130),s=a(2511);var i=function(e){var t=e.nextItem,a=e.prevItem;return n.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,o.I)({id:"theme.blog.post.paginator.navAriaLabel",message:"Blog post page navigation",description:"The ARIA label for the blog posts pagination"})},n.createElement("div",{className:"pagination-nav__item"},a&&n.createElement(s.Z,{className:"pagination-nav__link",to:a.permalink},n.createElement("div",{className:"pagination-nav__sublabel"},n.createElement(o.Z,{id:"theme.blog.post.paginator.newerPost",description:"The blog post button label to navigate to the newer/previous post"},"Newer Post")),n.createElement("div",{className:"pagination-nav__label"},"\xab ",a.title))),n.createElement("div",{className:"pagination-nav__item pagination-nav__item--next"},t&&n.createElement(s.Z,{className:"pagination-nav__link",to:t.permalink},n.createElement("div",{className:"pagination-nav__sublabel"},n.createElement(o.Z,{id:"theme.blog.post.paginator.olderPost",description:"The blog post button label to navigate to the older/next post"},"Older Post")),n.createElement("div",{className:"pagination-nav__label"},t.title," \xbb"))))},c=a(8626);var m=function(e){var t=e.content,a=e.sidebar,o=t.frontMatter,s=t.metadata,m=s.title,p=s.description,u=s.nextItem,g=s.prevItem,v=o.hide_table_of_contents;return n.createElement(r.Z,{title:m,description:p,wrapperClassName:c.kM.wrapper.blogPages,pageClassName:c.kM.page.blogPostPage,sidebar:a,toc:!v&&t.toc?t.toc:void 0},n.createElement(l.Z,{frontMatter:o,metadata:s,isBlogPostPage:!0},n.createElement(t,null)),(u||g)&&n.createElement(i,{nextItem:u,prevItem:g}))}},283:function(e,t,a){a.d(t,{Z:function(){return d}});var n=a(7462),r=a(3366),l=a(7294),o=a(6010),s=a(2511),i=a(8626),c=a(9524),m="footerLogoLink_qW4Z",p="footerCopyright_2yvt",u=a(4087),g=["to","href","label","prependBaseUrlToHref"];function v(e){var t=e.to,a=e.href,o=e.label,i=e.prependBaseUrlToHref,m=(0,r.Z)(e,g),p=(0,c.Z)(t),u=(0,c.Z)(a,{forcePrependBaseUrl:!0});return l.createElement(s.Z,(0,n.Z)({className:"footer__link-item"},a?{href:i?u:a}:{to:p},m),o)}var _=function(e){var t=e.sources,a=e.alt;return l.createElement(u.Z,{className:"footer__logo",alt:a,sources:t})};var d=function(){var e=(0,i.LU)().footer,t=e||{},a=t.copyright,n=t.links,r=void 0===n?[]:n,u=t.logo,g=void 0===u?{}:u,d={light:(0,c.Z)(g.src),dark:(0,c.Z)(g.srcDark||g.src)};return e?l.createElement("footer",{className:(0,o.Z)("footer",{"footer--dark":"dark"===e.style})},l.createElement("div",{className:"container"},r&&r.length>0&&l.createElement("div",{className:"row footer__links"},r.map((function(e,t){return l.createElement("div",{key:t,className:"col footer__col"},null!=e.title?l.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?l.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?l.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):l.createElement("li",{key:e.href||e.to,className:"footer__item"},l.createElement(v,e))}))):null)}))),(g||a)&&l.createElement("div",{className:"footer__bottom text--center"},g&&(g.src||g.srcDark)&&l.createElement("div",{className:"margin-bottom--sm"},g.href?l.createElement(s.Z,{href:g.href,className:m},l.createElement(_,{alt:g.alt,sources:d})):l.createElement(_,{alt:g.alt,sources:d})),a?l.createElement("div",{className:p,dangerouslySetInnerHTML:{__html:a}}):null))):null}}}]);