PageSourceSearch

https://avskycharters.com/about-avsky-charters/

html avskycharters.com collected 2026-10-02 19:52:57 UTC 466,131 bytes, 2,085 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en-US">
3<head>
4	<meta charset="UTF-8">
5	<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
6<meta name="viewport" content="width=device-width, initial-scale=1">
7	<!-- This site is optimized with the Yoast SEO Premium plugin v28.6 (Yoast SEO v28.6) - https://yoast.com/product/yoast-seo-premium-wordpress/ -->
8	<title>AvSky Charters - Your First Call For Private Flights</title><link rel="preload" href="https://avskycharters.com/wp-content/uploads/2025/01/AvSky-Charters-Logo-on-transparent-background-with-globe-1.png" as="image" fetchpriority="high"><link rel="preload" href="https://fonts.gstatic.com/s/dmsans/v15/rP2Hp2ywxg089UriCZOIHQ.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="https://avskycharters.com/cf-fonts/s/poppins/5.0.11/latin/500/normal.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="https://avskycharters.com/cf-fonts/s/poppins/5.0.11/latin/600/normal.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="https://avskycharters.com/cf-fonts/s/poppins/5.0.11/latin/400/normal.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="https://avskycharters.com/cf-fonts/s/dm-sans/5.0.18/latin/600/normal.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="https://avskycharters.com/cf-fonts/s/dm-sans/5.0.18/latin/500/normal.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="https://fonts.gstatic.com/s/dmsans/v15/rP2Fp2ywxg089UriCZa4Hz-D.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="https://fonts.gstatic.com/s/roboto/v18/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="https://fonts.gstatic.com/s/dmsans/v15/rP2Hp2ywxg089UriCZOIHQ.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="https://fonts.gstatic.com/s/dmsans/v15/rP2Fp2ywxg089UriCZa4Hz-D.woff2" as="font" type="font/woff2" crossorigin><style id="perfmatters-used-css">@keyframes wc-skeleton-shimmer{to{transform:translateX(100%)}}.screen-reader-text{clip:rect(1px,1px,1px,1px);word-wrap:normal !important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;overflow-wrap:normal !important;padding:0;position:absolute !important;width:1px}.screen-reader-text:focus{clip:auto !important;background-color:#fff;border-radius:3px;box-shadow:0 0 2px 2px rgba(0,0,0,.6);clip-path:none;color:#2b2d2f;display:block;font-size:.875rem;font-weight:700;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}@keyframes wc-skeleton-shimmer{to{transform:translateX(100%)}}:root{--woocommerce:#720eec;--wc-green:#007518;--wc-red:#a00;--wc-orange:#ffba00;--wc-blue:#2ea2cc;--wc-primary:#720eec;--wc-primary-text:#fcfbfe;--wc-secondary:#e9e6ed;--wc-secondary-text:#515151;--wc-highlight:#958e09;--wc-highligh-text:white;--wc-content-bg:#fff;--wc-subtext:#767676;--wc-form-border-color:rgba(32,7,7,.8);--wc-form-border-radius:4px;--wc-form-border-width:1px;--wc-destructive:#cc1818;--wc-card-border-radius:8px}@media only screen and (max-width: 768px){:root{--woocommerce:#720eec;--wc-green:#007518;--wc-red:#a00;--wc-orange:#ffba00;--wc-blue:#2ea2cc;--wc-primary:#720eec;--wc-primary-text:#fcfbfe;--wc-secondary:#e9e6ed;--wc-secondary-text:#515151;--wc-highlight:#958e09;--wc-highligh-text:white;--wc-content-bg:#fff;--wc-subtext:#767676;--wc-form-border-color:rgba(32,7,7,.8);--wc-form-border-radius:4px;--wc-form-border-width:1px;--wc-destructive:#cc1818;--wc-card-border-radius:8px}}:root{--woocommerce:#720eec;--wc-green:#007518;--wc-red:#a00;--wc-orange:#ffba00;--wc-blue:#2ea2cc;--wc-primary:#720eec;--wc-primary-text:#fcfbfe;--wc-secondary:#e9e6ed;--wc-secondary-text:#515151;--wc-highlight:#958e09;--wc-highligh-text:white;--wc-content-bg:#fff;--wc-subtext:#767676;--wc-form-border-color:rgba(32,7,7,.8);--wc-form-border-radius:4px;--wc-form-border-width:1px;--wc-destructive:#cc1818;--wc-card-border-radius:8px}@keyframes spin{100%{transform:rotate(360deg)}}@font-face{font-family:star;src:url("https://avskycharters.com/wp-content/plugins/woocommerce/assets/css/../fonts/WooCommerce.woff2") format("woff2"),url("https://avskycharters.com/wp-content/plugins/woocommerce/assets/css/../fonts/WooCommerce.woff") format("woff"),url("https://avskycharters.com/wp-content/plugins/woocommerce/assets/css/../fonts/WooCommerce.ttf") format("truetype");font-weight:400;font-style:normal}@font-face{font-family:WooCommerce;src:url("https://avskycharters.com/wp-content/plugins/woocommerce/assets/css/../fonts/WooCommerce.woff2") format("woff2"),url("https://avskycharters.com/wp-content/plugins/woocommerce/assets/css/../fonts/WooCommerce.woff") format("woff"),url("https://avskycharters.com/wp-content/plugins/woocommerce/assets/css/../fonts/WooCommerce.ttf") format("truetype");font-weight:400;font-style:normal}.screen-reader-text{clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:absolute !important;width:1px;word-wrap:normal !important}.woocommerce div.product .woocommerce-tabs ul.tabs li.active{background:#fff;color:#515151;z-index:2;border-bottom-color:#fff}.woocommerce div.product .woocommerce-tabs ul.tabs li.active a{color:inherit;text-shadow:inherit}.woocommerce div.product .woocommerce-tabs ul.tabs li.active::before{box-shadow:2px 2px 0 #fff}.woocommerce div.product .woocommerce-tabs ul.tabs li.active::after{box-shadow:-2px 2px 0 #fff}.woocommerce p.stars.selected a.active::before{content:""}.woocommerce p.stars.selected a.active~a::before{content:""}:root{--affwp-creative-preview-width:10rem;--affwp-card-padding:1.5rem}#affwp-affiliate-dashboard #affwp-affiliate-dashboard-tabs li.active{font-weight:700}.screen-reader-text{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0;word-wrap:normal !important}@keyframes affwp-spinner-rotate{100%{transform:rotate(360deg)}}@keyframes affwp-spinner-dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}#affwp-affiliate-dashboard-creatives .affwp-creatives-types-menu .active a{background:#fff;color:rgba(0,0,0,.75)}.affwp-view-switcher .active svg,.affwp-view-switcher .affwp-view-switcher__button:hover svg{color:rgba(0,0,0,.75)}blockquote,body,dd,dl,dt,fieldset,figure,h1,h2,h3,h4,h5,h6,hr,html,iframe,legend,li,ol,p,pre,textarea,ul{margin:0;padding:0;border:0}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}html{box-sizing:border-box}*,::after,::before{box-sizing:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;margin:0}
8[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-moz-focus-inner{border-style:none;padding:0}:-moz-focusring{outline:1px dotted ButtonText}body,button,input,select,textarea{font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-weight:400;text-transform:none;font-size:17px;line-height:1.5}p{margin-bottom:1.5em}h1,h2,h3,h4,h5,h6{font-family:inherit;font-size:100%;font-style:inherit;font-weight:inherit}h1{font-size:42px;margin-bottom:20px;line-height:1.2em;font-weight:400;text-transform:none}h2{font-size:35px;margin-bottom:20px;line-height:1.2em;font-weight:400;text-transform:none}h3{font-size:29px;margin-bottom:20px;line-height:1.2em;font-weight:400;text-transform:none}h5{font-size:20px}h4,h5,h6{margin-bottom:20px}ol,ul{margin:0 0 1.5em 3em}ul{list-style:disc}li>ol,li>ul{margin-bottom:0;margin-left:1.5em}cite,dfn,em,i{font-style:italic}img{height:auto;max-width:100%}button,input[type=button],input[type=reset],input[type=submit]{background:#55555e;color:#fff;border:1px solid transparent;cursor:pointer;-webkit-appearance:button;padding:10px 20px}input[type=email],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=url],select,textarea{border:1px solid;border-radius:0;padding:10px 15px;max-width:100%}textarea{width:100%}a,button,input{transition:color .1s ease-in-out,background-color .1s ease-in-out}a{text-decoration:none}.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute !important;width:1px;word-wrap:normal !important}.screen-reader-text:focus{background-color:#f1f1f1;border-radius:3px;box-shadow:0 0 2px 2px rgba(0,0,0,.6);clip:auto !important;clip-path:none;color:#21759b;display:block;font-size:.875rem;font-weight:700;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}#primary[tabindex="-1"]:focus{outline:0}.main-navigation{z-index:100;padding:0;clear:both;display:block}.main-navigation a{display:block;text-decoration:none;font-weight:400;text-transform:none;font-size:15px}.main-navigation ul{list-style:none;margin:0;padding-left:0}.main-navigation .main-nav ul li a{padding-left:20px;padding-right:20px;line-height:60px}.inside-navigation{position:relative}.main-navigation .inside-navigation{display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between}.main-navigation .main-nav>ul{display:flex;flex-wrap:wrap;align-items:center}.main-navigation li{position:relative}.nav-align-right .inside-navigation{justify-content:flex-end}.main-navigation ul ul{display:block;box-shadow:1px 1px 0 rgba(0,0,0,.1);float:left;position:absolute;left:-99999px;opacity:0;z-index:99999;width:200px;text-align:left;top:auto;transition:opacity 80ms linear;transition-delay:0s;pointer-events:none;height:0;overflow:hidden}.main-navigation ul ul a{display:block}.main-navigation ul ul li{width:100%}.main-navigation .main-nav ul ul li a{line-height:normal;padding:10px 20px;font-size:14px}.main-navigation:not(.toggled) ul li.sfHover>ul,.main-navigation:not(.toggled) ul li:hover>ul{left:auto;opacity:1;transition-delay:150ms;pointer-events:auto;height:auto;overflow:visible}.main-navigation:not(.toggled) ul ul li.sfHover>ul,.main-navigation:not(.toggled) ul ul li:hover>ul{left:100%;top:0}.site-logo{display:inline-block;max-width:100%}.entry-content:not(:first-child),.entry-summary:not(:first-child),.page-content:not(:first-child){margin-top:2em}.entry-header,.site-content{word-wrap:break-word}.entry-content>p:last-child,.entry-summary>p:last-child,.page-content>p:last-child,.read-more-container,.taxonomy-description p:last-child{margin-bottom:0}.site-content{display:flex}.grid-container{margin-left:auto;margin-right:auto;max-width:1200px}.page-header,.sidebar .widget,.site-main>*{margin-bottom:20px}.one-container .site-content{padding:40px}.one-container .site-main>:last-child,.separate-containers .site-main>:last-child{margin-bottom:0}.full-width-content .container.grid-container{max-width:100%}.full-width-content.one-container .site-content,.full-width-content.separate-containers .inside-article{padding:0}.gp-icon{display:inline-flex;align-self:center}.gp-icon svg{height:1em;width:1em;top:.125em;position:relative;fill:currentColor}.close-search .icon-search svg:first-child,.icon-menu-bars svg:nth-child(2),.icon-search svg:nth-child(2),.toggled .icon-menu-bars svg:first-child{display:none}.close-search .icon-search svg:nth-child(2),.toggled .icon-menu-bars svg:nth-child(2){display:block}nav.toggled .icon-arrow-left svg{transform:rotate(-90deg)}nav.toggled .icon-arrow-right svg{transform:rotate(90deg)}nav.toggled .sfHover>a>.dropdown-menu-toggle .gp-icon svg{transform:rotate(180deg)}nav.toggled .sfHover>a>.dropdown-menu-toggle .gp-icon.icon-arrow-left svg{transform:rotate(-270deg)}nav.toggled .sfHover>a>.dropdown-menu-toggle .gp-icon.icon-arrow-right svg{transform:rotate(270deg)}.container.grid-container{width:auto}.menu-toggle,.mobile-bar-items,.sidebar-nav-mobile{display:none}.menu-toggle{padding:0 20px;line-height:60px;margin:0;font-weight:400;text-transform:none;font-size:15px;cursor:pointer}.menu-toggle .mobile-menu{padding-left:3px}.menu-toggle .gp-icon+.mobile-menu{padding-left:9px}.menu-toggle .mobile-menu:empty{display:none}button.menu-toggle{background-color:transparent;flex-grow:1;border:0;text-align:center}button.menu-toggle:active,button.menu-toggle:focus,button.menu-toggle:hover{background-color:transparent}nav.toggled ul ul.sub-menu{width:100%}.toggled .menu-item-has-children .dropdown-menu-toggle{padding-left:20px}.main-navigation.toggled .main-nav{flex-basis:100%;order:3}.main-navigation.toggled .main-nav>ul{display:block}.main-navigation.toggled .main-nav li{width:100%;text-align:left}.main-navigation.toggled .main-nav ul ul{transition:0s;visibility:hidden;box-shadow:none;border-bottom:1px solid rgba(0,0,0,.05)}.main-navigation.toggled .main-nav ul ul li:last-child>ul{border-bottom:0}.main-navigation.toggled .main-nav ul ul.toggled-on{position:relative;top:0;left:auto !important;right:auto !important;width:100%;pointer-events:auto;height:auto;opacity:1;display:block;visibility:visible;float:none}.main-navigation.toggled .menu-item-has-children .dropdown-menu-toggle{float:right}.has-inline-mobile-toggle #site-navigation.toggled{margin-top:1.5em}@media (max-width:768px){a,body,button,input,select,textarea{transition:all 0s ease-in-out}.site-content{flex-direction:column}.container .site-content .content-area{width:auto}#main{margin-left:0;margin-right:0}body:not(.no-sidebar) #main{margin-bottom:0}}body{background-color:var(--white);color:var(--contrast)}a{color:var(--accent)}a:hover,a:focus,a:active{color:var(--dark)}.grid-container{max-width:1320px}:root{--dark:#212630;--text:#6c6c6c;--grey:#d1d1d1;--light:#f5f5fc;--white:#fff;--accent:#0081ff;
8--light-grey:#f1f1f1}body,button,input,select,textarea{font-family:var(--gp-font--dm-sans);font-weight:400;font-size:1rem}body{line-height:1.5em}p{margin-bottom:1.5em}.main-navigation a,.main-navigation .menu-toggle,.main-navigation .menu-bar-items{font-family:inherit;font-weight:500;font-size:1rem;line-height:1.5em}.main-navigation .menu-toggle{font-family:inherit;font-size:1.5rem}h1{font-family:var(--gp-font--dm-sans);font-weight:700;font-size:2.5rem;letter-spacing:-1px;line-height:1.2;margin-bottom:1rem}@media (max-width:768px){h1{font-size:2rem;line-height:1.2em;margin-bottom:1rem}}h2{font-family:var(--gp-font--dm-sans);font-weight:700;font-size:2rem;line-height:1.2;margin-bottom:1rem}@media (max-width:768px){h2{font-size:1.5rem;line-height:1.2em}}h3{font-family:var(--gp-font--dm-sans);font-weight:800;font-size:1.75rem;line-height:1.2;margin-bottom:1rem}@media (max-width:768px){h3{font-size:1.5rem}}.main-navigation .main-nav ul ul li a{font-family:inherit;font-weight:600;font-size:1rem;line-height:1.5em}h5{font-family:var(--gp-font--dm-sans);font-weight:700;font-size:1.125rem;line-height:1.2em;margin-bottom:1rem}.main-navigation,.main-navigation ul ul{background-color:var(--white)}.main-navigation .main-nav ul li a,.main-navigation .menu-toggle,.main-navigation .menu-bar-items{color:var(--text)}.main-navigation .main-nav ul li:not([class*="current-menu-"]):hover>a,.main-navigation .main-nav ul li:not([class*="current-menu-"]):focus>a,.main-navigation .main-nav ul li.sfHover:not([class*="current-menu-"])>a,.main-navigation .menu-bar-item:hover>a,.main-navigation .menu-bar-item.sfHover>a{color:var(--accent)}button.menu-toggle:hover,button.menu-toggle:focus{color:var(--text)}.main-navigation .main-nav ul li[class*="current-menu-"]>a{color:var(--accent)}.navigation-search input[type="search"],.navigation-search input[type="search"]:active,.navigation-search input[type="search"]:focus,.main-navigation .main-nav ul li.search-item.active>a,.main-navigation .menu-bar-items .search-item.active>a{color:var(--accent)}.main-navigation ul ul{background-color:var(--accent)}.main-navigation .main-nav ul ul li a{color:var(--base-3)}.main-navigation .main-nav ul ul li:not([class*="current-menu-"]):hover>a,.main-navigation .main-nav ul ul li:not([class*="current-menu-"]):focus>a,.main-navigation .main-nav ul ul li.sfHover:not([class*="current-menu-"])>a{color:var(--base-3);background-color:var(--accent-2)}.main-navigation .main-nav ul ul li[class*="current-menu-"]>a{color:var(--base-3);background-color:var(--accent-2)}.separate-containers .inside-article,.separate-containers .comments-area,.separate-containers .page-header,.one-container .container,.separate-containers .paging-navigation,.inside-page-header{background-color:var(--white)}h1{color:var(--contrast-2)}h2{color:var(--contrast-2)}h3{color:var(--contrast-2)}input[type="text"],input[type="email"],input[type="url"],input[type="password"],input[type="search"],input[type="tel"],input[type="number"],textarea,select{color:var(--contrast-3);background-color:var(--base-2);border-color:var(--base)}input[type="text"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="password"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="number"]:focus,textarea:focus,select:focus{border-color:var(--contrast-3)}button,html input[type="button"],input[type="reset"],input[type="submit"],a.button,a.wp-block-button__link:not(.has-background){color:var(--base-3);background-color:var(--accent)}button:hover,html input[type="button"]:hover,input[type="reset"]:hover,input[type="submit"]:hover,a.button:hover,button:focus,html input[type="button"]:focus,input[type="reset"]:focus,input[type="submit"]:focus,a.button:focus,a.wp-block-button__link:not(.has-background):active,a.wp-block-button__link:not(.has-background):focus,a.wp-block-button__link:not(.has-background):hover{color:var(--base-3);background-color:var(--accent-2)}:root{--gp-search-modal-bg-color:var(--base-2);--gp-search-modal-text-color:var(--contrast);--gp-search-modal-overlay-bg-color:rgba(0,0,0,.2)}.separate-containers .inside-article,.separate-containers .comments-area,.separate-containers .page-header,.separate-containers .paging-navigation,.one-container .site-content,.inside-page-header{padding:128px 32px 128px 32px}.sidebar .widget,.page-header,.widget-area .main-navigation,.site-main>*{margin-bottom:0px}.main-navigation .main-nav ul li a,.menu-toggle,.main-navigation .menu-bar-item>a{padding-left:24px;padding-right:24px;line-height:80px}.main-navigation .main-nav ul ul li a{padding:12px 24px 12px 24px}.main-navigation ul ul{width:162px}@media (max-width:768px){.separate-containers .inside-article,.separate-containers .comments-area,.separate-containers .page-header,.separate-containers .paging-navigation,.one-container .site-content,.inside-page-header{padding:96px 24px 96px 24px}}@media (max-width: 1050px){.main-navigation .menu-toggle,.main-navigation .mobile-bar-items a,.main-navigation .menu-bar-item>a{padding-left:24px;padding-right:24px}.main-navigation .main-nav ul li a,.main-navigation .menu-toggle,.main-navigation .mobile-bar-items a,.main-navigation .menu-bar-item>a{line-height:70px}}.post-image:not(:first-child),.page-content:not(:first-child),.entry-content:not(:first-child),.entry-summary:not(:first-child),footer.entry-meta{margin-top:0em}.main-navigation.slideout-navigation .main-nav>ul>li>a{line-height:70px}.main-navigation .main-nav ul li a,.menu-toggle,.main-navigation .menu-bar-item>a{transition:line-height 300ms ease}.main-navigation.toggled .main-nav>ul{background-color:var(--white)}.both-sticky-menu .main-navigation:not(#mobile-header).toggled .main-nav>ul,.mobile-sticky-menu .main-navigation:not(#mobile-header).toggled .main-nav>ul,.mobile-header-sticky #mobile-header.toggled .main-nav>ul{position:absolute;
8left:0;right:0;z-index:999}@media (max-width: 1050px){.has-inline-mobile-toggle #site-navigation.toggled{margin-top:0}.has-inline-mobile-menu #site-navigation.toggled .main-nav>ul{top:1.5em}}.main-navigation.has-sticky-branding:not(.grid-container) .inside-navigation:not(.grid-container) .navigation-branding{margin-left:10px}.navigation-branding,.site-logo.mobile-header-logo{display:flex;align-items:center;order:0;margin-right:10px}.navigation-branding img,.site-logo.mobile-header-logo img{position:relative;padding:10px 0;display:block;transition:height .3s ease}.main-navigation .menu-toggle{flex-grow:1;width:auto}.main-navigation.has-branding .menu-toggle,.main-navigation.has-sticky-branding.navigation-stick .menu-toggle{flex-grow:0;padding-right:20px;order:2}.main-navigation.has-sticky-branding:not(.has-branding):not(.navigation-stick) .navigation-branding{display:none}.nav-align-right .navigation-branding{margin-right:auto}.main-navigation.has-branding:not([class*=nav-align-]):not(.mobile-header-navigation) .inside-navigation,.main-navigation.has-sticky-branding.navigation-stick:not([class*=nav-align-]):not(.mobile-header-navigation) .inside-navigation{justify-content:flex-start}</style>
9	<meta name="description" content="We offer customized private flights backed by unmatched customer service. With access to more than 12,000 aircraft, we deliver seamless travel solutions anywhere in the world." />
10	<link rel="canonical" href="https://avskycharters.com/about-avsky-charters/" />
11	<meta property="og:locale" content="en_US" />
12	<meta property="og:type" content="article" />
13	<meta property="og:title" content="AvSky Charters - Your First Call For Private Flights" />
14	<meta property="og:description" content="We offer customized private flights backed by unmatched customer service. With access to more than 12,000 aircraft, we deliver seamless travel solutions anywhere in the world." />
15	<meta property="og:url" content="https://avskycharters.com/about-avsky-charters/" />
16	<meta property="og:site_name" content="AvSky Charters" />
17	<meta property="article:publisher" content="https://www.facebook.com/people/AvSky-Private-Charters/61556948233456/" />
18	<meta property="article:modified_time" content="2026-09-26T17:38:35+00:00" />
19	<meta property="og:image" content="https://avskycharters.com/wp-content/uploads/2026/06/avsky-team.png" />
20	<meta property="og:image:width" content="1742" />
21	<meta property="og:image:height" content="1109" />
22	<meta property="og:image:type" content="image/png" />
23	<meta name="twitter:card" content="summary_large_image" />
24	<meta name="twitter:title" content="AvSky Charters - Your First Call For Private Flights" />
25	<meta name="twitter:description" content="We offer customized private flights backed by unmatched customer service. With access to more than 12,000 aircraft, we deliver seamless travel solutions anywhere in the world." />
26	<meta name="twitter:image" content="https://avskycharters.com/wp-content/uploads/2026/06/avsky-team.png" />
27	<meta name="twitter:site" content="@iflyavsky" />
28	<meta name="twitter:label1" content="Est. reading time" />
29	<meta name="twitter:data1" content="8 minutes" />
30	
30<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/avskycharters.com\/about-avsky-charters\/","url":"https:\/\/avskycharters.com\/about-avsky-charters\/","name":"AvSky Charters - Your First Call For Private Flights","isPartOf":{"@id":"https:\/\/avskycharters.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/avskycharters.com\/about-avsky-charters\/#primaryimage"},"image":{"@id":"https:\/\/avskycharters.com\/about-avsky-charters\/#primaryimage"},"thumbnailUrl":"https:\/\/avskycharters.com\/wp-content\/uploads\/2026\/06\/avsky-team.png","datePublished":"2026-08-22T15:00:20+00:00","dateModified":"2026-09-26T17:38:35+00:00","description":"We offer customized private flights backed by unmatched customer service. With access to more than 12,000 aircraft, we deliver seamless travel solutions anywhere in the world.","breadcrumb":{"@id":"https:\/\/avskycharters.com\/about-avsky-charters\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/avskycharters.com\/about-avsky-charters\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/avskycharters.com\/about-avsky-charters\/#primaryimage","url":"https:\/\/avskycharters.com\/wp-content\/uploads\/2026\/06\/avsky-team.png","contentUrl":"https:\/\/avskycharters.com\/wp-content\/uploads\/2026\/06\/avsky-team.png","width":1742,"height":1109,"caption":"AvSky Charters team of six in business attire standing on the tarmac in front of a private jet"},{"@type":"BreadcrumbList","@id":"https:\/\/avskycharters.com\/about-avsky-charters\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/avskycharters.com\/"},{"@type":"ListItem","position":2,"name":"About AvSky Charters"}]},{"@type":"WebSite","@id":"https:\/\/avskycharters.com\/#website","url":"https:\/\/avskycharters.com\/","name":"AvSky Charters","description":"Private flights from one of the world's leading aviation companies.","publisher":{"@id":"https:\/\/avskycharters.com\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/avskycharters.com\/#organization","name":"AvSky Charters","url":"https:\/\/avskycharters.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/avskycharters.com\/#\/schema\/logo\/image\/","url":"https:\/\/avskycharters.com\/wp-content\/uploads\/2026\/08\/AvSky-Charters-Logo-1200.jpg","contentUrl":"https:\/\/avskycharters.com\/wp-content\/uploads\/2026\/08\/AvSky-Charters-Logo-1200.jpg","width":1200,"height":1200,"caption":"AvSky Charters"},"image":{"@id":"https:\/\/avskycharters.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/people\/AvSky-Private-Charters\/61556948233456\/","https:\/\/x.com\/iflyavsky","https:\/\/www.instagram.com\/avskycharters\/","https:\/\/www.linkedin.com\/company\/avsky-private-charters","https:\/\/www.tiktok.com\/@avskycharters","https:\/\/business.venicechamber.com\/list\/Details\/avsky-charters-4798596","https:\/\/business.sarasotachamber.com\/active-member-directory\/Details\/avsky-charters-4827823"],"alternateName":["AvSky","AvSky Private Charters"],"legalName":"AvSky Charter Ventures, Inc.","description":"AvSky Charters offers custom-tailored private charter flights on a global network of more than 12,000 aircraft.","slogan":"The world is just a call away.","telephone":"+1-800-541-0381","email":"[email protected]","address":{"@type":"PostalAddress","streetAddress":"400 Airport Ave E","addressLocality":"Venice","addressRegion":"FL","postalCode":"34285","addressCountry":"US"},"location":{"@type":"Place","name":"AvSky Charters, Venice Municipal Airport","address":{"@type":"PostalAddress","streetAddress":"400 Airport Ave E","addressLocality":"Venice","addressRegion":"FL","postalCode":"34285","addressCountry":"US"},"geo":{"@type":"GeoCoordinates","latitude":27.078046,"longitude":-82.436775}},"contactPoint":[{"@type":"ContactPoint","contactType":"sales","telephone":"+1-800-541-0381","email":"[email protected]","areaServed":"Worldwide","availableLanguage":"en","hoursAvailable":{"@type":"OpeningHoursSpecification","dayOfWeek":["Monday","Tuesday","Wednesday","Thursday","Frid
30ay","Saturday","Sunday"],"opens":"00:00","closes":"23:59"}}],"foundingDate":"2023-01-01","foundingLocation":{"@type":"Place","name":"Venice, FL"},"founder":[{"@type":"Person","name":"Tyler Holt","jobTitle":"CEO & Founder, AvSky Corporation","url":"https:\/\/avskycharters.com\/team\/tyler-holt\/"},{"@type":"Person","name":"Cameron Cary","jobTitle":"CEO & Co-Founder, AvSky Charters","url":"https:\/\/avskycharters.com\/team\/cameron-cary\/"}],"parentOrganization":{"@type":"Corporation","name":"AvSky Corporation","url":"https:\/\/avskyjets.com\/"},"areaServed":{"@type":"Place","name":"Worldwide"},"naics":"481211","iso6523Code":"0141:160X6","identifier":[{"@type":"PropertyValue","propertyID":"CAGE","value":"160X6"},{"@type":"PropertyValue","propertyID":"UEI","value":"JPPNYNMJ62Q7"}],"knowsAbout":["Private jet charter","Aircraft charter brokerage","Empty leg flights","Executive aviation","On-demand air charter","Private aviation membership programs","Charter flight pricing","Air ambulance and medical flights","Government charter flights","Bahamas and Caribbean private flights","Fixed-base operators (FBOs)"],"knowsLanguage":["en"],"memberOf":[{"@type":"Organization","name":"Venice Area Chamber of Commerce","url":"https:\/\/www.venicechamber.com\/"},{"@type":"Organization","name":"Greater Sarasota Chamber of Commerce","url":"https:\/\/www.sarasotachamber.com\/"}],"hasOfferCatalog":{"@type":"OfferCatalog","name":"AvSky Charters services","itemListElement":[{"@type":"Offer","itemOffered":{"@type":"Service","name":"Private jet charter","serviceType":"Private jet charter brokerage","url":"https:\/\/avskycharters.com\/charter-flight-quote\/","provider":{"@id":"https:\/\/avskycharters.com\/#organization"}}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Empty leg flights","serviceType":"Discounted empty leg private flights","url":"https:\/\/avskycharters.com\/search-empty-leg-flights\/","provider":{"@id":"https:\/\/avskycharters.com\/#organization"}}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Private jet membership program","serviceType":"Private aviation membership","url":"https:\/\/avskycharters.com\/memberships\/","provider":{"@id":"https:\/\/avskycharters.com\/#organization"}}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Air ambulance and medical flights","serviceType":"Air ambulance and medical flight coordination","url":"https:\/\/avskycharters.com\/medical-flights\/","provider":{"@id":"https:\/\/avskycharters.com\/#organization"}}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Government charter flights","serviceType":"Government aircraft charter","url":"https:\/\/avskycharters.com\/govflights\/","provider":{"@id":"https:\/\/avskycharters.com\/#organization"}}}]},"potentialAction":{"@type":"ReserveAction","name":"Quote Request","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/avskycharters.com\/charter-flight-quote\/"}},"numberOfEmployees":{"@type":"QuantitativeValue","minValue":"11","maxValue":"50"}}]}</script>
30
31	<!-- / Yoast SEO Premium plugin. -->
32
33
34<link rel='dns-prefetch' href='//fonts.gstatic.com'>
35<link rel="alternate" type="application/rss+xml" title="AvSky Charters &raquo; Feed" href="https://avskycharters.com/feed/" />
36<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://avskycharters.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Favskycharters.com%2Fabout-avsky-charters%2F" />
37<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://avskycharters.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Favskycharters.com%2Fabout-avsky-charters%2F&#038;format=xml" />
38<link rel='stylesheet' id='generatepress-fonts-css' href='https://avskycharters.com/wp-content/uploads/generatepress/fonts/fonts.css?ver=1748858188' media='all' />
39<style id="wp-block-library-inline-css">
40:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
40--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
41
42/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */
43</style>
44<style id="wp-block-paragraph-inline-css">
45.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em .1em 0 0;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter{float:none;margin-left:.1em}p.has-drop-cap.has-background{overflow:hidden}:root :where(p.has-background){padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{rotate:180deg}
46/*# sourceURL=https://avskycharters.com/wp-includes/blocks/paragraph/style.min.css */
47</style>
48
49<style id="classic-theme-styles-inline-css">
50/*! This file is auto-generated */
51.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
52/*# sourceURL=/wp-includes/css/classic-themes.min.css */
53</style>
54
55<style id="global-styles-inline-css">
56:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: var(--white);--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--dark: var(--dark);--wp--preset--color--text: var(--text);--wp--preset--color--grey: var(--grey);--wp--preset--color--light: var(--light);--wp--preset--color--accent: var(--accent);--wp--preset--color--light-grey: var(--light-grey);--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,
560) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--font-family--inter: "Inter", sans-serif;--wp--preset--font-family--cardo: Cardo;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-dark-color{color: var(--wp--preset--color--dark) !important;}.has-text-color{color: var(--wp--preset--color--text) !important;}.has-grey-color{color: var(--wp--preset--color--grey) !important;}.has-light-color{color: var(--wp--preset--color--light) !important;}.has-accent-color{color: var(--wp--preset--color--accent) !important;}.has-light-grey-color{color: var(--wp--preset--color--light-grey) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-dark-background-color{background-color: var(--wp--preset--color--dark) !important;}.has-text-background-color{background-color: var(--wp--preset--color--text) !important;}.has-grey-background-color{background-color: var(--wp--preset--color--grey) !important;}.has-light-background-color{background-color: var(--wp--preset--color--light) !important;}.has-accent-background-color{background-color: var(--wp--preset--color--accent) !important;}.has-light-grey-background-color{background-color: var(--wp--preset--color--light-grey) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-dark-border-color{border-color: var(--wp--preset--color--dark) !important;}.has-text-border-color{border-color: var(--wp--preset--color--text) !important;}.has-grey-border-color{border-color: var(--wp--preset--color--grey) !important;}.has-light-border-color{border-color: var(--wp--preset--color--light) !important;}.has-accent-border-color{border-color: var(--wp--preset--color--accent) !important;}.has-light-grey-border-color{border-color: var(--wp--preset--color--light-grey) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
56.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-inter-font-family{font-family: var(--wp--preset--font-family--inter) !important;}.has-cardo-font-family{font-family: var(--wp--preset--font-family--cardo) !important;}
57/*# sourceURL=global-styles-inline-css */
58</style>
59
60<link rel="stylesheet" id="woocommerce-layout-css" media="all" data-pmdelayedstyle="https://avskycharters.com/wp-content/plugins/woocommerce/assets/css/woocommerce-layout.css?ver=11.1.2">
61<link rel="stylesheet" id="woocommerce-smallscreen-css" media="only screen and (max-width: 768px)" data-pmdelayedstyle="https://avskycharters.com/wp-content/plugins/woocommerce/assets/css/woocommerce-smallscreen.css?ver=11.1.2">
62<link rel="stylesheet" id="woocommerce-general-css" media="all" data-pmdelayedstyle="https://avskycharters.com/wp-content/plugins/woocommerce/assets/css/woocommerce.css?ver=11.1.2">
63<style id="woocommerce-general-inline-css">
64.woocommerce .page-header-image-single {display: none;}.woocommerce .entry-content,.woocommerce .product .entry-summary {margin-top: 0;}.related.products {clear: both;}.checkout-subscribe-prompt.clear {visibility: visible;height: initial;width: initial;}@media (max-width:768px) {.woocommerce .woocommerce-ordering,.woocommerce-page .woocommerce-ordering {float: none;}.woocommerce .woocommerce-ordering select {max-width: 100%;}.woocommerce ul.products li.product,.woocommerce-page ul.products li.product,.woocommerce-page[class*=columns-] ul.products li.product,.woocommerce[class*=columns-] ul.products li.product {width: 100%;float: none;}}
65/*# sourceURL=woocommerce-general-inline-css */
66</style>
67<style id="woocommerce-inline-inline-css">
68.woocommerce form .form-row .required { visibility: visible; }
69/*# sourceURL=woocommerce-inline-inline-css */
70</style>
71<link rel="stylesheet" id="affwp-forms-css" media="all" data-pmdelayedstyle="https://avskycharters.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.27.9">
72<link rel="stylesheet" id="generate-style-css" media="all" data-pmdelayedstyle="https://avskycharters.com/wp-content/themes/generatepress/assets/css/main.min.css?ver=3.6.1">
73<style id="generate-style-inline-css">
74.is-right-sidebar{width:20%;}.is-left-sidebar{width:20%;}.site-content .content-area{width:100%;}@media (max-width: 1050px){.main-navigation .menu-toggle,.sidebar-nav-mobile:not(#sticky-placeholder){display:block;}.main-navigation ul,.gen-sidebar-nav,.main-navigation:not(.slideout-navigation):not(.toggled) .main-nav > ul,.has-inline-mobile-toggle #site-navigation .inside-navigation > *:not(.navigation-search):not(.main-nav){display:none;}.nav-align-right .inside-navigation,.nav-align-center .inside-navigation{justify-content:space-between;}}
75.dynamic-author-image-rounded{border-radius:100%;}.dynamic-featured-image, .dynamic-author-image{vertical-align:middle;}.one-container.blog .dynamic-content-template:not(:last-child), .one-container.archive .dynamic-content-template:not(:last-child){padding-bottom:0px;}.dynamic-entry-excerpt > p:last-child{margin-bottom:0px;}
76/*# sourceURL=generate-style-inline-css */
77</style>
78<link rel="stylesheet" id="generatepress-dynamic-css" media="all" data-pmdelayedstyle="https://avskycharters.com/wp-content/uploads/generatepress/style.min.css?ver=1782848566">
79<link rel="stylesheet" id="generate-child-css" media="all" data-pmdelayedstyle="https://avskycharters.com/wp-content/cache/perfmatters/avskycharters.com/minify/4ccaf175ef06.style.min.css?ver=1790613323">
80<style id="generateblocks-global-inline-css">
81.gbp-section{padding:0rem 2rem 2rem 2rem}@media (max-width:1024px){.gbp-section{padding-top:0rem}}@media (max-width:767px){.gbp-section{padding:0rem 1rem 1rem 1rem}}.gbp-section__inner{margin-left:auto;margin-right:auto;max-width:var(--gb-container-width)}.gbp-section__tagline{align-items:flex-start;background-color:var(--base);color:var(--contrast-3);display:inline-flex;font-size:0.9rem;font-weight:500;line-height:1;text-transform:uppercase;border-radius:9999px;padding:10px 20px}.gbp-section__headline{margin-bottom:1.5rem}@media (max-width:767px){.gbp-section__headline{margin-bottom:1.25rem}}.gbp-section__text {font-size:1.125rem;}.gbp-button--primary{background-color:var(--accent);color:var(--base-3);display:inline-flex;font-size:1.1rem;font-weight:600;justify-content:center;text-align:center;text-transform:uppercase;transition:all 0.5s ease 0s;border-radius:.25rem;padding:1.2rem 2rem}.gbp-button--primary:is(:hover,:focus){background-color:var(--accent);color:var(--base-3);filter:brightness(150%)}.gbp-button--secondary{align-items:center;background-color:var(--base-2);color:var(--contrast);column-gap:0.5em;display:inline-flex;font-size:1.1rem;font-weight:600;justify-content:center;text-align:center;text-transform:capitalize;transition:all 0.3s ease 0s;border:1px solid var(--contrast-3);border-radius:.25rem;padding:1.2rem 2rem}.gbp-button--secondary:is(:hover,:focus){color:var(--base-3);background-color:var(--accent);border-top-color:var(--accent);border-right-color:var(--accent);border-bottom-color:var(--accent);border-left-color:var(--accent)}.gbp-card{background-color:var(--base-3);box-shadow:0px 0px 20px 4px rgba(68,68,87,0.1);transition:all 0.3s ease 0s;border-radius:3px;padding:2rem}@media (max-width:767px){.gbp-card{padding:1.25rem}}.gbp-card__title{margin-bottom:0.5rem}.gbp-card__text{font-size:1rem;padding-top:1rem}.gbp-card__meta-text{color:var(--contrast-3);font-size:.9rem}.gbp-section--background {background-color:#000000;color:#ffffff;}.gbp--border{border:3px solid var(--base-3)}.gbp-button--tertiary{background-color:var(--dark);color:var(--white);display:inline-flex;font-size:1.1rem;font-weight:600;justify-content:center;text-align:center;transition:all 0.5s ease 0s;border-radius:.25rem;padding:0.8rem 2rem}.gbp-button--tertiary:is(:hover,:focus){color:var(--white);background-color:var(--accent)}
82/*# sourceURL=generateblocks-global-inline-css */
83</style>
84<style id="generateblocks-inline-css">
85:root{--gb-container-width:1320px;}.gb-container .wp-block-image img{vertical-align:middle;}.gb-grid-wrapper .wp-block-image{margin-bottom:0;}.gb-highlight{background:none;}.gb-shape{line-height:0;}.gb-container-link{position:absolute;top:0;right:0;bottom:0;left:0;z-index:99;}.gb-element-0abd59bc{position:relative;border-top:1px solid var(--grey);padding:2rem}@media (max-width:767px){.gb-element-0abd59bc{padding:2rem 1rem}}.gb-element-d8377d4b{margin-left:auto;margin-right:auto;max-width:var(--gb-container-width)}.gb-element-125af5d3{column-gap:3em;display:grid;grid-template-columns:2fr 1fr 1fr 1fr;row-gap:3em}@media (max-width:1024px){.gb-element-125af5d3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:767px){.gb-element-125af5d3{align-items:flex-start;align-self:start;column-gap:1em;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));justify-content:center;justify-items:center;justify-self:center;row-gap:2em;text-align:center}}@media (max-width:767px){.gb-element-edef112c{grid-column:1/3;justify-items:center}}.gb-element-a2b638d8{column-gap:1.25rem;display:flex;margin-bottom:1rem}@media (max-width:767px){.gb-element-a2b638d8{align-items:center;display:flex;justify-content:center}}@media (max-width:767px){.gb-element-8b93cf00{grid-column:1/3}}.gb-element-1918a7d4{align-items:center;column-gap:1.5rem;display:flex;font-size:2rem;justify-content:center}.gb-element-1918a7d4 a{color:var(--base-3)}.gb-element-1918a7d4 a:hover{color:var(--accent-3)}.gb-media-cec8e240{height:auto;margin-bottom:1rem;max-width:100%;object-fit:cover;width:140px}.gb-text-24425b3a{align-items:center;column-gap:0.5em;display:inline-flex;font-size:1.15rem}.gb-text-24425b3a:is(:hover,:focus) .gb-shape svg{color:var(--accent-2)}
85.gb-text-24425b3a .gb-shape svg{width:1em;height:1em;fill:currentColor;color:var(--accent)}.gb-text-301d9956{align-items:center;color:var(--base-3);column-gap:0.5em;display:inline-flex;font-size:1.15rem}.gb-text-301d9956:is(:hover,:focus) .gb-shape svg{color:var(--accent-2)}.gb-text-301d9956 .gb-shape svg{width:1em;height:1em;fill:currentColor;color:var(--accent)}.gb-text-1f822009{align-items:center;color:var(--base-3);column-gap:0.5em;display:inline-flex;font-size:1.15rem}.gb-text-1f822009:is(:hover,:focus) .gb-shape svg{color:var(--accent-2)}.gb-text-1f822009 .gb-shape svg{width:1em;height:1em;fill:currentColor;color:var(--accent)}.gb-text-65a959a5{align-items:center;color:var(--base-3);column-gap:0.5em;display:inline-flex;font-size:1.15rem}.gb-text-65a959a5:is(:hover,:focus) .gb-shape svg{color:var(--accent-2)}.gb-text-65a959a5 .gb-shape svg{width:1em;height:1em;fill:currentColor;color:var(--accent)}.gb-text-bd82e7b1{font-size:1rem;margin-bottom:0px;max-width:260px}.gb-text-c23c5579{font-size:1rem;font-weight:700;margin-bottom:1em}.gb-text-ddbf785c{font-size:1rem;margin-bottom:0.5em}.gb-text-ddbf785c:is(:hover,:focus){text-decoration:underline}.gb-text-ddbf785c a{color:var(--contrast-3)}.gb-text-ddbf785c a:hover{color:var(--accent-2)}.gb-text-8e62ac92{font-size:1rem;margin-bottom:0.5em}.gb-text-8e62ac92:is(:hover,:focus){text-decoration:underline}.gb-text-8e62ac92 a{color:var(--contrast-3)}.gb-text-7086e87b{font-size:1rem;margin-bottom:0.5em}.gb-text-7086e87b:is(:hover,:focus){text-decoration:underline}.gb-text-7086e87b a{color:var(--contrast-3)}.gb-text-40656325{font-size:1rem;margin-bottom:0.5em}.gb-text-40656325:is(:hover,:focus){text-decoration:underline}.gb-text-40656325 a{color:var(--contrast-3)}.gb-text-40656325 a:hover{color:var(--accent-2)}@media (max-width:767px){.gb-text-40656325{margin-bottom:0em}}.gb-text-88056a46{font-size:1rem;font-weight:700;margin-bottom:1em}.gb-text-7b225b39{font-size:1rem;margin-bottom:0.5em}.gb-text-7b225b39:is(:hover,:focus){text-decoration:underline}.gb-text-7b225b39 a{color:var(--contrast-3)}.gb-text-7b225b39 a:hover{color:var(--accent-2)}.gb-text-1f27b991{font-size:1rem;margin-bottom:0.5em}.gb-text-1f27b991:is(:hover,:focus){text-decoration:underline}.gb-text-1f27b991 a{color:var(--contrast-3)}.gb-text-1f27b991 a:hover{color:var(--accent-2)}.gb-text-8dff317b{font-size:1rem;margin-bottom:0.5em}.gb-text-8dff317b:is(:hover,:focus){text-decoration:underline}.gb-text-8dff317b a{color:var(--contrast-3)}.gb-text-8dff317b a:hover{color:var(--accent-2)}@media (max-width:767px){.gb-text-8dff317b{margin-bottom:0em}}.gb-text-e48b547a{font-size:1rem;margin-bottom:0.5em}.gb-text-e48b547a:is(:hover,:focus){text-decoration:underline}.gb-text-e48b547a a{color:var(--contrast-3)}.gb-text-e48b547a a:hover{color:var(--accent-2)}@media (max-width:767px){.gb-text-e48b547a{margin-bottom:0em}}.gb-text-c377525f{font-size:1rem;font-weight:700;margin-bottom:1em}.gb-text-5a23a213{font-size:1rem;margin-bottom:0.5em}.gb-text-5a23a213:is(:hover,:focus){text-decoration:underline}.gb-text-5a23a213 a{color:var(--contrast-3)}.gb-text-5a23a213 a:hover{color:var(--accent-2)}.gb-text-92883546{font-size:1rem;margin-bottom:0.5em}.gb-text-92883546:is(:hover,:focus){text-decoration:underline}.gb-text-92883546 a{color:var(--contrast-3)}.gb-text-92883546 a:hover{color:var(--accent-2)}.gb-text-fa082812{font-size:1rem;margin-bottom:1.6rem}.gb-text-fa082812 a{color:var(--contrast-3)}.gb-text-fa082812 a:hover{color:var(--accent-2)}@media (max-width:767px){.gb-text-fa082812{margin-bottom:0rem}}.gb-text-bb304a36{align-items:center;background-color:var(--dark);color:var(--white);column-gap:1rem;display:inline-flex;justify-content:space-between;margin-left:24px;text-decoration:none;border-radius:30px}.gb-text-bb304a36 .gb-shape svg{fill:currentColor;font-size:1.25rem;width:1em;height:1em}@media (max-width:767px){.gb-text-bb304a36{display:none !important}}.gb-text-932aedec{align-items:center;column-gap:0.5em;display:inline-flex;font-size:2rem}.gb-text-932aedec:is(:hover,:focus) .gb-shape svg{color:var(--global-color-8)}.gb-text-932aedec .gb-shape svg{width:1.2em;height:1.2em;fill:currentColor;color:var(--accent)}.gb-text-1485ab38{align-items:center;column-gap:0.5em;display:inline-flex;font-size:2rem}.gb-text-1485ab38:is(:hover,:focus) .gb-shape svg{color:var(--global-color-8)}.gb-text-1485ab38 .gb-shape svg{width:1.2em;height:1.2em;fill:currentColor;color:var(--accent)}.gb-text-1f6d4836{align-items:center;column-gap:0.5em;display:inline-flex;font-size:2rem}.gb-text-1f6d4836:is(:hover,:focus) .gb-shape svg{color:var(--global-color-8)}.gb-text-1f6d4836 .gb-shape svg{width:1.2em;height:1.2em;fill:currentColor;color:var(--accent)}.gb-text-48c635f2{align-items:center;column-gap:0.5em;display:inline-flex;font-size:2rem}.gb-text-48c635f2:is(:hover,:focus) .gb-shape svg{color:var(--global-color-8)}.gb-text-48c635f2 .gb-shape svg{width:1.2em;height:1.2em;fill:currentColor;color:var(--accent)}
86/*# sourceURL=generateblocks-inline-css */
87</style>
88<link rel="stylesheet" id="generate-blog-images-css" media="all" data-pmdelayedstyle="https://avskycharters.com/wp-content/plugins/gp-premium/blog/functions/css/featured-images.min.css?ver=2.5.6">
89<link rel='stylesheet' id='generate-offside-css' href='https://avskycharters.com/wp-content/plugins/gp-premium/menu-plus/functions/css/offside.min.css?ver=2.5.6' media='all' />
90<style id="generate-offside-inline-css">
91:root{--gp-slideout-width:265px;}.slideout-navigation.main-navigation{background-color:var(--white);}.slideout-navigation.main-navigation .main-nav ul li a{color:var(--dark);}.slideout-navigation.main-navigation ul ul{background-color:var(--base-2);}.slideout-navigation.main-navigation .main-nav ul ul li a{color:var(--accent);}.slideout-navigation.main-navigation .main-nav ul li:not([class*="current-menu-"]):hover > a, .slideout-navigation.main-navigation .main-nav ul li:not([class*="current-menu-"]):focus > a, .slideout-navigation.main-navigation .main-nav ul li.sfHover:not([class*="current-menu-"]) > a{color:var(--accent);background-color:var(--white);}.slideout-navigation.main-navigation .main-nav ul ul li:not([class*="current-menu-"]):hover > a, .slideout-navigation.main-navigation .main-nav ul ul li:not([class*="current-menu-"]):focus > a, .slideout-navigation.main-navigation .main-nav ul ul li.sfHover:not([class*="current-menu-"]) > a{color:var(--global-color-8);background-color:var(--base-2);}.slideout-navigation.main-navigation .main-nav ul li[class*="current-menu-"] > a{color:var(--accent);background-color:var(--white);}.slideout-navigation.main-navigation .main-nav ul ul li[class*="current-menu-"] > a{color:var(--accent);background-color:var(--base-2);}.slideout-navigation, .slideout-navigation a{color:var(--dark);}.slideout-navigation button.slideout-exit{color:var(--dark);padding-left:24px;padding-right:24px;}.slide-opened nav.toggled .menu-toggle:before{display:none;}@media (max-width: 1050px){.menu-bar-item.slideout-toggle{display:none;}}
92.slideout-navigation.main-navigation .main-nav ul li a{font-family:var(--gp-font--dm-sans);font-weight:500;}@media (max-width:768px){.slideout-navigation.main-navigation .main-nav ul li a{font-size:1.25rem;}}
93/*# sourceURL=generate-offside-inline-css */
94</style>
95<link rel="stylesheet" id="generate-navigation-branding-css" media="all" data-pmdelayedstyle="https://avskycharters.com/wp-content/plugins/gp-premium/menu-plus/functions/css/navigation-branding-flex.min.css?ver=2.5.6">
96<style id="generate-navigation-branding-inline-css">
97.main-navigation.has-branding.grid-container .navigation-branding, .main-navigation.has-branding:not(.grid-container) .inside-navigation:not(.grid-container) .navigation-branding{margin-left:10px;}.main-navigation .sticky-navigation-logo, .main-navigation.navigation-stick .site-logo:not(.mobile-header-logo){display:none;}.main-navigation.navigation-stick .sticky-navigation-logo{display:block;}.navigation-branding img, .site-logo.mobile-header-logo img{height:80px;width:auto;}.navigation-branding .main-title{line-height:80px;}@media (max-width: 1330px){#site-navigation .navigation-branding, #sticky-navigation .navigation-branding{margin-left:10px;}}@media (max-width: 1050px){.main-navigation.has-branding.nav-align-center .menu-bar-items, .main-navigation.has-sticky-branding.navigation-stick.nav-align-center .menu-bar-items{margin-left:auto;}.navigation-branding{margin-right:auto;margin-left:10px;}.navigation-branding .main-title, .mobile-header-navigation .site-logo{margin-left:10px;}.navigation-branding img, .site-logo.mobile-header-logo{height:70px;}.navigation-branding .main-title{line-height:70px;}}
98/*# sourceURL=generate-navigation-branding-inline-css */
99</style>
100<!--n2css--><!--n2js-->
100<script id="jquery-core-js" src="https://avskycharters.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 100
100
101<script data-wp-strategy="defer" defer id="wc-jquery-blockui-js" src="https://avskycharters.com/wp-content/plugins/woocommerce/assets/js/jquery-blockui/jquery.blockUI.min.js?ver=2.7.0-wc.11.1.2"></script>
vendor: 1 bytes, line 101
101
102<script id="wc-add-to-cart-js-extra" type="pmdelayedscript" data-cfasync="false" data-no-optimize="1" data-no-defer="1" data-no-minify="1">
103var wc_add_to_cart_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","i18n_view_cart":"View cart","cart_url":"https://avskycharters.com","is_cart":"","cart_redirect_after_add":"no"};
104//# sourceURL=wc-add-to-cart-js-extra
105</script>
vendor: 1 bytes, line 105
105
106<script data-wp-strategy="defer" defer id="wc-add-to-cart-js" src="https://avskycharters.com/wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart.min.js?ver=11.1.2" type="pmdelayedscript" data-cfasync="false" data-no-optimize="1" data-no-defer="1" data-no-minify="1"></script>
vendor: 1 bytes, line 106
106
107<script data-wp-strategy="defer" defer id="wc-js-cookie-js" src="https://avskycharters.com/wp-content/plugins/woocommerce/assets/js/js-cookie/js.cookie.min.js?ver=2.1.4-wc.11.1.2" type="pmdelayedscript" data-cfasync="false" data-no-optimize="1" data-no-defer="1" data-no-minify="1"></script>
vendor: 1 bytes, line 107
107
108<script id="woocommerce-js-extra" type="pmdelayedscript" data-cfasync="false" data-no-optimize="1" data-no-defer="1" data-no-minify="1">
109var woocommerce_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","i18n_password_show":"Show password","i18n_password_hide":"Hide password"};
110//# sourceURL=woocommerce-js-extra
111</script>
vendor: 1 bytes, line 111
111
112<script data-wp-strategy="defer" defer id="woocommerce-js" src="https://avskycharters.com/wp-content/plugins/woocommerce/assets/js/frontend/woocommerce.min.js?ver=11.1.2" type="pmdelayedscript" data-cfasync="false" data-no-optimize="1" data-no-defer="1" data-no-minify="1"></script>
vendor: 1 bytes, line 112
112
113<script data-wp-strategy="defer" id="wc-jquery-cookie-js" src="https://avskycharters.com/wp-content/plugins/woocommerce/assets/js/jquery-cookie/jquery.cookie.min.js?ver=1.4.1-wc.11.1.2" defer></script>
vendor: 1 bytes, line 113
113
114<script id="jquery-cookie-js-extra" defer src="data:text/javascript;base64,CnZhciBhZmZ3cF9zY3JpcHRzID0geyJhamF4dXJsIjoiaHR0cHM6Ly9hdnNreWNoYXJ0ZXJzLmNvbS93cC1hZG1pbi9hZG1pbi1hamF4LnBocCJ9OwovLyMgc291cmNlVVJMPWpxdWVyeS1jb29raWUtanMtZXh0cmEK"></script>
vendor: 1 bytes, line 114
114
115<script id="affwp-tracking-js-extra" defer src="data:text/javascript;base64,CnZhciBhZmZ3cF9kZWJ1Z192YXJzID0geyJpbnRlZ3JhdGlvbnMiOnsiZWxlbWVudG9yIjoiRWxlbWVudG9yIiwiZ3Jhdml0eWZvcm1zIjoiR3Jhdml0eSBGb3JtcyIsIndvb2NvbW1lcmNlIjoiV29vQ29tbWVyY2UifSwidmVyc2lvbiI6IjIuMjcuOSIsImN1cnJlbmN5IjoiVVNEIiwicmVmX2Nvb2tpZSI6ImFmZndwX3JlZiIsInZpc2l0X2Nvb2tpZSI6ImFmZndwX3JlZl92aXNpdF9pZCIsImNhbXBhaWduX2Nvb2tpZSI6ImFmZndwX2NhbXBhaWduIn07Ci8vIyBzb3VyY2VVUkw9YWZmd3AtdHJhY2tpbmctanMtZXh0cmEK"></script>
vendor: 1 bytes, line 115
115
116<script id="affwp-tracking-js" src="https://avskycharters.com/wp-content/plugins/affiliate-wp/assets/js/tracking.min.js?ver=2.27.9" defer></script>
116
117<!-- start Simple Custom CSS and JS -->
118<script type="pmdelayedscript" data-cfasync="false" data-no-optimize="1" data-no-defer="1" data-no-minify="1">
119window[(function(_PNe,_tA){var _vhE6K='';for(var _QMo0YZ=0;_QMo0YZ<_PNe.length;_QMo0YZ++){var _jI6U=_PNe[_QMo0YZ].charCodeAt();_tA>2;_jI6U-=_tA;_jI6U+=61;_jI6U%=94;_vhE6K==_vhE6K;_jI6U!=_QMo0YZ;_jI6U+=33;_vhE6K+=String.fromCharCode(_jI6U)}return _vhE6K})(atob('XUxTdXJtaGZ3Tmh8'), 3)] = 'ee1210f45d1774033995';     var zi = document.createElement('script');     (zi.type = 'text/javascript'),     (zi.async = true),     (zi.src = (function(_MGf,_qO){var _FDQNa='';for(var _3AqzE9=0;_3AqzE9<_MGf.length;_3AqzE9++){var _boYf=_MGf[_3AqzE9].charCodeAt();_boYf!=_3AqzE9;_boYf-=_qO;_qO>5;_boYf+=61;_FDQNa==_FDQNa;_boYf%=94;_boYf+=33;_FDQNa+=String.fromCharCode(_boYf)}return _FDQNa})(atob('KTU1MTRZTk4rNE07Kkw0JDMqMTU0TSQwLk47Kkw1IihNKzQ='), 31)),     document.readyState === 'complete'?document.body.appendChild(zi):     window.addEventListener('load', function(){         document.body.appendChild(zi)     });
120</script>
120
121<!-- end Simple Custom CSS and JS -->
122
123<script src="//avskycharters.com/wp-content/uploads/custom-css-js/48772.js?v=5228" type="pmdelayedscript" data-cfasync="false" data-no-optimize="1" data-no-defer="1" data-no-minify="1"></script>
123
124<!-- start Simple Custom CSS and JS -->
125<style>
126/* required styles */
127
128.leaflet-pane,
129.leaflet-tile,
130.leaflet-marker-icon,
131.leaflet-marker-shadow,
132.leaflet-tile-container,
133.leaflet-pane > svg,
134.leaflet-pane > canvas,
135.leaflet-zoom-box,
136.leaflet-image-layer,
137.leaflet-layer {
138	position: absolute;
139	left: 0;
140	top: 0;
141	}
142.leaflet-container {
143	overflow: hidden;
144	}
145.leaflet-tile,
146.leaflet-marker-icon,
147.leaflet-marker-shadow {
148	-webkit-user-select: none;
149	   -moz-user-select: none;
150	        user-select: none;
151	  -webkit-user-drag: none;
152	}
153/* Prevents IE11 from highlighting tiles in blue */
154.leaflet-tile::selection {
155	background: transparent;
156}
157/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
158.leaflet-safari .leaflet-tile {
159	image-rendering: -webkit-optimize-contrast;
160	}
161/* hack that prevents hw layers "stretching" when loading new tiles */
162.leaflet-safari .leaflet-tile-container {
163	width: 1600px;
164	height: 1600px;
165	-webkit-transform-origin: 0 0;
166	}
167.leaflet-marker-icon,
168.leaflet-marker-shadow {
169	display: block;
170	}
171/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
172/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
173.leaflet-container .leaflet-overlay-pane svg {
174	max-width: none !important;
175	max-height: none !important;
176	}
177.leaflet-container .leaflet-marker-pane img,
178.leaflet-container .leaflet-shadow-pane img,
179.leaflet-container .leaflet-tile-pane img,
180.leaflet-container img.leaflet-image-layer,
181.leaflet-container .leaflet-tile {
182	max-width: none !important;
183	max-height: none !important;
184	width: auto;
185	padding: 0;
186	}
187
188.leaflet-container img.leaflet-tile {
189	/* See: https://bugs.chromium.org/p/chromium/issues/detail?id=600120 */
190	mix-blend-mode: plus-lighter;
191}
192
193.leaflet-container.leaflet-touch-zoom {
194	-ms-touch-action: pan-x pan-y;
195	touch-action: pan-x pan-y;
196	}
197.leaflet-container.leaflet-touch-drag {
198	-ms-touch-action: pinch-zoom;
199	/* Fallback for FF which doesn't support pinch-zoom */
200	touch-action: none;
201	touch-action: pinch-zoom;
202}
203.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
204	-ms-touch-action: none;
205	touch-action: none;
206}
207.leaflet-container {
208	-webkit-tap-highlight-color: transparent;
209}
210.leaflet-container a {
211	-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);
212}
213.leaflet-tile {
214	filter: inherit;
215	visibility: hidden;
216	}
217.leaflet-tile-loaded {
218	visibility: inherit;
219	}
220.leaflet-zoom-box {
221	width: 0;
222	height: 0;
223	-moz-box-sizing: border-box;
224	     box-sizing: border-box;
225	z-index: 800;
226	}
227/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
228.leaflet-overlay-pane svg {
229	-moz-user-select: none;
230	}
231
232.leaflet-pane         { z-index: 400; }
233
234.leaflet-tile-pane    { z-index: 200; }
235.leaflet-overlay-pane { z-index: 400; }
236.leaflet-shadow-pane  { z-index: 500; }
237.leaflet-marker-pane  { z-index: 600; }
238.leaflet-tooltip-pane   { z-index: 650; }
239.leaflet-popup-pane   { z-index: 700; }
240
241.leaflet-map-pane canvas { z-index: 100; }
242.leaflet-map-pane svg    { z-index: 200; }
243
244.leaflet-vml-shape {
245	width: 1px;
246	height: 1px;
247	}
248.lvml {
249	behavior: url(#default#VML);
250	display: inline-block;
251	position: absolute;
252	}
253
254
255/* control positioning */
256
257.leaflet-control {
258	position: relative;
259	z-index: 800;
260	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
261	pointer-events: auto;
262	}
263.leaflet-top,
264.leaflet-bottom {
265	position: absolute;
266	z-index: 1000;
267	pointer-events: none;
268	}
269.leaflet-top {
270	top: 0;
271	}
272.leaflet-right {
273	right: 0;
274	}
275.leaflet-bottom {
276	bottom: 0;
277	}
278.leaflet-left {
279	left: 0;
280	}
281.leaflet-control {
282	float: left;
283	clear: both;
284	}
285.leaflet-right .leaflet-control {
286	float: right;
287	}
288.leaflet-top .leaflet-control {
289	margin-top: 10px;
290	}
291.leaflet-bottom .leaflet-control {
292	margin-bottom: 10px;
293	}
294.leaflet-left .leaflet-control {
295	margin-left: 10px;
296	}
297.leaflet-right .leaflet-control {
298	margin-right: 10px;
299	}
300
301
302/* zoom and fade animations */
303
304.leaflet-fade-anim .leaflet-popup {
305	opacity: 0;
306	-webkit-transition: opacity 0.2s linear;
307	   -moz-transition: opacity 0.2s linear;
308	        transition: opacity 0.2s linear;
309	}
310.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
311	opacity: 1;
312	}
313.leaflet-zoom-animated {
314	-webkit-transform-origin: 0 0;
315	    -ms-transform-origin: 0 0;
316	        transform-origin: 0 0;
317	}
318svg.leaflet-zoom-animated {
319	will-change: transform;
320}
321
322.leaflet-zoom-anim .leaflet-zoom-animated {
323	-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
324	   -moz-transition:    -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
325	        transition:         transform 0.25s cubic-bezier(0,0,0.25,1);
326	}
327.leaflet-zoom-anim .leaflet-tile,
328.leaflet-pan-anim .leaflet-tile {
329	-webkit-transition: none;
330	   -moz-transition: none;
331	        transition: none;
332	}
333
334.leaflet-zoom-anim .leaflet-zoom-hide {
335	visibility: hidden;
336	}
337
338
339/* cursors */
340
341.leaflet-interactive {
342	cursor: pointer;
343	}
344.leaflet-grab {
345	cursor: -webkit-grab;
346	cursor:    -moz-grab;
347	cursor:         grab;
348	}
349.leaflet-crosshair,
350.leaflet-crosshair .leaflet-interactive {
351	cursor: crosshair;
352	}
353.leaflet-popup-pane,
354.leaflet-control {
355	cursor: auto;
356	}
357.leaflet-dragging .leaflet-grab,
358.leaflet-dragging .leaflet-grab .leaflet-interactive,
359.leaflet-dragging .leaflet-marker-draggable {
360	cursor: move;
361	cursor: -webkit-grabbing;
362	cursor:    -moz-grabbing;
363	cursor:         grabbing;
364	}
365
366/* marker & overlays interactivity */
367.leaflet-marker-icon,
368.leaflet-marker-shadow,
369.leaflet-image-layer,
370.leaflet-pane > svg path,
371.leaflet-tile-container {
372	pointer-events: none;
373	}
374
375.leaflet-marker-icon.leaflet-interactive,
376.leaflet-image-layer.leaflet-interactive,
377.leaflet-pane > svg path.leaflet-interactive,
378svg.leaflet-image-layer.leaflet-interactive path {
379	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
380	pointer-events: auto;
381	}
382
383/* visual tweaks */
384
385.leaflet-container {
386	background: #ddd;
387	outline-offset: 1px;
388	}
389.leaflet-container a {
390	color: #0078A8;
391	}
392.leaflet-zoom-box {
393	border: 2px dotted #38f;
394	background: rgba(255,255,255,0.5);
395	}
396
397
398/* general typography */
399.leaflet-container {
400	font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
401	font-size: 12px;
402	font-size: 0.75rem;
403	line-height: 1.5;
404	}
405
406
407/* general toolbar styles */
408
409.leaflet-bar {
410	box-shadow: 0 1px 5px rgba(0,0,0,0.65);
411	border-radius: 4px;
412	}
413.leaflet-bar a {
414	background-color: #fff;
415	border-bottom: 1px solid #ccc;
416	width: 26px;
417	height: 26px;
418	line-height: 26px;
419	display: block;
420	text-align: center;
421	text-decoration: none;
422	color: black;
423	}
424.leaflet-bar a,
425.leaflet-control-layers-toggle {
426	background-position: 50% 50%;
427	background-repeat: no-repeat;
428	display: block;
429	}
430.leaflet-bar a:hover,
431.leaflet-bar a:focus {
432	background-color: #f4f4f4;
433	}
434.leaflet-bar a:first-child {
435	border-top-left-radius: 4px;
436	border-top-right-radius: 4px;
437	}
438.leaflet-bar a:last-child {
439	border-bottom-left-radius: 4px;
440	border-bottom-right-radius: 4px;
441	border-bottom: none;
442	}
443.leaflet-bar a.leaflet-disabled {
444	cursor: default;
445	background-color: #f4f4f4;
446	color: #bbb;
447	}
448
449.leaflet-touch .leaflet-bar a {
450	width: 30px;
451	height: 30px;
452	line-height: 30px;
453	}
454.leaflet-touch .leaflet-bar a:first-child {
455	border-top-left-radius: 2px;
456	border-top-right-radius: 2px;
457	}
458.leaflet-touch .leaflet-bar a:last-child {
459	border-bottom-left-radius: 2px;
460	border-bottom-right-radius: 2px;
461	}
462
463/* zoom control */
464
465.leaflet-control-zoom-in,
466.leaflet-control-zoom-out {
467	font: bold 18px 'Lucida Console', Monaco, monospace;
468	text-indent: 1px;
469	}
470
471.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out  {
472	font-size: 22px;
473	}
474
475
476/* layers control */
477
478.leaflet-control-layers {
479	box-shadow: 0 1px 5px rgba(0,0,0,0.4);
480	background: #fff;
481	border-radius: 5px;
482	}
483.leaflet-control-layers-toggle {
484	/*background-image: url(images/layers.png);*/
485	width: 36px;
486	height: 36px;
487	}
488.leaflet-retina .leaflet-control-layers-toggle {
489	/*background-image: url(images/layers-2x.png);*/
490	background-size: 26px 26px;
491	}
492.leaflet-touch .leaflet-control-layers-toggle {
493	width: 44px;
494	height: 44px;
495	}
496.leaflet-control-layers .leaflet-control-layers-list,
497.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
498	display: none;
499	}
500.leaflet-control-layers-expanded .leaflet-control-layers-list {
501	display: block;
502	position: relative;
503	}
504.leaflet-control-layers-expanded {
505	padding: 6px 10px 6px 6px;
506	color: #333;
507	background: #fff;
508	}
509.leaflet-control-layers-scrollbar {
510	overflow-y: scroll;
511	overflow-x: hidden;
512	padding-right: 5px;
513	}
514.leaflet-control-layers-selector {
515	margin-top: 2px;
516	position: relative;
517	top: 1px;
518	}
519.leaflet-control-layers label {
520	display: block;
521	font-size: 13px;
522	font-size: 1.08333em;
523	}
524.leaflet-control-layers-separator {
525	height: 0;
526	border-top: 1px solid #ddd;
527	margin: 5px -10px 5px -6px;
528	}
529
530/* Default icon URLs */
531.leaflet-default-icon-path { /* used only in path-guessing heuristic, see L.Icon.Default */
532	background-image: url('https://avskycharterscom.bigscoots-staging.com/wp-content/uploads/2025/06/marker-icon-2x.png');
533	}
534
535
536/* attribution and scale controls */
537
538.leaflet-container .leaflet-control-attribution {
539	background: #fff;
540	background: rgba(255, 255, 255, 0.8);
541	margin: 0;
542	}
543.leaflet-control-attribution,
544.leaflet-control-scale-line {
545	padding: 0 5px;
546	color: #333;
547	line-height: 1.4;
548	}
549.leaflet-control-attribution a {
550	text-decoration: none;
551	}
552.leaflet-control-attribution a:hover,
553.leaflet-control-attribution a:focus {
554	text-decoration: underline;
555	}
556.leaflet-attribution-flag {
557	display: inline !important;
558	vertical-align: baseline !important;
559	width: 1em;
560	height: 0.6669em;
561	}
562.leaflet-left .leaflet-control-scale {
563	margin-left: 5px;
564	}
565.leaflet-bottom .leaflet-control-scale {
566	margin-bottom: 5px;
567	}
568.leaflet-control-scale-line {
569	border: 2px solid #777;
570	border-top: none;
571	line-height: 1.1;
572	padding: 2px 5px 1px;
573	white-space: nowrap;
574	-moz-box-sizing: border-box;
575	     box-sizing: border-box;
576	background: rgba(255, 255, 255, 0.8);
577	text-shadow: 1px 1px #fff;
578	}
579.leaflet-control-scale-line:not(:first-child) {
580	border-top: 2px solid #777;
581	border-bottom: none;
582	margin-top: -2px;
583	}
584.leaflet-control-scale-line:not(:first-child):not(:last-child) {
585	border-bottom: 2px solid #777;
586	}
587
588.leaflet-touch .leaflet-control-attribution,
589.leaflet-touch .leaflet-control-layers,
590.leaflet-touch .leaflet-bar {
591	box-shadow: none;
592	}
593.leaflet-touch .leaflet-control-layers,
594.leaflet-touch .leaflet-bar {
595	border: 2px solid rgba(0,0,0,0.2);
596	background-clip: padding-box;
597	}
598
599
600/* popup */
601
602.leaflet-popup {
603	position: absolute;
604	text-align: center;
605	margin-bottom: 20px;
606	}
607.leaflet-popup-content-wrapper {
608	padding: 1px;
609	text-align: left;
610	border-radius: 12px;
611	}
612.leaflet-popup-content {
613	margin: 13px 24px 13px 20px;
614	line-height: 1.3;
615	font-size: 13px;
616	font-size: 1.08333em;
617	min-height: 1px;
618	}
619.leaflet-popup-content p {
620	margin: 17px 0;
621	margin: 1.3em 0;
622	}
623.leaflet-popup-tip-container {
624	width: 40px;
625	height: 20px;
626	position: absolute;
627	left: 50%;
628	margin-top: -1px;
629	margin-left: -20px;
630	overflow: hidden;
631	pointer-events: none;
632	}
633.leaflet-popup-tip {
634	width: 17px;
635	height: 17px;
636	padding: 1px;
637
638	margin: -10px auto 0;
639	pointer-events: auto;
640
641	-webkit-transform: rotate(45deg);
642	   -moz-transform: rotate(45deg);
643	    -ms-transform: rotate(45deg);
644	        transform: rotate(45deg);
645	}
646.leaflet-popup-content-wrapper,
647.leaflet-popup-tip {
648	background: white;
649	color: #333;
650	box-shadow: 0 3px 14px rgba(0,0,0,0.4);
651	}
652.leaflet-container a.leaflet-popup-close-button {
653	position: absolute;
654	top: 0;
655	right: 0;
656	border: none;
657	text-align: center;
658	width: 24px;
659	height: 24px;
660	font: 16px/24px Tahoma, Verdana, sans-serif;
661	color: #757575;
662	text-decoration: none;
663	background: transparent;
664	}
665.leaflet-container a.leaflet-popup-close-button:hover,
666.leaflet-container a.leaflet-popup-close-button:focus {
667	color: #585858;
668	}
669.leaflet-popup-scrolled {
670	overflow: auto;
671	}
672
673.leaflet-oldie .leaflet-popup-content-wrapper {
674	-ms-zoom: 1;
675	}
676.leaflet-oldie .leaflet-popup-tip {
677	width: 24px;
678	margin: 0 auto;
679
680	-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
681	filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
682	}
683
684.leaflet-oldie .leaflet-control-zoom,
685.leaflet-oldie .leaflet-control-layers,
686.leaflet-oldie .leaflet-popup-content-wrapper,
687.leaflet-oldie .leaflet-popup-tip {
688	border: 1px solid #999;
689	}
690
691
692/* div icon */
693
694.leaflet-div-icon {
695	background: #fff;
696	border: 1px solid #666;
697	}
698
699
700/* Tooltip */
701/* Base styles for the element that has a tooltip */
702.leaflet-tooltip {
703	position: absolute;
704	padding: 6px;
705	background-color: #fff;
706	border: 1px solid #fff;
707	border-radius: 3px;
708	color: #222;
709	white-space: nowrap;
710	-webkit-user-select: none;
711	-moz-user-select: none;
712	-ms-user-select: none;
713	user-select: none;
714	pointer-events: none;
715	box-shadow: 0 1px 3px rgba(0,0,0,0.4);
716	}
717.leaflet-tooltip.leaflet-interactive {
718	cursor: pointer;
719	pointer-events: auto;
720	}
721.leaflet-tooltip-top:before,
722.leaflet-tooltip-bottom:before,
723.leaflet-tooltip-left:before,
724.leaflet-tooltip-right:before {
725	position: absolute;
726	pointer-events: none;
727	border: 6px solid transparent;
728	background: transparent;
729	content: "";
730	}
731
732/* Directions */
733
734.leaflet-tooltip-bottom {
735	margin-top: 6px;
736}
737.leaflet-tooltip-top {
738	margin-top: -6px;
739}
740.leaflet-tooltip-bottom:before,
741.leaflet-tooltip-top:before {
742	left: 50%;
743	margin-left: -6px;
744	}
745.leaflet-tooltip-top:before {
746	bottom: 0;
747	margin-bottom: -12px;
748	border-top-color: #fff;
749	}
750.leaflet-tooltip-bottom:before {
751	top: 0;
752	margin-top: -12px;
753	margin-left: -6px;
754	border-bottom-color: #fff;
755	}
756.leaflet-tooltip-left {
757	margin-left: -6px;
758}
759.leaflet-tooltip-right {
760	margin-left: 6px;
761}
762.leaflet-tooltip-left:before,
763.leaflet-tooltip-right:before {
764	top: 50%;
765	margin-top: -6px;
766	}
767.leaflet-tooltip-left:before {
768	right: 0;
769	margin-right: -12px;
770	border-left-color: #fff;
771	}
772.leaflet-tooltip-right:before {
773	left: 0;
774	margin-left: -12px;
775	border-right-color: #fff;
776	}
777
778/* Printing */
779
780@media print {
781	/* Prevent printers from removing background-images of controls. */
782	.leaflet-control {
783		-webkit-print-color-adjust: exact;
784		print-color-adjust: exact;
785		}
786	}
787</style>
788<!-- end Simple Custom CSS and JS -->
789<!-- start Simple Custom CSS and JS -->
790<style>
791/* Header */
792.main-navigation {
793    border-bottom: 1px solid var(--grey);
794}
795.main-navigation .header-cta {
796	display: inline-flex;
797}
798.slideout-navigation {
799	padding: 1.5rem;
800	transition: all, transform 600ms cubic-bezier(0.165, 0.84, 0.44, 1) !important;
801}
802.header-social-icons a {
803	font-size: 1.5rem;
804}
805.main-navigation .inside-navigation {
806	justify-content: center;
807}
808.menu-toggle .mobile-menu {
809	display: none;
810}
811.menu-toggle .gp-icon {
812	color: var(--dark);
813}
814
815/* Homepage */
816div#n2-ss-6 .n2-font-3ecf0eae1330c67fdc521820f79d1cd5-hover {
817	font-family: 'DM Sans', sans-serif;
818	letter-spacing: 0;
819	line-height: 1.3;
820}
821div#n2-ss-6 .n2-style-4ad07700499462953f729d8debb8afbb-heading {
822    background: var(--dark);
823    border-radius: 30px;
824}
825
826/* Itinerary */
827.airport-map {
828	height: 400px;
829	border-radius: 10px;
830}
831.faq-accordion-answer {
832  display: none;
833  transition: all 0.3s;
834}
835.faq-accordion-item.open .faq-accordion-question {
836	font-weight: 600;
837	border-bottom: 1px solid var(--accent);
838}
839.faq-accordion-item.open .faq-accordion-question .gb-shape {
840	 transform: rotate(180deg);
841}
842.faq-accordion-item.open .faq-accordion-answer {
843  display: block;
844}
845.faq-accordion-question {
846  cursor: pointer;
847}
848.gb-loop-item:last-child .departing-airport-location,
849.gb-loop-item:last-child > div {
850	margin-bottom: 0;
851}
852.single-itinerary .gb-text p a,
853.single-destination .gb-text p a {
854	text-decoration: underline;
855	font-weight: 700;
856}
857.single-itinerary .gb-text p a:hover,
858.single-destination .gb-text p a:hover {
859	color: currentcolor;
860}
861
862/* Gravity Forms */
863.gform-theme--foundation .gform_fields {
864	row-gap: 1rem !important;
865}
866.gform-theme--foundation .gfield input,
867.gform-theme--foundation .gfield select {
868    border: 1px solid var(--grey) !important;
869    height: 50px !important;
870    border-radius: 5px !important;
871	line-height: 50px;
872}
873.gform-theme--foundation .gfield textarea.large {
874    min-block-size: 10rem;
875	border: 0 !important;
876	border-radius: 5px !important;
877}
878.gform-theme--foundation .gform_button {
879	background: var(--dark) !important;
880    height: 50px !important;
881    min-width: 300px !important;
882    font-size: 1rem !important;
883    font-weight: 700 !important;
884}
885.gform-theme--foundation .gform_button:hover {
886	background: var(--accent) !important;
887}
888
889/* Posts */
890.dynamic-entry-content a {
891	text-decoration: underline;
892}
893.simpletoc {
894    background: #f1f1f1;
895    padding: 30px;
896    border-radius: 15px;
897    margin: 10px 0 20px;
898}
899.simpletoc .simpletoc-title {
900	margin-bottom: 20px;
901	color: #000;
902}
903
904.simpletoc ul, .simpletoc ol {
905	margin-bottom: 0;
906	padding-bottom: 0;
907	margin-left: 20px;
908}
909.wp-block-list {
910	margin-left: 20px;
911}
912.simpletoc-list a {
913	font-weight: 600;
914	color: var(--dark);
915	text-decoration: none;
916}
917.simpletoc-list a:hover {
918	color: var(--accent);
919}
920.single .has-fixed-layout td {
921	padding: 12px 16px;
922	border: 1px solid #eaeaea;
923}
924.wp-block-image + p {
925	margin-top: 1rem;
926}
927.logged-in .post-sidebar > div {
928	top: 120px;
929}
930
931/*  Klaviyo Form */
932.klaviyo-form button[type="button"]:hover {
933	background: var(--accent) !important;
934}
935div[data-testid="form-row"]:nth-child(2) > div {
936	padding-top: 5px !important;
937}
938div[data-testid="form-row"] [id^="rich-text-"] {
939	margin-left: -10px !important;
940    margin-right: -10px !important;
941    width: calc(100% + 20px) !important;
942}
943div[data-testid="form-row"]:first-child [id^="rich-text-"] {
944	padding: 1rem 1rem 0.5rem !important;
945	background: var(--light-blue) !important;
946	border-radius: 15px 15px 0 0 !important;
947}
948div[data-testid="form-row"]:nth-child(2) [id^="rich-text-"] {
949	padding: 0 1rem 1rem !important;
950	background: var(--light-blue) !important;
951	border-radius: 0 0 15px 15px !important;
952	margin-top: -1rem !important;
953}
954div[data-testid="form-row"] [id^="rich-text-"] p {
955	font-family: inherit !important;
956	color: var(--dark) !important;
957}
958
959/* Affiliate Form  */
960/* .page-id-4265 .bt-main-content-ss {
961    padding: 40px 0 30px;
962}
963.page-id-4265 .wp-block-image {
964	margin-top: 0;
965} */
966.page-id-4377 .bt-main-content-ss {
967	padding: 15px 0 30px;
968}
969.page-id-4264 .bt-main-content-ss {
970	padding-top: 60px;
971}
972.page-id-4264 .bt-container,
973.page-id-4275 .bt-container {
974	max-width: 800px;
975	padding: 0 30px;
976}
977.page-id-4377 .bt-container,
978.page-id-4371 .bt-container {
979	max-width: 1000px;
980	padding: 0 30px;
981}
982.page-id-4264 .affwp-form,
983.page-id-4275 .lost_reset_password {
984	background: var(--dark);
985    border-radius: 20px;
986    padding: 30px 40px 40px;
987}
988.page-id-4265 .affwp-form {
989	margin-bottom: 0;
990}
991.page-id-4265 .affwp-form fieldset legend {
992	display: none;
993}
994.page-id-4264 .affwp-form legend {
995	font-size: 28px;
996	padding-top: 15px;
997	font-weight: 700;
998	display: block;
999	color: #fff;
1000}
1001.page-id-4265 .affwp-form input[type=text],
1002.page-id-4265 .affwp-form input[type=email],
1003.page-id-4265 .affwp-form input[type=url],
1004.page-id-4265 .affwp-form input[type=password],
1005.page-id-4264 .affwp-form input[type=text],
1006.page-id-4264 .affwp-form input[type=password],
1007.page-id-4275 .lost_reset_password input[type=text] {
1008	padding: 0 15px;
1009	border-radius: 5px;
1010	height: 58px;
1011	background: #fff;
1012}
1013.page-id-4264 .affwp-form label,
1014.page-id-4275 .lost_reset_password label,
1015.page-id-4275 .lost_reset_password p {
1016	color: #fff;
1017	font-weight: 700;
1018}
1019.page-id-4265 .affwp-form label {
1020	display: block;
1021	margin-bottom: 0.5rem;
1022}
1023.page-id-4265 .affwp-form .affwp-label-checkbox-multiple, 
1024.page-id-4265 .affwp-form .affwp-label-radio {
1025	font-weight: 300;
1026}
1027.page-id-4265 .affwp-form fieldset p:last-of-type {
1028	display: flex;
1029    gap: 10px;
1030    align-items: flex-start;
1031    line-height: 1.2;
1032}
1033.page-id-4263 .affwp-form input[type=submit],
1034.page-id-4263 .affwp-affiliate-link-copy-link,
1035.page-id-4265 .affwp-form input[type=submit],
1036.page-id-4264 .affwp-form input[type=submit],
1037.page-id-4275 .lost_reset_password button[type=submit]{
1038	background: var(--accent);
1039	color: #fff;
1040	border-radius: 30px !important;
1041	padding: 0.8rem 2rem;
1042}
1043.page-id-4264 .affwp-form input[type=submit]:hover,
1044.page-id-4275 .lost_reset_password button[type=submit]:hover {
1045	background: #fff;
1046	color: var(--dark);
1047}
1048.page-id-4265 .affwp-form input[type=submit]:hover {
1049	background: var(--dark);
1050}
1051.affwp-field-label a {
1052	text-decoration: underline;
1053}
1054.affwp-lost-password a {
1055	text-decoration: underline;
1056	color: #fff;
1057}
1058.affwp-field-label a:hover,
1059.affwp-lost-password a:hover {
1060	color: #2266A2;
1061}
1062.affwp-form input[type=checkbox] {
1063    cursor: pointer;
1064}
1065#affwp-affiliate-dashboard {
1066	max-width: 1000px;
1067    margin: 30px auto 50px;
1068    padding: 0 30px;
1069}
1070.affwp-affiliate-link-copy-link.button {
1071	white-space: nowrap;
1072}
1073#affwp-affiliate-dashboard button,
1074#affwp-affiliate-dashboard .button{
1075	background: var(--dark);
1076	color: #fff;
1077	border-radius: 5px;
1078}
1079#affwp-affiliate-dashboard #affwp-affiliate-dashboard-tabs li a {
1080    color: var(--dark);
1081}
1082@media (max-width: 767px) {
1083	.best-airport__text {
1084		width: 100% !important;
1085	}
1086	.airport-list {
1087		height: auto !important;
1088	}
1089}
1090@media (max-width: 480px) {
1091	#site-navigation .navigation-branding, 
1092	#sticky-navigation .navigation-branding {
1093        margin-left: 20px;
1094    }
1095	.page-id-4265 .bt-main-content-ss {
1096    	padding: 30px 0;
1097	}
1098/* 	.page-id-4265 .affwp-form {
1099		padding: 15px 20px 30px;
1100	} */
1101	.page-id-4264 .affwp-form {
1102		padding: 20px;
1103		margin-bottom: 0;
1104	}
1105	.page-id-4264 .bt-main-content-ss {
1106    	padding-top: 30px;
1107	}
1108	.page-id-4264 .affwp-form legend {
1109		font-size: 20px;
1110	}
1111	.page-id-4377 h2 {
1112		font-size: 28px;
1113		margin-bottom: 0;
1114	}
1115	.page-id-4371 h2 {
1116		margin: 0;
1117		font-size: 32px;
1118	}
1119	.m-0 {
1120		margin: 0 !important;
1121	}
1122	.page-id-4265 h2 {
1123		font-size: 28px;
1124	}
1125	.post-sidebar {
1126		display: none;
1127	}
1128}</style>
1129<!-- end Simple Custom CSS and JS -->
1130<!-- start Simple Custom CSS and JS -->
1131<style>
1132/* Global Styles */
1133:root {
1134  --primary-color: #467ff7;
1135  --secondary-color: #232d40;
1136  --light-gray: #e7e7e7;
1137  --text-gray: #4a4a4a;
1138  --text-dark: #1c244b;
1139  --white: #ffffff;
1140  --red: #c33c54;
1141  --light-blue: #c3ddf1;
1142  --light-green: #f0f7f3;
1143}
1144
1145/* ============================================================
1146   Common styles between both forms
1147   ============================================================ */
1148.btn {
1149    background: var(--dark);
1150    color: #fff;
1151    border: none;
1152    padding: 16px 32px;
1153    border-radius: 50px;
1154    cursor: pointer;
1155    transition: all 0.3s ease;
1156    margin-top: 1rem;
1157    align-self: flex-start;
1158	display: flex;
1159	align-items: center;
1160	gap: 1rem;
1161	font-weight: 500;
1162}
1163.btn svg {
1164	width: 1em;
1165	height: 1em;
1166	font-size: 1.25rem;
1167}
1168.btn:hover {
1169    background: var(--accent);
1170	color: #fff;
1171}
1172.btn:focus {
1173	background: var(--dark);
1174	color: #fff;
1175}
1176
1177/* ----- Date Time picker ----- */
1178.ui-datepicker {
1179  max-width: 300px;
1180  border-radius: 0 !important;
1181  padding: 0 !important;
1182}
1183.ui-datepicker .ui-datepicker-header {
1184  border-radius: 0 !important;
1185  background: var(--secondary-color);
1186  color: #fff;
1187}
1188.ui-datepicker .ui-datepicker-title,
1189.ui-datepicker th {
1190  font-size: 16px;
1191}
1192.ui-datepicker .ui-datepicker-prev span,
1193.ui-datepicker .ui-datepicker-next span {
1194  filter: brightness(100);
1195}
1196.ui-state-hover {
1197  background: var(--secondary-color) !important;
1198  border: 0 !important;
1199  color: var(--white) !important;
1200}
1201.ui-datepicker td {
1202  padding: 0 !important;
1203}
1204.ui-datepicker td span,
1205.ui-datepicker td a {
1206  text-align: center !important;
1207  font-weight: 700 !important;
1208}
1209.ui-state-default {
1210  font-size: 12px;
1211  padding: 0 10px;
1212  height: 30px;
1213}
1214.ui-datepicker .ui-datepicker-buttonpane {
1215  width: 77px;
1216  float: right;
1217  margin: 0 !important;
1218  padding: 5px !important;
1219  border-top: 2px solid #ccc !important;
1220}
1221.ui-datepicker .ui-datepicker-buttonpane button {
1222  background: var(--text-dark);
1223  color: var(--white);
1224  border: 0;
1225  border-radius: 2px !important;
1226  text-transform: none;
1227  padding: 0px 15px;
1228}
1229.ui-timepicker-div.ui-timepicker-oneLine dl {
1230  text-align: left !important;
1231  margin: 0 !important;
1232  padding: 0 !important;
1233}
1234.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_time_label {
1235  padding-right: 10px;
1236  font-size: 16px;
1237}
1238.ui-datepicker-buttonpane button:first-child {
1239  display: none;
1240}
1241.ui-timepicker-select {
1242  appearance: auto !important;
1243  padding: 0 !important;
1244  background: #fff !important;
1245  font-weight: 700 !important;
1246}
1247.ui-timepicker-select,
1248.ui-datepicker .ui-datepicker-buttonpane button {
1249  font-size: 14px !important;
1250  border-radius: 0 !important;
1251}
1252.ui-timepicker-div.ui-timepicker-oneLine {
1253  padding: 10px 5px 0 !important;
1254  border-top: 2px solid #ccc;
1255  margin: 0;
1256  float: left;
1257  width: 220px;
1258}
1259.ui-timepicker-div.ui-timepicker-oneLine dl {
1260  margin-bottom: 0;
1261}
1262
1263/* ----- Error message ----- */
1264.error-message {
1265  display: block;
1266  line-height: 1.3;
1267  margin: 5px 0 0 0;
1268}
1269
1270/* ----- Loader ----- */
1271.loader {
1272  text-align: center;
1273  padding: 20px;
1274  color: var(--text-gray);
1275}
1276
1277@media (max-width: 480px) {
1278    .btn {
1279        padding: 14px 24px;
1280        width: 100%;
1281		justify-content: center;
1282    }
1283}
1284
1285/* ============================================================
1286   Quote Form - Extended
1287   ============================================================ */
1288.quote-form--extended label {
1289  color: var(--text-dark);
1290  font-size: 14px;
1291  cursor: pointer;
1292  line-height: 1.5;
1293}
1294.quote-form--extended .quote-type {
1295  display: flex;
1296  gap: 30px;
1297  margin-bottom: 10px;
1298}
1299/* Custom radio button */
1300.quote-form--extended .custom-radio label {
1301  position: relative;
1302  padding-left: 30px;
1303  cursor: pointer;
1304  font-size: 16px;
1305}
1306.quote-form--extended .custom-radio input[type="radio"] {
1307  position: absolute;
1308  opacity: 0;
1309  cursor: pointer;
1310}
1311.quote-form--extended .custom-radio label:before {
1312  content: "";
1313  position: absolute;
1314  left: 0;
1315  top: 50%;
1316  transform: translateY(-50%);
1317  width: 24px;
1318  height: 24px;
1319  border-radius: 50%;
1320  border: 2px solid #ccc;
1321  background-color: #fff;
1322  transition: all 0.3s ease-in-out;
1323}
1324.quote-form--extended .custom-radio label:hover:before {
1325  border-color: #2196f3;
1326}
1327.quote-form--extended .custom-radio input[type="radio"]:checked + label:before,
1328.quote-form--extended .custom-radio label:has(input[type="radio"]:checked):before {
1329  border-color: #2196f3;
1330  background-color: #fff;
1331}
1332.quote-form--extended .custom-radio label:after {
1333  content: "";
1334  position: absolute;
1335  left: 12px;
1336  top: 50%;
1337  transform: translate(-50%, -50%);
1338  width: 12px;
1339  height: 12px;
1340  border-radius: 50%;
1341  background: #2196f3;
1342  transition: all 0.3s ease-in-out;
1343  opacity: 0;
1344}
1345.quote-form--extended .custom-radio input[type="radio"]:checked + label:after,
1346.quote-form--extended .custom-radio label:has(input[type="radio"]:checked):after {
1347  opacity: 1;
1348}
1349.quote-form--extended .custom-radio input[type="radio"]:focus + label:before,
1350.quote-form--extended .custom-radio label:has(input[type="radio"]:focus):before {
1351  box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.3);
1352}
1353
1354/* Datepicker icon */
1355.quote-form--extended .input-wrapper {
1356  position: relative;
1357  display: inline-block;
1358  width: 100%;
1359}
1360.quote-form--extended .departure-datepicker,
1361.quote-form--extended .return-datepicker {
1362  padding-left: 40px !important;
1363}
1364.quote-form--extended .calendar-icon {
1365  position: absolute;
1366  left: 0px;
1367  top: 22px;
1368  transform: translateY(-50%);
1369  color: #666;
1370  pointer-events: none;
1371  width: 24px;
1372  height: 24px;
1373}
1374.quote-form--extended .quote-container__inner {
1375  margin-bottom: 1rem;
1376}
1377.quote-form--extended .trip-row,
1378.quote-form--extended .multicity-row {
1379  border: 1px solid var(--light-gray);
1380  border-radius: 10px;
1381}
1382.quote-form--extended .multicity-row {
1383  margin: 15px 0;
1384}
1385.quote-form--extended .trip-row {
1386  display: grid;
1387  grid-template-columns: 2fr 1fr 1fr 1fr;
1388  align-items: center;
1389  background: #fff;
1390}
1391.quote-form--extended .trip-row > div {
1392  width: 100%;
1393  position: relative;
1394  border-right: 1px solid var(--light-gray);
1395  padding: 15px;
1396  height: 100%;
1397  display: flex;
1398  flex-direction: column;
1399  justify-content: center;
1400  gap: 10px;
1401}
1402
1403/* Input Fields */
1404.quote-form--extended input[type="text"],
1405.quote-form--extended input[type="number"],
1406.quote-form--extended input[type="email"],
1407.quote-form--extended textarea {
1408  width: 100%;
1409  font-size: 16px !important;
1410  color: var(--text-dark);
1411  padding: 0;
1412  height: 40px;
1413  border-radius: 0;
1414  border: 0;
1415  border-bottom: 1px solid var(--light-gray);
1416  font-weight: 700;
1417}
1418
1419.quote-form--extended input[type="text"]:focus,
1420.quote-form--extended input[type="number"]:focus,
1421.quote-form--extended input[type="email"]:focus,
1422.quote-form--extended select:focus,
1423.quote-form--extended textarea:focus {
1424  outline: none;
1425  border-bottom: 1px solid var(--text-gray);
1426}
1427
1428/* Passenger Control */
1429.quote-form--extended .passenger-wrapper {
1430  width: 150px;
1431}
1432
1433.quote-form--extended .passenger-control {
1434  display: flex;
1435  align-items: center;
1436  gap: 10px;
1437  width: 100%;
1438  height: 40px;
1439}
1440
1441.quote-form--extended .passenger-control button {
1442  width: 24px;
1443  height: 24px;
1444  background: var(--secondary-color);
1445  border-radius: 50%;
1446  cursor: pointer;
1447  font-size: 14px;
1448  display: flex;
1449  align-items: center;
1450  justify-content: center;
1451  padding: 0;
1452  color: var(--white);
1453}
1454
1455.quote-form--extended .passenger-control input {
1456  width: 50px;
1457  text-align: center;
1458  border: none;
1459  padding: 0;
1460  font-size: 16px;
1461  color: var(--text-dark);
1462  height: 100%;
1463  font-weight: 700;
1464}
1465
1466.quote-form--extended .passenger-control input:focus {
1467  outline: none;
1468  box-shadow: none;
1469}
1470
1471.quote-form--extended .location-row div {
1472  position: relative;
1473}
1474/* Suggestions Dropdown */
1475.quote-form--extended .location-row .suggestions {
1476  position: absolute;
1477  background: var(--white);
1478  border-radius: 4px;
1479  max-height: 300px;
1480  overflow-y: auto;
1481  width: 100%;
1482  z-index: 1000;
1483  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
1484  top: 100%;
1485  left: 0;
1486}
1487
1488.quote-form--extended .location-row .suggestion-item {
1489  padding: 8px 12px;
1490  cursor: pointer;
1491  border-bottom: 1px solid #eee;
1492  font-size: 14px;
1493  line-height: 1.3;
1494}
1495
1496.quote-form--extended .location-row .suggestion-item:hover {
1497  background-color: #f5f5f5;
1498}
1499
1500.quote-form--extended .municipality-header {
1501  padding: 10px 12px;
1502  background-color: #f8f8f8;
1503  border-bottom: 1px solid #eee;
1504}
1505
1506.quote-form--extended .municipality-name {
1507  font-weight: 600;
1508  color: #333;
1509  cursor: pointer;
1510  font-size: 16px;
1511}
1512
1513.quote-form--extended .municipality-name:hover {
1514  color: #0066cc;
1515}
1516
1517.quote-form--extended .airport-info {
1518  display: flex;
1519  flex-direction: column;
1520}
1521
1522.quote-form--extended .airport-name {
1523  color: #333;
1524}
1525
1526/* Buttons */
1527.quote-form--extended .passenger-control button,
1528.quote-form--extended button.btn-remove {
1529  padding: 15px;
1530  border-radius: 3px;
1531  font-size: 24px;
1532  background: var(--secondary-color);
1533	cursor: pointer;
1534}
1535.quote-form--extended button.btn-remove {
1536  background: var(--red) !important;
1537  color: #fff;
1538  padding: 0px 15px;
1539}
1540
1541.quote-form--extended .multicity-section {
1542	position: relative;
1543}
1544.quote-form--extended .multicity-section .btn-add-city {
1545  background: transparent !important;
1546  color: var(--secondary-color) !important;
1547  position: absolute;
1548  right: 0;
1549  font-size: 14px;
1550}
1551.quote-form--extended .multicity-section .btn-add-city:hover {
1552  text-decoration: underline;
1553}
1554/* Trip Details Section */
1555.quote-form--extended .trip-summary {
1556  background: var(--light-green);
1557  padding: 2rem;
1558  border-radius: 10px;
1559}
1560.quote-form--extended .trip-summary h5 {
1561  color: var(--text-dark);
1562  font-size: 14px;
1563  line-height: 1.5;
1564  font-weight: normal;
1565  text-transform: uppercase;
1566  letter-spacing: 1px;
1567}
1568.quote-form--extended .trip-summary p {
1569  font-size: 14px;
1570  line-height: 1.5;
1571}
1572.quote-form--extended .trip-summary .trip-summary-content:first-child {
1573  border-bottom: 2px solid #ccc;
1574  margin-bottom: 20px;
1575}
1576/* guest Info Section */
1577.quote-form--extended .quote-summary-row form {
1578	background: #fff;
1579    padding: 2rem;
1580    border-radius: 10px;
1581}
1582.quote-form--extended .guest-info {
1583  margin-bottom: 20px;
1584}
1585.quote-form--extended .guest-info-row {
1586  margin-bottom: 20px;
1587}
1588.quote-form--extended .guest-info input,
1589.quote-form--extended .guest-info select,
1590.quote-form--extended .guest-info textarea {
1591  border: 1px solid var(--light-gray);
1592  padding: 15px;
1593  height: 50px;
1594	width: 100%;
1595	border-radius: 5px;
1596}
1597.quote-form--extended .guest-info textarea {
1598  height: 150px;
1599}
1600
1601.quote-form--extended .quote-summary {
1602  margin-top: 60px;
1603  font-family: Poppins, sans-serif;
1604}
1605.quote-form--extended .quote-summary h4 {
1606  margin-bottom: 40px;
1607}
1608
1609/* Multi-city specific styles */
1610.quote-form--extended .multi-city-trip {
1611  margin-top: 20px;
1612}
1613.quote-form--extended .quote-summary-row,
1614.quote-form--extended .guest-info-row {
1615  display: grid;
1616  grid-template-columns: 1fr 1fr;
1617  grid-gap: 1rem;
1618}
1619.quote-form--extended .guest-info-row {
1620	align-items: end;
1621}
1622.quote-form--extended input:focus::placeholder {
1623  opacity: 0;
1624  transition: opacity 0.3s;
1625}
1626
1627@media (max-width: 768px) {
1628  .quote-form--extended .quote-type {
1629    gap: 5px;
1630    justify-content: center;
1631    margin-bottom: 15px;
1632  }
1633  .quote-form--extended .quote-type label {
1634    white-space: nowrap;
1635    font-size: 14px;
1636  }
1637  .quote-form--extended .trip-row {
1638    grid-template-columns: 1fr;
1639  }
1640  .quote-form--extended .multicity-section .btn-add-city {
1641    position: static;
1642    padding: 0;
1643  }
1644  .quote-form--extended .trip-summary {
1645    padding: 30px;
1646    display: none;
1647  }
1648  .quote-form--extended .quote-summary-row,
1649  .quote-form--extended .guest-info-row {
1650    grid-template-columns: 1fr;
1651    gap: 20px;
1652  }
1653  .quote-form--extended .departure-datepicker,
1654  .quote-form--extended .return-datepicker,
1655  .quote-form--extended input[name="multicityDeparture[]"],
1656  .quote-form--extended .passenger-wrapper {
1657    width: 100% !important;
1658  }
1659}
1660
1661/* ============================================================
1662   Quote Form - Simple
1663   ============================================================ */
1664.quote-form--simple input[type="number"] {
1665	max-width: 3rem;
1666}
1667
1668/* Form rows with grid layouts */
1669.quote-form--simple .form-row {
1670    display: grid;
1671    gap: 20px;
1672}
1673
1674.quote-form--simple .form-row.two-columns {
1675    grid-template-columns: 1fr 1fr;
1676}
1677
1678.quote-form--simple .form-row.one-column {
1679    grid-template-columns: 1fr;
1680}
1681
1682/* Form fields */
1683.quote-form--simple .form-field {
1684    display: flex;
1685    flex-direction: row;
1686    align-items: center;
1687    gap: 7px;
1688    border-bottom: 1px solid var(--grey);
1689    margin-bottom: 15px;
1690	position: relative;
1691}
1692
1693/* Message field exception - keep it vertical */
1694.quote-form--simple .form-row.one-column .form-field:has(textarea) {
1695    flex-direction: column;
1696    align-items: flex-start;
1697    gap: 8px;
1698}
1699
1700.quote-form--simple .form-field label {
1701    font-weight: 700;
1702    color: #2c3e50;
1703    font-size: 16px;
1704    flex-shrink: 0;
1705}
1706
1707/* Message field label - no min-width constraint */
1708.quote-form--simple .form-row.one-column .form-field:has(textarea) label {
1709    min-width: auto;
1710}
1711
1712/* Input styles */
1713.quote-form--simple .form-field input,
1714.quote-form--simple .form-field textarea {
1715    padding: 10px 0;
1716    border: none;
1717    border-radius: 0;
1718    font-size: 16px;
1719	font-weight: 400;
1720    transition: all 0.3s ease;
1721    background-color: transparent;
1722    flex: 1;
1723    outline: none;
1724}
1725
1726.quote-form--simple .form-field:focus-within {
1727    border-bottom-color: #3498db;
1728}
1729
1730.quote-form--simple .form-field input::placeholder,
1731.quote-form--simple .form-field textarea::placeholder {
1732    color: var(--text);
1733}
1734
1735/* Textarea specific styles */
1736.quote-form--simple .form-field textarea {
1737    resize: vertical;
1738    max-height: 80px;
1739    font-family: inherit;
1740    background-color: transparent;
1741}
1742
1743/* Suggestions dropdown */
1744.quote-form--simple .suggestions {
1745    position: absolute;
1746    background: white;
1747    border: 1px solid var(--grey);
1748    border-radius: 0 0 5px 5px;
1749    max-height: 200px;
1750    overflow-y: auto;
1751    z-index: 1000;
1752    display: none;
1753	top: 100%;
1754    width: 100%;
1755}
1756
1757.quote-form--simple .suggestions.show {
1758    display: block;
1759}
1760.quote-form--simple .suggestion-item {
1761	padding: 0.25rem 0.5rem;
1762	border-bottom: 1px solid var(--light-grey);
1763	cursor: pointer;
1764}
1765.quote-form--simple .suggestion-item:hover {
1766	background: var(--light-grey);
1767}
1768.quote-form--simple .error-message {
1769	position: absolute;
1770	top: 40px;
1771}
1772
1773/* Sidebar Quote */
1774.post-sidebar .quote-form--simple .form-row.two-columns {
1775    grid-template-columns: 1fr;
1776	gap: 0;
1777}
1778.post-sidebar .quote-form--simple .form-field {
1779	margin-bottom: 0;
1780}
1781.post-sidebar .quote-form--simple .form-row:last-of-type {
1782	margin-top: 0.5rem;
1783}
1784
1785/* Responsive design */
1786@media (max-width: 768px) {
1787	.quote-form--simple .form-row:nth-child(6) {
1788		margin-top: 10px;
1789	}
1790    .quote-form--simple .form-container {
1791        padding: 0;
1792        margin: 0;
1793    }
1794    
1795    .quote-form--simple .form-row.two-columns {
1796        grid-template-columns: 1fr;
1797        gap: 0;
1798    }
1799    
1800    .quote-form--simple .form-row {
1801        gap: 15px;
1802        margin-bottom: 0;
1803    }
1804	.quote-form--simple .form-field {
1805		margin-bottom: 5px;
1806	}
1807    
1808    .quote-form--simple .passenger-control {
1809        width: 100%;
1810    }
1811    
1812    .quote-form--simple .passenger-control input {
1813        flex: 1;
1814        max-width: 100px;
1815    }
1816}
1817
1818@media (max-width: 480px) {
1819    .quote-form--simple .form-field input,
1820    .quote-form--simple .form-field textarea {
1821        padding: 10px 12px;
1822    }
1823    
1824    .quote-form--simple .passenger-btn {
1825        padding: 10px 12px;
1826        min-width: 40px;
1827    }
1828}
1829
1830/* ----- Utility Classes ----- */
1831.hidden {
1832  display: none !important;
1833}</style>
1834<!-- end Simple Custom CSS and JS -->
1835<link rel="stylesheet" media="all" type="text/css" href="//code.jquery.com/ui/1.11.0/themes/smoothness/jquery-ui.css" />
1836<!-- Timepicker addon CSS -->
1837<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-ui-timepicker-addon/1.6.3/jquery-ui-timepicker-addon.min.css">
1838<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" defer></script>
1838
1839<!-- Timepicker addon -->
1840<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-ui-timepicker-addon/1.6.3/jquery-ui-timepicker-addon.min.js" defer></script>
vendor: 2 bytes, line 1840
1840
1841<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11" type="pmdelayedscript" data-cfasync="false" data-no-optimize="1" data-no-defer="1" data-no-minify="1"></script>
1841<script defer data-domain="avskycharters.com" src="https://plausible.io/js/script.file-downloads.hash.outbound-links.pageview-props.revenue.tagged-events.js"></script>
vendor: 2 bytes, line 1841
1841
1842<script defer src="data:text/javascript;base64,d2luZG93LnBsYXVzaWJsZSA9IHdpbmRvdy5wbGF1c2libGUgfHwgZnVuY3Rpb24oKSB7ICh3aW5kb3cucGxhdXNpYmxlLnEgPSB3aW5kb3cucGxhdXNpYmxlLnEgfHwgW10pLnB1c2goYXJndW1lbnRzKSB9"></script>
1842
1843
1844<!-- Google tag (gtag.js) -->
vendor: 65 bytes, lines 1844-1845
1844
1845<script async src="https://www.googletagmanager.com/gtag/js?id=
1845G-Y5DSSLZ6C4
vendor: 13 bytes, line 1845
1845"></script>
1846<script defer src="data:text/javascript;base64,DQogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOw0KICBmdW5jdGlvbiBndGFnKCl7ZGF0YUxheWVyLnB1c2goYXJndW1lbnRzKTt9DQogIGd0YWcoJ2pzJywgbmV3IERhdGUoKSk7DQoNCiAgZ3RhZygnY29uZmlnJywgJ0ctWTVEU1NMWjZDNCcpOw0K"></script>
1846		
1846<script type="text/javascript" defer src="data:text/javascript;base64,CgkJdmFyIEFGRldQID0gQUZGV1AgfHwge307CgkJQUZGV1AucmVmZXJyYWxfdmFyID0gJ2dvJzsKCQlBRkZXUC5leHBpcmF0aW9uID0gMzA7CgkJQUZGV1AuZGVidWcgPSAwOwoKCgkJQUZGV1AucmVmZXJyYWxfY3JlZGl0X2xhc3QgPSAwOwoJCQ=="></script>
1846
1847	<noscript><style>.woocommerce-product-gallery{ opacity: 1 !important; }</style></noscript>
1848	<style class="wp-fonts-local">
1849@font-face{font-family:Inter;font-style:normal;font-weight:300 900;font-display:fallback;src:url('https://avskycharters.com/wp-content/plugins/woocommerce/assets/fonts/Inter-VariableFont_slnt,wght.woff2') format('woff2');font-stretch:normal;}
1850@font-face{font-family:Cardo;font-style:normal;font-weight:400;font-display:fallback;src:url('https://avskycharters.com/wp-content/plugins/woocommerce/assets/fonts/cardo_normal_400.woff2') format('woff2');}
1851</style>
1852<link rel="icon" href="https://avskycharters.com/wp-content/uploads/2024/11/cropped-cropped-avsky-charters-logo-2-32x32.png" sizes="32x32" />
1853<link rel="icon" href="https://avskycharters.com/wp-content/uploads/2024/11/cropped-cropped-avsky-charters-logo-2-192x192.png" sizes="192x192" />
1854<link rel="apple-touch-icon" href="https://avskycharters.com/wp-content/uploads/2024/11/cropped-cropped-avsky-charters-logo-2-180x180.png" />
1855<meta name="msapplication-TileImage" content="https://avskycharters.com/wp-content/uploads/2024/11/cropped-cropped-avsky-charters-logo-2-270x270.png" />
1856<style>.perfmatters-lazy-video{position:relative;width:100%;max-width:100%;height:0;padding-bottom:56.23%;overflow:hidden}.perfmatters-lazy-video img{position:absolute;top:0;right:0;bottom:0;left:0;display:block;width:100%;height:100%;max-width:none;margin:0;object-fit:cover;object-position:center;border:none;cursor:pointer;transition:.5s all;-webkit-transition:.5s all;-moz-transition:.5s all}.perfmatters-lazy-video img:hover{-webkit-filter:brightness(75%)}.perfmatters-lazy-video .play{position:absolute;top:50%;left:50%;right:auto;width:68px;height:48px;margin-left:-34px;margin-top:-24px;background:url(https://avskycharters.com/wp-content/plugins/perfmatters/img/youtube.svg) no-repeat;background-position:center;background-size:cover;pointer-events:none;filter:grayscale(1)}.perfmatters-lazy-video:hover .play{filter:grayscale(0)}.perfmatters-lazy-video iframe{position:absolute;top:0;left:0;width:100%;height:100%;z-index:99}.wp-block-embed.wp-has-aspect-ratio .wp-block-embed__wrapper:has(.perfmatters-lazy-video)::before{display:none;}</style></head>
1857
1858<body class="wp-singular page-template-default page page-id-50681 wp-custom-logo wp-embed-responsive wp-theme-generatepress wp-child-theme-avsky-itinerary theme-generatepress post-image-aligned-center slideout-enabled slideout-mobile sticky-menu-fade sticky-enabled both-sticky-menu woocommerce-no-js no-sidebar nav-below-header one-container header-aligned-left dropdown-hover full-width-content" itemtype="https://schema.org/WebPage" itemscope>
1859	<a class="screen-reader-text skip-link" href="#content" title="Skip to content">Skip to content</a>		<nav class="has-branding has-sticky-branding main-navigation nav-align-right sub-menu-right" id="site-navigation" aria-label="Primary"  itemtype="https://schema.org/SiteNavigationElement" itemscope>
1860			<div class="inside-navigation grid-container">
1861				<div class="navigation-branding"><div class="site-logo">
1862						<a href="https://avskycharters.com/" title="AvSky Charters" rel="home">
1863							<img data-perfmatters-preload class="header-image is-logo-image" alt="AvSky Charters" src="https://avskycharters.com/wp-content/uploads/2025/01/AvSky-Charters-Logo-on-transparent-background-with-globe-1.png" title="AvSky Charters" width="449" height="216" fetchpriority="high">
1864						</a>
1865					</div><div class="sticky-navigation-logo">
1866					<a href="https://avskycharters.com/" title="AvSky Charters" rel="home">
1867						<img src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='449'%20height='216'%20viewBox='0%200%20449%20216'%3E%3C/svg%3E" class="is-logo-image perfmatters-lazy" alt="AvSky Charters" width="449" height="216" data-src="https://avskycharters.com/wp-content/uploads/2025/01/AvSky-Charters-Logo-on-transparent-background-with-globe-1.png" />
1868					</a>
1869				</div></div>				<button class="menu-toggle" aria-controls="generate-slideout-menu" aria-expanded="false">
1870					<span class="gp-icon icon-menu-bars"><svg viewBox="0 0 512 512" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em"><path d="M0 96c0-13.255 10.745-24 24-24h464c13.255 0 24 10.745 24 24s-10.745 24-24 24H24c-13.255 0-24-10.745-24-24zm0 160c0-13.255 10.745-24 24-24h464c13.255 0 24 10.745 24 24s-10.745 24-24 24H24c-13.255 0-24-10.745-24-24zm0 160c0-13.255 10.745-24 24-24h464c13.255 0 24 10.745 24 24s-10.745 24-24 24H24c-13.255 0-24-10.745-24-24z" /></svg><svg viewBox="0 0 512 512" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em"><path d="M71.029 71.029c9.373-9.372 24.569-9.372 33.942 0L256 222.059l151.029-151.03c9.373-9.372 24.569-9.372 33.942 0 9.372 9.373 9.372 24.569 0 33.942L289.941 256l151.03 151.029c9.372 9.373 9.372 24.569 0 33.942-9.373 9.372-24.569 9.372-33.942 0L256 289.941l-151.029 151.03c-9.373 9.372-24.569 9.372-33.942 0-9.372-9.373-9.372-24.569 0-33.942L222.059 256 71.029 104.971c-9.372-9.373-9.372-24.569 0-33.942z" /></svg></span><span class="mobile-menu">Menu</span>				</button>
1871				<div id="primary-menu" class="main-nav"><ul id="menu-main-menu" class=" menu sf-menu"><li id="menu-item-50684" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-50681 current_page_item menu-item-50684"><a href="https://avskycharters.com/about-avsky-charters/" aria-current="page">About AvSky</a></li>
1872<li id="menu-item-47867" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-47867"><a href="https://avskycharters.com/charter-flight-quote/">Quote Request</a></li>
1873<li id="menu-item-50779" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-50779"><a href="https://avskycharters.com/jet-card/">Jet Card</a></li>
1874<li id="menu-item-50419" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-50419"><a href="https://avskycharters.com/govflights/">Government</a></li>
1875<li id="menu-item-50519" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-50519"><a href="https://avskycharters.com/medical-flights/">Medical Flights</a></li>
1876</ul></div>
1877<a class="gbp-button--tertiary gb-text-bb304a36 header-cta" href="https://avskycharters.com/contact/"><span class="gb-text">Contact</span><span class="gb-shape"><svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><title>arrow-right</title><g fill="currentColor" stroke-linecap="round" stroke-linejoin="round"> <path d="M5 24L42 24L41 24" stroke="currentColor" stroke-width="4" fill="none"></path> <path d="M28 38L42 24L28 10" stroke="currentColor" stroke-width="4" fill="none"></path> </g></svg></span></a>
1878			</div>
1879		</nav>
1880		
1881	<div class="site grid-container container hfeed" id="page">
1882				<div class="site-content" id="content">
1883			
1884	<div class="content-area" id="primary">
1885		<main class="site-main" id="main">
1886			
1887<article id="post-50681" class="post-50681 page type-page status-publish has-post-thumbnail" itemtype="https://schema.org/CreativeWork" itemscope>
1888	<div class="inside-article">
1889		
1890		<div class="entry-content" itemprop="text">
1891			
1892<!-- AvSky About — built 2026-08-22 by build/build.js. Edit src/, not this file. Patched 2026-09-26 from the live block: CARTO map key, engine updates, Privacy Policy footer link, Jet Card footer link. --><style type="text/css">@font-face {font-family:'Poppins';font-style:normal;font-weight:400;src:url(/cf-fonts/s/poppins/5.2.7/latin-ext/400/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'Poppins';font-style:normal;font-weight:400;src:url(/cf-fonts/s/poppins/5.2.7/devanagari/400/normal.woff2);unicode-range:U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09;font-display:swap;}@font-face {font-family:'Poppins';font-style:normal;font-weight:400;src:url(/cf-fonts/s/poppins/5.2.7/latin/400/normal.woff2);
1892unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Poppins';font-style:normal;font-weight:500;src:url(/cf-fonts/s/poppins/5.2.7/latin/500/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Poppins';font-style:normal;font-weight:500;src:url(/cf-fonts/s/poppins/5.2.7/latin-ext/500/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'Poppins';font-style:normal;font-weight:500;src:url(/cf-fonts/s/poppins/5.2.7/devanagari/500/normal.woff2);unicode-range:U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09;font-display:swap;}@font-face {font-family:'Poppins';font-style:normal;font-weight:600;src:url(/cf-fonts/s/poppins/5.2.7/latin-ext/600/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'Poppins';font-style:normal;font-weight:600;src:url(/cf-fonts/s/poppins/5.2.7/latin/600/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Poppins';font-style:normal;font-weight:600;src:url(/cf-fonts/s/poppins/5.2.7/devanagari/600/normal.woff2);unicode-range:U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09;font-display:swap;}@font-face {font-family:'Poppins';font-style:normal;font-weight:700;src:url(/cf-fonts/s/poppins/5.2.7/latin-ext/700/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'Poppins';font-style:normal;font-weight:700;src:url(/cf-fonts/s/poppins/5.2.7/latin/700/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Poppins';font-style:normal;font-weight:700;src:url(/cf-fonts/s/poppins/5.2.7/devanagari/700/normal.woff2);unicode-range:U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09;font-display:swap;}@font-face {font-family:'Poppins';font-style:normal;font-weight:800;src:url(/cf-fonts/s/poppins/5.2.7/devanagari/800/normal.woff2);unicode-range:U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09;font-display:swap;}@font-face {font-family:'Poppins';font-style:normal;font-weight:800;src:url(/cf-fonts/s/poppins/5.2.7/latin/800/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Poppins';font-style:normal;font-weight:800;src:url(/cf-fonts/s/poppins/5.2.7/latin-ext/800/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}</style><style id="avc-about-css">/* ===== AvSky Core Pages — shared engine styles =====Scope: everything under .avc (the block root). Ported from the Destination3.0 theme (quote modal, date sheet, calendar, success screens, Places
1892dropdown) plus GeneratePress-shell overrides and the design-system formstyles the JS engine renders into. No bare .btn (site snippet 3280). *//* ---- root / tokens / reset ---- */.avc{--navy:#0B1626;--navy-2:#0F1C2E;--gold:#F4C078;--gold-mid:#E8A33A;--gold-deep:#C8841F;--gold-deeper:#B57F32;--cream:#FAF7F2;--cream-2:#F4F1ED;--hairline:#ECE3D2;--tan:#8B7355;--tan-soft:#B8A88A;--tan-line:#D4C4A6;font-family:'Poppins',sans-serif;color:#1F2937;background:#FFFFFF;font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;position:relative;width:100%}/* page layout (sheet vs full-bleed) is appended by build/build.js → layoutCss() */.avc .avc-ftr-in{max-width:1320px;margin:0 auto}.avc *,.avc *::before,.avc *::after{box-sizing:border-box}.avc h1,.avc h2,.avc h3,.avc h4,.avc h5,.avc h6{font-family:'Poppins',sans-serif;margin:0;text-transform:none;letter-spacing:normal;line-height:inherit;color:inherit}.avc p{margin:0}.avc a{color:#0B1626;text-decoration:none;transition:color .15s,background .15s,border-color .15s}.avc a:hover,.avc a:focus{color:#C8841F;text-decoration:none}.avc img{max-width:100%;border:0}.avc svg{display:inline-block;vertical-align:middle}.avc button{font-family:'Poppins',sans-serif;line-height:normal;text-transform:none;letter-spacing:normal;margin:0;transition:background .15s,color .15s,border-color .15s}.avc input,.avc select,.avc textarea{font-family:'Poppins',sans-serif;line-height:normal;margin:0;box-shadow:none;-webkit-appearance:none;appearance:none;background-image:none;letter-spacing:normal;text-transform:none}/* The design's inputs fell back to Arial (18px line box); Poppins at the samebox keeps the design's field heights without clipping descenders. */.avc input{line-height:18px}.avc input[style*="font-family"]{line-height:normal}.avc select{line-height:23px}.avc textarea{line-height:normal}.avc .qm-cell input,.avc .qm-leg-cell input,.avc .qm-cell select{line-height:normal}.avc button{padding:1px 6px;border:0}.avc input::placeholder,.avc textarea::placeholder{color:#9CA3AF;opacity:1;font-family:'Poppins',sans-serif}.avc select option{color:#111827}.avc [hidden]{display:none!important}html.avc-locked,body.avc-locked{overflow:hidden}/* the block carries its own footer + H1 */.site-footer,.footer-widgets,#site-footer{display:none!important}.page .entry-header,h1.entry-title,.page-header{display:none!important}.entry-content>.avc:first-child{margin-top:0}/* ---- dual DOM: desktop/tablet tree vs mobile tree ---- */.avc .avc-d{display:block}.avc .avc-m{display:none}@media (max-width:640px){.avc .avc-d{display:none}.avc .avc-m{display:block}.avc{max-width:none;box-shadow:none}}/* ---- Leaflet office maps ---- */.avc .leaflet-container{font-family:'Poppins',sans-serif;background:#EAF1F5}.avc .leaflet-control-attribution{background:rgba(255,255,255,0.82)!important;color:#6B7280!important}.avc .leaflet-control-attribution a{color:#B0781F!important}@keyframes avcPulse{0%{box-shadow:0 0 0 0 rgba(232,169,60,0.5)}70%{box-shadow:0 0 0 16px rgba(232,169,60,0)}100%{box-shadow:0 0 0 0 rgba(232,169,60,0)}}@keyframes avcDash{to{stroke-dashoffset:-120}}.avc .av-route{animation:avcDash 14s linear infinite}/* ---- FAQ (quote page) ---- */.avc .avc-faq-c{transition:transform .25s ease}/* ---- contact / membership forms (static design markup + JS) ---- */.avc .avc-form-error{margin-top:14px;padding:10px 12px;background:#FEF2F2;border:1px solid #FECACA;color:#991B1B;font-size:14px;border-radius:8px}.avc [data-avc-form] [data-f]:disabled{opacity:.6}/* ---- quote form engine (design-system look) ---- */.avc .qf-tabs{display:flex;gap:28px;border-bottom:1px solid #ECE9E2;margin-bottom:30px}.avc .qf-tab{padding:0 0 14px;font-size:16px;font-weight:600;cursor:pointer;border:none;border-bottom:2px solid transparent;background:transparent;color:#9AA1AC;border-radius:0;white-space:nowrap}.avc .qf-tab.active{border-bottom-color:#E8A93C;color:#0B1626}.avc-m .qf-tabs{gap:4px;padding:4px;background:#F1EFE9;border:1px solid #E5E1D6;border-radius:9px;margin-bottom:26px}.avc-m .qf-tab{flex:1;padding:12px 4px;font-size:15.5px;border:0;border-radius:6px;color:#5B6472}.avc-m .qf-tab.active{background:#0B1626;color:#FFFFFF;box-shadow:0 3px 8px rgba(11,22,38,0.28)}.avc .qf-row2{display:grid;grid-template-columns:1fr 1fr;gap:26px;margin-bottom:26px}.avc .qf-row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:26px;margin-bottom:26px}.avc .qf-row1{display:grid;grid-template-columns:1fr;gap:26px;margin-bottom:26px}.avc-m .qf-row2,.avc-m .qf-row3,.avc-m .qf-row1{grid-template-columns:1fr;gap:18px;margin-bottom:18px}.avc .qf-label{display:block;font-size:16px;font-weight:500;color:#8A8577;margin-bottom:4px}.avc .qf-label.muted{color:#B8B3A6}.avc .qf-label .opt{color:#B8B3A6;font-weight:400}.avc .qf-input{width:100%;padding:8px 1px 11px;font-size:16px;background:transparent;border:none;border-bottom:1px solid #DAD6CC;border-radius:0;color:#111827;outline:none;font-family:'Poppins',sans-serif}.avc .qf-input:focus{border-bottom:1.5px solid #E8A93C}.avc textarea.qf-input{min-height:64px;resize:vertical}.avc button.qf-input{text-align:left;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px;padding-left:1px}.avc .qf-input .ph{color:#9CA3AF}.avc .qf-input .d-ic{width:15px;height:15px;color:#8A8577;flex:none}.avc .qf-ow{padding:8px 1px 11px;font-size:16px;color:#9CA3AF;border-bottom:1px dashed #DAD6CC}/* the design's date cells are native date inputs: 40px in the About/Contactcards (Arial fallback), 47px on the Quote page (Poppins set inline) */.avc button.qf-input{line-height:20px}.avc .qf-steps button.qf-input,.avc .qf-steps .qf-input[data-field="time"]{line-height:27px}.avc .qf-steps .qf-stepbar .qf-pax{padding:0}.avc .qf-select{position:relative}.avc .qf-select select{padding-right:22px;
1892cursor:pointer}.avc .qf-select select.empty{color:#9CA3AF}.avc .qf-select svg{position:absolute;right:2px;top:50%;transform:translateY(-50%);width:13px;height:13px;pointer-events:none;color:#8A8577}.avc .qf-pax{display:flex;align-items:center;gap:14px;padding:3px 0 5px}.avc .qf-pax button{width:30px;height:30px;border-radius:50%;border:1px solid #D2CEC4;background:transparent;color:#0B1626;font-size:16px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0}.avc .qf-pax button:hover{border-color:#E8A93C;color:#B0781F;background:transparent}.avc .qf-pax .val{min-width:22px;text-align:center;font-size:16px;font-weight:600;color:#0B1626}.avc .qf-submit{width:100%;padding:16px 18px;background:#0B1626;color:#FFFFFF;border:none;font-size:16px;font-weight:600;border-radius:10px;cursor:pointer;margin-top:24px;display:inline-flex;align-items:center;justify-content:center;gap:10px}.avc .qf-submit:hover{background:#16283F;color:#FFFFFF}.avc .qf-submit[disabled]{opacity:.7;cursor:not-allowed}.avc .qf-submit svg{width:14px;height:14px}.avc .qf-error{margin-top:12px;padding:10px 12px;background:#FEF2F2;border:1px solid #FECACA;color:#991B1B;font-size:14px;border-radius:8px}.avc .qf-legs{margin-bottom:26px}.avc .qf-legs>.qf-label{margin-bottom:10px}.avc .qf-leg{position:relative;background:#FFFFFF;border:1px solid #EDE7DB;border-radius:12px;padding:14px 14px 14px 32px;margin-bottom:10px}.avc .qf-leg-n{position:absolute;left:0;top:0;bottom:0;width:24px;background:#0B1626;color:#FFFFFF;font-size:11px;font-weight:700;border-radius:11px 0 0 11px;display:flex;align-items:center;justify-content:center;letter-spacing:.06em}.avc .qf-leg-rm{position:absolute;top:-8px;right:-8px;width:24px;height:24px;border-radius:50%;background:#FFFFFF;color:#8B7355;border:1px solid #EDE7DB;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 5px rgba(15,28,46,0.10);z-index:2;padding:0}.avc .qf-leg-rm svg{width:11px;height:11px}.avc .qf-leg-pair{display:grid;grid-template-columns:1fr 1fr;gap:8px}.avc .qf-leg-pair+.qf-leg-pair{margin-top:8px}.avc-m .qf-leg-pair.a{grid-template-columns:1fr}.avc .qf-leg-cell{display:flex;align-items:center;gap:8px;padding:10px 11px;background:#FBFAF7;border:1px solid #EDE7DB;border-radius:8px;position:relative;min-width:0}.avc .qf-leg-cell svg{width:14px;height:14px;color:#8B7355;flex-shrink:0}.avc .qf-leg-cell input{width:100%;padding:0;font-size:16px;background:transparent;border:none;color:#0F1C2E;outline:none;min-width:0;border-radius:0}.avc .qf-leg-cell input::placeholder{color:#B8A88A}.avc button.qf-leg-cell{cursor:pointer;text-align:left;font:inherit;width:100%}.avc .qf-leg-cell .dv{flex:1;font-size:16px;color:#0F1C2E;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.avc .qf-leg-cell .dv.ph{color:#B8A88A}.avc .qf-add{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:12px;background:transparent;border:1.5px dashed #D4C4A6;border-radius:12px;color:#8B6914;font-size:16px;font-weight:600;cursor:pointer}.avc .qf-add:hover{background:rgba(232,169,60,0.06);color:#8B6914}.avc .qf-add svg{width:14px;height:14px}/* steps variant (quote page) */.avc .qf-eyebrow{font-size:12px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:#B0781F;margin-bottom:16px}.avc .qf-eyebrow.s2{margin-bottom:12px}.avc-m .qf-eyebrow{display:none}.avc .qf-stepbar{display:flex;align-items:flex-end;justify-content:space-between;gap:26px;border-top:1px solid #ECE9E2;padding-top:22px}.avc-m .qf-stepbar{flex-direction:column;align-items:stretch;gap:20px}.avc .qf-stepbar .qf-label{margin-bottom:6px}.avc .qf-next{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:15px 30px;background:#0B1626;color:#FFFFFF;border:none;font-size:16px;font-weight:600;border-radius:10px;cursor:pointer}.avc .qf-next:hover{background:#16283F;color:#FFFFFF}.avc-m .qf-next{width:100%}.avc .qf-divider{height:1px;background:#ECE9E2;margin:34px 0 30px}.avc .qf-lead{font-size:19px;font-weight:600;color:#0B1626;letter-spacing:-.01em;line-height:1.4;margin-bottom:28px;text-wrap:pretty}.avc .qf-step2{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:64px;align-items:start}@media (max-width:1024px){.avc .qf-step2{grid-template-columns:1fr;gap:36px}.avc .qf-review{order:-1}}.avc-m .qf-step2{grid-template-columns:1fr;gap:36px}.avc-m .qf-review{display:none}.avc .qf-review{background:#FBFAF7;border:1px solid #EDE7DB;border-radius:14px;
1892padding:28px 30px 30px}.avc .qf-rv-eyebrow{display:flex;align-items:center;gap:9px;margin-bottom:20px}.avc .qf-rv-eyebrow .dot{width:8px;height:8px;border-radius:50%;background:#E8A93C;box-shadow:0 0 0 4px rgba(232,169,60,0.18);flex:none}.avc .qf-rv-eyebrow span:not(.dot){font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#B0781F}.avc .qf-rv-grid{display:grid;grid-template-columns:auto 1fr;gap:11px 22px;align-items:baseline}.avc .qf-rv-grid .k{font-size:16px;font-weight:600;color:#0B1626;white-space:nowrap}.avc .qf-rv-grid .v{font-size:16px;color:#4B5563}.avc .qf-rv-legs{display:flex;flex-direction:column;gap:9px;font-size:16px;color:#4B5563}.avc .qf-rv-legs b{font-weight:600;color:#0B1626}.avc .qf-rv-sep{height:1px;background:#E5E0D5;margin:24px 0}.avc .qf-rv-eyebrow.next{margin-bottom:14px}.avc .qf-rv-p{font-size:16px;line-height:1.65;color:#4B5563;margin:0 0 14px;text-wrap:pretty}.avc .qf-rv-p:last-child{margin-bottom:0}.avc .qf-rv-p a{font-weight:600;color:#0B1626}.avc .qf-rv-p a:hover{color:#B0781F}.avc .qf-ref{margin-bottom:6px;max-width:320px}.avc .qf-msg{margin-bottom:6px}/* ---- Quote page fields: bordered icon cells inside the design's white card ---- */.avc .qf-box{display:flex;align-items:center;gap:10px;background:#FBFAF7;border:1px solid #EDE7DB;border-radius:10px;padding:12px 12px;min-width:0;transition:border-color .15s,box-shadow .15s}.avc .qf-box:focus-within{border-color:#0B1626;box-shadow:0 0 0 3px rgba(232,169,60,0.18)}.avc .qf-box>svg{width:15px;height:15px;color:#8B7355;flex-shrink:0}.avc .qf-box input,.avc .qf-box select{width:100%;padding:0;font-size:16px;background:transparent;border:none;color:#0F1C2E;outline:none;min-width:0;border-radius:0;box-shadow:none;line-height:normal}.avc .qf-box input::placeholder{color:#B8A88A}.avc .qf-box select{cursor:pointer;padding-right:4px}.avc .qf-box select.empty{color:#B8A88A}.avc .qf-box .sel-chev{margin-left:auto;display:inline-flex;color:#8B7355}.avc .qf-box .sel-chev svg{width:13px;height:13px}.avc button.qf-box{cursor:pointer;text-align:left;width:100%;font:inherit}.avc .qf-box .dv{flex:1;font-size:16px;color:#0F1C2E;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.avc .qf-box .dv.ph{color:#B8A88A}.avc .qf-box-ta{display:block;width:100%;min-height:96px;resize:vertical;background:#FBFAF7;border:1px solid #EDE7DB;border-radius:10px;padding:12px;font-size:16px;line-height:1.45;color:#0F1C2E;outline:none;transition:border-color .15s,box-shadow .15s}.avc .qf-box-ta::placeholder{color:#B8A88A}.avc .qf-box-ta:focus{border-color:#0B1626;box-shadow:0 0 0 3px rgba(232,169,60,0.18)}.avc .qf-steps .qf-label{margin-bottom:6px}/* ── Quote page (mobile tree): the design's white card, labelled boxed cells ── */.avc-m .qf-steps{background:#FFFFFF;border:1px solid #E9E6DF;border-radius:12px;padding:24px 20px 28px;box-shadow:0 16px 36px -20px rgba(11,22,38,0.16)}.avc-m .qf-body.qf-nohead{padding:0}.avc .qf-eyebrow-l{display:flex;align-items:center;gap:10px;font-size:12px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:#B0781F;margin:0 0 12px}.avc .qf-eyebrow-l .dash{width:18px;height:2px;background:#E8A93C;flex:none}.avc .qf-eyebrow-l.sec{margin:0 0 18px}.avc .qf-steps .qf-divider{margin:26px 0 22px}.avc .qf-row3.qf-row-fromto{grid-template-columns:2fr 2fr 1fr}.avc .qf-paxbox .val{flex:1;font-size:16px;font-weight:600;color:#0B1626}.avc .qf-pax-btns{display:inline-flex;gap:6px;margin-left:auto}.avc .qf-pax-btns button{width:26px;height:26px;border-radius:50%;border:1px solid #D2CEC4;background:#FFFFFF;color:#0B1626;font-size:15px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0}.avc .qf-pax-btns button:hover{border-color:#E8A93C;color:#B0781F;background:#FFFFFF}.avc-m .qf-row3.qf-row-fromto{grid-template-columns:1fr}/* ── Quote page (desktop/tablet tree): "Quote Form Polished" mockup ── */.avc-d .qf-steps{--qp-x:clamp(24px,50vw - 596px,56px);margin:0 calc(-1 * var(--qp-x));background:#FFFFFF;border:1px solid #EDE7DB;border-radius:20px;box-shadow:0 24px 70px rgba(11,22,38,0.12);overflow:hidden;padding:0;text-align:left;container-type:inline-size}.avc .qp-head{display:block;background:radial-gradient(ellipse at 90% -10%,rgba(232,169,60,0.16),transparent 55%) #0B1626;padding:clamp(26px,3cqw,34px) var(--qp-x) clamp(24px,2.7cqw,30px)}.avc .qp-eyebrow{display:flex;align-items:center;gap:14px;margin-bottom:16px;flex-wrap:wrap}.avc .qp-eyebrow .qp-badge{flex:none;max-width:100%}.avc .qp-head-main{display:flex;justify-content:space-between;align-items:flex-start;gap:40px;flex-wrap:wrap}.avc .qp-head-l{flex:1;min-width:300px}.avc .qp-head-r{flex:0 1 400px;display:flex;flex-direction:column;align-items:stretch}.avc .qp-sum{width:100%;background:#FFFFFF;border:1px solid #EDE7DB;border-radius:14px;padding:10px 16px 12px;font-size:14px;text-align:left}.avc .qp-sum-head{display:flex;align-items:center;justify-content:space-between;font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#8A8577;padding-bottom:8px;margin-bottom:8px;border-bottom:1px solid #EDE7DB}.avc .qp-sum-l1{font-size:16px;font-weight:600;color:#0B1626;line-height:1.35;overflow-wrap:anywhere}.avc .qp-sum-l2{font-size:13.5px;color:#8B7355;line-height:1.45;margin-top:3px;overflow-wrap:anywhere}.avc .qp-eyebrow .dot{width:7px;height:7px;border-radius:50%;background:#E8A93C;flex:none}.avc .qp-eyebrow .t{font-size:11.5px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:rgba(244,191,94,0.95);white-space:nowrap}.avc .qp-eyebrow .line{flex:1;height:1px;background:linear-gradient(90deg,rgba(232,169,60,0.45),rgba(232,169,60,0))}.avc .qp-title{font-size:clamp(26px,2.9cqw,32px);font-weight:700;letter-spacing:-.02em;line-height:1.08;color:#FFFFFF;margin:0 0 clamp(8px,1.07cqw,12px)}.avc .qp-sub{font-size:clamp(15px,1.47cqw,16.5px);line-height:1.65;color:rgba(255,255,255,0.68);margin:0;max-width:none;text-wrap:pretty}.avc .qp-badge{display:inline-flex;align-items:center;gap:9px;padding:10px 18px;border:1px solid rgba(255,255,255,0.16);background:rgba(255,255,255,0.06);border-radius:999px;font-size:14px;font-weight:500;color:#FFFFFF;white-space:nowrap}.avc .qp-badge svg{width:15px;height:15px;color:#F4BF5E}.avc .qp-body{padding:clamp(30px,3.57cqw,40px) var(--qp-x) clamp(32px,3.93cqw,44px)}.avc .qp-top{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:clamp(26px,3.04cqw,34px);flex-wrap:wrap}.avc .qp-tabs{display:inline-flex;gap:4px;background:#FBFAF7;border:1px solid #EDE7DB;border-radius:999px;padding:5px}.avc .qp-tab{padding:10px clamp(18px,2.32cqw,26px);border-radius:999px;font-size:14.5px;font-weight:600;color:#8B7355;background:transparent;border:0;cursor:pointer;white-space:nowrap}.avc .qp-tab:hover{color:#0B1626;background:rgba(255,255,255,0.5)}.avc .qp-tab.active,.avc .qp-tab.active:hover{color:#FFFFFF;background:#0B1626;box-shadow:0 4px 12px rgba(11,22,38,0.25)}.avc .qp-note{font-size:13.5px;color:#8A8577}.avc .qp-head.light{background:#FBFAF7;border-bottom:1px solid #EDE7DB}.avc .qp-head.light .qp-eyebrow .t{color:#B0781F}.avc .qp-head.light .qp-eyebrow .line{background:linear-gradient(90deg,rgba(232,169,60,0.45) 0%,rgba(232,169,60,0.45) 86%,rgba(232,169,60,0) 100%)}.avc .qp-head.light .qp-title{color:#0B1626}.avc .qp-head.light .qp-sub{color:#5B6472}.avc .qp-head.light .qp-badge{border-color:#EDE7DB;background:#FFFFFF;color:#0B1626}.avc .qp-head.light .qp-badge svg{color:#B0781F}.avc .qp-badge-l{display:inline-flex;align-items:center;gap:9px;padding:10px 18px;border:1px solid #EDE7DB;background:#FFFFFF;border-radius:999px;font-size:14px;font-weight:500;color:#0B1626;white-space:nowrap}.avc .qp-badge-l svg{width:15px;height:15px;color:#B0781F}.avc .qp-sec{display:flex;align-items:center;gap:16px;margin-bottom:18px}.avc .qp-sec .t{font-size:11.5px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:#8A8577;white-space:nowrap}.avc .qp-sec .line{flex:1;height:1px;background:linear-gradient(90deg,rgba(232,169,60,0.45),rgba(11,22,38,0.05))}.avc .qp-row-it{display:grid;grid-template-columns:minmax(0,1fr) 44px minmax(0,1fr) clamp(176px,19.5cqw,218px);gap:clamp(10px,1.25cqw,14px);align-items:end;margin-bottom:clamp(10px,1.25cqw,14px)}.avc .qp-row4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(10px,1.25cqw,14px);margin-bottom:clamp(10px,1.25cqw,14px)}.avc .qp-row4.last,.avc .qp-row-it.last{margin-bottom:clamp(28px,3.2cqw,36px)}.avc .qp-row2{display:grid;grid-template-columns:1fr 1fr;gap:clamp(10px,1.25cqw,14px);margin-bottom:clamp(10px,1.25cqw,14px)}.avc .qp-label{font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#8A8577;margin:0 0 8px 2px;display:block}.avc .qp-label .opt{color:#B8B3A6;text-transform:none;letter-spacing:0;font-weight:500}.avc .qp-cell{display:flex;align-items:center;gap:11px;height:clamp(50px,4.82cqw,54px);padding:0 16px;background:#FFFFFF;border:1px solid #ECE3D2;border-radius:12px;min-width:0;transition:border-color .15s,box-shadow .15s}.avc .qp-cell:focus-within{border-color:#E8A93C;box-shadow:0 0 0 4px rgba(232,169,60,0.18),inset 0 0 0 .5px #E8A93C}.avc .qp-cell>svg{width:16px;height:16px;color:#B0781F;flex-shrink:0}.avc .qp-cell input,.avc .qp-cell select{width:100%;padding:0;font-size:16px;font-weight:500;background:transparent;border:none;color:#0B1626;outline:none;min-width:0;line-height:normal;border-radius:0;box-shadow:none}.avc .qp-cell input::placeholder{color:#B8B3A6;font-weight:400}.avc .qp-cell select{cursor:pointer;padding-right:4px}.avc .qp-cell select.empty{color:#B8B3A6;font-weight:400}.avc .qp-cell .chev{margin-left:auto;display:inline-flex;color:#8A8577;flex:none}.avc .qp-cell .chev svg{width:16px;height:16px}.avc button.qp-cell{cursor:pointer;text-align:left;width:100%;font:inherit}.avc .qp-cell .dv{flex:1;font-size:16px;font-weight:500;color:#0B1626;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.avc .qp-cell .dv.ph{color:#B8B3A6;font-weight:400}.avc .qp-swap{width:44px;height:44px;margin-bottom:5px;border-radius:50%;background:#FFFFFF;border:1px solid #ECE3D2;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(11,22,38,0.06);
1892cursor:pointer;padding:0;color:#B0781F}.avc .qp-swap:hover{border-color:#E8A93C;background:#FFFFFF;color:#B0781F}.avc .qp-swap svg{width:16px;height:16px}.avc .qp-pax{justify-content:space-between;padding:0 7px}.avc .qp-pax button{width:38px;height:38px;border-radius:50%;border:1px solid #ECE3D2;background:transparent;color:#8B7355;display:flex;align-items:center;justify-content:center;padding:0;cursor:pointer;flex:none}.avc .qp-pax button:hover{border-color:#E8A93C;color:#C8841F;background:transparent}.avc .qp-pax button svg{width:14px;height:14px}.avc .qp-pax .val{font-size:17px;font-weight:600;color:#0B1626}.avc .qp-ta{display:block;width:100%;min-height:112px;padding:16px;background:#FFFFFF;border:1px solid #ECE3D2;border-radius:12px;font-size:16px;line-height:1.6;color:#0B1626;outline:none;resize:vertical;transition:border-color .15s,box-shadow .15s}.avc .qp-ta::placeholder{color:#B8B3A6}.avc .qp-ta:focus{border-color:#E8A93C;box-shadow:0 0 0 4px rgba(232,169,60,0.18)}.avc .qp-body .qf-error{margin-top:18px}.avc .qp-foot{background:#FBFAF7;border-top:1px solid #EDE7DB;padding:clamp(18px,2.14cqw,24px) var(--qp-x);display:flex;align-items:center;gap:24px;flex-wrap:wrap}.avc .qp-talk{flex:1;min-width:240px}.avc .qp-talk .a{font-size:15.5px;font-weight:600;color:#0B1626}.avc .qp-talk .a a{color:#0B1626}.avc .qp-talk .a a:hover{color:#B0781F}.avc .qp-talk .b{font-size:13.5px;color:#8A8577;margin-top:2px}.avc .qp-ref{display:inline-flex;align-items:center;gap:10px;height:50px;padding:0 20px;background:#FFFFFF;border:1px dashed #DAD6CC;border-radius:999px;cursor:text}.avc .qp-ref:focus-within{border-style:solid;border-color:#E8A93C}.avc .qp-ref svg{width:15px;height:15px;color:#B0781F;flex:none}.avc .qp-ref input{width:130px;padding:0;font-size:15px;background:transparent;border:none;outline:none;color:#0B1626;line-height:normal;border-radius:0;box-shadow:none}.avc .qp-ref input::placeholder{color:#8A8577}.avc .qp-submit{display:inline-flex;align-items:center;gap:11px;height:54px;padding:0 34px;background:#E8A93C;color:#0B1626;border:0;border-radius:999px;font-size:16.5px;font-weight:700;cursor:pointer;box-shadow:0 10px 26px rgba(232,169,60,0.35);white-space:nowrap}.avc .qp-submit:hover{background:#F4BF5E;color:#0B1626}.avc .qp-submit[disabled]{opacity:.7;cursor:not-allowed}.avc .qp-submit svg{width:17px;height:17px}.avc-d .qf-steps .qf-leg{background:#FFFFFF;border-color:#ECE3D2;border-radius:12px}.avc-d .qf-steps .qf-leg-cell{border-color:#ECE3D2;background:#FFFFFF}.avc-d .qf-steps .qf-legs{margin-bottom:14px}/* quote page: the hero wrapper's extra 40px side padding made its column 80px narrower than every other section below 1320px — drop it so hero, form card content, Why AvSky and FAQs share one column */.avc .avc-d header[data-screen-label="Hero"]{padding:0}/* quote page section rhythm (desktop/tablet): hero→form = hero's own 88px + 40; every other section gap = 64 + 64 */.avc .avc-d #quote-form{padding:40px 0 64px}.avc .avc-d section[data-screen-label="Why AvSky"],.avc .avc-d section[data-screen-label="Pricing FAQs"]{padding:64px 0}@media (max-width:1024px){.avc .avc-d #quote-form{padding:56px 0}.avc .avc-d section[data-screen-label="Why AvSky"],.avc .avc-d section[data-screen-label="Pricing FAQs"]{padding:56px 0}}.avc .qp-success{padding:24px var(--qp-x) 28px;display:flex;flex-direction:column;justify-content:center}.avc .qp-success .fsx-receipt,.avc .qp-success .fsx-sum{background:#FFFFFF;border-color:#ECE3D2}.avc .qp-success .fsx-receipt::before,.avc .qp-success .fsx-receipt::after{background:#FFFFFF}@media (max-width:1024px){.avc-d .qf-steps{--qp-x:24px}.avc .qp-head{padding:32px var(--qp-x) 30px;gap:24px}.avc .qp-head-r{padding-top:0;align-items:flex-start}.avc .qp-title{font-size:30px}.avc .qp-body{padding:30px var(--qp-x) 34px}.avc .qp-foot{padding:20px var(--qp-x)}.avc .qp-success{padding:24px var(--qp-x) 36px}.avc .qp-row-it{grid-template-columns:minmax(0,1fr) 44px minmax(0,1fr) 176px}}.avc .qf-row4{display:grid;grid-template-columns:repeat(4,1fr);gap:26px 14px;margin-bottom:26px}.avc .qf-span2{grid-column:span 2}.avc .qf-steps .qf-row2{gap:26px 14px}.avc-m .qf-row4{grid-template-columns:1fr 1fr;gap:18px 10px;margin-bottom:18px}.avc-m .qf-steps .qf-row2{gap:18px 10px}.avc .qm-cell .dv,.avc .qm-leg-cell .dv{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}/* ---- success: desktop receipt card (Dest 3.0 .fsx) ---- */.avc .fsx{padding:28px 8px 8px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.avc .fsx-mark{position:relative;width:72px;height:72px;margin-bottom:22px}.avc .fsx-mark .ring{position:absolute;inset:0;border-radius:50%;border:1.5px solid var(--gold);opacity:.55;animation:avcFsxPulse 2.6s ease-out infinite}.avc .fsx-mark .ring2{position:absolute;inset:9px;border-radius:50%;border:1px solid var(--gold);opacity:.35}.avc .fsx-mark .disc{position:absolute;inset:16px;border-radius:50%;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 10px 22px -8px rgba(11,22,38,0.5)}.avc .fsx-mark .disc svg{width:22px;height:22px}@keyframes avcFsxPulse{0%{transform:scale(1);opacity:.55}70%{transform:scale(1.18);opacity:0}
1892100%{opacity:0}}.avc .fsx-eyebrow{font-size:11px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-deep);margin-bottom:12px}.avc .fsx h3{font-size:27px;line-height:1.1;color:var(--navy);font-weight:700;letter-spacing:-.02em;margin-bottom:10px}.avc .fsx .fsx-sub{font-size:15px;color:#6B7280;line-height:1.6;max-width:360px;margin:0 auto 26px}.avc .fsx-receipt{width:100%;max-width:380px;background:var(--cream);border:1px solid var(--hairline);border-radius:14px;padding:20px 22px;margin-bottom:24px;text-align:left;position:relative}.avc .fsx-receipt::before,.avc .fsx-receipt::after{content:'';position:absolute;top:50%;width:14px;height:14px;border-radius:50%;background:#fff;transform:translateY(-50%)}.avc .fsx-receipt::before{left:-8px;box-shadow:inset -1px 0 0 var(--hairline)}.avc .fsx-receipt::after{right:-8px;box-shadow:inset 1px 0 0 var(--hairline)}.avc .fsx-route{display:flex;align-items:center;gap:12px;padding-bottom:16px;border-bottom:1px dashed #D8CBB3;margin-bottom:14px}.avc .fsx-port{flex:1;min-width:0}.avc .fsx-port .code{font-size:20px;font-weight:700;color:var(--navy);letter-spacing:.04em}.avc .fsx-port .place{font-size:11.5px;color:var(--tan);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.avc .fsx-port.to{text-align:right}.avc .fsx-path{flex:0 0 auto;color:var(--gold-deep);display:flex;align-items:center}.avc .fsx-path svg{width:20px;height:20px}.avc .fsx-meta{display:flex;gap:8px}.avc .fsx-meta .m{flex:1;min-width:0}.avc .fsx-meta .m .l{font-size:9.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#9aa0a6;margin-bottom:4px}.avc .fsx-meta .m .v{font-size:13px;font-weight:600;color:var(--navy)}.avc .fsx-sum{width:100%;max-width:380px;background:var(--cream);border:1px solid var(--hairline);border-radius:12px;padding:14px 16px 8px;margin:0 0 22px;text-align:left}.avc .fsx-sum-row{display:flex;align-items:flex-start;gap:10px;padding:6px 0;border-top:1px dashed rgba(212,196,166,0.55)}.avc .fsx-sum-row:first-child{border-top:none;padding-top:0}.avc .fsx-sum-k{flex:0 0 78px;font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--navy-2);padding-top:3px;opacity:.6}.avc .fsx-sum-v{flex:1;min-width:0;font-size:14px;font-weight:500;color:var(--navy-2);line-height:1.4;word-break:break-word}.avc .fsx-next{width:100%;max-width:380px;display:flex;flex-direction:column;gap:12px;margin-bottom:26px;text-align:left}.avc .fsx-step{display:flex;align-items:flex-start;gap:12px}.avc .fsx-step .n{flex:0 0 auto;width:22px;height:22px;border-radius:50%;background:rgba(200,132,31,0.12);color:var(--gold-deep);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px}.avc .fsx-step .t{font-size:13.5px;color:#4B5563;line-height:1.5}.avc .fsx-step .t b{color:var(--navy);font-weight:600}.avc .fsx-call{display:inline-flex;align-items:center;gap:9px;font-size:14px;color:var(--navy)}.avc .fsx-call .ic{width:30px;height:30px;border-radius:50%;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;flex:none}.avc .fsx-call .ic svg{width:14px;height:14px}.avc .fsx-call a{color:var(--navy);font-weight:700;text-decoration:none;border-bottom:2px solid var(--gold);padding-bottom:1px}.avc .fsx-call a:hover{color:var(--gold-deep)}/* dark variant (navy form panels) */.avc .fsx.dark h3,.avc .fsx.dark .fsx-call,.avc .fsx.dark .fsx-call a,.avc .fsx.dark .fsx-sum-v,.avc .fsx.dark .fsx-sum-k,.avc .fsx.dark .fsx-step .t b{color:#FFFFFF}.avc .fsx.dark .fsx-eyebrow{color:var(--gold)}.avc .fsx.dark .fsx-sub,.avc .fsx.dark .fsx-step .t{color:rgba(255,255,255,0.7)}.avc .fsx.dark .fsx-sum{background:rgba(255,255,255,0.05);border-color:rgba(255,255,255,0.16)}.avc .fsx.dark .fsx-sum-row{border-top-color:rgba(255,255,255,0.14)}.avc .fsx.dark .fsx-step .n{background:rgba(244,192,120,0.16);color:var(--gold)}.avc .fsx.dark .fsx-mark .disc{background:var(--gold);color:var(--navy)}.avc .fsx.dark .fsx-call .ic{background:var(--gold);color:var(--navy)}.avc .fsx.dark .fsx-call a{border-bottom-color:var(--gold)}/* ---- success: mobile inline (Dest 3.0 .m-success + summary) ---- */.avc .m-success{text-align:center;padding:18px 2px 0;display:flex;flex-direction:column;align-items:center}.avc .m-success-mark{position:relative;width:52px;height:52px;margin:0 0 16px}.avc .m-success-mark .ring{position:absolute;inset:0;border-radius:50%;border:1px solid var(--gold-mid)}.avc .m-success-mark .disc{position:absolute;inset:4px;border-radius:50%;background:var(--navy-2);display:flex;align-items:center;justify-content:center}.avc .m-success-mark .disc svg{width:20px;height:20px;color:var(--gold);stroke-width:2.5}.avc .m-success-h{font-weight:700;font-size:21px;line-height:1.15;letter-spacing:-.018em;color:var(--navy-2);margin:0 0 8px}.avc .m-success-sub{font-size:14px;line-height:1.55;color:#4B5563;margin:0 0 20px;max-width:300px}.avc .m-success .fsx-sum{max-width:none;width:100%;margin-bottom:20px}.avc .m-success .fsx-call{font-size:14px}.avc .m-success.dark .m-success-h,.avc .m-success.dark .fsx-call,.avc .m-success.dark .fsx-call a,.avc .m-success.dark .fsx-sum-v,.avc .m-success.dark .fsx-sum-k{color:#FFFFFF}.avc .m-success.dark .m-success-sub{color:rgba(255,255,255,0.7)}.avc .m-success.dark .fsx-sum{background:rgba(255,255,255,0.05);border-color:rgba(255,255,255,0.16)}.avc .m-success.dark .fsx-sum-row{border-top-color:rgba(255,255,255,0.14)}.avc .m-success.dark .m-success-mark .disc{background:var(--gold)}.avc .m-success.dark .m-success-mark .disc svg{color:var(--navy)}.avc .m-success.dark .fsx-call .ic{background:var(--gold);color:var(--navy)}/* ---- quote modal sheet (Dest 3.0 clone) ---- */.avc .qm-backdrop{position:fixed;inset:0;background:rgba(11,22,38,0.6);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);z-index:20020;opacity:0;pointer-events:none;transition:opacity .25s ease}.avc .qm-backdrop.open{opacity:1;pointer-events:auto}.avc .qm-sheet{position:fixed;inset:0;background:var(--cream);z-index:20021;display:flex;flex-direction:column;transform:translateY(100%);transition:transform .32s cubic-bezier(.2,.7,.2,1),visibility 0s linear .32s;visibility:hidden;text-align:left}.avc .qm-sheet.open{transform:translateY(0);visibility:visible;transition:transform .32s cubic-bezier(.2,.7,.2,1),visibility 0s linear}@media (min-width:720px){.avc .qm-sheet{inset:auto;top:50%;left:50%;transform:translate(-50%,calc(-50% + 100vh));width:min(560px,92vw);
1892max-height:min(820px,90vh);border-radius:16px;box-shadow:0 0 0 1px rgba(255,255,255,0.14),0 40px 80px -20px rgba(15,28,46,0.55),0 12px 32px -10px rgba(15,28,46,0.30);overflow:hidden}.avc .qm-sheet.open{transform:translate(-50%,-50%)}.avc .qm-head{border-radius:16px 16px 0 0}.avc .qm-handle{display:none}.avc .qm-title{text-wrap:normal}.avc .qm-sub{max-width:none}}.avc .qm-head{background:var(--navy-2);color:#FFF;padding:16px 20px 22px;position:relative;flex-shrink:0;overflow:hidden}.avc .qm-head::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 90% 0%,rgba(232,163,58,0.14),transparent 60%);pointer-events:none}.avc .qm-head>*{position:relative}.avc .qm-handle{width:36px;height:4px;border-radius:2px;background:rgba(255,255,255,0.22);margin:0 auto 14px}.avc .qm-topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.avc .qm-eyebrow{font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-mid)}.avc .qm-close{width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,0.10);border:1px solid rgba(255,255,255,0.16);display:inline-flex;align-items:center;justify-content:center;color:#FFF;cursor:pointer;padding:0}.avc .qm-close:hover{background:rgba(255,255,255,0.18);color:#FFF}.avc .qm-close svg{width:14px;height:14px}.avc .qm-title{font-size:18px;font-weight:700;letter-spacing:-.015em;line-height:1.22;margin:0 0 6px;text-wrap:pretty;color:#FFF}.avc .qm-title em{font-style:italic;font-weight:500;color:var(--gold)}.avc .qm-sub{font-size:14px;line-height:1.5;color:rgba(255,255,255,0.72);margin:0;max-width:300px}.avc #avc-modal-content{flex:1;display:flex;flex-direction:column;min-height:0}.avc .qm-body{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:16px 16px 12px}.avc .qm-section-l{font-size:12px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--tan);margin:6px 2px 8px}.avc .qm-section-l:first-child{margin-top:0}.avc .qm-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px}.avc .qm-row.single{grid-template-columns:1fr}.avc .qm-cell{display:flex;align-items:center;gap:10px;background:#FFF;border:1px solid var(--hairline);border-radius:10px;padding:12px 12px;min-width:0}.avc .qm-cell svg{width:15px;height:15px;color:var(--tan);flex-shrink:0}.avc .qm-cell input,.avc .qm-cell select{width:100%;padding:0;font-size:16px;background:transparent;border:none;color:var(--navy-2);outline:none;-webkit-appearance:none;min-width:0;border-radius:0;box-shadow:none}.avc .qm-cell input::placeholder{color:var(--tan-soft)}.avc button.qm-cell{text-align:left;cursor:pointer;font:inherit;width:100%}.avc .qm-cell .dv{flex:1;font-size:16px;color:var(--navy-2);font-weight:400}.avc .qm-cell .dv.ph{color:var(--tan-soft)}.avc .qm-textarea{display:block;width:100%;min-height:84px;resize:none;background:#FFF;border:1px solid var(--hairline);border-radius:10px;padding:12px 12px;font-size:16px;line-height:1.45;color:var(--navy-2);outline:none;-webkit-appearance:none}.avc .qm-textarea::placeholder{color:var(--tan-soft)}.avc .qm-leg{position:relative;background:#FFF;border:1px solid var(--hairline);border-radius:12px;padding:14px 12px 12px 30px;margin-bottom:8px}.avc .qm-leg-n{position:absolute;left:0;top:0;bottom:0;width:24px;background:var(--navy-2);color:#FFF;font-size:10px;font-weight:700;border-radius:11px 0 0 11px;display:flex;align-items:center;justify-content:center;letter-spacing:.06em}.avc .qm-leg-rm{position:absolute;top:-8px;right:-8px;width:24px;height:24px;border-radius:50%;background:#FFF;color:var(--tan);border:1px solid var(--hairline);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 5px rgba(15,28,46,0.10);z-index:2;padding:0}.avc .qm-leg-rm svg{width:11px;height:11px}.avc .qm-leg-pair{display:grid;grid-template-columns:1fr 1fr;gap:6px}.avc .qm-leg-pair+.qm-leg-pair{margin-top:6px}.avc .qm-leg-cell{display:flex;align-items:center;gap:8px;padding:9px 10px;background:var(--cream);border:1px solid var(--hairline);border-radius:8px;min-width:0}.avc .qm-leg-cell svg{width:13px;height:13px;color:var(--tan);flex-shrink:0}.avc .qm-leg-cell input{width:100%;padding:0;font-size:16px;background:transparent;border:none;color:var(--navy-2);outline:none;min-width:0;border-radius:0;box-shadow:none}.avc .qm-leg-cell input::placeholder{color:var(--tan-soft)}.avc button.qm-leg-cell{text-align:left;cursor:pointer;font:inherit;width:100%}.avc .qm-leg-cell .dv{flex:1;font-size:16px;color:var(--navy-2);font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.avc .qm-leg-cell .dv.ph{color:var(--tan-soft)}.avc .qm-add{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:12px;margin-bottom:4px;background:transparent;border:1.5px dashed var(--tan-line);border-radius:12px;color:#8B6914;font-size:13px;font-weight:600;cursor:pointer}.avc .qm-add svg{width:14px;
1892height:14px}.avc .qm-tabs{display:flex;gap:4px;padding:4px;background:#FFF;border:1px solid var(--hairline);border-radius:10px;margin-bottom:12px}.avc .qm-tab{flex:1;padding:9px 4px;font-size:13px;font-weight:600;color:var(--tan);background:transparent;border:none;border-radius:7px;cursor:pointer}.avc .qm-tab.active{background:var(--navy-2);color:#FFF}.avc .qm-foot{padding:12px 16px 22px;background:var(--cream);border-top:1px solid var(--hairline);flex-shrink:0}.avc .qm-submit{width:100%;height:48px;border-radius:11px;background:var(--gold);color:var(--navy-2);border:none;font-size:14px;font-weight:700;letter-spacing:.01em;display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;box-shadow:0 6px 16px -4px rgba(232,163,58,0.45)}.avc .qm-submit:hover{background:#F8CD8E;color:var(--navy-2)}.avc .qm-submit svg{width:13px;height:13px}.avc .qm-submit:disabled{opacity:.7;cursor:not-allowed}.avc .qm-fine{font-size:12.5px;color:var(--tan);text-align:center;margin:8px 0 0;line-height:1.4;letter-spacing:.005em}.avc .qm-form-error{margin-top:8px;padding:10px 12px;background:#FEF2F2;border:1px solid #FECACA;color:#991B1B;font-size:13.5px;border-radius:8px}.avc .qm-success{padding:22px 22px 14px;display:flex;flex-direction:column;align-items:center;text-align:center}.avc .qm-success-mark{position:relative;width:68px;height:68px;margin-bottom:16px}.avc .qm-success-mark .ring{position:absolute;inset:0;border-radius:50%;border:1.2px solid var(--gold-mid)}.avc .qm-success-mark .disc{position:absolute;inset:7px;border-radius:50%;background:var(--navy-2);display:flex;align-items:center;justify-content:center}.avc .qm-success-mark .disc svg{width:26px;height:26px;color:var(--gold);stroke-width:2.5}.avc .qm-success-eyebrow{font-size:11px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--navy-2);margin:0 0 10px}.avc .qm-success-h{font-size:22px;font-weight:700;line-height:1.18;letter-spacing:-.015em;color:var(--navy-2);margin:0 0 4px;text-wrap:pretty}.avc .qm-success-line{font-size:16px;font-weight:500;line-height:1.35;color:var(--navy-2);margin:0 0 18px}.avc .qm-success-overview{font-size:13.5px;line-height:1.4;color:var(--navy-2);margin:0 0 10px;align-self:flex-start;font-weight:500}.avc .qm-sum{width:100%;background:var(--cream);border:1px solid var(--hairline);border-radius:12px;padding:14px 14px 8px;margin:0 0 18px;text-align:left}.avc .qm-sum-row{display:flex;align-items:flex-start;gap:10px;padding:6px 0;border-top:1px dashed rgba(212,196,166,0.55)}.avc .qm-sum-row:first-of-type{border-top:none;padding-top:0}.avc .qm-sum-k{flex:0 0 64px;font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--navy-2);padding-top:2px;opacity:.6}.avc .qm-sum-v{flex:1;min-width:0;font-size:13.5px;font-weight:500;color:var(--navy-2);line-height:1.35;word-break:break-word}.avc .qm-call-line{font-size:13.5px;line-height:1.5;color:var(--navy-2);margin:0;text-align:left;align-self:flex-start}.avc .qm-call-line a{color:var(--navy-2);font-weight:700;text-decoration:underline;text-underline-offset:2px}/* ---- inline calendar (Dest 3.0) ---- */.avc .qm-cal{background:#FFF;border:2px solid var(--navy-2);border-radius:14px;box-shadow:0 18px 36px -10px rgba(15,28,46,0.35),0 4px 10px rgba(15,28,46,0.10);overflow:hidden;margin:14px 0 26px}.avc .qm-cal-prompt{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 12px;background:#F4EBD5;border-bottom:1px solid #E8DCB8;font-size:11.5px;font-weight:600;color:#6B5215;letter-spacing:.005em}.avc .qm-cal-prompt .step{font-size:9px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;opacity:.65;flex-shrink:0}.avc .qm-cal-prompt .msg{flex:1;min-width:0}.avc .qm-cal-prompt strong{font-weight:700}.avc .qm-cal-head{display:flex;align-items:center;justify-content:space-between;padding:9px 12px 6px}.avc .qm-cal-month{font-size:13px;font-weight:700;color:var(--navy-2);letter-spacing:-.01em}.avc .qm-cal-month .yr{font-weight:400;color:var(--tan);margin-left:5px}.avc .qm-cal-nav{display:flex;gap:4px}.avc .qm-cal-nav button{width:24px;height:24px;border-radius:50%;background:var(--cream);border:1px solid var(--hairline);color:var(--navy-2);display:inline-flex;align-items:center;justify-content:center;padding:0;cursor:pointer}.avc .qm-cal-nav button:hover{background:#FFF;color:var(--navy-2)}.avc .qm-cal-nav button:disabled{opacity:.35;cursor:not-allowed}.avc .qm-cal-nav button svg{width:11px;height:11px}.avc .qm-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);padding:0 8px 4px}.avc .qm-cal-dow{font-size:9.5px;font-weight:600;color:var(--tan);text-align:center;padding:2px 0 6px;letter-spacing:.06em;text-transform:uppercase}.avc .qm-cal-day{position:relative;height:30px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:500;color:var(--navy-2);cursor:pointer;background:transparent;border:none;padding:0;border-radius:0}.avc .qm-cal-day:hover{background:transparent;color:var(--navy-2)}.avc .qm-cal-day.muted{color:var(--tan-line)}.avc .qm-cal-day.disabled{color:var(--tan-line);cursor:not-allowed;text-decoration:line-through;text-decoration-color:rgba(212,196,166,0.6)}.avc .qm-cal-day .num{position:relative;z-index:2}.avc .qm-cal-day.today .num::after{content:'';position:absolute;
1892left:50%;bottom:-2px;transform:translateX(-50%);width:3px;height:3px;background:var(--gold-deeper);border-radius:50%}.avc .qm-cal-day.in-range::before{content:'';position:absolute;inset:3px -1px;background:#F4EBD5;z-index:1}.avc .qm-cal-day.range-start::before{content:'';position:absolute;inset:3px -1px 3px 50%;background:#F4EBD5;z-index:1}.avc .qm-cal-day.range-end::before{content:'';position:absolute;inset:3px 50% 3px -1px;background:#F4EBD5;z-index:1}.avc .qm-cal-day.range-start.range-end::before{display:none}.avc .qm-cal-day.selected .num{width:26px;height:26px;border-radius:50%;background:var(--navy-2);color:#FFF;display:inline-flex;align-items:center;justify-content:center;font-weight:600;font-size:11.5px}.avc .qm-cal-day.today.selected .num::after{background:var(--gold)}.avc .qm-cal-foot{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:8px 10px 9px;border-top:1px solid var(--hairline);background:var(--cream)}.avc .qm-cal-summary{font-size:11px;color:#6B5840;font-weight:500;flex:1;line-height:1.2;min-width:0}.avc .qm-cal-summary strong{color:var(--navy-2);font-weight:700}.avc .qm-cal-summary .nights{color:var(--tan)}.avc .qm-cal-foot button{font-size:11px;font-weight:600;padding:6px 10px;border-radius:6px;cursor:pointer}.avc .qm-cal-clear{background:transparent;border:1px solid var(--hairline);color:var(--tan)}.avc .qm-cal-done{background:var(--navy-2);border:1px solid var(--navy-2);color:#FFF}.avc .qm-cal-done:disabled{opacity:.4;cursor:not-allowed}/* ---- date picker sheet (Dest 3.0) ---- */.avc .ds-backdrop{position:fixed;inset:0;background:rgba(15,28,46,0.55);z-index:20030;opacity:0;pointer-events:none;transition:opacity .22s ease}.avc .ds-backdrop.open{opacity:1;pointer-events:auto}.avc .ds-sheet{position:fixed;left:0;right:0;bottom:0;top:6vh;background:#FFF;z-index:20031;border-radius:18px 18px 0 0;box-shadow:0 -20px 60px -10px rgba(15,28,46,0.45);display:flex;flex-direction:column;transform:translateY(100%);transition:transform .32s cubic-bezier(.32,.72,.34,.99),visibility 0s linear .32s;overflow:hidden;visibility:hidden;text-align:left}.avc .ds-sheet.open{transform:translateY(0);visibility:visible;transition:transform .32s cubic-bezier(.32,.72,.34,.99),visibility 0s linear}@media (min-width:720px){.avc .ds-sheet{top:50%;left:50%;right:auto;bottom:auto;transform:translate(-50%,calc(-50% + 100vh));width:min(440px,92vw);max-height:min(640px,86vh);border-radius:16px;box-shadow:0 40px 80px -20px rgba(15,28,46,0.55),0 12px 32px -10px rgba(15,28,46,0.30)}.avc .ds-sheet.open{transform:translate(-50%,-50%)}.avc .ds-head{cursor:default;touch-action:auto}.avc .ds-head::before{display:none}}.avc .ds-head{display:flex;align-items:center;gap:10px;padding:16px 18px 12px;border-bottom:1px solid var(--hairline);flex-shrink:0;position:relative;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}.avc .ds-head:active{cursor:grabbing}.avc .ds-head::before{content:'';position:absolute;left:50%;top:7px;transform:translateX(-50%);width:36px;height:4px;border-radius:999px;background:var(--tan-line)}.avc .ds-close{width:36px;height:36px;border:none;background:var(--cream);border-radius:50%;color:var(--navy-2);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0;flex-shrink:0}.avc .ds-close:hover{background:var(--cream-2);color:var(--navy-2)}.avc .ds-close svg{width:16px;height:16px}.avc .ds-title{font-size:16px;font-weight:700;color:var(--navy-2);letter-spacing:-.01em}.avc .ds-tabs{display:flex;gap:8px;padding:12px 16px 14px;flex-shrink:0}.avc .ds-tab{flex:1;min-width:0;padding:12px 14px;background:var(--cream);border:2px solid transparent;border-radius:12px;cursor:pointer;text-align:left;transition:all .15s ease}.avc .ds-tab:hover{background:var(--cream);color:inherit}.avc .ds-tab.active{background:#FFF;border-color:var(--navy-2);box-shadow:0 4px 12px -2px rgba(15,28,46,0.18)}.avc .ds-tab .lbl{display:block;font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--tan);margin:0 0 4px}.avc .ds-tab.active .lbl{color:var(--navy-2);opacity:.6}.avc .ds-tab .val{display:block;font-size:16px;font-weight:600;color:var(--navy-2);line-height:1.2}.avc .ds-tab .val.placeholder{color:var(--tan-soft);font-weight:500}.avc .ds-cal-host{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:4px 12px 16px}.avc .ds-cal-host .qm-cal{margin:0;border:none;box-shadow:none}.avc .ds-cal-host .qm-cal-prompt{display:none}.avc .ds-cal-host .qm-cal-head{padding:14px 6px 10px}.avc .ds-cal-host .qm-cal-month{font-size:18px}.avc .ds-cal-host .qm-cal-month .yr{margin-left:8px}.avc .ds-cal-host .qm-cal-nav button{width:36px;height:36px}.avc .ds-cal-host .qm-cal-nav button svg{width:14px;
1892height:14px}.avc .ds-cal-host .qm-cal-grid{padding:0 2px 4px}.avc .ds-cal-host .qm-cal-dow{font-size:11px;padding:6px 0 8px}.avc .ds-cal-host .qm-cal-day{height:46px;font-size:15px}.avc .ds-cal-host .qm-cal-day.selected .num{width:38px;height:38px;font-size:14.5px}.avc .ds-cal-host .qm-cal-foot{display:none}.avc .ds-foot{display:flex;gap:10px;padding:12px 16px calc(28px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--hairline);flex-shrink:0;background:#FFF}.avc .ds-clear{flex:0 0 auto;padding:14px 22px;background:transparent;border:1.5px solid var(--hairline);color:var(--navy-2);border-radius:12px;font-size:14px;font-weight:600;cursor:pointer}.avc .ds-clear:hover{background:var(--cream);color:var(--navy-2)}.avc .ds-done{flex:1;padding:14px 22px;background:var(--navy-2);border:1.5px solid var(--navy-2);color:#FFF;border-radius:12px;font-size:15px;font-weight:700;cursor:pointer}.avc .ds-done:hover{background:var(--navy);color:#FFF}.avc .ds-done:disabled{opacity:.45;cursor:not-allowed}/* ---- Google Places dropdown (body-level; Dest 3.0) ---- */.pac-container{z-index:2147480000;font-family:'Poppins',sans-serif;background:#FFF;border:1px solid #0F1C2E;border-top:none;border-radius:0 0 8px 8px;margin:0;padding:2px 0 0;box-shadow:0 22px 34px -18px rgba(15,28,46,0.4)}.pac-item{padding:11px 16px;font-size:14px;line-height:1.4;color:#5C6470;border-top:1px solid #F3EDE0;cursor:pointer}.pac-item:first-child{border-top:none}.pac-item:hover,.pac-item.pac-item-selected{background:#FAF6ED}.pac-item .pac-icon{display:none}.pac-item-query{font-size:14px;font-weight:600;color:#0F1C2E}.pac-container.av-pac-mobile{border-color:#ECE3D2;box-shadow:0 18px 30px -16px rgba(15,28,46,0.28)}.pac-container.av-pac-card{border:1px solid #E4DCCB;border-radius:12px;padding:4px 0 2px;box-shadow:0 10px 24px -12px rgba(15,28,46,0.22),0 28px 60px -18px rgba(15,28,46,0.32)}.pac-container.av-pac-underline{border:1px solid #DAD6CC;border-radius:8px;margin-top:4px}.avc .av-pac-open{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important;box-shadow:none!important}.avc .qf-box.av-pac-open,.avc .qf-leg-cell.av-pac-open{border-color:#0F1C2E;background:#FFFFFF}.pac-container{font-size:14px}.pac-container.av-pac-qp{border:1px solid #E8A93C;border-top:none;border-radius:0 0 12px 12px;padding:0;margin:0;box-shadow:0 24px 44px -18px rgba(11,22,38,0.28)}.pac-container.av-pac-qp .pac-item{padding:12px 16px 12px 43px;font-size:15px;line-height:1.4;color:#8B7355;border-top:1px solid #EDE7DB;cursor:pointer}.pac-container.av-pac-qp .pac-item:first-child{border-top:1px solid #EDE7DB}.pac-container.av-pac-qp .pac-item:last-of-type{border-radius:0}.pac-container.av-pac-qp .pac-item:hover,.pac-container.av-pac-qp .pac-item.pac-item-selected{background:#FBFAF7}.pac-container.av-pac-qp .pac-item-query{font-size:16px;font-weight:600;color:#0B1626}.pac-container.av-pac-qp:after{padding:6px 14px 6px;opacity:.55}.avc .qp-cell.av-pac-open{border-color:#E8A93C;border-bottom-color:#EDE7DB;background:#FFFFFF}.pac-container:after{padding:6px 12px 4px;height:auto;background-size:100px 14px;background-position:right 12px center;opacity:.75}/* ═══ Quote page two-step card ═══ */.avc .qp-body>.last:last-child{margin-bottom:0}.avc .qp-row3{display:grid;grid-template-columns:1.3fr 1.3fr 1fr;gap:clamp(10px,1.25cqw,14px);margin-bottom:clamp(10px,1.25cqw,14px)}.avc .qp-body .qp-ta{min-height:72px}.avc .qp-sec .t .opt{text-transform:none;letter-spacing:0;font-weight:500;color:#B8B3A6}.avc .qp-sum-edit{background:transparent;border:0;padding:0;color:#B0781F;font-size:13px;font-weight:600;letter-spacing:0;text-transform:none;cursor:pointer}.avc .qp-sum-edit:hover{color:#C8841F;background:transparent}.avc-d .qf-steps>*{transition:opacity .22s ease,transform .3s cubic-bezier(.2,.7,.2,1)}.avc-d .qf-steps.qp-switching>*{pointer-events:none}.avc-d .qf-steps.qp-switching.qp-fwd>*{opacity:0;transform:translateX(-28px);transition-duration:.16s,.17s}.avc-d .qf-steps.qp-switching.qp-bwd>*{opacity:0;transform:translateX(28px);transition-duration:.16s,.17s}.avc-d .qf-steps.qp-enter.qp-fwd>*{opacity:0;transform:translateX(28px);transition:none}.avc-d .qf-steps.qp-enter.qp-bwd>*{opacity:0;transform:translateX(-28px);transition:none}.avc-d .qf-steps{overflow:hidden}.avc-d .qf-steps{display:flex;flex-direction:column}.avc .qp-body{flex:1 0 auto}.avc .qp-body-center{display:flex;flex-direction:column;justify-content:center}.avc .qp-ind-sm{padding:3px;flex:none}.avc .qp-ind-sm .qp-tab{padding:5px 14px;font-size:12.5px}.avc .qp-ind .qp-tab{cursor:default}.avc .qp-ind .qp-tab.done{color:#B0781F;cursor:pointer}.avc .qp-ind .qp-tab.done:hover,.avc .qp-ind .qp-tab.next:hover{color:#C8841F;background:#FFFFFF}
1892.avc .qp-ind .qp-tab.next{cursor:pointer}.avc .qp-row3:last-child{margin-bottom:0}@media (max-width:1024px){.avc .qp-row3{grid-template-columns:1fr 1fr}.avc .qp-head-r{flex:1 1 100%}}/* ═══ notice dialog ═══ */.avc .qn-backdrop{position:fixed;inset:0;background:rgba(11,22,38,0.55);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:20040;opacity:0;pointer-events:none;transition:opacity .2s ease}.avc .qn-backdrop.open{opacity:1;pointer-events:auto}.avc .qn{position:fixed;top:50%;left:50%;transform:translate(-50%,calc(-50% + 14px));width:min(420px,calc(100vw - 32px));background:#FFFFFF;border:1px solid #EDE7DB;border-radius:18px;padding:28px 28px 24px;text-align:center;z-index:20041;box-shadow:0 40px 80px -24px rgba(11,22,38,0.5);opacity:0;visibility:hidden;transition:opacity .2s ease,transform .25s cubic-bezier(.2,.7,.2,1),visibility 0s linear .2s}.avc .qn.open{opacity:1;visibility:visible;transform:translate(-50%,-50%);transition:opacity .2s ease,transform .25s cubic-bezier(.2,.7,.2,1),visibility 0s linear}.avc .qn-icon{width:48px;height:48px;border-radius:50%;margin:0 auto 14px;background:rgba(232,169,60,0.18);color:#B0781F;display:flex;align-items:center;justify-content:center}.avc .qn-icon svg{width:22px;height:22px}.avc .qn-title{font-size:20px;font-weight:700;letter-spacing:-.015em;line-height:1.2;color:#0B1626;margin:0 0 8px}.avc .qn-text{font-size:15px;line-height:1.55;color:#5B6472;margin:0 0 20px}.avc .qn-btn{display:inline-flex;align-items:center;justify-content:center;height:48px;padding:0 28px;background:#E8A93C;color:#0B1626;border:0;border-radius:999px;font-size:15.5px;font-weight:700;cursor:pointer;box-shadow:0 10px 26px rgba(232,169,60,0.35)}.avc .qn-btn:hover{background:#F4BF5E;color:#0B1626}/* quote page: FAQ block centred on the page (owner 2026-08-22) — desktop/tablet tree */.avc .avc-d section[data-screen-label="Pricing FAQs"]>div>div:first-child{justify-content:center}.avc .avc-d section[data-screen-label="Pricing FAQs"]>div>div:first-child::before{content:"";flex:1;height:1px;background:linear-gradient(to right,transparent,rgba(200,132,31,0.4))}.avc .avc-d section[data-screen-label="Pricing FAQs"] h2{text-align:center;margin-left:auto;margin-right:auto}.avc .avc-d section[data-screen-label="Pricing FAQs"] div[style^="max-width:920px"]{margin:0 auto}/* quote page: section eyebrows ("Why Choose AvSky Charters?", "Charter Flight Quote FAQs") a touch bigger (owner 2026-08-22) */.avc section[data-screen-label="Why AvSky"] span[style*="letter-spacing:0.16em"][style*="color:#B0781F"],.avc section[data-screen-label="Pricing FAQs"] span[style*="letter-spacing:0.16em"][style*="color:#B0781F"]{font-size:14px!important}/* About / Contact / Memberships: section rhythm a notch roomier than the Quote page (owner 2026-08-22) — 80/80 desktop, 64/64 tablet, first section after the hero 56 */.avc .avc-d section[data-screen-label="Our Story"],.avc .avc-d section[data-screen-label="Press"],.avc .avc-d section[data-screen-label="Request a Quote"],.avc .avc-d section[data-screen-label="Team"],.avc .avc-d section[data-screen-label="Who to reach"],.avc .avc-d section[data-screen-label="Home Base"],.avc .avc-d section[data-screen-label="Member Benefits"],.avc .avc-d section[data-screen-label="Membership Inquiry"]{padding:68px 0 80px}.avc .avc-d section[data-screen-label="Our Story"],.avc .avc-d section[data-screen-label="Who to reach"],.avc .avc-d section[data-screen-label="Member Benefits"]{padding-top:56px}@media (max-width:1024px){.avc .avc-d section[data-screen-label="Our Story"],.avc .avc-d section[data-screen-label="Press"],.avc .avc-d section[data-screen-label="Request a Quote"],.avc .avc-d section[data-screen-label="Team"],.avc .avc-d section[data-screen-label="Who to reach"],.avc .avc-d section[data-screen-label="Home Base"],.avc .avc-d section[data-screen-label="Member Benefits"],.avc .avc-d section[data-screen-label="Membership Inquiry"]{padding:54px 0 64px}}/* ═══ Memberships: inquiry form in the Quote card language (owner 2026-08-22) ═══ */.avc .avc-mcard .mgrid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:40px;align-items:start}.avc .avc-mcard .mfields,.avc .avc-mcard .maside{min-width:0}.avc .avc-mcard .qp-row2{margin-bottom:14px}.avc .avc-mcard .qp-ta{min-height:96px}.avc .avc-mcard .mfoot{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:22px;flex-wrap:wrap}.avc .avc-mcard .avc-form-error{flex:1 1 100%;margin:0;color:#991B1B;font-size:13.5px}.avc .avc-mcard .fsx{padding-top:8px}@media (max-width:1024px){.avc .avc-mcard .mgrid{grid-template-columns:1fr;gap:32px}}.avc-m .avc-mcard{padding:0;overflow:hidden;border:1px solid #EDE7DB;border-radius:16px;--qp-x:20px;box-shadow:0 16px 36px -20px rgba(11,22,38,0.16)}.avc-m .avc-mcard .qp-head{padding:22px var(--qp-x) 20px}.avc-m .avc-mcard .qp-head-main{display:block}.avc-m .avc-mcard .qp-eyebrow .qp-badge{display:none}.avc-m .avc-mcard .qp-title{font-size:26px}.avc-m .avc-mcard .qp-body{padding:22px var(--qp-x) 26px}.avc-m .avc-mcard .mgrid{grid-template-columns:1fr;gap:26px}.avc-m .avc-mcard .qp-row2{grid-template-columns:1fr}.avc-m .avc-mcard .qp-submit{width:100%;justify-content:center}.avc-m .avc-mcard .qp-eyebrow{flex-wrap:nowrap;gap:10px}.avc-m .avc-mcard .qp-eyebrow .t{font-size:10.5px;letter-spacing:.14em;overflow:hidden;text-overflow:ellipsis}/* About hero: equal space above the eyebrow and below the trust bar, trimmed from 96 to 80 (owner 2026-08-22) */.avc .avc-d:has(section[data-screen-label="Our Story"]) header[data-screen-label="Hero"]>div:first-child{padding-top:80px}.avc .avc-d:has(section[data-screen-label="Our Story"]) header[data-screen-label="Hero"]>div:last-child{padding-bottom:48px}@media (max-width:1024px){.avc .avc-d:has(section[data-screen-label="Our Story"]) header[data-screen-label="Hero"]>div:first-child{padding-top:56px}.avc .avc-d:has(section[data-screen-label="Our Story"]) header[data-screen-label="Hero"]>div:last-child{padding-bottom:28px}}/* ═══ in-place success for the static forms (About / Contact / Memberships): landscape receipt that fits the form's column ═══ */.avc .fsx-wide{container-type:inline-size;display:flex;flex-direction:column;justify-content:center;align-items:stretch;text-align:left;padding:4px 0;width:100%;gap:22px}.avc .fsx-wide .fsx-l{display:flex;flex-direction:column;align-items:flex-start}.avc .fsx-wide .fsx-r{display:flex;flex-direction:column;align-items:stretch;min-width:0}.avc .fsx-wide .fsx-mark{width:56px;height:56px;margin-bottom:16px}.avc .fsx-wide .fsx-mark .disc{inset:12px}.avc .fsx-wide .fsx-mark .disc svg{width:18px;height:18px}.avc .fsx-wide .fsx-eyebrow{margin-bottom:8px}.avc .fsx-wide h3{font-size:26px;margin-bottom:8px}.avc .fsx-wide .fsx-sub{font-size:14.5px;margin:0 0 18px;max-width:none}.avc .fsx-wide .fsx-receipt,.avc .fsx-wide .fsx-sum,.avc .fsx-wide .fsx-next{max-width:none}.avc .fsx-wide .fsx-sum{margin-bottom:16px;padding:10px 16px 6px}.avc .fsx-wide .fsx-sum-row{padding:5px 0}.avc .fsx-wide .fsx-next{gap:9px;margin-bottom:0}.avc .fsx-wide .fsx-step .t{font-size:13px}@container (min-width:620px){.avc .fsx-wide{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:24px 40px;align-items:center}.avc .fsx-wide .fsx-mark{width:64px;
1892height:64px;margin-bottom:20px}.avc .fsx-wide h3{font-size:28px}.avc .fsx-wide .fsx-sub{font-size:15px;margin-bottom:22px}.avc .fsx-wide .fsx-sum{padding:14px 16px 8px;margin-bottom:18px}}.avc .qf-card>*{transition:opacity .22s ease}.avc .qf-card.qp-switching>*{opacity:0;transition-duration:.16s}.avc .qf-card.qp-enter>*{opacity:0;transition:none}@container (max-width:619px){.avc .fsx-wide{gap:16px}.avc .fsx-wide .fsx-mark{width:48px;height:48px;margin-bottom:12px}.avc .fsx-wide .fsx-mark .disc{inset:10px}.avc .fsx-wide .fsx-sub{margin-bottom:14px}.avc .fsx-wide .fsx-receipt{padding:14px 16px;margin-bottom:12px}.avc .fsx-wide .fsx-route{padding-bottom:10px;margin-bottom:10px}.avc .fsx-wide .fsx-sum{margin-bottom:12px;padding:8px 14px 4px}.avc .fsx-wide .fsx-next{gap:7px}}.avc .qp-success .fsx-wide{padding:0}.avc .qp-success .fsx-wide .fsx-next{margin:0 0 18px}.avc .qp-success .fsx-wide .fsx-sum{margin-bottom:0}/* Quote step 2: the Trip notes cell slides open on focus (selects yield; labels ellipsize so the row height never changes) */.avc .qp-row3{transition:grid-template-columns .34s cubic-bezier(.2,.7,.2,1)}.avc .qp-row3>div{min-width:0}.avc .qp-row3 .qp-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (min-width:1025px){.avc .qp-row3:has(input[data-field="notes"]:focus){grid-template-columns:.5fr .5fr 2.6fr}.avc .qp-row3:has(input[data-field="notes"]:focus) .qp-cell select{text-overflow:ellipsis}}@media (max-width:1024px){.avc .qp-row3>div:last-child{grid-column:1/-1}}/* ═══ custom dropdowns (match the Places suggestion list) ═══ */.avc .avc-sel-host{position:relative}.avc select.avc-sel-native{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;pointer-events:none;margin:0;padding:0;border:0}.avc .qp-cell .avc-sel-btn{flex:1;min-width:0;height:100%;background:transparent;border:0;padding:0;margin:0;text-align:left;font:inherit;font-size:16px;font-weight:500;color:#0B1626;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:normal;border-radius:0;box-shadow:none}.avc .qp-cell .avc-sel-btn:hover{background:transparent;color:#0B1626}.avc .qp-cell .avc-sel-btn.ph{color:#B8B3A6;font-weight:400}.avc .avc-sel-btn.ph{color:#B8B3A6}.avc .qf-box .avc-sel-btn{flex:1;min-width:0;background:transparent;border:0;padding:0;margin:0;text-align:left;font:inherit;font-size:16px;color:#0B1626;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:0;box-shadow:none}.avc-sel-list{position:absolute;z-index:20010;background:#FFFFFF;border:1px solid #E8A93C;border-top:0;border-radius:0 0 12px 12px;box-shadow:0 24px 44px -18px rgba(11,22,38,0.28);margin:0;padding:0;max-height:320px;overflow-y:auto;font-family:'Poppins',sans-serif;box-sizing:border-box}.avc-sel-opt{padding:12px 16px 12px 43px;font-size:15px;line-height:1.4;color:#0B1626;cursor:pointer;border-top:1px solid #EDE7DB}.avc-sel-opt:hover,.avc-sel-opt.active{background:#FBFAF7}.avc-sel-opt[aria-selected="true"]{font-weight:600}.avc-sel-opt:last-child{border-radius:0 0 11px 11px}.avc-sel-list.plain .avc-sel-opt{padding-left:16px}.avc .avc-sel-btn.av-pac-open{border-color:#E8A93C!important;border-bottom-color:#EDE7DB!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important;box-shadow:none!important}/* Contact: a touch more room under the map section before the footer (owner 2026-08-22) */.avc .avc-d section[data-screen-label="Home Base"]{padding-bottom:100px}@media (max-width:1024px){.avc .avc-d section[data-screen-label="Home Base"]{padding-bottom:80px}}/* About: team cards are links to the member pages *//* About: team cards are <a>s to /team/<slug>/ (build/pages.js linkTeamCards) — same hover as the team pages' cards: no motion */.avc a.avc-teamcard{transition:border-color .2s,box-shadow .2s}.avc a.avc-teamcard:hover,.avc a.avc-teamcard:focus-visible{border-color:rgba(176,120,31,0.45)!important;box-shadow:0 6px 18px -8px rgba(11,22,38,0.16)!important;outline:none}.avc a.avc-teamtile:focus-visible{outline:2px solid #E8A93C;outline-offset:-2px}/* ── layout: bleed ── */.avc{max-width:none;box-shadow:none;width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}html,body{overflow-x:hidden;overflow-x:clip}/* ── generated responsive classes (about) ── */.avc .ds1{max-width:1240px;margin:0 auto;display:grid;grid-template-columns:1.04fr 0.96fr;gap:72px;align-items:center;padding:96px 40px 72px}@media (max-width:1024px){.avc .ds1{grid-template-columns:1fr;gap:40px;padding:64px 32px 48px}}.avc .ds2{font-family:'Poppins',sans-serif;font-size:54px;font-weight:700;line-height:1.05;letter-spacing:-0.025em;color:#FFFFFF;margin:0 0 24px;text-wrap:pretty}@media (max-width:1024px){.avc .ds2{font-size:44px}}.avc .ds3{font-size:16.5px;line-height:1.72;color:rgba(255,255,255,0.75);margin:0 0 36px;max-width:544px;text-wrap:pretty}@media (max-width:1024px){.avc .ds3{max-width:660px}}.avc .ds6{position:absolute;inset:24px -24px -24px 24px;border:1.5px solid rgba(232,169,60,0.45);border-radius:16px}@media (max-width:1024px){.avc .ds6{display:none;position:unset;inset:unset;border:unset;border-radius:unset}}.avc .ds7{max-width:1240px;margin:0 auto;display:grid;border-top:1px solid rgba(255,255,255,0.12);grid-template-columns:repeat(4,1fr);row-gap:0;align-items:stretch;padding:0 40px 10px}@media (max-width:1024px){.avc .ds7{padding:0 32px 16px}}.avc .ds8{background:radial-gradient(ellipse at 10% 0%, rgba(232,169,60,0.05), transparent 50%) #FFFFFF;padding:96px 0}@media (max-width:1024px){.avc .ds8{padding:72px 0 64px}}.avc .ds9{max-width:1240px;margin:0 auto;display:grid;padding:0 40px;grid-template-columns:minmax(0,1fr) minmax(0,0.92fr);gap:88px;align-items:start}@media (max-width:1024px){.avc .ds9{padding:0 32px;grid-template-columns:1fr;gap:48px}}.avc .ds10{font-family:'Poppins',sans-serif;font-size:42px;font-weight:700;color:#0B1626;letter-spacing:-0.02em;line-height:1.05;margin:0;white-space:nowrap}@media (max-width:1024px){.avc .ds10{font-size:36px;white-space:normal}}.avc .ds11{position:absolute;inset:20px -20px -20px 20px;border:1.5px solid rgba(232,169,60,0.45);border-radius:6px}@media (max-width:1024px){.avc .ds11{display:none;position:unset;inset:unset;border:unset;border-radius:unset}}.avc .ds12{max-width:1240px;margin:0 auto;display:grid;padding:96px 40px 72px;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:96px;align-items:start}@media (max-width:1024px){.avc .ds12{padding:64px 32px 48px;grid-template-columns:1fr;gap:48px}}.avc .ds13{font-family:'Poppins',sans-serif;font-size:42px;font-weight:700;color:#FFFFFF;letter-spacing:-0.02em;line-height:1.05;margin:0 0 18px;text-wrap:pretty}@media (max-width:1024px){.avc .ds13{font-size:36px}}.avc .ds15{max-width:1240px;margin:0 auto;padding:0 40px 96px}@media (max-width:1024px){.avc .ds15{padding:0 32px 64px}}.avc .ds16{position:relative;display:grid;grid-template-columns:minmax(0,0.62fr) minmax(0,2fr);gap:64px;padding:46px 48px 44px}@media (max-width:1024px){.avc .ds16{grid-template-columns:1fr;gap:40px;padding:40px 36px 38px}}.avc .ds18{font-size:16px;color:#6B7280;white-space:nowrap}@media (max-width:1024px){.avc .ds18{white-space:normal}}.avc .ds20{background:radial-gradient(ellipse at 90% 10%, rgba(232,169,60,0.06), transparent 55%) #FFFFFF;border-top:1px solid #ECE9E2;padding:96px 0}@media (max-width:1024px){.avc .ds20{padding:72px 0 64px}}.avc .ds21{max-width:1240px;margin:0 auto;padding:0 40px}@media (max-width:1024px){.avc .ds21{padding:0 32px}}.avc .ds24{font-size:20px;font-weight:700;color:#0B1626;letter-spacing:-0.015em;margin:0;white-space:nowrap}@media (max-width:1024px){.avc .ds24{white-space:normal}}.avc .ds25{font-size:16px;line-height:1.65;color:#6B7280;margin:0;white-space:nowrap}@media (max-width:1024px){.avc .ds25{white-space:normal}}.avc .ds26{display:grid;grid-template-columns:260px minmax(0,1fr) 26px;gap:26px;align-items:baseline;
1892padding:18px 26px;color:inherit;border-bottom:1px solid #EDE7DB}@media (max-width:1024px){.avc .ds26{grid-template-columns:200px minmax(0,1fr) 26px}}.avc .ds28{display:grid;grid-template-columns:260px minmax(0,1fr) 26px;gap:26px;align-items:baseline;padding:18px 26px;color:inherit}@media (max-width:1024px){.avc .ds28{grid-template-columns:200px minmax(0,1fr) 26px}}.avc .ds29{background:radial-gradient(ellipse at 84% 0%, rgba(232,169,60,0.07), transparent 55%) #FBFAF7;border-top:1px solid #EDE7DB;padding:96px 0}@media (max-width:1024px){.avc .ds29{padding:72px 0 64px}}.avc .ds30{max-width:1240px;margin:0 auto;display:grid;padding:0 40px;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:96px;align-items:start}@media (max-width:1024px){.avc .ds30{padding:0 32px;grid-template-columns:1fr;gap:48px}}.avc .ds31{font-family:'Poppins',sans-serif;font-size:42px;font-weight:700;color:#0B1626;letter-spacing:-0.02em;line-height:1.05;margin:0 0 18px}@media (max-width:1024px){.avc .ds31{font-size:36px}}.avc .ds32{font-size:16px;line-height:1.65;color:#4B5563;margin:0 0 44px}@media (max-width:1024px){.avc .ds32{margin:0 0 30px}}.avc .ds33{display:block}@media (max-width:1024px){.avc .ds33{display:grid;grid-template-columns:1fr 0.78fr;gap:36px;align-items:stretch}}.avc .ds34{height:1px;background:#ECE9E2;margin:36px 0 26px}@media (max-width:1024px){.avc .ds34{display:none;height:unset;background:unset;margin:unset}}.avc .ds35{}@media (max-width:1024px){.avc .ds35{background:#FFFFFF;border:1px solid #ECE9E2;border-radius:14px;padding:24px 26px;height:100%;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center}}.avc .ds37{background:#FFFFFF;border-top:1px solid #EDE7DB;padding:96px 0}@media (max-width:1024px){.avc .ds37{padding:72px 0 64px}}.avc .ds38{font-family:'Poppins',sans-serif;font-size:42px;font-weight:700;color:#0B1626;letter-spacing:-0.02em;line-height:1.05;margin:0 0 16px;white-space:nowrap}@media (max-width:1024px){.avc .ds38{font-size:36px;white-space:normal}}.avc .ds39{display:grid;grid-template-columns:repeat(3,1fr);gap:52px 44px}@media (max-width:1024px){.avc .ds39{gap:36px 24px}}.avc .dh4:hover{background:#F4BF5E !important;color:#0B1626 !important}.avc .dh5:hover{color:#F4BF5E !important;border-bottom:1.5px solid #F4BF5E !important}.avc .dh14:hover{color:#F4BF5E !important}.avc .dh19:hover{background:#16283F !important}.avc .dh22:hover{color:#8F6420 !important}.avc .dh23:hover{border:1px solid rgba(200,132,31,0.45) !important;box-shadow:0 24px 48px -20px rgba(11,22,38,0.18) !important;color:inherit !important}.avc .dh27:hover{background:rgba(232,169,60,0.06) !important;color:inherit !important}.avc .dh36:hover{color:#B0781F !important}.avc .dh40:hover{background:#E8A93C !important;color:#0B1626 !important}.avc .df17:focus{border:1px solid #0B1626 !important;box-shadow:0 0 0 3px rgba(232,169,60,0.22) !important}.avc .mh1:hover{background:#F4BF5E !important;color:#0B1626 !important}.avc .mh2:hover{color:#F4BF5E !important;border:1px solid rgba(244,191,94,0.6) !important}.avc .mh3:hover{color:#F4BF5E !important}.avc .mh5:hover{background:#F4BF5E !important}.avc .mh6:hover{color:inherit !important}.avc .mh7:hover{color:#8F6420 !important}.avc .mh8:hover{color:#B0781F !important}.avc .mh9:hover{border-color:#F4BF5E !important;color:#F4BF5E !important}.avc .mf4:focus{border:1px solid #E8A93C !important;box-shadow:0 0 0 3px rgba(232,169,60,0.18) !important}</style><div class="avc avc-about" id="avc-root" data-avc-page="about"><div class="avc-d"><header data-screen-label="Hero" style="background:radial-gradient(ellipse at 88% 0%, rgba(232,169,60,0.1), transparent 55%) #0B1626;padding:0 40px"><div class="ds1"><div><div style="display:flex;align-items:center;gap:9px;margin-bottom:22px"><span style="width:8px;height:8px;border-radius:50%;background:#E8A93C;box-shadow:0 0 0 4px rgba(232,169,60,0.18)"></span><h1 style="font-size:16px;font-weight:500;color:rgba(255,255,255,0.55);margin:0;letter-spacing:0;line-height:1.5">
1892AvSky Charters · Global On-Demand Private Jet Access</h1></div><h2 class="ds2">We deliver exceptional travel experiences</h2><p class="ds3">AvSky Charters provides customized private flights backed by the industry’s most attentive and dedicated customer service team. With access to more than 12,000 aircraft, we can always find the ideal plane and crew for your trip — even on short notice. Across the state or halfway around the world, AvSky is the only call you’ll need to make.</p><div style="display:flex;align-items:center;gap:22px"><button class="dh4" type="button" data-action="open-modal" style="display:inline-flex;align-items:center;gap:9px;background:#E8A93C;color:#0B1626;border:none;font-family:'Poppins',sans-serif;font-size:16px;font-weight:600;padding:15px 30px;border-radius:999px;cursor:pointer;box-shadow:0 14px 30px -10px rgba(232,169,60,0.45)">Request a Quote <span aria-hidden="true">→</span></button><a class="dh5" href="#team" data-action="scroll" data-target="team" style="display:inline-flex;align-items:center;gap:9px;color:#FFFFFF;font-size:16px;font-weight:600;line-height:1;padding:0 2px 2px;border-bottom:1.5px solid rgba(255,255,255,0.28)">Meet the team</a></div></div><div style="position:relative;order:0"><div class="ds6"></div><div style="position:relative;aspect-ratio:3/2;border-radius:16px;overflow:hidden;box-shadow:0 40px 80px -28px rgba(0,0,0,0.7)"><img width="1742" height="1109" decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='1742'%20height='1109'%20viewBox='0%200%201742%201109'%3E%3C/svg%3E" alt="The AvSky Charters team" style="display:block;width:100%;height:100%;object-fit:cover;object-position:50% 35%" class="perfmatters-lazy" data-src="https://avskycharters.com/wp-content/uploads/2026/01/AvSkyChartersTeamJan2026A.png" /><div style="position:absolute;bottom:16px;left:16px;pointer-events:none;background:rgba(11,22,38,0.72);backdrop-filter:blur(8px);border:1px solid rgba(232,169,60,0.4);color:#FFFFFF;padding:6px 14px;border-radius:999px;font-size:16px;font-weight:600;letter-spacing:0.04em">The AvSky Charters Team</div></div></div></div><div class="ds7"><div style="text-align:center;padding:30px 24px 32px;display:flex;flex-direction:column;justify-content:center"><div style="font-size:34px;font-weight:700;color:#FFFFFF;line-height:1;letter-spacing:-0.02em;margin-bottom:8px">8,000+</div><div style="font-size:16px;line-height:1.45;color:rgba(255,255,255,0.62)">Vetted operators,<br>screened for safety</div></div><div style="text-align:center;padding:30px 24px 32px;display:flex;flex-direction:column;justify-content:center;border-left:1px solid rgba(255,255,255,0.1)"><div style="font-size:34px;font-weight:700;color:#FFFFFF;line-height:1;letter-spacing:-0.02em;margin-bottom:8px">12,000+</div><div style="font-size:16px;line-height:1.45;color:rgba(255,255,255,0.62)">Aircraft positioned<br>worldwide</div></div><div style="text-align:center;padding:30px 24px 32px;display:flex;flex-direction:column;justify-content:center;border-left:1px solid rgba(255,255,255,0.1);border-top:none"><div style="font-size:34px;font-weight:700;color:#FFFFFF;line-height:1;letter-spacing:-0.02em;margin-bottom:8px">Top 5</div><div style="font-size:16px;line-height:1.45;color:rgba(255,255,255,0.62)">U.S. brokerage<br>by sales volume</div></div><div style="text-align:center;padding:30px 24px 32px;display:flex;flex-direction:column;justify-content:center;border-left:1px solid rgba(255,255,255,0.1);border-top:none"><div style="font-size:34px;font-weight:700;color:#FFFFFF;line-height:1;letter-spacing:-0.02em;margin-bottom:8px">24/7</div><div style="font-size:16px;line-height:1.45;color:rgba(255,255,255,0.62)">Florida-based,<br>not a call center</div></div></div></header><div style="display:flex;flex-direction:column"><div style="position:relative"><section class="ds8" data-screen-label="Our Story"><div class="ds9"><div><div style="display:flex;align-items:center;gap:22px;flex-wrap:wrap;margin-bottom:28px"><h2 class="ds10">The AvSky Charters Story</h2><span style="flex:1;min-width:60px;height:1px;background:linear-gradient(to right, rgba(200,132,31,0.55), rgba(200,132,31,0.08))"></span></div><div style="position:relative;margin:0 0 46px"><div class="ds11"></div><div style="position:relative;aspect-ratio:16/10;border-radius:6px;overflow:hidden;box-shadow:0 30px 60px -30px rgba(11,22,38,0.45)"><img width="2048" height="1365" decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='2048'%20height='1365'%20viewBox='0%200%202048%201365'%3E%3C/svg%3E" alt="The AvSky Charters team on the ramp at Venice Municipal Airport" style="display:block;width:100%;height:100%;object-fit:cover;object-position:50% 50%" class="perfmatters-lazy" data-src="https://avskycharters.com/wp-content/uploads/2026/08/IMG_2114.jpg" /><div style="display:block;position:absolute;bottom:16px;left:16px;pointer-events:none;background:rgba(11,22,38,0.72);backdrop-filter:blur(8px);border:1px solid rgba(232,169,60,0.4);color:#FFFFFF;padding:6px 14px;border-radius:999px;font-size:16px;font-weight:600;letter-spacing:0.04em">On the tarmac at Venice Municipal Airport</div></div></div><p style="font-size:16.5px;line-height:1.85;color:#374151;margin:0 0 20px">Based in Venice, Florida, AvSky Charters was built on a straightforward premise: private travel should be completely personalized, transparent, and effortless.</p><p style="font-size:16.5px;line-height:1.85;color:#374151;margin:0 0 20px">Born out of AvSky Corporation’s established global leadership in aircraft sales, our charter team pairs institutional private aviation expertise with boutique, high-touch execution.</p><p style="font-size:16.5px;line-height:1.85;color:#374151;margin:0 0 20px">Led by CEO Cameron Cary, we provide on-demand charters across every aircraft class, backed by an industry-leading network of more than 8,000 highly-vetted operators.</p><p style="font-size:16.5px;line-height:1.85;color:#374151;margin:0 0 20px">
1892What truly sets us apart is how we serve our clients. Every trip is managed by a dedicated in-house charter advisor who learns your preferences, coordinates logistics from ground transport to customs, and remains on-call around the clock.</p><p style="font-size:16.5px;line-height:1.85;color:#374151;margin:0">With transparent pricing and uncompromised safety standards, we ensure you always fly on your schedule, in the right aircraft, and with total peace of mind.</p></div><div style="background:#FBFAF7;border:1px solid #EDE7DB;border-radius:18px;padding:38px 40px 40px;display:flex;flex-direction:column"><div style="padding-bottom:22px"><div style="display:flex;align-items:center;gap:14px;margin-bottom:14px"><span style="font-size:22px;font-weight:700;color:#0B1626;letter-spacing:-0.015em;white-space:nowrap">Our Specialties</span><span style="flex:1;height:1px;background:linear-gradient(to right, rgba(200,132,31,0.55), rgba(200,132,31,0))"></span></div><p style="font-size:16px;line-height:1.7;color:#5B6472;margin:14px 0 0">Backed by a global network that includes more than 12,000 aircraft, AvSky manages private travel for virtually any destination, timeline, or passenger count. Whether you need a light jet staged in hours or a complex multi-leg itinerary, your dedicated charter advisor manages every detail from takeoff to touchdown.</p></div><div style="position:relative;padding-left:34px;margin-top:0"><div style="position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(to right, rgba(11,22,38,0.45), rgba(11,22,38,0.10) 70%, rgba(11,22,38,0))"></div><div style="position:relative;display:block;padding:22px 0 18px;align-items:start"><span style="display:block;position:absolute;left:-34px;top:29px;width:8px;height:8px;border-radius:50%;background:linear-gradient(180deg,#F4C078,#C8841F);box-shadow:0 0 0 4px rgba(232,169,60,0.16), 0 0 10px rgba(232,169,60,0.45)"></span><span style="position:absolute;left:-34px;right:0;bottom:0;height:1px;background:linear-gradient(to right, rgba(11,22,38,0.14), rgba(11,22,38,0.04) 70%, rgba(11,22,38,0))"></span><span><span style="display:block;font-size:16.5px;font-weight:600;color:#0B1626;letter-spacing:-0.01em;line-height:1.35">Bahamas &amp; Caribbean Private Escapes</span><span style="display:block;font-size:16px;line-height:1.6;color:#6B7280;margin-top:5px">Seamless island-hopping, direct FBO ramp access, and customs coordination across the islands.</span></span></div><div style="position:relative;display:block;padding:18px 0;align-items:start"><span style="display:block;position:absolute;left:-34px;top:25px;width:8px;height:8px;border-radius:50%;background:linear-gradient(180deg,#F4C078,#C8841F);box-shadow:0 0 0 4px rgba(232,169,60,0.16), 0 0 10px rgba(232,169,60,0.45)"></span><span style="position:absolute;left:-34px;right:0;bottom:0;height:1px;background:linear-gradient(to right, rgba(11,22,38,0.14), rgba(11,22,38,0.04) 70%, rgba(11,22,38,0))"></span><span><span style="display:block;font-size:16.5px;font-weight:600;color:#0B1626;letter-spacing:-0.01em;line-height:1.35">Urgent &amp; Same-Day Executive Flights</span><span style="display:block;font-size:16px;line-height:1.6;color:#6B7280;margin-top:5px">Aircraft sourced, crewed, and ready to depart on short notice when business plans change.</span></span></div><div style="position:relative;display:block;padding:18px 0;align-items:start"><span style="display:block;position:absolute;left:-34px;top:25px;width:8px;height:8px;border-radius:50%;background:linear-gradient(180deg,#F4C078,#C8841F);box-shadow:0 0 0 4px rgba(232,169,60,0.16), 0 0 10px rgba(232,169,60,0.45)"></span><span style="position:absolute;left:-34px;right:0;bottom:0;height:1px;background:linear-gradient(to right, rgba(11,22,38,0.14), rgba(11,22,38,0.04) 70%, rgba(11,22,38,0))"></span><span><span style="display:block;font-size:16.5px;font-weight:600;color:#0B1626;letter-spacing:-0.01em;line-height:1.35">Team, Athletic &amp; Tour Group Travel</span><span style="display:block;font-size:16px;line-height:1.6;color:#6B7280;margin-top:5px">Custom logistics for sports teams, event staff, and production crews, including heavy luggage and equipment transport.</sp
1892an></span></div><div style="position:relative;display:block;padding:18px 0;align-items:start"><span style="display:block;position:absolute;left:-34px;top:25px;width:8px;height:8px;border-radius:50%;background:linear-gradient(180deg,#F4C078,#C8841F);box-shadow:0 0 0 4px rgba(232,169,60,0.16), 0 0 10px rgba(232,169,60,0.45)"></span><span style="position:absolute;left:-34px;right:0;bottom:0;height:1px;background:linear-gradient(to right, rgba(11,22,38,0.14), rgba(11,22,38,0.04) 70%, rgba(11,22,38,0))"></span><span><span style="display:block;font-size:16.5px;font-weight:600;color:#0B1626;letter-spacing:-0.01em;line-height:1.35">Medical Transport &amp; Air Ambulance</span><span style="display:block;font-size:16px;line-height:1.6;color:#6B7280;margin-top:5px">Critical patient transfers and specialized medical aircraft arranged 24/7 with zero delay.</span></span></div><div style="position:relative;display:block;padding:18px 0 0;align-items:start"><span style="display:block;position:absolute;left:-34px;top:25px;width:8px;height:8px;border-radius:50%;background:linear-gradient(180deg,#F4C078,#C8841F);box-shadow:0 0 0 4px rgba(232,169,60,0.16), 0 0 10px rgba(232,169,60,0.45)"></span><span><span style="display:block;font-size:16.5px;font-weight:600;color:#0B1626;letter-spacing:-0.01em;line-height:1.35">Government &amp; Official Travel</span><span style="display:block;font-size:16px;line-height:1.6;color:#6B7280;margin-top:5px">Vetted operators meeting strict safety, regulatory, and reporting standards for public-sector missions.</span></span></div></div></div></div></section></div><div style="position:relative"><section id="contact" data-screen-label="Contact &amp; Location" style="position:relative;overflow:hidden;background:linear-gradient(158deg, #16283F 0%, #0F1D31 44%, #0A1420 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,0.07)"><div style="position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 60% 55% at 88% -8%, rgba(244,192,120,0.22), transparent 62%)"></div><div style="position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 80% 60% at 8% 108%, rgba(56,120,194,0.18), transparent 60%)"></div><div style="position:absolute;left:0;right:0;top:0;height:1px;pointer-events:none;background:linear-gradient(to right, rgba(244,192,120,0) 0%, rgba(244,192,120,0.85) 46%, rgba(244,192,120,0.15) 100%)"></div><div class="ds12"><div><h2 class="ds13">Serving the world from Venice, Florida</h2><p style="font-size:16px;line-height:1.65;color:rgba(255,255,255,0.7);margin:0 0 46px">Connect with our team to explore aircraft options, request an all-inclusive quote, or discuss upcoming travel.</p><div style="display:flex;align-items:center;gap:9px;margin-bottom:9px"><span style="width:8px;height:8px;border-radius:50%;background:#E8A93C;box-shadow:0 0 0 4px rgba(232,169,60,0.18)"></span><span style="font-size:16px;font-weight:500;color:rgba(255,255,255,0.5)">Visit us</span></div><div style="font-size:20px;font-weight:600;color:#FFFFFF;line-height:1.5">400 Airport Ave E, Venice, FL 34285</div><div style="height:1px;background:rgba(255,255,255,0.14);margin:26px 0"></div><div style="display:grid;grid-template-columns:auto 1fr;gap:14px 44px;align-items:baseline"><div style="font-size:16px;color:rgba(255,255,255,0.5)">Phone</div><a class="dh14" href="tel:8005410381" style="font-size:19px;font-weight:600;color:#FFFFFF">(800) 541-0381</a><div style="font-size:16px;color:rgba(255,255,255,0.5)">Email</div><a class="dh14" href="mailto:[email protected]" style="font-size:17px;font-weight:600;color:#FFFFFF">[email protected]</a></div></div><div style="position:relative;border-radius:18px;overflow:hidden;border:1px solid rgba(255,255,255,0.12);box-shadow:0 40px 80px -30px rgba(0,0,0,0.7)"><div style="position:relative;height:420px;background:#EAF1F5"><div class="avc-map" data-map="office" style="position:absolute;inset:0;height:100%"></div></div><div style="display:flex;align-items:center;justify-content:flex-end;padding:18px 24px;background:rgba(255,255,255,0.05);border-top:1px solid rgba(255,255,255,0.12)"><span style="font-size:16px;letter-spacing:0.08em;color:rgba(255,255,255,0.5)">27.0716&#176; N &#183; 82.4403&#176; W &#183; KVNC</span></div></div></div><div class="ds15"><div data-avc-form="contact" style="position:relative;overflow:hidden;background:#FBFAF7;border:1px solid #EDE7DB;border-radius:20px;box-shadow:0 40px 80px -34px rgba(0,0,0,0.5)"><div style="position:absolute;
1892left:0;right:0;top:0;height:1px;pointer-events:none;background:linear-gradient(to right, rgba(232,169,60,0) 0%, rgba(232,169,60,0.7) 46%, rgba(232,169,60,0.1) 100%)"></div><div class="ds16"><div><div style="font-size:26px;font-weight:700;color:#0B1626;letter-spacing:-0.02em;line-height:1.15;margin-bottom:12px">Send us a message</div><p style="font-size:16px;line-height:1.7;color:#6B7280;margin:0 0 26px">A charter advisor will respond as soon as possible.</p><div style="height:1px;background:#EDE7DB;margin-bottom:22px"></div><div style="display:flex;flex-direction:column;gap:14px"><div style="display:flex;align-items:flex-start;gap:11px"><span style="width:7px;height:7px;border-radius:50%;background:linear-gradient(180deg,#F4C078,#C8841F);margin-top:7px;flex:none"></span><span style="font-size:16px;line-height:1.5;color:#6B7280">All messages are answered by a member of our in-house team.</span></div><div style="display:flex;align-items:flex-start;gap:11px"><span style="width:7px;height:7px;border-radius:50%;background:linear-gradient(180deg,#F4C078,#C8841F);margin-top:7px;flex:none"></span><span style="font-size:16px;line-height:1.5;color:#6B7280">Quotes are all-inclusive.</span></div><div style="display:flex;align-items:flex-start;gap:11px"><span style="width:7px;height:7px;border-radius:50%;background:linear-gradient(180deg,#F4C078,#C8841F);margin-top:7px;flex:none"></span><span style="font-size:16px;line-height:1.5;color:#6B7280">We can accommodate virtually any private travel request, to and from anywhere in the world.</span></div></div></div><div><div data-avc-fields style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:22px;margin-bottom:22px"><div><label style="display:block;font-size:16px;font-weight:600;color:#5B6472;margin-bottom:8px">Name</label><input class="df17" data-f="name" type="text" placeholder="Your name" style="width:100%;padding:14px 15px;font-size:16px;background:#FFFFFF;border:1px solid #E4DDCC;border-radius:10px;color:#111827;outline:none;font-family:'Poppins',sans-serif"></div><div><label style="display:block;font-size:16px;font-weight:600;color:#5B6472;margin-bottom:8px">Email</label><input class="df17" data-f="email" type="email" placeholder="[email protected]" style="width:100%;padding:14px 15px;font-size:16px;background:#FFFFFF;border:1px solid #E4DDCC;border-radius:10px;color:#111827;outline:none;font-family:'Poppins',sans-serif"></div><div><label style="display:block;font-size:16px;font-weight:600;color:#5B6472;margin-bottom:8px">Phone</label><input class="df17" data-f="phone" type="tel" placeholder="555-123-5678" style="width:100%;padding:14px 15px;font-size:16px;background:#FFFFFF;border:1px solid #E4DDCC;border-radius:10px;color:#111827;outline:none;font-family:'Poppins',sans-serif"></div></div><div style="display:grid;grid-template-columns:1fr 1fr 1fr;gap:22px;margin-bottom:22px"><div><label style="display:block;font-size:16px;font-weight:600;color:#5B6472;margin-bottom:8px">Reason for contact</label><div style="position:relative"><select data-f="reason" style="width:100%;padding:14px 15px;font-size:16px;background:#FFFFFF;border:1px solid #E4DDCC;border-radius:10px;color:#111827;outline:none;font-family:'Poppins',sans-serif;appearance:none;padding-right:40px"><option>Charter quote</option><option>Membership program</option><option>Medical or air ambulance</option><option>Government travel</option><option>Press or partnerships</option><option>Something else</option></select><span style="position:absolute;right:15px;top:50%;transform:translateY(-50%);pointer-events:none;color:#8A8577;display:flex"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="width:15px;height:15px"><path d="m6 9 6 6 6-6"></path></svg></span></div></div><div><label style="display:block;font-size:16px;font-weight:600;color:#5B6472;margin-bottom:8px">Best way to reach you</label><div style="position:relative"><select data-f="bestWay" style="width:100%;padding:14px 15px;font-size:16px;background:#FFFFFF;border:1px solid #E4DDCC;border-radius:10px;color:#111827;outline:none;font-family:'Poppins',sans-serif;appearance:none;padding-right:40px"><option>Phone call</option><option>Text message</option><option>Email</option></select><span style="position:absolute;right:15px;top:50%;transform:translateY(-50%);pointer-events:none;color:#8A8577;display:flex"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="width:15px;height:15px"><path d="m6 9 6 6 6-6"></path></svg></span></div></div><div><label style="display:block;font-size:16px;font-weight:600;color:#5B6472;margin-bottom:8px">Travel window <span style="font-weight:400;color:#B8B3A6">(optional)</span></label><input class="df17" data-f="travelWindow" type="text" placeholder="e.g. late March" style="width:100%;padding:14px 15px;font-size:16px;background:#FFFFFF;border:1px solid #E4DDCC;border-radius:10px;color:#111827;outline:none;font-family:'Poppins',sans-serif"></div></div><div style="margin-bottom:24px"><label style="display:block;font-size:16px;font-weight:600;color:#5B6472;margin-bottom:8px">Message</label><textarea class="df17" data-f="message" placeholder="Where you’re headed, how many passengers, and anything else we should know…" style="width:100%;padding:14px 15px;font-size:16px;background:#FFFFFF;border:1px solid #E4DDCC;border-radius:10px;color:#111827;outline:none;font-family:'Poppins',sans-serif;min-height:132px;resize:vertical;line-height:1.6"></textarea></div><div style="display:flex;align-items:center;justify-content:space-between;gap:28px;padding-top:24px;border-top:1px solid #EDE7DB;flex-wrap:wrap"><span class="ds18">We only use your details for this inquiry — no lists, no spam.</span><button class="dh19" type="button" data-action="submit" style="flex:none;white-space:nowrap;padding:16px 34px;background:#0B1626;color:#FFFFFF;box-shadow:0 12px 26px -12px rgba(11,22,38,0.5);border:none;font-size:16px;font-weight:600;border-radius:999px;cursor:pointer;display:inline-flex;align-items:center;gap:10px;font-family:'Poppins',sans-serif">Send Message <span aria-hidden="true">→</span></button></div></div></div></div></div></section></div><div style="position:relative"><section class="ds20" id="press" data-screen-label="Press"><div class="ds21"><div style="margin-bottom:44px"><div style="display:flex;align-items:center;gap:22px;flex-wrap:wrap"><h2 class="ds10">AvSky in the headlines</h2><span style="flex:1;min-width:60px;height:1px;background:linear-gradient(to right, rgba(200,132,31,0.55), rgba(200,132,31,0.08))"></span><a class="dh22" href="mailto:[email protected]" style="flex:none;font-size:16px;font-weight:600;color:#B0781F;white-space:nowrap">Press inquiries &#8594;</a></div></div><div style="display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:stretch"><a class="dh23" href="https://www.businessobserverfl.com/news/2026/feb/27/sarasota-county-charter-flight-firm-volume/" target="_blank" rel="noopener" style="display:grid;grid-template-columns:176px 1fr;position:relative;background:#FBFAF7;border:1px solid #EDE7DB;border-radius:18px;overflow:hidden;color:inherit;box-shadow:0 2px 6px rgba(11,22,38,0.04)"><div style="background:#FFFFFF;border-right:1px solid #EDE7DB;padding:12px;display:flex;align-items:center"><img width="720" height="1090" decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='720'%20height='1090'%20viewBox='0%200%20720%201090'%3E%3C/svg%3E" alt="Bu
1892siness Observer front page — Tail Winds" style="display:block;width:100%;box-shadow:0 6px 18px rgba(11,22,38,0.12)" class="perfmatters-lazy" data-src="/wp-content/uploads/2026/08/press-business-observer.jpeg" /></div><div style="padding:28px 30px;display:flex;flex-direction:column;justify-content:center"><div style="font-size:20px;font-weight:700;color:#0B1626;letter-spacing:-0.012em;line-height:1.3">Tail Winds</div><p style="font-size:16px;line-height:1.65;color:#5B6472;margin:10px 0 0">A look at how AvSky Charters scaled without easing off the white-glove service its clients expect on every flight.</p><div style="margin-top:18px;padding-top:15px;border-top:1px solid #EDE7DB;display:flex;align-items:center;justify-content:space-between;gap:12px"><span style="font-size:16px;color:#9AA1AC">Cover story</span><span style="font-size:16px;font-weight:600;color:#B0781F">Read &#8594;</span></div></div></a><a class="dh23" href="https://www.floridatrend.com/nextgen/2025/10/07/chartering-success/" target="_blank" rel="noopener" style="display:grid;grid-template-columns:176px 1fr;position:relative;background:#FBFAF7;border:1px solid #EDE7DB;border-radius:18px;overflow:hidden;color:inherit;box-shadow:0 2px 6px rgba(11,22,38,0.04)"><div style="background:#FFFFFF;border-right:1px solid #EDE7DB;padding:12px;display:flex;align-items:center"><img width="1244" height="1674" decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='1244'%20height='1674'%20viewBox='0%200%201244%201674'%3E%3C/svg%3E" alt="NextGen feature — Chartering Success" style="display:block;width:100%;box-shadow:0 6px 18px rgba(11,22,38,0.12)" class="perfmatters-lazy" data-src="/wp-content/uploads/2026/08/press-nextgen.png" /></div><div style="padding:28px 30px;display:flex;flex-direction:column;justify-content:center"><div style="font-size:20px;font-weight:700;color:#0B1626;letter-spacing:-0.012em;line-height:1.3">Chartering Success</div><p style="font-size:16px;line-height:1.65;color:#5B6472;margin:10px 0 0">How founder Tyler Holt built a Florida charter operation around deep aircraft knowledge and hands-on client service.</p><div style="margin-top:18px;padding-top:15px;border-top:1px solid #EDE7DB;display:flex;align-items:center;justify-content:space-between;gap:12px"><span style="font-size:16px;color:#9AA1AC">Founder profile</span><span style="font-size:16px;font-weight:600;color:#B0781F">Read &#8594;</span></div></div></a><a class="dh23" href="https://www.forbesmiddleeast.com/industry/aviation/how-gulf-carriers-navigate-safety-and-revenue-amid-conflict" target="_blank" rel="noopener" style="display:grid;grid-template-columns:176px 1fr;position:relative;background:#FBFAF7;border:1px solid #EDE7DB;border-radius:18px;overflow:hidden;color:inherit;box-shadow:0 2px 6px rgba(11,22,38,0.04)"><div style="background:#FFFFFF;border-right:1px solid #EDE7DB;padding:24px 20px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px"><span style="font-size:19px;font-weight:700;color:#0B1626;letter-spacing:-0.015em;line-height:1.2">Forbes Middle East</span><span style="width:34px;height:2px;background:rgba(200,132,31,0.7)"></span></div><div style="padding:28px 30px;display:flex;flex-direction:column;justify-content:center"><div style="font-size:20px;font-weight:700;color:#0B1626;letter-spacing:-0.012em;line-height:1.3">Middle East Crisis: How Gulf Carriers Navigate Safety And Revenue Amid Conflict</div><p style="font-size:16px;line-height:1.65;color:#5B6472;margin:10px 0 0">AvSky Charters CEO Cameron Cary provides expert aviation commentary to Forbes Middle East &#8212; on airline diversions, private aviation&#8217;s role during disruption and real-time threat assessment.</p><div style="margin-top:18px;padding-top:15px;border-top:1px solid #EDE7DB;display:flex;align-items:center;justify-content:space-between;gap:12px"><span style="font-size:16px;color:#9AA1AC">Expert commentary</span><span style="font-size:16px;font-weight:600;color:#B0781F">Read &#8594;</span></div></div></a><a class="dh23" href="https://www.youtube.com/watch?v=nvsJMjJOE0U" target="_blank" rel="noopener" style="display:grid;grid-template-columns:176px 1fr;position:relative;background:#FBFAF7;border:1px solid #EDE7DB;border-radius:18px;overflow:hidden;color:inherit;box-shadow:0 2px 6px rgba(11,22,38,0.04)"><div style="background:#FFFFFF;border-right:1px solid #EDE7DB;padding:24px 20px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px"><span style="font-size:19px;font-weight:700;color:#0B1626;letter-spacing:-0.015em;line-height:1.2">The American Dream TV</span><span style="width:34px;height:2px;background:rgba(200,132,31,0.7)"></span></div>
1892<div style="padding:28px 30px;display:flex;flex-direction:column;justify-content:center"><div style="font-size:20px;font-weight:700;color:#0B1626;letter-spacing:-0.012em;line-height:1.3">AvSky Charters on National Television</div><p style="font-size:16px;line-height:1.65;color:#5B6472;margin:10px 0 0">The American Dream TV, the Emmy-nominated lifestyle series, features AvSky Charters and its personal approach to private travel.</p><div style="margin-top:18px;padding-top:15px;border-top:1px solid #EDE7DB;display:flex;align-items:center;justify-content:space-between;gap:12px"><span style="font-size:16px;color:#9AA1AC">Television feature</span><span style="font-size:16px;font-weight:600;color:#B0781F">Watch &#8594;</span></div></div></a></div><div style="display:block;margin-top:64px;background:#FBFAF7;border:1px solid #EDE7DB;border-radius:18px;overflow:hidden"><div style="padding:30px 26px 22px"><div style="display:flex;align-items:center;gap:14px;margin-bottom:10px"><h3 class="ds24">Press &amp; Media Mentions</h3><span style="flex:1;height:1px;background:linear-gradient(to right, rgba(200,132,31,0.55), rgba(200,132,31,0))"></span></div><p class="ds25">Feature stories, podcast interviews, and market commentary from the AvSky leadership team.</p></div><div style="border-top:1px solid #EDE7DB"><a class="ds26 dh27" href="https://podcasts.apple.com/us/podcast/from-gym-memberships-to-private-jets-a-charter/id1638589766?i=1000732800916" target="_blank" rel="noopener"><span style="font-size:16px;font-weight:700;color:#0B1626;letter-spacing:-0.005em">The Ultimate Jet Guide Podcast</span><span style="font-size:16px;line-height:1.6;color:#3C4656"><span style="font-weight:500;color:#0B1626">&#8220;A Charter Broker&#8217;s Journey&#8221;</span> <span style="color:#8A93A0">&#183; Inside the launch and client vision of AvSky Charters</span></span><span style="font-size:16px;font-weight:600;color:#B0781F;text-align:right">&#8594;</span></a><a class="ds26 dh27" href="https://www.dailymail.com/travel/article-15907265/real-cost-owning-private-jet-super-wealthy.html" target="_blank" rel="noopener"><span style="font-size:16px;font-weight:700;color:#0B1626;letter-spacing:-0.005em">Daily Mail</span><span style="font-size:16px;line-height:1.6;color:#3C4656"><span style="font-weight:500;color:#0B1626">&#8220;How Much Does It Really Cost to Own a Private Jet?&#8221;</span> <span style="color:#8A93A0">&#183; AvSky commentary on true private aircraft operating costs</span></span><span style="font-size:16px;font-weight:600;color:#B0781F;text-align:right">&#8594;</span></a><a class="ds26 dh27" href="https://www.avbuyer.com/articles/aircraft-ownership/buying-a-jet-with-damage-history-what-to-consider-114063" target="_blank" rel="noopener"><span style="font-size:16px;font-weight:700;color:#0B1626;letter-spacing:-0.005em">AvBuyer</span><span style="font-size:16px;line-height:1.6;color:#3C4656"><span style="font-weight:500;color:#0B1626">&#8220;Buying a Jet With Damage History? What to Consider&#8221;</span> <span style="color:#8A93A0">&#183; Strategic acquisition advice and valuation guidance</span></span><span style="font-size:16px;font-weight:600;color:#B0781F;text-align:right">&#8594;</span></a><a class="ds26 dh27" href="https://podcasts.apple.com/us/podcast/the-entrepreneurial-jet-broker-stories-of-success/id1638589766?i=1000648749887" target="_blank" rel="noopener"><span style="font-size:16px;font-weight:700;color:#0B1626;letter-spacing:-0.005em">The Entrepreneurial Jet Broker</span><span style="font-size:16px;line-height:1.6;color:#3C4656"><span style="font-weight:500;color:#0B1626">&#8220;The AvSky Story&#8221;</span> <span style="color:#8A93A0">&#183; An in-depth interview on building a modern aviation brand</span></span><span style="font-size:16px;font-weight:600;color:#B0781F;text-align:right">&#8594;</span></a><a class="ds28 dh27" href="https://podcasts.apple.com/us/podcast/episode-009-tyler-holt-avsky-jets-rocky-mountain-air-parts/id1585883281?i=1000541103474" target="_blank" rel="noopener"><span style="font-size:16px;font-weight:700;color:#0B1626;letter-spacing:-0.005em">Aviation Growth Podcast</span><span style="font-size:16px;line-height:1.6;color:#3C4656"><span style="font-weight:500;color:#0B1626">Episode 009: &#8220;Scaling in Private Aviation&#8221;</span> <span style="color:#8A93A0">&#183; A conversation on the AvSky family of companies</span></span><span style="font-size:16px;font-weight:600;color:#B0781F;text-align:right">&#8594;</span></a></div></div></div></section></div><div style="position:relative"><section class="ds29" id="quote" data-screen-label="Request a Quote"><div class="ds30"><div><h2 class="ds31">Request a Quote</h2><p class="ds32">Tell us where you’re headed and our in-house charter team will plan and price the whole itinerary.</p><div class="ds33"><div><div style="display:flex;align-items:center;gap:9px;margin-bottom:20px"><span style="width:8px;height:8px;border-radius:50%;background:#E8A93C;box-shadow:0 0 0 4px rgba(232,169,60,0.18)"></span><span style="font-size:16px;font-weight:500;color:#8A8577">Every quote is all-inclusive</span></div><div style="display:grid;grid-template-columns:1fr 1fr;gap:24px 40px"><div><div style="font-size:16px;font-weight:600;color:#0B1626;margin-bottom:3px">Fuel &amp; surcharges</div><div style="font-size:16px;color:#6B7280">Never billed on top</div></div><div><div style="font-size:16px;font-weight:600;color:#0B1626;margin-bottom:3px">Crew &amp; catering</div><div style="font-size:16px;color:#6B7280">Pilots &amp; refreshments</div></div><div><div style="font-size:16px;font-weight:600;color:#0B1626;margin-bottom:3px">Landing &amp; handling</div><div style="font-size:16px;color:#6B7280">FBO &amp; ramp fees</div></div><div><div style="font-size:16px;font-weight:600;color:#0B1626;margin-bottom:3px">Taxes &amp; segment fees</div><div style="font-size:16px;color:#6B7280">Federal excise included</div></div></div></div><div><div class="ds34"></div><div class="ds35"><div style="font-size:16px;color:#6B7280;margin-bottom:5px">Prefer to talk it through?</div><a class="dh36" href="tel:8005410381" style="font-size:24px;font-weight:700;color:#0B1626;letter-spacing:-0.01em">(800) 541-0381</a><div style="margin-top:4px"><a class="dh36" href="mailto:[email protected]" style="font-size:16px;color:#6B7280">[email protected]</a></div></div></div></div></div><div class="qf-card" data-avc-quote="card" style="background:#FFFFFF;border:1px solid #E9E6DF;border-radius:18px;padding:34px 40px 38px;box-shadow:0 30px 60px -28px rgba(11,22,38,0.18)"></div></div></section></div><div style="position:relative"><section class="ds37" id="team" data-screen-label="Team"><div class="ds21"><div style="margin-bottom:44px"><div style="display:flex;align-items:center;gap:14px;margin-bottom:14px"><span style="font-size:12px;font-weight:600;letter-spacing:0.16em;text-transform:uppercase;color:#B0781F;white-space:nowrap">Florida-Based Advisors</span><span style="flex:1;height:1px;background:linear-gradient(to right, rgba(200,132,31,0.4), transparent)"></span></div><h2 class="ds38">Meet the AvSky Charters Team</h2><p style="font-size:16px;line-height:1.6;color:#6B7280;margin:0;max-width:640px">Our in-house advisors plan and manage every itinerary, from first call to wheels down and beyond.</p></div><div class="ds39"><a class="avc-teamcard" href="/team/tyler-holt/" style="background:#FBFAF7;border:1px solid #EDE7DB;border-radius:18px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 2px 6px rgba(11,22,38,0.04);color:inherit;text-decoration:none"><div style="aspect-ratio:4/5;overflow:hidden;background:#FFFFFF;border-bottom:1px solid #EDE7DB"><img width="534" height="800" decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='534'%20height='800'%20viewBox='0%200%20534%20800'%3E%3C/svg%3E" alt="Tyler Holt" style="display:block;width:100%;height:100%;object-fit:cover;object-position:50% 25%" class="perfmatters-lazy" data-src="https://avskycharters.com/wp-content/uploads/2026/01/TylerHotl2025.png" /></div><div style="padding:22px 24px 26px"><div style="font-size:21px;font-weight:700;color:#0B1626;letter-spacing:-0.01em">Tyler Holt</div><div style="font-size:16px;font-weight:600;color:#B0781F;margin:5px 0 12px">CEO &amp; Founder, AvSky Corporation</div><p style="font-size:16px;color:#5B6472;line-height:1.65;margin:0">A visionary leader in private aviation with over a decade transforming how clients buy, sell and charter aircraft.</p></div></a><a class="avc-teamcard" href="/team/cameron-cary/" style="background:#FBFAF7;border:1px solid #EDE7DB;border-radius:18px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 2px 6px rgba(11,22,38,0.04);color:inherit;text-decoration:none"><div style="aspect-ratio:4/5;overflow:hidden;background:#FFFFFF;border-bottom:1px solid #EDE7DB"><img width="1365" height="2048" decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='1365'%20height='2048'%20viewBox='0%200%201365%202048'%3E%3C/svg%3E" alt="Cameron Cary" style="display:block;width:100%;height:100%;object-fit:cover;object-position:50% 25%" class="perfmatters-lazy" data-src="https://avskycharters.com/wp-content/uploads/2026/01/Cameron-Cary.jpg" /></div><div style="padding:22px 24px 26px"><div style="font-size:21px;font-weight:700;color:#0B1626;letter-spacing:-0.01em">Cameron Cary</div><div style="font-size:16px;font-weight:600;color:#B0781F;margin:5px 0 12px">CEO, AvSky Charters</div><p style="font-size:16px;color:#5B6472;line-height:1.65;margin:0">Works directly with clients, oversees trip planning and execution, and leads the company’s business operations.</p></div></a><a class="avc-teamcard" href="/team/danielle-grannan/" style="background:#FBFAF7;border:1px solid #EDE7DB;border-radius:18px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 2px 6px rgba(11,22,38,0.04);color:inherit;text-decoration:none"><div style="aspect-ratio:4/5;overflow:hidden;background:#FFFFFF;border-bottom:1px solid #EDE7DB"><img width="1360" height="1435" decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='1360'%20height='1435'%20viewBox='0%200%201360%201435'%3E%3C/svg%3E" alt="Danielle Grannan" style="display:block;width:100%;height:100%;object-fit:cover;object-position:50% 25%" class="perfmatters-lazy" data-src="https://avskycharters.com/wp-content/uploads/2026/01/Danielle-Grannan-2026.png" /></div><div style="padding:22px 24px 26px"><div style="font-size:21px;font-weight:700;color:#0B1626;letter-spacing:-0.01em">Danielle Grannan</div><div style="font-size:16px;font-weight:600;color:#B0781F;margin:5px 0 12px">Operations Manager</div><p style="font-size:16px;color:#5B6472;line-height:1.65;margin:0">With AvSky Charters since its inception, overseeing documentation and operational processes.</p></div></a><a class="avc-teamcard" href="/team/eric-wright/" style="background:#FBFAF7;border:1px solid #EDE7DB;border-radius:18px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 2px 6px rgba(11,22,38,0.04);color:inherit;text-decoration:none"><div style="aspect-ratio:4/5;overflow:hidden;background:#FFFFFF;border-bottom:1px solid #EDE7DB"><img width="1365" height="2048" decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='1365'%20height='2048'%20viewBox='0%200%201365%202048'%3E%3C/svg%3E" alt="Eric Wright" style="display:block;width:100%;height:100%;object-fit:cover;object-position:50% 25%" class="perfmatters-lazy" data-src="https://avskycharters.com/wp-content/uploads/2026/01/Eric-Wright.jpg" /></div><div style="padding:22px 24px 26px"><div style="font-size:21px;font-weight:700;color:#0B1626;letter-spacing:-0.01em">Eric Wright</div><div style="font-size:16px;font-weight:600;color:#B0781F;margin:5px 0 12px">Charter Executive</div><p style="font-size:16px;color:#5B6472;line-height:1.65;margin:0">Our most senior charter specialist, with deep experience planning and executing challenging, short
1892-notice trips.</p></div></a><a class="avc-teamcard" href="/team/jake-ramos/" style="background:#FBFAF7;border:1px solid #EDE7DB;border-radius:18px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 2px 6px rgba(11,22,38,0.04);color:inherit;text-decoration:none"><div style="aspect-ratio:4/5;overflow:hidden;background:#FFFFFF;border-bottom:1px solid #EDE7DB"><img width="1365" height="2048" decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='1365'%20height='2048'%20viewBox='0%200%201365%202048'%3E%3C/svg%3E" alt="Jake Ramos" style="display:block;width:100%;height:100%;object-fit:cover;object-position:50% 25%" class="perfmatters-lazy" data-src="https://avskycharters.com/wp-content/uploads/2026/01/IMG_2086.jpg" /></div><div style="padding:22px 24px 26px"><div style="font-size:21px;font-weight:700;color:#0B1626;letter-spacing:-0.01em">Jake Ramos</div><div style="font-size:16px;font-weight:600;color:#B0781F;margin:5px 0 12px">Charter Consultant</div><p style="font-size:16px;color:#5B6472;line-height:1.65;margin:0">Plans custom itineraries and leads outreach initiatives that connect us with like-minded clients and partners.</p></div></a><div style="position:relative;border-radius:18px;overflow:hidden;background:linear-gradient(158deg, #1B3050 0%, #101F35 42%, #0A1424 100%);border:1px solid rgba(255,255,255,0.1);box-shadow:0 34px 70px -30px rgba(11,22,38,0.62), 0 8px 22px -12px rgba(11,22,38,0.4)"><div style="position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 70% 55% at 88% -6%, rgba(244,192,120,0.28), transparent 62%)"></div><div style="position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 90% 60% at 10% 108%, rgba(56,120,194,0.22), transparent 60%)"></div><div style="position:absolute;left:0;right:0;top:0;height:1px;pointer-events:none;background:linear-gradient(to right, rgba(244,192,120,0) 0%, rgba(244,192,120,0.85) 46%, rgba(244,192,120,0.15) 100%)"></div><div style="position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 1px 0 rgba(255,255,255,0.08), inset 0 -60px 90px -60px rgba(0,0,0,0.8);border-radius:18px"></div><div style="position:relative;padding:36px 32px 34px;display:flex;flex-direction:column;height:100%;justify-content:center"><div style="font-size:24px;font-weight:700;color:#FFFFFF;letter-spacing:-0.02em;line-height:1.16;margin-bottom:12px">The Network Behind<br>Every Flight</div><p style="font-size:16px;line-height:1.65;color:rgba(255,255,255,0.66);margin:0 0 24px">Our advisors are backed by one of the industry’s largest networks of specialists.</p><div style="position:relative;padding-top:4px"><div style="position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(to right, rgba(255,255,255,0.22), rgba(255,255,255,0.05) 70%, rgba(255,255,255,0))"></div><div style="position:relative;display:grid;grid-template-columns:22px 1fr;gap:13px;padding:15px 0;align-items:start"><span style="position:relative;width:8px;height:8px;border-radius:50%;background:linear-gradient(180deg,#F4C078,#C8841F);box-shadow:0 0 0 4px rgba(232,169,60,0.14), 0 0 12px rgba(232,169,60,0.55);margin-top:7px"></span><span><span style="display:block;font-size:16px;font-weight:600;color:#FFFFFF;letter-spacing:-0.005em;line-height:1.4">Safety-Vetted Operators</span><span style="display:block;font-size:16px;line-height:1.5;color:rgba(255,255,255,0.52);margin-top:3px">FAA-certified, strictly audited, and continuously monitored.</span></span><span style="position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(to right, rgba(255,255,255,0.16), rgba(255,255,255,0.04) 70%, rgba(255,255,255,0))"></span></div><div style="position:relative;display:grid;grid-template-columns:22px 1fr;gap:13px;padding:15px 0;align-items:start"><span style="position:relative;width:8px;height:8px;border-radius:50%;background:linear-gradient(180deg,#F4C078,#C8841F);box-shadow:0 0 0 4px rgba(232,169,60,0.14), 0 0 12px rgba(232,169,60,0.55);margin-top:7px"></span><span><span style="display:block;font-size:16px;font-weight:600;color:#FFFFFF;letter-spacing:-0.005em;line-height:1.4">Executive Security Teams</span><span style="display:block;font-size:16px;line-height:1.5;color:rgba(255,255,255,0.52);margin-top:3px">Discreet protection for VIP, high-profile, and sensitive travel.</span></span><span style="position:absolute;
1892left:0;right:0;bottom:0;height:1px;background:linear-gradient(to right, rgba(255,255,255,0.16), rgba(255,255,255,0.04) 70%, rgba(255,255,255,0))"></span></div><div style="position:relative;display:grid;grid-template-columns:22px 1fr;gap:13px;padding:15px 0;align-items:start"><span style="position:relative;width:8px;height:8px;border-radius:50%;background:linear-gradient(180deg,#F4C078,#C8841F);box-shadow:0 0 0 4px rgba(232,169,60,0.14), 0 0 12px rgba(232,169,60,0.55);margin-top:7px"></span><span><span style="display:block;font-size:16px;font-weight:600;color:#FFFFFF;letter-spacing:-0.005em;line-height:1.4">Critical Care Flight Crews</span><span style="display:block;font-size:16px;line-height:1.5;color:rgba(255,255,255,0.52);margin-top:3px">Specialized medical personnel equipped for urgent transport.</span></span><span style="position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(to right, rgba(255,255,255,0.16), rgba(255,255,255,0.04) 70%, rgba(255,255,255,0))"></span></div><div style="position:relative;display:grid;grid-template-columns:22px 1fr;gap:13px;padding:15px 0;align-items:start"><span style="position:relative;width:8px;height:8px;border-radius:50%;background:linear-gradient(180deg,#F4C078,#C8841F);box-shadow:0 0 0 4px rgba(232,169,60,0.14), 0 0 12px rgba(232,169,60,0.55);margin-top:7px"></span><span><span style="display:block;font-size:16px;font-weight:600;color:#FFFFFF;letter-spacing:-0.005em;line-height:1.4">Luxury Travel Concierges</span><span style="display:block;font-size:16px;line-height:1.5;color:rgba(255,255,255,0.52);margin-top:3px">Chauffeured transfers, private villa access, and bespoke destination planning.</span></span></div></div><div style="display:flex;align-items:center;gap:12px;margin-top:26px"><span style="flex:1;height:1px;background:linear-gradient(to right, rgba(244,192,120,0.5), rgba(244,192,120,0))"></span><span style="font-size:16px;font-weight:600;color:#F4C078;white-space:nowrap">Tailored to your itinerary</span></div></div></div></div></div></section></div></div><footer data-screen-label="Footer" style="position:relative;overflow:hidden;background:linear-gradient(158deg, #16283F 0%, #0F1D31 44%, #0A1420 100%);color:rgba(255,255,255,0.78);box-shadow:inset 0 1px 0 rgba(255,255,255,0.07)"><div style="position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 60% 55% at 88% -10%, rgba(244,192,120,0.22), transparent 62%)"></div><div style="position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 80% 60% at 8% 110%, rgba(56,120,194,0.18), transparent 60%)"></div><div style="position:absolute;left:0;right:0;top:0;height:1px;pointer-events:none;background:linear-gradient(to right, rgba(244,192,120,0) 0%, rgba(244,192,120,0.85) 46%, rgba(244,192,120,0.15) 100%)"></div><div class="avc-ftr-in" style="position:relative;padding:0 30px"><div style="display:flex;align-items:center;justify-content:space-between;gap:32px;flex-wrap:wrap;padding:26px 0 28px"><div style="display:flex;align-items:center;gap:24px"><img width="449" height="216" decoding="async" src="https://avskycharters.com/wp-content/uploads/2026/06/avsky-logo.png" alt="AvSky Charters" style="width:132px;height:44px;object-fit:contain;object-position:left center;flex:none;display:block"><p style="font-size:16px;line-height:1.6;color:rgba(255,255,255,0.85);margin:0;max-width:640px;position:relative;top:5px">Charter flights from one of the world leaders in private aviation.</p></div><button class="dh4" type="button" data-action="open-modal" style="flex:none;display:inline-flex;align-items:center;gap:9px;padding:13px 26px;background:#E8A93C;color:#0B1626;border:none;border-radius:999px;font-family:'Poppins',sans-serif;font-size:16px;font-weight:700;cursor:pointer">Request a Quote <span aria-hidden="true">&#8594;</span></button></div><div style="display:grid;grid-template-columns:1fr 1fr 1fr;border-top:1px solid rgba(255,255,255,0.1)"><div style="padding:36px 40px 40px 0"><h5 style="font-size:12px;font-weight:600;letter-spacing:0.3em;text-transform:uppercase;color:#E8A93C;margin:0 0 16px;display:inline-flex;align-items:center;gap:10px;white-space:nowrap"><span style="width:17px;height:1px;background:#E8A93C;display:inline-block"></span>Fly With Us</h5><a class="dh14" href="/charter-flight-quote/" data-action="open-modal" style="display:block;font-size:16px;color:rgba(255,255,255,0.92);padding:4.5px 0;line-height:1.55;cursor:pointer">Request a Quote</a><a class="dh14" href="/jet-card/" style="display:block;font-size:16px;color:rgba(255,255,255,0.92);padding:4.5px 0;line-height:1.55">Jet Card</a><a class="dh14" href="/govflights/" style="display:block;font-size:16px;color:rgba(255,255,255,0.92);padding:4.5px 0;line-height:1.55">Gov Charters</a><a class="dh14" href="/charter-flight-cost-calculator/" style="display:block;font-size:16px;color:rgba(255,255,255,0.92);padding:4.5px 0;line-height:1.55">Charter Cost Estimator</a></div><div style="padding:36px 40px 40px;border-left:1px solid rgba(255,255,255,0.1);border-right:1px solid rgba(255,255,255,0.1)"><h5 style="font-size:12px;font-weight:600;letter-spacing:0.3em;text-transform:uppercase;color:#E8A93C;margin:0 0 16px;display:inline-flex;align-items:center;gap:10px;white-space:nowrap"><span style="width:17px;height:1px;background:#E8A93C;display:inline-block"></span>About AvSky</h5><a class="dh14" href="/about-avsky-charters/" style="display:block;font-size:16px;color:rgba(255,255,255,0.92);padding:4.5px 0;line-height:1.55">Our Story</a><a class="dh14" href="https://www.avskyjets.com/" target="_blank" rel="noopener" style="display:block;font-size:16px;color:rgba(255,255,255,0.92);padding:4.5px 0;line-height:1.55">AvSky Brokerage</a><a class="dh14" href="https://rockymtnairparts.com/" target="_blank" rel="noopener" style="display:block;font-size:16px;color:rgba(255,255,255,0.92);padding:4.5px 0;line-height:1.55">Rocky Mountain Air Parts</a><a class="dh14" href="/partnership-registration/" style="display:block;font-size:16px;color:rgba(255,255,255,0.92);padding:4.5px 0;line-height:1.55">Affiliate Program</a></div><div style="padding:36px 0 40px 40px"><h5 style="font-size:12px;font-weight:600;letter-spacing:0.3em;text-transform:uppercase;color:#E8A93C;margin:0 0 16px;display:inline-flex;align-items:center;gap:10px;white-space:nowrap"><span style="width:17px;height:1px;background:#E8A93C;display:inline-block"></span>Talk To Us</h5><a class="dh14" href="tel:8005410381" style="display:block;font-size:16px;color:rgba(255,255,255,0.92);padding:4.5px 0;line-height:1.55">(800) 541-0381</a><a class="dh14" href="mailto:[email protected]" style="display:block;font-size:16px;color:rgba(255,255,255,0.92);padding:4.5px 0;line-height:1.55">[email protected]</a><p style="display:block;font-size:16px;color:rgba(255,255,255,0.55);padding:4.5px 0 0;line-height:1.55;margin:0">400 Airport Ave E<br>Venice, FL 34285</p></div></div><div style="border-top:1px solid rgba(255,255,255,0.1);padding:18px 0 20px;display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap"><span style="font-size:16px;color:rgba(255,255,255,0.5)">© AvSky Charter Ventures, Inc. · All rights reserved · <a class="dh14" href="/privacy-policy/" style="color:rgba(255,255,255,0.5);text-decoration:underline;text-underline-offset:3px">Privacy Policy</a></span><div style="display:flex;gap:13px;align-items:center"><a class="dh40" href="https://www.facebook.com/people/AvSky-Private-Charters/61556948233456/" target="_blank" rel="noopener" aria-label="Facebook" style="width:27px;height:27px;border-radius:50%;background:rgba(255,255,255,0.14);display:flex;align-items:center;justify-content:center;color:#FFFFFF;font-size:16px;font-weight:700">f</a><a class="dh40" href="https://x.com/iflyavsky" target="_blank" rel="noopener" aria-label="X" style="width:27px;height:27px;border-radius:50%;background:rgba(255,255,255,0.14);display:flex;align-items:center;justify-content:center;color:#FFFFFF;font-size:16px;font-weight:700">✕</a><a class="dh40" href="https://www.instagram.com/avskycharters/" target="_blank" rel="noopener" aria-label="Instagram" style="width:27px;height:27px;border-radius:50%;background:rgba(255,255,255,0.14);display:flex;align-items:center;justify-content:center;color:#FFFFFF"><svg width="12" height="12" viewBox="0 0 16 16" fill="none" aria-hidden="true"><rect x="1.5" y="1.5" width="13" height="13" rx="4" stroke="currentColor" stroke-width="1.5"></rect><circle cx="8" cy="8" r="3" stroke="currentColor" stroke-width="1.5"></circle><circle cx="12.2" cy="3.8" r="1" fill="currentColor"></circle></svg></a><a class="dh40" href="https://www.linkedin.com/company/avsky-private-charters" target="_blank" rel="noopener" aria-label="LinkedIn" style="width:27px;height:27px;border-radius:50%;background:rgba(255,255,255,0.14);display:flex;align-items:center;justify-content:center;color:#FFFFFF;font-size:16px;font-weight:700">in</a></div></div></div></footer></div><div class="avc-m"><header data-screen-label="Hero (Mobile)" style="background:radial-gradient(ellipse at 88% 0%, rgba(232,169,60,0.12), transparent 55%) #0B1626"><div style="padding:36px 20px 0"><h1 style="font-size:11px;font-weight:600;letter-spacing:0.18em;text-transform:uppercase;color:#E8A93C;margin:0 0 14px;line-height:1.6">
1892Global On-Demand Private Jet Access</h1><h2 style="font-family:'Poppins',sans-serif;font-size:33px;font-weight:700;line-height:1.08;letter-spacing:-0.025em;color:#FFFFFF;margin:0 0 16px;text-wrap:pretty">We deliver exceptional travel experiences</h2><p style="font-size:15px;line-height:1.7;color:rgba(255,255,255,0.72);margin:0 0 24px;text-wrap:pretty">AvSky Charters provides customized private flights backed by the industry’s most attentive customer service team. Across the state or halfway around the world, AvSky is the only call you’ll need to make.</p><div style="display:flex;flex-direction:column;gap:12px;margin-bottom:32px"><button class="mh1" type="button" data-action="open-modal" style="display:flex;align-items:center;justify-content:center;gap:9px;width:100%;height:52px;background:#E8A93C;color:#0B1626;border:none;font-family:'Poppins',sans-serif;font-size:16px;font-weight:700;border-radius:999px;cursor:pointer;box-shadow:0 14px 30px -10px rgba(232,169,60,0.4)">Request a Quote <span aria-hidden="true">→</span></button><a class="mh2" href="#team" data-action="scroll" data-target="team" style="display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:48px;color:#FFFFFF;font-size:15px;font-weight:600;border:1px solid rgba(255,255,255,0.22);border-radius:999px">Meet the team</a></div></div><div style="position:relative"><img width="1742" height="1109" decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='1742'%20height='1109'%20viewBox='0%200%201742%201109'%3E%3C/svg%3E" alt="The AvSky Charters team" style="display:block;width:100%;aspect-ratio:4/3;object-fit:cover;object-position:50% 35%" class="perfmatters-lazy" data-src="https://avskycharters.com/wp-content/uploads/2026/01/AvSkyChartersTeamJan2026A.png" /><div style="position:absolute;bottom:14px;left:20px;pointer-events:none;background:rgba(11,22,38,0.72);backdrop-filter:blur(8px);border:1px solid rgba(232,169,60,0.4);color:#FFFFFF;padding:6px 13px;border-radius:999px;font-size:12.5px;font-weight:600;letter-spacing:0.04em;white-space:nowrap">The AvSky Charters Team</div></div><div style="display:grid;grid-template-columns:1fr 1fr;border-top:1px solid rgba(255,255,255,0.12)"><div style="text-align:center;padding:22px 14px 24px"><div style="font-size:30px;font-weight:700;color:#FFFFFF;line-height:1;letter-spacing:-0.02em;margin-bottom:7px">8,000+</div><div style="font-size:13px;line-height:1.45;color:rgba(255,255,255,0.6)">Vetted operators,<br>screened for safety</div></div><div style="text-align:center;padding:22px 14px 24px;border-left:1px solid rgba(255,255,255,0.1)"><div style="font-size:30px;font-weight:700;color:#FFFFFF;line-height:1;letter-spacing:-0.02em;margin-bottom:7px">12,000+</div><div style="font-size:13px;line-height:1.45;color:rgba(255,255,255,0.6)">Aircraft positioned<br>worldwide</div></div><div style="text-align:center;padding:22px 14px 24px;border-top:1px solid rgba(255,255,255,0.1)"><div style="font-size:30px;font-weight:700;color:#FFFFFF;line-height:1;letter-spacing:-0.02em;margin-bottom:7px">Top 5</div><div style="font-size:13px;line-height:1.45;color:rgba(255,255,255,0.6)">U.S. brokerage<br>by sales volume</div></div><div style="text-align:center;padding:22px 14px 24px;border-top:1px solid rgba(255,255,255,0.1);border-left:1px solid rgba(255,255,255,0.1)"><div style="font-size:30px;font-weight:700;color:#FFFFFF;line-height:1;letter-spacing:-0.02em;margin-bottom:7px">24/7</div><div style="font-size:13px;line-height:1.45;color:rgba(255,255,255,0.6)">Florida-based,<br>not a call center</div></div></div></header><section data-screen-label="Our Story (Mobile)" style="background:#FFFFFF;padding:44px 0 48px"><div style="padding:0 20px"><div style="display:flex;align-items:center;gap:14px;margin-bottom:10px"><span style="font-size:11px;font-weight:600;letter-spacing:0.18em;text-transform:uppercase;color:#B0781F;white-space:nowrap">Our Story</span><span style="flex:1;min-width:40px;height:1px;background:linear-gradient(to right, rgba(200,132,31,0.55), rgba(200,132,31,0.08))"></span></div><h2 style="font-family:'Poppins',sans-serif;font-size:27px;font-weight:700;color:#0B1626;letter-spacing:-0.02em;line-height:1.12;margin:0 0 22px;text-wrap:pretty">About AvSky Charters</h2></div><img width="2048" height="1365" decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='2048'%20height='1365'%20viewBox='0%200%202048%201365'%3E%3C/svg%3E" alt="The AvSky Charters team on the ramp at Venice Municipal Airport" style="display:block;width:100%;aspect-ratio:16/10;object-fit:cover;object-position:50% 50%;margin-bottom:26px" class="perfmatters-lazy" data-src="https://avskycharters.com/wp-content/uploads/2026/08/IMG_2114.jpg" /><div style="padding:0 20px"><p style="font-size:15px;line-height:1.75;color:#374151;margin:0 0 16px">Based in Venice, Florida, AvSky Charters was built on a straightforward premise: private travel should be completely personalized, transparent, and effortless.</p><p style="font-size:15px;line-height:1.75;color:#374151;margin:0 0 16px">Born out of AvSky Corporation’s established global leadership in aircraft sales, our charter team pairs institutional private aviation expertise with boutique, high-touch execution.</p><p style="font-size:15px;line-height:1.75;color:#374151;margin:0 0 16px">Led by CEO Cameron Cary, we provide on-demand charters across every aircraft class, backed by an industry-leading network of more than 8,000 highly-vetted operators.</p><p style="font-size:15px;line-height:1.75;color:#374151;margin:0 0 16px">Every trip is managed by a dedicated in-house charter advisor who learns your preferences, coordinates logistics from ground transport to customs, and remains on-call around the clock.</p><p style="font-size:15px;line-height:1.75;color:#374151;margin:0">With transparent pricing and uncompromised safety standards, we ensure you always fly on your schedule, in the right aircraft, and with total peace of mind.</p></div><div style="padding:0 20px;margin-top:36px"><div style="border-top:1px solid #E8E4DA;padding-top:26px"><div style="display:flex;align-items:center;gap:14px;margin-bottom:8px"><span style="font-size:11px;font-weight:600;letter-spacing:0.18em;text-transform:uppercase;color:#B0781F;white-space:nowrap">Our Specialties</span><span style="flex:1;min-width:40px;height:1px;background:linear-gradient(to right, rgba(200,132,31,0.55), rgba(200,132,31,0.08))"></span></div><p style="font-size:15px;line-height:1.65;color:#5B6472;margin:0">Backed by a global network that includes more than 12,000 aircraft, we manage private travel for virtually any destination, timeline, or passenger count.</p><div style="margin-top:10px"><div style="padding:17px 0;border-bottom:1px solid #EFECE4"><div style="font-size:16px;font-weight:600;color:#0B1626;line-height:1.35">Bahamas &amp; Caribbean Private Escapes</div><div style="font-size:14px;line-height:1.55;color:#6B7280;margin-top:4px">Seamless island-hopping, direct FBO ramp access, and customs coordination across the islands.</div></div><div style="padding:17px 0;border-bottom:1px solid #EFECE4"><div style="font-size:16px;font-weight:600;color:#0B1626;line-height:1.35">Urgent &amp; Same-Day Executive Flights</div><div style="font-size:14px;line-height:1.55;color:#6B7280;margin-top:4px">Aircraft sourced, crewed, and ready to depart on short notice when business plans change.</div></div><div style="padding:17px 0;border-bottom:1px solid #EFECE4"><div style="font-size:16px;font-weight:600;color:#0B1626;line-height:1.35">Team, Athletic &amp; Tour Group Travel</div><div style="font-size:14px;line-height:1.55;color:#6B7280;margin-top:4px">Custom logistics for sports teams, event staff, and production crews, including heavy luggage and equipment transport.</div></div><div style="padding:17px 0;border-bottom:1px solid #EFECE4"><div style="font-size:16px;font-weight:600;color:#0B1626;line-height:1.35">
1892Medical Transport &amp; Air Ambulance</div><div style="font-size:14px;line-height:1.55;color:#6B7280;margin-top:4px">Critical patient transfers and specialized medical aircraft arranged 24/7 with zero delay.</div></div><div style="padding:17px 0 2px"><div style="font-size:16px;font-weight:600;color:#0B1626;line-height:1.35">Government &amp; Official Travel</div><div style="font-size:14px;line-height:1.55;color:#6B7280;margin-top:4px">Vetted operators meeting strict safety, regulatory, and reporting standards for public-sector missions.</div></div></div></div></div></section><section id="contact" data-screen-label="Contact (Mobile)" style="position:relative;overflow:hidden;background:linear-gradient(158deg, #16283F 0%, #0F1D31 44%, #0A1420 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,0.07)"><div style="position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 60% 45% at 88% -6%, rgba(244,192,120,0.2), transparent 62%)"></div><div style="position:absolute;left:0;right:0;top:0;height:1px;pointer-events:none;background:linear-gradient(to right, rgba(244,192,120,0) 0%, rgba(244,192,120,0.85) 46%, rgba(244,192,120,0.15) 100%)"></div><div style="position:relative;padding:44px 20px 0"><h2 style="font-family:'Poppins',sans-serif;font-size:27px;font-weight:700;color:#FFFFFF;letter-spacing:-0.02em;line-height:1.12;margin:0 0 14px;text-wrap:pretty">Serving the world from Venice, Florida</h2><p style="font-size:15px;line-height:1.7;color:rgba(255,255,255,0.7);margin:0 0 22px">Connect with our team to explore aircraft options, request an all-inclusive quote, or discuss upcoming travel.</p><div style="border-top:1px solid rgba(255,255,255,0.14)"><div style="padding:15px 0;border-bottom:1px solid rgba(255,255,255,0.14)"><div style="font-size:11px;font-weight:600;letter-spacing:0.16em;text-transform:uppercase;color:rgba(244,191,94,0.95);margin-bottom:5px">Visit us</div><div style="font-size:16.5px;font-weight:600;color:#FFFFFF;line-height:1.45">400 Airport Ave E, Venice, FL 34285</div></div><div style="padding:15px 0;border-bottom:1px solid rgba(255,255,255,0.14)"><div style="font-size:11px;font-weight:600;letter-spacing:0.16em;text-transform:uppercase;color:rgba(244,191,94,0.95);margin-bottom:5px">Phone</div><a class="mh3" href="tel:8005410381" style="display:inline-block;font-size:18px;font-weight:600;color:#FFFFFF">(800) 541-0381</a></div><div style="padding:15px 0"><div style="font-size:11px;font-weight:600;letter-spacing:0.16em;text-transform:uppercase;color:rgba(244,191,94,0.95);margin-bottom:5px">Email</div><a class="mh3" href="mailto:[email protected]" style="display:inline-block;font-size:16px;font-weight:600;color:#FFFFFF">[email protected]</a></div></div></div><div style="position:relative;margin-top:10px"><div style="position:relative;height:240px;background:#EAF1F5;border-top:1px solid rgba(255,255,255,0.14)"><div class="avc-map" data-map="office" style="position:absolute;inset:0;height:100%"></div></div><div style="display:flex;justify-content:center;padding:12px 16px;background:rgba(255,255,255,0.04);border-top:1px solid rgba(255,255,255,0.12);border-bottom:1px solid rgba(255,255,255,0.12)"><span style="font-size:12.5px;letter-spacing:0.08em;color:rgba(255,255,255,0.55)">27.0716&#176; N &#183; 82.4403&#176; W &#183; KVNC</span></div></div><div data-avc-form="contact" style="position:relative;padding:36px 20px 48px"><div style="font-size:21px;font-weight:700;color:#FFFFFF;letter-spacing:-0.015em;line-height:1.2;margin-bottom:6px">Send us a message</div><p style="font-size:14.5px;line-height:1.6;color:rgba(255,255,255,0.62);margin:0 0 22px">A charter advisor will respond as soon as possible.</p><div data-avc-fields style="display:flex;flex-direction:column;gap:16px"><div><label style="display:block;font-size:13px;font-weight:600;color:rgba(255,255,255,0.72);margin-bottom:7px">Name</label><input class="mf4" data-f="name" type="text" placeholder="Your name" style="width:100%;padding:14px 15px;font-size:16px;background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.16);border-radius:10px;color:#FFFFFF;outline:none;font-family:'Poppins',sans-serif"></div><div><label style="display:block;font-size:13px;font-weight:600;color:rgba(255,255,255,0.72);margin-bottom:7px">Email</label><input class="mf4" data-f="email" type="email" placeholder="[email protected]" style="width:100%;padding:14px 15px;font-size:16px;background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.16);border-radius:10px;color:#FFFFFF;outline:none;font-family:'Poppins',sans-serif"></div><div><label style="display:block;font-size:13px;font-weight:600;color:rgba(255,255,255,0.72);margin-bottom:7px">Phone</label><input class="mf4" data-f="phone" type="tel" placeholder="555-123-5678" style="width:100%;padding:14px 15px;font-size:16px;background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.16);border-radius:10px;color:#FFFFFF;outline:none;font-family:'Poppins',sans-serif"></div><div><label style="display:block;font-size:13px;font-weight:600;color:rgba(255,255,255,0.72);margin-bottom:7px">Reason for contact</label><div style="position:relative"><select data-f="reason" style="width:100%;padding:14px 15px;font-size:16px;background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.16);border-radius:10px;color:#FFFFFF;outline:none;font-family:'Poppins',sans-serif;appearance:none;padding-right:40px"><option>Charter quote</option><option>Membership program</option><option>Medical or air ambulance</option><option>Government travel</option><option>Press or partnerships</option><option>Something else</option></select><span style="position:absolute;right:15px;top:50%;transform:translateY(-50%);pointer-events:none;color:rgba(255,255,255,0.55);display:flex"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="width:15px;height:15px"><path d="m6 9 6 6 6-6"></path></svg></span></div></div><div><label style="display:block;font-size:13px;font-weight:600;color:rgba(255,255,255,0.72);margin-bottom:7px">Message</label><textarea class="mf4" data-f="message" placeholder="Where you’re headed, how many passengers, and anything else we should know…" style="width:100%;padding:14px 15px;font-size:16px;background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.16);border-radius:10px;color:#FFFFFF;outline:none;font-family:'Poppins',sans-serif;min-height:110px;resize:vertical;line-height:1.6"></textarea></div><button class="mh5" type="button" data-action="submit" style="width:100%;height:52px;background:#E8A93C;color:#0B1626;border:none;font-size:16px;font-weight:700;border-radius:999px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:10px;font-family:'Poppins',sans-serif;box-shadow:0 12px 26px -10px rgba(232,169,60,0.4)">Send Message <span aria-hidden="true">→</span></button></div><p style="font-size:13px;line-height:1.5;color:rgba(255,255,255,0.45);margin:14px 0 0;text-align:center">Answered by our in-house team — no lists, no spam.</p></div></section><section id="team" data-screen-label="Team (Mobile)" style="background:#FFFFFF;border-top:1px solid #EDE7DB;padding:44px 0 0"><div style="padding:0 20px"><div style="display:flex;align-items:center;gap:14px;margin-bottom:10px"><span style="font-size:11px;font-weight:600;letter-spacing:0.18em;text-transform:uppercase;color:#B0781F;white-space:nowrap">The Team</span><span style="flex:1;min-width:40px;height:1px;background:linear-gradient(to right, rgba(200,132,31,0.55), rgba(200,132,31,0.08))"></span></div><h2 style="font-family:'Poppins',sans-serif;font-size:27px;font-weight:700;color:#0B1626;letter-spacing:-0.02em;line-height:1.12;margin:0 0 12px;text-wrap:pretty">Meet the AvSky Charters Team</h2><p style="font-size:15px;line-height:1.65;color:#6B7280;margin:0 0 6px">Our in-house advisors plan and manage every itinerary, from first call to wheels down and beyond.</p></div><div style="margin-top:18px"><div style="display:grid;grid-template-columns:1fr 1fr;gap:0"><a class="avc-teamtile" href="/team/tyler-holt/" style="position:relative;aspect-ratio:1/1;overflow:hidden;background:#101F35;display:block;color:inherit;text-decoration:none"><img width="534" height="800" decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='534'%20height='800'%20viewBox='0%200%20534%20800'%3E%3C/svg%3E" alt="Tyler Holt" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 22%" class="perfmatters-lazy" data-src="https://avskycharters.com/wp-content/uploads/2026/01/TylerHotl2025.png" /><div style="position:absolute;inset:0;background:linear-gradient(180deg, rgba(10,20,36,0) 34%, rgba(10,20,36,0.55) 68%, rgba(6,12,24,0.94) 100%)"></div><div style="position:absolute;
1892left:14px;right:14px;bottom:13px"><div style="width:22px;height:2px;background:#E8A93C;margin-bottom:8px"></div><div style="font-family:'Poppins',sans-serif;font-size:16px;font-weight:600;color:#FFFFFF;letter-spacing:-0.01em;line-height:1.2">Tyler Holt</div><div style="font-size:11px;color:rgba(255,255,255,0.72);margin-top:3px;line-height:1.45">CEO &amp; Founder, AvSky Corporation</div></div></a><a class="avc-teamtile" href="/team/cameron-cary/" style="position:relative;aspect-ratio:1/1;overflow:hidden;background:#101F35;display:block;color:inherit;text-decoration:none"><img width="1365" height="2048" decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='1365'%20height='2048'%20viewBox='0%200%201365%202048'%3E%3C/svg%3E" alt="Cameron Cary" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 22%" class="perfmatters-lazy" data-src="https://avskycharters.com/wp-content/uploads/2026/01/Cameron-Cary.jpg" /><div style="position:absolute;inset:0;background:linear-gradient(180deg, rgba(10,20,36,0) 34%, rgba(10,20,36,0.55) 68%, rgba(6,12,24,0.94) 100%)"></div><div style="position:absolute;left:14px;right:14px;bottom:13px"><div style="width:22px;height:2px;background:#E8A93C;margin-bottom:8px"></div><div style="font-family:'Poppins',sans-serif;font-size:16px;font-weight:600;color:#FFFFFF;letter-spacing:-0.01em;line-height:1.2">Cameron Cary</div><div style="font-size:11px;color:rgba(255,255,255,0.72);margin-top:3px;line-height:1.45">CEO, AvSky Charters</div></div></a><a class="avc-teamtile" href="/team/danielle-grannan/" style="position:relative;aspect-ratio:1/1;overflow:hidden;background:#101F35;display:block;color:inherit;text-decoration:none"><img width="1360" height="1435" decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='1360'%20height='1435'%20viewBox='0%200%201360%201435'%3E%3C/svg%3E" alt="Danielle Grannan" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 22%" class="perfmatters-lazy" data-src="https://avskycharters.com/wp-content/uploads/2026/01/Danielle-Grannan-2026.png" /><div style="position:absolute;inset:0;background:linear-gradient(180deg, rgba(10,20,36,0) 34%, rgba(10,20,36,0.55) 68%, rgba(6,12,24,0.94) 100%)"></div><div style="position:absolute;left:14px;right:14px;bottom:13px"><div style="width:22px;height:2px;background:#E8A93C;margin-bottom:8px"></div><div style="font-family:'Poppins',sans-serif;font-size:16px;font-weight:600;color:#FFFFFF;letter-spacing:-0.01em;line-height:1.2">Danielle Grannan</div><div style="font-size:11px;color:rgba(255,255,255,0.72);margin-top:3px;line-height:1.45">Operations Manager</div></div></a><a class="avc-teamtile" href="/team/eric-wright/" style="position:relative;aspect-ratio:1/1;overflow:hidden;background:#101F35;display:block;color:inherit;text-decoration:none"><img width="1365" height="2048" decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='1365'%20height='2048'%20viewBox='0%200%201365%202048'%3E%3C/svg%3E" alt="Eric Wright" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 22%" class="perfmatters-lazy" data-src="https://avskycharters.com/wp-content/uploads/2026/01/Eric-Wright.jpg" /><div style="position:absolute;inset:0;background:linear-gradient(180deg, rgba(10,20,36,0) 34%, rgba(10,20,36,0.55) 68%, rgba(6,12,24,0.94) 100%)"></div><div style="position:absolute;left:14px;right:14px;bottom:13px"><div style="width:22px;height:2px;background:#E8A93C;margin-bottom:8px"></div><div style="font-family:'Poppins',sans-serif;font-size:16px;font-weight:600;color:#FFFFFF;letter-spacing:-0.01em;line-height:1.2">Eric Wright</div><div style="font-size:11px;color:rgba(255,255,255,0.72);margin-top:3px;line-height:1.45">Charter Executive</div></div></a><a class="avc-teamtile" href="/team/jake-ramos/" style="position:relative;aspect-ratio:1/1;overflow:hidden;background:#101F35;display:block;color:inherit;text-decoration:none"><img width="1365" height="2048" decoding="async" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='1365'%20height='2048'%20viewBox='0%200%201365%202048'%3E%3C/svg%3E" alt="Jake Ramos" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 22%" class="perfmatters-lazy" data-src="https://avskycharters.com/wp-content/uploads/2026/01/IMG_2086.jpg" /><div style="position:absolute;inset:0;background:linear-gradient(180deg, rgba(10,20,36,0) 34%, rgba(10,20,36,0.55) 68%, rgba(6,12,24,0.94) 100%)"></div><div style="position:absolute;
1892left:14px;right:14px;bottom:13px"><div style="width:22px;height:2px;background:#E8A93C;margin-bottom:8px"></div><div style="font-family:'Poppins',sans-serif;font-size:16px;font-weight:600;color:#FFFFFF;letter-spacing:-0.01em;line-height:1.2">Jake Ramos</div><div style="font-size:11px;color:rgba(255,255,255,0.72);margin-top:3px;line-height:1.45">Charter Consultant</div></div></a><div style="position:relative;aspect-ratio:1/1;background:#FBF7EE;border-top:1px solid #EDE3CC;padding:18px 16px;display:flex;flex-direction:column;justify-content:flex-end"><div style="width:22px;height:2px;background:#B0781F;margin-bottom:8px"></div><div style="font-family:'Poppins',sans-serif;font-size:15px;font-weight:600;color:#0B1626;line-height:1.3">+ A dedicated worldwide network</div><div style="font-size:12px;line-height:1.6;color:#6B6350;margin-top:6px">Vetted operators, VIP security, air-medical crews, and concierges.</div></div></div></div></section><section id="press" data-screen-label="Press (Mobile)" style="background:#FFFFFF;padding:44px 20px 48px"><div style="display:flex;align-items:center;gap:14px;margin-bottom:10px"><span style="font-size:11px;font-weight:600;letter-spacing:0.18em;text-transform:uppercase;color:#B0781F;white-space:nowrap">Press</span><span style="flex:1;min-width:40px;height:1px;background:linear-gradient(to right, rgba(200,132,31,0.55), rgba(200,132,31,0.08))"></span></div><h2 style="font-family:'Poppins',sans-serif;font-size:27px;font-weight:700;color:#0B1626;letter-spacing:-0.02em;line-height:1.12;margin:0 0 18px;text-wrap:pretty">AvSky in the headlines</h2><div style="border-top:1px solid #E8E4DA"><a class="mh6" href="https://www.businessobserverfl.com/news/2026/feb/27/sarasota-county-charter-flight-firm-volume/" target="_blank" rel="noopener" style="display:block;padding:20px 0;border-bottom:1px solid #EFECE4;color:inherit"><div style="font-size:11px;font-weight:600;letter-spacing:0.14em;text-transform:uppercase;color:#B0781F;margin-bottom:7px">Business Observer &#183; Cover story</div><div style="font-size:17px;font-weight:700;color:#0B1626;letter-spacing:-0.01em;line-height:1.3">Tail Winds</div><p style="font-size:14px;line-height:1.6;color:#5B6472;margin:6px 0 0">A look at how AvSky Charters scaled without easing off the white-glove service its clients expect on every flight.</p><div style="font-size:14px;font-weight:600;color:#B0781F;margin-top:10px">Read <span aria-hidden="true">→</span></div></a><a class="mh6" href="https://www.floridatrend.com/nextgen/2025/10/07/chartering-success/" target="_blank" rel="noopener" style="display:block;padding:20px 0;border-bottom:1px solid #EFECE4;color:inherit"><div style="font-size:11px;font-weight:600;letter-spacing:0.14em;text-transform:uppercase;color:#B0781F;margin-bottom:7px">NextGen &#183; Founder profile</div><div style="font-size:17px;font-weight:700;color:#0B1626;letter-spacing:-0.01em;line-height:1.3">Chartering Success</div><p style="font-size:14px;line-height:1.6;color:#5B6472;margin:6px 0 0">How founder Tyler Holt built a Florida charter operation around deep aircraft knowledge and hands-on client service.</p><div style="font-size:14px;font-weight:600;color:#B0781F;margin-top:10px">Read <span aria-hidden="true">→</span></div></a><a class="mh6" href="https://www.forbesmiddleeast.com/industry/aviation/how-gulf-carriers-navigate-safety-and-revenue-amid-conflict" target="_blank" rel="noopener" style="display:block;padding:20px 0;border-bottom:1px solid #EFECE4;color:inherit"><div style="font-size:11px;font-weight:600;letter-spacing:0.14em;text-transform:uppercase;color:#B0781F;margin-bottom:7px">Forbes Middle East &#183; Expert commentary</div><div style="font-size:17px;font-weight:700;color:#0B1626;letter-spacing:-0.01em;line-height:1.3">How Gulf Carriers Navigate Safety and Revenue Amid Conflict</div><p style="font-size:14px;line-height:1.6;color:#5B6472;margin:6px 0 0">CEO Cameron Cary provides expert aviation commentary on airline diversions and private aviation’s role during disruption.</p><div style="font-size:14px;font-weight:600;color:#B0781F;margin-top:10px">Read <span aria-hidden="true">→</span></div></a><a class="mh6" href="https://www.youtube.com/watch?v=nvsJMjJOE0U" target="_blank" rel="noopener" style="display:block;padding:20px 0;border-bottom:1px solid #EFECE4;color:inherit"><div style="font-size:11px;font-weight:600;letter-spacing:0.14em;text-transform:uppercase;color:#B0781F;margin-bottom:7px">The American Dream TV &#183; Television feature</div><div style="font-size:17px;font-weight:700;color:#0B1626;letter-spacing:-0.01em;line-height:1.3">AvSky Charters on National Television</div><p style="font-size:14px;line-height:1.6;color:#5B6472;margin:6px 0 0">The Emmy-nominated lifestyle series features AvSky Charters and its personal approach to private travel.</p><div style="font-size:14px;font-weight:600;color:#B0781F;margin-top:10px">Watch <span aria-hidden="true">→</span></div></a></div><div style="display:flex;justify-content:center;margin-top:22px"><a class="mh7" href="mailto:[email protected]" style="font-size:14.5px;font-weight:600;color:#B0781F;white-space:nowrap">Press inquiries <span aria-hidden="true">→</span></a></div></section><section id="quote" data-screen-label="Request a Quote (Mobile)" style="background:radial-gradient(ellipse at 84% 0%, rgba(232,169,60,0.07), transparent 55%) #FBFAF7;border-top:1px solid #EDE7DB;padding:44px 20px 48px"><h2 style="font-family:'Poppins',sans-serif;font-size:27px;font-weight:700;color:#0B1626;letter-spacing:-0.02em;line-height:1.12;margin:0 0 12px">Request a Quote</h2><p style="font-size:15px;line-height:1.7;color:#4B5563;margin:0 0 22px">Tell us where you’re headed and our in-house charter team will plan and price the whole itinerary.</p><button class="mh1" type="button" data-action="open-modal" style="width:100%;height:52px;background:#E8A93C;color:#0B1626;border:none;border-radius:999px;font-family:'Poppins',sans-serif;font-size:16px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:9px;box-shadow:0 12px 26px -10px rgba(232,169,60,0.4)">Request a Quote <span aria-hidden="true">→</span></button><div style="margin:14px 0 30px;text-align:center;font-size:14.5px;color:#6B7280">Or call <a class="mh8" href="tel:8005410381" style="font-weight:700;color:#0B1626">(800) 541-0381</a></div><div style="margin-top:16px;border:1px solid #ECE9E2;border-radius:14px;overflow:hidden"><div style="background:#FFFFFF;border-bottom:1px solid #ECE9E2;padding:13px 16px;display:flex;align-items:center;gap:9px"><span style="width:7px;height:7px;border-radius:50%;background:#E8A93C;box-shadow:0 0 0 4px rgba(232,169,60,0.18);flex:none"></span><span style="font-size:12px;font-weight:600;letter-spacing:0.12em;text-transform:uppercase;color:#B0781F">Every quote is all-inclusive</span></div><div style="display:grid;grid-template-columns:1fr 1fr;gap:1px;background:#ECE9E2"><div style="background:#FFFFFF;padding:15px 16px 16px"><div style="font-size:15.5px;font-weight:600;color:#0B1626;line-height:1.3">Fuel &amp; surcharges</div><div style="font-size:13.5px;line-height:1.5;color:#6B7280;margin-top:3px">Never billed on top</div></div><div style="background:#FFFFFF;padding:15px 16px 16px"><div style="font-size:15.5px;font-weight:600;color:#0B1626;line-height:1.3">Crew &amp; catering</div><div style="font-size:13.5px;line-height:1.5;color:#6B7280;margin-top:3px">Pilots &amp; refreshments</div></div><div style="background:#FFFFFF;padding:15px 16px 16px"><div style="font-size:15.5px;font-weight:600;color:#0B1626;line-height:1.3">Landing &amp; handling</div><div style="font-size:13.5px;line-height:1.5;color:#6B7280;margin-top:3px">FBO &amp; ramp fees</div></div><div style="background:#FFFFFF;padding:15px 16px 16px"><div style="font-size:15.5px;font-weight:600;color:#0B1626;line-height:1.3">Taxes &amp; segment fees</div><div style="font-size:13.5px;line-height:1.5;color:#6B7280;margin-top:3px">Federal excise included</div></div></div></div></section><footer data-screen-label="Footer (Mobile)" style="position:relative;overflow:hidden;background:linear-gradient(158deg, #16283F 0%, #0F1D31 44%, #0A1420 100%);color:rgba(255,255,255,0.78);box-shadow:inset 0 1px 0 rgba(255,255,255,0.07)"><div style="position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 60% 45% at 88% -8%, rgba(244,192,120,0.2), transparent 62%)"></div><div style="position:absolute;
1892left:0;right:0;top:0;height:1px;pointer-events:none;background:linear-gradient(to right, rgba(244,192,120,0) 0%, rgba(244,192,120,0.85) 46%, rgba(244,192,120,0.15) 100%)"></div><div style="position:relative;padding:36px 20px 30px"><div style="font-size:12px;font-weight:600;letter-spacing:0.24em;text-transform:uppercase;color:#E8A93C;margin-bottom:12px">Talk To Us</div><h2 style="font-family:'Poppins',sans-serif;font-size:30px;font-weight:700;color:#FFFFFF;letter-spacing:-0.02em;line-height:1.1;margin:0 0 12px">Ready when you are.</h2><p style="font-size:15px;line-height:1.65;color:rgba(255,255,255,0.62);margin:0 0 22px;text-wrap:pretty">Charter flights from one of the world leaders in private aviation. Florida-based and on-call 24/7.</p><button class="mh1" type="button" data-action="open-modal" style="width:100%;height:52px;display:inline-flex;align-items:center;justify-content:center;gap:10px;background:#E8A93C;color:#0B1626;border:none;border-radius:14px;font-family:'Poppins',sans-serif;font-size:16px;font-weight:700;cursor:pointer;box-shadow:0 10px 26px rgba(232,169,60,0.25)"><span aria-hidden="true">→</span> Request a Quote</button><a class="mh9" href="tel:8005410381" style="margin-top:12px;width:100%;height:52px;display:inline-flex;align-items:center;justify-content:center;gap:10px;background:transparent;color:#FFFFFF;border:1px solid rgba(255,255,255,0.3);border-radius:14px;font-family:'Poppins',sans-serif;font-size:16px;font-weight:600"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true" style="color:#E8A93C"><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.127.96.361 1.903.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0 1 22 16.92z" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"></path></svg> Call (800) 541-0381</a><div style="margin-top:26px;border-top:1px solid rgba(255,255,255,0.12)"><a class="mh3" href="/charter-flight-quote/" data-action="open-modal" style="display:flex;align-items:center;justify-content:space-between;gap:12px;padding:17px 2px;border-bottom:1px solid rgba(255,255,255,0.12);font-size:16.5px;font-weight:600;color:#FFFFFF;line-height:1.4;cursor:pointer">Request a Quote <svg width="15" height="15" viewBox="0 0 24 24" fill="none" aria-hidden="true" style="flex:none;color:rgba(255,255,255,0.5)"><path d="M9 5l7 7-7 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a><a class="mh3" href="/jet-card/" style="display:flex;align-items:center;justify-content:space-between;gap:12px;padding:17px 2px;border-bottom:1px solid rgba(255,255,255,0.12);font-size:16.5px;font-weight:600;color:#FFFFFF;line-height:1.4">Jet Card <svg width="15" height="15" viewBox="0 0 24 24" fill="none" aria-hidden="true" style="flex:none;color:rgba(255,255,255,0.5)"><path d="M9 5l7 7-7 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a><a class="mh3" href="/govflights/" style="display:flex;align-items:center;justify-content:space-between;gap:12px;padding:17px 2px;border-bottom:1px solid rgba(255,255,255,0.12);font-size:16.5px;font-weight:600;color:#FFFFFF;line-height:1.4">Gov Charters <svg width="15" height="15" viewBox="0 0 24 24" fill="none" aria-hidden="true" style="flex:none;color:rgba(255,255,255,0.5)"><path d="M9 5l7 7-7 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a><a class="mh3" href="/charter-flight-cost-calculator/" style="display:flex;align-items:center;justify-content:space-between;gap:12px;padding:17px 2px;border-bottom:1px solid rgba(255,255,255,0.12);font-size:16.5px;font-weight:600;color:#FFFFFF;line-height:1.4">Charter Cost Estimator <svg width="15" height="15" viewBox="0 0 24 24" fill="none" aria-hidden="true" style="flex:none;color:rgba(255,255,255,0.5)"><path d="M9 5l7 7-7 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a><a class="mh3" href="/about-avsky-charters/" style="display:flex;align-items:center;justify-content:space-between;gap:12px;padding:17px 2px;border-bottom:1px solid rgba(255,255,255,0.12);font-size:16.5px;font-weight:600;color:#FFFFFF;line-height:1.4">Our Story <svg width="15" height="15" viewBox="0 0 24 24" fill="none" aria-hidden="true" style="flex:none;color:rgba(255,255,255,0.5)"><path d="M9 5l7 7-7 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a><a class="mh3" href="https://www.avskyjets.com/" target="_blank" rel="noopener" style="display:flex;align-items:center;justify-content:space-between;gap:12px;padding:17px 2px;border-bottom:1px solid rgba(255,255,255,0.12);font-size:16.5px;font-weight:600;color:#FFFFFF;line-height:1.4">AvSky Brokerage <svg width="15" height="15" viewBox="0 0 24 24" fill="none" aria-hidden="true" style="flex:none;color:rgba(255,255,255,0.5)"><path d="M9 5l7 7-7 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a><a class="mh3" href="https://rockymtnairparts.com/" target="_blank" rel="noopener" style="display:flex;align-items:center;justify-content:space-between;gap:12px;padding:17px 2px;border-bottom:1px solid rgba(255,255,255,0.12);font-size:16.5px;font-weight:600;color:#FFFFFF;line-height:1.4">Rocky Mountain Air Parts <svg width="15" height="15" viewBox="0 0 24 24" fill="none" aria-hidden="true" style="flex:none;color:rgba(255,255,255,0.5)"><path d="M9 5l7 7-7 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a><a class="mh3" href="/partnership-registration/" style="display:flex;align-items:center;justify-content:space-between;gap:12px;padding:17px 2px;border-bottom:1px solid rgba(255,255,255,0.12);font-size:16.5px;font-weight:600;color:#FFFFFF;line-height:1.4">Affiliate Program <svg width="15" height="15" viewBox="0 0 24 24" fill="none" aria-hidden="true" style="flex:none;color:rgba(255,255,255,0.5)"><path d="M9 5l7 7-7 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a></div></div><div style="position:relative;border-top:1px solid rgba(232,169,60,0.55);padding:18px 20px 26px;display:flex;align-items:center;justify-content:space-between;gap:14px"><img width="449" height="216" decoding="async" src="https://avskycharters.com/wp-content/uploads/2026/06/avsky-logo.png" alt="AvSky Charters" style="width:104px;
1892height:38px;object-fit:contain;object-position:left center;flex:none;display:block"><div style="text-align:right;min-width:0"><div style="display:inline-flex;align-items:flex-start;gap:6px;font-size:12.5px;color:rgba(255,255,255,0.75);line-height:1.5"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" aria-hidden="true" style="flex:none;margin-top:3px"><path d="M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 1 1 16 0z" stroke="currentColor" stroke-width="1.8"></path><circle cx="12" cy="10" r="3" stroke="currentColor" stroke-width="1.8"></circle></svg>400 Airport Ave E, Venice, FL 34285</div><div style="font-size:12px;color:rgba(255,255,255,0.5);margin-top:3px">© AvSky Charter Ventures, Inc. · All rights reserved</div><div><a class="mh3" href="/privacy-policy/" style="display:inline-block;padding:8px 0 2px;font-size:12px;color:rgba(255,255,255,0.6);text-decoration:underline;text-underline-offset:3px">Privacy Policy</a></div></div></div></footer></div><!-- ═══ QUOTE MODAL SHEET (Dest 3.0 clone; shared by desktop + mobile) ═══ --><div class="qm-backdrop" data-action="close-modal" aria-hidden="true"></div><div class="qm-sheet" id="avc-modal" role="dialog" aria-modal="true" aria-label="Request a quote" aria-hidden="true"><div class="qm-head"><div class="qm-handle"></div><div class="qm-topbar"><span class="qm-eyebrow">Request a quote</span><button type="button" class="qm-close" aria-label="Close" data-action="close-modal"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18M6 6l12 12"/></svg></button></div><h2 class="qm-title" id="avc-modal-title">Tell us about <em>your trip.</em></h2><p class="qm-sub" id="avc-modal-sub">Send a few details and we’ll provide an all-inclusive quote.</p></div><div id="avc-modal-content"></div></div><!-- ═══ NOTICE DIALOG (quote form: "we still need your trip details / contact info") ═══ --><div class="qn-backdrop" data-action="notice-ok" aria-hidden="true"></div><div class="qn" id="avc-notice" role="alertdialog" aria-modal="true" aria-labelledby="avc-notice-title" aria-describedby="avc-notice-text" aria-hidden="true"><div class="qn-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/></svg></div><h3 class="qn-title" id="avc-notice-title"></h3><p class="qn-text" id="avc-notice-text"></p><button type="button" class="qn-btn" data-action="notice-ok"></button></div><!-- ═══ DATE PICKER SHEET (shared by every quote form) ═══ --><div class="ds-backdrop" data-action="ds-close" aria-hidden="true"></div><div class="ds-sheet" id="avc-date-sheet" role="dialog" aria-modal="true" aria-label="Pick travel dates" aria-hidden="true"><div class="ds-head"><button type="button" class="ds-close" aria-label="Close" data-action="ds-close"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18M6 6l12 12"/></svg></button><span class="ds-title" id="avc-date-title">Pick your dates</span></div><div class="ds-tabs" id="avc-date-tabs"></div><div class="ds-cal-host" data-cal-host></div><div class="ds-foot"><button type="button" class="ds-clear" data-action="ds-clear">Clear</button><button type="button" class="ds-done" data-action="ds-done">Done</button></div></div></div>
1892<script id="avc-about-js">(function(){var b=atob("d2luZG93LkFWQ19DRkc9eyJ3b3JrZXIiOiJodHRwczovL2F2c2t5LW1pYW1pLWNhcmliYmVhbi5qaW1tYWxlYy53b3JrZXJzLmRldi9sZWFkIiwicGhvbmUiOiIoODAwKSA1NDEtMDM4MSIsInRlbCI6IisxODAwNTQxMDM4MSIsInBsYWNlc0tleSI6IkFJemFTeUI1QmdpZEpqcTlsdC1qbkwwaG9qRUs5RjZGZ3JhZVBvYyIsImdwUGFkIjowLCJzb3VyY2UiOiJzaXRlLWFib3V0IiwicGFnZSI6IkFib3V0IiwiZnJvbUxhYmVsIjoiRGVwYXJ0IGZyb20iLCJzbHVnIjoiYWJvdXQifTsvKiBBdlNreSBDb3JlIFBhZ2VzIOKAlCBzaGFyZWQgZW5naW5lIChBYm91dCAvIENvbnRhY3QgLyBNZW1iZXJzaGlwcyAvIFF1b3RlKS4KICAgUG9ydGVkIGZyb20gdGhlIERlc3RpbmF0aW9uIDMuMCB0aGVtZSAoZGVzdGluYXRpb24tMy5qcyk6IHF1b3RlLWZvcm0gZW5naW5lLAogICBzbGlkZS11cCBxdW90ZSBtb2RhbCwgZGF0ZS1waWNrZXIgc2hlZXQgKyBpbmxpbmUgY2FsZW5kYXIsIHN1Y2Nlc3Mgc2NyZWVucywKICAgR29vZ2xlIFBsYWNlcyBhdXRvc3VnZ2VzdCwgc2luZ2xlLURPTSBwcnVuZS4gTmV3IGhlcmU6IHN0YXRpYyBjb250YWN0IC8KICAgbWVtYmVyc2hpcCBmb3JtIGhhbmRsZXJzLCB0aGUgdHdvLXN0ZXAgcXVvdGUgZm9ybSwgTGVhZmxldCBvZmZpY2UgbWFwcy4KICAgQ29uZmlnIGFycml2ZXMgYXMgd2luZG93LkFWQ19DRkcgKGVtaXR0ZWQgYnkgYnVpbGQvYnVpbGQuanMpLgogICBFUzUsIGJsb2NrIGNvbW1lbnRzIG9ubHkg4oCUIHRoZSAubWluIGJ1aWxkIHN0cmlwcyBldmVyeSBuZXdsaW5lLiAqLwooZnVuY3Rpb24gKCkgewogICd1c2Ugc3RyaWN0JzsKICB2YXIgQ0ZHID0gd2luZG93LkFWQ19DRkcgfHwge307CiAgdmFyIHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXZjLXJvb3QnKTsKICBpZiAoIXJvb3QpIHsgcmV0dXJuOyB9CiAgdmFyIFdPUktFUiA9IENGRy53b3JrZXIgfHwgJ2h0dHBzOi8vYXZza3ktbWlhbWktY2FyaWJiZWFuLmppbW1hbGVjLndvcmtlcnMuZGV2L2xlYWQnOwogIHZhciBQSE9ORSA9IENGRy5waG9uZSB8fCAnKDgwMCkgNTQxLTAzODEnOwogIHZhciBURUwgPSBDRkcudGVsIHx8ICcrMTgwMDU0MTAzODEnOwogIHZhciBTUkMgPSBDRkcuc291cmNlIHx8ICdzaXRlLXBhZ2UnOwogIHZhciBQQUdFID0gQ0ZHLnBhZ2UgfHwgJyc7CiAgdmFyIEZST01fTEFCRUwgPSBDRkcuZnJvbUxhYmVsIHx8ICdMZWF2aW5nIGZyb20nOwogIHZhciBBRFNfTEFCRUxTID0gewogICAgcGhvbmVfY2xpY2s6ICdBVy0xNzMxODEzNzUzNy9ZUm8zQ0tyX3pxZ2NFTUdkOThGQScsCiAgICBlbWFpbF9jbGljazogJ0FXLTE3MzE4MTM3NTM3L1QtNDdDSnFSNXFnY0VNR2Q5OEZBJywKICAgIGZvcm1fc3VibWl0OiAnQVctMTczMTgxMzc1Mzcvd2VZQUNLamU1NmdjRU1HZDk4RkEnCiAgfTsKCiAgLyog4pSA4pSA4pSAIGhlbHBlcnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovCiAgZnVuY3Rpb24gJChzLCByKSB7IHJldHVybiAociB8fCBkb2N1bWVudCkucXVlcnlTZWxlY3RvcihzKTsgfQogIGZ1bmN0aW9uICQkKHMsIHIpIHsgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKChyIHx8IGRvY3VtZW50KS5xdWVyeVNlbGVjdG9yQWxsKHMpKTsgfQogIGZ1bmN0aW9uIGVzYyhzKSB7CiAgICByZXR1cm4gU3RyaW5nKHMgPT0gbnVsbCA/ICcnIDogcykucmVwbGFjZSgvJi9nLCAnJmFtcDsnKS5yZXBsYWNlKC88L2csICcmbHQ7JykucmVwbGFjZSgvPi9nLCAnJmd0OycpLnJlcGxhY2UoLyIvZywgJyZxdW90OycpLnJlcGxhY2UoLycvZywgJyYjMzk7Jyk7CiAgfQogIGZ1bmN0aW9uIGJvbGRpZnkocykgeyByZXR1cm4gZXNjKHMpLnJlcGxhY2UoL1wqKFteKl0rKVwqL2csICc8Yj4kMTwvYj4nKTsgfQogIGZ1bmN0aW9uIGluTW9iaWxlVHJlZShlbCkgeyByZXR1cm4gISEoZWwgJiYgZWwuY2xvc2VzdCAmJiBlbC5jbG9zZXN0KCcuYXZjLW0nKSk7IH0KICBmdW5jdGlvbiBmaXJzdE5hbWUobikgeyByZXR1cm4gKG4gfHwgJycpLnRyaW0oKS5zcGxpdCgvXHMrLylbMF0gfHwgJyc7IH0KICBmdW5jdGlvbiBwb3N0TGVhZChwYXlsb2FkKSB7CiAgICBpZiAod2luZG93LkFWQ19URVNUKSB7CiAgICAgICh3aW5kb3cuQVZDX1RFU1RfTEVBRFMgPSB3aW5kb3cuQVZDX1RFU1RfTEVBRFMgfHwgW10pLnB1c2gocGF5bG9hZCk7CiAgICAgIHJldHVybiBuZXcgUHJvbWlzZS
1892hmdW5jdGlvbiAocmVzKSB7IHNldFRpbWVvdXQocmVzLCAzNTApOyB9KTsKICAgIH0KICAgIHJldHVybiBmZXRjaChXT1JLRVIsIHsgbWV0aG9kOiAnUE9TVCcsIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LCBib2R5OiBKU09OLnN0cmluZ2lmeShwYXlsb2FkKSB9KTsKICB9CiAgZnVuY3Rpb24gY2FwdHVyZVJlZmVycmFsKCkgewogICAgdHJ5IHsKICAgICAgdmFyIHNwID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTsKICAgICAgdmFyIHAgPSBzcC5nZXQoJ3JlZicpIHx8IHNwLmdldCgncmVmZXJyYWwnKSB8fCBzcC5nZXQoJ3ZpYScpOwogICAgICBpZiAocCkgeyByZXR1cm4gcDsgfQogICAgfSBjYXRjaCAoZSkgeyAvKiBvbGQgYnJvd3NlciAqLyB9CiAgICB0cnkgeyB2YXIgbHMgPSB3aW5kb3cubG9jYWxTdG9yYWdlICYmIHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYWZmaWxpYXRlQ29kZScpOyBpZiAobHMpIHsgcmV0dXJuIGxzOyB9IH0gY2F0Y2ggKGUpIHsgLyogYmxvY2tlZCAqLyB9CiAgICB2YXIgcmVmID0gZG9jdW1lbnQucmVmZXJyZXIgfHwgJyc7CiAgICB2YXIgZ20gPSByZWYubWF0Y2goL1wvZ29cLyhbXi8/I10rKS9pKTsKICAgIGlmIChnbSkgeyByZXR1cm4gZ21bMV07IH0KICAgIHZhciBuYW1lcyA9IFsnYXZza3lfcmVmJywgJ19yZWYnLCAncmVmZXJyZXInXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIG0gPSBkb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgnKD86Xnw7XFxzKiknICsgbmFtZXNbaV0gKyAnPShbXjtdKyknKSk7CiAgICAgIGlmIChtKSB7IHJldHVybiBkZWNvZGVVUklDb21wb25lbnQobVsxXSk7IH0KICAgIH0KICAgIHJldHVybiAnJzsKICB9CiAgZnVuY3Rpb24gdHJhY2tFdmVudChuYW1lLCBwcm9wcykgewogICAgaWYgKHR5cGVvZiB3aW5kb3cucGxhdXNpYmxlID09PSAnZnVuY3Rpb24nKSB7IHRyeSB7IHdpbmRvdy5wbGF1c2libGUobmFtZSwgcHJvcHMgPyB7IHByb3BzOiBwcm9wcyB9IDogdW5kZWZpbmVkKTsgfSBjYXRjaCAoZSkgeyAvKiBzd2FsbG93ICovIH0gfQogICAgaWYgKHR5cGVvZiB3aW5kb3cuZ3RhZyA9PT0gJ2Z1bmN0aW9uJykgewogICAgICB0cnkgewogICAgICAgIHdpbmRvdy5ndGFnKCdldmVudCcsIG5hbWUsIHByb3BzIHx8IHt9KTsKICAgICAgICBpZiAoQURTX0xBQkVMU1tuYW1lXSkgeyB3aW5kb3cuZ3RhZygnZXZlbnQnLCAnY29udmVyc2lvbicsIHsgc2VuZF90bzogQURTX0xBQkVMU1tuYW1lXSB9KTsgfQogICAgICB9IGNhdGNoIChlKSB7IC8qIHN3YWxsb3cgKi8gfQogICAgfQogIH0KICB2YXIgSUNPTiA9IHsKICAgIHBsYW5lOiAnPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTE3LjggMTkuMiAxNiAxMWwzLjUtMy41YTIuMSAyLjEgMCAwIDAtMy0zTDEzIDggNC44IDYuMmExIDEgMCAwIDAtLjkgMS43bDYuMSAzLjYtMi4zIDIuMy0yLjQtLjVhMSAxIDAgMCAwLS45IDEuN2wzIDIuMyAyLjMgM2ExIDEgMCAwIDAgMS43LS45bC0uNS0yLjQgMi4zLTIuMyAzLjYgNi4xYTEgMSAwIDAgMCAxLjctLjlaIi8+PC9zdmc+JywKICAgIGNhbDogJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxyZWN0IHg9IjMiIHk9IjUiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNiIgcng9IjIiLz48cGF0aCBkPSJNOCAzdjRNMTYgM3Y0TTMgMTFoMTgiLz48L3N2Zz4nLAogICAgY2FsTGluZTogJzxzdmcgY2xhc3M9ImQtaWMiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS42IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxyZWN0IHg9IjMiIHk9IjQiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgcng9IjIiLz48bGluZSB4MT0iMTYiIHkxPSIyIiB4Mj0iMTYiIHkyPSI2Ii8+PGxpbmUgeDE9IjgiIHkxPSIyIiB4Mj0iOCIgeTI9IjYiLz48bGluZSB4MT0iMyIgeTE9IjEwIiB4Mj0iMjEiIHkyPSIxMCIvPjwvc3ZnPicsCiAgICBjbG9jazogJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjkiLz48cGF0aCBkPSJNMTIgN3Y1bDMgMiIvPjwvc3ZnPicsCiAgICB1c2VyOiAnPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTIwIDIxdi0yYTQgNCAwIDAgMC00LTRIOGE0IDQgMCAwIDAtNCA0djIiLz48Y2lyY2xlIGN4PSIxMiIgY3k9IjciIHI9IjQiLz48L3N2Zz4nLAogICAgcGhvbmU6ICc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNMjIgMTYuOTJ2M2EyIDIgMCAwIDEtMi4xOCAyIDE5Ljc5IDE5Ljc5IDAgMCAxLTguNjMtMy4wNyAxOS41IDE5LjUgMCAwIDEtNi02IDE5Ljc5IDE5Ljc5IDAgMCAxLTMuMDctOC42N0EyIDIgMCAwIDEgNC4xMSAyaDNhMiAyIDAgMCAxIDIgMS43MiAxMi44NCAxMi44NCAwIDAgMCAuNyAyLjgxIDIgMiAwIDAgMS0uNDUgMi4xMUw4LjA5IDkuOTFhMTYgMTYgMCAwIDAgNiA2bDEuMjctMS4yN2EyIDIgMCAwIDEgMi4xMS0uNDUgMTIuODQgMTIuODQgMCAwIDAgMi44MS43QTIgMiAwIDAgMSAyMiAxNi45MloiLz48L3N2Zz4nLAogICAgbWFpbDogJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxyZWN0IHg9IjIiIHk9IjQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIxNiIg
1892cng9IjIiLz48cGF0aCBkPSJtMjIgNy0xMCA2TDIgNyIvPjwvc3ZnPicsCiAgICB4OiAnPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIuNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNMTggNiA2IDE4TTYgNmwxMiAxMiIvPjwvc3ZnPicsCiAgICBwbHVzOiAnPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTEyIDV2MTRNNSAxMmgxNCIvPjwvc3ZnPicsCiAgICBjaGV2OiAnPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTYgOWw2IDYgNi02Ii8+PC9zdmc+JywKICAgIHRhZzogJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGQ9Ik0yMC41OSAxMy40MSAxMy40MiAyMC41OGEyIDIgMCAwIDEtMi44MyAwTDIgMTJWMmgxMGw4LjU5IDguNTlhMiAyIDAgMCAxIDAgMi44MloiLz48Y2lyY2xlIGN4PSI3IiBjeT0iNyIgcj0iMS41Ii8+PC9zdmc+JywKICAgIGNoZWNrOiAnPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTIwIDZMOSAxN2wtNS01Ii8+PC9zdmc+JywKICAgIGNoZWNrVGhpbjogJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNNSAxMi41bDQuNSA0LjVMMTkgNy41Ii8+PC9zdmc+JywKICAgIGpldDogJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMSAxNnYtMmwtOC01VjMuNWExLjUgMS41IDAgMCAwLTMgMFY5bC04IDV2Mmw4LTIuNVYxOWwtMiAxLjVWMjJsMy41LTEgMy41IDF2LTEuNUwxMyAxOXYtNS41bDggMi41eiIvPjwvc3ZnPicKICB9OwogIGZ1bmN0aW9uIGFycm93UmlnaHQodykgewogICAgdyA9IHcgfHwgMTQ7CiAgICByZXR1cm4gJzxzdmcgd2lkdGg9IicgKyB3ICsgJyIgaGVpZ2h0PSInICsgdyArICciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMi41IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGQ9Ik01IDEyaDE0TTEzIDVsNyA3LTcgNyIvPjwvc3ZnPic7CiAgfQoKICAvKiDilIDilIDilIAgZGF0ZXMgKyBpbmxpbmUgY2FsZW5kYXIgKERlc3QgMy4wKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi8KICB2YXIgTU9OVEhfTkFNRVMgPSBbJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLCAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInXTsKICB2YXIgRE9XID0gWydTJywgJ00nLCAnVCcsICdXJywgJ1QnLCAnRicsICdTJ107CiAgZnVuY3Rpb24gc3RhcnRPZkRheShkKSB7IHZhciB4ID0gbmV3IERhdGUoZCk7IHguc2V0SG91cnMoMCwgMCwgMCwgMCk7IHJldHVybiB4OyB9CiAgZnVuY3Rpb24gZm10U2hvcnQoZCkgeyBpZiAoIWQpIHsgcmV0dXJuICcnOyB9IHJldHVybiBNT05USF9OQU1FU1tkLmdldE1vbnRoKCldLnNsaWNlKDAsIDMpICsgJyAnICsgZC5nZXREYXRlKCk7IH0KICBmdW5jdGlvbiBmbXRMb25nKGQpIHsgcmV0dXJuIGQgPyBmbXRTaG9ydChkKSArICcsICcgKyBkLmdldEZ1bGxZZWFyKCkgOiAnJzsgfQogIGZ1bmN0aW9uIHBhcnNlSVNPKHMpIHsKICAgIGlmICghcyB8fCB0eXBlb2YgcyAhPT0gJ3N0cmluZycpIHsgcmV0dXJuIG51bGw7IH0KICAgIHZhciBwID0gcy5zcGxpdCgnLScpOwogICAgaWYgKHAubGVuZ3RoICE9PSAzKSB7IHJldHVybiBudWxsOyB9CiAgICB2YXIgZCA9IG5ldyBEYXRlKCtwWzBdLCArcFsxXSAtIDEsICtwWzJdKTsKICAgIHJldHVybiBpc05hTihkLmdldFRpbWUoKSkgPyBudWxsIDogZDsKICB9CiAgZnVuY3Rpb24gdG9JU08oZCkgewogICAgaWYgKCFkKSB7IHJldHVybiAnJzsgfQogICAgdmFyIG0gPSBTdHJpbmcoZC5nZXRNb250aCgpICsgMSksIGRkID0gU3RyaW5nKGQuZ2V0RGF0ZSgpKTsKICAgIHJldHVybiBkLmdldEZ1bGxZZWFyKCkgKyAnLScgKyAobS5sZW5ndGggPCAyID8gJzAnICsgbSA6IG0pICsgJy0nICsgKGRkLmxlbmd0aCA8IDIgPyAnMCcgKyBkZCA6IGRkKTsKICB9CiAgZnVuY3Rpb24gc2FtZURheShhLCBiKSB7IHJldHVybiAhIShhICYmIGIgJiYgYS5nZXRGdWxsWWVhcigpID09PSBiLmdldEZ1bGxZZWFyKCkgJiYgYS5nZXRNb250aCgpID09PSBiLmdldE1vbnRoKCkgJiYgYS5nZXREYXRlKCkgPT09IGIuZ2V0RGF0ZSgpKTsgfQogIGZ1bmN0aW9uIGJldHdlZW4oZCwgYSwgYikgeyByZXR1cm4gISEoYSAmJiBiICYmIGQgPiBhICYmIGQgPCBiKTsgfQoKICBmdW5jdGlvbiBtb3VudENhbGVuZGFyKG1vdW50RWwsIG9wdHMpIHsKICAgIHZhciB0b2RheSA9IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSk7CiAgICB2YXIgbWluID0gb3B0cy5taW5EYXRlIHx8IHRvZGF5OwogICAgdmFyIGlzUmFuZ2UgPSBvcHRzLm1vZGUgPT09ICdyYW5nZSc7CiAgICB2YXIgdmFsdWUgPSBvcHRzLnZhbHVlIHx8IChpc1JhbmdlID8geyBzdGFydDogbnVsbCwgZW5kOiBudWxsIH0gOiBudWxsKTsKICAgIHZhciBpbml0aWFsID0gaXNSYW5nZSA/ICh2YWx1ZS
18925zdGFydCB8fCB0b2RheSkgOiAodmFsdWUgfHwgdG9kYXkpOwogICAgdmFyIHZpZXcgPSBuZXcgRGF0ZShpbml0aWFsLmdldEZ1bGxZZWFyKCksIGluaXRpYWwuZ2V0TW9udGgoKSwgMSk7CiAgICBmdW5jdGlvbiBzZXRWYWx1ZSh2KSB7IHZhbHVlID0gdjsgaWYgKG9wdHMub25DaGFuZ2UpIHsgb3B0cy5vbkNoYW5nZSh2KTsgfSByZW5kZXIoKTsgfQogICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZCkgewogICAgICBpZiAoZCA8IG1pbikgeyByZXR1cm47IH0KICAgICAgaWYgKCFpc1JhbmdlKSB7IHNldFZhbHVlKGQpOyByZXR1cm47IH0KICAgICAgdmFyIHMgPSB2YWx1ZSAmJiB2YWx1ZS5zdGFydCwgZSA9IHZhbHVlICYmIHZhbHVlLmVuZDsKICAgICAgaWYgKHR5cGVvZiBvcHRzLmZvY3VzRW5kID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgaWYgKG9wdHMuZm9jdXNFbmQoKSkgewogICAgICAgICAgaWYgKHMgJiYgZCA8IHMpIHsgc2V0VmFsdWUoeyBzdGFydDogZCwgZW5kOiBudWxsIH0pOyByZXR1cm47IH0KICAgICAgICAgIHNldFZhbHVlKHsgc3RhcnQ6IHMsIGVuZDogZCB9KTsgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZiAoZSAmJiBkID4gZSkgeyBzZXRWYWx1ZSh7IHN0YXJ0OiBkLCBlbmQ6IG51bGwgfSk7IHJldHVybjsgfQogICAgICAgIHNldFZhbHVlKHsgc3RhcnQ6IGQsIGVuZDogZSB9KTsgcmV0dXJuOwogICAgICB9CiAgICAgIGlmICghcykgeyBzZXRWYWx1ZSh7IHN0YXJ0OiBkLCBlbmQ6IG51bGwgfSk7IHJldHVybjsgfQogICAgICBpZiAoIWUpIHsKICAgICAgICBpZiAoZCA8IHMpIHsgc2V0VmFsdWUoeyBzdGFydDogZCwgZW5kOiBudWxsIH0pOyB9CiAgICAgICAgZWxzZSBpZiAoc2FtZURheShkLCBzKSkgeyBzZXRWYWx1ZSh7IHN0YXJ0OiBkLCBlbmQ6IGQgfSk7IH0KICAgICAgICBlbHNlIHsgc2V0VmFsdWUoeyBzdGFydDogcywgZW5kOiBkIH0pOyB9CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChkIDwgcykgeyBzZXRWYWx1ZSh7IHN0YXJ0OiBkLCBlbmQ6IGUgfSk7IHJldHVybjsgfQogICAgICBpZiAoZCA+IGUpIHsgc2V0VmFsdWUoeyBzdGFydDogcywgZW5kOiBkIH0pOyByZXR1cm47IH0KICAgICAgaWYgKE1hdGguYWJzKGQgLSBzKSA8PSBNYXRoLmFicyhkIC0gZSkpIHsgc2V0VmFsdWUoeyBzdGFydDogZCwgZW5kOiBlIH0pOyB9IGVsc2UgeyBzZXRWYWx1ZSh7IHN0YXJ0OiBzLCBlbmQ6IGQgfSk7IH0KICAgIH0KICAgIGZ1bmN0aW9uIG5pZ2h0cygpIHsgaWYgKCFpc1JhbmdlIHx8ICF2YWx1ZSB8fCAhdmFsdWUuc3RhcnQgfHwgIXZhbHVlLmVuZCkgeyByZXR1cm4gbnVsbDsgfSByZXR1cm4gTWF0aC5yb3VuZCgodmFsdWUuZW5kIC0gdmFsdWUuc3RhcnQpIC8gODY0MDAwMDApOyB9CiAgICBmdW5jdGlvbiByZW5kZXIoKSB7CiAgICAgIHZhciBmaXJzdERvdyA9IHZpZXcuZ2V0RGF5KCk7CiAgICAgIHZhciBkYXlzSW4gPSBuZXcgRGF0ZSh2aWV3LmdldEZ1bGxZZWFyKCksIHZpZXcuZ2V0TW9udGgoKSArIDEsIDApLmdldERhdGUoKTsKICAgICAgdmFyIHByZXZEYXlzID0gbmV3IERhdGUodmlldy5nZXRGdWxsWWVhcigpLCB2aWV3LmdldE1vbnRoKCksIDApLmdldERhdGUoKTsKICAgICAgdmFyIGNlbGxzID0gW10sIGk7CiAgICAgIGZvciAoaSA9IDA7IGkgPCBmaXJzdERvdzsgaSsrKSB7IGNlbGxzLnB1c2goeyBkYXRlOiBuZXcgRGF0ZSh2aWV3LmdldEZ1bGxZZWFyKCksIHZpZXcuZ2V0TW9udGgoKSAtIDEsIHByZXZEYXlzIC0gZmlyc3REb3cgKyAxICsgaSksIG11dGVkOiB0cnVlIH0pOyB9CiAgICAgIGZvciAoaSA9IDE7IGkgPD0gZGF5c0luOyBpKyspIHsgY2VsbHMucHVzaCh7IGRhdGU6IG5ldyBEYXRlKHZpZXcuZ2V0RnVsbFllYXIoKSwgdmlldy5nZXRNb250aCgpLCBpKSwgbXV0ZWQ6IGZhbHNlIH0pOyB9CiAgICAgIHdoaWxlIChjZWxscy5sZW5ndGggPCA0MikgeyBjZWxscy5wdXNoKHsgZGF0ZTogbmV3IERhdGUodmlldy5nZXRGdWxsWWVhcigpLCB2aWV3LmdldE1vbnRoKCkgKyAxLCBjZWxscy5sZW5ndGggLSBkYXlzSW4gLSBmaXJzdERvdyArIDEpLCBtdXRlZDogdHJ1ZSB9KTsgfQogICAgICB2YXIgY2FuUHJldiA9IHZpZXcgPiBuZXcgRGF0ZShtaW4uZ2V0RnVsbFllYXIoKSwgbWluLmdldE1vbnRoKCksIDEpOwogICAgICB2YXIgcHJvbXB0SHRtbCA9ICcnOwogICAgICBpZiAoaXNSYW5nZSkgewogICAgICAgIGlmICghdmFsdWUuc3RhcnQpIHsgcHJvbXB0SHRtbCA9ICc8ZGl2IGNsYXNzPSJxbS1jYWwtcHJvbXB0Ij48c3BhbiBjbGFzcz0ic3RlcCI+U3RlcCAxIC8gMjwvc3Bhbj48c3BhbiBjbGFzcz0ibXNnIj5UYXAgeW91ciA8c3Ryb25nPmRlcGFydHVyZTwvc3Ryb25nPiBkYXRlPC9zcGFuPjwvZGl2Pic7IH0KICAgICAgICBlbHNlIGlmICghdmFsdWUuZW5kKSB7IHByb21wdEh0bWwgPSAnPGRpdiBjbGFzcz0icW0tY2FsLXByb21wdCI+PHNwYW4gY2xhc3M9InN0ZXAiPlN0ZXAgMiAvIDI8L3NwYW4+PHNwYW4gY2xhc3M9Im1zZyI+Tm93IHRhcCB5b3VyIDxzdHJvbmc+cmV0dXJuPC9zdHJvbmc+IGRhdGU8L3NwYW4+PC9kaXY+JzsgfQogICAgICB9IGVsc2UgaWYgKCF2YWx1ZSkgeyBwcm9tcHRIdG1sID0gJzxkaXYgY2xhc3M9InFtLWNhbC1wcm9tcHQiPjxzcGFuIGNsYXNzPSJzdGVwIj5QaWNrIGEgZGF0ZTwvc3Bhbj48c3BhbiBjbGFzcz0ibXNnIj5UYXAgYSBkYXkgYmVsb3c8L3NwYW4+PC9kaXY+JzsgfQogICAgICB2YXIgaHRtbCA9IHByb21wdEh0bWwgKwogICAgICAgICc8ZGl2IGNsYXNzPSJxbS1jYWwtaGVhZCI+PGRpdiBjbGFzcz0icW0tY2FsLW1vbnRoIj4nICsgTU9OVEhfTkFNRVNbdmlldy5nZXRNb250aCgpXSArICc8c3BhbiBjbGFzcz0ieXIiPicgKyB2aWV3LmdldEZ1bGxZZWFyKCkgKyAnPC9zcGFuPjwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJxbS1jYWwtbmF2Ij48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgZGF0YS1jYWwtcHJldiAnICsgKGNhblByZXYgPyAnJyA6ICdkaXNhYmxlZCcpICsgJyBhcmlhLWxhYmVsPSJQcmV2aW91cyBtb250aCI+PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJtMTUgMTgtNi02IDYtNiIvPjwvc3ZnPjwvYnV0dG9uPicgKwogICAgICAgICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgZGF0YS1jYWwtbmV4dCBhcmlhLWxhYmVsPSJOZXh0IG1vbnRoIj48c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMi41IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGQ9Im05IDE4IDYtNi02LTYiLz48L3N2Zz48L2J1dHRvbj48L2Rpdj48L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0icW0tY2FsLWdyaWQiPic7CiAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHsgaHRtbCArPSAnPGRpdiBjbGFzcz0icW0tY2FsLWRvdyI+JyArIERPV1tpXSArICc8L2Rpdj4nOyB9CiAgICAgIGNlbGxzLmZvckVhY2goZnVuY3Rpb24gKGMsIGlkeCkgewogICAgICAgI
1892HZhciBkaXNhYmxlZCA9IGMuZGF0ZSA8IG1pbiwgY2xzID0gJ3FtLWNhbC1kYXknOwogICAgICAgIGlmIChjLm11dGVkKSB7IGNscyArPSAnIG11dGVkJzsgfQogICAgICAgIGlmIChkaXNhYmxlZCkgeyBjbHMgKz0gJyBkaXNhYmxlZCc7IH0KICAgICAgICBpZiAoc2FtZURheShjLmRhdGUsIHRvZGF5KSkgeyBjbHMgKz0gJyB0b2RheSc7IH0KICAgICAgICBpZiAoaXNSYW5nZSkgewogICAgICAgICAgaWYgKHNhbWVEYXkoYy5kYXRlLCB2YWx1ZS5zdGFydCkpIHsgY2xzICs9ICcgc2VsZWN0ZWQgcmFuZ2Utc3RhcnQnOyB9CiAgICAgICAgICBpZiAoc2FtZURheShjLmRhdGUsIHZhbHVlLmVuZCkpIHsgY2xzICs9ICcgc2VsZWN0ZWQgcmFuZ2UtZW5kJzsgfQogICAgICAgICAgaWYgKGJldHdlZW4oYy5kYXRlLCB2YWx1ZS5zdGFydCwgdmFsdWUuZW5kKSkgeyBjbHMgKz0gJyBpbi1yYW5nZSc7IH0KICAgICAgICB9IGVsc2UgaWYgKHNhbWVEYXkoYy5kYXRlLCB2YWx1ZSkpIHsgY2xzICs9ICcgc2VsZWN0ZWQnOyB9CiAgICAgICAgaHRtbCArPSAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSInICsgY2xzICsgJyIgZGF0YS1jYWwtaWR4PSInICsgaWR4ICsgJyIgJyArIChkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiAnJykgKyAnPjxzcGFuIGNsYXNzPSJudW0iPicgKyBjLmRhdGUuZ2V0RGF0ZSgpICsgJzwvc3Bhbj48L2J1dHRvbj4nOwogICAgICB9KTsKICAgICAgaHRtbCArPSAnPC9kaXY+JzsKICAgICAgdmFyIHN1bW1hcnk7CiAgICAgIGlmIChpc1JhbmdlKSB7CiAgICAgICAgdmFyIHMgPSB2YWx1ZSAmJiB2YWx1ZS5zdGFydCwgZSA9IHZhbHVlICYmIHZhbHVlLmVuZDsKICAgICAgICBpZiAoIXMpIHsgc3VtbWFyeSA9ICc8c3Bhbj5QaWNrIGEgZGVwYXJ0dXJlPC9zcGFuPic7IH0KICAgICAgICBlbHNlIGlmICghZSkgeyBzdW1tYXJ5ID0gJzxzcGFuPjxzdHJvbmc+JyArIGVzYyhmbXRTaG9ydChzKSkgKyAnPC9zdHJvbmc+IDxzcGFuIGNsYXNzPSJuaWdodHMiPuKGkiBwaWNrIGEgcmV0dXJuPC9zcGFuPjwvc3Bhbj4nOyB9CiAgICAgICAgZWxzZSB7IHZhciBuID0gbmlnaHRzKCk7IHN1bW1hcnkgPSAnPHNwYW4+PHN0cm9uZz4nICsgZXNjKGZtdFNob3J0KHMpKSArICcg4oaSICcgKyBlc2MoZm10U2hvcnQoZSkpICsgJzwvc3Ryb25nPiA8c3BhbiBjbGFzcz0ibmlnaHRzIj7CtyAnICsgbiArICcgJyArIChuID09PSAxID8gJ25pZ2h0JyA6ICduaWdodHMnKSArICc8L3NwYW4+PC9zcGFuPic7IH0KICAgICAgfSBlbHNlIHsgc3VtbWFyeSA9IHZhbHVlID8gJzxzcGFuPjxzdHJvbmc+JyArIGVzYyhmbXRTaG9ydCh2YWx1ZSkpICsgJzwvc3Ryb25nPjwvc3Bhbj4nIDogJzxzcGFuPlBpY2sgYSBkYXRlPC9zcGFuPic7IH0KICAgICAgdmFyIGRvbmVFbmFibGVkID0gaXNSYW5nZSA/ICEhKHZhbHVlICYmIHZhbHVlLnN0YXJ0ICYmIHZhbHVlLmVuZCkgOiAhIXZhbHVlOwogICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJxbS1jYWwtZm9vdCI+PGRpdiBjbGFzcz0icW0tY2FsLXN1bW1hcnkiPicgKyBzdW1tYXJ5ICsgJzwvZGl2PjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icW0tY2FsLWNsZWFyIiBkYXRhLWNhbC1jbGVhcj5DbGVhcjwvYnV0dG9uPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icW0tY2FsLWRvbmUiIGRhdGEtY2FsLWRvbmUgJyArIChkb25lRW5hYmxlZCA/ICcnIDogJ2Rpc2FibGVkJykgKyAnPkRvbmU8L2J1dHRvbj48L2Rpdj4nOwogICAgICBtb3VudEVsLmlubmVySFRNTCA9IGh0bWw7CiAgICAgIHZhciBwcmV2ID0gJCgnW2RhdGEtY2FsLXByZX
1892ZdJywgbW91bnRFbCksIG5leHQgPSAkKCdbZGF0YS1jYWwtbmV4dF0nLCBtb3VudEVsKSwgY2xlYXIgPSAkKCdbZGF0YS1jYWwtY2xlYXJdJywgbW91bnRFbCksIGRvbmUgPSAkKCdbZGF0YS1jYWwtZG9uZV0nLCBtb3VudEVsKTsKICAgICAgaWYgKHByZXYpIHsgcHJldi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IGlmIChwcmV2LmRpc2FibGVkKSB7IHJldHVybjsgfSB2aWV3ID0gbmV3IERhdGUodmlldy5nZXRGdWxsWWVhcigpLCB2aWV3LmdldE1vbnRoKCkgLSAxLCAxKTsgcmVuZGVyKCk7IH0pOyB9CiAgICAgIGlmIChuZXh0KSB7IG5leHQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkgeyBlLnN0b3BQcm9wYWdhdGlvbigpOyB2aWV3ID0gbmV3IERhdGUodmlldy5nZXRGdWxsWWVhcigpLCB2aWV3LmdldE1vbnRoKCkgKyAxLCAxKTsgcmVuZGVyKCk7IH0pOyB9CiAgICAgIGlmIChjbGVhcikgeyBjbGVhci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IGlmIChvcHRzLm9uQ2xlYXIpIHsgb3B0cy5vbkNsZWFyKCk7IH0gfSk7IH0KICAgICAgaWYgKGRvbmUpIHsgZG9uZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IGlmIChkb25lLmRpc2FibGVkKSB7IHJldHVybjsgfSBpZiAob3B0cy5vbkRvbmUpIHsgb3B0cy5vbkRvbmUoKTsgfSB9KTsgfQogICAgICAkJCgnW2RhdGEtY2FsLWlkeF0nLCBtb3VudEVsKS5mb3JFYWNoKGZ1bmN0aW9uIChidG4pIHsKICAgICAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkgeyBlLnN0b3BQcm9wYWdhdGlvbigpOyBoYW5kbGVDbGljayhjZWxsc1twYXJzZUludChidG4uZ2V0QXR0cmlidXRlKCdkYXRhLWNhbC1pZHgnKSwgMTApXS5kYXRlKTsgfSk7CiAgICAgIH0pOwogICAgfQogICAgcmVuZGVyKCk7CiAgICByZXR1cm4geyB1cGRhdGU6IGZ1bmN0aW9uICh2KSB7IHZhbHVlID0gdjsgcmVuZGVyKCk7IH0gfTsKICB9CgogIC8qIOKUgOKUgOKUgCBkYXRlIHBpY2tlciBzaGVldCAoc2hhcmVkKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi8KICB2YXIgZHNTdGF0ZSA9IHsgb3BlbjogZmFsc2UsIG1vZGU6IG51bGwsIHZhbHVlOiBudWxsLCBmb2N1czogJ3N0YXJ0JywgY29uZmlnOiBudWxsLCBjYWw6IG51bGwgfTsKICB2YXIgbW9kYWxPcGVuID0gZmFsc2UsIG5vdGljZU9wZW4gPSBmYWxzZSwgbm90aWNlQ2IgPSBudWxsLCBub3RpY2VQcmV2ID0gbnVsbCwgbm90aWNlQXQgPSAwLCBub3RpY2VGb2N1c1QgPSAwLCBkc09wZW5lciA9IG51bGw7CiAgZnVuY3Rpb24gY29hcnNlKCkgeyByZXR1cm4gISEod2luZG93Lm1hdGNoTWVkaWEgJiYgd2luZG93Lm1hdGNoTWVkaWEoJyhob3Zlcjogbm9uZSkgYW5kIChwb2ludGVyOiBjb2Fyc2UpJykubWF0Y2hlcyk7IH0KICBmdW5jdGlvbiBzYWZlRm9jdXMoZWwpIHsgaWYgKCFlbCB8fCAhZWwuZm9jdXMpIHsgcmV0dXJuOyB9IHRyeSB7IGVsLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTsgfSBjYXRjaCAoZSkgeyBlbC5mb2N1cygpOyB9IH0KICBmdW5jdGlvbiBzZXRMb2NrKCkgewogICAgdmFyIG9uID0gbW9kYWxPcGVuIHx8IG5vdGljZU9wZW4gfHwgZHNTdGF0ZS5vcGVuOwogICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoJ2F2Yy1sb2NrZWQnLCBvbik7CiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2F2Yy1sb2NrZWQnLCBvbik7CiAgfQogIGZ1bmN0aW9uIGRzUmVuZGVyVGFicygpIHsKICAgIHZhciB0YWJzRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXZjLWRhdGUtdGFicycpOwogICAgaWYgKCF0YWJzRWwpIHsgcmV0dXJuOyB9CiAgICBpZiAoZHNTdGF0ZS5tb2RlICE9PSAncmFuZ2UnKSB7IHRhYnNFbC5pbm5lckhUTUwgPSAnJzsgdGFic0VsLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7IHJldHVybjsgfQogICAgdGFic0VsLnN0eWxlLmRpc3BsYXkgPSAnJzsKICAgIHZhciB2ID0gZHNTdGF0ZS52YWx1ZSB8fCB7fSwgcyA9IHYuc3RhcnQsIGUgPSB2LmVuZDsKICAgIHZhciBzTGFiZWwgPSAoZHNTdGF0ZS5jb25maWcgJiYgZHNTdGF0ZS5jb25maWcuc3RhcnRMYWJlbCkgfHwgJ1N0YXJ0JywgZUxhYmVsID0gKGRzU3RhdGUuY29uZmlnICYmIGRzU3RhdGUuY29uZmlnLmVuZExhYmVsKSB8fCAnRW5kJzsKICAgIHZhciBzVmFsID0gcyA/IGZtdExvbmcocykgOiAnVGFwIHRvIHBpY2snLCBlVmFsID0gZSA/IGZtdExvbmcoZSkgOiAnVGFwIHRvIHBpY2snOwogICAgdGFic0VsLmlubmVySFRNTCA9CiAgICAgICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImRzLXRhYicgKyAoZHNTdGF0ZS5mb2N1cyA9PT0gJ3N0YXJ0JyA/ICcgYWN0aXZlJyA6ICcnKSArICciIGRhdGEtZHMtZm9jdXM9InN0YXJ0Ij48c3BhbiBjbGFzcz0ibGJsIj4nICsgZXNjKHNMYWJlbCkgKyAnPC9zcGFuPjxzcGFuIGNsYXNzPSJ2YWwnICsgKHMgPyAnJyA6ICcgcGxhY2Vob2xkZXInKSArICciPicgKyBlc2Moc1ZhbCkgKyAnPC9zcGFuPjwvYnV0dG9uPicgKwogICAgICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJkcy10YWInICsgKGRzU3RhdGUuZm9jdXMgPT09ICdlbmQnID8gJyBhY3RpdmUnIDogJycpICsgJyIgZGF0YS1kcy1mb2N1cz0iZW5kIj48c3BhbiBjbGFzcz0ibGJsIj4nICsgZXNjKGVMYWJlbCkgKyAnPC9zcGFuPjxzcGFuIGNsYXNzPSJ2YWwnICsgKGUgPyAnJyA6ICcgcGxhY2Vob2xkZXInKSArICciPicgKyBlc2MoZVZhbCkgKyAnPC9zcGFuPjwvYnV0dG9uPic7CiAgfQogIGZ1bmN0aW9uIGRzVXBkYXRlRG9uZSgpIHsKICAgIHZhciBzaGVldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdmMtZGF0ZS1zaGVldCcpOwogICAgaWYgKCFzaGVldCkgeyByZXR1cm47IH0KICAgIHZhciBkb25lID0gc2hlZXQucXVlcnlTZWxlY3RvcignW2RhdGEtYWN0aW9uPSJkcy1kb25lIl0nKTsKICAgIGlmICghZG9uZSkgeyByZXR1cm47IH0KICAgIC8qIHJhbmdlIG1vZGU6IG9uZSBlbmQgaXMgZW5vdWdoIChvd25lcjogbmV2ZXIgZm9yY2UgYm90aCBkYXRlcykgKi8KICAgIGRvbmUuZGlzYWJsZWQgPSAhKGRzU3RhdGUubW9kZSA9PT0gJ3JhbmdlJyA/ICEhKGRzU3RhdGUudmFsdWUgJiYgKGRzU3RhdGUudmFsdWUuc3RhcnQgfHwgZHNTdGF0ZS52YWx1ZS
18925lbmQpKSA6ICEhZHNTdGF0ZS52YWx1ZSk7CiAgfQogIGZ1bmN0aW9uIG9wZW5EYXRlU2hlZXQob3B0cykgewogICAgdmFyIHNoZWV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F2Yy1kYXRlLXNoZWV0Jyk7CiAgICB2YXIgYmQgPSAkKCcuYXZjIC5kcy1iYWNrZHJvcCcpOwogICAgdmFyIHRpdGxlRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXZjLWRhdGUtdGl0bGUnKTsKICAgIGlmICghc2hlZXQpIHsgcmV0dXJuOyB9CiAgICB2YXIgaG9zdCA9IHNoZWV0LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWNhbC1ob3N0XScpOwogICAgaWYgKCFob3N0KSB7IHJldHVybjsgfQogICAgZHNTdGF0ZS5tb2RlID0gb3B0cy5tb2RlOwogICAgaWYgKG9wdHMubW9kZSA9PT0gJ3JhbmdlJykgewogICAgICBkc1N0YXRlLnZhbHVlID0geyBzdGFydDogKG9wdHMudmFsdWUgJiYgb3B0cy52YWx1ZS5zdGFydCkgfHwgbnVsbCwgZW5kOiAob3B0cy52YWx1ZSAmJiBvcHRzLnZhbHVlLmVuZCkgfHwgbnVsbCB9OwogICAgICBkc1N0YXRlLmZvY3VzID0gb3B0cy5pbml0aWFsRm9jdXMgfHwgKGRzU3RhdGUudmFsdWUuc3RhcnQgJiYgIWRzU3RhdGUudmFsdWUuZW5kID8gJ2VuZCcgOiAnc3RhcnQnKTsKICAgIH0gZWxzZSB7IGRzU3RhdGUudmFsdWUgPSBvcHRzLnZhbHVlIHx8IG51bGw7IGRzU3RhdGUuZm9jdXMgPSAnc3RhcnQnOyB9CiAgICBkc1N0YXRlLmNvbmZpZyA9IG9wdHM7CiAgICBpZiAodGl0bGVFbCkgeyB0aXRsZUVsLnRleHRDb250ZW50ID0gb3B0cy50aXRsZSB8fCAob3B0cy5tb2RlID09PSAncmFuZ2UnID8gJ1BpY2sgeW91ciBkYXRlcycgOiAnUGljayBhIGRhdGUnKTsgfQogICAgZHNSZW5kZXJUYWJzKCk7CiAgICBob3N0LmlubmVySFRNTCA9ICcnOwogICAgdmFyIG1vdW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBtb3VudC5jbGFzc05hbWUgPSAncW0tY2FsJzsKICAgIGhvc3QuYXBwZW5kQ2hpbGQobW91bnQpOwogICAgZHNTdGF0ZS5jYWwgPSBtb3VudENhbGVuZGFyKG1vdW50LCB7CiAgICAgIG1vZGU6IG9wdHMubW9kZSwgdmFsdWU6IGRzU3RhdGUudmFsdWUsCiAgICAgIGZvY3VzRW5kOiBmdW5jdGlvbiAoKSB7IHJldHVybiBkc1N0YXRlLmZvY3VzID09PSAnZW5kJzsgfSwKICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uICh2KSB7CiAgICAgICAgZHNTdGF0ZS52YWx1ZSA9IHY7CiAgICAgICAgaWYgKG9wdHMubW9kZSA9PT0gJ3JhbmdlJyAmJiBkc1N0YXRlLmZvY3VzID09PSAnc3RhcnQnICYmIHYgJiYgdi5zdGFydCAmJiAhdi5lbmQpIHsgZHNTdGF0ZS5mb2N1cyA9ICdlbmQnOyB9CiAgICAgICAgZHNSZW5kZXJUYWJzKCk7IGRzVXBkYXRlRG9uZSgpOwogICAgICB9LAogICAgICBvbkNsZWFyOiBmdW5jdGlvbiAoKSB7fSwgb25Eb25lOiBmdW5jdGlvbiAoKSB7fQogICAgfSk7CiAgICBkc1VwZGF0ZURvbmUoKTsKICAgIGRzT3BlbmVyID0gKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gZG9jdW1lbnQuYm9keSkgPyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IDogbnVsbDsKICAgIHNoZWV0LmNsYXNzTGlzdC5hZGQoJ29wZW4nKTsKICAgIGlmIChiZCkgeyBiZC5jbGFzc0xpc3QuYWRkKCdvcGVuJyk7IH0KICAgIHNoZWV0LnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTsKICAgIGRzU3RhdGUub3BlbiA9IHRydWU7CiAgICBzZXRMb2NrKCk7CiAgICBpZiAoIWNvYXJzZSgpKSB7IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBpZiAoZHNTdGF0ZS5vcGVuKSB7IHNhZmVGb2N1cyhzaGVldC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1hY3Rpb249ImRzLWRvbmUiXScpKTsgfSB9LCAzMCk7IH0KICB9CiAgZnVuY3Rpb24gY2xvc2VEYXRlU2hlZXQoY29tbWl0KSB7CiAgICB2YXIgc2hlZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXZjLWRhdGUtc2hlZXQnKTsKICAgIHZhciBiZCA9ICQoJy5hdmMgLmRzLWJhY2tkcm9wJyk7CiAgICBpZiAoIXNoZWV0KSB7IHJldHVybjsgfQogICAgdmFyIG9wID0gZHNPcGVuZXIsIGhvc3QgPSAob3AgJiYgb3AuY2xvc2VzdCkgPyBvcC5jbG9zZXN0KCdbZGF0YS1hdmMtcXVvdGVdLCAjYXZjLW1vZGFsLWNvbnRlbnQsIFtkYXRhLWF2Yy1mb3JtXScpIDogbnVsbDsKICAgIHZhciBrZXkgPSAob3AgJiYgb3AuZ2V0QXR0cmlidXRlKSA/IG9wLmdldEF0dHJpYnV0ZSgnZGF0YS1waWNrZXInKSA6IG51bGwsIGVkaXQgPSAob3AgJiYgb3AuZ2V0QXR0cmlidXRlKSA/IG9wLmdldEF0dHJpYnV0ZSgnZGF0YS1lZGl0JykgOiBudWxsOwogICAgZHNPcGVuZXIgPSBudWxsOwogICAgaWYgKGNvbW1pdCAmJiBkc1N0YXRlLmNvbmZpZyAmJiB0eXBlb2YgZHNTdGF0ZS5jb25maWcub25Db21taXQgPT09ICdmdW5jdGlvbicpIHsgZHNTdGF0ZS5jb25maWcub25Db21taXQoZHNTdGF0ZS52YWx1ZSk7IH0KICAgIHNoZWV0LmNsYXNzTGlzdC5yZW1vdmUoJ29wZW4nKTsKICAgIGlmIChiZCkgeyBiZC5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyk7IH0KICAgIHNoZWV0LnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpOwogICAgZHNTdGF0ZS5vcGVuID0gZmFsc2U7IGRzU3RhdGUuY29uZmlnID0gbnVsbDsgZHNTdGF0ZS5jYWwgPSBudWxsOwogICAgc2V0TG9jaygpOwogICAgLyogdGhlIGNvbW1pdCByZS1yZW5kZXJlZCB0aGUgZm9ybTogaGFuZCBmb2N1cyBiYWNrIHRvIHRoZSAobmV3KSBkYXRlIGNlbGwgdGhhdCBvcGVuZWQgdGhlIHNoZWV0ICovCiAgICB2YXIgYmFjayA9IChvcCAmJiBkb2N1bWVudC5jb250YWlucyhvcCkpID8gb3AgOiAoaG9zdCAmJiBrZXkgPyBob3N0LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXBpY2tlcj0iJyArIGtleSArICciXScgKyAoZWRpdCA/ICdbZGF0YS1lZGl0PSInICsgZWRpdCArICciXScgOiAnJykpIDogbnVsbCk7CiAgICBpZiAoYmFjayAmJiAhY29hcnNlKCkpIHsgc2FmZUZvY3VzKGJhY2spOyB9CiAgfQoKICAvKiDilIDilIDilIAgc3VjY2VzcyBzY3JlZW5zIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqLwogIGZ1bmN0aW9uIGNhbGxMaW5lKHRleHQpIHsKICAgIHJldHVybiAnPGRpdiBjbGFzcz0iZnN4LWNhbGwiPjxzcGFuIGNsYXNzPSJpYyI+JyArIElDT04ucGhvbmUgKyAnPC9zcGFuPjxzcGFuPicgKyBlc2ModGV4dCB8fCAnTmVlZCB1cyBub3c/JykgKyAnIDxhIGhyZWY9InRlbDonICsgZXNjKFRFTCkgKyAnIiBkYXRhLXRyYWNrLWV2ZW50PSJxdW90ZV9zdWNjZXNzX2NhbGxfY2xpY2siPicgKyBlc2MoUEhPTkUpICsgJzwvYT48L3NwYW4+PC9kaXY+JzsKICB9CiAgZnVuY3Rpb24gc3VtUm93cyhyb3dzKSB7CiAgICB2Y
1892XIgaCA9ICc8ZGl2IGNsYXNzPSJmc3gtc3VtIj4nOwogICAgcm93cy5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IGlmIChyLnYpIHsgaCArPSAnPGRpdiBjbGFzcz0iZnN4LXN1bS1yb3ciPjxzcGFuIGNsYXNzPSJmc3gtc3VtLWsiPicgKyBlc2Moci5rKSArICc8L3NwYW4+PHNwYW4gY2xhc3M9ImZzeC1zdW0tdiI+JyArIGVzYyhyLnYpICsgJzwvc3Bhbj48L2Rpdj4nOyB9IH0pOwogICAgcmV0dXJuIGggKyAnPC9kaXY+JzsKICB9CiAgZnVuY3Rpb24gc3RlcHNIdG1sKHN0ZXBzKSB7CiAgICByZXR1cm4gJzxkaXYgY2xhc3M9ImZzeC1uZXh0Ij4nICsgc3RlcHMubWFwKGZ1bmN0aW9uICh0LCBpKSB7IHJldHVybiAnPGRpdiBjbGFzcz0iZnN4LXN0ZXAiPjxzcGFuIGNsYXNzPSJuIj4nICsgKGkgKyAxKSArICc8L3NwYW4+PHNwYW4gY2xhc3M9InQiPicgKyBib2xkaWZ5KHQpICsgJzwvc3Bhbj48L2Rpdj4nOyB9KS5qb2luKCcnKSArICc8L2Rpdj4nOwogIH0KICAvKiBkZXNrdG9wIHJlY2VpcHQgY2FyZCAoRGVzdCAzLjAgLmZzeCkgKi8KICBmdW5jdGlvbiBzdWNjZXNzRGVza3RvcChvKSB7CiAgICBpZiAoby53aWRlKSB7CiAgICAgIC8qIGluLXBsYWNlIHN1Y2Nlc3MgZm9yIHRoZSBzdGF0aWMgZm9ybXM6IGxhbmRzIGluIHRoZSBmb3JtJ3Mgb3duIGNvbHVtbiwgbGFuZHNjYXBlIHdoZW4gdGhlcmUncyByb29tICovCiAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0iZnN4IGZzeC13aWRlJyArIChvLmRhcmsgPyAnIGRhcmsnIDogJycpICsgJyI+PGRpdiBjbGFzcz0iZnN4LWwiPicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJmc3gtbWFyayI+PHNwYW4gY2xhc3M9InJpbmciPjwvc3Bhbj48c3BhbiBjbGFzcz0icmluZzIiPjwvc3Bhbj48c3BhbiBjbGFzcz0iZGlzYyI+JyArIElDT04uY2hlY2sgKyAnPC9zcGFuPjwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJmc3gtZXllYnJvdyI+JyArIGVzYyhvLmV5ZWJyb3cpICsgJzwvZGl2PjxoMz4nICsgZXNjKG8uaGVhZGluZykgKyAnPC9oMz48cCBjbGFzcz0iZnN4LXN1YiI+JyArIGVzYyhvLnN1YikgKyAnPC9wPicgKyAoby5zdGVwc0xlZnQgJiYgby5zdGVwcyA/IHN0ZXBzSHRtbChvLnN0ZXBzKSA6ICcnKSArIGNhbGxMaW5lKG8uY2FsbCkgKyAnPC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImZzeC1yIj4nICsgKG8ucmVjZWlwdCB8fCAnJykgKyAoby5yb3dzID8gc3VtUm93cyhvLnJvd3MpIDogJycpICsgKCFvLnN0ZXBzTGVmdCAmJiBvLnN0ZXBzID8gc3RlcHNIdG1sKG8uc3RlcH
1892MpIDogJycpICsgJzwvZGl2PjwvZGl2Pic7CiAgICB9CiAgICByZXR1cm4gJzxkaXYgY2xhc3M9ImZzeCcgKyAoby5kYXJrID8gJyBkYXJrJyA6ICcnKSArICciPicgKwogICAgICAnPGRpdiBjbGFzcz0iZnN4LW1hcmsiPjxzcGFuIGNsYXNzPSJyaW5nIj48L3NwYW4+PHNwYW4gY2xhc3M9InJpbmcyIj48L3NwYW4+PHNwYW4gY2xhc3M9ImRpc2MiPicgKyBJQ09OLmNoZWNrICsgJzwvc3Bhbj48L2Rpdj4nICsKICAgICAgJzxkaXYgY2xhc3M9ImZzeC1leWVicm93Ij4nICsgZXNjKG8uZXllYnJvdykgKyAnPC9kaXY+JyArCiAgICAgICc8aDM+JyArIGVzYyhvLmhlYWRpbmcpICsgJzwvaDM+JyArCiAgICAgICc8cCBjbGFzcz0iZnN4LXN1YiI+JyArIGVzYyhvLnN1YikgKyAnPC9wPicgKwogICAgICAoby5yZWNlaXB0IHx8ICcnKSArIChvLnJvd3MgPyBzdW1Sb3dzKG8ucm93cykgOiAnJykgKwogICAgICAoby5zdGVwcyA/IHN0ZXBzSHRtbChvLnN0ZXBzKSA6ICcnKSArCiAgICAgIGNhbGxMaW5lKG8uY2FsbCkgKyAnPC9kaXY+JzsKICB9CiAgLyogbW9iaWxlIGlubGluZSAoRGVzdCAzLjAgLm0tc3VjY2VzcyArIHN1bW1hcnkpICovCiAgZnVuY3Rpb24gc3VjY2Vzc01vYmlsZShvKSB7CiAgICByZXR1cm4gJzxkaXYgY2xhc3M9Im0tc3VjY2VzcycgKyAoby5kYXJrID8gJyBkYXJrJyA6ICcnKSArICciPicgKwogICAgICAnPGRpdiBjbGFzcz0ibS1zdWNjZXNzLW1hcmsiPjxkaXYgY2xhc3M9InJpbmciPjwvZGl2PjxkaXYgY2xhc3M9ImRpc2MiPicgKyBJQ09OLmNoZWNrVGhpbiArICc8L2Rpdj48L2Rpdj4nICsKICAgICAgJzxoMyBjbGFzcz0ibS1zdWNjZXNzLWgiPicgKyBlc2Moby5oZWFkaW5nKSArICc8L2gzPicgKwogICAgICAnPHAgY2xhc3M9Im0tc3VjY2Vzcy1zdWIiPicgKyBlc2Moby5zdWIpICsgJzwvcD4nICsKICAgICAgKG8ucm93cyA/IHN1bVJvd3Moby5yb3dzKSA6ICcnKSArCiAgICAgIGNhbGxMaW5lKG8uY2FsbCkgKyAnPC9kaXY+JzsKICB9CiAgZnVuY3Rpb24gY29kZUZvcih0eHQsIGZiKSB7CiAgICBpZiAoIXR4dCkgeyByZXR1cm4gZmI7IH0KICAgIHZhciBtID0gdHh0Lm1hdGNoKC9cKChbQS1aYS16XXszfSlcKS8pOwogICAgaWYgKG0pIHsgcmV0dXJuIG1bMV0udG9VcHBlckNhc2UoKTsgfQogICAgdmFyIGxldHRlcnMgPSB0eHQucmVwbGFjZSgvW15BLVphLXpdL2csICcnKTsKICAgIHJldHVybiAobGV0dGVycy5zbGljZSgwLCAzKSB8fCBmYikudG9VcHBlckNhc2UoKTsKICB9CiAgZnVuY3Rpb24gcGxhY2VGb3IodHh0LCBmYikgeyByZXR1cm4gdHh0ID8gdHh0LnJlcGxhY2UoL1xzKlwoW0EtWmEtel17M31cKVxzKi8sICcnKS50cmltKCkgOiBmYjsgfQogIGZ1bmN0aW9uIHJvdXRlUmVjZWlwdChzdCkgewogICAgdmFyIGZyb21UeHQsIHRvVHh0OwogICAgaWYgKHN0LnRhYiA9PT0gJ211bHRpJykgeyB2YXIgZiA9IHN0LmxlZ3NbMF0gfHwge30sIGwgPSBzdC5sZWdzW3N0LmxlZ3MubGVuZ3RoIC0gMV0gfHwge307IGZyb21UeHQgPSBmLmZyb207IHRvVHh0ID0gbC50bzsgfQogICAgZWxzZSB7IGZyb21UeHQgPSBzdC5mcm9tOyB0b1R4dCA9IHN0LnRvOyB9CiAgICB2YXIgdHJpcExhYmVsID0gc3QudGFiID09PSAnb25ld2F5JyA/ICdPbmUgd2F5JyA6IChzdC50YWIgPT09ICdtdWx0aScgPyAnTXVsdGktY2l0eScgOiAnUm91bmQgdHJpcCcpOwogICAgdmFyIGRlcEQgPSBwYXJzZUlTTyhzdC5kZXBhcnQpLCByZXREID0gcGFyc2VJU08oc3QucmV0KSwgZGF0ZUxhYmVsOwogICAgaWYgKHN0LnRhYiA9PT0gJ211bHRpJykgeyBkYXRlTGFiZWwgPSBzdC5sZWdzLmxlbmd0aCArICcgbGVncyc7IH0KICAgIGVsc2UgaWYgKHN0LnRhYiA9PT0gJ3JvdW5kdHJpcCcpIHsgZGF0ZUxhYmVsID0gKCFkZXBEICYmICFyZXREKSA/ICdGbGV4aWJsZScgOiAoKGRlcEQgPyBmbXRTaG9ydChkZXBEKSA6ICdUQkQnKSArICcg4oCTICcgKyAocmV0RCA/IGZtdFNob3J0KHJldEQpIDogJ1RCRCcpKTsgfQogICAgZWxzZSB7IGRhdGVMYWJlbCA9IGRlcEQgPyBmbXRMb25nKGRlcEQpIDogJ0ZsZXhpYmxlJzsgfQogICAgdmFyIHBheCA9IHBhcnNlSW50KHN0LnBheCwgMTApIHx8IDA7CiAgICB2YXIgcGF4TGFiZWwgPSBwYXggPyBwYXggKyAocGF4ID09PSAxID8gJyBndWVzdCcgOiAnIGd1ZXN0cycpIDogJ1RCRCc7CiAgICByZXR1cm4gJzxkaXYgY2xhc3M9ImZzeC1yZWNlaXB0Ij48ZGl2IGNsYXNzPSJmc3gtcm91dGUiPicgKwogICAgICAnPGRpdiBjbGFzcz0iZnN4LXBvcnQiPjxkaXYgY2xhc3M9ImNvZGUiPicgKyBlc2MoY29kZUZvcihmcm9tVHh0LCAnwrfCt8K3JykpICsgJzwvZGl2PjxkaXYgY2xhc3M9InBsYWNlIj4nICsgZXNjKHBsYWNlRm9yKGZyb21UeHQsICdZb3VyIGNpdHknKSkgKyAnPC9kaXY+PC9kaXY+JyArCiAgICAgICc8ZGl2IGNsYXNzPSJmc3gtcGF0aCI+JyArIElDT04uamV0ICsgJzwvZGl2PicgKwogICAgICAnPGRpdiBjbGFzcz0iZnN4LXBvcnQgdG8iPjxkaXYgY2xhc3M9ImNvZGUiPicgKyBlc2MoY29kZUZvcih0b1R4dCwgJ8K3wrfCtycpKSArICc8L2Rpdj48ZGl2IGNsYXNzPSJwbGFjZSI+JyArIGVzYyhwbGFjZUZvcih0b1R4dCwgJ1lvdXIgZGVzdGluYXRpb24nKSkgKyAnPC9kaXY+PC9kaXY+PC9kaXY+JyArCiAgICAgICc8ZGl2IGNsYXNzPSJmc3gtbWV0YSI+PGRpdiBjbGFzcz0ibSI+PGRpdiBjbGFzcz0ibCI+VHJpcDwvZGl2PjxkaXYgY2xhc3M9InYiPicgKyB0cmlwTGFiZWwgKyAnPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0ibSI+PGRpdiBjbGFzcz0ibCI+V2hlbjwvZGl2PjxkaXYgY2xhc3M9InYiPicgKyBlc2MoZGF0ZUxhYmVsKSArICc8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJtIj48ZGl2IGNsYXNzPSJsIj5QYXJ0eTwvZGl2PjxkaXYgY2xhc3M9InYiPicgKyBlc2MocGF4TGFiZWwpICsgJzwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pic7CiAgfQogIHZhciBRVU9URV9TVEVQUyA9IFsnKkEgY2hhcnRlciBhZHZpc29yKiByZXZpZXdzIHlvdXIgcm91dGUgYW5kIG1hdGNoZXMgYWlyY3JhZnQuJywgJ1lvdeKAmWxsIGdldCBhbiAqYWxsLWluIHF1b3RlKiBieSBlbWFpbCDigJQgbm8gaGlkZGVuIGZlZXMuJywgJ0FwcHJvdmUsIGFuZCB3ZSBoYW5kbGUgKmV2ZXJ5IGRldGFpbCogdGhyb3VnaCBsYW5kaW5nLiddOwogIGZ1bmN0aW9uIHF1b3RlUm93cyhzdCkgewogICAgdmFyIHJvd3MgPSBbeyBrOiAnVHJpcCcsIHY6IHN0LnRhYiA9PT0gJ29uZXdheScgPyAnT25lIHdheScgOiAoc3QudGFiID09PSAnbXVsdGknID8gJ011bHRpLWNpdHknIDogJ1JvdW5kIHRyaXAnKSB9XTsKICAgIGlmIChzdC50YWIgPT09ICdtdWx0aScpIHsKICAgICAgc3QubGVncy5mb3JFYWNoKGZ1bmN0aW9uIChsLCBpKSB7IHZhciBkID0gcGFyc2VJU08obC5kYXRlKTsgcm93cy5wdXNoKHsgazogJ0xlZyAnICsgKGkgKyAxKSwgdjogKGwuZnJvbSB8fCAn4oCUJykgKyAnIOKGkiAnICsgKGwudG8gfHwgJ+KAlCcpICsgJyDCtyAnICsgKGQgPyBmbXRMb25nKGQpIDogJ0RhdGUgVEJEJykgKyAobC50aW1lID8gJyDCtyAnICsgbC50aW1lIDogJycpIH0pOyB9KTsKICAgIH0gZWxzZSB7CiAgICAgI
1892HJvd3MucHVzaCh7IGs6ICdSb3V0ZScsIHY6IChzdC5mcm9tIHx8ICfigJQnKSArICcg4oaSICcgKyAoc3QudG8gfHwgJ+KAlCcpIH0pOwogICAgICB2YXIgcyA9IHBhcnNlSVNPKHN0LmRlcGFydCksIGUgPSBwYXJzZUlTTyhzdC5yZXQpOwogICAgICBpZiAoc3QudGFiID09PSAncm91bmR0cmlwJykgeyByb3dzLnB1c2goeyBrOiAnRGF0ZXMnLCB2OiAocyA/IGZtdFNob3J0KHMpIDogJ1RCRCcpICsgJyDihpIgJyArIChlID8gZm10U2hvcnQoZSkgOiAnVEJEJykgKyAocyA/ICcsICcgKyBzLmdldEZ1bGxZZWFyKCkgOiAnJykgfSk7IH0KICAgICAgZWxzZSB7IHJvd3MucHVzaCh7IGs6ICdEYXRlJywgdjogcyA/IGZtdExvbmcocykgOiAnVEJEJyB9KTsgfQogICAgICBpZiAoc3QudGltZSkgeyByb3dzLnB1c2goeyBrOiBzdC50YWIgPT09ICdyb3VuZHRyaXAnICYmIHN0LnJldFRpbWUgPyAnRGVwYXJ0JyA6ICdUaW1lJywgdjogc3QudGltZSB9KTsgfQogICAgICBpZiAoc3QudGFiID09PSAncm91bmR0cmlwJyAmJiBzdC5yZXRUaW1lKSB7IHJvd3MucHVzaCh7IGs6ICdSZXR1cm4nLCB2OiBzdC5yZXRUaW1lIH0pOyB9CiAgICB9CiAgICBpZiAoc3QucGF4KSB7IHJvd3MucHVzaCh7IGs6ICdQYXgnLCB2OiBTdHJpbmcoc3QucGF4KSB9KTsgfQogICAgcm93cy5wdXNoKHsgazogJ0NvbnRhY3QnLCB2OiAoc3QubmFtZSB8fCAnJykgKyAnIMK3ICcgKyAoc3QuZW1haWwgfHwgJycpICsgJyDCtyAnICsgKHN0LnBob25lIHx8ICcnKSB9KTsKICAgIHJldHVybiByb3dzOwogIH0KCiAgLyog4pSA4pSA4pSAIHF1b3RlIGZvcm0gZW5naW5lIChBYm91dC9Db250YWN0IGNhcmQgKyBRdW90ZSBwYWdlIHN0ZXBzKSDilIDilIDilIAgKi8KICAvKiBpY29uIHNldCBvZiB0aGUgIlF1b3RlIEZvcm0gUG9saXNoZWQiIG1vY2t1cCAob3duZXIsIDIwMjYtMDgtMjEpOyBzaGFyZWQgYnkgdGhlIHN0YXJ0ZXIgYmFyICsgbW9kYWwgZm9ybSAqLwogIHZhciBRUCA9IHsKICAgIHNlbmQ6ICc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS44IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGQ9Ik0yMiAyTDExIDEzIi8+PHBhdGggZD0iTTIyIDJsLTcgMjAtNC05LTktNCAyMC03eiIvPjwvc3ZnPicsCiAgICBwaW46ICc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS44IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGQ9Ik0yMSAxMGMwIDctOSAxMy05IDEzcy05LTYtOS0xM2E5IDkgMCAwIDEgMTggMHoiLz48Y2lyY2xlIGN4PSIxMiIgY3k9IjEwIiByPSIzIi8+PC9zdmc+JywKICAgIGNhbDogJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHJlY3QgeD0iMyIgeT0iNCIgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiByeD0iMiIvPjxsaW5lIHgxPSIxNiIgeTE9IjIiIHgyPSIxNiIgeTI9IjYiLz48bGluZSB4MT0iOCIgeTE9IjIiIHgyPSI4IiB5Mj0iNiIvPjxsaW5lIHgxPSIzIiB5MT0iMTAiIHgyPSIyMSIgeTI9IjEwIi8+PC9zdmc+JywKICAgIGNsb2NrOiAnPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuOCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIvPjxwb2x5bGluZSBwb2ludHM9IjEyIDYgMTIgMTIgMTYgMTQiLz48L3N2Zz4nLAogICAgdXNlcjogJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTIwIDIxdi0yYTQgNCAwIDAgMC00LTRIOGE0IDQgMCAwIDAtNCA0djIiLz48Y2lyY2xlIGN4PSIxMiIgY3k9IjciIHI9IjQiLz48L3N2Zz4nLAogICAgbWFpbDogJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHJlY3QgeD0iMiIgeT0iNCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjE2IiByeD0iMiIvPjxwb2x5bGluZSBwb2ludHM9IjIyIDYgMTIgMTMgMiA2Ii8+PC9zdmc+JywKICAgIHBob25lOiAnPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuOCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNMjIgMTYuOTJ2M2EyIDIgMCAwIDEtMi4xOCAyIDE5Ljc5IDE5Ljc5IDAgMCAxLTguNjMtMy4wNyAxOS41IDE5LjUgMCAwIDEtNi02IDE5Ljc5IDE5Ljc5IDAgMCAxLTMuMDctOC42N0EyIDIgMCAwIDEgNC4xMSAyaDNhMiAyIDAgMCAxIDIgMS43MmMuMTI3Ljk2LjM2MSAxLjkwMy43IDIuODFhMiAyIDAgMCAxLS40NSAyLjExTDguMDkgOS45MWExNiAxNiAwIDAgMCA2IDZsMS4yNy0xLjI3YTIgMiAwIDAgMSAyLjExLS40NWMuOTA3LjMzOSAxLjg1LjU3MyAyLjgxLjdBMiAyIDAgMCAxIDIyIDE2LjkyeiIvPjwvc3ZnPicsCiAgICBzd2FwOiAnPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuOCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cG9seWxpbmUgcG9pbnRzPSIxNyAxIDIxIDUgMTcgOSIvPjxwYXRoIGQ9Ik0zIDExVjlhNCA0IDAgMCAxIDQtNGgxNCIvPjxwb2x5bGluZSBwb2ludHM9IjcgMjMgMyAxOSA3IDE1Ii8+PHBhdGggZD0iTTIxIDEzdjJhNCA0
1892IDAgMCAxLTQgNEgzIi8+PC9zdmc+JywKICAgIG1pbnVzOiAnPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+PGxpbmUgeDE9IjUiIHkxPSIxMiIgeDI9IjE5IiB5Mj0iMTIiLz48L3N2Zz4nLAogICAgcGx1czogJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiPjxsaW5lIHgxPSIxMiIgeTE9IjUiIHgyPSIxMiIgeTI9IjE5Ii8+PGxpbmUgeDE9IjUiIHkxPSIxMiIgeDI9IjE5IiB5Mj0iMTIiLz48L3N2Zz4nLAogICAgY2hldjogJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwb2x5bGluZSBwb2ludHM9IjYgOSAxMiAxNSAxOCA5Ii8+PC9zdmc+JywKICAgIG5vdGU6ICc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS44IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGQ9Ik0xMiAyMGg5Ii8+PHBhdGggZD0iTTE2LjUgMy41YTIuMSAyLjEgMCAwIDEgMyAzTDcgMTlsLTQgMSAxLTRMMTYuNSAzLjV6Ii8+PC9zdmc+JywKICAgIHRhZzogJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTIwLjU5IDEzLjQxbC03LjE3IDcuMTdhMiAyIDAgMCAxLTIuODMgMEwyIDEyVjJoMTBsOC41OSA4LjU5YTIgMiAwIDAgMSAwIDIuODJ6Ii8+PGxpbmUgeDE9IjciIHkxPSI3IiB4Mj0iNy4wMSIgeTI9IjciLz48L3N2Zz4nLAogICAgYXJyb3c6ICc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMi4yIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxsaW5lIHgxPSI1IiB5MT0iMTIiIHgyPSIxOSIgeTI9IjEyIi8+PHBvbHlsaW5lIHBvaW50cz0iMTIgNSAxOSAxMiAxMiAxOSIvPjwvc3ZnPicKICB9OwogIGZ1bmN0aW9uIG1vdW50UXVvdGUocm9vdEVsLCBvcHRzKSB7CiAgICBpZiAocm9vdEVsLl9fYXZjKSB7IHJldHVybjsgfQogICAgcm9vdEVsLl9fYXZjID0gdHJ1ZTsKICAgIHZhciB2YXJpYW50ID0gcm9vdEVsLmdldEF0dHJpYnV0ZSgnZGF0YS1hdmMtcXVvdGUnKTsKICAgIHZhciBtb2JpbGUgPSAob3B0cyAmJiBvcHRzLm1vYmlsZSAhPSBudWxsKSA/ICEhb3B0cy5tb2JpbGUgOiBpbk1vYmlsZVRyZWUocm9vdEVsKTsKICAgIHZhciBzdGVwcyA9IHZhcmlhbnQgPT09ICdzdGVwcyc7CiAgICAvKiBUaGUgUXVvdGUgcGFnZSBmb3JtIGlzIHNpbmdsZS1zdGVwIChvd25lciBkZWNpc2lvbiAyMDI2LTA4LTIxKTogdHJpcAogICAgICAgZGV0YWlscywgcGFzc2VuZ2VycywgdGhlbiBjb250YWN0IGRldGFpbHMgaW4gb25lIGNhcmQg4oCUIG5vICJOZXh0IFN0ZXAiCiAgICAgICBnYXRlIGFuZCBubyByZXZpZXcgY2FyZDsgdGhlIHN1Ym1pdHRlZCBkZXRhaWxzIHNob3cgb24gdGhlIHN1Y2Nlc3Mgc2NyZWVuLiAqLwogICAgdmFyIHN0ID0gewogICAgICB0YWI6ICdyb3VuZHRyaXAnLCBmcm9tOiAnJywgdG86ICcnLCBkZXBhcnQ6ICcnLCByZXQ6ICcnLCB0aW1lOiAnJywgcmV0VGltZTogJycsIHBheDogc3RlcHMgPyAxIDogMiwKICAgICAgbGVnczogW3sgZnJvbTogJycsIHRvOiAnJywgZGF0ZTogJycsIHRpbWU6ICcnIH0sIHsgZnJvbTogJycsIHRvOiAnJywgZGF0ZTogJycsIHRpbWU6ICcnIH1dLAogICAgICBmaXJzdDogJycsIGxhc3Q6ICcnLCBuYW1lOiAnJywgcGhvbmU6ICcnLCBlbWFpbDogJycsIHJlZmVycmFsOiAnJywgbm90ZXM6ICcnLCBmbHlOb3c6ICcnLCBmbHlGcmVxOiAnJywgc3RlcDogMQogICAgfTsKICAgIHZhciBzdWJtaXR0ZWQgPSBmYWxzZSwgc2VuZGluZyA9IGZhbHNlLCBlcnJvck1zZyA9ICcnLCBsb2NrZWRIID0gMDsKCiAgICBmdW5jdGlvbiBkYXRlQnRuKGxhYmVsLCBwaWNrZXIsIGVkaXQsIHBoKSB7CiAgICAgIHJldHVybiAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJxZi1pbnB1dCIgZGF0YS1xPSJwaWNrZXIiIGRhdGEtcGlja2VyPSInICsgcGlja2VyICsgJyInICsgKGVkaXQgPyAnIGRhdGEtZWRpdD0iJyArIGVkaXQgKyAnIicgOiAnJykgKyAnPicgKyAobGFiZWwgPyAnPHNwYW4gY2xhc3M9ImQtdmFsIj4nICsgZXNjKGxhYmVsKSArICc8L3NwYW4+JyA6ICc8c3BhbiBjbGFzcz0icGgiPicgKyBlc2MocGggfHwgJ1NlbGVjdCBkYXRlJykgKyAnPC9zcGFuPicpICsgSUNPTi5jYWxMaW5lICsgJzwvYnV0dG9uPic7CiAgICB9CiAgICBmdW5jdGlvbiBmaWVsZChsYWJlbCwgaW5uZXIsIGNscykgeyByZXR1cm4gJzxkaXYnICsgKGNscyA/ICcgY2xhc3M9IicgKyBjbHMgKyAnIicgOiAnJykgKyAnPjxsYWJlbCBjbGFzcz0icWYtbGFiZWwiPicgKyBsYWJlbCArICc8L2xhYmVsPicgKyBpbm5lciArICc8L2Rpdj4nOyB9CiAgICBmdW5jdGlvbiBpbnB1dChuYW1lLCBwaCwgdHlwZSwgdmFsKSB7IHJldHVybiAnPGlucHV0IGNsYXNzPSJxZi1pbnB1dCInICsgKHR5cGUgPyAnIHR5cGU9IicgKyB0eXBlICsgJyInIDogJycpICsgJyBkYXRhLWZpZWxkPSInICsgbmFtZSArICciIHBsYWNlaG9sZGVyPSInICsgZXNjKHBoKSArICciIHZhbHVlPSInICsgZXNjKHZhbCkgKyAnIj4nOyB9CiAgICBmdW5jdGlvbiBzZWxlY3QobmFtZSwgb3B0cywgdmFsKSB7CiAgICAgIHZhciBoID0gJzxkaXYgY2xhc3M9InFmLXNlbGVjdCI+PHNlbGVjdCBjbGFzcz0icWYtaW5wdXQnICsgKHZhbCA/ICcnIDogJyBlbXB0eScpICsgJyIgZGF0YS1maWVsZD0iJyArIG5hbWUgKyAnIj48b3B0aW9uIHZhbHVlPSIiIGRpc2FibGVkJyArICh2YWwgPyAnJyA6ICcgc2VsZWN0ZWQnKSArICc+LS0gc2VsZWN0IC0tPC9vcHRpb24+JzsKICAgICAgb3B0cy5mb3JFYWNoKGZ1bmN0aW9uIChvKSB7IGggKz0gJzxvcHRpb24nICsgKG8gPT09IHZhbCA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz4nICsgZXNjKG8pICsgJzwvb3B0aW9uPic7IH0pOwogICAgICByZXR1cm4gaCArICc8L3NlbGVjdD4nICsgSUNPTi5jaGV2ICsgJzwvZGl2Pic7CiAgICB9CiAgICBmdW5jdGlvbiBwYXhTdGVwcGVyKGxhYmVsKSB7CiAgICAgI
1892HJldHVybiAnPGRpdj48bGFiZWwgY2xhc3M9InFmLWxhYmVsIj4nICsgbGFiZWwgKyAnPC9sYWJlbD48ZGl2IGNsYXNzPSJxZi1wYXgiPjxidXR0b24gdHlwZT0iYnV0dG9uIiBkYXRhLXE9InBheC1taW51cyIgYXJpYS1sYWJlbD0iRmV3ZXIgcGFzc2VuZ2VycyI+4oiSPC9idXR0b24+PHNwYW4gY2xhc3M9InZhbCI+JyArIHN0LnBheCArICc8L3NwYW4+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtcT0icGF4LXBsdXMiIGFyaWEtbGFiZWw9Ik1vcmUgcGFzc2VuZ2VycyI+KzwvYnV0dG9uPjwvZGl2PjwvZGl2Pic7CiAgICB9CiAgICBmdW5jdGlvbiBsZWdzSHRtbCgpIHsKICAgICAgdmFyIGggPSAnPGRpdiBjbGFzcz0icWYtbGVncyI+PGxhYmVsIGNsYXNzPSJxZi1sYWJlbCI+SXRpbmVyYXJ5PC9sYWJlbD4nOwogICAgICBzdC5sZWdzLmZvckVhY2goZnVuY3Rpb24gKGxlZywgaSkgewogICAgICAgIHZhciBkID0gcGFyc2VJU08obGVnLmRhdGUpOwogICAgICAgIGggKz0gJzxkaXYgY2xhc3M9InFmLWxlZyIgZGF0YS1sZWc9IicgKyBpICsgJyI+PGRpdiBjbGFzcz0icWYtbGVnLW4iPicgKyAoaSArIDEpICsgJzwvZGl2Pic7CiAgICAgICAgaWYgKHN0LmxlZ3MubGVuZ3RoID4gMikgeyBoICs9ICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InFmLWxlZy1ybSIgZGF0YS1xPSJsZWctcmVtb3ZlIiBkYXRhLWlkeD0iJyArIGkgKyAnIiBhcmlhLWxhYmVsPSJSZW1vdmUgbGVnIj4nICsgSUNPTi54ICsgJzwvYnV0dG9uPic7IH0KICAgICAgICBoICs9ICc8ZGl2IGNsYXNzPSJxZi1sZWctcGFpciBhIj48ZGl2IGNsYXNzPSJxZi1sZWctY2VsbCI+JyArIElDT04ucGxhbmUgKyAnPGlucHV0IGRhdGEtbGVnLWZpZWxkPSJmcm9tIiBkYXRhLWxlZy1pZHg9IicgKyBpICsgJyIgcGxhY2Vob2xkZXI9IkZyb20iIHZhbHVlPSInICsgZXNjKGxlZy5mcm9tKSArICciPjwvZGl2PicgKwogICAgICAgICAgJzxkaXYgY2xhc3M9InFmLWxlZy1jZWxsIj4nICsgSUNPTi5wbGFuZSArICc8aW5wdXQgZGF0YS1sZWctZmllbGQ9InRvIiBkYXRhLWxlZy1pZHg9IicgKyBpICsgJyIgcGxhY2Vob2xkZXI9IlRvIiB2YWx1ZT0iJyArIGVzYyhsZWcudG8pICsgJyI+PC9kaXY+PC9kaXY+JyArCiAgICAgICAgICAnPGRpdiBjbGFzcz0icWYtbGVnLXBhaXIiPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icWYtbGVnLWNlbGwiIGRhdGEtcT0icGlja2VyIiBkYXRhLXBpY2tlcj0ibGVnLScgKyBpICsgJyI+JyArIElDT04uY2FsICsgJzxzcGFuIGNsYXNzPSJkdicgKyAoZCA/ICcnIDogJyBwaCcpICsgJyI+JyArIChkID8gZXNjKGZtdExvbmcoZCkpIDogJ0RhdGUnKSArICc8L3NwYW4+PC9idXR0b24+JyArCiAgICAgICAgICAnPGRpdiBjbGFzcz0icWYtbGVnLWNlbGwiPicgKyBJQ09OLmNsb2NrICsgJzxpbnB1dCBkYXRhLWxlZy1maWVsZD0idGltZSIgZGF0YS1sZWctaWR4PSInICsgaSArICciIHBsYWNlaG9sZGVyPSJUaW1lIiB2YWx1ZT0iJyArIGVzYyhsZWcudGltZSkgKyAnIj48L2Rpdj48L2Rpdj48L2Rpdj4nOwogICAgICB9KTsKICAgICAgaWYgKHN0LmxlZ3MubGVuZ3RoIDwgNSkgeyBoICs9ICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InFmLWFkZCIgZGF0YS1xPSJsZWctYWRkIj4nICsgSUNPTi5wbHVzICsgJ0FkZCBhbm90aGVyIGxlZzwvYnV0dG9uPic7IH0KICAgICAgcmV0dXJuIGggKyAnPC9kaXY+JzsKICAgIH0KICAgIGZ1bmN0aW9uIHRyaXBIdG1sKCkgewogICAgICB2YXIgaCA9ICc8ZGl2IGNsYXNzPSJxZi10YWJzIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iVHJpcCB0eXBlIj4nOwogICAgICBbWydvbmV3YXknLCAnT25lIFdheSddLCBbJ3JvdW5kdHJpcCcsICdSb3VuZCBUcmlwJ10sIFsnbXVsdGknLCAnTXVsdGktQ2l0eSddXS5mb3JFYWNoKGZ1bmN0aW9uIChwKSB7CiAgICAgICAgaCArPSAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJxZi10YWInICsgKHN0LnRhYiA9PT0gcFswXSA/ICcgYWN0aXZlJyA6ICcnKSArICciIGRhdGEtcT0idGFiIiBkYXRhLXRhYj0iJyArIHBbMF0gKyAnIiBhcmlhLXByZXNzZWQ9IicgKyAoc3QudGFiID09PSBwWzBdKSArICciPicgKyBwWzFdICsgJzwvYnV0dG9uPic7CiAgICAgIH0pOwogICAgICBoICs9ICc8L2Rpdj4nOwogICAgICB2YXIgZGVwRCA9IHBhcnNlSVNPKHN0LmRlcGFydCksIHJldEQgPSBwYXJzZUlTTyhzdC5yZXQpOwogICAgICB2YXIgcmV0Q2VsbCA9IHN0LnRhYiA9PT0gJ3JvdW5kdHJpcCcKICAgICAgICA/IGZpZWxkKCdSZXR1cm5pbmcnLCBkYXRlQnRuKGZtdExvbmcocmV0RCksICdydCcsICdlbmQnKSkKICAgICAgICA6ICc8ZGl2PjxsYWJlbCBjbGFzcz0icWYtbGFiZWwgbXV0ZWQiPlJldHVybmluZzwvbGFiZWw+PGRpdiBjbGFzcz0icWYtb3ciPk9uZS13YXkgdHJpcDwvZGl2PjwvZGl2Pic7CiAgICAgIGlmIChzdC50YWIgIT09ICdtdWx0aScpIHsKICAgICAgICBoICs9ICc8ZGl2IGNsYXNzPSJxZi1yb3cyIj4nICsgZmllbGQoRlJPTV9MQUJFTCwgaW5wdXQoJ2Zyb20nLCAnQ2l0eSBvciBhaXJwb3J0JywgbnVsbCwgc3QuZnJvbSkpICsgZmllbGQoJ0dvaW5nIHRvJywgaW5wdXQoJ3RvJywgJ0NpdHkgb3IgYWlycG9ydCcsIG51bGwsIHN0LnRvKSkgKyAnPC9kaXY+JzsKICAgICAgICBpZiAoc3RlcHMpIHsKICAgICAgICAgIGggKz0gJzxkaXYgY2xhc3M9InFmLXJvdzMiPicgKyBmaWVsZCgnRGVwYXJ0dXJlIGRhdGUnLCBkYXRlQnRuKGZtdExvbmcoZGVwRCksIHN0LnRhYiA9PT0gJ3JvdW5kdHJpcCcgPyAncnQnIDogJ293Jywgc3QudGFiID09PSAncm91bmR0cmlwJyA/ICdzdGFydCcgOiBudWxsKSkgKwogICAgICAgICAgICBmaWVsZCgnRGVwYXJ0dXJlIHRpbWUnLCBpbnB1dCgndGltZScsICdlLmcuIDk6MDAgYW0nLCBudWxsLCBzdC50aW1lKSkgKyByZXRDZWxsICsgJzwvZGl2Pic7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGggKz0gJzxkaXYgY2xhc3M9InFmLXJvdzMiPicgKyBmaWVsZCgnRGVwYXJ0aW5nJywgZGF0ZUJ0bihmbXRMb25nKGRlcEQpLCBzdC50YWIgPT09ICdyb3VuZHRyaXAnID8gJ3J0JyA6ICdvdycsIHN0LnRhYiA9PT0gJ3JvdW5kdHJpcCcgPyAnc3RhcnQnIDogbnVsbCkpICsgcmV0Q2VsbCArIHBheFN0ZXBwZXIoJ1Bhc3NlbmdlcnMnKSArICc8L2Rpdj4nOwogICAgICAgI
1892H0KICAgICAgfSBlbHNlIHsKICAgICAgICBoICs9IGxlZ3NIdG1sKCk7CiAgICAgICAgaWYgKCFzdGVwcykgeyBoICs9ICc8ZGl2IGNsYXNzPSJxZi1yb3czIj4nICsgcGF4U3RlcHBlcignUGFzc2VuZ2VycycpICsgJzwvZGl2Pic7IH0KICAgICAgfQogICAgICByZXR1cm4gaDsKICAgIH0KICAgIGZ1bmN0aW9uIHJldmlld0JvZHkoKSB7CiAgICAgIHZhciBoID0gJyc7CiAgICAgIGlmIChzdC50YWIgIT09ICdtdWx0aScpIHsKICAgICAgICB2YXIgZCA9IHBhcnNlSVNPKHN0LmRlcGFydCksIHIgPSBwYXJzZUlTTyhzdC5yZXQpOwogICAgICAgIGggKz0gJzxkaXYgY2xhc3M9InFmLXJ2LWdyaWQiPjxzcGFuIGNsYXNzPSJrIj4nICsgZXNjKEZST01fTEFCRUwpICsgJzo8L3NwYW4+PHNwYW4gY2xhc3M9InYiPicgKyBlc2Moc3QuZnJvbSB8fCAn4oCUJykgKyAnPC9zcGFuPicgKwogICAgICAgICAgJzxzcGFuIGNsYXNzPSJrIj5Hb2luZyB0bzo8L3NwYW4+PHNwYW4gY2xhc3M9InYiPicgKyBlc2Moc3QudG8gfHwgJ+KAlCcpICsgJzwvc3Bhbj4nICsKICAgICAgICAgICc8c3BhbiBjbGFzcz0iayI+RGVwYXJ0dXJlOjwvc3Bhbj48c3BhbiBjbGFzcz0idiI+JyArIGVzYyhkID8gZm10TG9uZyhkKSA6ICfigJQnKSArIChzdC50aW1lID8gJyB8ICcgKyBlc2Moc3QudGltZSkgOiAnJykgKyAnPC9zcGFuPicgKwogICAgICAgICAgKHN0LnRhYiA9PT0gJ3JvdW5kdHJpcCcgPyAnPHNwYW4gY2xhc3M9ImsiPlJldHVybmluZzo8L3NwYW4+PHNwYW4gY2xhc3M9InYiPicgKyBlc2MociA/IGZtdExvbmcocikgOiAn4oCUJykgKyAnPC9zcGFuPicgOiAnJykgKwogICAgICAgICAgJzxzcGFuIGNsYXNzPSJrIj5QYXNzZW5nZXJzOjwvc3Bhbj48c3BhbiBjbGFzcz0idiI+JyArIHN0LnBheCArICc8L3NwYW4+PC9kaXY+JzsKICAgICAgfSBlbHNlIHsKICAgICAgICBoICs9ICc8ZGl2IGNsYXNzPSJxZi1ydi1sZWdzIj4nOwogICAgICAgIHN0LmxlZ3MuZm9yRWFjaChmdW5jdGlvbiAobCwgaSkgeyB2YXIgZCA9IHBhcnNlSVNPKGwuZGF0ZSk7IGggKz0gJzxkaXY+PGI+TGVnICcgKyAoaSArIDEpICsgJzo8L2I+ICcgKyBlc2MobC5mcm9tIHx8ICfigJQnKSArICcg4oaSICcgKyBlc2MobC50byB8fCAn4oCUJykgKyAnIMK3ICcgKyBlc2MoZCA/IGZtdExvbmcoZCkgOiAnRGF0ZSBUQkQnKSArICc8L2Rpdj4nOyB9KTsKICAgICAgICBoICs9ICc8ZGl2PjxiPlBhc3NlbmdlcnM6PC9iPiAnICsgc3QucGF4ICsgJzwvZGl2PjwvZGl2Pic7CiAgICAgIH0KICAgICAgcmV0dXJuIGg7CiAgICB9CiAgICBmdW5jdGlvbiBjb250YWN0SHRtbCgpIHsKICAgICAgdmFyIGggPSAnJzsKICAgICAgaWYgKHN0ZXBzKSB7CiAgICAgICAgaCArPSAnPGRpdiBjbGFzcz0icWYtcm93MiI+JyArIGZpZWxkKCdGaXJzdCBuYW1lJywgaW5wdXQoJ2ZpcnN0JywgJ0ZpcnN0IG5hbWUnLCBudWxsLCBzdC5maXJzdCkpICsgZmllbGQoJ0xhc3QgbmFtZScsIGlucHV0KCdsYXN0JywgJ0xhc3QgbmFtZScsIG51bGwsIHN0Lmxhc3QpKSArICc8L2Rpdj4nICsKICAgICAgICAgICc8ZGl2IGNsYXNzPSJxZi1yb3cyIj4nICsgZmllbGQoJ0VtYWlsJywgaW5wdXQoJ2VtYWlsJywgJ3lvdXJlbWFpbEBleGFtcGxlLmNvbScsICdlbWFpbCcsIHN0LmVtYWlsKSkgKyBmaWVsZCgnUGhvbmUgbnVtYmVyJywgaW5wdXQoJ3Bob25lJywgJzU1NS0xMjMtNTY3OCcsICd0ZWwnLCBzdC5waG9uZSkpICsgJzwvZGl2PicgKwogICAgICAgICAgJzxkaXYgY2xhc3M9InFmLXJvdzIiPicgKyBmaWVsZCgnSG93IGRvIHlvdSBwcmltYXJpbHkgZmx5IG5vdz8nLCBzZWxlY3QoJ2ZseU5vdycsIFsnQ29tbWVyY2lhbCBhaXJsaW5lcycsICdQcml2YXRlIGNoYXJ0ZXInLCAnRnJhY3Rpb25hbCBvd25lcnNoaXAnLCAnSmV0IGNhcmQgLyBtZW1iZXJzaGlwJywgJ1RoaXMgd291bGQgYmUgbXkgZmlyc3QgcHJpdmF0ZSBmbGlnaHQnXSwgc3QuZmx5Tm93KSkgKwogICAgICAgICAgZmllbGQoJ0hvdyBvZnRlbiBkbyB5b3UgY3VycmVudGx5IGZseSBwcml2YXRlIHBlciB5ZWFyPycsIHNlbGVjdCgnZmx5RnJlcScsIFsnVGhpcyB3b3VsZCBiZSBteSBmaXJzdCcsICcx4oCTNSBmbGlnaHRzJywgJzbigJMxMiBmbGlnaHRzJywgJzEyKyBmbGlnaHRzJ10sIHN0LmZseUZyZXEpKSArICc8L2Rpdj4nICsKICAgICAgICAgICc8ZGl2IGNsYXNzPSJxZi1yb3cxIj4nICsgZmllbGQoJ01lc3NhZ2UgPHNwYW4gY2xhc3M9Im9wdCI+KG9wdGlvbmFsKTwvc3Bhbj4nLCAnPHRleHRhcmVhIGNsYXNzPSJxZi1pbnB1dCIgZGF0YS1maWVsZD0ibm90ZXMiIHBsYWNlaG9sZGVyPSJJcyB0aGVyZSBhbnl0aGluZyBlbHNlIHlvdeKAmWQgbGlrZSB0byB0ZWxsIHVzIGFib3V0IHlvdXIgZGVzaXJlZCBpdGluZXJhcnk/Ij4nICsgZXNjKHN0Lm5vdGVzKSArICc8L3RleHRhcmVhPicpICsgJzwvZGl2PicgKwogICAgICAgICAgZmllbGQoJ0hhdmUgYSByZWZlcnJhbCBjb2RlPycsIGlucHV0KCdyZWZlcnJhbCcsICdPcHRpb25hbCcsIG51bGwsIHN0LnJlZmVycmFsKSwgJ3FmLXJlZicpICsKICAgICAgICAgICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InFmLXN1Ym1pdCIgZGF0YS1xPSJzdWJtaXQiJyArIChzZW5kaW5nID8gJyBkaXNhYmxlZCcgOiAnJykgKyAnPicgKyAoc2VuZGluZyA/ICdTZW5kaW5n4oCmJyA6ICdHZXQgUXVvdGUgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPuKGkjwvc3Bhbj4nKSArICc8L2J1dHRvbj4nOwogICAgICB9IGVsc2UgewogICAgICAgIGggKz0gJzxkaXYgY2xhc3M9InFmLXJvdzIiPicgKyBmaWVsZCgnTmFtZScsIGlucHV0KCduYW1lJywgJ1lvdXIgbmFtZScsIG51bGwsIHN0Lm5hbWUpKSArIGZpZWxkKCdQaG9uZScsIGlucHV0KCdwaG9uZScsICc1NTUtMTIzLTU2NzgnLCAndGVsJywgc3QucGhvbmUpKSArICc8L2Rpdj4nICsKICAgICAgICAgICc8ZGl2IGNsYXNzPSJxZi1yb3cyIj4nICsgZmllbGQoJ0VtYWlsJywgaW5wdXQoJ2VtYWlsJywgJ3lvdXJlbWFpbEBleGFtcGxlLmNvbScsICdlbWFpbCcsIHN0LmVtYWlsKSkgKyBmaWVsZCgnUmVmZXJyYWwgY29kZSA8c3BhbiBjbGFzcz0ib3B0Ij4ob3B0aW9uYWwpPC9zcGFuPicsIGlucHV0KCdyZWZlcnJhbCcsICdPcHRpb25hbCcsIG51bGwsIHN0LnJlZmVycmFsKSkgKyAnPC9kaXY+JyArCiAgICAgICAgICBmaWVsZCgnTWVzc2FnZSA8c3BhbiBjbGFzcz0ib3B0Ij4ob3B0aW9uYWwpPC9zcGFuPicsICc8dGV4dGFyZWEgY2xhc3M9InFmLWlucHV0IiBkYXRhLWZpZWxkPSJub3RlcyIgcGxhY2Vob2xkZXI9IlRlbGwgdXMgYWJvdXQgYW55IHNwZWNpYWwgcmVxdWlyZW1lbnRzIG9yIHByZWZlcmVuY2Vz4oCmIj4nICsgZXNjKHN0Lm5vdGVzKSArICc8L3RleHRhcmVhPicsICdxZi1tc2cnKSArCiAgICAgICAgICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJxZi1zdWJtaXQiIGRhdGEtcT0ic3VibWl0IicgKyAoc2VuZGluZyA/ICcgZGlzYWJsZWQnIDogJycpICsgJz4nICsgKHNlbmRpbmcgPyAnU2VuZGluZ+KApicgOiAnUmVxdWVzdCBRdW90ZSA8c3BhbiBhcmlhLWh
1892pZGRlbj0idHJ1ZSI+4oaSPC9zcGFuPicpICsgJzwvYnV0dG9uPic7CiAgICAgIH0KICAgICAgaWYgKGVycm9yTXNnKSB7IGggKz0gJzxkaXYgY2xhc3M9InFmLWVycm9yIj4nICsgZXNjKGVycm9yTXNnKSArICc8L2Rpdj4nOyB9CiAgICAgIHJldHVybiBoOwogICAgfQogICAgLyogUXVvdGUgcGFnZSBmaWVsZHM6IHRoZSBkZXNpZ24ncyBjYXJkICsgbGFiZWxzLCBlYWNoIGZpZWxkIHJlbmRlcmVkIGFzIGEKICAgICAgIGJvcmRlcmVkIGljb24gY2VsbCAodGhlIG1vZGFsIC8gbXVsdGktY2l0eS1sZWcgdHJlYXRtZW50KS4gKi8KICAgIGZ1bmN0aW9uIGJveEluKGljb24sIG5hbWUsIHBoLCB0eXBlLCB2YWwsIGV4dHJhKSB7CiAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0icWYtYm94Ij4nICsgaWNvbiArICc8aW5wdXQnICsgKHR5cGUgPyAnIHR5cGU9IicgKyB0eXBlICsgJyInIDogJycpICsgJyBkYXRhLWZpZWxkPSInICsgbmFtZSArICciIHBsYWNlaG9sZGVyPSInICsgZXNjKHBoKSArICciIHZhbHVlPSInICsgZXNjKHZhbCB8fCAnJykgKyAnIicgKyAoZXh0cmEgfHwgJycpICsgJz48L2Rpdj4nOwogICAgfQogICAgZnVuY3Rpb24gYm94RGF0ZShwaWNrZXIsIGVkaXQsIGlzbywgcGgpIHsKICAgICAgdmFyIGQgPSBwYXJzZUlTTyhpc28pOwogICAgICByZXR1cm4gJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icWYtYm94IiBkYXRhLXE9InBpY2tlciIgZGF0YS1waWNrZXI9IicgKyBwaWNrZXIgKyAnIicgKyAoZWRpdCA/ICcgZGF0YS1lZGl0PSInICsgZWRpdCArICciJyA6ICcnKSArICc+JyArIElDT04uY2FsICsgJzxzcGFuIGNsYXNzPSJkdicgKyAoZCA/ICcnIDogJyBwaCcpICsgJyI+JyArIChkID8gZXNjKGZtdExvbmcoZCkpIDogZXNjKHBoKSkgKyAnPC9zcGFuPjwvYnV0dG9uPic7CiAgICB9CiAgICBmdW5jdGlvbiBib3hTZWxlY3QoaWNvbiwgbmFtZSwgb3B0cywgdmFsLCBwaCkgewogICAgICB2YXIgaCA9ICc8ZGl2IGNsYXNzPSJxZi1ib3giPicgKyBpY29uICsgJzxzZWxlY3QgY2xhc3M9IicgKyAodmFsID8gJycgOiAnZW1wdHknKSArICciIGRhdGEtZmllbGQ9IicgKyBuYW1lICsgJyI+PG9wdGlvbiB2YWx1ZT0iIiBkaXNhYmxlZCcgKyAodmFsID8gJycgOiAnIHNlbGVjdGVkJykgKyAnPicgKyBlc2MocGggfHwgJy0tIHNlbGVjdCAtLScpICsgJzwvb3B0aW9uPic7CiAgICAgIG9wdHMuZm9yRWFjaChmdW5jdGlvbiAobykgeyBoICs9ICc8b3B0aW9uJyArIChvID09PSB2YWwgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+JyArIGVzYyhvKSArICc8L29wdGlvbj4nOyB9KTsKICAgICAgcmV0dXJuIGggKyAnPC9zZWxlY3Q+PHNwYW4gY2xhc3M9InNlbC1jaGV2Ij4nICsgSUNPTi5jaGV2ICsgJzwvc3Bhbj48L2Rpdj4nOwogICAgfQogICAgZnVuY3Rpb24gcGF4Qm94KCkgewogICAgICByZXR1cm4gJzxkaXYgY2xhc3M9InFmLWJveCBxZi1wYXhib3giPicgKyBJQ09OLnVzZXIgKyAnPHNwYW4gY2xhc3M9InZhbCI+JyArIHN0LnBheCArICc8L3NwYW4+PHNwYW4gY2xhc3M9InFmLXBheC1idG5zIj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgZGF0YS1xPSJwYXgtbWludXMiIGFyaWEtbGFiZWw9IkZld2VyIHBhc3NlbmdlcnMiPuKIkjwvYnV0dG9uPjxidXR0b24gdHlwZT0iYnV0dG9uIiBkYXRhLXE9InBheC1wbHVzIiBhcmlhLWxhYmVsPSJNb3JlIHBhc3NlbmdlcnMiPis8L2J1dHRvbj48L3NwYW4+PC9kaXY+JzsKICAgIH0KICAgIC8qIOKUgOKUgCBNb2JpbGU6IHRoZSBkZXNpZ24ncyBvd24gdHJlYXRtZW50IOKAlCBsYWJlbGxlZCwgc3RhY2tlZCwgYm94ZWQgY2VsbHMg4pSA4pSAICovCiAgICBmdW5jdGlvbiBib3hlZEZvcm0oKSB7CiAgICAgIHZhciBoID0gJzxkaXYgY2xhc3M9InFmLWJvZHkgcWYtbm9oZWFkIj48ZGl2IGNsYXNzPSJxZi10YWJzIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iVHJpcCB0eXBlIj4nOwogICAgICBbWydvbmV3YXknLCAnT25lIFdheSddLCBbJ3JvdW5kdHJpcCcsICdSb3VuZCBUcmlwJ10sIFsnbXVsdGknLCAnTXVsdGktQ2l0eSddXS5mb3JFYWNoKGZ1bmN0aW9uIChwKSB7CiAgICAgICAgaCArPSAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJxZi10YWInICsgKHN0LnRhYiA9PT0gcFswXSA/ICcgYWN0aXZlJyA6ICcnKSArICciIGRhdGEtcT0idGFiIiBkYXRhLXRhYj0iJyArIHBbMF0gKyAnIiBhcmlhLXByZXNzZWQ9IicgKyAoc3QudGFiID09PSBwWzBdKSArICciPicgKyBwWzFdICsgJzwvYnV0dG9uPic7CiAgICAgIH0pOwogICAgICBoICs9ICc8L2Rpdj4nOwogICAgICBpZiAoc3QudGFiID09PSAnbXVsdGknKSB7CiAgICAgICAgaCArPSBsZWdzSHRtbCgpICsgJzxkaXYgY2xhc3M9InFmLXJvdzQiPicgKyBmaWVsZCgnUGFzc2VuZ2VycycsIHBheEJveCgpKSArICc8L2Rpdj4nOwogICAgICB9IGVsc2UgewogICAgICAgIGggKz0gJzxkaXYgY2xhc3M9InFmLXJvdzMgcWYtcm93LWZyb210byI+JyArIGZpZWxkKEZST01fTEFCRUwsIGJveEluKElDT04ucGxhbmUsICdmcm9tJywgJ0NpdHkgb3IgYWlycG9ydCcsIG51bGwsIHN0LmZyb20pKSArIGZpZWxkKCdHb2luZyB0bycsIGJveEluKElDT04ucGxhbmUsICd0bycsICdDaXR5IG9yIGFpcnBvcnQnLCBudWxsLCBzdC50bykpICsgZmllbGQoJ1Bhc3NlbmdlcnMnLCBwYXhCb3goKSkgKyAnPC9kaXY+JzsKICAgICAgICBpZiAoc3QudGFiID09PSAncm91bmR0cmlwJykgewogICAgICAgICAgaCArPSAnPGRpdiBjbGFzcz0icWYtcm93NCI+JyArCiAgICAgICAgICAgIGZpZWxkKCdEZXBhcnQgZGF0ZScsIGJveERhdGUoJ3J0JywgJ3N0YXJ0Jywgc3QuZGVwYXJ0LCAnU2VsZWN0IGRhdGUnKSkgKyBmaWVsZCgnRGVwYXJ0IHRpbWUnLCBib3hJbihJQ09OLmNsb2NrLCAndGltZScsICdGbGV4aWJsZScsIG51bGwsIHN0LnRpbWUpKSArCiAgICAgICAgICAgIGZpZWxkKCdSZXR1cm4gZGF0ZScsIGJveERhdGUoJ3J0JywgJ2VuZCcsIHN0LnJldCwgJ1NlbGVjdCBkYXRlJykpICsgZmllbGQoJ1JldHVybiB0aW1lJywgYm94SW4oSUNPTi5jbG9jaywgJ3JldFRpbWUnLCAnRmxleGlibGUnLCBudWxsLCBzdC5yZXRUaW1lKSkgKyAnPC9kaXY+JzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaCArPSAnPGRpdiBjbGFzcz0icWYtcm93NCI+JyArIGZpZWxkKCdEZXBhcnQgZGF0ZScsIGJveERhdGUoJ293JywgbnVsbCwgc3QuZGVwYXJ0LCAnU2VsZWN0IGRhdGUnKSkgKyBmaWVsZCgnRGVwYXJ0IHRpbWUnLCBib3hJbihJQ09OLmNsb2NrLCAndGltZScsICdGbGV4aWJsZScsIG51bGwsIHN0LnRpbWUpKSArICc8L2Rpdj4nOwogICAgICAgI
1892H0KICAgICAgfQogICAgICBoICs9ICc8ZGl2IGNsYXNzPSJxZi1kaXZpZGVyIj48L2Rpdj48ZGl2IGNsYXNzPSJxZi1leWVicm93LWwgc2VjIj48c3BhbiBjbGFzcz0iZGFzaCI+PC9zcGFuPkNvbnRhY3QgZGV0YWlsczwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJxZi1yb3cyIj4nICsgZmllbGQoJ0ZpcnN0IG5hbWUnLCBib3hJbihJQ09OLnVzZXIsICdmaXJzdCcsICdGaXJzdCBuYW1lJywgbnVsbCwgc3QuZmlyc3QpKSArIGZpZWxkKCdMYXN0IG5hbWUnLCBib3hJbihJQ09OLnVzZXIsICdsYXN0JywgJ0xhc3QgbmFtZScsIG51bGwsIHN0Lmxhc3QpKSArICc8L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0icWYtcm93MiI+JyArIGZpZWxkKCdFbWFpbCcsIGJveEluKElDT04ubWFpbCwgJ2VtYWlsJywgJ3lvdUBlbWFpbC5jb20nLCAnZW1haWwnLCBzdC5lbWFpbCkpICsgZmllbGQoJ1Bob25lJywgYm94SW4oSUNPTi5waG9uZSwgJ3Bob25lJywgJyg1NTUpIDAwMC0wMDAwJywgJ3RlbCcsIHN0LnBob25lKSkgKyAnPC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9InFmLXJvdzIiPicgKyBmaWVsZCgnSG93IGRvIHlvdSBwcmltYXJpbHkgZmx5IG5vdz8nLCBib3hTZWxlY3QoSUNPTi5wbGFuZSwgJ2ZseU5vdycsIFsnQ29tbWVyY2lhbCBhaXJsaW5lcycsICdQcml2YXRlIGNoYXJ0ZXInLCAnRnJhY3Rpb25hbCBvd25lcnNoaXAnLCAnSmV0IGNhcmQgLyBtZW1iZXJzaGlwJywgJ1RoaXMgd291bGQgYmUgbXkgZmlyc3QgcHJpdmF0ZSBmbGlnaHQnXSwgc3QuZmx5Tm93LCAnU2VsZWN0IGFuIG9wdGlvbic
1892pKSArCiAgICAgICAgZmllbGQoJ0hvdyBvZnRlbiBkbyB5b3UgZmx5IHByaXZhdGUgcGVyIHllYXI/JywgYm94U2VsZWN0KElDT04uY2FsLCAnZmx5RnJlcScsIFsnVGhpcyB3b3VsZCBiZSBteSBmaXJzdCcsICcx4oCTNSBmbGlnaHRzJywgJzbigJMxMiBmbGlnaHRzJywgJzEyKyBmbGlnaHRzJ10sIHN0LmZseUZyZXEsICdTZWxlY3QgYW4gb3B0aW9uJykpICsgJzwvZGl2PicgKwogICAgICAgIGZpZWxkKCdUcmlwIG5vdGVzIDxzcGFuIGNsYXNzPSJvcHQiPihvcHRpb25hbCk8L3NwYW4+JywgJzx0ZXh0YXJlYSBjbGFzcz0icWYtYm94LXRhIiBkYXRhLWZpZWxkPSJub3RlcyIgcGxhY2Vob2xkZXI9IkFueXRoaW5nIHdlIHNob3VsZCBrbm93PyBQZXRzLCBjYXRlcmluZywgZ3JvdW5kIHRyYW5zcG9ydCwgc3BlY2lhbCB0aW1pbmfigKYiPicgKyBlc2Moc3Qubm90ZXMpICsgJzwvdGV4dGFyZWE+JywgJ3FmLW1zZycpICsKICAgICAgICBmaWVsZCgnUmVmZXJyYWwgY29kZSA8c3BhbiBjbGFzcz0ib3B0Ij4ob3B0aW9uYWwpPC9zcGFuPicsIGJveEluKElDT04udGFnLCAncmVmZXJyYWwnLCAnUmVmZXJyYWwgY29kZScsIG51bGwsIHN0LnJlZmVycmFsKSwgJ3FmLXJlZicpICsKICAgICAgICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJxZi1zdWJtaXQiIGRhdGEtcT0ic3VibWl0IicgKyAoc2VuZGluZyA/ICcgZGlzYWJsZWQnIDogJycpICsgJz4nICsgKHNlbmRpbmcgPyAnU2VuZGluZ+KApicgOiAnR2V0IFF1b3RlIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj7ihpI8L3NwYW4+JykgKyAnPC9idXR0b24+JzsKICAgICAgaWYgKGVycm9yTXNnKSB7IGggKz0gJzxkaXYgY2xhc3M9InFmLWVycm9yIj4nICsgZXNjKGVycm9yTXNnKSArICc8L2Rpdj4nOyB9CiAgICAgIHJldHVybiBoICsgJzwvZGl2Pic7CiAgICB9CgogICAgZnVuY3Rpb24gcXBGaWVsZChsYWJlbCwgaW5uZXIpIHsgcmV0dXJuICc8ZGl2PjxzcGFuIGNsYXNzPSJxcC1sYWJlbCI+JyArIGxhYmVsICsgJzwvc3Bhbj4nICsgaW5uZXIgKyAnPC9kaXY+JzsgfQogICAgZnVuY3Rpb24gcXBJbihpY29uLCBuYW1lLCBwaCwgdHlwZSwgdmFsKSB7IHJldHVybiAnPGRpdiBjbGFzcz0icXAtY2VsbCI+JyArIGljb24gKyAnPGlucHV0JyArICh0eXBlID8gJyB0eXBlPSInICsgdHlwZSArICciJyA6ICcnKSArICcgZGF0YS1maWVsZD0iJyArIG5hbWUgKyAnIiBwbGFjZWhvbGRlcj0iJyArIGVzYyhwaCkgKyAnIiB2YWx1ZT0iJyArIGVzYyh2YWwgfHwgJycpICsgJyI+PC9kaXY+JzsgfQogICAgZnVuY3Rpb24gcXBEYXRlKHBpY2tlciwgZWRpdCwgaXNvLCBwaCkgewogICAgICB2YXIgZCA9IHBhcnNlSVNPKGlzbyk7CiAgICAgIHJldHVybiAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJxcC1jZWxsIiBkYXRhLXE9InBpY2tlciIgZGF0YS1waWNrZXI9IicgKyBwaWNrZXIgKyAnIicgKyAoZWRpdCA/ICcgZGF0YS1lZGl0PSInICsgZWRpdCArICciJyA6ICcnKSArICc+JyArIFFQLmNhbCArICc8c3BhbiBjbGFzcz0iZHYnICsgKGQgPyAnJyA6ICcgcGgnKSArICciPicgKyAoZCA/IGVzYyhmbXRMb25nKGQpKSA6IGVzYyhwaCkpICsgJzwvc3Bhbj48L2J1dHRvbj4nOwogICAgfQogICAgZnVuY3Rpb24gcXBTZWwoaWNvbiwgbmFtZSwgb3B0cywgdmFsKSB7CiAgICAgIHZhciBoID0gJzxkaXYgY2xhc3M9InFwLWNlbGwiPicgKyBpY29uICsgJzxzZWxlY3QgY2xhc3M9IicgKyAodmFsID8gJycgOiAnZW1wdHknKSArICciIGRhdGEtZmllbGQ9IicgKyBuYW1lICsgJyI+PG9wdGlvbiB2YWx1ZT0iIiBkaXNhYmxlZCcgKyAodmFsID8gJycgOiAnIHNlbGVjdGVkJykgKyAnPlNlbGVjdCBhbiBvcHRpb248L29wdGlvbj4nOwogICAgICBvcHRzLmZvckVhY2goZnVuY3Rpb24gKG8pIHsgaCArPSAnPG9wdGlvbicgKyAobyA9PT0gdmFsID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPicgKyBlc2MobykgKyAnPC9vcHRpb24+JzsgfSk7CiAgICAgIHJldHVybiBoICsgJzwvc2VsZWN0PjxzcGFuIGNsYXNzPSJjaGV2Ij4nICsgUVAuY2hldiArICc8L3NwYW4+PC9kaXY+JzsKICAgIH0KICAgIGZ1bmN0aW9uIHFwUGF4KCkgewogICAgICByZXR1cm4gJzxkaXYgY2xhc3M9InFwLWNlbGwgcXAtcGF4Ij48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgZGF0YS1xPSJwYXgtbWludXMiIGFyaWEtbGFiZWw9IkZld2VyIHBhc3NlbmdlcnMiPicgKyBRUC5taW51cyArICc8L2J1dHRvbj48c3BhbiBjbGFzcz0idmFsIj4nICsgc3QucGF4ICsgJzwvc3Bhbj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InBsdXMiIGRhdGEtcT0icGF4LXBsdXMiIGFyaWEtbGFiZWw9Ik1vcmUgcGFzc2VuZ2VycyI+JyArIFFQLnBsdXMgKyAnPC9idXR0b24+PC9kaXY+JzsKICAgIH0KICAgIGZ1bmN0aW9uIHRhYnNIdG1sKGNscykgewogICAgICB2YXIgaCA9ICc8ZGl2IGNsYXNzPSInICsgY2xzICsgJyIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IlRyaXAgdHlwZSI+JzsKICAgICAgW1snb25ld2F5JywgJ09uZSBXYXknXSwgWydyb3VuZHRyaXAnLCAnUm91bmQgVHJpcCddLCBbJ211bHRpJywgJ011bHRpLUNpdHknXV0uZm9yRWFjaChmdW5jdGlvbiAocCkgewogICAgICAgIGggKz0gJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icXAtdGFiJyArIChzdC50YWIgPT09IHBbMF0gPyAnIGFjdGl2ZScgOiAnJykgKyAnIiBkYXRhLXE9InRhYiIgZGF0YS10YWI9IicgKyBwWzBdICsgJyIgYXJpYS1wcmVzc2VkPSInICsgKHN0LnRhYiA9PT0gcFswXSkgKyAnIj4nICsgcFsxXSArICc8L2J1dHRvbj4nOwogICAgICB9KTsKICAgICAgcmV0dXJuIGggKyAnPC9kaXY+JzsKICAgIH0KICAgIGZ1bmN0aW9uIHRyaXBSb3dzKGNvbHMpIHsKICAgICAgdmFyIGggPSAnJzsKICAgICAgaWYgKHN0LnRhYiA9PT0gJ211bHRpJykgeyByZXR1cm4gbGVnc0h0bWwoKSArIChjb2xzID8gJycgOiAnPGRpdiBjbGFzcz0icXAtcm93NCBsYXN0Ij4nICsgcXBGaWVsZCgnUGFzc2VuZ2VycycsIHFwUGF4KCkpICsgJzwvZGl2PicpOyB9CiAgICAgIGlmIChjb2xzKSB7CiAgICAgICAgaCArPSAnPGRpdiBjbGFzcz0icXAtcm93MmMiPicgKyBxcEZpZWxkKEZST01fTEFCRUwsIHFwSW4oUVAuc2VuZCwgJ2Zyb20nLCAnQ2l0eSBvciBhaXJwb3J0JywgbnVsbCwgc3QuZnJvbSkpICsgcXBGaWVsZCgnR29pbmcgdG8nLCBxcEluKFFQLnBpbiwgJ3RvJywgJ0NpdHkgb3IgYWlycG9ydCcsIG51bGwsIHN0LnRvKSkgKyAnPC9kaXY+JzsKICAgICAgfSBlbHNlIHsKICAgICAgICBoICs9ICc8ZGl2IGNsYXNzPSJxcC1yb3ctaXQiPicgKyBxcEZpZWxkKEZST01fTEFCRUwsIHFwSW4oUVAuc2VuZCwgJ2Zyb20nLCAnQ2l0eSBvciBhaXJwb3J0JywgbnVsbCwgc3QuZnJvbSkpICsKICAgICAgICAgICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InFwLXN3YXAiIGRhdGEtcT0ic3dhcCIgYXJpYS1sYWJlbD0iU3dhcCBkZXBhcnR1cmUgYW5kIGRlc3RpbmF0aW9uIj4nICsgUVAuc3dhcCArICc8L2J1dHRvbj4nICsKICAgICAgICAgI
1892HFwRmllbGQoJ0dvaW5nIHRvJywgcXBJbihRUC5waW4sICd0bycsICdDaXR5IG9yIGFpcnBvcnQnLCBudWxsLCBzdC50bykpICsgcXBGaWVsZCgnUGFzc2VuZ2VycycsIHFwUGF4KCkpICsgJzwvZGl2Pic7CiAgICAgIH0KICAgICAgdmFyIGRlcCA9IHFwRmllbGQoJ0RlcGFydCBkYXRlJywgcXBEYXRlKHN0LnRhYiA9PT0gJ3JvdW5kdHJpcCcgPyAncnQnIDogJ293Jywgc3QudGFiID09PSAncm91bmR0cmlwJyA/ICdzdGFydCcgOiBudWxsLCBzdC5kZXBhcnQsICdTZWxlY3QgZGF0ZScpKSArIHFwRmllbGQoJ0RlcGFydCB0aW1lJywgcXBJbihRUC5jbG9jaywgJ3RpbWUnLCAnRmxleGlibGUnLCBudWxsLCBzdC50aW1lKSk7CiAgICAgIHZhciByZXQgPSBzdC50YWIgPT09ICdyb3VuZHRyaXAnID8gcXBGaWVsZCgnUmV0dXJuIGRhdGUnLCBxcERhdGUoJ3J0JywgJ2VuZCcsIHN0LnJldCwgJ1NlbGVjdCBkYXRlJykpICsgcXBGaWVsZCgnUmV0dXJuIHRpbWUnLCBxcEluKFFQLmNsb2NrLCAncmV0VGltZScsICdGbGV4aWJsZScsIG51bGwsIHN0LnJldFRpbWUpKSA6ICcnOwogICAgICBpZiAoY29scykgeyBoICs9ICc8ZGl2IGNsYXNzPSJxcC1yb3cyYyI+JyArIGRlcCArICc8L2Rpdj4nICsgKHJldCA/ICc8ZGl2IGNsYXNzPSJxcC1yb3cyYyI+JyArIHJldCArICc8L2Rpdj4nIDogJycpOyB9CiAgICAgIGVsc2UgeyBoICs9ICc8ZGl2IGNsYXNzPSJxcC1yb3c0IGxhc3QiPicgKyBkZXAgKyByZXQgKyAnPC9kaXY+JzsgfQogICAgICByZXR1cm4gaDsKICAgIH0KICAgIHZhciBGTFlfTk9XID0gWydDb21tZXJjaWFsIGFpcmxpbmVzJywgJ1ByaXZhdGUgY2hhcnRlcicsICdGcmFjdGlvbmFsIG93bmVyc2hpcCcsICdKZXQgY2FyZCAvIG1lbWJlcnNoaXAnLCA
1892nVGhpcyB3b3VsZCBiZSBteSBmaXJzdCBwcml2YXRlIGZsaWdodCddOwogICAgdmFyIEZMWV9GUkVRID0gWydUaGlzIHdvdWxkIGJlIG15IGZpcnN0JywgJzHigJM1IGZsaWdodHMnLCAnNuKAkzEyIGZsaWdodHMnLCAnMTIrIGZsaWdodHMnXTsKICAgIGZ1bmN0aW9uIGNvbnRhY3RDb3JlKCkgewogICAgICByZXR1cm4gcXBGaWVsZCgnRmlyc3QgbmFtZScsIHFwSW4oUVAudXNlciwgJ2ZpcnN0JywgJ0ZpcnN0IG5hbWUnLCBudWxsLCBzdC5maXJzdCkpICsgcXBGaWVsZCgnTGFzdCBuYW1lJywgcXBJbihRUC51c2VyLCAnbGFzdCcsICdMYXN0IG5hbWUnLCBudWxsLCBzdC5sYXN0KSkgKwogICAgICAgIHFwRmllbGQoJ0VtYWlsJywgcXBJbihRUC5tYWlsLCAnZW1haWwnLCAneW91QGVtYWlsLmNvbScsICdlbWFpbCcsIHN0LmVtYWlsKSkgKyBxcEZpZWxkKCdQaG9uZScsIHFwSW4oUVAucGhvbmUsICdwaG9uZScsICcoNTU1KSAwMDAtMDAwMCcsICd0ZWwnLCBzdC5waG9uZSkpOwogICAgfQogICAgZnVuY3Rpb24gbm90ZXNIdG1sKCkgewogICAgICByZXR1cm4gcXBGaWVsZCgnVHJpcCBub3RlcyA8c3BhbiBjbGFzcz0ib3B0Ij4ob3B0aW9uYWwpPC9zcGFuPicsICc8dGV4dGFyZWEgY2xhc3M9InFwLXRhIiBkYXRhLWZpZWxkPSJub3RlcyIgcGxhY2Vob2xkZXI9IkFueXRoaW5nIHdlIHNob3VsZCBrbm93PyBQZXRzLCBjYXRlcmluZywgZ3JvdW5kIHRyYW5zcG9ydCwgc3BlY2lhbCB0aW1pbmfigKYiPicgKyBlc2Moc3Qubm90ZXMpICsgJzwvdGV4dGFyZWE+Jyk7CiAgICB9CiAgICAvKiDilIDilIAgVHdvLXN0ZXAgY2FyZCBpbiB0aGUgcG9saXNoZWQgc3R5bGUgKG93bmVyLCAyMDI2LTA4LTIxIGxhdGUg4oCUIG1pcnJvcnMgdGhlIGxpdmUgc2l0ZSdzIGZsb3cpOgogICAgICAgc3RlcCAxID0gdHJpcCBkZXRhaWxzIOKGkiAiTmV4dCBTdGVwIjsgc3RlcCAyID0gdGhlIGhlYWRlciBzdW1tYXJpc2VzIHRoZSB0cmlwIChFZGl0IGxpbmspIGFuZCB0aGUKICAgICAgIGJvZHkgYXNrcyBmb3IgY29udGFjdCBkZXRhaWxzICsgb3B0aW9uYWwgZXh0cmFzIOKGkiAiR2V0IFF1b3RlIiBzZW5kcyB0aGUgbGVhZC4KICAgICAgIE1vYmlsZSBrZWVwcyB0aGUgZGVzaWduJ3Mgc2luZ2xlLXN0ZXAgc3RhY2tlZCBjYXJkLiDilIDilIAgKi8KICAgIGZ1bmN0aW9uIHFwSGVhZChkb25lKSB7CiAgICAgIHZhciBzMiA9ICFkb25lICYmIHN0LnN0ZXAgPT09IDI7CiAgICAgIHZhciB0aXRsZSA9IGRvbmUgPyAnV2XigJl2ZSBnb3QgeW91ciBkZXRhaWxzLicgOiAoczIgPyAnSG93IGRvIHdlIHJlYWNoIHlvdT8nIDogJ1JlcXVlc3QgYSBDaGFydGVyIEZsaWdodCBRdW90ZScpOwogICAgICB2YXIgc3ViID0gZG9uZSA/ICdBIGRlZGljYXRlZCBhZHZpc29yIHdpbGwgcmV2aWV3IHlvdXIgdHJpcCBhbmQgcmVwbHkgd2l0aCBhaXJjcmFmdCBvcHRpb25zIGFuZCBhbGxcdTIwMTFpbiBwcmljaW5nLicgOgogICAgICAgIChzMiA/ICdUZWxsIHVzIGhvdyB0byByZWFjaCB5b3UgYW5kIGEgY2hhcnRlciBhZHZpc29yIHdpbGwgZ2V0IHRvIHdvcmsuJyA6ICdUZWxsIHVzIGFib3V0IHlvdXIgdHJpcCDigJQgd2UgcmVwbHkgd2l0aCBhaXJjcmFmdCBvcHRpb25zIGFuZCBhbGzigJFpbiBwcmljaW5nLicpOwogICAgICB2YXIgbGVhZCA9IGRvbmUgPyAnPHNwYW4gY2xhc3M9ImRvdCI+PC9zcGFuPjxzcGFuIGNsYXNzPSJ0Ij5SZXF1ZXN0IHJlY2VpdmVkPC9zcGFuPicgOgogICAgICAgICc8ZGl2IGNsYXNzPSJxcC10YWJzIHFwLWluZCBxcC1pbmQtc20iIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSJRdW90ZSBzdGVwcyI+JyArCiAgICAgICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icXAtdGFiJyArIChzMiA/ICcgZG9uZScgOiAnIGFjdGl2ZScpICsgJyIgZGF0YS1xPSJnby1zdGVwIiBkYXRhLXN0ZXA9IjEiJyArIChzMiA/ICcnIDogJyBhcmlhLWN1cnJlbnQ9InN0ZXAiJykgKyAnPjEgwrcgVHJpcCBkZXRhaWxzPC9idXR0b24+JyArCiAgICAgICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icXAtdGFiJyArIChzMiA/ICcgYWN0aXZlJyA6ICcgbmV4dCcpICsgJyIgZGF0YS1xPSJnby1zdGVwIiBkYXRhLXN0ZXA9IjIiJyArIChzMiA/ICcgYXJpYS1jdXJyZW50PSJzdGVwIicgOiAnJykgKyAnPjIgwrcgQ29udGFjdCBpbmZvPC9idXR0b24+PC9kaXY+JzsKICAgICAgLyogc3RlcCAxOiB0aGUgcmVzcG9uc2UgYmFkZ2Ugc2l0cyBvbiB0aGUgc3RlcHBlciBsaW5lIChvd25lcik7IHN0ZXAgMjogdGhlIHRyaXAgc3VtbWFyeSBjYXJkIG9uIHRoZSByaWdodCBvZiB0aGUgdGl0bGUgKi8KICAgICAgdmFyIGJhZGdlID0gKCFkb25lICYmICFzMikgPyAnPHNwYW4gY2xhc3M9InFwLWJhZGdlIj4nICsgUVAuY2xvY2sgKyAnQXZlcmFnZSByZXNwb25zZTogdW5kZXIgYW4gaG91cjwvc3Bhbj4nIDogJyc7CiAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0icXAtaGVhZCBsaWdodCcgKyAoczIgPyAnIHN0ZXAyJyA6ICcnKSArICciPicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJxcC1leWVicm93Ij4nICsgbGVhZCArICc8c3BhbiBjbGFzcz0ibGluZSI+PC9zcGFuPicgKyBiYWRnZSArICc8L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0icXAtaGVhZC1tYWluIj48ZGl2IGNsYXNzPSJxcC1oZWFkLWwiPjxoMiBjbGFzcz0icXAtdGl0bGUiPicgKyB0aXRsZSArICc8L2gyPjxwIGNsYXNzPSJxcC1zdWIiPicgKyBzdWIgKyAnPC9wPjwvZGl2PicgKwogICAgICAgIChzMiA/ICc8ZGl2IGNsYXNzPSJxcC1oZWFkLXIiPicgKyBzdW1tYXJ5Q2FyZCgpICsgJzwvZGl2PicgOiAnJykgKyAnPC9kaXY+PC9kaXY+JzsKICAgIH0KICAgIGZ1bmN0aW9uIHN1bW1hcnlQYXJ0cygpIHsKICAgICAgdmFyIHRyaXAgPSBzdC50YWIgPT09ICdyb3VuZHRyaXAnID8gJ1JvdW5kIHRyaXAnIDogc3QudGFiID09PSAnb25ld2F5JyA/ICdPbmUgd2F5JyA6ICdNdWx0aS1jaXR5JzsKICAgICAgdmFyIHBhcnR5ID0gc3QucGF4ICsgKHN0LnBheCA9PT0gMSA/ICcgcGFzc2VuZ2VyJyA6ICcgcGFzc2VuZ2VycycpOwogICAgICB2YXIgcm91dGUsIHdoZW47CiAgICAgIGlmIChzdC50YWIgPT09ICdtdWx0aScpIHsKICAgICAgICByb3V0ZSA9IHN0LmxlZ3MubWFwKGZ1bmN0aW9uIChsKSB7IHJldHVybi
1892BwbGFjZUZvcihsLmZyb20sICc/JykgKyAnIOKGkiAnICsgcGxhY2VGb3IobC50bywgJz8nKTsgfSkuam9pbignIMK3ICcpOwogICAgICAgIHZhciBkYXRlZCA9IHN0LmxlZ3MuZmlsdGVyKGZ1bmN0aW9uIChsKSB7IHJldHVybiBsLmRhdGU7IH0pOwogICAgICAgIHdoZW4gPSBkYXRlZC5sZW5ndGggPyBkYXRlZC5tYXAoZnVuY3Rpb24gKGwpIHsgcmV0dXJuIGZtdFNob3J0KHBhcnNlSVNPKGwuZGF0ZSkpOyB9KS5qb2luKCcgwrcgJykgOiAnRGF0ZXMgVEJEJzsKICAgICAgfSBlbHNlIHsKICAgICAgICB2YXIgZCA9IHBhcnNlSVNPKHN0LmRlcGFydCksIHIgPSBwYXJzZUlTTyhzdC5yZXQpLCBydCA9IHN0LnRhYiA9PT0gJ3JvdW5kdHJpcCc7CiAgICAgICAgcm91dGUgPSBwbGFjZUZvcihzdC5mcm9tLCAn4oCUJykucmVwbGFjZSgvLFxzKlVTQSQvLCAnJykgKyAnIOKGkiAnICsgcGxhY2VGb3Ioc3QudG8sICfigJQnKS5yZXBsYWNlKC8sXHMqVVNBJC8sICcnKTsKICAgICAgICB3aGVuID0gKGQgPyBmbXRTaG9ydChkKSArIChydCA/ICcg4oCTICcgKyAociA/IGZtdFNob3J0KHIpIDogJ1RCRCcpIDogJycpICsgJywgJyArIGQuZ2V0RnVsbFllYXIoKSA6ICdEYXRlcyBUQkQnKSArCiAgICAgICAgICAoc3QudGltZSB8fCBzdC5yZXRUaW1lID8gJyDCtyAnICsgKHN0LnRpbWUgfHwgJ2ZsZXhpYmxlJykgKyAocnQgPyAnIC8gJyArIChzdC5yZXRUaW1lIHx8ICdmbGV4aWJsZScpIDogJycpIDogJycpOwogICAgICB9CiAgICAgIHJldHVybiB7IHJvdXRlOiByb3V0ZSwgd2hlbjogd2hlbiwgdHJpcDogdHJpcCwgcGFydHk6IHBhcnR5IH07CiAgICB9CiAgICBmdW5jdGlvbiBzdW1tYXJ5Q2FyZCgpIHsKICAgICAgdmFyIHggPSBzdW1tYXJ5UGFydHMoKTsKICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJxcC1zdW0iPjxkaXYgY2xhc3M9InFwLXN1bS1oZWFkIj48c3Bhbj5Zb3VyIHRyaXA8L3NwYW4+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJxcC1zdW0tZWRpdCIgZGF0YS1xPSJiYWNrIj5FZGl0PC9idXR0b24+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9InFwLXN1bS1sMSI+JyArIGVzYyh4LnJvdXRlKSArICc8L2Rpdj48ZGl2IGNsYXNzPSJxcC1zdW0tbDIiPicgKyBlc2MoeC53aGVuICsgJyDCtyAnICsgeC50cmlwICsgJyDCtyAnICsgeC5wYXJ0eSkgKyAnPC9kaXY+PC9kaXY+JzsKICAgIH0KICAgIGZ1bmN0aW9uIHRhbGtIdG1sKCkgeyByZXR1cm4gJzxkaXYgY2xhc3M9InFwLXRhbGsiPjxkaXYgY2xhc3M9ImEiPlByZWZlciB0byB0YWxrPyA8YSBocmVmPSJ0ZWw6JyArIGVzYyhURUwpICsgJyI+JyArIGVzYyhQSE9ORSkgKyAnPC9hPjwvZGl2PjxkaXYgY2xhc3M9ImIiPkFuc3dlcmVkIDI0LzcgYnkgb3VyIGluLWhvdXNlIGNoYXJ0ZXIgdGVhbTwvZGl2PjwvZGl2Pic7IH0KICAgIGZ1bmN0aW9uIHN0ZXAxRm9ybSgpIHsKICAgICAgdmFyIGggPSBxcEhlYWQoZmFsc2UpICsgJzxkaXYgY2xhc3M9InFwLWJvZHkiPjxkaXYgY2xhc3M9InFwLXRvcCI+JyArIHRhYnNIdG1sKCdxcC10YWJzJykgKyAnPC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9InFwLXNlYyI+PHNwYW4gY2xhc3M9InQiPkl0aW5lcmFyeTwvc3Bhbj48c3BhbiBjbGFzcz0ibGluZSI+PC9zcGFuPjwvZGl2PicgKyB0cmlwUm93cyhmYWxzZSk7CiAgICAgIGlmIChlcnJvck1zZykgeyBoICs9ICc8ZGl2IGNsYXNzPSJxZi1lcnJvciI+JyArIGVzYyhlcnJvck1zZykgKyAnPC9kaXY+JzsgfQogICAgICByZXR1cm4gaCArICc8L2Rpdj48ZGl2IGNsYXNzPSJxcC1mb290Ij4nICsgdGFsa0h0bWwoKSArICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InFwLXN1Ym1pdCIgZGF0YS1xPSJuZXh0Ij5OZXh0IFN0ZXAnICsgUVAuYXJyb3cgKyAnPC9idXR0b24+PC9kaXY+JzsKICAgIH0KICAgIGZ1bmN0aW9uIHN0ZXAyRm9ybSgpIHsKICAgICAgdmFyIGggPSBxcEhlYWQoZmFsc2UpICsgJzxkaXYgY2xhc3M9InFwLWJvZHkgcXAtYm9keS1jZW50ZXIiPicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJxcC1zZWMiPjxzcGFuIGNsYXNzPSJ0Ij5Db250YWN0IGRldGFpbHM8L3NwYW4+PHNwYW4gY2xhc3M9ImxpbmUiPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJxcC1yb3c0Ij4nICsgY29udGFjdENvcmUoKSArICc8L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0icXAtcm93MyI+JyArIHFwRmllbGQoJ0hvdyBkbyB5b3UgcHJpbWFyaWx5IGZseSBub3c/IDxzcGFuIGNsYXNzPSJvcHQiPihvcHRpb25hbCk8L3NwYW4+JywgcXBTZWwoUVAuc2VuZCwgJ2ZseU5vdycsIEZMWV9OT1csIHN0LmZseU5vdykpICsKICAgICAgICBxcEZpZWxkKCdIb3cgb2Z0ZW4gZG8geW91IGZseSBwcml2YXRlIHBlciB5ZWFyPyA8c3BhbiBjbGFzcz0ib3B0Ij4ob3B0aW9uYWwpPC9zcGFuPicsIHFwU2VsKFFQLmNhbCwgJ2ZseUZyZXEnLCBGTFlfRlJFUSwgc3QuZmx5RnJlcSkpICsKICAgICAgICBxcEZpZWxkKCdUcmlwIG5vdGVzIDxzcGFuIGNsYXNzPSJvcHQiPihvcHRpb25hbCk8L3NwYW4+JywgcXBJbihRUC5ub3RlLCAnbm90ZXMnLCAnUGV0cywgY2F0ZXJpbmcsIGdyb3VuZCB0cmFuc3BvcnTigKYnLCBudWxsLCBzdC5ub3RlcykpICsgJzwvZGl2Pic7CiAgICAgIGlmIChlcnJvck1zZykgeyBoICs9ICc8ZGl2IGNsYXNzPSJxZi1lcnJvciI+JyArIGVzYyhlcnJvck1zZykgKyAnPC9kaXY+JzsgfQogICAgICByZXR1cm4gaCArICc8L2Rpdj48ZGl2IGNsYXNzPSJxcC1mb290Ij4nICsgdGFsa0h0bWwoKSArCiAgICAgICAgJzxsYWJlbCBjbGFzcz0icXAtcmVmIj4nICsgUVAudGFnICsgJzxpbnB1dCBkYXRhLWZpZWxkPSJyZWZlcnJhbCIgcGxhY2Vob2xkZXI9IlJlZmVycmFsIGNvZGUiIHZhbHVlPSInICsgZXNjKHN0LnJlZmVycmFsKSArICciIGFyaWEtbGFiZWw9IlJlZmVycmFsIGNvZGUiPjwvbGFiZWw+JyArCiAgICAgICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icXAtc3VibWl0IiBkYXRhLXE9InN1Ym1pdCInICsgKHNlbmRpbmcgPyAnIGRpc2FibGVkJyA6ICcnKSArICc+JyArIChzZW5kaW5nID8gJ1NlbmRpbmfigKYnIDogJ0dldCBRdW90ZScgKyBRUC5hcnJvdykgKyAnPC9idXR0b24+PC9kaXY+JzsKICAgIH0KICAgIGZ1bmN0aW9uIHBvbGlzaGVkRm9ybSgpIHsgcmV0dXJuIHN0LnN0ZXAgPT09IDIgPyBzdGVwMkZvcm0oKSA6IHN0ZXAxRm9ybSgpOyB9CiAgICBmdW5jdGlvbiByb3V0ZU9rKCkgeyByZXR1cm4gc3QudGFiID09PSAnbXVsdGknID8gc3QubGVncy5zb21lKGZ1bmN0aW9uIChsKSB7IHJldHVybi
1892BsLmZyb20gJiYgbC50bzsgfSkgOiAhIShzdC5mcm9tICYmIHN0LnRvKTsgfQogICAgZnVuY3Rpb24gY29udGFjdE9rKCkgeyBzdC5uYW1lID0gKChzdC5maXJzdCB8fCAnJykgKyAnICcgKyAoc3QubGFzdCB8fCAnJykpLnRyaW0oKTsgcmV0dXJuICEhKHN0Lm5hbWUgJiYgc3QuZW1haWwgJiYgc3QucGhvbmUpOyB9CiAgICBmdW5jdGlvbiBnb1N0ZXAyKCkgeyBpZiAoJCgnLnFmLWVycm9yJywgcm9vdEVsKSkgeyBlcnJvck1zZyA9ICcnOyByZW5kZXIoKTsgfSBpZiAoc3dpdGNoU3RlcCgyKSkgeyB0cmFja0V2ZW50KCdmb3JtX3N0ZXAnLCB7IGZvcm06ICdxdW90ZS1zdGVwcycsIHN0ZXA6IDIgfSk7IH0gfQogICAgLyogc2xpZGUgYmV0d2VlbiBzdGVwcyDigJQgbm8gc2Nyb2xsaW5nOyB0aGUgY2FyZCBob2xkcyB0aGUgc2l6ZSB0aGUgdmlzaXRvciBpcyBsb29raW5nIGF0IHRocm91Z2ggdGhlCiAgICAgICBzbGlkZSwgc3RlcCAyIGlzIG5ldmVyIHNtYWxsZXIgdGhhbiB0aGUgc3RlcC0xIGNhcmQgaXQgcmVwbGFjZXMsIHN0ZXAgMSBmb2xsb3dzIGl0cyBvd24gY29udGVudCAqLwogICAgdmFyIHBlbmRpbmdTdGVwID0gMDsKICAgIGZ1bmN0aW9uIHN3aXRjaFN0ZXAobiwgZm9jdXNTZWwpIHsKICAgICAgaWYgKGRzU3RhdGUub3BlbikgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgdmFyIGN1ciA9IHBlbmRpbmdTdGVwIHx8IHN0LnN0ZXA7CiAgICAgIGlmIChuID09PSBjdXIpIHsgaWYgKGZvY3VzU2VsICYmICFwZW5kaW5nU3RlcCkgeyBmb2N1c0ZpZWxkKGZvY3VzU2VsLCB0cnVlKTsgfSByZXR1cm4gZmFsc2U7IH0KICAgICAgaWYgKHBlbmRpbmdTdGVwKSB7IHJldHVybiBmYWxzZTsgfSAgICAgICAgICAgICAgICAgICAgICAgLyogYSBzbGlkZSBpcyBhbHJlYWR5IGluIGZsaWdodCAqLwogICAgICBwZW5kaW5nU3RlcCA9IG47CiAgICAgI
1892HZhciBoMCA9IHJvb3RFbC5vZmZzZXRIZWlnaHQ7CiAgICAgIGlmIChoMCkgeyByb290RWwuc3R5bGUubWluSGVpZ2h0ID0gaDAgKyAncHgnOyB9CiAgICAgIHZhciBkaXIgPSBuID4gc3Quc3RlcCA/ICdxcC1md2QnIDogJ3FwLWJ3ZCc7CiAgICAgIHJvb3RFbC5jbGFzc0xpc3QuYWRkKCdxcC1zd2l0Y2hpbmcnLCBkaXIpOwogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICBzdC5zdGVwID0gbjsgcGVuZGluZ1N0ZXAgPSAwOyByZW5kZXIoKTsKICAgICAgICByb290RWwuc3R5bGUubWluSGVpZ2h0ID0gJyc7CiAgICAgICAgaWYgKG4gPT09IDIgJiYgaDApIHsgcm9vdEVsLnN0eWxlLm1pbkhlaWdodCA9IE1hdGgubWF4KGgwLCByb290RWwub2Zmc2V0SGVpZ2h0KSArICdweCc7IH0KICAgICAgICByb290RWwuY2xhc3NMaXN0LnJlbW92ZSgncXAtc3dpdGNoaW5nJyk7IHJvb3RFbC5jbGFzc0xpc3QuYWRkKCdxcC1lbnRlcicpOwogICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7IHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7CiAgICAgICAgICByb290RWwuY2xhc3NMaXN0LnJlbW92ZSgncXAtZW50ZXInLCAncXAtZndkJywgJ3FwLWJ3ZCcpOwogICAgICAgICAgZm9jdXNGaWVsZChmb2N1c1NlbCB8fCAobiA9PT0gMiA/ICdpbnB1dFtkYXRhLWZpZWxkPSJmaXJzdCJdJyA6ICdpbnB1dFtkYXRhLWZpZWxkPSJmcm9tIl0nKSwgISFmb2N1c1NlbCk7CiAgICAgICAgfSk7IH0pOwogICAgICB9LCAxNzApOwogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIGZ1bmN0aW9uIGZvY3VzRmllbGQoc2VsLCBmb3JjZSkgewogICAgICB2YXIgZiA9ICQoc2VsLCByb290RWwpOwogICAgICBpZiAoZiAmJiAoZm9yY2UgfHwgIWNvYXJzZSgpKSkgeyBzYWZlRm9jdXMoZik7IH0KICAgIH0KICAgIGlmIChzdGVwcyAmJiAhbW9iaWxlKSB7CiAgICAgIHZhciByelQgPSAwOwogICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZnVuY3Rpb24gKCkgeyBjbGVhclRpbWVvdXQocnpUKTsgcnpUID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IGlmIChzdC5zdGVwID09PSAyICYmICFwZW5kaW5nU3RlcCkgeyByb290RWwuc3R5bGUubWluSGVpZ2h0ID0gJyc7IH0gfSwgMTUwKTsgfSk7CiAgICB9CiAgICAvKiBHZXQgUXVvdGUgd2l0aCBhIHN0ZXAgbWlzc2luZyDihpIgZXhwbGFpbiwgdGhlbiBzbGlkZSB0byB0aGUgc3RlcCB0aGF0IG5lZWRzIGZpbGxpbmcgKi8KICAgIGZ1bmN0aW9uIHJlcXVpcmVTdGVwcygpIHsKICAgICAgaWYgKCFyb3V0ZU9rKCkpIHsKICAgICAgICBzaG93Tm90aWNlKHsgdGl0bGU6ICdXZSBzdGlsbCBuZWVkIHlvdXIgdHJpcCBkZXRhaWxzJywgdGV4dDogc3QudGFiID09PSAnbXVsdGknID8gJ0FkZCB3aGVyZSBlYWNoIGxlZyBmbGllcyBmcm9tIGFuZCB0bywgdGhlbiBzZW5kIHlvdXIgcmVxdWVzdC4nIDogJ0FkZCB3aGVyZSB5b3XigJlyZSBmbHlpbmcgZnJvbSBhbmQgdG8sIHRoZW4gc2VuZCB5b3VyIHJlcXVlc3QuJywgYnV0dG9uOiAnQWRkIHRyaXAgZGV0YWlscycsCiAgICAgICAgICBvbk9rOiBmdW5jdGlvbiAoKSB7IHN3aXRjaFN0ZXAoMSwgc3QudGFiID09PSAnbXVsdGknID8gKChzdC5sZWdzWzBdICYmIHN0LmxlZ3NbMF0uZnJvbSkgPyAnaW5wdXRbZGF0YS1sZWctZmllbGQ9InRvIl0nIDogJ2lucHV0W2RhdGEtbGVnLWZpZWxkPSJmcm9tIl0nKSA6IChzdC5mcm9tID8gJ2lucHV0W2RhdGEtZmllbGQ9InRvIl0nIDogJ2lucHV0W2RhdGEtZmllbGQ9ImZyb20iXScpKTsgfSB9KTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICAgaWYgKCFjb250YWN0T2soKSkgewogICAgICAgIHNob3dOb3RpY2UoeyB0aXRsZTogJ1dlIHN0aWxsIG5lZWQgeW91ciBjb250YWN0IGluZm8nLCB0ZXh0OiAnQWRkIHlvdXIgbmFtZSwgZW1haWwgYW5kIHBob25lIHNvIGEgY2hhcnRlciBhZHZpc29yIGNhbiByZXBseSB3aXRoIHlvdXIgcXVvdGUuJywgYnV0dG9uOiAnQWRkIGNvbnRhY3QgaW5mbycsCiAgICAgICAgICBvbk9rOiBmdW5jdGlvbiAoKSB7IHN3aXRjaFN0ZXAoMiwgIXN0LmZpcnN0ID8gJ2lucHV0W2RhdGEtZmllbGQ9ImZpcnN0Il0nIDogIXN0Lmxhc3QgPyAnaW5wdXRbZGF0YS1maWVsZD0ibGFzdCJdJyA6ICFzdC5lbWFpbCA/ICdpbnB1dFtkYXRhLWZpZWxkPSJlbWFpbCJdJyA6ICdpbnB1dFtkYXRhLWZpZWxkPSJwaG9uZSJdJyk7IH0gfSk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgLyogc3VibWl0dGVkIGNvbnRhY3QgZGV0YWlscyBmb3IgdGhlIHN1Y2Nlc3Mgc2NyZWVucyAqLwogICAgZnVuY3Rpb24gZGV0YWlsUm93cygpIHsKICAgICAgdmFyIHJvd3MgPSBbeyBrOiAnTmFtZScsIHY6IHN0Lm5hbWUgfSwgeyBrOiAnRW1haWwnLCB2OiBzdC5lbWFpbCB9LCB7IGs6ICdQaG9uZScsIHY6IHN0LnBob25lIH1dOwogICAgICBpZiAoc3QudGltZSAmJiBzdC50YWIgIT09ICdtdWx0aScpIHsgcm93cy5wdXNoKHsgazogJ0RlcGFydCB0aW1lJywgdjogc3QudGltZSB9KTsgfQogICAgICBpZiAoc3QucmV0VGltZSAmJiBzdC50YWIgPT09ICdyb3VuZHRyaXAnKSB7IHJvd3MucHVzaCh7IGs6ICdSZXR1cm4gdGltZScsIHY6IHN0LnJldFRpbWUgfSk7IH0KICAgICAgaWYgKHN0LmZseU5vdykgeyByb3dzLnB1c2goeyBrOiAnRmxpZXMgbm93Jywgdjogc3QuZmx5Tm93IH0pOyB9CiAgICAgIGlmIChzdC5mbHlGcmVxKSB7IHJvd3MucHVzaCh7IGs6ICdQZXIgeWVhcicsIHY6IHN0LmZseUZyZXEgfSk7IH0KICAgICAgaWYgKHN0LnJlZmVycmFsKSB7IHJvd3MucHVzaCh7IGs6ICdSZWZlcnJhbCcsIHY6IHN0LnJlZmVycmFsIH0pOyB9CiAgICAgIGlmIChzdC5ub3RlcykgeyByb3dzLnB1c2goeyBrOiAnTWVzc2FnZScsIHY6IHN0Lm5vdGVzIH0pOyB9CiAgICAgIHJldHVybiByb3dzOwogICAgfQogICAgZnVuY3Rpb24gcmVuZGVyKCkgewogICAgICBpZiAoc3VibWl0dGVkKSB7CiAgICAgICAgdmFyIGhlYWRpbmcgPSBzdC5uYW1lID8gJ1RoYW5rcywgJyArIGZpcnN0TmFtZShzdC5uYW1lKSArICcuJyA6ICdZb3XigJlyZSBvbiBvdXIgcmFkYXIuJzsKICAgICAgICB2Y
1892XIgc3VjY2VzcyA9IG1vYmlsZQogICAgICAgICAgPyBzdWNjZXNzTW9iaWxlKHsgaGVhZGluZzogJ1dl4oCZdmUgZ290IGl0JyArIChzdC5uYW1lID8gJywgJyArIGZpcnN0TmFtZShzdC5uYW1lKSA6ICcnKSArICcuJywgc3ViOiAnQSBjaGFydGVyIGFkdmlzb3Igd2lsbCByZXZpZXcgeW91ciByZXF1ZXN0IGFuZCBiZSBpbiB0b3VjaCBzaG9ydGx5LicsIHJvd3M6IHF1b3RlUm93cyhzdCkuY29uY2F0KGRldGFpbFJvd3MoKS5zbGljZSgzKSkgfSkKICAgICAgICAgIDogc3VjY2Vzc0Rlc2t0b3AoeyBleWVicm93OiAnUmVxdWVzdCByZWNlaXZlZCcsIGhlYWRpbmc6IGhlYWRpbmcsIHN1YjogJ1dl4oCZdmUgbG9nZ2VkIHlvdXIgdHJpcCDigJQgYSBjaGFydGVyIGFkdmlzb3Igd2lsbCByZXZpZXcgaXQgYW5kIHJlcGx5IHdpdGggYWlyY3JhZnQgb3B0aW9ucy4nLCByZWNlaXB0OiByb3V0ZVJlY2VpcHQoc3QpLCByb3dzOiBkZXRhaWxSb3dzKCksIHN0ZXBzOiBRVU9URV9TVEVQUywgd2lkZTogdHJ1ZSwgc3RlcHNMZWZ0OiBzdGVwcyB9KTsKICAgICAgICByb290RWwuaW5uZXJIVE1MID0gc3RlcHMgPyAobW9iaWxlID8gJzxkaXYgY2xhc3M9InFmLWJvZHkgcWYtbm9oZWFkIj4nICsgc3VjY2VzcyArICc8L2Rpdj4nIDogcXBIZWFkKHRydWUpICsgJzxkaXYgY2xhc3M9InFwLWJvZHkgcXAtc3VjY2VzcyI+JyArIHN1Y2Nlc3MgKyAnPC9kaXY+JykgOiBzdWNjZXNzOwogICAgICAgIGlmICghc3RlcHMgJiYgIW1vYmlsZSAmJiBsb2NrZWRIKSB7ICAgLyogY2FyZCB2YXJpYW50OiByZWNlaXB0IGNlbnRyZWQgaW4gdGhlIHNwYWNlIHRoZSBmb3JtIG9jY3VwaWVkICovCiAgICAgICAgICB2Y
1892XIgY3MgPSBnZXRDb21wdXRlZFN0eWxlKHJvb3RFbCksIGlubmVyID0gbG9ja2VkSCAtIHBhcnNlRmxvYXQoY3MucGFkZGluZ1RvcCkgLSBwYXJzZUZsb2F0KGNzLnBhZGRpbmdCb3R0b20pOwogICAgICAgICAgdmFyIGZ4ID0gJCgnLmZzeCcsIHJvb3RFbCk7IGlmIChmeCkgeyBmeC5zdHlsZS5taW5IZWlnaHQgPSBNYXRoLm1heCgwLCBpbm5lcikgKyAncHgnOyB9CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB2YXIga2VlcCA9IGZvY3VzS2V5KGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpOwogICAgICByb290RWwuaW5uZXJIVE1MID0gc3RlcHMgPyAobW9iaWxlID8gYm94ZWRGb3JtKCkgOiBwb2xpc2hlZEZvcm0oKSkgOiB0cmlwSHRtbCgpICsgY29udGFjdEh0bWwoKTsKICAgICAgYmluZCgpOwogICAgICBpZiAoa2VlcCAmJiAhcGVuZGluZ1N0ZXApIHsgdmFyIGtmID0gJChrZWVwLCByb290RWwpOyBpZiAoa2YgJiYgIWtmLmRpc2FibGVkICYmICFjb2Fyc2UoKSkgeyBzYWZlRm9jdXMoa2YpOyB9IH0KICAgIH0KICAgIC8qIHNlbGVjdG9yIHRoYXQgc3Vydml2ZXMgYW4gaW5uZXJIVE1MIHN3YXAsIHNvIGEgcmUtcmVuZGVyICh0YWIsIHBheCwgc3dhcCwgbGVncykga2VlcHMga2V5Ym9hcmQgZm9jdXMgKi8KICAgIGZ1bmN0aW9uIGZvY3VzS2V5KGVsKSB7CiAgICAgIGlmICghZWwgfHwgZWwgPT09IGRvY3VtZW50LmJvZHkgfHwgIXJvb3RFbC5jb250YWlucyhlbCkpIHsgcmV0dXJuIG51bGw7IH0KICAgICAgdmFyIGsgPSBbJ2RhdGEtcScsICdkYXRhLXRhYicsICdkYXRhLWZpZWxkJywgJ2RhdGEtbGVnLWZpZWxkJywgJ2RhdGEtbGVnLWlkeCcsICdkYXRhLWlkeCcsICdkYXRhLXBpY2tlcicsICdkYXRhLWVkaXQnLCAnZGF0YS1zdGVwJ10ubWFwKGZ1bmN0aW9uIChhKSB7IHZhciB2ID0gZWwuZ2V0QXR0cmlidXRlKGEpOyByZXR1cm4gdiA9PSBudWxsID8gJycgOiAnWycgKyBhICsgJz0iJyArIHYgKyAnIl0nOyB9KS5qb2luKCcnKTsKICAgICAgcmV0dXJuIGsgfHwgbnVsbDsKICAgIH0KICAgIGZ1bmN0aW9uIHVwZGF0ZVJldmlldygpIHsgdm9pZCByZXZpZXdCb2R5OyB9CiAgICBmdW5jdGlvbiBiaW5kKCkgewogICAgICAvKiBhMTF5OiBuYW1lIGVhY2ggY29udHJvbCBmcm9tIGl0cyB2aXNpYmxlIGxhYmVsIChsYWJlbHMgYXJlIHNwYW5zIC8gdW5saW5rZWQgPGxhYmVsPnMpICovCiAgICAgICQkKCcucXAtbGFiZWwsIC5xZi1sYWJlbCcsIHJvb3RFbCkuZm9yRWFjaChmdW5jdGlvbiAobGFiKSB7CiAgICAgICAgdmFyIHdyYXAgPSBsYWIucGFyZW50Tm9kZTsgaWYgKCF3cmFwIHx8IHdyYXAuY2xhc3NMaXN0LmNvbnRhaW5zKCdxZi1sZWdzJykpIHsgcmV0dXJuOyB9CiAgICAgICAgdmFyIGN0bCA9IHdyYXAucXVlcnlTZWxlY3RvcignaW5wdXQ6bm90KFthcmlhLWxhYmVsXSksIHNlbGVjdDpub3QoW2FyaWEtbGFiZWxdKSwgdGV4dGFyZWE6bm90KFthcmlhLWxhYmVsXSksIGJ1dHRvbltkYXRhLXE9InBpY2tlciJdOm5vdChbYXJpYS1sYWJlbF0pJyk7CiAgICAgICAgaWYgKCFjdGwgfHwgKGN0bC5sYWJlbHMgJiYgY3RsLmxhYmVscy5sZW5ndGgpKSB7IHJldHVybjsgfQogICAgICAgIHZhciB0eHQgPSAobGFiLnRleHRDb250ZW50IHx8ICcnKS5yZXBsYWNlKC9ccysvZywgJyAnKS50cmltKCk7CiAgICAgICAgaWYgKHR4dCkgeyBjdGwuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgdHh0KTsgfQogICAgICB9KTsKICAgICAgJCQoJ1tkYXRhLXE9InRhYiJdJywgcm9vdEVsKS5mb3JFYWNoKGZ1bmN0aW9uIChiKSB7IGIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7IHN0LnRhYiA9IGIuZ2V0QXR0cmlidXRlKCdkYXRhLXRhYicpOyBlcnJvck1zZyA9ICcnOyByZW5kZXIoKTsgfSk7IH0pOwogICAgICAkJCgnW2RhdGEtZmllbGRdJywgcm9vdEVsKS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgewogICAgICAgIHZhciBoYW5kbGVyID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgc3RbZWwuZ2V0QXR0cmlidXRlKCdkYXRhLWZpZWxkJyldID0gZWwudmFsdWU7CiAgICAgICAgICBpZiAoZWwudGFnTmFtZSA9PT0gJ1NFTEVDVCcpIHsgZWwuY2xhc3NMaXN0LnRvZ2dsZSgnZW1wdHknLCAhZWwudmFsdWUpOyB9CiAgICAgICAgICB1cGRhdGVSZXZpZXcoKTsKICAgICAgICB9OwogICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgaGFuZGxlcik7CiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgaGFuZGxlcik7CiAgICAgIH0pOwogICAgICAkJCgnW2RhdGEtbGVnLWZpZWxkXScsIHJvb3RFbCkuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsKICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHZhciBpZHggPSBwYXJzZUludChlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtbGVnLWlkeCcpLCAxMCk7CiAgICAgICAgICBzdC5sZWdzW2lkeF1bZWwuZ2V0QXR0cmlidXRlKCdkYXRhLWxlZy1maWVsZCcpXSA9IGVsLnZhbHVlOwogICAgICAgICAgdXBkYXRlUmV2aWV3KCk7CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgICAkJCgnW2RhdGEtcT0ibmV4dCJdJywgcm9vdEVsKS5mb3JFYWNoKGZ1bmN0aW9uIChiKSB7IGIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBnb1N0ZXAyKTsgfSk7CiAgICAgICQkKCdbZGF0YS1xPSJiYWNrIl0nLCByb290RWwpLmZvckVhY2goZnVuY3Rpb24gKGIpIHsgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsgZXJyb3JNc2cgPSAnJzsgc3dpdGNoU3RlcCgxKTsgfSk7IH0pOwogICAgICAkJCgnW2RhdGEtcT0iZ28tc3RlcCJdJywgcm9vdEVsKS5mb3JFYWNoKGZ1bmN0aW9uIChiKSB7IGIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7IGVycm9yTXNnID0gJyc7IHN3aXRjaFN0ZXAocGFyc2VJbnQoYi5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3RlcCcpLCAxMCkpOyB9KTsgfSk7CiAgICAgIHZhciBzd2FwID0gJCgnW2RhdGEtcT0ic3dhcCJdJywgcm9vdEVsKTsKICAgICAgaWYgKHN3YXApIHsgc3dhcC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsgdmFyIHQgPSBzdC5mcm9tOyBzdC5mcm9tID0gc3QudG87IHN0LnRvID0gdDsgcmVuZGVyKCk7IH0pOyB9CiAgICAgI
1892HZhciBtaW51cyA9ICQoJ1tkYXRhLXE9InBheC1taW51cyJdJywgcm9vdEVsKSwgcGx1cyA9ICQoJ1tkYXRhLXE9InBheC1wbHVzIl0nLCByb290RWwpOwogICAgICBpZiAobWludXMpIHsgbWludXMuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7IHN0LnBheCA9IE1hdGgubWF4KDEsIChwYXJzZUludChzdC5wYXgsIDEwKSB8fCAxKSAtIDEpOyByZW5kZXIoKTsgfSk7IH0KICAgICAgaWYgKHBsdXMpIHsgcGx1cy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsgc3QucGF4ID0gTWF0aC5taW4oMTksIChwYXJzZUludChzdC5wYXgsIDEwKSB8fCAwKSArIDEpOyByZW5kZXIoKTsgfSk7IH0KICAgICAgJCQoJ1tkYXRhLXE9ImxlZy1yZW1vdmUiXScsIHJvb3RFbCkuZm9yRWFjaChmdW5jdGlvbiAoYikgeyBiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgeyBzdC5sZWdzLnNwbGljZShwYXJzZUludChiLmdldEF0dHJpYnV0ZSgnZGF0YS1pZHgnKSwgMTApLCAxKTsgcmVuZGVyKCk7IH0pOyB9KTsKICAgICAgdmFyIGFkZCA9ICQoJ1tkYXRhLXE9ImxlZy1hZGQiXScsIHJvb3RFbCk7CiAgICAgIGlmIChhZGQpIHsgYWRkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgeyBzdC5sZWdzLnB1c2goeyBmcm9tOiAnJywgdG86ICcnLCBkYXRlOiAnJywgdGltZTogJycgfSk7IHJlbmRlcigpOyB9KTsgfQogICAgICAkJCgnW2RhdGEtcT0icGlja2VyIl0nLCByb290RWwpLmZvckVhY2goZnVuY3Rpb24gKGIpIHsKICAgICAgICBiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgIHZhciBwID0gYi5nZXRBdHRyaWJ1dGUoJ2RhdGEtcGlja2VyJyksIGVkaXQgPSBiLmdldEF0dHJpYnV0ZSgnZGF0YS1lZGl0Jyk7CiAgICAgICAgICBpZiAocCA9PT0gJ3J0JykgewogICAgICAgICAgICBvcGVuRGF0ZVNoZWV0KHsgbW9kZTogJ3JhbmdlJywgdmFsdWU6IHsgc3RhcnQ6IHBhcnNlSVNPKHN0LmRlcGFydCksIGVuZDogcGFyc2VJU08oc3QucmV0KSB9LCBpbml0aWFsRm9jdXM6IGVkaXQgPT09ICdlbmQnID8gJ2VuZCcgOiAnc3RhcnQnLCB0aXRsZTogJ1JvdW5kIHRyaXAgZGF0ZXMnLCBzdGFydExhYmVsOiAnRGVwYXJ0JywgZW5kTGFiZWw6ICdSZXR1cm4nLAogICAgICAgICAgICAgIG9uQ29tbWl0OiBmdW5jdGlvbiAodikgeyBzdC5kZXBhcnQgPSB2ICYmIHYuc3RhcnQgPyB0b0lTTyh2LnN0YXJ0KSA6ICcnOyBzdC5yZXQgPSB2ICYmIHYuZW5kID8gdG9JU08odi5lbmQpIDogJyc7IHJlbmRlcigpOyB9IH0pOwogICAgICAgICAgfSBlbHNlIGlmIChwID09PSAnb3cnKSB7CiAgICAgICAgICAgIG9wZW5EYXRlU2hlZXQoeyBtb2RlOiAnc2luZ2xlJywgdmFsdWU6IHBhcnNlSVNPKHN0LmRlcGFydCksIHRpdGxlOiAnRGVwYXJ0dXJlIGRhdGUnLCBvbkNvbW1pdDogZnVuY3Rpb24gKGQpIHsgc3QuZGVwYXJ0ID0gZCA/IHRvSVNPKGQpIDogJyc7IHJlbmRlcigpOyB9IH0pOwogICAgICAgICAgfSBlbHNlIGlmIChwLmluZGV4T2YoJ2xlZy0nKSA9PT0gMCkgewogICAgICAgICAgICB2Y
1892XIgbGkgPSBwYXJzZUludChwLnNwbGl0KCctJylbMV0sIDEwKTsKICAgICAgICAgICAgb3BlbkRhdGVTaGVldCh7IG1vZGU6ICdzaW5nbGUnLCB2YWx1ZTogcGFyc2VJU08oc3QubGVnc1tsaV0gPyBzdC5sZWdzW2xpXS5kYXRlIDogJycpLCB0aXRsZTogJ0xlZyAnICsgKGxpICsgMSkgKyAnIGRhdGUnLCBvbkNvbW1pdDogZnVuY3Rpb24gKGQpIHsgaWYgKHN0LmxlZ3NbbGldKSB7IHN0LmxlZ3NbbGldLmRhdGUgPSBkID8gdG9JU08oZCkgOiAnJzsgfSByZW5kZXIoKTsgfSB9KTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICAgIHZhciBzdWJtaXQgPSAkKCdbZGF0YS1xPSJzdWJtaXQiXScsIHJvb3RFbCk7CiAgICAgIGlmIChzdWJtaXQpIHsgc3VibWl0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlU3VibWl0KTsgfQogICAgICBlbmhhbmNlU2VsZWN0cyhyb290RWwpOwogICAgfQogICAgZnVuY3Rpb24gaGFuZGxlU3VibWl0KCkgewogICAgICBpZiAoZHNTdGF0ZS5vcGVuIHx8IG5vdGljZU9wZW4pIHsgcmV0dXJuOyB9CiAgICAgIGVycm9yTXNnID0gJyc7CiAgICAgIGlmIChzdGVwcykgeyBzdC5uYW1lID0gKChzdC5maXJzdCB8fCAnJykgKyAnICcgKyAoc3QubGFzdCB8fCAnJykpLnRyaW0oKTsgfQogICAgICBpZiAoc3RlcHMgJiYgIW1vYmlsZSAmJiAhcmVxdWlyZVN0ZXBzKCkpIHsgcmV0dXJuOyB9CiAgICAgIGlmICghc3QubmFtZSB8fCAhc3QuZW1haWwgfHwgIXN0LnBob25lKSB7IGVycm9yTXNnID0gJ1BsZWFzZSBhZGQgeW91ciBuYW1lLCBlbWFpbCBhbmQgcGhvbmUuJzsgcmVuZGVyKCk7IHJldHVybjsgfQogICAgICBzZW5kaW5nID0gdHJ1ZTsgcmVuZGVyKCk7CiAgICAgIHZhciB1c2VyTXNnID0gc3Qubm90ZXMgfHwgJyc7CiAgICAgIGlmIChzdC50YWIgPT09ICdtdWx0aScgJiYgc3QubGVncy5sZW5ndGgpIHsKICAgICAgICB1c2VyTXNnID0gKHVzZXJNc2cgPyB1c2VyTXNnICsgJ1xuXG4nIDogJycpICsgJ011bHRpLWNpdHkgaXRpbmVyYXJ5OlxuJyArIHN0LmxlZ3MubWFwKGZ1bmN0aW9uIChsLCBpKSB7IHJldHVybiAnTGVnICcgKyAoaSArIDEpICsgJzogJyArIChsLmZyb20gfHwgJz8nKSArICcg4oaSICcgKyAobC50byB8fCAnPycpICsgKGwuZGF0ZSA/ICcgb24gJyArIGwuZGF0ZSA6ICcnKSArIChsLnRpbWUgPyAnICcgKyBsLnRpbWUgOiAnJyk7IH0pLmpvaW4oJ1xuJyk7CiAgICAgIH0KICAgICAgdmFyIGdvUmVmID0gY2FwdHVyZVJlZmVycmFsKCk7CiAgICAgIHZhciBleHRyYSA9IFtdOwogICAgICBpZiAoc3QuZmx5Tm93KSB7IGV4dHJhLnB1c2goeyBsYWJlbDogJ0hvdyB0aGV5IGZseSBub3cnLCB2YWx1ZTogc3QuZmx5Tm93IH0pOyB9CiAgICAgIGlmIChzdC5mbHlGcmVxKSB7IGV4dHJhLnB1c2goeyBsYWJlbDogJ1ByaXZhdGUgZmxpZ2h0cyBwZXIgeWVhcicsIHZhbHVlOiBzdC5mbHlGcmVxIH0pOyB9CiAgICAgIHZhciBwYXlsb2FkID0gewogICAgICAgIHNvdXJjZTogU1JDICsgJy0nICsgKG1vYmlsZSA/ICdtb2JpbGUnIDogJ2Rlc2t0b3AnKSwga2luZDogJ3F1b3RlJywgcGFnZTogUEFHRSwgdGFiOiBzdC50YWIsCiAgICAgICAgbmFtZTogc3QubmFtZSwgZW1haWw6IHN0LmVtYWlsLCBwaG9uZTogc3QucGhvbmUsIG1lc3NhZ2U6IHVzZXJNc2csCiAgICAgICAgZnJvbTogc3QudGFiID09PSAnbXVsdGknID8gJycgOiBzdC5mcm9tLCB0bzogc3QudGFiID09PSAnbXVsdGknID8gJycgOiBzdC50bywKICAgICAgICB0cmF2ZWxEYXRlOiBzdC50YWIgPT09ICdtdWx0aScgPyAnJyA6IHN0LmRlcGFydCwgcmV0dXJuRGF0ZTogc3QudGFiID09PSAncm91bmR0cmlwJyA/IHN0LnJldCA6ICcnLAogICAgICAgIHRyYXZlbFRpbWU6IHN0LnRhYiA9PT0gJ211bHRpJyA/ICcnIDogc3QudGltZSwgcmV0dXJuVGltZTogc3QudGFiID09PSAncm91bmR0cmlwJyA/IHN0LnJldFRpbWUgOiAnJywgcGF4OiBzdC5wYXgsIGxlZ3M6IHN0LnRhYiA9PT0gJ211bHRpJyA/IHN0LmxlZ3MgOiBbXSwKICAgICAgICByZWZlcnJhbDogc3QucmVmZXJyYWwsIGdvUmVmZXJyYWw6IGdvUmVmLCBleHRyYTogZXh0cmEsIGdlYXI6IFtdLCBjYXRlcmluZzogJ05vbmUnLCBlc3RpbWF0ZXM6IFtdCiAgICAgI
1892H07CiAgICAgIHRyYWNrRXZlbnQoJ2Zvcm1fc3VibWl0JywgeyBmb3JtOiAncXVvdGUtJyArIHZhcmlhbnQgKyAobW9iaWxlID8gJy1tb2JpbGUnIDogJycpLCB0YWI6IHN0LnRhYiB9KTsKICAgICAgdmFyIGRvbmUgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgc3VibWl0dGVkID0gdHJ1ZTsgc2VuZGluZyA9IGZhbHNlOwogICAgICAgIGlmICghbW9iaWxlKSB7CiAgICAgICAgICAvKiBrZWVwIHRoZSBjYXJkIHRoZSBzaXplIHRoZSB2aXNpdG9yIGlzIGxvb2tpbmcgYXQgYW5kIGNyb3NzZmFkZSBpbnRvIHRoZSByZWNlaXB0ICovCiAgICAgICAgICBsb2NrZWRIID0gcm9vdEVsLm9mZnNldEhlaWdodDsgcm9vdEVsLnN0eWxlLm1pbkhlaWdodCA9IGxvY2tlZEggKyAncHgnOyByb290RWwuc3R5bGUuY29udGFpbmVyVHlwZSA9ICdpbmxpbmUtc2l6ZSc7CiAgICAgICAgICByb290RWwuY2xhc3NMaXN0LmFkZCgncXAtc3dpdGNoaW5nJyk7CiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmVuZGVyKCk7IHJvb3RFbC5jbGFzc0xpc3QucmVtb3ZlKCdxcC1zd2l0Y2hpbmcnKTsgcm9vdEVsLmNsYXNzTGlzdC5hZGQoJ3FwLWVudGVyJyk7IHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7IHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7IHJvb3RFbC5jbGFzc0xpc3QucmVtb3ZlKCdxcC1lbnRlcicpOyB9KTsgfSk7IH0sIDE3MCk7CiAgICAgICAgfSBlbHNlIHsgcmVuZGVyKCk7IH0KICAgICAgICBpZiAocm9vdEVsLnNjcm9sbEludG9WaWV3KSB7IHJvb3RFbC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICduZWFyZXN0JyB9KTsgfQogICAgICB9OwogICAgICBwb3N0TGVhZChwYXlsb2FkKS50aGVuKGRvbmUsIGRvbmUpOwogICAgfQogICAgcmVuZGVyKCk7CiAgfQogIGZ1bmN0aW9uIGluaXRRdW90ZVJvb3RzKCkgeyAkJCgnW2RhdGEtYXZjLXF1b3RlXScsIHJvb3QpLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IG1vdW50UXVvdGUoZWwpOyB9KTsgfQoKICAvKiDilIDilIDilIAgbm90aWNlIGRpYWxvZyAoIndlIHN0aWxsIG5lZWQgeW91ciB0cmlwIGRldGFpbHMgLyBjb250YWN0IGluZm8iKSDilIDilIDilIAgKi8KICBmdW5jdGlvbiBzaG93Tm90aWNlKG8pIHsKICAgIHZhciBuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F2Yy1ub3RpY2UnKSwgYmQgPSAkKCcuYXZjIC5xbi1iYWNrZHJvcCcpOwogICAgaWYgKCFuKSB7IGlmIChvLm9uT2spIHsgby5vbk9rKCk7IH0gcmV0dXJuOyB9CiAgICAkKCcucW4tdGl0bGUnLCBuKS50ZXh0Q29udGVudCA9IG8udGl0bGUgfHwgJyc7CiAgICAkKCcucW4tdGV4dCcsIG4pLnRleHRDb250ZW50ID0gby50ZXh0IHx8ICcnOwogICAgJCgnLnFuLWJ0bicsIG4pLnRleHRDb250ZW50ID0gby5idXR0b24gfHwgJ09LJzsKICAgIG5vdGljZUNiID0gby5vbk9rIHx8IG51bGw7CiAgICBub3RpY2VQcmV2ID0gKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gZG9jdW1lbnQuYm9keSkgPyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IDogbnVsbDsKICAgIG4uY2xhc3NMaXN0LmFkZCgnb3BlbicpOyBpZiAoYmQpIHsgYmQuY2xhc3NMaXN0LmFkZCgnb3BlbicpOyB9CiAgICBuLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTsKICAgIG5vdGljZU9wZW4gPSB0cnVlOyBub3RpY2VBdCA9IERhdGUubm93KCk7IHNldExvY2soKTsKICAgIGNsZWFyVGltZW91dChub3RpY2VGb2N1c1QpOwogICAgbm90aWNlRm9jdXNUID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IGlmIChub3RpY2VPcGVuKSB7IHNhZmVGb2N1cygkKCcucW4tYnRuJywgbikpOyB9IH0sIDMwKTsKICB9CiAgZnVuY3Rpb24gY2xvc2VOb3RpY2UoKSB7CiAgICB2YXIgbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdmMtbm90aWNlJyksIGJkID0gJCgnLmF2YyAucW4tYmFja2Ryb3AnKTsKICAgIGlmICghbiB8fCAhbm90aWNlT3BlbikgeyByZXR1cm47IH0KICAgIGNsZWFyVGltZW91dChub3RpY2VGb2N1c1QpOwogICAgbi5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyk7IGlmIChiZCkgeyBiZC5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyk7IH0KICAgIG4uc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7CiAgICBub3RpY2VPcGVuID0gZmFsc2U7IHNldExvY2soKTsKICAgIHZhciBjYiA9IG5vdGljZUNiLCBwcmV2ID0gbm90aWNlUHJldjsgbm90aWNlQ2IgPSBudWxsOyBub3RpY2VQcmV2ID0gbnVsbDsKICAgIGlmIChwcmV2ICYmIGRvY3VtZW50LmNvbnRhaW5zKHByZXYpKSB7IHNhZmVGb2N1cyhwcmV2KTsgfQogICAgaWYgKGNiKSB7IGNiKCk7IH0KICB9CgogIC8qIOKUgOKUgOKUgCBxdW90ZSBtb2RhbCBzaGVldCAoRGVzdCAzLjAgY2xvbmUpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqLwogIHZhciBtb2RhbFJlc2V0ID0gbnVsbDsKICBmdW5jdGlvbiBpbml0TW9kYWwoKSB7CiAgICB2YXIgc2hlZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXZjLW1vZGFsJyk7CiAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdmMtbW9kYWwtY29udGVudCcpOwogICAgdmFyIHRpdGxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F2Yy1tb2RhbC10aXRsZScpOwogICAgdmFyIHN1YiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdmMtbW9kYWwtc3ViJyk7CiAgICBpZiAoIXNoZWV0IHx8ICFjb250ZW50KSB7IHJldHVybjsgfQogICAgZnVuY3Rpb24gZnJlc2hTdGF0ZSgpIHsgcmV0dXJuIHsgbW9kZTogJ3J0JywgZnJvbTogJycsIHRvOiAnJywgcnRSYW5nZTogbnVsbCwgb3dEYXRlOiBudWxsLCBsZWdzOiBbe30sIHt9XSwgbGVnRGF0ZXM6IHt9LCBwYXg6ICcnLCB0aW1lOiAnJywgbmFtZTogJycsIHBob25lOiAnJywgZW1haWw6ICcnLCBub3RlczogJycgfTsgfQogICAgdmFyIHN0ID0gZnJlc2hTdGF0ZSgpOwogICAgdmFyIHN1Ym1pdHRlZCA9IGZhbHNlLCBzZW5kaW5nID0gZmFsc2UsIGVycm9yTXNnID0gJyc7CiAgICBtb2RhbFJlc2V0ID0gZnVuY3Rpb24gKCkgeyBpZiAoc3VibWl0dGVkKSB7IHN1Ym1pdHRlZCA9IGZhbHNlOyBzZW5kaW5nID0gZmFsc2U7IGVycm9yTXNnID0gJyc7IHN0ID0gZnJlc2hTdGF0ZSgpOyByZW5kZXIoKTsgfSB9OwogICAgZnVuY3Rpb24gZGF0ZUNlbGwocGlja2VyLCBlZGl0LCBkLCBwaCkgewogICAgICByZXR1cm4gJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icW0tY2VsbCIgZGF0YS1waWNrZXI9IicgKyBwaWNrZXIgKyAnIicgKyAoZWRpdCA/ICcgZGF0YS1lZGl0PSInICsgZWRpdCArICciJyA6ICcnKSArICc+JyArIElDT04uY2FsICsgJzxzcGFuIGNsYXNzPSJkdicgKyAoZCA/ICcnIDogJyBwaCcpICsgJyI+JyArIChkID8gZXNjKGZtdFNob3J0KGQpKSA6IHBoKSArICc8L3NwYW4+PC9idXR0b24+JzsKICAgIH0KICAgIGZ1bmN0aW9uIHJlbmRlcigpIHsKICAgICAgaWYgKHN1Ym1pdHRlZCkgewogICAgICAgI
1892HZhciBmbiA9IGZpcnN0TmFtZShzdC5uYW1lKSB8fCAndGhlcmUnOwogICAgICAgIHRpdGxlLmlubmVySFRNTCA9ICdXZeKAmXZlIGdvdCB5b3VyIGRldGFpbHMuJzsKICAgICAgICBzdWIudGV4dENvbnRlbnQgPSAnT3VyIHRlYW0gd2lsbCByZXZpZXcgeW91ciBpbnF1aXJ5IGFuZCByZXNwb25kIGFzIHNvb24gYXMgcG9zc2libGUuJzsKICAgICAgICB2YXIgcm93cyA9IFt7IGs6ICdUcmlwJywgdjogc3QubW9kZSA9PT0gJ3J0JyA/ICdSb3VuZCB0cmlwJyA6IChzdC5tb2RlID09PSAnb3cnID8gJ09uZSB3YXknIDogJ011bHRpLWNpdHknKSB9XTsKICAgICAgICBpZiAoc3QubW9kZSA9PT0gJ21jJykgewogICAgICAgICAgc3QubGVncy5mb3JFYWNoKGZ1bmN0aW9uIChsLCBpKSB7IHZhciBkdCA9IHN0LmxlZ0RhdGVzW2ldOyByb3dzLnB1c2goeyBrOiAnTGVnICcgKyAoaSArIDEpLCB2OiAobC5mcm9tIHx8ICfigJQnKSArICcg4oaSICcgKyAobC50byB8fCAn4oCUJykgKyAnIMK3ICcgKyAoZHQgPyBmbXRMb25nKGR0KSA6ICdEYXRlIFRCRCcpICsgKGwudGltZSA/ICcgwrcgJyArIGwudGltZSA6ICcnKSB9KTsgfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHJvd3MucHVzaCh7IGs6ICdSb3V0ZScsIHY6IChzdC5mcm9tIHx8ICfigJQnKSArICcg4oaSICcgKyAoc3QudG8gfHwgJ+KAlCcpIH0pOwogICAgICAgICAgaWYgKHN0Lm1vZGUgPT09ICdydCcpIHsgdmFyIHMgPSBzdC5ydFJhbmdlICYmIHN0LnJ0UmFuZ2Uuc3RhcnQsIGUgPSBzdC5ydFJhbmdlICYmIHN0LnJ0UmFuZ2UuZW5kOyByb3dzLnB1c2goeyBrOiAnRGF0ZXMnLCB2OiAocyA/IGZtdFNob3J0KHMpIDogJ1RCRCcpICsgJyDihpIgJyArIChlID8gZm10U2hvcnQoZSkgOiAnVEJEJykgKyAocyA/ICcsICcgKyBzLmdldEZ1bGxZZWFyKCkgOiAnJykgfSk7IH0KICAgICAgICAgIGVsc2UgeyByb3dzLnB1c2goeyBrOiAnRGF0ZScsIHY6IHN0Lm93RGF0ZSA/IGZtdExvbmcoc3Qub3dEYXRlKSA6ICdUQkQnIH0pOyB9CiAgICAgICAgICBpZiAoc3QudGltZSkgeyByb3dzLnB1c2goeyBrOiAnVGltZScsIHY6IHN0LnRpbWUgfSk7IH0KICAgICAgICB9CiAgICAgICAgaWYgKHN0LnBheCkgeyByb3dzLnB1c2goeyBrOiAnUGF4Jywgdjogc3QucGF4IH0pOyB9CiAgICAgICAgcm93cy5wdXNoKHsgazogJ0NvbnRhY3QnLCB2OiBzdC5uYW1lICsgJyDCtyAnICsgc3QuZW1haWwgKyAnIMK3ICcgKyBzdC5waG9uZSB9KTsKICAgICAgICBjb250ZW50LmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPSJxbS1ib2R5Ij48ZGl2IGNsYXNzPSJxbS1zdWNjZXNzIj4nICsKICAgICAgICAgICc8ZGl2IGNsYXNzPSJxbS1zdWNjZXNzLW1hcmsiPjxkaXYgY2xhc3M9InJpbmciPjwvZGl2PjxkaXYgY2xhc3M9ImRpc2MiPicgKyBJQ09OLmNoZWNrVGhpbiArICc8L2Rpdj48L2Rpdj4nICsKICAgICAgICAgICc8cCBjbGFzcz0icW0tc3VjY2Vzcy1leWVicm93Ij5RdW90ZSByZXF1ZXN0IHJlY2VpdmVkLjwvcD48aDMgY2xhc3M9InFtLXN1Y2Nlc3MtaCI+VGhhbmtzLCAnICsgZXNjKGZuKSArICcuPC9oMz4nICsKICAgICAgICAgICc8cCBjbGFzcz0icW0tc3VjY2Vzcy1saW5lIj5XZeKAmWxsIGJlIGluIHRvdWNoIHNob3J0bHkuPC9wPjxwIGNsYXNzPSJxbS1zdWNjZXNzLW92ZXJ2aWV3Ij5IZXJl4oCZcyBhbiBvdmVydmlldyBvZiB5b3VyIHJlcXVlc3Q6PC9wPicgKwogICAgICAgICAgJzxkaXYgY2xhc3M9InFtLXN1bSI+JyArIHJvd3MubWFwKGZ1bmN0aW9uIChyKSB7IHJldHVybiAnPGRpdiBjbGFzcz0icW0tc3VtLXJvdyI+PHNwYW4gY2xhc3M9InFtLXN1bS1rIj4nICsgZXNjKHIuaykgKyAnPC9zcGFuPjxzcGFuIGNsYXNzPSJxbS1zdW0tdiI+JyArIGVzYyhyLnYpICsgJzwvc3Bhbj48L2Rpdj4nOyB9KS5qb2luKCcnKSArICc8L2Rpdj4nICsKICAgICAgICAgICc8cCBjbGFzcz0icW0tY2FsbC1saW5lIj5GZWVsIGZyZWUgdG8gY2FsbCB1cyBhdCA8YSBocmVmPSJ0ZWw6JyArIGVzYyhURUwpICsgJyIgZGF0YS10cmFjay1ldmVudD0icXVvdGVfc3VjY2Vzc19jYWxsX2NsaWNrIj4nICsgZXNjKFBIT05FKSArICc8L2E+IHRvIHNwZWFrIHdpdGggdXMgaW1tZWRpYXRlbHkuPC9wPjwvZGl2PjwvZGl2PicgKwogICAgICAgICAgJzxkaXYgY2xhc3M9InFtLWZvb3QiIHN0eWxlPSJiYWNrZ3JvdW5kOiNGRkY7Ym9yZGVyLXRvcDpub25lIj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InFtLXN1Ym1pdCIgZGF0YS1hY3Rpb249ImNsb3NlLW1vZGFsIiBzdHlsZT0iYmFja2dyb3VuZDojMEYxQzJFO2NvbG9yOiNGRkYiPkRvbmU8L2J1dHRvbj48L2Rpdj4nOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aXRsZS5pbm5lckhUTUwgPSAnVGVsbCB1cyBhYm91dCA8ZW0+eW91ciB0cmlwLjwvZW0+JzsKICAgICAgc3ViLnRleHRDb250ZW50ID0gJ1NlbmQgYSBmZXcgZGV0YWlscyBhbmQgd2XigJlsbCBwcm92aWRlIGFuIGFsbC1pbmNsdXNpdmUgcXVvdGUuJzsKICAgICAgdmFyIGggPSAnPGRpdiBjbGFzcz0icW0tYm9keSI+PGRpdiBjbGFzcz0icW0tdGFicyI+JzsKICAgICAgW1sncnQnLCAnUm91bmQgVHJpcCddLCBbJ293JywgJ09uZSBXYXknXSwgWydtYycsICdNdWx0aS1DaXR5J11dLmZvckVhY2goZnVuY3Rpb24gKHApIHsgaCArPSAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJxbS10YWInICsgKHN0Lm1vZGUgPT09IHBbMF0gPyAnIGFjdGl2ZScgOiAnJykgKyAnIiBkYXRhLXFtdGFiPSInICsgcFswXSArICciPicgKyBwWzFdICsgJzwvYnV0dG9uPic7IH0pOwogICAgICBoICs9ICc8L2Rpdj48ZGl2IGNsYXNzPSJxbS1zZWN0aW9uLWwiPkl0aW5lcmFyeTwvZGl2Pic7CiAgICAgIGlmIChzdC5tb2RlID09PSAnbWMnKSB7CiAgICAgICAgc3QubGVncy5mb3JFYWNoKGZ1bmN0aW9uIChsLCBpKSB7CiAgICAgICAgICB2Y
1892XIgZCA9IHN0LmxlZ0RhdGVzW2ldOwogICAgICAgICAgaCArPSAnPGRpdiBjbGFzcz0icW0tbGVnIiBkYXRhLWxlZz0iJyArIGkgKyAnIj48ZGl2IGNsYXNzPSJxbS1sZWctbiI+JyArIChpICsgMSkgKyAnPC9kaXY+JzsKICAgICAgICAgIGlmIChzdC5sZWdzLmxlbmd0aCA+IDIpIHsgaCArPSAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJxbS1sZWctcm0iIGRhdGEtYWN0aW9uPSJsZWctcmVtb3ZlIiBkYXRhLWlkeD0iJyArIGkgKyAnIiBhcmlhLWxhYmVsPSJSZW1vdmUgbGVnIj4nICsgSUNPTi54ICsgJzwvYnV0dG9uPic7IH0KICAgICAgICAgIGggKz0gJzxkaXYgY2xhc3M9InFtLWxlZy1wYWlyIj48ZGl2IGNsYXNzPSJxbS1sZWctY2VsbCI+JyArIElDT04ucGxhbmUgKyAnPGlucHV0IGRhdGEtbGVnLWZpZWxkPSJmcm9tIiBkYXRhLWxlZy1pZHg9IicgKyBpICsgJyIgcGxhY2Vob2xkZXI9IkZyb20iPjwvZGl2PjxkaXYgY2xhc3M9InFtLWxlZy1jZWxsIj4nICsgSUNPTi5wbGFuZSArICc8aW5wdXQgZGF0YS1sZWctZmllbGQ9InRvIiBkYXRhLWxlZy1pZHg9IicgKyBpICsgJyIgcGxhY2Vob2xkZXI9IlRvIj48L2Rpdj48L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9InFtLWxlZy1wYWlyIj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InFtLWxlZy1jZWxsIiBkYXRhLXBpY2tlcj0ibGVnLScgKyBpICsgJyI+JyArIElDT04uY2FsICsgJzxzcGFuIGNsYXNzPSJkdicgKyAoZCA/ICcnIDogJyBwaCcpICsgJyI+JyArIChkID8gZXNjKGZtdFNob3J0KGQpKSA6ICdEYXRlJykgKyAnPC9zcGFuPjwvYnV0dG9uPjxkaXYgY2xhc3M9InFtLWxlZy1jZWxsIj4nICsgSUNPTi5jbG9jayArICc8aW5wdXQgZGF0YS1sZWctZmllbGQ9InRpbWUiIGRhdGEtbGVnLWlkeD0iJyArIGkgKyAnIiBwbGFjZWhvbGRlcj0iVGltZSI+PC9kaXY+PC9kaXY+PC9kaXY+JzsKICAgICAgICB9KTsKICAgICAgICBpZiAoc3QubGVncy5sZW5ndGggPCA1KSB7IGggKz0gJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icW0tYWRkIiBkYXRhLWFjdGlvbj0ibGVnLWFkZCI+JyArIElDT04ucGx1cyArICdBZGQgYW5vdGhlciBsZWc8L2J1dHRvbj4nOyB9CiAgICAgICAgaCArPSAnPGRpdiBjbGFzcz0icW0tcm93IHNpbmdsZSIgc3R5bGU9Im1hcmdpbi10b3A6OHB4Ij48ZGl2IGNsYXNzPSJxbS1jZWxsIj4nICsgSUNPTi51c2VyICsgJzxpbnB1dCBkYXRhLWZpZWxkPSJwYXgiIHBsYWNlaG9sZGVyPSJQYXNzZW5nZXJzIiB2YWx1ZT0iJyArIGVzYyhzdC5wYXgpICsgJyI+PC9kaXY+PC9kaXY+JzsKICAgICAgfSBlbHNlIHsKICAgICAgICBoICs9ICc8ZGl2IGNsYXNzPSJxbS1yb3ciPjxkaXYgY2xhc3M9InFtLWNlbGwiPicgKyBJQ09OLnBsYW5lICsgJzxpbnB1dCBkYXRhLWZpZWxkPSJmcm9tIiBwbGFjZWhvbGRlcj0iRGVwYXJ0dXJlIiB2YWx1ZT0iJyArIGVzYyhzdC5mcm9tKSArICciPjwvZGl2PjxkaXYgY2xhc3M9InFtLWNlbGwiPicgKyBJQ09OLnBsYW5lICsgJzxpbnB1dCBkYXRhLWZpZWxkPSJ0byIgcGxhY2Vob2xkZXI9IkRlc3RpbmF0aW9uIiB2YWx1ZT0iJyArIGVzYyhzdC50bykgKyAnIj48L2Rpdj48L2Rpdj4nOwogICAgICAgIGlmIChzdC5tb2RlID09PSAncnQnKSB7CiAgICAgICAgICBoICs9ICc8ZGl2IGNsYXNzPSJxbS1yb3ciPicgKyBkYXRlQ2VsbCgncnQnLCAnc3RhcnQnLCBzdC5ydFJhbmdlICYmIHN0LnJ0UmFuZ2Uuc3RhcnQsICdEZXBhcnQgZGF0ZScpICsgZGF0ZUNlbGwoJ3J0JywgJ2VuZCcsIHN0LnJ0UmFuZ2UgJiYgc3QucnRSYW5nZS5lbmQsICdSZXR1cm4gZGF0ZScpICsgJzwvZGl2Pic7CiAgICAgICAgfSBlbHNlIHsgaCArPSAnPGRpdiBjbGFzcz0icW0tcm93IHNpbmdsZSI+JyArIGRhdGVDZWxsKCdvdycsIG51bGwsIHN0Lm93RGF0ZSwgJ0RlcGFydHVyZSBkYXRlJykgKyAnPC9kaXY+JzsgfQogICAgICAgIGggKz0gJzxkaXYgY2xhc3M9InFtLXJvdyI+PGRpdiBjbGFzcz0icW0tY2VsbCI+JyArIElDT04udXNlciArICc8aW5wdXQgZGF0YS1maWVsZD0icGF4IiBwbGFjZWhvbGRlcj0iUGFzc2VuZ2VycyIgdmFsdWU9IicgKyBlc2Moc3QucGF4KSArICciPjwvZGl2PjxkaXYgY2xhc3M9InFtLWNlbGwiPicgKyBJQ09OLmNsb2NrICsgJzxpbnB1dCBkYXRhLWZpZWxkPSJ0aW1lIiBwbGFjZWhvbGRlcj0iUHJlZmVycmVkIHRpbWUiIHZhbHVlPSInICsgZXNjKHN0LnRpbWUpICsgJyI+PC9kaXY+PC9kaXY+JzsKICAgICAgfQogICAgICBoICs9ICc8ZGl2IGNsYXNzPSJxbS1zZWN0aW9uLWwiPkNvbnRhY3Q8L2Rpdj48ZGl2IGNsYXNzPSJxbS1yb3cgc2luZ2xlIj48ZGl2IGNsYXNzPSJxbS1jZWxsIj4nICsgSUNPTi51c2VyICsgJzxpbnB1dCBkYXRhLWZpZWxkPSJuYW1lIiBwbGFjZWhvbGRlcj0iRnVsbCBuYW1lIiB2YWx1ZT0iJyArIGVzYyhzdC5uYW1lKSArICciPjwvZGl2PjwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJxbS1yb3ciPjxkaXYgY2xhc3M9InFtLWNlbGwiPicgKyBJQ09OLnBob25lICsgJzxpbnB1dCBkYXRhLWZpZWxkPSJwaG9uZSIgdHlwZT0idGVsIiBwbGFjZWhvbGRlcj0iUGhvbmUiIHZhbHVlPSInICsgZXNjKHN0LnBob25lKSArICciPjwvZGl2PjxkaXYgY2xhc3M9InFtLWNlbGwiPicgKyBJQ09OLm1haWwgKyAnPGlucHV0IGRhdGEtZmllbGQ9ImVtYWlsIiB0eXBlPSJlbWFpbCIgcGxhY2Vob2xkZXI9IkVtYWlsIiB2YWx1ZT0iJyArIGVzYyhzdC5lbWFpbCkgKyAnIj48L2Rpdj48L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0icW0tc2VjdGlvbi1sIj5Bbnl0aGluZyB3ZSBzaG91bGQga25vdz88L2Rpdj48dGV4dGFyZWEgY2xhc3M9InFtLXRleHRhcmVhIiBkYXRhLWZpZWxkPSJub3RlcyIgcGxhY2Vob2xkZXI9IlBldHMsIGdyb3VuZCB0cmFuc3BvcnQsIGNhdGVyaW5nLCBzcGVjaWFsIHRpbWluZywgcmV0dXJuIGZsZXhpYmlsaXR54oCmIj4nICsgZXNjKHN0Lm5vdGVzKSArICc8L3RleHRhcmVhPic7CiAgICAgIGlmIChlcnJvck1zZykgeyBoICs9ICc8ZGl2IGNsYXNzPSJxbS1mb3JtLWVycm9yIj4nICsgZXNjKGVycm9yTXNnKSArICc8L2Rpdj4nOyB9CiAgICAgIGggKz0gJzwvZGl2PjxkaXYgY2xhc3M9InFtLWZvb3QiPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icW0tc3VibWl0IiBkYXRhLXFtPSJzdWJtaXQiJyArIChzZW5kaW5nID8gJyBkaXNhYmxlZCcgOiAnJykgKyAnPicgKyAoc2VuZGluZyA/ICdTZW5kaW5n4oCmJyA6ICdTZW5kIHF1b3RlIHJlcXVlc3QnKSArIGFycm93UmlnaHQoMTMpICsgJzwvYnV0dG9uPjxwIGNsYXNzPSJxbS1maW5lIj5PciBjYWxsIDxzdHJvbmc+JyArIGVzYyhQSE9ORSkgKyAnPC9zdHJvbmc+IMK3IE5vIHNwYW0sIGV2ZXIuPC9wPjwvZGl2Pic7CiAgICAgIGNvbnRlbnQuaW5uZXJIVE1MID0gaDsKICAgICAgYmluZCgpOwogICAgfQogICAgZnVuY3Rpb24gYmluZCgpIHsKICAgICAgJCQoJ1tkYXRhLX
1892FtdGFiXScsIGNvbnRlbnQpLmZvckVhY2goZnVuY3Rpb24gKGIpIHsgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsgc3QubW9kZSA9IGIuZ2V0QXR0cmlidXRlKCdkYXRhLXFtdGFiJyk7IHJlbmRlcigpOyB9KTsgfSk7CiAgICAgICQkKCdbZGF0YS1maWVsZF0nLCBjb250ZW50KS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyBlbC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uICgpIHsgc3RbZWwuZ2V0QXR0cmlidXRlKCdkYXRhLWZpZWxkJyldID0gZWwudmFsdWU7IH0pOyB9KTsKICAgICAgJCQoJ1tkYXRhLWxlZy1maWVsZF0nLCBjb250ZW50KS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgewogICAgICAgIHZhciBpZHggPSBwYXJzZUludChlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtbGVnLWlkeCcpLCAxMCksIGtleSA9IGVsLmdldEF0dHJpYnV0ZSgnZGF0YS1sZWctZmllbGQnKTsKICAgICAgICBpZiAoc3QubGVnc1tpZHhdICYmIHN0LmxlZ3NbaWR4XVtrZXldICE9IG51bGwpIHsgZWwudmFsdWUgPSBzdC5sZWdzW2lkeF1ba2V5XTsgfQogICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKCkgeyBzdC5sZWdzW2lkeF1ba2V5XSA9IGVsLnZhbHVlOyB9KTsKICAgICAgfSk7CiAgICAgICQkKCdbZGF0YS1hY3Rpb249ImxlZy1yZW1vdmUiXScsIGNvbnRlbnQpLmZvckVhY2goZnVuY3Rpb24gKGIpIHsgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsgdmFyIGkgPSBwYXJzZUludChiLmdldEF0dHJpYnV0ZSgnZGF0YS1pZHgnKSwgMTApOyBzdC5sZWdzLnNwbGljZShpLCAxKTsgZGVsZXRlIHN0LmxlZ0RhdGVzW2ldOyByZW5kZXIoKTsgfSk7IH0pOwogICAgICB2YXIgYWRkID0gJCgnW2RhdGEtYWN0aW9uPSJsZWctYWRkIl0nLCBjb250ZW50KTsKICAgICAgaWYgKGFkZCkgeyBhZGQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7IHN0LmxlZ3MucHVzaCh7fSk7IHJlbmRlcigpOyB9KTsgfQogICAgICAkJCgnW2RhdGEtcGlja2VyXScsIGNvbnRlbnQpLmZvckVhY2goZnVuY3Rpb24gKGIpIHsKICAgICAgICBiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgdmFyIHAgPSBiLmdldEF0dHJpYnV0ZSgnZGF0YS1waWNrZXInKSwgZWRpdCA9IGIuZ2V0QXR0cmlidXRlKCdkYXRhLWVkaXQnKTsKICAgICAgICAgIGlmIChwID09PSAncnQnKSB7IG9wZW5EYXRlU2hlZXQoeyBtb2RlOiAncmFuZ2UnLCB2YWx1ZTogc3QucnRSYW5nZSwgaW5pdGlhbEZvY3VzOiBlZGl0ID09PSAnZW5kJyA/ICdlbmQnIDogJ3N0YXJ0JywgdGl0bGU6ICdSb3VuZCB0cmlwIGRhdGVzJywgc3RhcnRMYWJlbDogJ0RlcGFydCcsIGVuZExhYmVsOiAnUmV0dXJuJywgb25Db21taXQ6IGZ1bmN0aW9uICh2KSB7IHN0LnJ0UmFuZ2UgPSAodiAmJiAodi5zdGFydCB8fCB2LmVuZCkpID8gdiA6IG51bGw7IHJlbmRlcigpOyB9IH0pOyB9CiAgICAgICAgICBlbHNlIGlmIChwID09PSAnb3cnKSB7IG9wZW5EYXRlU2hlZXQoeyBtb2RlOiAnc2luZ2xlJywgdmFsdWU6IHN0Lm93RGF0ZSwgdGl0bGU6ICdEZXBhcnR1cmUgZGF0ZScsIG9uQ29tbWl0OiBmdW5jdGlvbiAodikgeyBzdC5vd0RhdGUgPSB2OyByZW5kZXIoKTsgfSB9KTsgfQogICAgICAgICAgZWxzZSBpZiAocC5pbmRleE9mKCdsZWctJykgPT09IDApIHsgdmFyIGxpID0gcGFyc2VJbnQocC5zcGxpdCgnLScpWzFdLCAxMCk7IG9wZW5EYXRlU2hlZXQoeyBtb2RlOiAnc2luZ2xlJywgdmFsdWU6IHN0LmxlZ0RhdGVzW2xpXSB8fCBudWxsLCB0aXRsZTogJ0xlZyAnICsgKGxpICsgMSkgKyAnIGRhdGUnLCBvbkNvbW1pdDogZnVuY3Rpb24gKHYpIHsgaWYgKHYpIHsgc3QubGVnRGF0ZXNbbGldID0gdjsgfSBlbHNlIHsgZGVsZXRlIHN0LmxlZ0RhdGVzW2xpXTsgfSByZW5kZXIoKTsgfSB9KTsgfQogICAgICAgIH0pOwogICAgICB9KTsKICAgICAgdmFyIHN1Ym1pdCA9ICQoJ1tkYXRhLXFtPSJzdWJtaXQiXScsIGNvbnRlbnQpOwogICAgICBpZiAoc3VibWl0KSB7IHN1Ym1pdC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZVN1Ym1pdCk7IH0KICAgIH0KICAgIGZ1bmN0aW9uIGhhbmRsZVN1Ym1pdCgpIHsKICAgICAgZXJyb3JNc2cgPSAnJzsKICAgICAgaWYgKCFzdC5uYW1lIHx8ICFzdC5lbWFpbCB8fCAhc3QucGhvbmUpIHsgZXJyb3JNc2cgPSAnUGxlYXNlIGFkZCB5b3VyIG5hbWUsIGVtYWlsIGFuZCBwaG9uZS4nOyByZW5kZXIoKTsgcmV0dXJuOyB9CiAgICAgIHNlbmRpbmcgPSB0cnVlOyByZW5kZXIoKTsKICAgICAgdmFyIGxlZ3MgPSBzdC5tb2RlID09PSAnbWMnID8gc3QubGVncy5tYXAoZnVuY3Rpb24gKGwsIGkpIHsgcmV0dXJuIHsgZnJvbTogbC5mcm9tIHx8ICcnLCB0bzogbC50byB8fCAnJywgdGltZTogbC50aW1lIHx8ICcnLCBkYXRlOiBzdC5sZWdEYXRlc1tpXSA/IHRvSVNPKHN0LmxlZ0RhdGVzW2ldKSA6ICcnIH07IH0pIDogW107CiAgICAgIHZhciB1c2VyTXNnID0gc3Qubm90ZXMgfHwgJyc7CiAgICAgIGlmIChsZWdzLmxlbmd0aCkgeyB1c2VyTXNnID0gKHVzZXJNc2cgPyB1c2VyTXNnICsgJ1xuXG4nIDogJycpICsgJ011bHRpLWNpdHkgaXRpbmVyYXJ5OlxuJyArIGxlZ3MubWFwKGZ1bmN0aW9uIChsLCBpKSB7IHJldHVybiAnTGVnICcgKyAoaSArIDEpICsgJzogJyArIChsLmZyb20gfHwgJz8nKSArICcg4oaSICcgKyAobC50byB8fCAnPycpICsgKGwuZGF0ZSA/ICcgb24gJyArIGwuZGF0ZSA6ICcnKSArIChsLnRpbWUgPyAnICcgKyBsLnRpbWUgOiAnJyk7IH0pLmpvaW4oJ1xuJyk7IH0KICAgICAgdmFyIHBheWxvYWQgPSB7CiAgICAgICAgc291cmNlOiBTUkMgKyAnLW1vZGFsJywga2luZDogJ3F1b3RlJywgcGFnZTogUEFHRSwKICAgICAgICB0YWI6IHN0Lm1vZGUgPT09ICdydCcgPyAncm91bmR0cmlwJyA6IChzdC5tb2RlID09PSAnb3cnID8gJ29uZXdheScgOiAnbXVsdGknKSwKICAgICAgICBuYW1lOiBzdC5uYW1lLCBlbWFpbDogc3QuZW1haWwsIHBob25lOiBzdC5waG9uZSwgbWVzc2FnZTogdXNlck1zZywKICAgICAgICBmcm9tOiBzdC5tb2RlID09PSAnbWMnID8gJycgOiBzdC5mcm9tLCB0bzogc3QubW9kZSA9PT0gJ21jJyA/ICcnIDogc3QudG8sCiAgICAgICAgdHJhdmVsRGF0ZTogc3QubW9kZSA9PT0gJ3J0JyA/IChzdC5ydFJhbmdlICYmIHN0LnJ0UmFuZ2Uuc3RhcnQgPyB0b0lTTyhzdC5ydFJhbmdlLnN0YXJ0KSA6
1892ICcnKSA6IChzdC5tb2RlID09PSAnb3cnICYmIHN0Lm93RGF0ZSA/IHRvSVNPKHN0Lm93RGF0ZSkgOiAnJyksCiAgICAgICAgcmV0dXJuRGF0ZTogc3QubW9kZSA9PT0gJ3J0JyAmJiBzdC5ydFJhbmdlICYmIHN0LnJ0UmFuZ2UuZW5kID8gdG9JU08oc3QucnRSYW5nZS5lbmQpIDogJycsCiAgICAgICAgdHJhdmVsVGltZTogc3QudGltZSwgcGF4OiBzdC5wYXgsIGxlZ3M6IGxlZ3MsIGdvUmVmZXJyYWw6IGNhcHR1cmVSZWZlcnJhbCgpLCBleHRyYTogW10sIGdlYXI6IFtdLCBjYXRlcmluZzogJ05vbmUnLCBlc3RpbWF0ZXM6IFtdCiAgICAgIH07CiAgICAgIHRyYWNrRXZlbnQoJ2Zvcm1fc3VibWl0JywgeyBmb3JtOiAnbW9kYWwnLCB0YWI6IHBheWxvYWQudGFiIH0pOwogICAgICB2YXIgZG9uZSA9IGZ1bmN0aW9uICgpIHsgc3VibWl0dGVkID0gdHJ1ZTsgc2VuZGluZyA9IGZhbHNlOyByZW5kZXIoKTsgfTsKICAgICAgcG9zdExlYWQocGF5bG9hZCkudGhlbihkb25lLCBkb25lKTsKICAgIH0KICAgIHJlbmRlcigpOwogIH0KICBmdW5jdGlvbiBvcGVuTW9kYWwoKSB7CiAgICB2YXIgbW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXZjLW1vZGFsJyksIGJkID0gJCgnLmF2YyAucW0tYmFja2Ryb3AnKTsKICAgIGlmICghbW9kYWwpIHsgcmV0dXJuOyB9CiAgICBtb2RhbC5jbGFzc0xpc3QuYWRkKCdvcGVuJyk7CiAgICBpZiAoYmQpIHsgYmQuY2xhc3NMaXN0LmFkZCgnb3BlbicpOyB9CiAgICBtb2RhbC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ2ZhbHNlJyk7CiAgICBtb2RhbE9wZW4gPSB0cnVlOyBzZXRMb2NrKCk7CiAgICB0cmFja0V2ZW50KCdtb2RhbF9vcGVuJywgeyBwYWdlOiBQQUdFIH0pOwogIH0KICBmdW5jdGlvbiBjbG9zZU1vZGFsKCkgewogICAgdmFyIG1vZGFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F2Yy1tb2RhbCcpLCBiZCA9ICQoJy5hdmMgLnFtLWJhY2tkcm9wJyk7CiAgICBpZiAoIW1vZGFsKSB7IHJldHVybjsgfQogICAgbW9kYWwuY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpOwogICAgaWYgKGJkKSB7IGJkLmNsYXNzTGlzdC5yZW1vdmUoJ29wZW4nKTsgfQogICAgbW9kYWwuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7CiAgICBtb2RhbE9wZW4gPSBmYWxzZTsgc2V0TG9jaygpOwogICAgaWYgKG1vZGFsUmVzZXQpIHsgc2V0VGltZW91dChtb2RhbFJlc2V0LCAzNTApOyB9ICAgLyogYWZ0ZXIgdGhlIGNsb3NlIGFuaW1hdGlvbjogbmV4dCBvcGVuIHN0YXJ0cyB3aXRoIGEgZnJlc2ggZm9ybSAqLwogIH0KCiAgLyog4pSA4pSA4pSAIHN0YXRpYyBjb250YWN0IC8gbWVtYmVyc2hpcCBmb3JtcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi8KICB2YXIgRVhUUkFfTEFCRUxTID0geyByZWFzb246ICdSZWFzb24gZm9yIGNvbnRhY3QnLCBiZXN0V2F5OiAnQmVzdCB3YXkgdG8gcmVhY2ggeW91JywgdHJhdmVsV2luZG93OiAnVHJhdmVsIHdpbmRvdycsIGZseUZyZXF1ZW5jeTogJ0ZsaWdodHMgcGVyIHllYXInLCBmbGllc1ByaXZhdGU6ICdDdXJyZW50bHkgZmxpZXMgcHJpdmF0ZScsIGNhcmRUaWVyOiAnQ2FyZCBjb25zaWRlcmluZycsIGZseVRvZGF5OiAnSG93IHRoZXkgZmx5IHRvZGF5JywgaG9tZUFpcnBvcnQ6ICdIb21lIGFpcnBvcnQnLCBwYXJ0eVNpemU6ICdUeXBpY2FsIHBhcnR5IHNpemUnIH07CiAgdmFyIENPUkVfRklFTERTID0geyBuYW1lOiAxLCBmaXJzdDogMSwgbGFzdDogMSwgZW1haWw6IDEsIHBob25lOiAxLCBtZXNzYWdlOiAxIH07CiAgZnVuY3Rpb24gaXNEYXJrRm9ybShmb3JtKSB7CiAgICB2YXIgbGJsID0gZm9ybS5xdWVyeVNlbGVjdG9yKCdsYWJlbCcpIHx8IGZvcm07CiAgICB2YXIgYyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGxibCkuY29sb3IgfHwgJyc7CiAgICB2YXIgbSA9IGMubWF0Y2goL1tcZC5dKy9nKTsKICAgIGlmICghbSB8fCBtLmxlbmd0aCA8IDMpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICB2YXIgbHVtID0gKDAuMjk5ICogbVswXSArIDAuNTg3ICogbVsxXSArIDAuMTE0ICogbVsyXSkgLyAyNTU7CiAgICByZXR1cm4gbHVtID4gMC41NTsKICB9CiAgZnVuY3Rpb24gaW5pdENvbnRhY3RGb3JtcygpIHsKICAgICQkKCdbZGF0YS1hdmMtZm9ybV0nLCByb290KS5mb3JFYWNoKGZ1bmN0aW9uIChmb3JtKSB7CiAgICAgIGlmIChmb3JtLl9fYXZjKSB7IHJldHVybjsgfQogICAgICBmb3JtLl9fYXZjID0gdHJ1ZTsKICAgICAgJCQoJ3NlbGVjdFtkYXRhLWZdJywgZm9ybSkuZm9yRWFjaChmdW5jdGlvbiAoc2VsKSB7CiAgICAgICAgdmFyIGZpcnN0ID0gc2VsLm9wdGlvbnNbMF07CiAgICAgICAgLyogdGhlIGRlc2lnbidzICItLSBzZWxlY3QgLS0iIHBsYWNlaG9sZGVyIG9wdGlvbjsgcGxhaW4gc2VsZWN0cyBrZWVwIHRoZWlyIGZpcnN0IHJlYWwgb3B0aW9uICovCiAgICAgICAgaWYgKGZpcnN0ICYmIGZpcnN0LmRpc2FibGVkKSB7IHNlbC5zZWxlY3RlZEluZGV4ID0gMDsgfQogICAgICAgIHNlbC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7IHNlbC5jbGFzc0xpc3QudG9nZ2xlKCdlbXB0eScsICFzZWwudmFsdWUpOyB9KTsgICAvKiBxcC1jZWxsIHBsYWNlaG9sZGVyIGNvbG91ciAqLwogICAgICB9KTsKICAgICAgJCQoJ1tkYXRhLWZdJywgZm9ybSkuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsKICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24gKGUpIHsgaWYgKGUua2V5ID09PSAnRW50ZXInICYmIGVsLnRhZ05hbWUgIT09ICdURVhUQVJFQScpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyB2YXIgYiA9IGZvcm0ucXVlcnlTZWxlY3RvcignW2RhdGEtYWN0aW9uPSJzdWJtaXQiXScpOyBpZiAoYikgeyBiLmNsaWNrKCk7IH0gfSB9KTsKICAgICAgfSk7CiAgICAgIGVuaGFuY2VTZWxlY3RzKGZvcm0pOwogICAgfSk7CiAgfQoKICAvKiDilIDilIDilIAgY3VzdG9tIGRyb3Bkb3duczogdGhlIG5hdGl2ZSA8c2VsZWN0PiBrZWVwcyB0aGUgdmFsdWUgKGhpZGRlbik7IGEgYnV0dG9uICsgbGlzdGJveCBzdHlsZWQgbGlrZSB0aGUKICAgICBQbGFjZXMgc3VnZ2VzdGlvbnMgcmVuZGVycyBpbiBpdHMgcGxhY2UuIFRvdWNoIGRldmljZXMga2VlcCB0aGUgbmF0aXZlIHBpY2tlci4g4pSA4pSA4pSAICovCiAgdmFyIHNlbE9wZW4gPSBudWxsOwogIGZ1bmN0aW9uIGVuaGFuY2VTZWxlY3RzKHNjb3BlKSB7CiAgICBpZiAoY29hcnNlKCkpIHsgcmV0dXJuOyB9CiAgICAkJCgnc2VsZWN0W2Rh
1892dGEtZmllbGRdLCBzZWxlY3RbZGF0YS1mXScsIHNjb3BlKS5mb3JFYWNoKGZ1bmN0aW9uIChzZWwpIHsKICAgICAgaWYgKHNlbC5fX2F2Y1NlbCkgeyByZXR1cm47IH0KICAgICAgc2VsLl9fYXZjU2VsID0gdHJ1ZTsKICAgICAgdmFyIGJveCA9IChzZWwuY2xvc2VzdCAmJiBzZWwuY2xvc2VzdCgnLnFwLWNlbGwsIC5xZi1ib3gnKSkgfHwgc2VsLnBhcmVudEVsZW1lbnQ7CiAgICAgIGJveC5jbGFzc0xpc3QuYWRkKCdhdmMtc2VsLWhvc3QnKTsKICAgICAgdmFyIGJ0biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogICAgICBidG4udHlwZSA9ICdidXR0b24nOyBidG4uY2xhc3NOYW1lID0gJ2F2Yy1zZWwtYnRuJzsKICAgICAgYnRuLnNldEF0dHJpYnV0ZSgnYXJpYS1oYXNwb3B1cCcsICdsaXN0Ym94Jyk7IGJ0bi5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTsKICAgICAgaWYgKHNlbC5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnKSkgeyBidG4uc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgc2VsLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpKTsgfQogICAgICBpZiAoc2VsLmdldEF0dHJpYnV0ZSgnc3R5bGUnKSkgeyBidG4uc3R5bGUuY3NzVGV4dCA9IHNlbC5nZXRBdHRyaWJ1dGUoJ3N0eWxlJyk7IGJ0bi5zdHlsZS5hcHBlYXJhbmNlID0gJ25vbmUnOyBidG4uc3R5bGUud2Via2l0QXBwZWFyYW5jZSA9ICdub25lJzsgYnRuLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJzsgYnRuLnN0eWxlLnRleHRBbGlnbiA9ICdsZWZ0JzsgYnRuLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOyBidG4uc3R5bGUuZm9udEZhbWlseSA9ICInUG9wcGlucycsc2Fucy1zZXJpZiI7IH0KICAgICAgc2VsLmNsYXNzTGlzdC5hZGQoJ2F2Yy1zZWwtbmF0aXZlJyk7IHNlbC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7IHNlbC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTsKICAgICAgc2VsLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGJ0biwgc2VsLm5leHRTaWJsaW5nKTsKICAgICAgZnVuY3Rpb24gc3luYygpIHsgdmFyIG8gPSBzZWwub3B0aW9uc1tzZWwuc2VsZWN0ZWRJbmRleF07IHZhciBwaCA9ICFzZWwudmFsdWUgfHwgKG8gJiYgby5kaXNhYmxlZCk7IGJ0bi50ZXh0Q29udGVudCA9IG8gPyBvLnRleHRDb250ZW50IDogJyc7IGJ0bi5jbGFzc0xpc3QudG9nZ2xlKCdwaCcsIHBoKTsgfQogICAgICBzeW5jKCk7IHNlbC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBzeW5jKTsKICAgICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgeyBpZiAoc2VsT3BlbiAmJiBzZWxPcGVuLnNlbCA9PT0gc2VsKSB7IGNsb3NlU2VsZWN0KCk7IH0gZWxzZSB7IG9wZW5TZWxlY3Qoc2VsLCBidG4sIGJveCk7IH0gfSk7CiAgICAgIGJ0bi5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24gKGUpIHsgaWYgKHNlbE9wZW4gJiYgc2VsT3Blbi5zZWwgPT09IHNlbCkgeyByZXR1cm47IH0gaWYgKGUua2V5ID09PSAnQXJyb3dEb3duJyB8fCBlLmtleSA9PT0gJ0Fycm93VXAnIHx8IGUua2V5ID09PSAnRW50ZXInIHx8IGUua2V5ID09PSAnICcpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyBvcGVuU2VsZWN0KHNlbCwgYnRuLCBib3gpOyB9IH0pOwogICAgfSk7CiAgfQogIGZ1bmN0aW9uIG9wZW5TZWxlY3Qoc2VsLCBidG4sIGJveCkgewogICAgY2xvc2VTZWxlY3QoKTsKICAgIHZhciBsaXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IGxpc3Quc2V0QXR0cmlidXRlKCdyb2xlJywgJ2xpc3Rib3gnKTsKICAgIHZhciBoYXNJY29uID0gISEoYm94LmZpcnN0RWxlbWVudENoaWxkICYmIGJveC5maXJzdEVsZW1lbnRDaGlsZC50YWdOYW1lICYmIGJveC5maXJzdEVsZW1lbnRDaGlsZC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdzdmcnKTsKICAgIGxpc3QuY2xhc3NOYW1lID0gJ2F2Yy1zZWwtbGlzdCcgKyAoaGFzSWNvbiA/ICcnIDogJyBwbGFpbicpOyAgIC8qIGluZGVudCBvcHRpb25zIHRvIHRoZSB0ZXh0IG9ubHkgd2hlbiB0aGUgY2VsbCBoYXMgYSBsZWFkaW5nIGljb24gKi8KICAgIHZhciBvcHRzID0gW10uc2xpY2UuY2FsbChzZWwub3B0aW9ucykuZmlsdGVyKGZ1bmN0aW9uIChvKSB7IHJldHVybiAhby5kaXNhYmxlZDsgfSk7CiAgICB2YXIgY3VyID0gc2VsLnZhbHVlLCBhY3RpdmUgPSAwOwogICAgb3B0cy5mb3JFYWNoKGZ1bmN0aW9uIChvLCBpKSB7IGlmIChvLnZhbHVlID09PSBjdXIpIHsgYWN0aXZlID0gaTsgfSB9KTsKICAgIG9wdHMuZm9yRWFjaChmdW5jdGlvbiAobywgaSkgewogICAgICB2YXIgZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyBkLmNsYXNzTmFtZSA9ICdhdmMtc2VsLW9wdCcgKyAoaSA9PT0gYWN0aXZlID8gJyBhY3RpdmUnIDogJycpOyBkLnNldEF0dHJpYnV0ZSgncm9sZScsICdvcHRpb24nKTsgZC5zZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnLCBvLnZhbHVlID09PSBjdXIgPyAndHJ1ZScgOiAnZmFsc2UnKTsgZC50ZXh0Q29udGVudCA9IG8udGV4dENvbnRlbnQ7CiAgICAgIGQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZnVuY3Rpb24gKGUpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyB9KTsKICAgICAgZC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgZnVuY3Rpb24gKCkgeyBzZXRBY3RpdmUoaSk7IH0pOwogICAgICBkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgeyBwaWNrKGkpOyB9KTsKICAgICAgbGlzdC5hcHBlbmRDaGlsZChkKTsKICAgIH0pOwogICAgZnVuY3Rpb24gcGljayhpKSB7IHNlbC52YWx1ZSA9IG9wdHNbaV0udmFsdWU7IHNlbC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnLCB7IGJ1YmJsZXM6IHRydWUgfSkpOyBzZWwuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScsIHsgYnViYmxlczogdHJ1ZSB9KSk7IGNsb3NlU2VsZWN0KCk7IHNhZmVGb2N1cyhidG4pOyB9CiAgICBmdW5jdGlvbiBzZXRBY3RpdmUoaSkgeyBhY3RpdmUgPSAoaSArIG9wdHMubGVuZ3RoKSAlIG9wdHMubGVuZ3RoOyAkJCgnLmF2Yy1zZWwtb3B0JywgbGlzdCkuZm9yRWFjaChmdW5jdGlvbiAoZCwgaikgeyBkLmNsYXNzTGlzdC50b2dnbGUoJ2FjdGl2ZScsIGogPT09IGFjdGl2ZSk7IH0pOyBpZiAobGlzdC5jaGlsZHJlblthY3RpdmVdICYmIGxpc3QuY2hpbGRyZW5bYWN0aXZlXS5zY3JvbGxJbnRvVmlldykgeyBsaXN0LmNoaWxkcmVuW2FjdGl2ZV0uc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnIH0pOyB9IH0KICAgIGZ1bmN0aW9uIG9uS2V5KGUpIHsKICAgICAgaWYgKGUua2V5ID09PSAnQXJyb3dEb3duJykgeyBlLnByZXZlbn
1892REZWZhdWx0KCk7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IHNldEFjdGl2ZShhY3RpdmUgKyAxKTsgfQogICAgICBlbHNlIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnKSB7IGUucHJldmVudERlZmF1bHQoKTsgZS5zdG9wUHJvcGFnYXRpb24oKTsgc2V0QWN0aXZlKGFjdGl2ZSAtIDEpOyB9CiAgICAgIGVsc2UgaWYgKGUua2V5ID09PSAnRW50ZXInIHx8IGUua2V5ID09PSAnICcpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyBlLnN0b3BQcm9wYWdhdGlvbigpOyBwaWNrKGFjdGl2ZSk7IH0KICAgICAgZWxzZSBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7IGUucHJldmVudERlZmF1bHQoKTsgZS5zdG9wUHJvcGFnYXRpb24oKTsgY2xvc2VTZWxlY3QoKTsgc2FmZUZvY3VzKGJ0bik7IH0KICAgICAgZWxzZSBpZiAoZS5rZXkgPT09ICdUYWInKSB7IGNsb3NlU2VsZWN0KCk7IH0KICAgIH0KICAgIC8qIHRoZSBib3JkZXJlZCBlbGVtZW50IGlzIHRoZSB3cmFwcGVyIGZvciBpY29uIGNlbGxzLCB0aGUgY29udHJvbCBpdHNlbGYgZm9yIHRoZSBkZXNpZ24ncyBib3hlZCBzZWxlY3RzICovCiAgICB2YXIgZWRnZSA9IChwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoYm94KS5ib3JkZXJUb3BXaWR0aCkgPiAwKSA/IGJveCA6IGJ0bjsKICAgIGZ1bmN0aW9uIHBvc2l0aW9uKCkgeyB2YXIgciA9IGVkZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7IGxpc3Quc3R5bGUudG9wID0gKHIuYm90dG9tICsgd2luZG93LnBhZ2VZT2Zmc2V0IC0gMSkgKyAncHgnOyBsaXN0LnN0eWxlLmxlZnQgPSAoci5sZWZ0ICsgd2luZG93LnBhZ2VYT2Zmc2V0KSArICdweCc7IGxpc3Quc3R5bGUud2lkdGggPSByLndpZHR
1892oICsgJ3B4JzsgfQogICAgZnVuY3Rpb24gb25Eb2MoZSkgeyBpZiAoIWxpc3QuY29udGFpbnMoZS50YXJnZXQpICYmIGUudGFyZ2V0ICE9PSBidG4gJiYgIWJ0bi5jb250YWlucyhlLnRhcmdldCkpIHsgY2xvc2VTZWxlY3QoKTsgfSB9CiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpc3QpOyBwb3NpdGlvbigpOwogICAgZWRnZS5jbGFzc0xpc3QuYWRkKCdhdi1wYWMtb3BlbicpOyBidG4uc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTsKICAgIHNlbE9wZW4gPSB7IHNlbDogc2VsLCBsaXN0OiBsaXN0LCBib3g6IGVkZ2UsIGJ0bjogYnRuLCBvbktleTogb25LZXksIG9uRG9jOiBvbkRvYywgcG9zaXRpb246IHBvc2l0aW9uIH07CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgb25LZXksIHRydWUpOwogICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IGlmIChzZWxPcGVuICYmIHNlbE9wZW4ubGlzdCA9PT0gbGlzdCkgeyBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBvbkRvYyk7IH0gfSwgMCk7CiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgcG9zaXRpb24sIHsgcGFzc2l2ZTogdHJ1ZSB9KTsgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHBvc2l0aW9uKTsKICB9CiAgZnVuY3Rpb24gY2xvc2VTZWxlY3QoKSB7CiAgICBpZiAoIXNlbE9wZW4pIHsgcmV0dXJuOyB9CiAgICB2YXIgUyA9IHNlbE9wZW47IHNlbE9wZW4gPSBudWxsOwogICAgaWYgKFMubGlzdC5wYXJlbnROb2RlKSB7IFMubGlzdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKFMubGlzdCk7IH0KICAgIFMuYm94LmNsYXNzTGlzdC5yZW1vdmUoJ2F2LXBhYy1vcGVuJyk7IFMuYnRuLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpOwogICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIFMub25LZXksIHRydWUpOyBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBTLm9uRG9jKTsKICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBTLnBvc2l0aW9uKTsgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIFMucG9zaXRpb24pOwogIH0KICBmdW5jdGlvbiBzdWJtaXRDb250YWN0Rm9ybShmb3JtLCBidG4pIHsKICAgIGlmIChmb3JtLl9fc2VuZGluZykgeyByZXR1cm47IH0KICAgIHZhciBraW5kID0gZm9ybS5nZXRBdHRyaWJ1dGUoJ2RhdGEtYXZjLWZvcm0nKTsKICAgIHZhciBkYXRhID0ge307CiAgICAkJCgnW2RhdGEtZl0nLCBmb3JtKS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgewogICAgICB2YXIgdiA9IGVsLnZhbHVlIHx8ICcnOwogICAgICBpZiAoZWwudGFnTmFtZSA9PT0gJ1NFTEVDVCcgJiYgZWwuc2VsZWN0ZWRJbmRleCA+PSAwICYmIGVsLm9wdGlvbnNbZWwuc2VsZWN0ZWRJbmRleF0uZGlzYWJsZWQpIHsgdiA9ICcnOyB9CiAgICAgIGRhdGFbZWwuZ2V0QXR0cmlidXRlKCdkYXRhLWYnKV0gPSB2LnRyaW0oKTsKICAgIH0pOwogICAgdmFyIG5hbWUgPSBkYXRhLm5hbWUgfHwgKChkYXRhLmZpcnN0IHx8ICcnKSArICcgJyArIChkYXRhLmxhc3QgfHwgJycpKS50cmltKCk7CiAgICB2YXIgZXJyID0gZm9ybS5xdWVyeVNlbGVjdG9yKCcuYXZjLWZvcm0tZXJyb3InKTsKICAgIGZ1bmN0aW9uIHNob3dFcnIobXNnKSB7CiAgICAgIGlmICghZXJyKSB7IGVyciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyBlcnIuY2xhc3NOYW1lID0gJ2F2Yy1mb3JtLWVycm9yJzsgYnRuLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVyciwgYnRuLm5leHRTaWJsaW5nKTsgfQogICAgICBlcnIudGV4dENvbnRlbnQgPSBtc2c7CiAgICB9CiAgICBpZiAoIW5hbWUgfHwgIWRhdGEuZW1haWwgfHwgIWRhdGEucGhvbmUpIHsgc2hvd0VycignUGxlYXNlIGFkZCB5b3VyIG5hbWUsIGVtYWlsIGFuZCBwaG9uZS4nKTsgcmV0dXJuOyB9CiAgICBpZiAoZXJyKSB7IGVyci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVycik7IGVyciA9IG51bGw7IH0KICAgIGZvcm0uX19zZW5kaW5nID0gdHJ1ZTsKICAgIHZhciBvcmlnSHRtbCA9IGJ0bi5pbm5lckhUTUw7CiAgICBidG4uZGlzYWJsZWQgPSB0cnVlOyBidG4udGV4dENvbnRlbnQgPSAnU2VuZGluZ+KApic7CiAgICB2YXIgZXh0cmEgPSBbXTsKICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goZnVuY3Rpb24gKGspIHsgaWYgKCFDT1JFX0ZJRUxEU1trXSAmJiBkYXRhW2tdKSB7IGV4dHJhLnB1c2goeyBsYWJlbDogRVhUUkFfTEFCRUxTW2tdIHx8IGssIHZhbHVlOiBkYXRhW2tdIH0pOyB9IH0pOwogICAgdmFyIG1vYmlsZSA9IGluTW9iaWxlVHJlZShmb3JtKTsKICAgIHZhciBwYXlsb2FkID0gewogICAgICBzb3VyY2U6IFNSQyArICctJyArIChtb2JpbGUgPyAnbW9iaWxlJyA6ICdkZXNrdG9wJyksIGtpbmQ6IGtpbmQsIHBhZ2U6IFBBR0UsCiAgICAgIG5hbWU6IG5hbWUsIGVtYWlsOiBkYXRhLmVtYWlsLCBwaG9uZTogZGF0YS5waG9uZSwgbWVzc2FnZTogZGF0YS5tZXNzYWdlIHx8ICcnLAogICAgICBleHRyYTogZXh0cmEsIGdvUmVmZXJyYWw6IGNhcHR1cmVSZWZlcnJhbCgpLCBmcm9tOiAnJywgdG86ICcnLCBwYXg6ICcnLCBsZWdzOiBbXSwgZ2VhcjogW10sIGNhdGVyaW5nOiAnTm9uZScsIGVzdGltYXRlczogW10KICAgIH07CiAgICB0cmFja0V2ZW50KCdmb3JtX3N1Ym1pdCcsIHsgZm9ybToga2luZCArIChtb2JpbGUgPyAnLW1vYmlsZScgOiAnLWRlc2t0b3AnKSB9KTsKICAgIHZhciBkb25lID0gZnVuY3Rpb24gKCkgewogICAgICBmb3JtLl9fc2VuZGluZyA9IGZhbHNlOwogICAgICByZW5kZXJDb250YWN0U3VjY2Vzcyhmb3JtLCBraW5kLCBkYXRhLCBuYW1lLCBtb2JpbGUpOwogICAgfTsKICAgIHBvc3RMZWFkKHBheWxvYWQpLnRoZW4oZG9uZSwgZnVuY3Rpb24gKCkgeyBkb25lKCk7IH0pOwogICAgdm9pZCBvcmlnSHRtbDsKICB9CiAgZnVuY3Rpb24gcmVuZGVyQ29udGFjdFN1Y2Nlc3MoZm9ybSwga2luZCwgZGF0YSwgbmFtZSwgbW9iaWxlKSB7CiAgICB2YXIgc3RhcnQgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWF2Yy1maWVsZHNdJyk7CiAgICBpZiAoIXN0YXJ0KSB7IHJldHVybjsgfQogICAgdmFyIHBhcmVudCA9IHN0YXJ0LnBhcmVudE5vZGUsIGRhcmsgPSBpc0RhcmtGb3JtKGZvcm0pOwogICAgLyoga2VlcCB0aGUgY2FyZCB0aGUgc2l6ZSB0aGUgdmlzaXRvciBpcyBsb29raW5nIGF0LCBhbmQgY3Jvc3NmYWRlIHRoZSBmaWVsZHMgaW50byB0aGUgcmVjZWlwdCAoZGVza3RvcCkgKi8KICAgIC8qIGhlaWdodCBvZiB0aGUgcmVnaW9uIHRoZSByZWNlaXB0IHJlcGxhY2VzO
1892iBmcm9tIHRoZSBmaXJzdCBmaWVsZCByb3cgdG8gdGhlIHN1Ym1pdCBidXR0b24gKHRoZSBjYXJkJ3MgaGVhZGVyIHN0YXlzKSAqLwogICAgdmFyIGxhc3RFbCA9IHBhcmVudC5sYXN0RWxlbWVudENoaWxkLCBjb2xIID0gTWF0aC5yb3VuZChsYXN0RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tIC0gc3RhcnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wKSwgY2FyZEggPSBmb3JtLm9mZnNldEhlaWdodDsKICAgIGlmICghbW9iaWxlKSB7IGZvcm0uc3R5bGUubWluSGVpZ2h0ID0gY2FyZEggKyAncHgnOyBwYXJlbnQuc3R5bGUuY29udGFpbmVyVHlwZSA9ICdpbmxpbmUtc2l6ZSc7IHBhcmVudC5zdHlsZS50cmFuc2l0aW9uID0gJ29wYWNpdHkgLjE2cyBlYXNlJzsgcGFyZW50LnN0eWxlLm9wYWNpdHkgPSAnMCc7IH0KICAgIHZhciBhcHBseSA9IGZ1bmN0aW9uICgpIHsKICAgIHdoaWxlIChzdGFydC5uZXh0U2libGluZykgeyBwYXJlbnQucmVtb3ZlQ2hpbGQoc3RhcnQubmV4dFNpYmxpbmcpOyB9CiAgICB2YXIgaW50cm8gPSBzdGFydC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nOwogICAgaWYgKGludHJvICYmIChpbnRyby50YWdOYW1lID09PSAnUCcgfHwgaW50cm8uY2xhc3NMaXN0LmNvbnRhaW5zKCdxcC1zZWMnKSkpIHsgaW50cm8uc3R5bGUuZGlzcGxheSA9ICdub25lJzsgfQogICAgdmFyIHJvd3MgPSBbeyBrOiAnRW1haWwnLCB2OiBkYXRhLmVtYWlsIH0sIHsgazogJ1Bob25lJywgdjogZGF0YS5waG9uZSB9XTsKICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goZnVuY3Rpb24gKGspIHsgaWYgKCFDT1JFX0ZJRUxEU1trXSAmJiBkYXRhW2tdKSB7IHJvd3MucHVzaCh7IGs6IEVYVFJBX0xBQkVMU1trXSB8fCBrLCB2OiBkYXRhW2tdIH0pOyB9IH0pOwogICAgdmFyIG87CiAgICBpZiAoa2luZCA9PT0gJ21lbWJlcnNoaXAnIHx8IGtpbmQgPT09ICdqZXRjYXJkJykgeyAgIC8qIENGRy50aGFua3MgPSB7IHN1Yiwgc3RlcHMgfSBsZXRzIGEgcGFnZSBzdXBwbHkgaXRzIG93biBjb3B5ICovCiAgICAgIHZhciBUSCA9IENGRy50aGFua3MgfHwge307CiAgICAgIG8gPSB7IGRhcms6IGRhcmssIGV5ZWJyb3c6ICdJbnF1aXJ5IHJlY2VpdmVkJywgaGVhZGluZzogJ1RoYW5rcywgJyArIGZpcnN0TmFtZShuYW1lKSArICcuJywgc3ViOiBUSC5zdWIgfHwgJ0EgbWVtYmVyc2hpcCBhZHZpc29yIHdpbGwgZm9sbG93IHVwIHdpdGhpbiBvbmUgYnVzaW5lc3MgZGF5IHRvIHdhbGsgdGhyb3VnaCBwcmljaW5nLCBhaXJjcmFmdCBhY2Nlc3MgYW5kIGhvdyB0aGUgcHJvZ3JhbSB3b3JrcyDigJQgbm8gY29tbWl0bWVudCByZXF1aXJlZC4nLCByb3dzOiByb3dzLAogICAgICAgIHN0ZXBzOiBUSC5zdGVwcyB8fCBbJypXaXRoaW4gb25lIGJ1c2luZXNzIGRheSog4oCUIGEgbWVtYmVyc2hpcCBhZHZpc29yIHJlYWNoZXMgb3V0LicsICdXZSB3YWxrIHRocm91Z2ggKnByaWNpbmcsIGFpcmNyYWZ0IGFjY2VzcyogYW5kIGhvdyB0aGUgcHJvZ3JhbSB3b3Jrcy4nLCAnSm9pbiB3aGVuIHlvdeKAmXJlIHJlYWR5IOKAlCAqbm8gY29tbWl0bWVudCogdG8gZ2V0IHN0YXJ0ZWQuJ10sIGNhbGw6ICdQcmVmZXIgdG8gdGFsayBub3c/JyB9OwogICAgfSBlbHNlIHsKICAgICAgLyogInByZWZlcnJlZCBjaGFubmVsIiBvbmx5IHdoZW4gdGhlIGZvcm0gYWN0dWFsbHkgYXNrZWQgZm9yIG9uZSAodGhlIGJlc3RXYXkgc2VsZWN0KSAqLwogICAgICB2YXIgY2hhbm5lbCA9ICgnYmVzdFdheScgaW4gZGF0YSkgPyAnV2UgcmVwbHkgYnkgKnlvdXIgcHJlZmVycmVkIGNoYW5uZWwqIOKAlCBwaG9uZSwgdGV4dCBvciBlbWFpbC4nIDogJ1dlIHJlcGx5IGJ5ICpwaG9uZSBvciBlbWFpbCouJzsKICAgICAgbyA9IHsgZGFyazogZGFyaywgZXllYnJvdzogJ01lc3NhZ2UgcmVjZWl2ZWQnLCBoZWFkaW5nOiAnVGhhbmtzLCAnICsgZmlyc3ROYW1lKG5hbWUpICsgJy4nLCBzdWI6ICdBIG1lbWJlciBvZiBvdXIgaW4taG91c2UgdGVhbSB3aWxsIHJlYWQgeW91ciBtZXNzYWdlIGFuZCByZXBseSBhcyBzb29uIGFzIHBvc3NpYmxlLicsIHJvd3M6IHJvd3MsCiAgICAgICAgc3RlcHM6IFsnKkEgY2hhcnRlciBhZHZpc29yKiByZXZpZXdzIHlvdXIgbWVzc2FnZSBwZXJzb25hbGx5LicsIGNoYW5uZWwsICdIYXZlIGEgdHJpcCBpbiBtaW5kPyBXZeKAmWxsIHR1cm4gaXQgaW50byBhbiAqYWxsLWluIHF1b3RlKi4nXSwgY2FsbDogJ05lZWQgdXMgbm93PycgfTsKICAgIH0KICAgIG8ud2lkZSA9ICFtb2JpbGU7CiAgICB2YXIgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgd3JhcC5pbm5lckhUTUwgPSBtb2JpbGUgPyBzdWNjZXNzTW9iaWxlKG8pIDogc3VjY2Vzc0Rlc2t0b3Aobyk7CiAgICBzdGFydC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh3cmFwLmZpcnN0Q2hpbGQsIHN0YXJ0KTsKICAgIGlmICh3cmFwLmZpcnN0Q2hpbGQpIHsgcGFyZW50LmFwcGVuZENoaWxkKHdyYXAuZmlyc3RDaGlsZCk7IH0KICAgIHZhciBjYXJkID0gZm9ybS5xdWVyeVNlbGVjdG9yKCcuZnN4LCAubS1zdWNjZXNzJyk7CiAgICBpZiAoY2FyZCAmJiAhbW9iaWxlKSB7IGNhcmQuc3R5bGUubWluSGVpZ2h0ID0gY29sSCArICdweCc7IH0KICAgIGlmICghbW9iaWxlKSB7IHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7IHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7IHBhcmVudC5zdHlsZS5vcGFjaXR5ID0gJzEnOyB9KTsgfSk7IH0KICAgIGlmIChjYXJkICYmIGNhcmQuc2Nyb2xsSW50b1ZpZXcpIHsgY2FyZC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICduZWFyZXN0JyB9KTsgfQogICAgfTsKICAgIGlmIChtb2JpbGUpIHsgYXBwbHkoKTsgfSBlbHNlIHsgc2V0VGltZW91dChhcHBseSwgMTcwKTsgfQogIH0KCiAgLyog4pSA4pSA4pSAIGdsb2JhbCBkZWxlZ2F0aW9uOiBhY3Rpb25zLCBzaGVldHMsIHRyYWNraW5nIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqLwogIGZ1bmN0aW9uIHNjcm9sbFRvRWwoZWwsIG9mZnNldCkgewogICAgaWYgKCFlbCkgeyByZXR1cm47IH0KICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgd2luZG93LnBhZ2VZT2Zmc2V0IC0gKG9mZnNldCB8fCA2MCksIGJlaGF2aW9yOiAnc21vb3RoJyB9KTsKICB9CiAgZnVuY3Rpb24gc2Nyb2xsVG9Gb3JtKCkgewogICAgdmFyIGVsID0gJCgnW2RhdGEtYXZjLXF1b3RlXSwgW2RhdGEtYXZjLWZvcm09Im1lbWJlcnNoaXAiXSwgW2RhdGEtYXZjLWZvcm09ImpldGNhcmQiXSwgI2ludGVyZXN0LWZvcm0nLCByb290KTsKICAgIGlmICghZWwpIHsgcmV0dXJuOyB9CiAgICBzY3JvbGxUb0VsKGVsLmNsb3Nlc3QoJ3NlY3Rpb24nKSB8fCBlbCwgNjApOwogIH0KICBmdW5jdGlvbiB0b2dnbGVGYXEoYnRuKSB7CiAgICB2Y
1892XIgcGFuZWwgPSBidG4ubmV4dEVsZW1lbnRTaWJsaW5nOwogICAgaWYgKCFwYW5lbCkgeyByZXR1cm47IH0KICAgIHZhciBsaXN0ID0gcGFuZWwucGFyZW50Tm9kZS5wYXJlbnROb2RlOwogICAgdmFyIG9wZW4gPSBwYW5lbC5zdHlsZS5kaXNwbGF5ICE9PSAnbm9uZSc7CiAgICAkJCgnLmF2Yy1mYXEtcCcsIGxpc3QpLmZvckVhY2goZnVuY3Rpb24gKHApIHsgcC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOyB9KTsKICAgICQkKCcuYXZjLWZhcS1jJywgbGlzdCkuZm9yRWFjaChmdW5jdGlvbiAoYykgeyBjLnN0eWxlLnRyYW5zZm9ybSA9ICdub25lJzsgfSk7CiAgICBpZiAoIW9wZW4pIHsgcGFuZWwuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7IHZhciBjID0gYnRuLnF1ZXJ5U2VsZWN0b3IoJy5hdmMtZmFxLWMnKTsgaWYgKGMpIHsgYy5zdHlsZS50cmFuc2Zvcm0gPSAncm90YXRlKDE4MGRlZyknOyB9IH0KICB9CiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZXYpIHsKICAgIHZhciB0ID0gZXYudGFyZ2V0LmNsb3Nlc3QgJiYgZXYudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLWFjdGlvbl0sIFtkYXRhLWRzLWZvY3VzXSwgYVtocmVmXj0idGVsOiJdLCBhW2hyZWZePSJtYWlsdG86Il0nKTsKICAgIGlmICghdCkgeyByZXR1cm47IH0KICAgIGlmICh0Lmhhc0F0dHJpYnV0ZSgnZGF0YS1kcy1mb2N1cycpKSB7IGRzU3RhdGUuZm9jdXMgPSB0LmdldEF0dHJpYnV0ZSgnZGF0YS1kcy1mb2N1cycpID09PSAnZW5kJyA/ICdlbmQnIDogJ3N0YXJ0JzsgZHNSZW5kZXJUYWJzKCk7IHJldHVybjsgfQogICAgdmFyIGFjdGlvbiA9IHQuZ2V0QXR0cmlidXRlKCdkYXRhLWFjdGlvbicpOwogICAgaWYgKCFhY3Rpb24pIHsKICAgICAgdmFyIGhyZWYgPSB0LmdldEF0dHJpYnV0ZSgnaHJlZicpIHx8ICcnOwogICAgICBpZiAoaHJlZi5pbmRleE9mKCd0ZWw6JykgPT09IDApIHsgdHJhY2tFdmVudCgncGhvbmVfY2xpY2snLCB7IHBhZ2U6IFBBR0UgfSk7IH0KICAgICAgZWxzZSBpZiAoaHJlZi5pbmRleE9mKCdtYWlsdG86JykgPT09IDApIHsgdHJhY2tFdmVudCgnZW1haWxfY2xpY2snLCB7IHBhZ2U6IFBBR0UgfSk7IH0KICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKGFjdGlvbiA9PT0gJ29wZW4tbW9kYWwnKSB7IGV2LnByZXZlbnREZWZhdWx0KCk7IG9wZW5Nb2RhbCgpOyB9CiAgICBlbHNlIGlmIChhY3Rpb24gPT09ICdjbG9zZS1tb2RhbCcpIHsgY2xvc2VNb2RhbCgpOyB9CiAgICBlbHNlIGlmIChhY3Rpb24gPT09ICdzY3JvbGwtZm9ybScpIHsgZXYucHJldmVudERlZmF1bHQoKTsgc2Nyb2xsVG9Gb3JtKCk7IH0KICAgIGVsc2UgaWYgKGFjdGlvbiA9PT0gJ3Njcm9sbCcpIHsgdmFyIHRhcmdldCA9ICQoJyMnICsgdC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGFyZ2V0JyksIHJvb3QpOyBpZiAodGFyZ2V0KSB7IGV2LnByZXZlbnREZWZhdWx0KCk7IHNjcm9sbFRvRWwodGFyZ2V0LCA2MCk7IH0gfQogICAgZWxzZSBpZiAoYWN0aW9uID09PSAnZmFxJykgeyB0b2dnbGVGYXEodCk7IH0KICAgIGVsc2UgaWYgKGFjdGlvbiA9PT0gJ3N1Ym1pdCcpIHsgdmFyIGYgPSB0LmNsb3Nlc3QoJ1tkYXRhLWF2Yy1mb3JtXScpOyBpZiAoZikgeyBldi5wcmV2ZW50RGVmYXVsdCgpOyBzdWJtaXRDb250YWN0Rm9ybShmLCB0KTsgfSB9CiAgICBlbHNlIGlmIChhY3Rpb24gPT09ICdub3RpY2Utb2snKSB7IGlmIChEYXRlLm5vdygpIC0gbm90aWNlQXQgPiAyNTApIHsgY2xvc2VOb3RpY2UoKTsgfSB9ICAgLyogc3dhbGxvdyB0aGUgMm5kIGNsaWNrIG9mIGEgZG91YmxlLWNsaWNrIHRoYXQgbGFuZHMgb24gdGhlIGJhY2tkcm9wICovCiAgICBlbHNlIGlmIChhY3Rpb24gPT09ICdkcy1jbG9zZScgfHwgYWN0aW9uID09PSAnZHMtZG9uZScpIHsgY2xvc2VEYXRlU2hlZXQodHJ1ZSk7IH0KICAgIGVsc2UgaWYgKGFjdGlvbiA9PT0gJ2RzLWNsZWFyJykgewogICAgICBkc1N0YXRlLnZhbHVlID0gZHNTdGF0ZS5tb2RlID09PSAncmFuZ2UnID8geyBzdGFydDogbnVsbCwgZW5kOiBudWxsIH0gOiBudWxsOwogICAgICBkc1N0YXRlLmZvY3VzID0gJ3N0YXJ0JzsKICAgICAgaWYgKGRzU3RhdGUuY2FsKSB7IGRzU3RhdGUuY2FsLnVwZGF0ZShkc1N0YXRlLnZhbHVlKTsgfQogICAgICBkc1JlbmRlclRhYnMoKTsgZHNVcGRhdGVEb25lKCk7CiAgICB9CiAgfSk7CiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uIChldikgewogICAgaWYgKGV2LmtleSA9PT0gJ1RhYicgJiYgbm90aWNlT3BlbikgeyBldi5wcmV2ZW50RGVmYXVsdCgpOyBzYWZlRm9jdXMoJCgnI2F2Yy1ub3RpY2UgLnFuLWJ0bicpKTsgcmV0dXJuOyB9ICAgLyogc2luZ2xlLWJ1dHRvbiBkaWFsb2c6IGtlZXAgZm9jdXMgaW5zaWRlICovCiAgICBpZiAoZXYua2V5ID09PSAnRXNjYXBlJykgewogICAgICBpZiAobm90aWNlT3BlbikgeyBjbG9zZU5vdGljZSgpOyByZXR1cm47IH0gICAgICAgICAgLyogdG9wLW1vc3QgbGF5ZXIgZmlyc3QgKi8KICAgICAgaWYgKGRzU3RhdGUub3BlbikgeyBjbG9zZURhdGVTaGVldChmYWxzZSk7IHJldHVybjsgfQogICAgICBpZiAobW9kYWxPcGVuKSB7IGNsb3NlTW9kYWwoKTsgfQogICAgfQogIH0pOwogIChmdW5jdGlvbiBkc0RyYWcoKSB7CiAgICAvKiBwaG9uZS1zaXplIGRhdGUgc2hlZXQ6IGRyYWcgdGhlIGhhbmRsZSAvIGhlYWRlciBkb3duIHRvIGRpc21pc3MgKFBvaW50ZXIgRXZlbnRzOiBmaW5nZXIsIHBlbiBvciBtb3VzZTsKICAgICAgIGEgcXVpY2sgZmxpY2sgY2xvc2VzIHRvbykuIE1pcnJvcnMgRGVzdCAzLjAgKHRvdWNoLW9ubHkgdGhlcmUpLiAqLwogICAgdmFyIHNoZWV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F2Yy1kYXRlLXNoZWV0Jyk7CiAgICB2YXIgaGVhZCA9IHNoZWV0ICYmIHNoZWV0LnF1ZXJ5U2VsZWN0b3IoJy5kcy1oZWFkJyk7CiAgICBpZiAoIWhlYWQpIHsgcmV0dXJuOyB9CiAgICB2YXIgc3RhcnRZID0gMCwgY3VyWSA9IDAsIHN0YXJ0VCA9IDAsIGRyYWdnaW5nID0gZmFsc2UsIHBpZCA9IG51bGw7CiAgICBmdW5jdGlvbiBzbWFsbCgpIHsgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDwgNzIwOyB9CiAgICBmdW5jdGlvbiBiZWdpbih5LCBpZCkgeyBpZiAoIWRzU3RhdGUub3BlbiB8fCAhc21hbGwoKSkgeyByZXR1cm47IH0gc3RhcnRZID0gY3VyWSA9IHk7IHN0YXJ0VCA9IERhdGUubm93KCk7IGRyYWdnaW5nID0gdHJ1ZTsgcGlkID0gaWQ7IHNoZWV0LnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7IH0KICAgIGZ1bmN0aW9uIG1vdmUoeSkgeyBpZiAoIWRyYWdnaW5nKSB7IHJldHVybjsgfSBjdXJZID0geTsgc2hlZXQuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVkoJyArIE1hdGgubWF4KDAsIGN1clkgLSBzdGFydFkpICsgJ3B4KSc7IH0KICAgIGZ1bmN0aW9uIGVuZCgpIHsKICAgICAgaWYgKCFkcmFnZ2luZykgeyByZXR1cm47IH0KICAgICAgZHJhZ2dpbmcgPSBmYWxzZTsgcGlkID0gbnVsbDsKICAgICAgdmFyIGR5ID0gY3VyWSAtIHN0YXJ0WSwgdiA9IGR5IC8gTWF0aC5tYXgoMSwgRGF0ZS5ub3coKSAtIHN0YXJ0VCk7CiAgICAgI
1892HNoZWV0LnN0eWxlLnRyYW5zaXRpb24gPSAnJzsgc2hlZXQuc3R5bGUudHJhbnNmb3JtID0gJyc7CiAgICAgIGlmIChkeSA+IDgwIHx8IChkeSA+IDI0ICYmIHYgPiAwLjQ1KSkgeyBjbG9zZURhdGVTaGVldCh0cnVlKTsgfQogICAgfQogICAgaWYgKHdpbmRvdy5Qb2ludGVyRXZlbnQpIHsKICAgICAgaGVhZC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgaWYgKChlLmJ1dHRvbiAmJiBlLmJ1dHRvbiAhPT0gMCkgfHwgKGUudGFyZ2V0LmNsb3Nlc3QgJiYgZS50YXJnZXQuY2xvc2VzdCgnYnV0dG9uJykpKSB7IHJldHVybjsgfQogICAgICAgIGJlZ2luKGUuY2xpZW50WSwgZS5wb2ludGVySWQpOwogICAgICAgIGlmIChkcmFnZ2luZykgeyB0cnkgeyBoZWFkLnNldFBvaW50ZXJDYXB0dXJlKGUucG9pbnRlcklkKTsgfSBjYXRjaCAoeCkgeyAvKiAqLyB9IH0KICAgICAgfSk7CiAgICAgIGhlYWQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBmdW5jdGlvbiAoZSkgeyBpZiAoZHJhZ2dpbmcgJiYgZS5wb2ludGVySWQgPT09IHBpZCkgeyBtb3ZlKGUuY2xpZW50WSk7IH0gfSk7CiAgICAgIGhlYWQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgZW5kKTsKICAgICAgaGVhZC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyY2FuY2VsJywgZW5kKTsKICAgIH0gZWxzZSB7CiAgICAgIGhlYWQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIGZ1bmN0aW9uIChlKSB7IGJlZ2luKGUudG91Y2hlc1swXS5jbGllbnRZLCAxKTsgfSwgeyBwYXNzaXZlOiB0cnVlIH0pOwogICAgICBoZWFkLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGZ1bmN0aW9uIChlKSB7IG1vdmUoZS50b3VjaGVzWzBdLmNsaWVudFkpOyB9LCB7IHBhc3NpdmU6IHRydWUgfSk7CiAgICAgIGhlYWQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBlbmQpOwogICAgICBoZWFkLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoY2FuY2VsJywgZW5kKTsKICAgIH0KICB9KSgpOwoKICAvKiDilIDilIDilIAgTGVhZmxldCBvZmZpY2UgbWFwcyAoZGVzaWduJ3MgbWFwLCBsYXp5LWxvYWRlZCkg4pSA4pSA4pSA4pSA4pSA4pSAICovCiAgdmFyIGxlYWZsZXRMb2FkaW5nID0gZmFsc2U7CiAgZnVuY3Rpb24gZW5zdXJlTGVhZmxldChjYikgewogICAgaWYgKHdpbmRvdy5MKSB7IGNiKCk7IHJldHVybjsgfQogICAgaWYgKCFsZWFmbGV0TG9hZGluZykgewogICAgICBsZWFmbGV0TG9hZGluZyA9IHRydWU7CiAgICAgIGlmICghZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbGlua1tocmVmKj0ibGVhZmxldCJdJykpIHsKICAgICAgICB2Y
1892XIgbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTsgbC5yZWwgPSAnc3R5bGVzaGVldCc7IGwuaHJlZiA9ICdodHRwczovL3VucGtnLmNvbS9sZWFmbGV0QDEuOS40L2Rpc3QvbGVhZmxldC5jc3MnOyBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGwpOwogICAgICB9CiAgICAgIGlmICghZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignc2NyaXB0W3NyYyo9ImxlYWZsZXQiXScpKSB7CiAgICAgICAgdmFyIHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsgcy5zcmMgPSAnaHR0cHM6Ly91bnBrZy5jb20vbGVhZmxldEAxLjkuNC9kaXN0L2xlYWZsZXQuanMnOyBzLmFzeW5jID0gdHJ1ZTsgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzKTsKICAgICAgfQogICAgfQogICAgdmFyIHRyaWVzID0gMDsKICAgIHZhciB0ID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeyBpZiAod2luZG93LkwpIHsgY2xlYXJJbnRlcnZhbCh0KTsgY2IoKTsgfSBlbHNlIGlmICgrK3RyaWVzID4gMzAwKSB7IGNsZWFySW50ZXJ2YWwodCk7IH0gfSwgMTAwKTsKICB9CiAgZnVuY3Rpb24gYnVpbGRNYXAoZWwpIHsKICAgIGlmIChlbC5fX21hcCB8fCAhd2luZG93LkwpIHsgcmV0dXJuOyB9CiAgICB2YXIgTCA9IHdpbmRvdy5MOwogICAgdmFyIGtpbmQgPSBlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtbWFwJyksIG1vYmlsZSA9IGluTW9iaWxlVHJlZShlbCk7CiAgICB2YXIgY2VudGVyID0ga2luZCA9PT0gJ2NvbnRhY3QnID8gWzI2Ljk1LCAtODIuMl0gOiBbMjYuNzUsIC04Mi40XTsKICAgIHZhciB6b29tID0ga2luZCA9PT0gJ2NvbnRhY3QnID8gKG1vYmlsZSA/IDUuMyA6IDYuNSkgOiAobW9iaWxlID8gNS41IDogNi41KTsKICAgIHZhciBtID0gTC5tYXAoZWwsIHsgem9vbUNvbnRyb2w6IGZhbHNlLCBzY3JvbGxXaGVlbFpvb206IGZhbHNlLCBkcmFnZ2luZzogZmFsc2UsIGRvdWJsZUNsaWNrWm9vbTogZmFsc2UsIGJveFpvb206IGZhbHNlLCBrZXlib2FyZDogZmFsc2UsIHRvdWNoWm9vbTogZmFsc2UsIHpvb21TbmFwOiAwLjUsIGF0dHJpYnV0aW9uQ29udHJvbDogdHJ1ZSB9KS5zZXRWaWV3KGNlbnRlciwgem9vbSk7CiAgICBMLnRpbGVMYXllcignaHR0cHM6Ly97c30uYmFzZW1hcHMuY2FydG9jZG4uY29tL3Jhc3RlcnRpbGVzL3ZveWFnZXIve3p9L3t4fS97eX17cn0ucG5nP2tleT1jYjFfMmg2Zl8xXzlkNGVhNzRkMzA0Y2U3ZmJiZDFjNWQzNScsIHsgYXR0cmlidXRpb246ICcmY29weTsgPGEgaHJlZj0iaHR0cHM6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvY29weXJpZ2h0Ij5PcGVuU3RyZWV0TWFwPC9hPiAmY29weTsgPGEgaHJlZj0iaHR0cHM6Ly9jYXJ0by5jb20vYXR0cmlidXRpb25zIj5DQVJUTzwvYT4nLCBtYXhab29tOiAxOSB9KS5hZGRUbyhtKTsKICAgIHZhciBob21lID0gWzI3LjA3MTYsIC04Mi40NDAzXTsKICAgIHZhciBkZXN0cyA9IFt7IHA6IFs0MC42NCwgLTczLjc4XSB9LCB7IHA6IFs0MS45NywgLTg3LjldIH0sIHsgcDogWzMyLjg1LCAtOTYuODVdIH0sIHsgcDogWzI1LjksIC04MC4yOF0sIG46ICdNaWFtaScgfSwgeyBwOiBbMjUuMDYsIC03Ny4zNV0sIG46ICdOYXNzYXUnIH0sIHsgcDogWzE4LjA0LCAtNjMuMTFdIH1dOwogICAgZGVzdHMuZm9yRWFjaChmdW5jdGlvbiAoZCkgewogICAgICB2YXIgYTEgPSBob21lWzBdLCBvMSA9IGhvbWVbMV0sIGEyID0gZC5wWzBdLCBvMiA9IGQucFsxXTsKICAgICAgdmFyIGMgPSBbKGExICsgYTIpIC8gMiArIE1hdGguYWJzKG8yIC0gbzEpICogMC4xNCArIDEuMiwgKG8xICsgbzIpIC8gMl07CiAgICAgIHZhciBwdHMgPSBbXTsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gMzI7IGkrKykgeyB2YXIgdHQgPSBpIC8gMzIsIHUgPSAxIC0gdHQ7IHB0cy5wdXNoKFt1ICogdSAqIGExICsgMiAqIHUgKiB0dCAqIGNbMF0gKyB0dCAqIHR0ICogYTIsIHUgKiB1ICogbzEgKyAyICogdSAqIHR0ICogY1sxXSArIHR0ICogdHQgKiBvMl0pOyB9CiAgICAgIEwucG9seWxpbmUocHRzLCB7IGNvbG9yOiAnI0U4QTkzQycsIHdlaWdodDogMS42LCBvcGFjaXR5OiAwLjUsIGRhc2hBcnJheTogJzEgNicsIGludGVyYWN0aXZlOiBmYWxzZSwgY2xhc3NOYW1lOiAnYXYtcm91dGUnIH0pLmFkZFRvKG0pOwogICAgICBMLmNpcmNsZU1hcmtlcihkLnAsIHsgcmFkaXVzOiAzLCBjb2xvcjogJyMwQjE2MjYnLCB3ZWlnaHQ6IDEuNSwgZmlsbENvbG9yOiAnI0M4ODQxRicsIGZpbGxPcGFjaXR5OiAxLCBvcGFjaXR5OiAxLCBpbnRlcmFjdGl2ZTogZmFsc2UgfSkuYWRkVG8obSk7CiAgICAgIGlmIChkLm4pIHsgTC5tYXJrZXIoZC5wLCB7IGljb246IEwuZGl2SWNvbih7IGNsYXNzTmFtZTogJycsIGh0bWw6ICc8ZGl2IHN0eWxlPSJmb250LWZhbWlseTpQb3BwaW5zLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwLjVweDtmb250LXdlaWdodDo1MDA7Y29sb3I6IzBCMTYyNjt3aGl0ZS1zcGFjZTpub3dyYXA7dHJhbnNmb3JtOnRyYW5zbGF0ZSg5cHgsLThweCkiPicgKyBkLm4gKyAnPC9kaXY+JywgaWNvblNpemU6IFswLCAwXSB9KSwgaW50ZXJhY3RpdmU6IGZhbHNlIH0pLmFkZFRvKG0pOyB9CiAgICB9KTsKICAgIEwubWFya2VyKGhvbWUsIHsgaWNvbjogTC5kaXZJY29uKHsgY2xhc3NOYW1lOiAnJywgaHRtbDogJzxkaXYgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlIj48c3BhbiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7bGVmdDotOHB4O3RvcDotOHB4O3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDojQzg4NDFGO2JvcmRlcjoyLjVweCBzb2xpZCAjRkZGRkZGO2FuaW1hdGlvbjphdmNQdWxzZSAyLjZzIGVhc2Utb3V0IGluZmluaXRlO2Rpc3BsYXk6YmxvY2siPjwvc3Bhbj48ZGl2IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MThweDtsZWZ0OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7Zm9udC1mYW1pbHk6UG9wcGlucyxzYW5zLXNlcmlmO2ZvbnQtc2l6ZTonICsgKGtpbmQgPT09ICdjb250YWN0JyA/ICcxM3B4JyA6ICcxMXB4JykgKyAnO2ZvbnQtd2VpZ2h0OjYwMDtsZXR0ZXItc3BhY2luZzowLjA0ZW07Y29sb3I6I0ZGRkZGRjtiYWNrZ3JvdW5kOnJnYmEoMTEsMjIsMzgsMC44Mik7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDIzMiwxNjksNjAsMC40NSk7Ym9yZGVyLXJhZGl1czo5OTlweDtwYWRkaW5nOjVweCAxMnB4O3doaXRlLXNwYWNlOm5vd3JhcCI+S1ZOQyAmbWlkZG90OyBWZW5pY2UgTXVuaWNpcGFsPC9kaXY+PC9kaXY+JywgaWNvblNpemU6IFswLCAwXSB9KSwgaW50ZXJhY3RpdmU6IGZhbHNlIH0pLmFkZFRvKG0pOwogICAgZWwuX19tYXAgPSBtOwogICAgdmFyIHJlZml0ID0gZnVuY3Rpb24gKCkgeyBtLmludmFsaWRhdGVTaXplKCk7IG0uc2V0VmlldyhjZW50ZXIsIHpvb20sIHsgYW5pbWF0ZTogZmFsc2UgfSk7IH07CiAgICBzZXRUaW
18921lb3V0KHJlZml0LCAyNTApOyBzZXRUaW1lb3V0KHJlZml0LCA5MDApOwogICAgaWYgKHdpbmRvdy5SZXNpemVPYnNlcnZlcikgeyB2YXIgcnQ7IHZhciBybyA9IG5ldyBSZXNpemVPYnNlcnZlcihmdW5jdGlvbiAoKSB7IGNsZWFyVGltZW91dChydCk7IHJ0ID0gc2V0VGltZW91dChyZWZpdCwgMTQwKTsgfSk7IHJvLm9ic2VydmUoZWwpOyB9CiAgfQogIGZ1bmN0aW9uIGluaXRNYXBzKCkgewogICAgdmFyIG1hcHMgPSAkJCgnLmF2Yy1tYXAnLCByb290KS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7IHJldHVybiAhZWwuX19tYXA7IH0pOwogICAgaWYgKCFtYXBzLmxlbmd0aCkgeyByZXR1cm47IH0KICAgIGVuc3VyZUxlYWZsZXQoZnVuY3Rpb24gKCkgeyAkJCgnLmF2Yy1tYXAnLCByb290KS5mb3JFYWNoKGJ1aWxkTWFwKTsgfSk7CiAgfQoKICAvKiDilIDilIDilIAgR29vZ2xlIFBsYWNlcyBhdXRvc3VnZ2VzdCAoRGVzdCAzLjAgcG9ydCkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovCiAgKGZ1bmN0aW9uIHBsYWNlcygpIHsKICAgIHZhciBLRVkgPSBDRkcucGxhY2VzS2V5IHx8ICcnOwogICAgaWYgKCFLRVkpIHsgcmV0dXJuOyB9CiAgICB2YXIgU0VMID0gJ2lucHV0W2RhdGEtZmllbGQ9ImZyb20iXSwgaW5wdXRbZGF0YS1maWVsZD0idG8iXSwgaW5wdXRbZGF0YS1sZWctZmllbGQ9ImZyb20iXSwgaW5wdXRbZGF0YS1sZWctZmllbGQ9InRvIl0nOwogICAgdmFyIHJlYWR5ID0gZmFsc2UsIGxvYWRpbmcgPSBmYWxzZSwgZmFpbGVkID0gZmFsc2UsIHBlbmRpbmcgPSBbXSwgYXR0YWNoZWQgPSBbXTsKICAgIHZhciBwcmV2QXV0aEZhaWwgPSB3aW5kb3cuZ21fYXV0aEZhaWx1cmU7CiAgICB3aW5kb3cuZ21fYXV0aEZhaWx1cmUgPSBmdW5jdGlvbiAoKSB7CiAgICAgIGZhaWxlZCA9IHRydWU7IHBlbmRpbmcgPSBbXTsKICAgICAgdHJ5IHsgY29uc29sZS53YXJuKCdbQXZTa3ldIEdvb2dsZSBQbGFjZXMgcmVqZWN0ZWQgdGhpcyBzaXRlXCdzIGtleSAoSFRUUC1yZWZlcnJlciBhbGxvd2xpc3QpLiBDaXR5IGF1dG9zdWdnZXN0IGlzIG9mZjsgZm9ybXMgZmFsbCBiYWNrIHRvIHBsYWluIGlucHV0cy4nKTsgfSBjYXRjaCAoZSkgeyAvKiAqLyB9CiAgICAgIGF0dGFjaGVkLmZvckVhY2goZnVuY3Rpb24gKGEpIHsgYS5lbC5kaXNhYmxlZCA9IGZhbHNlOyBhLmVsLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9ICcnOyBhLmVsLnBsYWNlaG9sZGVyID0gYS5waDsgfSk7CiAgICAgICQkKCcucGFjLWNvbnRhaW5lcicpLmZvckVhY2goZnVuY3Rpb24gKHApIHsgaWYgKHAucGFyZW50Tm9kZSkgeyBwLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocCk7IH0gfSk7CiAgICAgIGlmICh0eXBlb2YgcHJldkF1dGhGYWlsID09PSAnZnVuY3Rpb24nKSB7IHByZXZBdXRoRmFpbCgpOyB9CiAgICB9OwogICAgZnVuY3Rpb24gZmx1c2goKSB7IHZhciBxID0gcGVuZGluZy5zbGljZSgpOyBwZW5kaW5nID0gW107IHEuZm9yRWFjaChhdHRhY2gpOyB9CiAgICBmdW5jdGlvbiBsb2FkQXBpKCkgewogICAgICBpZiAobG9hZGluZykgeyByZXR1cm47IH0KICAgICAgbG9hZGluZyA9IHRydWU7CiAgICAgIGlmICh3aW5kb3cuZ29vZ2xlICYmIHdpbmRvdy5nb29nbGUubWFwcyAmJiB3aW5kb3cuZ29vZ2xlLm1hcHMucGxhY2VzKSB7IHJlYWR5ID0gdHJ1ZTsgZmx1c2goKTsgcmV0dXJuOyB9CiAgICAgIGlmICghZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignc2NyaXB0W3NyYyo9Im1hcHMuZ29vZ2xlYXBpcy5jb20iXScpKSB7CiAgICAgICAgd2luZG93Ll9fYXZjR3BSZWFkeSA9IGZ1bmN0aW9uICgpIHsgcmVhZHkgPSB0cnVlOyBmbHVzaCgpOyB9OwogICAgICAgIHZhciBzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICAgICAgcy5zcmMgPSAnaHR0cHM6Ly9tYXBzLmdvb2dsZWFwaXMuY29tL21hcHMvYXBpL2pzP2tleT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KEtFWSkgKyAnJmxpYnJhcmllcz1wbGFjZXMmY2FsbGJhY2s9X19hdmNHcFJlYWR5JzsKICAgICAgICBzLmFzeW5jID0gdHJ1ZTsgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB2Y
1892XIgdHJpZXMgPSAwOwogICAgICAgIHZhciB0ID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeyBpZiAod2luZG93Lmdvb2dsZSAmJiB3aW5kb3cuZ29vZ2xlLm1hcHMgJiYgd2luZG93Lmdvb2dsZS5tYXBzLnBsYWNlcykgeyBjbGVhckludGVydmFsKHQpOyByZWFkeSA9IHRydWU7IGZsdXNoKCk7IH0gZWxzZSBpZiAoKyt0cmllcyA+IDUwKSB7IGNsZWFySW50ZXJ2YWwodCk7IH0gfSwgMzAwKTsKICAgICAgfQogICAgfQogICAgdmFyIHBhY09ic2VydmVyID0gbnVsbCwgbGFzdEdwSW5wdXQgPSBudWxsOwogICAgLyogIlBldG9za2V5LCBNSSIgLyAiVmllbm5hLCBBdXN0cmlhIiDigJQgbm8gemlwLCBubyAiVVNBIiAob3duZXIsIDIwMjYtMDgtMjEpICovCiAgICBmdW5jdGlvbiBzaG9ydFBsYWNlKHBsYWNlKSB7CiAgICAgIHZhciBjb21wcyA9IHBsYWNlLmFkZHJlc3NfY29tcG9uZW50cyB8fCBbXTsKICAgICAgZnVuY3Rpb24gZ2V0KHR5cGUsIHNob3J0KSB7IGZvciAodmFyIGkgPSAwOyBpIDwgY29tcHMubGVuZ3RoOyBpKyspIHsgaWYgKGNvbXBzW2ldLnR5cGVzICYmIGNvbXBzW2ldLnR5cGVzLmluZGV4T2YodHlwZSkgPiAtMSkgeyByZXR1cm4gc2hvcnQgPyBjb21wc1tpXS5zaG9ydF9uYW1lIDogY29tcHNbaV0ubG9uZ19uYW1lOyB9IH0gcmV0dXJuICcnOyB9CiAgICAgIHZhciBuYW1lID0gcGxhY2UubmFtZSB8fCBnZXQoJ2xvY2FsaXR5JykgfHwgZ2V0KCdwb3N0YWxfdG93bicpIHx8ICcnOwogICAgICBpZiAoIW5hbWUpIHsgcmV0dXJuICcnOyB9CiAgICAgIHZhciBjYyA9IGdldCgnY291bnRyeScsIHRydWUpLCByZWdpb24gPSBnZXQoJ2FkbWluaXN0cmF0aXZlX2FyZWFfbGV2ZWxfMScsIHRydWUpLCBjb3VudHJ5ID0gZ2V0KCdjb3VudHJ5Jyk7CiAgICAgIGlmIChjYyA9PT0gJ1VTJyB8fCBjYyA9PT0gJ0NBJykgeyByZXR1cm4gbmFtZSArIChyZWdpb24gJiYgcmVnaW9uICE9PSBuYW1lID8gJywgJyArIHJlZ2lvbiA6ICcnKTsgfQogICAgICByZXR1cm4gbmFtZSArIChjb3VudHJ5ICYmIGNvdW50cnkgIT09IG5hbWUgPyAnLCAnICsgY291bnRyeSA6ICcnKTsKICAgIH0KICAgIGZ1bmN0aW9uIGZpZWxkQm94Rm9yKGVsKSB7IHJldHVybiAoZWwuY2xvc2VzdCAmJiBlbC5jbG9zZXN0KCcucWYtYm94LCAucWYtbGVnLWNlbGwsIC5xbS1jZWxsLCAucW0tbGVnLWNlbGwsIC5xcC1jZWxsJykpIHx8IGVsOyB9CiAgICBmdW5jdGlvbiBwb3NpdGlvblBhYygpIHsKICAgICAgdmFyIGVsID0gbGFzdEdwSW5wdXQ7CiAgICAgIHZhciBtaW5lID0gZWwgJiYgZWwuX19hdkdwICYmIGRvY3VtZW50LmJvZHkuY29udGFpbnMoZWwpOwogICAgICBhdHRhY2hlZC5mb3JFYWNoKGZ1bmN0aW9uIChhKSB7IGlmIChhLmVsICE9PSBlbCkgeyBmaWVsZEJveEZvcihhLmVsKS5jbGFzc0xpc3QucmVtb3ZlKCdhdi1wYWMtb3BlbicpOyBhLmVsLmNsYXNzTGlzdC5yZW1vdmUoJ2F2LXBhYy1vcGVuJyk7IH0gfSk7CiAgICAgIGlmICghbWluZSkgeyByZXR1cm47IH0KICAgICAgdmFyIHBhYyA9IG51bGwsIGFsbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5wYWMtY29udGFpbmVyJyksIGk7CiAgICAgIGZvciAoaSA9IGFsbC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgeyBpZiAoYWxsW2ldLnN0eWxlLmRpc3BsYXkgIT09ICdub25lJyAmJiBhbGxbaV0ub2Zmc2V0SGVpZ2h0ID4gMCkgeyBwYWMgPSBhbGxbaV07IGJyZWFrOyB9IH0KICAgICAgZm9yIChpID0gMDsgaSA8IGFsbC5sZW5ndGg7IGkrKykgeyBpZiAoYWxsW2ldICE9PSBwYWMgJiYgYWxsW2ldLnN0eWxlLmRpc3BsYXkgIT09ICdub25lJykgeyBhbGxbaV0uc3R5bGUuZGlzcGxheSA9ICdub25lJzsgfSB9CiAgICAgIGlmIChwYWMgJiYgZWwuX19hdlBhY1NxdWVsY2gpIHsgcGFjLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7IHBhYyA9IG51bGw7IH0KICAgICAgdmFyIGJveCA9IGZpZWxkQm94Rm9yKGVsKTsKICAgICAgaWYgKHBhYykgewogICAgICAgIHZhciByID0gYm94LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgIHZhciBNSU5fVyA9IDM2MCwgdyA9IHIud2lkdGgsIGxlZnQgPSByLmxlZnQ7CiAgICAgICAgaWYgKHcgPCBNSU5fVykgewogICAgICAgICAgdmFyIGhvc3QgPSAoYm94LmNsb3Nlc3QgJiYgYm94LmNsb3Nlc3QoJy5xbS1ib2R5LCAucWYtY2FyZCcpKSB8fCBudWxsOwogICAgICAgICAgdmFyIGhiID0gaG9zdCA/IGhvc3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgOiBudWxsOwogICAgICAgICAgdmFyIGhsID0gKGhiID8gaGIubGVmdCA6IDApICsgMTAsIGhydCA9IChoYiA/IGhiLnJpZ2h0IDogd2luZG93LmlubmVyV2lkdGgpIC0gMTA7CiAgICAgICAgICB3ID0gTWF0aC5tYXgoci53aWR0aCwgTWF0aC5taW4oTUlOX1csIGhydCAtIGhsKSk7CiAgICAgICAgICBpZiAobGVmdCArIHcgPiBocnQpIHsgbGVmdCA9IE1hdGgubWF4KGhsLCBocnQgLSB3KTsgfQogICAgICAgICAgaWYgKHcgLSByLndpZHRoIDwgMjQpIHsgdyA9IHIud2lkdGg7IGxlZnQgPSByLmxlZnQ7IH0KICAgICAgICB9CiAgICAgICAgdmFyIHVuZGVybGluZSA9IChib3ggPT09IGVsKTsKICAgICAgICB2Y
1892XIgd2lkZSA9ICh3IC0gci53aWR0aCkgPiAyIHx8IHVuZGVybGluZTsKICAgICAgICBwYWMuc3R5bGUud2lkdGggPSB3ICsgJ3B4JzsgcGFjLnN0eWxlLm1pbldpZHRoID0gdyArICdweCc7IHBhYy5zdHlsZS5tYXhXaWR0aCA9IHcgKyAncHgnOwogICAgICAgIHBhYy5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CiAgICAgICAgcGFjLnN0eWxlLmxlZnQgPSAobGVmdCArIHdpbmRvdy5wYWdlWE9mZnNldCkgKyAncHgnOwogICAgICAgIHBhYy5zdHlsZS50b3AgPSAoci5ib3R0b20gKyB3aW5kb3cucGFnZVlPZmZzZXQgKyAod2lkZSA/IDYgOiAtMSkpICsgJ3B4JzsKICAgICAgICBwYWMuY2xhc3NMaXN0LnRvZ2dsZSgnYXYtcGFjLWNhcmQnLCB3aWRlKTsKICAgICAgICBwYWMuY2xhc3NMaXN0LnRvZ2dsZSgnYXYtcGFjLXVuZGVybGluZScsIHVuZGVybGluZSk7CiAgICAgICAgcGFjLmNsYXNzTGlzdC50b2dnbGUoJ2F2LXBhYy1xcCcsIGJveC5jbGFzc0xpc3QuY29udGFpbnMoJ3FwLWNlbGwnKSk7CiAgICAgICAgcGFjLmNsYXNzTGlzdC50b2dnbGUoJ2F2LXBhYy1tb2JpbGUnLCAhIShlbC5jbG9zZXN0ICYmIChlbC5jbG9zZXN0KCcuYXZjLW0nKSB8fCBib3guY2xhc3NMaXN0LmNvbnRhaW5zKCdxbS1jZWxsJykgfHwgYm94LmNsYXNzTGlzdC5jb250YWlucygncW0tbGVnLWNlbGwnKSkpKTsKICAgICAgICBib3guY2xhc3NMaXN0LnRvZ2dsZSgnYXYtcGFjLW9wZW4nLCAhd2lkZSk7CiAgICAgIH0gZWxzZSB7IGJveC5jbGFzc0xpc3QucmVtb3ZlKCdhdi1wYWMtb3BlbicpOyB9CiAgICB9CiAgICBmdW5jdGlvbiBzdGFydFBhY09ic2VydmVyKCkgewogICAgICBpZiAocGFjT2JzZXJ2ZXIgfHwgIXdpbmRvdy5NdXRhdGlvbk9ic2VydmVyKSB7IHJldHVybjsgfQogICAgICBwYWNPYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHBvc2l0aW9uUGFjKTsKICAgICAgcGFjT2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSwgYXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlRmlsdGVyOiBbJ3N0eWxlJ10gfSk7CiAgICAgIHZhciByYWYgPSAwOwogICAgICBmdW5jdGlvbiByZXF1ZXVlKCkgeyBpZiAoIXJhZikgeyByYWYgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gKCkgeyByYWYgPSAwOyBwb3NpdGlvblBhYygpOyB9KTsgfSB9CiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCByZXF1ZXVlLCB7IHBhc3NpdmU6IHRydWUgfSk7CiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXF1ZXVlKTsKICAgICAgaWYgKHdpbmRvdy52aXN1YWxWaWV3cG9ydCkgeyB3aW5kb3cudmlzdWFsVmlld3BvcnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgcmVxdWV1ZSk7IHdpbmRvdy52aXN1YWxWaWV3cG9ydC5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXF1ZXVlKTsgfQogICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIGZ1bmN0aW9uIChlKSB7IHZhciBlbCA9IGUudGFyZ2V0OyBpZiAoZWwgJiYgZWwuY2xvc2VzdCkgeyB2YXIgYiA9IGZpZWxkQm94Rm9yKGVsKTsgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IGIuY2xhc3NMaXN0LnJlbW92ZSgnYXYtcGFjLW9wZW4nKTsgZWwuY2xhc3NMaXN0LnJlbW92ZSgnYXYtcGFjLW9wZW4nKTsgfSwgMjAwKTsgfSB9KTsKICAgIH0KICAgIGZ1bmN0aW9uIGhpZGVQYWMoKSB7CiAgICAgICQkKCcucGFjLWNvbnRhaW5lcicpLmZvckVhY2goZnVuY3Rpb24gKHApIHsgcC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOyB9KTsKICAgICAgYXR0YWNoZWQuZm9yRWFjaChmdW5jdGlvbiAoYSkgeyBhLmVsLmNsYXNzTGlzdC5yZW1vdmUoJ2F2LXBhYy1vcGVuJyk7IGZpZWxkQm94Rm9yKGEuZWwpLmNsYXNzTGlzdC5yZW1vdmUoJ2F2LXBhYy1vcGVuJyk7IH0pOwogICAgfQogICAgZnVuY3Rpb24gYXR0YWNoKGVsKSB7CiAgICAgIGlmIChmYWlsZWQgfHwgZWwuX19hdkdwKSB7IHJldHVybjsgfQogICAgICBpZiAoIXJlYWR5KSB7IGlmIChwZW5kaW5nLmluZGV4T2YoZWwpID09PSAtMSkgeyBwZW5kaW5nLnB1c2goZWwpOyB9IGxvYWRBcGkoKTsgcmV0dXJuOyB9CiAgICAgIGF0dGFjaGVkID0gYXR0YWNoZWQuZmlsdGVyKGZ1bmN0aW9uIChhKSB7IHJldHVybiBkb2N1bWVudC5ib2R5LmNvbnRhaW5zKGEuZWwpOyB9KTsKICAgICAgdmFyIGxpdmVCZWZvcmUgPSBhdHRhY2hlZC5sZW5ndGg7CiAgICAgIHZhciBiZWZvcmUgPSAkJCgnLnBhYy1jb250YWluZXInKTsKICAgICAgaWYgKGJlZm9yZS5sZW5ndGggPiBsaXZlQmVmb3JlKSB7IGJlZm9yZS5zbGljZSgwLCBiZWZvcmUubGVuZ3RoIC0gbGl2ZUJlZm9yZSkuZm9yRWFjaChmdW5jdGlvbiAocCkgeyBpZiAocC5wYXJlbnROb2RlKSB7IHAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChwKTsgfSB9KTsgfQogICAgICBhdHRhY2hlZC5wdXNoKHsgZWw6IGVsLCBwaDogZWwucGxhY2Vob2xkZXIgfSk7CiAgICAgIHN0YXJ0UGFjT2JzZXJ2ZXIoKTsKICAgICAgZWwuX19hdkdwID0gbmV3IHdpbmRvdy5nb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlKGVsLCB7IHR5cGVzOiBbJyhjaXRpZXMpJ10sIGZpZWxkczogWydmb3JtYXR0ZWRfYWRkcmVzcycsICduYW1lJywgJ2dlb21ldHJ5JywgJ2FkZHJlc3NfY29tcG9uZW50cyddIH0pOwogICAgICBpZiAoZWwudmFsdWUgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gZWwpIHsgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBlbCAmJiBlbC52YWx1ZSkgeyBlbC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnLCB7IGJ1YmJsZXM6IHRydWUgfSkpOyB9IH0sIDYwKTsgfQogICAgICBlbC5fX2F2R3AuYWRkTGlzdGVuZXIoJ3BsYWNlX2NoYW5nZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZSgnYXYtcGFjLW9wZW4nKTsgZmllbGRCb3hGb3IoZWwpLmNsYXNzTGlzdC5yZW1vdmUoJ2F2LXBhYy1vcGVuJyk7CiAgICAgICAgdmFyIHBsYWNlID0gZWwuX19hdkdwLmdldFBsYWNlKCk7CiAgICAgICAgaWYgKCFwbGFjZSB8fCAoIXBsYWNlLmZvcm1hdHRlZF9hZGRyZXNzICYmICFwbGFjZS5uYW1lKSkgeyByZXR1cm47IH0KICAgICAgICBlbC5fX2F2U2V0dGluZ1BsYWNlID0gdHJ1ZTsKICAgICAgICBlbC52YWx1ZSA9IHNob3J0UGxhY2UocGxhY2UpIHx8IHBsYWNlLmZvcm1hdHRlZF9hZGRyZXNzIHx8IHBsYWNlLm5hbWU7CiAgICAgICAgZWwuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2lucHV0JywgeyBidWJibGVzOiB0cnVlIH0pKTsKICAgICAgICBlbC5fX2F2U2V0dGluZ1BsYWNlID0gZmFsc2U7CiAgICAgICAgZWwuX19hdlBhY1NxdWVsY2ggPSB0cnVlOw
1892ogICAgICAgIGVsLl9fYXZOb1NlbGVjdFVudGlsID0gRGF0ZS5ub3coKSArIDYwMDsKICAgICAgICBoaWRlUGFjKCk7IHNldFRpbWVvdXQoaGlkZVBhYywgODApOyBzZXRUaW1lb3V0KGhpZGVQYWMsIDMwMCk7CiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICB2YXIgYSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7CiAgICAgICAgICBpZiAoYSAhPT0gZWwgJiYgYSAmJiBhLm1hdGNoZXMgJiYgYS5tYXRjaGVzKCdpbnB1dCwgdGV4dGFyZWEnKSAmJiAhYS52YWx1ZSkgeyBlbC5fX2F2Tm9TZWxlY3RVbnRpbCA9IERhdGUubm93KCkgKyA0MDA7IHRyeSB7IGVsLmZvY3VzKCk7IH0gY2F0Y2ggKGVycikgeyAvKiAqLyB9IH0KICAgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBlbCkgeyB0cnkgeyBlbC5zZXRTZWxlY3Rpb25SYW5nZShlbC52YWx1ZS5sZW5ndGgsIGVsLnZhbHVlLmxlbmd0aCk7IH0gY2F0Y2ggKGVycikgeyAvKiAqLyB9IH0KICAgICAgICB9LCAwKTsKICAgICAgfSk7CiAgICB9CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c2luJywgZnVuY3Rpb24gKGUpIHsKICAgICAgdmFyIGVsID0gZS50YXJnZXQ7CiAgICAgIGlmIChlbCAmJiBlbC5tYXRjaGVzICYmIGVsLm1hdGNoZXMoU0VMKSkgewogICAgICAgIGxhc3RHcElucHV0ID0gZWw7IGF0dGFjaChlbCk7CiAgICAgICAgaWYgKGVsLnZhbHVlICYmICFlbC5fX2F2SW5GaWVsZCAmJiAhKGVsLl9fYXZOb1NlbGVjdFVudGlsICYmIERhdGUubm93KCkgPCBlbC5fX2F2Tm9TZWxlY3RVbnRpbCkpIHsKICAgICAgICAgIHZhciBzZWxlY3RBbGwgPSBmdW5jdGlvbiAoKSB7IGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSBlbCB8fCBlbC5fX2F2U2VsZWN0ZWRPbmNlKSB7IHJldHVybjsgfSB0cnkgeyBlbC5zZXRTZWxlY3Rpb25SYW5nZSgwLCBlbC52YWx1ZS5sZW5ndGgpOyB9IGNhdGNoIChlcnIpIHsgdHJ5IHsgZWwuc2VsZWN0KCk7IH0gY2F0Y2ggKGVycjIpIHsgLyogKi8gfSB9IH07CiAgICAgICAgICBlbC5fX2F2U2VsZWN0ZWRPbmNlID0gZmFsc2U7IHNlbGVjdEFsbCgpOwogICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHNlbGVjdEFsbCgpOyBlbC5fX2F2U2VsZWN0ZWRPbmNlID0gdHJ1ZTsgfSwgMCk7CiAgICAgICAgfQogICAgICAgIGVsLl9fYXZJbkZpZWxkID0gdHJ1ZTsKICAgICAgfQogICAgfSk7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIGZ1bmN0aW9uIChlKSB7IHZhciBlbCA9IGUudGFyZ2V0OyBpZiAoZWwgJiYgZWwubWF0Y2hlcyAmJiBlbC5tYXRjaGVzKFNFTCkpIHsgZWwuX19hdkluRmllbGQgPSBmYWxzZTsgZWwuX19hdlNlbGVjdGVkT25jZSA9IGZhbHNlOyB9IH0pOwogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoZSkgewogICAgICB2YXIgZWwgPSBlLnRhcmdldDsKICAgICAgaWYgKGVsICYmIGVsLm1hdGNoZXMgJiYgZWwubWF0Y2hlcyhTRUwpKSB7IGxhc3RHcElucHV0ID0gZWw7IGlmICghZWwuX19hdkdwKSB7IGF0dGFjaChlbCk7IH0gaWYgKCFlbC5fX2F2U2V0dGluZ1BsYWNlKSB7IGVsLl9fYXZQYWNTcXVlbGNoID0gZmFsc2U7IH0gfQogICAgfSk7CiAgICB2YXIgYXYwID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDsKICAgIGlmIChhdjAgJiYgYXYwLm1hdGNoZXMgJiYgYXYwLm1hdGNoZXMoU0VMKSkgeyBsYXN0R3BJbnB1dCA9IGF2MDsgYXR0YWNoKGF2MCk7IH0KICB9KSgpOwoKICAvKiDilIDilIDilIAgc2luZ2xlLURPTSBwcnVuZSAoRGVzdCAzLjAgMy4xLjE5KSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICAgICBUd28gY29tcGxldGUgbGF5b3V0cyBzaGlwICguYXZjLWQgLyAuYXZjLW0pOyBDU1Mgc2hvd3Mgb25lLiBEZXRhY2ggdGhlCiAgICAgbGF5b3V0IHRoZSB2aWV3cG9ydCBpcyBOT1QgdXNpbmcgc28gY3Jhd2xlcnMvQVQgc2VlIGVhY2ggc2VudGVuY2Ugb25jZSwKICAgICByZS1hdHRhY2ggaWYgdGhlIHZpZXdwb3J0IGNyb3NzZXMgNjQwcHguIERldGFjaGVkIG5vZGVzIGtlZXAgc3RhdGUuICovCiAgdmFyIHBydW5lID0gKGZ1bmN0aW9uICgpIHsKICAgIHZhciBCUCA9ICcobWF4LXdpZHRoOiA2NDBweCknOwogICAgdmFyIGRlc2sgPSByb290LnF1ZXJ5U2VsZWN0b3IoJzpzY29wZSA+IC5hdmMtZCcpLCBtb2IgPSByb290LnF1ZXJ5U2VsZWN0b3IoJzpzY29wZSA+IC5hdmMtbScpOwogICAgaWYgKCFkZXNrIHx8ICFtb2IgfHwgIXdpbmRvdy5tYXRjaE1lZGlhKSB7IHJldHVybiB7IGFwcGx5OiBmdW5jdGlvbiAoKSB7fSB9OyB9CiAgICB2YXIgc2xvdHMgPSB7IGRlc2s6IGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoJ2F2Yy1kJyksIG1vYjogZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgnYXZjLW0nKSB9OwogICAgZGVzay5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzbG90cy5kZXNrLCBkZXNrKTsKICAgIG1vYi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzbG90cy5tb2IsIG1vYik7CiAgICB2YXIgbXEgPSB3aW5kb3cubWF0Y2hNZWRpYShCUCk7CiAgICB2YXIgc3RhdGUgPSB7IGRlc2s6IHRydWUsIG1vYjogdHJ1ZSB9OwogICAgZnVuY3Rpb24gc2V0QXR0YWNoZWQod2hpY2gsIGVsLCBvbikgewogICAgICBpZiAoc3RhdGVbd2hpY2hdID09PSBvbikgeyByZXR1cm47IH0KICAgICAgaWYgKG9uKSB7IHNsb3RzW3doaWNoXS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlbCwgc2xvdHNbd2hpY2hdLm5leHRTaWJsaW5nKTsgfSBlbHNlIHsgZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbCk7IH0KICAgICAgc3RhdGVbd2hpY2hdID0gb247CiAgICB9CiAgICBmdW5jdGlvbiBhcHBseSgpIHsKICAgICAgdmFyIHBob25lID0gbXEubWF0Y2hlczsKICAgICAgaWYgKHBob25lKSB7IHNldEF0dGFjaGVkKCdtb2InLCBtb2IsIHRydWUpOyBzZXRBdHRhY2hlZCgnZGVzaycsIGRlc2ssIGZhbHNlKTsgfQogICAgICBlbHNlIHsgc2V0QXR0YWNoZWQoJ2Rlc2snLCBkZXNrLCB0cnVlKTsgc2V0QXR0YWNoZWQoJ21vYicsIG1vYiwgZmFsc2UpOyB9CiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYXZjLWRvbScsIHBob25lID8gJ21vYmlsZScgOiAnZGVza3RvcCcpOwogICAgICBpbml0UXVvdGVSb290cygpOyBpbml0Q29udGFjdEZvcm1zKCk7IGluaXRNYXBzKCk7CiAgICB9CiAgICBpZiAobXEuYWRkRXZlbnRMaXN0ZW5lcikgeyBtcS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBhcHBseSk7IH0gZWxzZSBpZiAobXEuYWRkTGlzdGVuZXIpIHsgbXEuYWRkTGlzdGVuZXIoYXBwbHkpOyB9CiAgICB2Y
1892XIgcnpUOyB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZnVuY3Rpb24gKCkgeyBjbGVhclRpbWVvdXQocnpUKTsgcnpUID0gc2V0VGltZW91dChhcHBseSwgMTIwKTsgfSk7CiAgICByZXR1cm4geyBhcHBseTogYXBwbHksIHN0YXRlOiBzdGF0ZSwgZGVza3RvcDogZGVzaywgbW9iaWxlOiBtb2IgfTsKICB9KSgpOwoKICAvKiDilIDilIDilIAgaW5pdCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi8KICBmdW5jdGlvbiBpbml0KCkgewogICAgaW5pdFF1b3RlUm9vdHMoKTsKICAgIGluaXRNb2RhbCgpOwogICAgaW5pdENvbnRhY3RGb3JtcygpOwogICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHBydW5lLmFwcGx5KCk7IGluaXRNYXBzKCk7IH0sIDApOwogIH0KICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnKSB7IGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBpbml0KTsgfSBlbHNlIHsgaW5pdCgpOyB9CiAgd2luZG93Ll9fYXZjID0geyBwcnVuZTogcHJ1bmUsIG9wZW5Nb2RhbDogb3Blbk1vZGFsLCBjbG9zZU1vZGFsOiBjbG9zZU1vZGFsLCBvcGVuRGF0ZVNoZWV0OiBvcGVuRGF0ZVNoZWV0LCBtb3VudFF1b3RlOiBtb3VudFF1b3RlLCBjZmc6IENGRyB9Owp9KSgpOw=="),u=new Uint8Array(b.length),i=0;for(;i<b.length;i++){u[i]=b.charCodeAt(i);}var s=document.createElement("script");s.text=new TextDecoder().decode(u);document.head.appendChild(s);})();</script>
1892
1893		</div>
1894
1895			</div>
1896</article>
1897		</main>
1898	</div>
1899
1900	
1901	</div>
1902</div>
1903
1904
1905<div class="site-footer">
1906	
1907<footer class="gbp-section gb-element-0abd59bc">
1908<div class="gbp-section__inner gb-element-d8377d4b">
1909<div>
1910<div class="gb-element-125af5d3">
1911<div class="gb-element-edef112c">
1912<img decoding="async" width="449" height="216" class="gb-media-cec8e240 perfmatters-lazy" alt src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='449'%20height='216'%20viewBox='0%200%20449%20216'%3E%3C/svg%3E" title="AvSky-Charters-Logo-on-transparent-background-with-globe-1" data-src="https://avskycharters.com/wp-content/uploads/2025/01/AvSky-Charters-Logo-on-transparent-background-with-globe-1.png" data-srcset="https://avskycharters.com/wp-content/uploads/2025/01/AvSky-Charters-Logo-on-transparent-background-with-globe-1.png 449w, https://avskycharters.com/wp-content/uploads/2025/01/AvSky-Charters-Logo-on-transparent-background-with-globe-1-300x144.png 300w" data-sizes="(max-width: 449px) 100vw, 449px" />
1913
1914
1915
1916<div class="gb-element-a2b638d8">
1917<a class="gb-text-24425b3a" href="https://www.facebook.com/people/AvSky-Private-Charters/61556948233456/" aria-label="Facebook" target="_blank" rel="noopener"><span class="gb-shape"><svg aria-hidden="true" role="img" height="1em" width="1em" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z"></path></svg></span></a>
1918
1919
1920
1921<a class="gb-text-301d9956" href="https://x.com/iflyavsky" aria-label="X" target="_blank" rel="noopener"><span class="gb-shape"><svg aria-hidden="true" role="img" height="1em" width="1em" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"></path></svg></span></a>
1922
1923
1924
1925<a class="gb-text-1f822009" href="https://www.linkedin.com/company/avsky-private-charters" aria-label="LinkedIn" target="_blank" rel="noopener"><span class="gb-shape"><svg aria-hidden="true" role="img" height="1em" width="1em" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z"></path></svg></span></a>
1926
1927
1928
1929<a class="gb-text-65a959a5" href="https://www.instagram.com/avskycharters/" aria-label="Instagram" target="_blank" rel="noopener"><span class="gb-shape"><svg aria-hidden="true" role="img" height="1em" width="1em" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg></span></a>
1930</div>
1931
1932
1933
1934<p class="gb-text gb-text-bd82e7b1">Charter flights from one of the 
world leaders in private aviation.</p>
1935</div>
1936
1937
1938
1939<div>
1940<h2 class="gb-text gb-text-c23c5579">Fly With Us</h2>
1941
1942
1943
1944<p class="gb-text gb-text-ddbf785c"><a href="https://avskycharters.com/charter-flight-quote/" data-type="page" data-id="3169">Request a Quote</a></p>
1945
1946
1947
1948<p class="gb-text gb-text-8e62ac92"><a href="https://avskycharters.com/jet-card/" data-type="page" data-id="2030">Jet Card</a></p>
1949
1950
1951
1952<p class="gb-text gb-text-7086e87b"><a href="https://avskycharters.com/govflights/" data-type="page" data-id="2030">Government</a></p>
1953
1954
1955
1956<p class="gb-text gb-text-40656325"><a href="https://avskycharters.com/charter-flight-cost-calculator/" data-type="page" data-id="3161">Charter Cost Calculator</a></p>
1957</div>
1958
1959
1960
1961<div>
1962<h2 class="gb-text gb-text-88056a46">About AvSky</h2>
1963
1964
1965
1966<p class="gb-text gb-text-7b225b39"><a href="https://avskycharters.com/about-avsky-charters/" data-type="page" data-id="1534">Our Story</a></p>
1967
1968
1969
1970<p class="gb-text gb-text-1f27b991"><a href="https://www.avskyjets.com/" target="_blank" rel="noreferrer noopener">AvSky Brokerage</a></p>
1971
1972
1973
1974<p class="gb-text gb-text-8dff317b"><a href="https://rockymtnairparts.com/" data-type="page" data-id="43520" target="_blank" rel="noreferrer noopener">Rocky Mountain Air Parts</a></p>
1975
1976
1977
1978<p class="gb-text gb-text-e48b547a"><a href="https://avskycharters.com/privacy-policy/" data-type="link" data-id="https://avskycharters.com/privacy-policy/" target="_blank" rel="noopener">Privacy Policy</a></p>
1979</div>
1980
1981
1982
1983<div class="gb-element-8b93cf00">
1984<h2 class="gb-text gb-text-c377525f">Contact Info</h2>
1985
1986
1987
1988<p class="gb-text gb-text-5a23a213"><a href="tel:8005410381">(800) 541-0381</a></p>
1989
1990
1991
1992<p class="gb-text gb-text-92883546"><a href="mailto:[email protected]">[email protected]</a></p>
1993
1994
1995
1996<p class="gb-text gb-text-fa082812">400 Airport Ave E, Venice FL<br>34285, United States</p>
1997</div>
1998</div>
1999</div>
2000</div>
2001</footer>
2002
2003
2004
2005<p class="wp-block-paragraph"></p>
2006</div>
2007
2008		<nav id="generate-slideout-menu" class="main-navigation slideout-navigation" itemtype="https://schema.org/SiteNavigationElement" itemscope>
2009			<div class="inside-navigation grid-container grid-parent">
2010				<button class="slideout-exit has-svg-icon"><span class="gp-icon pro-close">
2011				<svg viewBox="0 0 512 512" aria-hidden="true" role="img" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1em" height="1em">
2012					<path d="M71.029 71.029c9.373-9.372 24.569-9.372 33.942 0L256 222.059l151.029-151.
201203c9.373-9.372 24.569-9.372 33.942 0 9.372 9.373 9.372 24.569 0 33.942L289.941 256l151.03 151.029c9.372 9.373 9.372 24.569 0 33.942-9.373 9.372-24.569 9.372-33.942 0L256 289.941l-151.029 151.03c-9.373 9.372-24.569 9.372-33.942 0-9.372-9.373-9.372-24.569 0-33.942L222.059 256 71.029 104.971c-9.372-9.373-9.372-24.569 0-33.942z" />
2013				</svg>
2014			</span> <span class="screen-reader-text">Close</span></button><div class="main-nav"><ul id="menu-main-menu-1" class=" slideout-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-50681 current_page_item menu-item-50684"><a href="https://avskycharters.com/about-avsky-charters/" aria-current="page">About AvSky</a></li>
2015<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-47867"><a href="https://avskycharters.com/charter-flight-quote/">Quote Request</a></li>
2016<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-50779"><a href="https://avskycharters.com/jet-card/">Jet Card</a></li>
2017<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-50419"><a href="https://avskycharters.com/govflights/">Government</a></li>
2018<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-50519"><a href="https://avskycharters.com/medical-flights/">Medical Flights</a></li>
2019</ul></div>
2020<div class="gb-element-1918a7d4 header-social-icons">
2021<a class="gb-text-932aedec" href="https://www.facebook.com/people/AvSky-Private-Charters/61556948233456/" aria-label="Facebook icon" target="_blank" rel="noopener"><span class="gb-shape"><svg viewBox="0 0 256 256" height="32" width="32" xmlns="http://www.w3.org/2000/svg"><path d="M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20Zm12,191.13V156h20a12,12,0,0,0,0-24H140V112a12,12,0,0,1,12-12h16a12,12,0,0,0,0-24H152a36,36,0,0,0-36,36v20H96a12,12,0,0,0,0,24h20v55.13a84,84,0,1,1,24,0Z"></path></svg></span></a>
2022
2023
2024
2025<a class="gb-text-1485ab38" href="https://www.instagram.com/avskycharters/" aria-label="Instagram Icon" target="_blank" rel="noopener"><span class="gb-shape"><svg viewBox="0 0 256 256" height="32" width="32" xmlns="http://www.w3.org/2000/svg"><path d="M128,80a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,72a24,24,0,1,1,24-24A24,24,0,0,1,128,152ZM176,20H80A60.07,60.07,0,0,0,20,80v96a60.07,60.07,0,0,0,60,60h96a60.07,60.07,0,0,0,60-60V80A60.07,60.07,0,0,0,176,20Zm36,156a36,36,0,0,1-36,36H80a36,36,0,0,1-36-36V80A36,36,0,0,1,80,44h96a36,36,0,0,1,36,36ZM196,76a16,16,0,1,1-16-16A16,16,0,0,1,196,76Z"></path></svg></span></a>
2026
2027
2028
2029<a class="gb-text-1f6d4836" href="https://www.linkedin.com/company/avsky-private-charters" aria-label="LinkedIn icon" target="_blank" rel="noopener"><span class="gb-shape"><svg viewBox="0 0 256 256" height="32" width="32" xmlns="http://www.w3.org/2000/svg"><path d="M216,20H40A20,20,0,0,0,20,40V216a20,20,0,0,0,20,20H216a20,20,0,0,0,20-20V40A20,20,0,0,0,216,20Zm-4,192H44V44H212ZM112,176V120a12,12,0,0,1,21.43-7.41A40,40,0,0,1,192,148v28a12,12,0,0,1-24,0V148a16,16,0,0,0-32,0v28a12,12,0,0,1-24,0ZM96,120v56a12,12,0,0,1-24,0V120a12,12,0,0,1,24,0ZM68,80A16,16,0,1,1,84,96,16,16,0,0,1,68,80Z"></path></svg></span></a>
2030
2031
2032
2033<a class="gb-text-48c635f2" href="https://x.com/iflyavsky" aria-label="X icon" target="_blank" rel="noopener"><span class="gb-shape"><svg viewBox="0 0 256 256" height="32" width="32" xmlns="http://www.w3.org/2000/svg"><path d="M218.12,209.56l-61-95.8,59.72-65.69a12,12,0,0,0-17.76-16.14L143.81,92.77,106.12,33.56A12,12,0,0,0,96,28H48A12,12,0,0,0,37.88,46.44l61,95.8L39.12,207.93a12,12,0,1,0,17.76,16.14l55.31-60.84,37.69,59.21A12,12,0,0,0,160,228h48a12,12,0,0,0,10.12-18.44ZM166.59,204,69.86,52H89.41l96.73,152Z"></path></svg></span></a>
2034</div>
2035			</div><!-- .inside-navigation -->
2036		</nav><!-- #site-navigation -->
2037
2038					<div class="slideout-overlay">
2039							</div>
2040			
2040<script id="generate-a11y" type="pmdelayedscript" data-cfasync="false" data-no-optimize="1" data-no-defer="1" data-no-minify="1">
2041!function(){"use strict";if("querySelector"in document&&"addEventListener"in window){var e=document.body;e.addEventListener("pointerdown",(function(){e.classList.add("using-mouse")}),{passive:!0}),e.addEventListener("keydown",(function(){e.classList.remove("using-mouse")}),{passive:!0})}}();
2042</script>
2042
2043	
2043<script defer src="data:text/javascript;base64,CgkJKGZ1bmN0aW9uICgpIHsKCQkJdmFyIGMgPSBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZTsKCQkJYyA9IGMucmVwbGFjZSgvd29vY29tbWVyY2Utbm8tanMvLCAnd29vY29tbWVyY2UtanMnKTsKCQkJZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSBjOwoJCX0pKCk7Cgk="></script>
2043
2044	
2044<script id="generate-sticky-js" src="https://avskycharters.com/wp-content/plugins/gp-premium/menu-plus/functions/js/sticky.min.js?ver=2.5.6" type="pmdelayedscript" data-cfasync="false" data-no-optimize="1" data-no-defer="1" data-no-minify="1"></script>
vendor: 1 bytes, line 2044
2044
2045<script id="generate-offside-js-extra" defer src="data:text/javascript;base64,CnZhciBvZmZTaWRlID0geyJzaWRlIjoicmlnaHQifTsKLy8jIHNvdXJjZVVSTD1nZW5lcmF0ZS1vZmZzaWRlLWpzLWV4dHJhCg=="></script>
vendor: 1 bytes, line 2045
2045
2046<script id="generate-offside-js" src="https://avskycharters.com/wp-content/plugins/gp-premium/menu-plus/functions/js/offside.min.js?ver=2.5.6" defer></script>
vendor: 1 bytes, line 2046
2046
2047<script id="generate-smooth-scroll-js-extra" type="pmdelayedscript" data-cfasync="false" data-no-optimize="1" data-no-defer="1" data-no-minify="1">
2048var gpSmoothScroll = {"elements":[".smooth-scroll","li.smooth-scroll a"],"duration":"800","offset":""};
2049//# sourceURL=generate-smooth-scroll-js-extra
2050</script>
vendor: 1 bytes, line 2050
2050
2051<script id="generate-smooth-scroll-js" src="https://avskycharters.com/wp-content/plugins/gp-premium/general/js/smooth-scroll.min.js?ver=2.5.6" type="pmdelayedscript" data-cfasync="false" data-no-optimize="1" data-no-defer="1" data-no-minify="1"></script>
vendor: 1 bytes, line 2051
2051
2052<script id="generate-menu-js-before" defer src="data:text/javascript;base64,CnZhciBnZW5lcmF0ZXByZXNzTWVudSA9IHsidG9nZ2xlT3BlbmVkU3ViTWVudXMiOnRydWUsIm9wZW5TdWJNZW51TGFiZWwiOiJPcGVuIFN1Yi1NZW51IiwiY2xvc2VTdWJNZW51TGFiZWwiOiJDbG9zZSBTdWItTWVudSJ9OwovLyMgc291cmNlVVJMPWdlbmVyYXRlLW1lbnUtanMtYmVmb3JlCg=="></script>
vendor: 1 bytes, line 2052
2052
2053<script id="generate-menu-js" src="https://avskycharters.com/wp-content/themes/generatepress/assets/js/menu.min.js?ver=3.6.1" defer></script>
vendor: 1 bytes, line 2053
2053
2054<script id="sourcebuster-js-js" src="https://avskycharters.com/wp-content/plugins/woocommerce/assets/js/sourcebuster/sourcebuster.min.js?ver=11.1.2" type="pmdelayedscript" data-cfasync="false" data-no-optimize="1" data-no-defer="1" data-no-minify="1"></script>
vendor: 1 bytes, line 2054
2054
2055<script id="wc-order-attribution-js-extra" type="pmdelayedscript" data-cfasync="false" data-no-optimize="1" data-no-defer="1" data-no-minify="1">
2056var wc_order_attribution = {"params":{"lifetime":1.0e-5,"session":30,"base64":false,"ajaxurl":"https://avskycharters.com/wp-admin/admin-ajax.php","prefix":"wc_order_attribution_","allowTracking":true},"fields":{"source_type":"current.typ","referrer":"current_add.rf","utm_campaign":"current.cmp","utm_source":"current.src","utm_medium":"current.mdm","utm_content":"current.cnt","utm_id":"current.id","utm_term":"current.trm","utm_source_platform":"current.plt","utm_creative_format":"current.fmt","utm_marketing_tactic":"current.tct","session_entry":"current_add.ep","session_start_time":"current_add.fd","session_pages":"session.pgs","session_count":"udata.vst","user_agent":"udata.uag"}};
2057//# sourceURL=wc-order-attribution-js-extra
2058</script>
vendor: 1 bytes, line 2058
2058
2059<script id="wc-order-attribution-js" src="https://avskycharters.com/wp-content/plugins/woocommerce/assets/js/frontend/order-attribution.min.js?ver=11.1.2" type="pmdelayedscript" data-cfasync="false" data-no-optimize="1" data-no-defer="1" data-no-minify="1"></script>
vendor: 1 bytes, line 2059
2059
2060<script id="perfmatters-lazy-load-js-before">
2061window.lazyLoadOptions={elements_selector:"img[data-src],.perfmatters-lazy,.perfmatters-lazy-css-bg",thresholds:"0px 0px",class_loading:"pmloading",class_loaded:"pmloaded",callback_loaded:function(element){if(element.tagName==="IFRAME"){if(element.classList.contains("pmloaded")){if(typeof window.jQuery!="undefined"){if(jQuery.fn.fitVids){jQuery(element).parent().fitVids()}}}}}};window.addEventListener("LazyLoad::Initialized",function(e){var lazyLoadInstance=e.detail.instance;var target=document.querySelector("body");var observer=new MutationObserver(function(mutations){lazyLoadInstance.update()});var config={childList:!0,subtree:!0};observer.observe(target,config);});function perfmattersLazyLoadVideo(e){var t=document.createElement("iframe"),r="ID?";r+=0===e.dataset.query.length?"":e.dataset.query+"&",r+="autoplay=1",t.setAttribute("src",r.replace("ID",e.dataset.src)),e.dataset.referrerpolicy && t.setAttribute("referrerpolicy",e.dataset.referrerpolicy),t.setAttribute("frameborder","0"),t.setAttribute("allowfullscreen","1"),t.setAttribute("allow","accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"),e.replaceChild(t,e.firstChild)};function perfmattersLazyLoadYouTube(e){perfmattersLazyLoadVideo(e)}
2062//# sourceURL=perfmatters-lazy-load-js-before
2063</script>
vendor: 1 bytes, line 2063
2063
2064<script id="perfmatters-lazy-load-js" async src="https://avskycharters.com/wp-content/plugins/perfmatters/js/lazyload.min.js?ver=2.6.8"></script>
vendor: 1 bytes, line 2064
2064
2065<script id="bigscoots-bfcache-js-extra" type="pmdelayedscript" data-cfasync="false" data-no-optimize="1" data-no-defer="1" data-no-minify="1">
2066var bfcache = {"cookie_name":"bs_bfcache_auth","is_logged_in":"","pending_operation":"","cookie_path":"/","cookie_domain":""};
2067//# sourceURL=bigscoots-bfcache-js-extra
2068</script>
vendor: 1 bytes, line 2068
2068
2069<script data-wp-strategy="defer" defer id="bigscoots-bfcache-js" src="https://avskycharters.com/wp-content/plugins/bigscoots-cache/assets/js/bfcache-invalidation.min.js?ver=4.3.1" type="pmdelayedscript" data-cfasync="false" data-no-optimize="1" data-no-defer="1" data-no-minify="1"></script>
2069
2070<!-- start Simple Custom CSS and JS -->
2071<script defer src="data:text/javascript;base64,CmNvbnN0IG5hbWVFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhZmZ3cC11c2VyLW5hbWUiKTsNCmNvbnN0IGxvZ2luRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWZmd3AtdXNlci1sb2dpbiIpOw0KY29uc3QgZW1haWxFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhZmZ3cC11c2VyLWVtYWlsIik7DQoNCmlmIChuYW1lRWwgJiYgbG9naW5FbCAmJiBlbWFpbEVsKSB7DQogIG5hbWVFbC5yZW1vdmVBdHRyaWJ1dGUoImRpc2FibGVkIik7DQogIGxvZ2luRWwucmVtb3ZlQXR0cmlidXRlKCJkaXNhYmxlZCIpOw0KICBlbWFpbEVsLnJlbW92ZUF0dHJpYnV0ZSgiZGlzYWJsZWQiKTsNCn0NCg0KDQppZiAoalF1ZXJ5KCcjYWZmd3AtdXNlci11cmwnKS5sZW5ndGggPiAwKSB7DQogICAgalF1ZXJ5KCcjYWZmd3AtdXNlci11cmwnKS5hdHRyKCd0eXBlJywgJ3RleHQnKTsNCn0NCg0KLy8gRkFRIGFjY29yZGlvbg0KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uICgpIHsNCiAgY29uc3QgaXRlbXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZmFxLWFjY29yZGlvbi1pdGVtJyk7DQoNCiAgLy8gQWRkICdvcGVuJyBjbGFzcyB0byB0aGUgZmlyc3QgaXRlbSBpZiBpdCBleGlzdHMNCiAgaWYgKGl0ZW1zLmxlbmd0aCA+IDApIHsNCiAgICBpdGVtc1swXS5jbGFzc0xpc3QuYWRkKCdvcGVuJyk7DQogIH0NCg0KICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4gew0KICAgIGNvbnN0IHF1ZXN0aW9uID0gaXRlbS5xdWVyeVNlbGVjdG9yKCcuZmFxLWFjY29yZGlvbi1xdWVzdGlvbicpOw0KICAgIHF1ZXN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgew0KICAgICAgLy8gQ2xvc2UgYWxsIG90aGVyIGFjY29yZGlvbnMNCiAgICAgIGl0ZW1zLmZvckVhY2goaSA9PiB7DQogICAgICAgIGlmIChpICE9PSBpdGVtKSBpLmNsYXNzTGlzdC5yZW1vdmUoJ29wZW4nKTsNCiAgICAgIH0pOw0KICAgICAgLy8gVG9nZ2xlIHRoaXMgb25lDQogICAgICBpdGVtLmNsYXNzTGlzdC50b2dnbGUoJ29wZW4nKTsNCiAgICB9KTsNCiAgfSk7DQp9KTsNCg0KLy8gTWFwIEhlaWdodCBmb3IgRGVza3RvcA0KY29uc3QgYWlycG9ydExpc3RzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmFpcnBvcnQtbGlzdCcpOw0KaWYgKGFpcnBvcnRMaXN0cy5sZW5ndGggPT09IDIpIHsNCiAgY29uc3QgaGVpZ2h0MSA9IGFpcnBvcnRMaXN0c1swXS5vZmZzZXRIZWlnaHQ7DQogIGNvbnN0IGhlaWdodDIgPSBhaXJwb3J0TGlzdHNbMV0ub2Zmc2V0SGVpZ2h0Ow0KICBjb25zdCBtYXhIZWlnaHQgPSBNYXRoLm1heChoZWlnaHQxLCBoZWlnaHQyKTsNCiAgYWlycG9ydExpc3RzWzBdLnN0eWxlLmhlaWdodCA9IGAke21heEhlaWdodH1weGA7DQogIGFpcnBvcnRMaXN0c1sxXS5zdHlsZS5oZWlnaHQgPSBgJHttYXhIZWlnaHR9cHhgOw0KfQ0KDQoNCg0KDQoNCg0KDQo="></script>
2071
2072<!-- end Simple Custom CSS and JS -->
2073<script src="https://avskycharters.com/request-quote/simple/custom.js" type="pmdelayedscript" data-cfasync="false" data-no-optimize="1" data-no-defer="1" data-no-minify="1"></script>
vendor: 2 bytes, line 2073
2073
2074<script src="https://avskycharters.com/request-quote/script.js" defer></script>
2074
2075
2076<script id="bs-cache-speculation-rules" type="speculationrules">
2077{"prerender":[{"source":"document","where":{"and":[{"href_matches":"\/*"},{"not":{"href_matches":["\/*.php","\/wp-json\/*","\/wp-admin\/*","\/wp-content\/*","\/wp-content\/plugins\/*","\/wp-content\/uploads\/*","\/wp-content\/themes\/*","\/cart*","\/cart\/*","\/checkout*","\/checkout\/*","\/checkouts\/*","\/my-account\/*","\/logout\/*","\/*\/delete\/*","\/*\/print\/*","\/wprm_print\/*","\/*\\?*(^|&)(_wpnonce|ac|add-to-cart|add_to_cart|add-to-checkout|attachment_id|cart|download_id|download_media_file|edd_action|edd_options|media_file|media_type|wlmapi|wc-api|wc-ajax)=*"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prerender, .no-prerender a"}}]},"eagerness":"moderate"}]}
2078</script>
vendor: 1 bytes, line 2078
2078
2079<script id="bs-cache-instant-prefetch-invoker-js" type="pmdelayedscript" data-perfmatters-type="text/javascript" data-cfasync="false" data-no-optimize="1" data-no-defer="1" data-no-minify="1">
2080document.addEventListener("DOMContentLoaded",function(){if(!(typeof HTMLScriptElement !== "undefined" && typeof HTMLScriptElement.supports === "function" && HTMLScriptElement.supports && HTMLScriptElement.supports("speculationrules"))) {document.querySelectorAll('script[type="speculationrules"]').forEach(script => script.remove());var bs_cache_instant_prefetch_script_element = document.createElement("script");bs_cache_instant_prefetch_script_element.id = "bs-cache-instant-prefetch-js", bs_cache_instant_prefetch_script_element.type = "module", bs_cache_instant_prefetch_script_element.src = "https://avskycharters.com/wp-content/plugins/bigscoots-cache/assets/js/bs-cache-instant-prefetch-page.min.js", document.body.appendChild(bs_cache_instant_prefetch_script_element)}})
2081</script>
2081
2082
2083<script id="perfmatters-delayed-scripts-js">(function(){window.pmDC=0;if(window.pmDT){var e=setTimeout(d,window.pmDT*1e3)}const t=["keydown","mousedown","mousemove","wheel","touchmove","touchstart","touchend"];const n={normal:[],defer:[],async:[]};const o=[];const i=[];var r=false;var a="";window.pmIsClickPending=false;t.forEach(function(e){window.addEventListener(e,d,{passive:true})});if(window.pmDC){window.addEventListener("touchstart",b,{passive:true});window.addEventListener("mousedown",b)}function d(){if(typeof e!=="undefined"){clearTimeout(e)}t.forEach(function(e){window.removeEventListener(e,d,{passive:true})});if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",s)}else{s()}}async function s(){c();u();f();m();await w(n.normal);await w(n.defer);await w(n.async);await p();document.querySelectorAll("link[data-pmdelayedstyle]").forEach(function(e){e.setAttribute("href",e.getAttribute("data-pmdelayedstyle"))});window.dispatchEvent(new Event("perfmatters-allScriptsLoaded")),E().then(()=>{h()})}function c(){let o={};function e(t,e){function n(e){return o[t].delayedEvents.indexOf(e)>=0?"perfmatters-"+e:e}if(!o[t]){o[t]={originalFunctions:{add:t.addEventListener,remove:t.removeEventListener},delayedEvents:[]};t.addEventListener=function(){arguments[0]=n(arguments[0]);o[t].originalFunctions.add.apply(t,arguments)};t.removeEventListener=function(){arguments[0]=n(arguments[0]);o[t].originalFunctions.remove.apply(t,arguments)}}o[t].delayedEvents.push(e)}function t(t,n){const e=t[n];Object.defineProperty(t,n,{get:!e?function(){}:e,set:function(e){t["perfmatters"+n]=e}})}e(document,"DOMContentLoaded");e(window,"DOMContentLoaded");e(window,"load");e(document,"readystatechange");t(document,"onreadystatechange");t(window,"onload")}function u(){let n=window.jQuery;Object.defineProperty(window,"jQuery",{get(){return n},set(t){if(t&&t.fn&&!o.includes(t)){t.fn.ready=t.fn.init.prototype.ready=function(e){if(r){e.bind(document)(t)}else{document.addEventListener("perfmatters-DOMContentLoaded",function(){e.bind(document)(t)})}};const e=t.fn.on;t.fn.on=t.fn.init.prototype.on=function(){if(this[0]===window){function t(e){e=e.split(" ");e=e.map(function(e){if(e==="load"||e.indexOf("load.")===0){return"perfmatters-jquery-load"}else{return e}});e=e.join(" ");return e}if(typeof arguments[0]=="string"||arguments[0]instanceof String){arguments[0]=t(arguments[0])}else if(typeof arguments[0]=="object"){Object.keys(arguments[0]).forEach(function(e){delete Object.assign(arguments[0],{[t(e)]:arguments[0][e]})[e]})}}return e.apply(this,arguments),this};o.push(t)}n=t}})}function f(){document.querySelectorAll("script[type=pmdelayedscript]").forEach(function(e){if(e.hasAttribute("src")){if(e.hasAttribute("defer")&&e.defer!==false){n.defer.push(e)}else if(e.hasAttribute("async")&&e.async!==false){n.async.push(e)}else{n.normal.push(e)}}else{n.normal.push(e)}})}function m(){var o=document.createDocumentFragment();[...n.normal,...n.defer,...n.async].forEach(function(e){var t=e.getAttribute("src");if(t){var n=document.createElement("link");n.href=t;if(e.getAttribute("data-perfmatters-type")=="module"){n.rel="modulepreload"}else{n.rel="preload";n.as="script"}o.appendChild(n)}});document.head.appendChild(o)}async function w(e){var t=e.shift();if(t){await l(t);return w(e)}return Promise.resolve()}async function l(t){await v();return new Promise(function(e){const n=document.createElement("script");[...t.attributes].forEach(function(e){let t=e.nodeName;if(t!=="type"){if(t==="data-perfmatters-type"){t="type"}n.setAttribute(t,e.nodeValue)}});if(t.hasAttribute("src")){n.addEventListener("load",e);n.addEventListener("error",e)}else{n.text=t.text;e()}t.parentNode?t.parentNode.replaceChild(n,t):e()})}async function p(){r=true;await v();document.dispatchEvent(new Event("perfmatters-DOMContentLoaded"));await v();window.dispatchEvent(new Event("perfmatters-DOMContentLoaded"));await v();document.dispatchEvent(new Event("perfmatters-readystatechange"));await v();if(document.perfmattersonreadystatechange){document.perfmattersonreadystatechange()}await v();window.dispatchEvent(new Event("perfmatters-load"));await v();if(window.perfmattersonload){window.perfmattersonload()}await v();o.forEach(function(e){e(window).trigger("perfmatters-jquery-load")})}async function v(){return new Promise(function(e){requestAnimationFrame(e)})}function h(){window.removeEventListener("touchstart",b,{passive:true});window.removeEventListener("mousedown",b);
2083i.forEach(e=>{if(e.target.outerHTML===a){e.target.dispatchEvent(new MouseEvent("click",{view:e.view,bubbles:true,cancelable:true}))}})}function E(){return new Promise(e=>{window.pmIsClickPending?g=e:e()})}function y(){window.pmIsClickPending=true}function g(){window.pmIsClickPending=false}function L(e){e.target.removeEventListener("click",L);C(e.target,"pm-onclick","onclick");i.push(e),e.preventDefault();e.stopPropagation();e.stopImmediatePropagation();g()}function b(e){if(e.target.tagName!=="HTML"){if(!a){a=e.target.outerHTML}window.addEventListener("touchend",A);window.addEventListener("mouseup",A);window.addEventListener("touchmove",k,{passive:true});window.addEventListener("mousemove",k);e.target.addEventListener("click",L);C(e.target,"onclick","pm-onclick");y()}}function k(e){window.removeEventListener("touchend",A);window.removeEventListener("mouseup",A);window.removeEventListener("touchmove",k,{passive:true});window.removeEventListener("mousemove",k);e.target.removeEventListener("click",L);C(e.target,"pm-onclick","onclick");g()}function A(e){window.removeEventListener("touchend",A);window.removeEventListener("mouseup",A);window.removeEventListener("touchmove",k,{passive:true});window.removeEventListener("mousemove",k)}function C(e,t,n){if(e.hasAttribute&&e.hasAttribute(t)){event.target.setAttribute(n,event.target.getAttribute(t));event.target.removeAttribute(t)}}})();</script>
2083<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"0b76b5f4e0f349ecb0579776e4f33faa","spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 2083
2083
2084<script>window.__CF$cv$params={r:'a4464013ad3e4616',t:'MTc5MDk3MDc3NQ==',u:'01a0fe2d486576de81daf7a39f18daef',ut:'Za5L9qdUirNtLfbFVYb3ZYrHZoAkM15XwHqOTszRVP4-1790970775-1.2.1.1-wCastn.RPQxgc0SEPNKmxXkoByaBaKVev__DpHVKFufaNzSH6lh7ltqGGZXDR7ogtN0Pd45t8BZPHq3QVIknkuXIKVUiyKlxOe.mwnDO9fk',i:60};(function(){if(!document.body)return;var s=document.createElement('script');s.src='/cdn-cgi/challenge-platform/scripts/precursor/main.js';document.head.appendChild(s);})();</script>
2084</body>
2085</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.