From cf5196791045b556bcd764a56083146c2bd36640 Mon Sep 17 00:00:00 2001 From: budparr Date: Thu, 7 Mar 2019 23:08:15 -0500 Subject: [PATCH] Revert Parcel upgrade Parcel https://github.com/parcel-bundler/parcel/pull/2740 https://github.com/parcel-bundler/parcel/issues/2736 also removed --experimental-scope-hoisting until upgrade works --- assets/css/tailwindcss/tailwind.config.js | 3 +- assets/index.js | 2 - assets/js/app/filters.vue | 2 +- assets/output/index.css | 3 +- assets/output/index.css.map | 1 - assets/output/index.js | 6 +- assets/output/index.js.map | 1 - assets/output/index.map | 1 + package.json | 4 +- ...s_8848f55d07695b7ff7188138f23d69e3.content | 3 +- ....css_8848f55d07695b7ff7188138f23d69e3.json | 2 +- ...s_8848f55d07695b7ff7188138f23d69e3.content | 6 +- ...x.js_8848f55d07695b7ff7188138f23d69e3.json | 2 +- yarn.lock | 1065 ++++++++--------- 14 files changed, 502 insertions(+), 599 deletions(-) delete mode 100644 assets/output/index.css.map delete mode 100644 assets/output/index.js.map create mode 100644 assets/output/index.map diff --git a/assets/css/tailwindcss/tailwind.config.js b/assets/css/tailwindcss/tailwind.config.js index 4a95e4f77..992d8742e 100755 --- a/assets/css/tailwindcss/tailwind.config.js +++ b/assets/css/tailwindcss/tailwind.config.js @@ -100,7 +100,8 @@ module.exports = { sm: "576px", md: "768px", lg: "992px", - xl: "1200px" + xl: "1200px", + xxl: "1440px" //BP }, fonts: { diff --git a/assets/index.js b/assets/index.js index 3a8e5e671..1d2757c50 100755 --- a/assets/index.js +++ b/assets/index.js @@ -1,5 +1,3 @@ - - // To use https://github.com/KyleAMathews/typefaces import "typeface-nunito"; import "./css/styles.css"; diff --git a/assets/js/app/filters.vue b/assets/js/app/filters.vue index c030238c6..51512f80a 100644 --- a/assets/js/app/filters.vue +++ b/assets/js/app/filters.vue @@ -32,7 +32,7 @@ -
+
diff --git a/assets/output/index.css b/assets/output/index.css index 39d2408b6..ef9dcf517 100644 --- a/assets/output/index.css +++ b/assets/output/index.css @@ -1,2 +1 @@ -@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:200;src:local("Nunito Extra Light "),local("Nunito-Extra Light"),url(../../thenewdynamic.org/nunito-latin-200.615f4de2.woff2) format("woff2"),url(../../thenewdynamic.org/nunito-latin-200.82097bc3.woff) format("woff")}@font-face{font-family:Nunito;font-style:italic;font-display:swap;font-weight:200;src:local("Nunito Extra Light italic"),local("Nunito-Extra Lightitalic"),url(../../thenewdynamic.org/nunito-latin-200italic.8a25c624.woff2) format("woff2"),url(../../thenewdynamic.org/nunito-latin-200italic.8aebfe0e.woff) format("woff")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:300;src:local("Nunito Light "),local("Nunito-Light"),url(../../thenewdynamic.org/nunito-latin-300.b6c509e5.woff2) format("woff2"),url(../../thenewdynamic.org/nunito-latin-300.e8176242.woff) format("woff")}@font-face{font-family:Nunito;font-style:italic;font-display:swap;font-weight:300;src:local("Nunito Light italic"),local("Nunito-Lightitalic"),url(../../thenewdynamic.org/nunito-latin-300italic.41be37d3.woff2) format("woff2"),url(../../thenewdynamic.org/nunito-latin-300italic.5bbb7cf1.woff) format("woff")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:400;src:local("Nunito Regular "),local("Nunito-Regular"),url(../../thenewdynamic.org/nunito-latin-400.623fdefa.woff2) format("woff2"),url(../../thenewdynamic.org/nunito-latin-400.3f364b04.woff) format("woff")}@font-face{font-family:Nunito;font-style:italic;font-display:swap;font-weight:400;src:local("Nunito Regular italic"),local("Nunito-Regularitalic"),url(../../thenewdynamic.org/nunito-latin-400italic.1f93943f.woff2) format("woff2"),url(../../thenewdynamic.org/nunito-latin-400italic.85a7e711.woff) format("woff")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:600;src:local("Nunito SemiBold "),local("Nunito-SemiBold"),url(../../thenewdynamic.org/nunito-latin-600.78717bb8.woff2) format("woff2"),url(../../thenewdynamic.org/nunito-latin-600.148761f7.woff) format("woff")}@font-face{font-family:Nunito;font-style:italic;font-display:swap;font-weight:600;src:local("Nunito SemiBold italic"),local("Nunito-SemiBolditalic"),url(../../thenewdynamic.org/nunito-latin-600italic.9d750f1e.woff2) format("woff2"),url(../../thenewdynamic.org/nunito-latin-600italic.0b51ad1f.woff) format("woff")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:700;src:local("Nunito Bold "),local("Nunito-Bold"),url(../../thenewdynamic.org/nunito-latin-700.8b5b16bd.woff2) format("woff2"),url(../../thenewdynamic.org/nunito-latin-700.2a023bed.woff) format("woff")}@font-face{font-family:Nunito;font-style:italic;font-display:swap;font-weight:700;src:local("Nunito Bold italic"),local("Nunito-Bolditalic"),url(../../thenewdynamic.org/nunito-latin-700italic.fe109190.woff2) format("woff2"),url(../../thenewdynamic.org/nunito-latin-700italic.de838a82.woff) format("woff")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:800;src:local("Nunito ExtraBold "),local("Nunito-ExtraBold"),url(../../thenewdynamic.org/nunito-latin-800.d4daf73e.woff2) format("woff2"),url(../../thenewdynamic.org/nunito-latin-800.27703b31.woff) format("woff")}@font-face{font-family:Nunito;font-style:italic;font-display:swap;font-weight:800;src:local("Nunito ExtraBold italic"),local("Nunito-ExtraBolditalic"),url(../../thenewdynamic.org/nunito-latin-800italic.7103caa6.woff2) format("woff2"),url(../../thenewdynamic.org/nunito-latin-800italic.daf286fe.woff) format("woff")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:900;src:local("Nunito Black "),local("Nunito-Black"),url(../../thenewdynamic.org/nunito-latin-900.3523eb02.woff2) format("woff2"),url(../../thenewdynamic.org/nunito-latin-900.cf9a7aed.woff) format("woff")}@font-face{font-family:Nunito;font-style:italic;font-display:swap;font-weight:900;src:local("Nunito Black italic"),local("Nunito-Blackitalic"),url(../../thenewdynamic.org/nunito-latin-900italic.3a527fcf.woff2) format("woff2"),url(../../thenewdynamic.org/nunito-latin-900italic.76e9e129.woff) format("woff")}@font-face{font-family:URW Franklin Gothic W01;src:url(../011200c5-40ca-4ab0-98e6-d675a122d5e0.b0262764.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}h1,h2,h3,h5{margin-top:1rem;margin-bottom:1rem}.color-inherit{color:inherit}p{margin-bottom:1rem}p a:active,p a:link,p a:visited{color:#1a76c1}p a:hover{color:#12283a}dt:after{content:": "}body{background-color:#f8fafc}p{font-family:Nunito,Avenir Next W00,Avenir Next,Avenir,system-ui,BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}h1,h2,h3,h5{font-family:URW Franklin Gothic W01,URW Franklin Gothic,system-ui,BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}h1{font-size:2.25rem}h2{font-size:1.875rem}h3{font-size:1.5rem}h5{font-size:.875rem}p{margin-bottom:1.5rem}button{border-width:1px;border-color:#dae1e7;font-size:.875rem;display:inline-block;margin-bottom:.75rem;margin-right:.75rem;padding:.5rem .75rem;border-radius:.125rem}button:hover{background-color:#3d4852;color:#fff}.page-list_default,.page-single_default{max-width:30rem}@media (min-width:992px){.page-list_default{max-width:100rem}.page-single_default{max-width:60rem}}.nested ul{margin-bottom:8rem}.nested li{color:#3d4852}.nested p{margin-bottom:1rem;line-height:1.5}.nested a{color:#b50938}.nested h2{margin-top:1.5rem;margin-bottom:1rem;font-size:1.25rem}@media (min-width:576px){.nested h2{margin-top:1.5rem;margin-bottom:1rem;font-size:1.875rem}}.nested h3{margin-bottom:1.25rem;margin-top:1.5rem}.nested ul{margin-top:2rem;margin-bottom:2rem}.nested li{margin-bottom:.5rem}.facebook,.instagram,.meetup,.slack,.twitter,.youtube{color:#bababa}.facebook:hover{color:#3b5998}.twitter:hover{color:#55acee}.instagram:hover,.slack:hover{color:#e95950}.meetup:hover,.youtube:hover{color:#b00}.transition{transition:all .35s ease}.tnd-Nav__item{font-family:Nunito,Avenir Next W00,Avenir Next,Avenir,system-ui,BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.tnd-Nav__item a{width:100%;display:block;color:#3d4852;text-decoration:none;text-align:left;line-height:1.25;padding:.25rem 1rem;font-size:.875rem}.tnd-Nav__item a:hover{background-color:#b8c2cc;color:#f1f5f8;text-decoration:underline}.tnd-Nav__item--active a{background-color:#dae1e7;color:#3d4852}@media (min-width:1200px){.tnd-Nav__item a{font-size:1rem;padding:.5rem 1.5rem}}#expandable-nav-side .tnd-Nav__item a{color:#f8fafc}input[type=checkbox]#expandable-nav-side-input{display:none}#expandable-nav-side{transform:translateX(-256px)}#expandable-nav-side-input:checked+#expandable-nav-side{transform:translateX(0)}.toggle-item--menu{position:absolute;top:50px;left:1px;border:0;background-color:transparent;box-shadow:none;border-radius:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:40px;height:40px;display:block;padding:0}@media (min-width:576px){.toggle-item--menu{top:190px;left:10px}}.toggle-item--menu:focus{outline:0}.toggle-item--menu:focus,.toggle-item--menu:hover{cursor:pointer}.toggle-menu-inner{width:40px;height:40px;outline:0}.toggle-item:focus .toggle-menu-inner{outline:1px dotted #f9f9f9;outline:5px auto -webkit-focus-ring-color}.toggle-item--menu .toggle-item__icon{top:50%;left:10px;margin-top:-1px;width:20px}.toggle-item--menu .toggle-item__icon,.toggle-item--menu .toggle-item__icon:after,.toggle-item--menu .toggle-item__icon:before{position:absolute;transition:all .4s cubic-bezier(.215,.61,.355,1);height:3px;background-color:#dae1e7}.toggle-item--menu .toggle-item__icon:after,.toggle-item--menu .toggle-item__icon:before{content:" ";display:block}.toggle-item--menu .toggle-item__icon:before{top:-6px;left:0;width:13px}.toggle-item--menu .toggle-item__icon:after{top:6px;left:0;width:17px}.js-site-menu-open .toggle-item--menu .toggle-item__icon{background-color:transparent}.js-site-menu-open .toggle-item--menu .toggle-item__icon:before{left:2px;top:-7px;transform:rotate(45deg);transform-origin:0 100%;width:20px}.js-site-menu-open .toggle-item--menu .toggle-item__icon:after{left:2px;top:8px;transform:rotate(-45deg);transform-origin:0 0;width:20px}.toggle-item--menu:hover .toggle-item__icon,.toggle-item--menu:hover .toggle-item__icon:after,.toggle-item--menu:hover .toggle-item__icon:before{width:20px;background-color:#fff}.toggle-item--menu:hover .toggle-item__icon{background-color:#fff}.js-site-menu-open .toggle-item--menu:hover .toggle-item__icon{background-color:transparent}.toggle-item__text{display:none}.pagination{margin:.75rem 0}.pagination li{display:inline-block;font-size:.75rem;margin-bottom:2rem;margin-right:.25rem;font-family:Nunito,Avenir Next W00,Avenir Next,Avenir,system-ui,BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.pagination li a{text-decoration:none;border-radius:.25rem;color:#8795a1;border-width:1px;background-color:#fff;padding:.25rem .75rem}.pagination li a:hover{background-color:#b8c2cc}.pagination li.disabled{display:none}.pagination li.active a:active,.pagination li.active a:link,.pagination li.active a:visited{background-color:#dae1e7}/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}b,strong{font-weight:bolder}code{font-family:monospace,monospace;font-size:1em}img{border-style:none}button,input,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}[hidden],template{display:none}html{box-sizing:border-box;font-family:sans-serif}*,:after,:before{box-sizing:inherit}dd,dl,h1,h2,h3,h5,p,pre{margin:0}button{background:transparent;padding:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}ul{margin:0}*,:after,:before{border:0 solid #dae1e7}img{border-style:solid}textarea{resize:vertical}img{max-width:100%;height:auto}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:inherit;opacity:.5}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:inherit;opacity:.5}input::placeholder,textarea::placeholder{color:inherit;opacity:.5}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1.page-heading{font-size:2.25rem}.bundler-task-runner{background-color:#27241d;color:#f8fafc}.content-management{background-color:#aba194;color:#f8fafc}.helper{background-color:#aa7942;color:#f8fafc}.hosting-deployment{color:#f8fafc;background-color:#826754}.interaction{color:#f8fafc;background-color:#6d545d;color:#d6d6d6}.serverless{background-color:#6d545d;color:#f8fafc}.static-site-generator{background-color:#b50938;color:#f8fafc}.theme{background-color:#6d676e;color:#f8fafc}.list-reset{list-style:none;padding:0}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.bg-primary-color{background-color:#b50938}.bg-black{background-color:#22292f}.bg-grey-darkest{background-color:#3d4852}.bg-grey-dark{background-color:#8795a1}.bg-grey-lighter{background-color:#f1f5f8}.bg-white{background-color:#fff}.bg-blue{background-color:#3490dc}.hover\:bg-grey-light:hover{background-color:#dae1e7}.hover\:bg-blue-dark:hover{background-color:#2779bd}.border-grey-lighter{border-color:#f1f5f8}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.border-0{border-width:0}.border-2{border-width:2px}.border{border-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.block{display:block}.inline-block{display:inline-block}.table{display:table}.hidden{display:none}.flex{display:flex}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.content-center{align-content:center}.font-brand{font-family:URW Franklin Gothic W01,URW Franklin Gothic,system-ui,BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.font-sans{font-family:Nunito,Avenir Next W00,Avenir Next,Avenir,system-ui,BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.font-normal{font-weight:400}.font-semibold{font-weight:600}.font-bold{font-weight:700}.h-4{height:1rem}.h-16{height:4rem}.h-64{height:16rem}.h-full{height:100%}.leading-none{line-height:1}.leading-tight{line-height:1.25}.leading-normal{line-height:1.5}.m-0{margin:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-8{margin-top:2rem;margin-bottom:2rem}.my-16{margin-top:4rem;margin-bottom:4rem}.mx-auto{margin-left:auto;margin-right:auto}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.mt-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.mt-4{margin-top:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mb-6{margin-bottom:1.5rem}.mt-8{margin-top:2rem}.mr-8{margin-right:2rem}.mb-8{margin-bottom:2rem}.ml-10{margin-left:2.5rem}.mb-12{margin-bottom:3rem}.mt-16{margin-top:4rem}.mr-16{margin-right:4rem}.mb-16{margin-bottom:4rem}.max-w-md{max-width:40rem}.max-w-lg{max-width:50rem}.max-w-2xl{max-width:70rem}.max-w-5xl{max-width:100rem}.max-w-full{max-width:100%}.min-h-screen{min-height:100vh}.-mx-3{margin-left:-.75rem;margin-right:-.75rem}.-mt-4{margin-top:-1rem}.outline-none{outline:0}.overflow-hidden{overflow:hidden}.overflow-y-scroll{overflow-y:scroll}.p-0{padding:0}.p-3{padding:.75rem}.p-4{padding:1rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.px-8{padding-left:2rem;padding-right:2rem}.pt-1{padding-top:.25rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.pl-12{padding-left:3rem}.pt-32{padding-top:8rem}.pb-32{padding-bottom:8rem}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.pin{right:0;bottom:0;left:0}.pin,.pin-t{top:0}.pin-r{right:0}.pin-b{bottom:0}.pin-l{left:0}.shadow{box-shadow:0 2px 4px 0 rgba(0,0,0,.1)}.shadow-md{box-shadow:0 4px 8px 0 rgba(0,0,0,.12),0 2px 4px 0 rgba(0,0,0,.08)}.hover\:shadow-lg:hover{box-shadow:0 15px 30px 0 rgba(0,0,0,.11),0 5px 15px 0 rgba(0,0,0,.08)}.fill-current{fill:currentColor}.text-center{text-align:center}.text-primary-color{color:#b50938}.text-black{color:#22292f}.text-grey-darkest{color:#3d4852}.text-grey-darker{color:#606f7b}.text-grey-lighter{color:#f1f5f8}.text-white{color:#fff}.text-red{color:#e3342f}.text-purple-lighter{color:#d6bbfc}.hover\:text-primary-color:hover{color:#b50938}.hover\:text-grey-darker:hover{color:#606f7b}.hover\:text-white:hover{color:#fff}.hover\:text-red:hover{color:#e3342f}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.text-3xl{font-size:1.875rem}.italic{font-style:italic}.uppercase{text-transform:uppercase}.no-underline{text-decoration:none}.tracking-wide{letter-spacing:.05em}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.w-10{width:2.5rem}.w-64{width:16rem}.w-full{width:100%}.z-10{z-index:10}.z-50{z-index:50}.aspect-ratio-16\/9{padding-top:56.25%}.grid-gap-4{grid-gap:1rem}.grid-gap-16{grid-gap:4rem}.grid-columns-2{grid-template-columns:repeat(2,1fr)}.grid-columns-3{grid-template-columns:repeat(3,1fr)}.grid-columns-8{grid-template-columns:repeat(8,1fr)}.grid-columns-12{grid-template-columns:repeat(12,1fr)}.col-span-1{grid-column-start:span 1}.col-span-2{grid-column-start:span 2}.col-span-3{grid-column-start:span 3}.col-span-6{grid-column-start:span 6}.col-span-8{grid-column-start:span 8}@media (min-width:576px){.sm\:block{display:block}.sm\:inline-block{display:inline-block}.sm\:hidden{display:none}.sm\:flex-row{flex-direction:row}.sm\:mb-16{margin-bottom:4rem}.sm\:ml-16{margin-left:4rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:px-16{padding-left:4rem;padding-right:4rem}.sm\:pt-32{padding-top:8rem}.sm\:text-lg{font-size:1.125rem}.sm\:text-xl{font-size:1.25rem}.sm\:w-16{width:4rem}.sm\:grid{display:grid}.sm\:col-span-3{grid-column-start:span 3}.sm\:col-span-9{grid-column-start:span 9}}@media (min-width:768px){.md\:mb-0{margin-bottom:0}.md\:max-w-xs{max-width:20rem}.md\:text-xl{font-size:1.25rem}.md\:text-4xl{font-size:2.25rem}.md\:w-5\/6{width:83.33333%}}@media (min-width:992px){.lg\:h-screen{height:100vh}.lg\:mt-0{margin-top:0}.lg\:min-h-screen{min-height:100vh}.lg\:overflow-scroll{overflow:scroll}.lg\:px-4{padding-left:1rem;padding-right:1rem}.lg\:pt-5{padding-top:1.25rem}.lg\:pt-12{padding-top:3rem}.lg\:grid-columns-2{grid-template-columns:repeat(2,1fr)}.lg\:grid-columns-3{grid-template-columns:repeat(3,1fr)}}@media (min-width:1200px){.xl\:p-16{padding:4rem}.xl\:text-3xl{font-size:1.875rem}.xl\:grid-columns-4{grid-template-columns:repeat(4,1fr)}.xl\:grid-columns-5{grid-template-columns:repeat(5,1fr)}.xl\:col-span-2{grid-column-start:span 2}.xl\:col-span-10{grid-column-start:span 10}}.to-load[data-v-2a1179]{min-height:70vh;opacity:.2;transition:opacity .3s}.to-load.done-loading[data-v-2a1179]{min-height:0;opacity:1} -/*# sourceMappingURL=/index.css.map */ \ No newline at end of file +@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:200;src:local("Nunito Extra Light "),local("Nunito-Extra Light"),url(nunito-latin-200.615f4de2.woff2) format("woff2"),url(nunito-latin-200.82097bc3.woff) format("woff")}@font-face{font-family:Nunito;font-style:italic;font-display:swap;font-weight:200;src:local("Nunito Extra Light italic"),local("Nunito-Extra Lightitalic"),url(nunito-latin-200italic.8a25c624.woff2) format("woff2"),url(nunito-latin-200italic.8aebfe0e.woff) format("woff")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:300;src:local("Nunito Light "),local("Nunito-Light"),url(nunito-latin-300.b6c509e5.woff2) format("woff2"),url(nunito-latin-300.e8176242.woff) format("woff")}@font-face{font-family:Nunito;font-style:italic;font-display:swap;font-weight:300;src:local("Nunito Light italic"),local("Nunito-Lightitalic"),url(nunito-latin-300italic.41be37d3.woff2) format("woff2"),url(nunito-latin-300italic.5bbb7cf1.woff) format("woff")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:400;src:local("Nunito Regular "),local("Nunito-Regular"),url(nunito-latin-400.623fdefa.woff2) format("woff2"),url(nunito-latin-400.3f364b04.woff) format("woff")}@font-face{font-family:Nunito;font-style:italic;font-display:swap;font-weight:400;src:local("Nunito Regular italic"),local("Nunito-Regularitalic"),url(nunito-latin-400italic.1f93943f.woff2) format("woff2"),url(nunito-latin-400italic.85a7e711.woff) format("woff")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:600;src:local("Nunito SemiBold "),local("Nunito-SemiBold"),url(nunito-latin-600.78717bb8.woff2) format("woff2"),url(nunito-latin-600.148761f7.woff) format("woff")}@font-face{font-family:Nunito;font-style:italic;font-display:swap;font-weight:600;src:local("Nunito SemiBold italic"),local("Nunito-SemiBolditalic"),url(nunito-latin-600italic.9d750f1e.woff2) format("woff2"),url(nunito-latin-600italic.0b51ad1f.woff) format("woff")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:700;src:local("Nunito Bold "),local("Nunito-Bold"),url(nunito-latin-700.8b5b16bd.woff2) format("woff2"),url(nunito-latin-700.2a023bed.woff) format("woff")}@font-face{font-family:Nunito;font-style:italic;font-display:swap;font-weight:700;src:local("Nunito Bold italic"),local("Nunito-Bolditalic"),url(nunito-latin-700italic.fe109190.woff2) format("woff2"),url(nunito-latin-700italic.de838a82.woff) format("woff")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:800;src:local("Nunito ExtraBold "),local("Nunito-ExtraBold"),url(nunito-latin-800.d4daf73e.woff2) format("woff2"),url(nunito-latin-800.27703b31.woff) format("woff")}@font-face{font-family:Nunito;font-style:italic;font-display:swap;font-weight:800;src:local("Nunito ExtraBold italic"),local("Nunito-ExtraBolditalic"),url(nunito-latin-800italic.7103caa6.woff2) format("woff2"),url(nunito-latin-800italic.daf286fe.woff) format("woff")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:900;src:local("Nunito Black "),local("Nunito-Black"),url(nunito-latin-900.3523eb02.woff2) format("woff2"),url(nunito-latin-900.cf9a7aed.woff) format("woff")}@font-face{font-family:Nunito;font-style:italic;font-display:swap;font-weight:900;src:local("Nunito Black italic"),local("Nunito-Blackitalic"),url(nunito-latin-900italic.3a527fcf.woff2) format("woff2"),url(nunito-latin-900italic.76e9e129.woff) format("woff")}@font-face{font-family:URW Franklin Gothic W01;src:url(011200c5-40ca-4ab0-98e6-d675a122d5e0.b0262764.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}h1,h2,h3,h5{margin-top:1rem;margin-bottom:1rem}.color-inherit{color:inherit}p{margin-bottom:1rem}p a:active,p a:link,p a:visited{color:#1a76c1}p a:hover{color:#12283a}dt:after{content:": "}body{background-color:#f8fafc}p{font-family:Nunito,Avenir Next W00,Avenir Next,Avenir,system-ui,BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}h1,h2,h3,h5{font-family:URW Franklin Gothic W01,URW Franklin Gothic,system-ui,BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}h1{font-size:2.25rem}h2{font-size:1.875rem}h3{font-size:1.5rem}h5{font-size:.875rem}p{margin-bottom:1.5rem}button{border-width:1px;border-color:#dae1e7;font-size:.875rem;display:inline-block;margin-bottom:.75rem;margin-right:.75rem;padding:.5rem .75rem;border-radius:.125rem}button:hover{background-color:#3d4852;color:#fff}.page-list_default,.page-single_default{max-width:30rem}@media (min-width:992px){.page-list_default{max-width:100rem}.page-single_default{max-width:60rem}}.nested ul{margin-bottom:8rem}.nested li{color:#3d4852}.nested p{margin-bottom:1rem;line-height:1.5}.nested a{color:#b50938}.nested h2{margin-top:1.5rem;margin-bottom:1rem;font-size:1.25rem}@media (min-width:576px){.nested h2{margin-top:1.5rem;margin-bottom:1rem;font-size:1.875rem}}.nested h3{margin-bottom:1.25rem;margin-top:1.5rem}.nested ul{margin-top:2rem;margin-bottom:2rem}.nested li{margin-bottom:.5rem}.facebook,.instagram,.meetup,.slack,.twitter,.youtube{color:#bababa}.facebook:hover{color:#3b5998}.twitter:hover{color:#55acee}.instagram:hover,.slack:hover{color:#e95950}.meetup:hover,.youtube:hover{color:#b00}.transition{transition:all .35s ease}.tnd-Nav__item{font-family:Nunito,Avenir Next W00,Avenir Next,Avenir,system-ui,BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.tnd-Nav__item a{width:100%;display:block;color:#3d4852;text-decoration:none;text-align:left;line-height:1.25;padding:.25rem 1rem;font-size:.875rem}.tnd-Nav__item a:hover{background-color:#b8c2cc;color:#f1f5f8;text-decoration:underline}.tnd-Nav__item--active a{background-color:#dae1e7;color:#3d4852}@media (min-width:1200px){.tnd-Nav__item a{font-size:1rem;padding:.5rem 1.5rem}}#expandable-nav-side .tnd-Nav__item a{color:#f8fafc}input[type=checkbox]#expandable-nav-side-input{display:none}#expandable-nav-side{transform:translateX(-256px)}#expandable-nav-side-input:checked+#expandable-nav-side{transform:translateX(0)}.toggle-item--menu{position:absolute;top:50px;left:1px;border:0;background-color:transparent;box-shadow:none;border-radius:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:40px;height:40px;display:block;padding:0}@media (min-width:576px){.toggle-item--menu{top:190px;left:10px}}.toggle-item--menu:focus{outline:0}.toggle-item--menu:focus,.toggle-item--menu:hover{cursor:pointer}.toggle-menu-inner{width:40px;height:40px;outline:0}.toggle-item:focus .toggle-menu-inner{outline:1px dotted #f9f9f9;outline:5px auto -webkit-focus-ring-color}.toggle-item--menu .toggle-item__icon{top:50%;left:10px;margin-top:-1px;width:20px}.toggle-item--menu .toggle-item__icon,.toggle-item--menu .toggle-item__icon:after,.toggle-item--menu .toggle-item__icon:before{position:absolute;transition:all .4s cubic-bezier(.215,.61,.355,1);height:3px;background-color:#dae1e7}.toggle-item--menu .toggle-item__icon:after,.toggle-item--menu .toggle-item__icon:before{content:" ";display:block}.toggle-item--menu .toggle-item__icon:before{top:-6px;left:0;width:13px}.toggle-item--menu .toggle-item__icon:after{top:6px;left:0;width:17px}.js-site-menu-open .toggle-item--menu .toggle-item__icon{background-color:transparent}.js-site-menu-open .toggle-item--menu .toggle-item__icon:before{left:2px;top:-7px;transform:rotate(45deg);transform-origin:0 100%;width:20px}.js-site-menu-open .toggle-item--menu .toggle-item__icon:after{left:2px;top:8px;transform:rotate(-45deg);transform-origin:0 0;width:20px}.toggle-item--menu:hover .toggle-item__icon,.toggle-item--menu:hover .toggle-item__icon:after,.toggle-item--menu:hover .toggle-item__icon:before{width:20px;background-color:#fff}.toggle-item--menu:hover .toggle-item__icon{background-color:#fff}.js-site-menu-open .toggle-item--menu:hover .toggle-item__icon{background-color:transparent}.toggle-item__text{display:none}.pagination{margin:.75rem 0}.pagination li{display:inline-block;font-size:.75rem;margin-bottom:2rem;margin-right:.25rem;font-family:Nunito,Avenir Next W00,Avenir Next,Avenir,system-ui,BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.pagination li a{text-decoration:none;border-radius:.25rem;color:#8795a1;border-width:1px;background-color:#fff;padding:.25rem .75rem}.pagination li a:hover{background-color:#b8c2cc}.pagination li.disabled{display:none}.pagination li.active a:active,.pagination li.active a:link,.pagination li.active a:visited{background-color:#dae1e7}/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}b,strong{font-weight:bolder}code{font-family:monospace,monospace;font-size:1em}img{border-style:none}button,input,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}[hidden],template{display:none}html{box-sizing:border-box;font-family:sans-serif}*,:after,:before{box-sizing:inherit}dd,dl,h1,h2,h3,h5,p,pre{margin:0}button{background:transparent;padding:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}ul{margin:0}*,:after,:before{border:0 solid #dae1e7}img{border-style:solid}textarea{resize:vertical}img{max-width:100%;height:auto}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:inherit;opacity:.5}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:inherit;opacity:.5}input::placeholder,textarea::placeholder{color:inherit;opacity:.5}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1.page-heading{font-size:2.25rem}.bundler-task-runner{background-color:#27241d;color:#f8fafc}.content-management{background-color:#aba194;color:#f8fafc}.helper{background-color:#aa7942;color:#f8fafc}.hosting-deployment{color:#f8fafc;background-color:#826754}.interaction{color:#f8fafc;background-color:#6d545d;color:#d6d6d6}.serverless{background-color:#6d545d;color:#f8fafc}.static-site-generator{background-color:#b50938;color:#f8fafc}.theme{background-color:#6d676e;color:#f8fafc}.list-reset{list-style:none;padding:0}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.bg-primary-color{background-color:#b50938}.bg-black{background-color:#22292f}.bg-grey-darkest{background-color:#3d4852}.bg-grey-dark{background-color:#8795a1}.bg-grey-lighter{background-color:#f1f5f8}.bg-white{background-color:#fff}.bg-blue{background-color:#3490dc}.hover\:bg-grey-light:hover{background-color:#dae1e7}.hover\:bg-blue-dark:hover{background-color:#2779bd}.border-grey-lighter{border-color:#f1f5f8}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.border-0{border-width:0}.border-2{border-width:2px}.border{border-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.block{display:block}.inline-block{display:inline-block}.table{display:table}.hidden{display:none}.flex{display:flex}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.content-center{align-content:center}.font-brand{font-family:URW Franklin Gothic W01,URW Franklin Gothic,system-ui,BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.font-sans{font-family:Nunito,Avenir Next W00,Avenir Next,Avenir,system-ui,BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.font-normal{font-weight:400}.font-semibold{font-weight:600}.font-bold{font-weight:700}.h-4{height:1rem}.h-64{height:16rem}.h-full{height:100%}.leading-none{line-height:1}.leading-tight{line-height:1.25}.leading-normal{line-height:1.5}.m-0{margin:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-8{margin-top:2rem;margin-bottom:2rem}.my-16{margin-top:4rem;margin-bottom:4rem}.mx-auto{margin-left:auto;margin-right:auto}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.mt-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.mt-4{margin-top:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mb-6{margin-bottom:1.5rem}.mt-8{margin-top:2rem}.mr-8{margin-right:2rem}.mb-8{margin-bottom:2rem}.ml-10{margin-left:2.5rem}.mb-12{margin-bottom:3rem}.mt-16{margin-top:4rem}.mr-16{margin-right:4rem}.mb-16{margin-bottom:4rem}.max-w-md{max-width:40rem}.max-w-lg{max-width:50rem}.max-w-2xl{max-width:70rem}.max-w-5xl{max-width:100rem}.max-w-full{max-width:100%}.min-h-screen{min-height:100vh}.-mx-3{margin-left:-.75rem;margin-right:-.75rem}.-mt-4{margin-top:-1rem}.outline-none{outline:0}.overflow-hidden{overflow:hidden}.overflow-y-scroll{overflow-y:scroll}.p-0{padding:0}.p-3{padding:.75rem}.p-4{padding:1rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.px-8{padding-left:2rem;padding-right:2rem}.pt-1{padding-top:.25rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.pl-8{padding-left:2rem}.pl-12{padding-left:3rem}.pt-32{padding-top:8rem}.pb-32{padding-bottom:8rem}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.pin{right:0;bottom:0;left:0}.pin,.pin-t{top:0}.pin-r{right:0}.pin-b{bottom:0}.pin-l{left:0}.shadow{box-shadow:0 2px 4px 0 rgba(0,0,0,.1)}.shadow-md{box-shadow:0 4px 8px 0 rgba(0,0,0,.12),0 2px 4px 0 rgba(0,0,0,.08)}.hover\:shadow-lg:hover{box-shadow:0 15px 30px 0 rgba(0,0,0,.11),0 5px 15px 0 rgba(0,0,0,.08)}.fill-current{fill:currentColor}.text-center{text-align:center}.text-primary-color{color:#b50938}.text-black{color:#22292f}.text-grey-darkest{color:#3d4852}.text-grey-darker{color:#606f7b}.text-grey-lighter{color:#f1f5f8}.text-white{color:#fff}.text-red{color:#e3342f}.text-purple-lighter{color:#d6bbfc}.hover\:text-primary-color:hover{color:#b50938}.hover\:text-grey-darker:hover{color:#606f7b}.hover\:text-white:hover{color:#fff}.hover\:text-red:hover{color:#e3342f}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.text-3xl{font-size:1.875rem}.text-4xl{font-size:2.25rem}.italic{font-style:italic}.uppercase{text-transform:uppercase}.no-underline{text-decoration:none}.tracking-normal{letter-spacing:0}.tracking-wide{letter-spacing:.05em}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.w-10{width:2.5rem}.w-64{width:16rem}.w-full{width:100%}.z-10{z-index:10}.z-50{z-index:50}.aspect-ratio-16\/9{padding-top:56.25%}.grid-gap-4{grid-gap:1rem}.grid-gap-16{grid-gap:4rem}.grid-columns-2{grid-template-columns:repeat(2,1fr)}.grid-columns-3{grid-template-columns:repeat(3,1fr)}.grid-columns-8{grid-template-columns:repeat(8,1fr)}.grid-columns-12{grid-template-columns:repeat(12,1fr)}.col-span-1{grid-column-start:span 1}.col-span-2{grid-column-start:span 2}.col-span-3{grid-column-start:span 3}.col-span-6{grid-column-start:span 6}.col-span-8{grid-column-start:span 8}@media (min-width:576px){.sm\:block{display:block}.sm\:inline-block{display:inline-block}.sm\:hidden{display:none}.sm\:flex-row{flex-direction:row}.sm\:mb-16{margin-bottom:4rem}.sm\:ml-16{margin-left:4rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:px-16{padding-left:4rem;padding-right:4rem}.sm\:pl-4{padding-left:1rem}.sm\:pt-32{padding-top:8rem}.sm\:text-lg{font-size:1.125rem}.sm\:text-xl{font-size:1.25rem}.sm\:w-16{width:4rem}.sm\:grid{display:grid}.sm\:col-span-3{grid-column-start:span 3}.sm\:col-span-9{grid-column-start:span 9}}@media (min-width:768px){.md\:mb-0{margin-bottom:0}.md\:max-w-xs{max-width:20rem}.md\:text-xl{font-size:1.25rem}.md\:text-4xl{font-size:2.25rem}.md\:w-5\/6{width:83.33333%}}@media (min-width:992px){.lg\:h-screen{height:100vh}.lg\:mt-0{margin-top:0}.lg\:min-h-screen{min-height:100vh}.lg\:overflow-scroll{overflow:scroll}.lg\:px-4{padding-left:1rem;padding-right:1rem}.lg\:pt-5{padding-top:1.25rem}.lg\:pt-12{padding-top:3rem}.lg\:grid-columns-2{grid-template-columns:repeat(2,1fr)}.lg\:grid-columns-3{grid-template-columns:repeat(3,1fr)}}@media (min-width:1200px){.xl\:p-16{padding:4rem}.xl\:text-3xl{font-size:1.875rem}.xl\:grid-columns-4{grid-template-columns:repeat(4,1fr)}.xl\:grid-columns-5{grid-template-columns:repeat(5,1fr)}.xl\:col-span-2{grid-column-start:span 2}.xl\:col-span-10{grid-column-start:span 10}}.to-load[data-v-2a1179]{min-height:70vh;opacity:.2;transition:opacity .3s}.to-load.done-loading[data-v-2a1179]{min-height:0;opacity:1} \ No newline at end of file diff --git a/assets/output/index.css.map b/assets/output/index.css.map deleted file mode 100644 index a1e1b8278..000000000 --- a/assets/output/index.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["index.css","fonts.css","_utilities.css","","_user-content.css","_social-icons-inverse.css","_transitions.css","_menu.css","_menu-button.css","_hugo-internal-templates.css","styles.css"],"names":[],"mappings":"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","file":"index.css","sourceRoot":"..","sourcesContent":["/* nunito-200normal - latin */\n@font-face {\n font-family: 'Nunito';\n font-style: normal;\n font-display: swap;\n font-weight: 200;\n src:\n local('Nunito Extra Light '),\n local('Nunito-Extra Light'),\n url('./files/nunito-latin-200.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/nunito-latin-200.woff') format('woff'); /* Modern Browsers */\n}\n\n/* nunito-200italic - latin */\n@font-face {\n font-family: 'Nunito';\n font-style: italic;\n font-display: swap;\n font-weight: 200;\n src:\n local('Nunito Extra Light italic'),\n local('Nunito-Extra Lightitalic'),\n url('./files/nunito-latin-200italic.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/nunito-latin-200italic.woff') format('woff'); /* Modern Browsers */\n}\n\n/* nunito-300normal - latin */\n@font-face {\n font-family: 'Nunito';\n font-style: normal;\n font-display: swap;\n font-weight: 300;\n src:\n local('Nunito Light '),\n local('Nunito-Light'),\n url('./files/nunito-latin-300.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/nunito-latin-300.woff') format('woff'); /* Modern Browsers */\n}\n\n/* nunito-300italic - latin */\n@font-face {\n font-family: 'Nunito';\n font-style: italic;\n font-display: swap;\n font-weight: 300;\n src:\n local('Nunito Light italic'),\n local('Nunito-Lightitalic'),\n url('./files/nunito-latin-300italic.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/nunito-latin-300italic.woff') format('woff'); /* Modern Browsers */\n}\n\n/* nunito-400normal - latin */\n@font-face {\n font-family: 'Nunito';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src:\n local('Nunito Regular '),\n local('Nunito-Regular'),\n url('./files/nunito-latin-400.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/nunito-latin-400.woff') format('woff'); /* Modern Browsers */\n}\n\n/* nunito-400italic - latin */\n@font-face {\n font-family: 'Nunito';\n font-style: italic;\n font-display: swap;\n font-weight: 400;\n src:\n local('Nunito Regular italic'),\n local('Nunito-Regularitalic'),\n url('./files/nunito-latin-400italic.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/nunito-latin-400italic.woff') format('woff'); /* Modern Browsers */\n}\n\n/* nunito-600normal - latin */\n@font-face {\n font-family: 'Nunito';\n font-style: normal;\n font-display: swap;\n font-weight: 600;\n src:\n local('Nunito SemiBold '),\n local('Nunito-SemiBold'),\n url('./files/nunito-latin-600.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/nunito-latin-600.woff') format('woff'); /* Modern Browsers */\n}\n\n/* nunito-600italic - latin */\n@font-face {\n font-family: 'Nunito';\n font-style: italic;\n font-display: swap;\n font-weight: 600;\n src:\n local('Nunito SemiBold italic'),\n local('Nunito-SemiBolditalic'),\n url('./files/nunito-latin-600italic.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/nunito-latin-600italic.woff') format('woff'); /* Modern Browsers */\n}\n\n/* nunito-700normal - latin */\n@font-face {\n font-family: 'Nunito';\n font-style: normal;\n font-display: swap;\n font-weight: 700;\n src:\n local('Nunito Bold '),\n local('Nunito-Bold'),\n url('./files/nunito-latin-700.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/nunito-latin-700.woff') format('woff'); /* Modern Browsers */\n}\n\n/* nunito-700italic - latin */\n@font-face {\n font-family: 'Nunito';\n font-style: italic;\n font-display: swap;\n font-weight: 700;\n src:\n local('Nunito Bold italic'),\n local('Nunito-Bolditalic'),\n url('./files/nunito-latin-700italic.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/nunito-latin-700italic.woff') format('woff'); /* Modern Browsers */\n}\n\n/* nunito-800normal - latin */\n@font-face {\n font-family: 'Nunito';\n font-style: normal;\n font-display: swap;\n font-weight: 800;\n src:\n local('Nunito ExtraBold '),\n local('Nunito-ExtraBold'),\n url('./files/nunito-latin-800.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/nunito-latin-800.woff') format('woff'); /* Modern Browsers */\n}\n\n/* nunito-800italic - latin */\n@font-face {\n font-family: 'Nunito';\n font-style: italic;\n font-display: swap;\n font-weight: 800;\n src:\n local('Nunito ExtraBold italic'),\n local('Nunito-ExtraBolditalic'),\n url('./files/nunito-latin-800italic.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/nunito-latin-800italic.woff') format('woff'); /* Modern Browsers */\n}\n\n/* nunito-900normal - latin */\n@font-face {\n font-family: 'Nunito';\n font-style: normal;\n font-display: swap;\n font-weight: 900;\n src:\n local('Nunito Black '),\n local('Nunito-Black'),\n url('./files/nunito-latin-900.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/nunito-latin-900.woff') format('woff'); /* Modern Browsers */\n}\n\n/* nunito-900italic - latin */\n@font-face {\n font-family: 'Nunito';\n font-style: italic;\n font-display: swap;\n font-weight: 900;\n src:\n local('Nunito Black italic'),\n local('Nunito-Blackitalic'),\n url('./files/nunito-latin-900italic.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/nunito-latin-900italic.woff') format('woff'); /* Modern Browsers */\n}\n\n","@font-face{\n font-family:\"URW Franklin Gothic W01\";\n src:url(\"/fonts/011200c5-40ca-4ab0-98e6-d675a122d5e0.woff2\") format(\"woff2\");\n font-weight: 700;\n font-style: normal;\n font-display: swap;\n}","h1,\nh2,\nh3,\nh4,\nh5 {\n\t@apply .my-4;\n}\n\nhtml.no-js .js-only {\n\tvisibility: hidden;\n}\nhtml.js .js-only {\n\tvisibility: visible;\n}\n\n.bg-inherit {\n\tbackground-color: inherit;\n}\n.color-inherit {\n\tcolor: inherit;\n}\n\np {\n\t@apply .mb-4;\n}\np a:link,\np a:active,\np a:visited {\n\t/* This blue has a 4.77 contrast ratio on white 4.56 on near-white */\n\tcolor: #1a76c1;\n}\np a:hover {\n\tcolor: #12283a;\n}\n\nhr {\n\t@apply .py-4;\n}\n\ndt::after {\n\tcontent: \": \";\n}\n\n.btn {\n\t@apply .font-bold .py-2 .px-4 .rounded .no-underline .border .inline-block .mb-2;\n}\n\nbody {\n\t@apply .bg-grey-lightest;\n}\np {\n\t@apply font-sans;\n}\nh1,\nh2,\nh3,\nh4,\nh5 {\n\t@apply .font-brand;\n}\n\nh1 {\n\t@apply text-4xl;\n}\nh2 {\n\t@apply text-3xl;\n}\nh3 {\n\t@apply text-2xl;\n}\nh4 {\n\t@apply text-base;\n}\nh5 {\n\t@apply text-sm;\n}\nh6 {\n\t@apply text-xs;\n}\n\nblockquote {\n\t@apply pl-4 border-l-4 border-grey-light;\n}\n/*\n .text-xs\tfont-size: .75rem;\n .text-sm\tfont-size: .875rem;\n .text-base\tfont-size: 1rem;\n .text-lg\tfont-size: 1.125rem;\n .text-xl\tfont-size: 1.25rem;\n .text-2xl\tfont-size: 1.5rem;\n .text-3xl\tfont-size: 1.875rem;\n .text-4xl\tfont-size: 2.25rem;\n .text-5xl\tfont-size: 3rem;\n */\np {\n\tmargin-bottom: 1.5rem;\n}\n\n.nice-outline {\n\toutline: none;\n\ttext-decoration: underline;\n}\n\n.button_c,\nbutton {\n\t@apply border border-grey-light text-sm inline-block mb-3 mr-3 px-3 py-2 rounded-sm;\n}\n\n.button_c:hover,\nbutton:hover {\n\t@apply bg-grey-darkest text-white;\n}\n.list-item {\n\t@apply .inline-block;\n}\n\n/*\n PAGES .\n */\n.page-list_default {\n\t@apply max-w-sm;\n}\n.page-single_default {\n\t@apply max-w-sm;\n}\n\n\n@screen lg {\n\t.page-list_default {\n\t\t@apply max-w-5xl;\n\t}\n\t.page-single_default {\n\t\t@apply max-w-xl;\n\t}\n\t\n}",null,".nested ul {\n\t@apply mb-32;\n}\n.nested li {\n\t@apply mb-2 text-grey-darkest;\n}\n\n.nested p,\nfigure {\n\t@apply mb-4 leading-normal;\n}\n.nested a {\n\t@apply text-primary-color;\n}\n\n.nested hr {\n\t@apply border-grey my-16;\n}\n.nested h2 {\n\t@apply mt-6 mb-4 text-xl;\n}\n\n@screen sm {\n\t.nested h2 {\n\t\t@apply mt-6 mb-4 text-3xl;\n\t}\n}\n.nested h3 {\n\t@apply mb-5 mt-6;\n}\n.nested h4 {\n\t@apply mb-2 mt-5;\n}\n.nested ul,\n.nested ol {\n\t@apply my-8;\n}\n.nested li {\n\t@apply mb-2;\n}\n.nested blockquote {\n\t@apply border-l-2 pl-4;\n}\n",".facebook, .twitter, .instagram, .youtube, .meetup, .slack {\n color: #BABABA;\n}\n.facebook:hover {\n color: #3b5998;\n}\n\n.twitter:hover {\n color: #55acee;\n}\n\n.instagram:hover, .slack:hover {\n color: #e95950;\n}\n\n.youtube:hover, .meetup:hover {\n color: #bb0000;\n}\n",".transition {\n transition: all 0.35s ease;\n}\n.transition-ease-2 {\n transition: .20s ease\n}\n.transition-ease-25 {\n transition: .25s ease\n}\n.transition-ease-3 {\n transition: .3s ease\n}\n.perspective-3000 {\n perspective: 3000px\n}\n.transform-preserve3d {\n transform-style: preserve3d;\n}\n\n.link-transition {\n opacity: .7\n}\n.link-transition:hover {\nopacity: 1;\n transition: .6s;\n}\n","/* nav[aria-label=\"main\"] {\n \n} */\n/* purgecss start ignore */\n.tnd-Nav__item {\n @apply font-sans;\n}\n\n\n.tnd-Nav__item a {\n @apply w-full px-4 block text-grey-darkest no-underline text-left leading-tight py-1 text-sm;\n}\n\n.tnd-Nav__item a:hover {\n @apply bg-grey text-grey-lighter underline;\n}\n\n.tnd-Nav__item--active a{\n @apply bg-grey-light text-grey-darkest;\n}\n\n@screen xl {\n .tnd-Nav__item a {\n @apply text-base py-2 px-6;\n }\n \n}\n#expandable-nav-side .tnd-Nav__item a {\n @apply text-grey-lightest;\n}\n\ninput[type=checkbox]#expandable-nav-side-input {\n display: none;\n}\n#expandable-nav-side {\n transform: translateX(-256px)\n}\n\n#expandable-nav-side-input:checked + #expandable-nav-side {\n transform: translateX(0)\n}\n/* purgecss end ignore */",".toggle-item--menu {\n position: absolute;\n top: 50px;\n left: 1px;\n border: 0;\n background-color: transparent;\n box-shadow: none;\n border-radius: 0; \n appearance: none;\n width: 40px;\n height: 40px;\n display: block;\n padding: 0\n}\n\n@screen sm {\n .toggle-item--menu {\n top: 190px;\n left: 10px;\n }\n \n\n}\n.toggle-item--menu:focus {\n outline: 0\n}\n\n/* @media (min-width: 768px) {\n .toggle-item--menu {\n left:2px\n }\n}\n\n@media (min-width: 1070px) {\n .toggle-item--menu {\n top:35px;\n left: 10px\n }\n} */\n\n.toggle-item--menu:focus,.toggle-item--menu:hover {\n cursor: pointer\n}\n\n.toggle-menu-inner,.toggle-search-inner {\n width: 40px;\n height: 40px;\n outline: 0;\n \n}\n\n.toggle-item:focus .toggle-menu-inner,.toggle-item:focus .toggle-search-inner {\n outline: 1px dotted #f9f9f9;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\n.toggle-item--menu .toggle-item__icon {\n top: 50%;\n left: 10px;\n margin-top: -1px;\n width: 20px;\n}\n\n.toggle-item--menu .toggle-item__icon,.toggle-item--menu .toggle-item__icon:after,.toggle-item--menu .toggle-item__icon:before {\n position: absolute;\n transition: all .4s cubic-bezier(.215,.61,.355,1);\n \n height: 3px;\n @apply bg-grey-light;\n}\n\n.toggle-item--menu .toggle-item__icon:after,.toggle-item--menu .toggle-item__icon:before {\n content: \" \";\n display: block;\n}\n\n.toggle-item--menu .toggle-item__icon:before {\n top: -6px;\n left: 0;\n width: 13px;\n}\n\n.toggle-item--menu .toggle-item__icon:after {\n top: 6px;\n left: 0;\n width: 17px;\n}\n\n.js-site-menu-open .toggle-item--menu .toggle-item__icon {\n background-color: transparent;\n}\n\n.js-site-menu-open .toggle-item--menu .toggle-item__icon:before {\n left: 2px;\n top: -7px; \n transform: rotate(45deg); \n transform-origin: 0 100%;\n width: 20px;\n}\n\n.js-site-menu-open .toggle-item--menu .toggle-item__icon:after {\n left: 2px;\n top: 8px;\n transform: rotate(-45deg);\n transform-origin: 0 0;\n width: 20px;\n}\n\n.toggle-item--menu:hover .toggle-item__icon,.toggle-item--menu:hover .toggle-item__icon:after,.toggle-item--menu:hover .toggle-item__icon:before {\n /* background-color: #000; */\n width: 20px;\n @apply bg-white;\n}\n\n.toggle-item--menu:hover .toggle-item__icon {\n /* background-color: #000; */\n @apply bg-white;\n}\n\n.js-site-menu-open .toggle-item--menu:hover .toggle-item__icon {\n background-color: transparent;\n}\n\n.toggle-item__text {\n display: none;\n}\n","/* pagination.html: https://github.com/spf13/hugo/blob/master/tpl/tplimpl/template_embedded.go#L117 */\n\n/* purgecss start ignore */\n.pagination {\n @apply my-3 mx-0;\n}\n.pagination li {\n\n @apply inline-block text-xs mb-8 mr-1 font-sans;\n}\n.pagination li a {\n @apply no-underline rounded text-grey-dark border bg-white py-1 px-3;\n}\n.pagination li a:hover {\n @apply bg-grey;\n}\n.pagination li.disabled {\n @apply hidden;\n}\n.pagination li.active a:link,\n.pagination li.active a:active,\n.pagination li.active a:visited {\n @apply bg-grey-light;\n}\n/* purgecss end ignore */","/* Base - Variables: tailwind-config.js */\n/*\nTo use Tailwind with ParcelJS, call the Tailwind files like this. Otherwise, use imports\n\n*/\n@tailwind preflight;\n@tailwind components;\n\n@import \"./fonts\";\n/* Modules */\n@import \"./tailwindcss/modules/_cards\";\n\n\n@import \"./tailwindcss/modules/_utilities\";\n@import \"./tailwindcss/modules/_user-content\";\n@import \"./tailwindcss/modules/_social-icons-inverse\";\n@import \"./tailwindcss/modules/_transitions\";\n@import \"./tailwindcss/modules/_menu\";\n@import \"./tailwindcss/modules/_menu-button\";\n@import \"./tailwindcss/modules/_hugo-internal-templates\";\n\n/* @tailwind utilities; */\n\n\n\n/* USE PURGE CSS ON ABOVE CODE ONLY. ANYTHING BETWEEN THE IGNORE TAGS BELOW WILL NOT BE IGNORED\nhttps://www.purgecss.com/whitelisting#in-the-css-directly */\n\n/* purgecss start ignore */\nh1.page-heading {\n @apply text-4xl;\n}\n\n.bundler-task-runner {\n /* @apply bg-primary-color text-grey-lighter; */\n background-color: #27241D;\n @apply text-grey-lightest;\n}\n.content-management {\n /* @apply bg-primary-color text-grey-lighter; */\n background-color: #ABA194;\n @apply text-grey-lightest;\n}\n.helper {\n /* @apply bg-primary-color text-grey-lighter; */\n background-color: #aa7942;\n @apply text-grey-lightest;\n}\n.hosting-deployment {\n @apply text-grey-lightest;\n background-color: #826754;\n \n}\n.interaction {\n @apply text-grey-lightest;\n background-color: #6D545D;\n color: #d6d6d6;\n}\n.serverless {\n /* @apply bg-primary-color text-grey-lighter; */\n background-color: #6D545D;\n @apply text-grey-lightest;\n}\n.static-site-generator {\n @apply bg-primary-color text-grey-lightest;\n}\n.theme {\n /* @apply bg-primary-color text-grey-lighter; */\n background-color: #6D676E;\n @apply text-grey-lightest;\n}\n/* purgecss end ignore */\n@tailwind utilities; \n"]} \ No newline at end of file diff --git a/assets/output/index.js b/assets/output/index.js index 4ee664fca..dd991e131 100644 --- a/assets/output/index.js +++ b/assets/output/index.js @@ -1,4 +1,4 @@ -parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c 0;\n }\n });\n }\n return;\n}\n\n\n/**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observing a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\nvar registry = [];\n\n\n/**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\nfunction IntersectionObserverEntry(entry) {\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = entry.rootBounds;\n this.boundingClientRect = entry.boundingClientRect;\n this.intersectionRect = entry.intersectionRect || getEmptyRect();\n this.isIntersecting = !!entry.intersectionRect;\n\n // Calculates the intersection ratio.\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height;\n\n // Sets intersection ratio.\n if (targetArea) {\n // Round the intersection ratio to avoid floating point math issues:\n // https://github.com/w3c/IntersectionObserver/issues/324\n this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));\n } else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n}\n\n\n/**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\nfunction IntersectionObserver(callback, opt_options) {\n\n var options = opt_options || {};\n\n if (typeof callback != 'function') {\n throw new Error('callback must be a function');\n }\n\n if (options.root && options.root.nodeType != 1) {\n throw new Error('root must be an Element');\n }\n\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(\n this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function(margin) {\n return margin.value + margin.unit;\n }).join(' ');\n}\n\n\n/**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\nIntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n\n\n/**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\nIntersectionObserver.prototype.POLL_INTERVAL = null;\n\n/**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\nIntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n\n\n/**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.observe = function(target) {\n var isTargetAlreadyObserved = this._observationTargets.some(function(item) {\n return item.element == target;\n });\n\n if (isTargetAlreadyObserved) {\n return;\n }\n\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n\n this._registerInstance();\n this._observationTargets.push({element: target, entry: null});\n this._monitorIntersections();\n this._checkForIntersections();\n};\n\n\n/**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.unobserve = function(target) {\n this._observationTargets =\n this._observationTargets.filter(function(item) {\n\n return item.element != target;\n });\n if (!this._observationTargets.length) {\n this._unmonitorIntersections();\n this._unregisterInstance();\n }\n};\n\n\n/**\n * Stops observing all target elements for intersection changes.\n */\nIntersectionObserver.prototype.disconnect = function() {\n this._observationTargets = [];\n this._unmonitorIntersections();\n this._unregisterInstance();\n};\n\n\n/**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\nIntersectionObserver.prototype.takeRecords = function() {\n var records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n};\n\n\n/**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\nIntersectionObserver.prototype._initThresholds = function(opt_threshold) {\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\n\n return threshold.sort().filter(function(t, i, a) {\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n return t !== a[i - 1];\n });\n};\n\n\n/**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array} An array of margin objects with the keys\n * value and unit.\n */\nIntersectionObserver.prototype._parseRootMargin = function(opt_rootMargin) {\n var marginString = opt_rootMargin || '0px';\n var margins = marginString.split(/\\s+/).map(function(margin) {\n var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n return {value: parseFloat(parts[1]), unit: parts[2]};\n });\n\n // Handles shorthand.\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n\n return margins;\n};\n\n\n/**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibility state is visible.\n * @private\n */\nIntersectionObserver.prototype._monitorIntersections = function() {\n if (!this._monitoringIntersections) {\n this._monitoringIntersections = true;\n\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n this._monitoringInterval = setInterval(\n this._checkForIntersections, this.POLL_INTERVAL);\n }\n else {\n addEvent(window, 'resize', this._checkForIntersections, true);\n addEvent(document, 'scroll', this._checkForIntersections, true);\n\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in window) {\n this._domObserver = new MutationObserver(this._checkForIntersections);\n this._domObserver.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @private\n */\nIntersectionObserver.prototype._unmonitorIntersections = function() {\n if (this._monitoringIntersections) {\n this._monitoringIntersections = false;\n\n clearInterval(this._monitoringInterval);\n this._monitoringInterval = null;\n\n removeEvent(window, 'resize', this._checkForIntersections, true);\n removeEvent(document, 'scroll', this._checkForIntersections, true);\n\n if (this._domObserver) {\n this._domObserver.disconnect();\n this._domObserver = null;\n }\n }\n};\n\n\n/**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\nIntersectionObserver.prototype._checkForIntersections = function() {\n var rootIsInDom = this._rootIsInDom();\n var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n\n this._observationTargets.forEach(function(item) {\n var target = item.element;\n var targetRect = getBoundingClientRect(target);\n var rootContainsTarget = this._rootContainsTarget(target);\n var oldEntry = item.entry;\n var intersectionRect = rootIsInDom && rootContainsTarget &&\n this._computeTargetAndRootIntersection(target, rootRect);\n\n var newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: rootRect,\n intersectionRect: intersectionRect\n });\n\n if (!oldEntry) {\n this._queuedEntries.push(newEntry);\n } else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry);\n }\n } else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry);\n }\n }\n }, this);\n\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this);\n }\n};\n\n\n/**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\nIntersectionObserver.prototype._computeTargetAndRootIntersection =\n function(target, rootRect) {\n\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\n\n var targetRect = getBoundingClientRect(target);\n var intersectionRect = targetRect;\n var parent = getParentNode(target);\n var atRoot = false;\n\n while (!atRoot) {\n var parentRect = null;\n var parentComputedStyle = parent.nodeType == 1 ?\n window.getComputedStyle(parent) : {};\n\n // If the parent isn't displayed, an intersection can't happen.\n if (parentComputedStyle.display == 'none') return;\n\n if (parent == this.root || parent == document) {\n atRoot = true;\n parentRect = rootRect;\n } else {\n // If the element has a non-visible overflow, and it's not the \n // or element, update the intersection rect.\n // Note: and cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n if (parent != document.body &&\n parent != document.documentElement &&\n parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n }\n\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n\n if (!intersectionRect) break;\n }\n parent = getParentNode(parent);\n }\n return intersectionRect;\n};\n\n\n/**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {Object} The expanded root rect.\n * @private\n */\nIntersectionObserver.prototype._getRootRect = function() {\n var rootRect;\n if (this.root) {\n rootRect = getBoundingClientRect(this.root);\n } else {\n // Use / instead of window since scroll bars affect size.\n var html = document.documentElement;\n var body = document.body;\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n };\n }\n return this._expandRectByRootMargin(rootRect);\n};\n\n\n/**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {Object} rect The rect object to expand.\n * @return {Object} The expanded rect.\n * @private\n */\nIntersectionObserver.prototype._expandRectByRootMargin = function(rect) {\n var margins = this._rootMarginValues.map(function(margin, i) {\n return margin.unit == 'px' ? margin.value :\n margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\n var newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n };\n newRect.width = newRect.right - newRect.left;\n newRect.height = newRect.bottom - newRect.top;\n\n return newRect;\n};\n\n\n/**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\nIntersectionObserver.prototype._hasCrossedThreshold =\n function(oldEntry, newEntry) {\n\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n var oldRatio = oldEntry && oldEntry.isIntersecting ?\n oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ?\n newEntry.intersectionRatio || 0 : -1;\n\n // Ignore unchanged ratios\n if (oldRatio === newRatio) return;\n\n for (var i = 0; i < this.thresholds.length; i++) {\n var threshold = this.thresholds[i];\n\n // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n if (threshold == oldRatio || threshold == newRatio ||\n threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\n};\n\n\n/**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\nIntersectionObserver.prototype._rootIsInDom = function() {\n return !this.root || containsDeep(document, this.root);\n};\n\n\n/**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\nIntersectionObserver.prototype._rootContainsTarget = function(target) {\n return containsDeep(this.root || document, target);\n};\n\n\n/**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\nIntersectionObserver.prototype._registerInstance = function() {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n};\n\n\n/**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\nIntersectionObserver.prototype._unregisterInstance = function() {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\n};\n\n\n/**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\nfunction now() {\n return window.performance && performance.now && performance.now();\n}\n\n\n/**\n * Throttles a function and delays its execution, so it's only called at most\n * once within a given time period.\n * @param {Function} fn The function to throttle.\n * @param {number} timeout The amount of time that must pass before the\n * function can be called again.\n * @return {Function} The throttled function.\n */\nfunction throttle(fn, timeout) {\n var timer = null;\n return function () {\n if (!timer) {\n timer = setTimeout(function() {\n fn();\n timer = null;\n }, timeout);\n }\n };\n}\n\n\n/**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\nfunction addEvent(node, event, fn, opt_useCapture) {\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\nfunction removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.detatchEvent == 'function') {\n node.detatchEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object} The intersection rect or undefined if no intersection\n * is found.\n */\nfunction computeRectIntersection(rect1, rect2) {\n var top = Math.max(rect1.top, rect2.top);\n var bottom = Math.min(rect1.bottom, rect2.bottom);\n var left = Math.max(rect1.left, rect2.left);\n var right = Math.min(rect1.right, rect2.right);\n var width = right - left;\n var height = bottom - top;\n\n return (width >= 0 && height >= 0) && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n };\n}\n\n\n/**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {Object} The (possibly shimmed) rect of the element.\n */\nfunction getBoundingClientRect(el) {\n var rect;\n\n try {\n rect = el.getBoundingClientRect();\n } catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n\n if (!rect) return getEmptyRect();\n\n // Older IE\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return rect;\n}\n\n\n/**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {Object} The empty rect.\n */\nfunction getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n}\n\n/**\n * Checks to see if a parent element contains a child element (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\nfunction containsDeep(parent, child) {\n var node = child;\n while (node) {\n if (node == parent) return true;\n\n node = getParentNode(node);\n }\n return false;\n}\n\n\n/**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\nfunction getParentNode(node) {\n var parent = node.parentNode;\n\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host;\n }\n return parent;\n}\n\n\n// Exposes the constructors globally.\nwindow.IntersectionObserver = IntersectionObserver;\nwindow.IntersectionObserverEntry = IntersectionObserverEntry;\n\n}(window, document));\n","require('intersection-observer');\nIntersectionObserver.prototype.POLL_INTERVAL = 100; // Time in milliseconds.","(function(window, factory) {\n\tvar lazySizes = factory(window, window.document);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(window, function l(window, document) {\n\t'use strict';\n\t/*jshint eqnull:true */\n\tif(!document.getElementsByClassName){return;}\n\n\tvar lazysizes, lazySizesConfig;\n\n\tvar docElem = document.documentElement;\n\n\tvar Date = window.Date;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\tvar addEventListener = window[_addEventListener];\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesConfig.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesConfig.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth = parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesConfig.throttleDelay;\n\t\tvar rICTimeout = lazySizesConfig.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesConfig.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesConfig.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning = true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesConfig = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesConfig)){\n\t\t\t\tlazySizesConfig[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\n\t\twindow.lazySizesConfig = lazySizesConfig;\n\n\t\tsetTimeout(function(){\n\t\t\tif(lazySizesConfig.init){\n\t\t\t\tinit();\n\t\t\t}\n\t\t});\n\t})();\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(e && e.target){\n\t\t\t\taddRemoveLoadEvents(e.target, resetPreloading);\n\t\t\t}\n\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || (getCSS(elem.parentNode, 'visibility') != 'hidden' && getCSS(elem, 'visibility') != 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesConfig.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tdefaultExpand = (!lazySizesConfig.expand || lazySizesConfig.expand < 1) ?\n\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\tlazySizesConfig.expand;\n\n\t\t\t\tpreloadExpand = defaultExpand * lazySizesConfig.expFactor;\n\t\t\t\thFac = lazySizesConfig.hFac;\n\t\t\t\tisBodyHidden = null;\n\n\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\tlowRuns = 0;\n\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t} else {\n\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t}\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesConfig.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesConfig.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesConfig.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\taddClass(e.target, lazySizesConfig.loadedClass);\n\t\t\tremoveClass(e.target, lazySizesConfig.loadingClass);\n\t\t\taddRemoveLoadEvents(e.target, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(e.target, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\ttry {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} catch(e){\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesConfig.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesConfig.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesConfig.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesConfig.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesConfig.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\taddRemoveLoadEvents(elem, resetPreloading, true);\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\n\t\t\t\t\taddClass(elem, lazySizesConfig.loadingClass);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesConfig.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\tif( !firesLoad || (elem.complete && elem.naturalWidth > 1)){\n\t\t\t\t\tif(firesLoad){\n\t\t\t\t\t\tresetPreloading(event);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tisLoading--;\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\tvar unveilElement = function (elem){\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesConfig.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesConfig.errorClass) && hasClass(elem, lazySizesConfig.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar afterScroll = debounce(function(){\n\t\t\t\tlazySizesConfig.loadMode = 3;\n\t\t\t\tthrottledCheckElements();\n\t\t\t});\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesConfig.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', function(){\n\t\t\t\tif(lazySizesConfig.loadMode == 3){\n\t\t\t\t\tlazySizesConfig.loadMode = 2;\n\t\t\t\t}\n\t\t\t\tafterScroll();\n\t\t\t}, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesConfig.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesConfig.lazyClass + ' ' + lazySizesConfig.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend', 'webkitAnimationEnd'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesConfig.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tlazysizes = {\n\t\tcfg: lazySizesConfig,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n","(function(window, factory) {\n\tvar globalInstall = function(){\n\t\tfactory(window.lazySizes);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(window, function(window, document, lazySizes) {\n\t/*jshint eqnull:true */\n\t'use strict';\n\n\tvar dummyParent = {nodeName: ''};\n\tvar supportPicture = !!window.HTMLPictureElement && ('sizes' in document.createElement('img'));\n\tvar config = (window.lazySizes && lazySizes.cfg) || window.lazySizesConfig;\n\n\tvar handleLoadingElements = function(e){\n\t\tvar i, isResponsive, hasTriggered, onload, loading;\n\n\t\tvar loadElements = e.target.querySelectorAll('img, iframe');\n\n\t\tfor(i = 0; i < loadElements.length; i++){\n\t\t\tisResponsive = loadElements[i].getAttribute('srcset') || (loadElements[i].parentNode || dummyParent).nodeName.toLowerCase() == 'picture';\n\n\t\t\tif(!supportPicture && isResponsive){\n\t\t\t\tlazySizes.uP(loadElements[i]);\n\t\t\t}\n\n\t\t\tif(!loadElements[i].complete && (isResponsive || loadElements[i].src)){\n\t\t\t\te.detail.firesLoad = true;\n\n\t\t\t\tif(!onload || !loading){\n\t\t\t\t\tloading = 0;\n\t\t\t\t\t/*jshint loopfunc:true */\n\t\t\t\t\tonload = function(evt){\n\t\t\t\t\t\tloading--;\n\t\t\t\t\t\tif((!evt || loading < 1) && !hasTriggered){\n\t\t\t\t\t\t\thasTriggered = true;\n\t\t\t\t\t\t\te.detail.firesLoad = false;\n\t\t\t\t\t\t\tlazySizes.fire(e.target, '_lazyloaded', {}, false, true);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(evt && evt.target){\n\t\t\t\t\t\t\tevt.target.removeEventListener('load', onload);\n\t\t\t\t\t\t\tevt.target.removeEventListener('error', onload);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tsetTimeout(onload, 3500);\n\t\t\t\t}\n\n\t\t\t\tloading++;\n\n\t\t\t\tloadElements[i].addEventListener('load', onload);\n\t\t\t\tloadElements[i].addEventListener('error', onload);\n\t\t\t}\n\t\t}\n\t};\n\n\tif(!config){\n\t\tconfig = {};\n\t\twindow.lazySizesConfig = config;\n\t}\n\n\tconfig.getNoscriptContent = function(noScript){\n\t\treturn noScript.textContent || noScript.innerText;\n\t};\n\n\twindow.addEventListener('lazybeforeunveil', function(e){\n\t\tif(e.detail.instance != lazySizes || e.defaultPrevented || e.target.getAttribute('data-noscript') == null){return;}\n\n\t\tvar noScript = e.target.querySelector('noscript, script[type*=\"html\"]') || {};\n\t\tvar content = config.getNoscriptContent(noScript);\n\n\t\tif(content){\n\t\t\te.target.innerHTML = content;\n\t\t\thandleLoadingElements(e);\n\t\t}\n\t});\n}));\n","var lazysizes = require(\"lazysizes\")\nvar noscript = require(\"lazysizes/plugins/noscript/ls.noscript.js\")\n// var unveilhooks = require('lazysizes/plugins/unveilhooks/ls.unveilhooks.js');\n","var e={};function t(e){return new Promise(function(t,n){var r=new XMLHttpRequest;r.open(\"GET\",e,r.withCredentials=!0),r.onload=function(){200===r.status?t():n()},r.send()})}var n,r,i=(n=\"prefetch\",((r=document.createElement(\"link\")).relList||{}).supports&&r.relList.supports(n)?function(e){return new Promise(function(t,n){var r=document.createElement(\"link\");r.rel=\"prefetch\",r.href=e,r.onload=t,r.onerror=n,document.head.appendChild(r)})}:t);function o(n,r,o){if(!(e[n]||(o=navigator.connection)&&((o.effectiveType||\"\").includes(\"2g\")||o.saveData)))return(r?function(e){return null==self.fetch?t(e):fetch(e,{credentials:\"include\"})}:i)(n).then(function(){e[n]=!0})}var u=u||function(e){var t=Date.now();return setTimeout(function(){e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-t))}})},1)},c=new Set,a=new IntersectionObserver(function(e){e.forEach(function(e){if(e.isIntersecting){var t=e.target.href;c.has(t)&&f(t)}})});function f(e){c.delete(e),o(new URL(e,location.href).toString(),a.priority)}export default function(e){e=Object.assign({timeout:2e3,priority:!1,timeoutFn:u,el:document},e),a.priority=e.priority;var t=e.origins||[location.hostname],n=e.ignores||[];e.timeoutFn(function(){e.urls?e.urls.forEach(f):Array.from(e.el.querySelectorAll(\"a\"),function(e){a.observe(e),t.length&&!t.includes(e.hostname)||function e(t,n){return Array.isArray(n)?n.some(function(n){return e(t,n)}):(n.test||n).call(n,t.href,t)}(e,n)||c.add(e.href)})},{timeout:e.timeout})}\n","import quicklink from \"quicklink\";\n\nquicklink();","document.documentElement.className = document.documentElement.className.replace(/\\bno-js\\b/, 'js');\n","/*!\n * Vue.js v2.6.8\n * (c) 2014-2019 Evan You\n * Released under the MIT License.\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Vue = factory());\n}(this, function () { 'use strict';\n\n /* */\n\n var emptyObject = Object.freeze({});\n\n // These helpers produce better VM code in JS engines due to their\n // explicitness and function inlining.\n function isUndef (v) {\n return v === undefined || v === null\n }\n\n function isDef (v) {\n return v !== undefined && v !== null\n }\n\n function isTrue (v) {\n return v === true\n }\n\n function isFalse (v) {\n return v === false\n }\n\n /**\n * Check if value is primitive.\n */\n function isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n }\n\n /**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\n function isObject (obj) {\n return obj !== null && typeof obj === 'object'\n }\n\n /**\n * Get the raw type string of a value, e.g., [object Object].\n */\n var _toString = Object.prototype.toString;\n\n function toRawType (value) {\n return _toString.call(value).slice(8, -1)\n }\n\n /**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\n function isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n }\n\n function isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n }\n\n /**\n * Check if val is a valid array index.\n */\n function isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n }\n\n function isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n }\n\n /**\n * Convert a value to a string that is actually rendered.\n */\n function toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n }\n\n /**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\n function toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n }\n\n /**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\n function makeMap (\n str,\n expectsLowerCase\n ) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n }\n\n /**\n * Check if a tag is a built-in tag.\n */\n var isBuiltInTag = makeMap('slot,component', true);\n\n /**\n * Check if an attribute is a reserved attribute.\n */\n var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n /**\n * Remove an item from an array.\n */\n function remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n }\n\n /**\n * Check whether an object has the property.\n */\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n function hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n }\n\n /**\n * Create a cached version of a pure function.\n */\n function cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n }\n\n /**\n * Camelize a hyphen-delimited string.\n */\n var camelizeRE = /-(\\w)/g;\n var camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n });\n\n /**\n * Capitalize a string.\n */\n var capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n });\n\n /**\n * Hyphenate a camelCase string.\n */\n var hyphenateRE = /\\B([A-Z])/g;\n var hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n });\n\n /**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n /* istanbul ignore next */\n function polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n }\n\n function nativeBind (fn, ctx) {\n return fn.bind(ctx)\n }\n\n var bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n /**\n * Convert an Array-like object to a real Array.\n */\n function toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n }\n\n /**\n * Mix properties into target object.\n */\n function extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n }\n\n /**\n * Merge an Array of Objects into a single Object.\n */\n function toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n }\n\n /* eslint-disable no-unused-vars */\n\n /**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\n function noop (a, b, c) {}\n\n /**\n * Always return false.\n */\n var no = function (a, b, c) { return false; };\n\n /* eslint-enable no-unused-vars */\n\n /**\n * Return the same value.\n */\n var identity = function (_) { return _; };\n\n /**\n * Generate a string containing static keys from compiler modules.\n */\n function genStaticKeys (modules) {\n return modules.reduce(function (keys, m) {\n return keys.concat(m.staticKeys || [])\n }, []).join(',')\n }\n\n /**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\n function looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n }\n\n /**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\n function looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n }\n\n /**\n * Ensure a function is called only once.\n */\n function once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n }\n\n var SSR_ATTR = 'data-server-rendered';\n\n var ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n ];\n\n var LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n ];\n\n /* */\n\n\n\n var config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: \"development\" !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: \"development\" !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n });\n\n /* */\n\n /**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\n var unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n /**\n * Check if a string starts with $ or _\n */\n function isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n }\n\n /**\n * Define a property.\n */\n function def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n }\n\n /**\n * Parse simple path.\n */\n var bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\n function parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n }\n\n /* */\n\n // can we use __proto__?\n var hasProto = '__proto__' in {};\n\n // Browser environment sniffing\n var inBrowser = typeof window !== 'undefined';\n var inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\n var weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\n var UA = inBrowser && window.navigator.userAgent.toLowerCase();\n var isIE = UA && /msie|trident/.test(UA);\n var isIE9 = UA && UA.indexOf('msie 9.0') > 0;\n var isEdge = UA && UA.indexOf('edge/') > 0;\n var isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\n var isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\n var isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\n var isPhantomJS = UA && /phantomjs/.test(UA);\n var isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n // Firefox has a \"watch\" function on Object.prototype...\n var nativeWatch = ({}).watch;\n\n var supportsPassive = false;\n if (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n }\n\n // this needs to be lazy-evaled because vue may be required before\n // vue-server-renderer can set VUE_ENV\n var _isServer;\n var isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n };\n\n // detect devtools\n var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n /* istanbul ignore next */\n function isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n }\n\n var hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\n var _Set;\n /* istanbul ignore if */ // $flow-disable-line\n if (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n } else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n }\n\n /* */\n\n var warn = noop;\n var tip = noop;\n var generateComponentTrace = (noop); // work around flow check\n var formatComponentName = (noop);\n\n {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return ''\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n }\n\n /* */\n\n var uid = 0;\n\n /**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\n var Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n };\n\n Dep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n };\n\n Dep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n };\n\n Dep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n };\n\n Dep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (!config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n };\n\n // The current target watcher being evaluated.\n // This is globally unique because only one watcher\n // can be evaluated at a time.\n Dep.target = null;\n var targetStack = [];\n\n function pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n }\n\n function popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n }\n\n /* */\n\n var VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n ) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n };\n\n var prototypeAccessors = { child: { configurable: true } };\n\n // DEPRECATED: alias for componentInstance for backwards compat.\n /* istanbul ignore next */\n prototypeAccessors.child.get = function () {\n return this.componentInstance\n };\n\n Object.defineProperties( VNode.prototype, prototypeAccessors );\n\n var createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n };\n\n function createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n }\n\n // optimized shallow clone\n // used for static nodes and slot nodes because they may be reused across\n // multiple renders, cloning them avoids errors when DOM manipulations rely\n // on their elm reference.\n function cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n }\n\n /*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\n var arrayProto = Array.prototype;\n var arrayMethods = Object.create(arrayProto);\n\n var methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n ];\n\n /**\n * Intercept mutating methods and emit events\n */\n methodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n });\n\n /* */\n\n var arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n /**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\n var shouldObserve = true;\n\n function toggleObserving (value) {\n shouldObserve = value;\n }\n\n /**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\n var Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n };\n\n /**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\n Observer.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n };\n\n /**\n * Observe a list of Array items.\n */\n Observer.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n };\n\n // helpers\n\n /**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\n function protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n }\n\n /**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n /* istanbul ignore next */\n function copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n }\n\n /**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\n function observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n }\n\n /**\n * Define a reactive property on an Object.\n */\n function defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n ) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n }\n\n /**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\n function set (target, key, val) {\n if (isUndef(target) || isPrimitive(target)\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n }\n\n /**\n * Delete a property and trigger change if necessary.\n */\n function del (target, key) {\n if (isUndef(target) || isPrimitive(target)\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n }\n\n /**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\n function dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n }\n\n /* */\n\n /**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\n var strats = config.optionMergeStrategies;\n\n /**\n * Options with restrictions\n */\n {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n }\n\n /**\n * Helper that recursively merges two data objects together.\n */\n function mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n }\n\n /**\n * Data\n */\n function mergeDataOrFn (\n parentVal,\n childVal,\n vm\n ) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n }\n\n strats.data = function (\n parentVal,\n childVal,\n vm\n ) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n };\n\n /**\n * Hooks and props are merged as arrays.\n */\n function mergeHook (\n parentVal,\n childVal\n ) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n }\n\n function dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n }\n\n LIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n });\n\n /**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\n function mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n ) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n }\n\n ASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n });\n\n /**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\n strats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n ) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n };\n\n /**\n * Other object hashes.\n */\n strats.props =\n strats.methods =\n strats.inject =\n strats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n ) {\n if (childVal && \"development\" !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n };\n strats.provide = mergeDataOrFn;\n\n /**\n * Default strategy.\n */\n var defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n };\n\n /**\n * Validate component names\n */\n function checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n }\n\n function validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n }\n\n /**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\n function normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n }\n\n /**\n * Normalize all injections into Object-based format\n */\n function normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n }\n\n /**\n * Normalize raw function directives into object format.\n */\n function normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n }\n\n function assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n }\n\n /**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\n function mergeOptions (\n parent,\n child,\n vm\n ) {\n {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n }\n\n /**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\n function resolveAsset (\n options,\n type,\n id,\n warnMissing\n ) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n }\n\n /* */\n\n\n\n function validateProp (\n key,\n propOptions,\n propsData,\n vm\n ) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n }\n\n /**\n * Get the default value of a prop.\n */\n function getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n }\n\n /**\n * Assert whether a prop is valid.\n */\n function assertProp (\n prop,\n name,\n value,\n vm,\n absent\n ) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n }\n\n var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\n function assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n }\n\n /**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\n function getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n }\n\n function isSameType (a, b) {\n return getType(a) === getType(b)\n }\n\n function getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n }\n\n function getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n }\n\n function styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n }\n\n function isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n }\n\n function isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n }\n\n /* */\n\n function handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n }\n\n function invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n ) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res)) {\n // issue #9511\n // reassign to res to avoid catch triggering multiple times when nested calls\n res = res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n }\n\n function globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n }\n\n function logError (err, vm, info) {\n {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n }\n\n /* */\n\n var isUsingMicroTask = false;\n\n var callbacks = [];\n var pending = false;\n\n function flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n }\n\n // Here we have async deferring wrappers using microtasks.\n // In 2.5 we used (macro) tasks (in combination with microtasks).\n // However, it has subtle problems when state is changed right before repaint\n // (e.g. #6813, out-in transitions).\n // Also, using (macro) tasks in event handler would cause some weird behaviors\n // that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n // So we now use microtasks everywhere, again.\n // A major drawback of this tradeoff is that there are some scenarios\n // where microtasks have too high a priority and fire in between supposedly\n // sequential events (e.g. #4521, #6690, which have workarounds)\n // or even between bubbling of the same event (#6566).\n var timerFunc;\n\n // The nextTick behavior leverages the microtask queue, which can be accessed\n // via either native Promise.then or MutationObserver.\n // MutationObserver has wider support, however it is seriously bugged in\n // UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n // completely stops working after triggering a few times... so, if native\n // Promise is available, we will use it:\n /* istanbul ignore next, $flow-disable-line */\n if (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n } else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n )) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n } else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Techinically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n } else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n }\n\n function nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n }\n\n /* */\n\n var mark;\n var measure;\n\n {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n }\n\n /* not type checking this file because flow doesn't play well with Proxy */\n\n var initProxy;\n\n {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n }\n\n /* */\n\n var seenObjects = new _Set();\n\n /**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\n function traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n }\n\n function _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n }\n\n /* */\n\n var normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n });\n\n function createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n }\n\n function updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n ) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n }\n\n /* */\n\n function mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n }\n\n /* */\n\n function extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n ) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n }\n\n function checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n ) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n }\n\n /* */\n\n // The template compiler attempts to minimize the need for normalization by\n // statically analyzing the template at compile time.\n //\n // For plain HTML markup, normalization can be completely skipped because the\n // generated render function is guaranteed to return Array. There are\n // two cases where extra normalization is needed:\n\n // 1. When the children contains components - because a functional component\n // may return an Array instead of a single root. In this case, just a simple\n // normalization is needed - if any child is an Array, we flatten the whole\n // thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n // because functional components already normalize their own children.\n function simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n }\n\n // 2. When the children contains constructs that always generated nested Arrays,\n // e.g.